zhuf 2 år sedan
förälder
incheckning
1ee892b9e9
5 ändrade filer med 18 tillägg och 327 borttagningar
  1. 0 3
      package.json
  2. 5 117
      pnpm-lock.yaml
  3. 0 195
      src/pages/teacher/indey/edit.vue
  4. 6 6
      src/router/routes/teacher.ts
  5. 7 6
      vite.config.ts

+ 0 - 3
package.json

@@ -17,12 +17,9 @@
     "prepare": "husky install"
   },
   "dependencies": {
-    "@element-plus/icons-vue": "^2.1.0",
     "@vueuse/components": "^9.13.0",
     "@vueuse/core": "^9.13.0",
-    "agora-rtc-sdk-ng": "^4.17.2",
     "axios": "^1.3.6",
-    "element-plus": "^2.3.4",
     "tinymce": "^6.4.2",
     "vant": "^4.5.0",
     "vue": "^3.2.47",

+ 5 - 117
pnpm-lock.yaml

@@ -1,24 +1,19 @@
 lockfileVersion: '6.0'
 
+settings:
+  autoInstallPeers: true
+  excludeLinksFromLockfile: false
+
 dependencies:
-  '@element-plus/icons-vue':
-    specifier: ^2.1.0
-    version: 2.1.0(vue@3.2.47)
   '@vueuse/components':
     specifier: ^9.13.0
     version: 9.13.0(vue@3.2.47)
   '@vueuse/core':
     specifier: ^9.13.0
     version: 9.13.0(vue@3.2.47)
-  agora-rtc-sdk-ng:
-    specifier: ^4.17.2
-    version: 4.17.2
   axios:
     specifier: ^1.3.6
     version: 1.3.6
-  element-plus:
-    specifier: ^2.3.4
-    version: 2.3.4(vue@3.2.47)
   tinymce:
     specifier: ^6.4.2
     version: 6.4.2
@@ -226,19 +221,6 @@ packages:
       '@babel/helper-validator-identifier': 7.19.1
       to-fast-properties: 2.0.0
 
-  /@ctrl/tinycolor@3.6.0:
-    resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==}
-    engines: {node: '>=10'}
-    dev: false
-
-  /@element-plus/icons-vue@2.1.0(vue@3.2.47):
-    resolution: {integrity: sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==}
-    peerDependencies:
-      vue: ^3.2.0
-    dependencies:
-      vue: 3.2.47
-    dev: false
-
   /@esbuild/android-arm64@0.17.18:
     resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==}
     engines: {node: '>=12'}
@@ -474,16 +456,6 @@ packages:
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     dev: true
 
-  /@floating-ui/core@1.2.6:
-    resolution: {integrity: sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==}
-    dev: false
-
-  /@floating-ui/dom@1.2.7:
-    resolution: {integrity: sha512-DyqylONj1ZaBnzj+uBnVfzdjjCkFCL2aA9ESHLyUOGSqb03RpbLMImP1ekIQXYs4KLk9jAjJfZAU8hXfWSahEg==}
-    dependencies:
-      '@floating-ui/core': 1.2.6
-    dev: false
-
   /@humanwhocodes/config-array@0.11.8:
     resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
     engines: {node: '>=10.10.0'}
@@ -575,10 +547,6 @@ packages:
       picomatch: 2.3.1
     dev: true
 
-  /@sxzz/popperjs-es@2.11.7:
-    resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
-    dev: false
-
   /@types/estree@1.0.1:
     resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
     dev: true
@@ -591,16 +559,6 @@ packages:
     resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
     dev: true
 
-  /@types/lodash-es@4.17.7:
-    resolution: {integrity: sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==}
-    dependencies:
-      '@types/lodash': 4.14.194
-    dev: false
-
-  /@types/lodash@4.14.194:
-    resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==}
-    dev: false
-
   /@types/mdast@3.0.11:
     resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==}
     dependencies:
@@ -976,16 +934,6 @@ packages:
     hasBin: true
     dev: true
 
-  /agora-rtc-sdk-ng@4.17.2:
-    resolution: {integrity: sha512-ErIHOYgf3R/ya3gVCCBKRw3RMdATmoM/8aUGOob4g0VHBBkVDEf9JT0RW2jQgtwm61jszWof+wo2duQDBgTfpw==}
-    dependencies:
-      agora-rte-extension: 1.2.3
-    dev: false
-
-  /agora-rte-extension@1.2.3:
-    resolution: {integrity: sha512-k3yNrYVyzJRoQJjaJUktKUI1XRtf8J1XsW8OzYKFqGlS8WQRMsES1+Phj2rfuEriiLObfuyuCimG6KHQCt5tiw==}
-    dev: false
-
   /ajv@6.12.6:
     resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
     dependencies:
@@ -1069,10 +1017,6 @@ packages:
       es-shim-unscopables: 1.0.0
     dev: true
 
-  /async-validator@4.2.5:
-    resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
-    dev: false
-
   /asynckit@0.4.0:
     resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
     dev: false
@@ -1254,10 +1198,6 @@ packages:
   /csstype@2.6.21:
     resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==}
 
-  /dayjs@1.11.7:
-    resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==}
-    dev: false
-
   /de-indent@1.0.2:
     resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
     dev: true
@@ -1350,31 +1290,6 @@ packages:
       domhandler: 5.0.3
     dev: true
 
-  /element-plus@2.3.4(vue@3.2.47):
-    resolution: {integrity: sha512-SQr0J9z7N4z48WYk/l9NE2tizl8Q7j2OhqlpTc42k4pGncry3+rVX6dsmcsglFynn6vt3NzYxWJqmLFyDKQq+g==}
-    peerDependencies:
-      vue: ^3.2.0
-    dependencies:
-      '@ctrl/tinycolor': 3.6.0
-      '@element-plus/icons-vue': 2.1.0(vue@3.2.47)
-      '@floating-ui/dom': 1.2.7
-      '@popperjs/core': /@sxzz/popperjs-es@2.11.7
-      '@types/lodash': 4.14.194
-      '@types/lodash-es': 4.17.7
-      '@vueuse/core': 9.13.0(vue@3.2.47)
-      async-validator: 4.2.5
-      dayjs: 1.11.7
-      escape-html: 1.0.3
-      lodash: 4.17.21
-      lodash-es: 4.17.21
-      lodash-unified: 1.0.3(@types/lodash-es@4.17.7)(lodash-es@4.17.21)(lodash@4.17.21)
-      memoize-one: 6.0.0
-      normalize-wheel-es: 1.2.0
-      vue: 3.2.47
-    transitivePeerDependencies:
-      - '@vue/composition-api'
-    dev: false
-
   /entities@4.5.0:
     resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
     engines: {node: '>=0.12'}
@@ -1480,10 +1395,6 @@ packages:
       '@esbuild/win32-x64': 0.17.18
     dev: true
 
-  /escape-html@1.0.3:
-    resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
-    dev: false
-
   /escape-string-regexp@1.0.5:
     resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
     engines: {node: '>=0.8.0'}
@@ -2449,28 +2360,13 @@ packages:
       p-locate: 5.0.0
     dev: true
 
-  /lodash-es@4.17.21:
-    resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
-    dev: false
-
-  /lodash-unified@1.0.3(@types/lodash-es@4.17.7)(lodash-es@4.17.21)(lodash@4.17.21):
-    resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
-    peerDependencies:
-      '@types/lodash-es': '*'
-      lodash: '*'
-      lodash-es: '*'
-    dependencies:
-      '@types/lodash-es': 4.17.7
-      lodash: 4.17.21
-      lodash-es: 4.17.21
-    dev: false
-
   /lodash.merge@4.6.2:
     resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
     dev: true
 
   /lodash@4.17.21:
     resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+    dev: true
 
   /lru-cache@6.0.0:
     resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
@@ -2514,10 +2410,6 @@ packages:
     resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==}
     dev: true
 
-  /memoize-one@6.0.0:
-    resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
-    dev: false
-
   /merge-stream@2.0.0:
     resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
     dev: true
@@ -2647,10 +2539,6 @@ packages:
     engines: {node: '>=0.10.0'}
     dev: true
 
-  /normalize-wheel-es@1.2.0:
-    resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
-    dev: false
-
   /npm-run-path@4.0.1:
     resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
     engines: {node: '>=8'}

+ 0 - 195
src/pages/teacher/indey/edit.vue

@@ -1,195 +0,0 @@
-<script setup lang='ts'>
-import { useRouter, RouteLocationRaw } from 'vue-router'
-import type { FormInstance, FormRules } from 'element-plus'
-import { ref, reactive } from 'vue'
-import { Plus } from '@element-plus/icons-vue'
-import { Grade, Subject } from '~/store/info'
-import user from '~/store/user'
-const token = user.token
-
-const props = defineProps<{
-  id: string
-}>()
-
-import type { UploadProps, UploadUserFile } from 'element-plus'
-
-const router = useRouter()
-function routerPush(_route: RouteLocationRaw) {
-  router.push(_route)
-}
-
-const UploadAction = window.GLOBAL_CONFIG.oss + '/upload/main/file'
-function handleUploadSuccess(res: any, file: UploadUserFile, fileList: UploadUserFile[]) {
-  file.p_url = '/' + res.data.url
-}
-
-const ruleFormRef = ref<FormInstance>()
-const ruleForm = reactive({
-  dc_title: '',
-  dc_grade_id: '',
-  dc_subject_id: '',
-  dc_keyword: '',
-  dc_content: '',
-  dc_files: [],
-})
-
-await request({
-  url: '/dyaw/ctfx/detail',
-  data: {
-    dc_id: props.id
-  }
-}).then(
-  res => {
-    if (res.code === "1") {
-      const detail = res.data.one_info
-      Object.keys(ruleForm).forEach(key => {
-        if(key === 'dc_files'){
-          ruleForm[key] = detail[key].split(';').map((p_url: string) => {
-            return {
-              name: p_url,
-              url: window.GLOBAL_CONFIG.oss + p_url,
-              p_url: p_url,
-            }
-          })
-          return
-        }
-        ruleForm[key] = detail[key]
-      })
-    }
-  }
-)
-
-const rules = reactive<FormRules>({
-  dc_title: [{ required: true, message: '标题不能为空', trigger: 'blur', }],
-  dc_grade_id: [{ required: true, message: '年级不能为空', trigger: 'blur', }],
-  dc_subject_id: [{ required: true, message: '科目不能为空', trigger: 'blur', }],
-  dc_keyword: [{ required: true, message: '关键字不能为空', trigger: 'blur', }],
-})
-
-const submit_loading = ref(false)
-const submitForm = async (formEl: FormInstance | undefined) => {
-  console.log('ruleForm : ', ruleForm)
-  if (!formEl) return
-  await formEl.validate((valid, fields) => {
-    if (valid) {
-      submit_loading.value = true
-      console.log('submit!')
-      const dyaw_ctfx = Object.assign({}, ruleForm, {
-        dc_grade_name: Grade.find((item) => item.grade_id === ruleForm.dc_grade_id)?.grade_name,
-        dc_subject_name: Subject.find((item) => item.subject_id === ruleForm.dc_subject_id)?.subject_name,
-        dc_files: ruleForm.dc_files.map((item) => item.p_url).join(';'),
-        create_user_realname: user.user_realname,
-      })
-
-      request({
-        url: '/dyaw/ctfx/edit',
-        data: {
-          dc_id: props.id,
-          dyaw_ctfx,
-        },
-      }).then(
-        res => {
-          if (res.code === '1') {
-            ElMessage.success('编辑成功')
-            router.back()
-          } else {
-            ElMessage.error(res.msg)
-          }
-        }
-      ).catch(
-        err => {
-          ElMessage.error(err)
-        }
-      ).finally(
-        () => {
-          submit_loading.value = false
-        }
-      )
-    } else {
-      console.log('error submit!')
-    }
-  })
-}
-
-const resetForm = (formEl: FormInstance | undefined) => {
-  if (!formEl) return
-  formEl.resetFields()
-}
-
-const options = Array.from({ length: 10 }).map((_, idx) => ({
-  value: `${idx + 1}`,
-  label: `${idx + 1}`,
-}))
-
-const dialogImageUrl = ref('')
-const dialogVisible = ref(false)
-const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => {
-  dialogImageUrl.value = uploadFile.url!
-  dialogVisible.value = true
-}
-
-// TODO: 临时处理
-function translateString(str: string) {
-  return str.split('\n').map((item) => `<p>${item}</p>`).join('')
-}
-</script>
-
-<template>
-  <div class="w-full h-full flex flex-col">
-    <div class="flex justify-between">
-      <div class="space-x-2 text-blue-700 flex items-center">
-        <i:cil:home />
-        <span>首页</span>
-        <span>/</span>
-        <span>错题分析</span>
-        <span>/</span>
-        <span>上传错题</span>
-        <span>/</span>
-        <span class="text-gray-600">新建</span>
-      </div>
-      <el-button type="primary" @click="router.back()">返回</el-button>
-    </div>
-
-
-    <el-form class="mt-8" ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="120px" size="large" status-icon>
-      <el-form-item label="标题" prop="dc_title">
-        <el-input v-model="ruleForm.dc_title" maxlength="20" show-word-limit />
-      </el-form-item>
-      <el-form-item label="年级" prop="dc_grade_id">
-        <el-select clearable v-model="ruleForm.dc_grade_id">
-          <el-option v-for="({ grade_id, grade_name }) in Grade" :key="grade_id" :label="grade_name" :value="grade_id" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="科目" prop="dc_subject_id">
-        <el-select clearable v-model="ruleForm.dc_subject_id">
-          <el-option v-for="({ subject_id, subject_name }) in Subject" :key="subject_id" :label="subject_name"
-            :value="subject_id" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="关键字" prop="dc_keyword">
-        <el-input v-model="ruleForm.dc_keyword" maxlength="10" show-word-limit />
-      </el-form-item>
-      <el-form-item label="内容" prop="dc_content">
-        <el-input v-model="ruleForm.dc_content" type="textarea" :autosize="{ minRows: 3, maxRows: 4 }" />
-      </el-form-item>
-      <el-form-item label="图片" prop="dc_files">
-        <el-upload v-model:file-list="ruleForm.dc_files" list-type="picture-card" :on-preview="handlePictureCardPreview"
-          :action="UploadAction" name="filedata" :data="{ token, site: 'dyaw', }" :on-success="handleUploadSuccess">
-          <el-icon>
-            <Plus />
-          </el-icon>
-        </el-upload>
-
-        <el-dialog v-model="dialogVisible">
-          <img w-full :src="dialogImageUrl" alt="Preview Image" />
-        </el-dialog>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="submitForm(ruleFormRef)" :loading="submit_loading">
-          完成
-        </el-button>
-        <el-button @click="resetForm(ruleFormRef)">重置</el-button>
-      </el-form-item>
-    </el-form>
-  </div>
-</template>

+ 6 - 6
src/router/routes/teacher.ts

@@ -30,12 +30,12 @@ export default {
           name: 'teacher_indey_create',
           component: () => import('~/pages/teacher/indey/create.vue')
         },
-        {
-          path: 'edit/:id',
-          name: 'teacher_indey_edit',
-          component: () => import('~/pages/teacher/indey/edit.vue'),
-          props: true
-        },
+        // {
+        //   path: 'edit/:id',
+        //   name: 'teacher_indey_edit',
+        //   component: () => import('~/pages/teacher/indey/edit.vue'),
+        //   props: true
+        // },
         {
           path: 'detail/:id',
           name: 'teacher_indey_detail',

+ 7 - 6
vite.config.ts

@@ -1,12 +1,12 @@
-import path from 'path'
-import { defineConfig } from 'vite'
 import vue from '@vitejs/plugin-vue'
-import WindiCss from 'vite-plugin-windicss'
+import path from 'path'
 import AutoImport from 'unplugin-auto-import/vite'
-import Components from 'unplugin-vue-components/vite'
-import { VantResolver } from 'unplugin-vue-components/resolvers'
-import Icons from 'unplugin-icons/vite'
 import IconsResolver from 'unplugin-icons/resolver'
+import Icons from 'unplugin-icons/vite'
+import { VantResolver } from 'unplugin-vue-components/resolvers'
+import Components from 'unplugin-vue-components/vite'
+import { defineConfig } from 'vite'
+import WindiCss from 'vite-plugin-windicss'
 import ConditionalCompile from './plugins/vite-plugin-conditional-compile'
 
 // https://vitejs.dev/config/
@@ -87,4 +87,5 @@ export default defineConfig({
     //   },
     // },
   },
+  base: '/page/wrong_analysis',
 })