Browse Source

将 select_list 改为 answer_list

dusenyao 1 year ago
parent
commit
ede450150b

+ 41 - 43
package-lock.json

@@ -2406,49 +2406,6 @@
         "webpack-merge": "^5.7.3",
         "webpack-virtual-modules": "^0.4.2",
         "whatwg-fetch": "^3.6.2"
-      },
-      "dependencies": {
-        "@vue/vue-loader-v15": {
-          "version": "npm:vue-loader@15.11.1",
-          "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz",
-          "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==",
-          "dev": true,
-          "requires": {
-            "@vue/component-compiler-utils": "^3.1.0",
-            "hash-sum": "^1.0.2",
-            "loader-utils": "^1.1.0",
-            "vue-hot-reload-api": "^2.3.0",
-            "vue-style-loader": "^4.1.0"
-          },
-          "dependencies": {
-            "hash-sum": {
-              "version": "1.0.2",
-              "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
-              "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
-              "dev": true
-            }
-          }
-        },
-        "json5": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz",
-          "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
-        "loader-utils": {
-          "version": "1.4.2",
-          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz",
-          "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
-          "dev": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^1.0.1"
-          }
-        }
       }
     },
     "@vue/cli-shared-utils": {
@@ -2636,6 +2593,47 @@
       "integrity": "sha512-RoorRB50WehYbsiWu497q8egZBYlrvOo9KBUG41uth4O023Cbs+7POLm9uw2CAiViBAIhvpw1Y4w4i+MZxOfXw==",
       "dev": true
     },
+    "@vue/vue-loader-v15": {
+      "version": "npm:vue-loader@15.11.1",
+      "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz",
+      "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==",
+      "dev": true,
+      "requires": {
+        "@vue/component-compiler-utils": "^3.1.0",
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.1.0",
+        "vue-hot-reload-api": "^2.3.0",
+        "vue-style-loader": "^4.1.0"
+      },
+      "dependencies": {
+        "hash-sum": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+          "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+          "dev": true
+        },
+        "json5": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz",
+          "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.2",
+          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz",
+          "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        }
+      }
+    },
     "@vue/web-component-wrapper": {
       "version": "1.3.0",
       "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz",

+ 2 - 2
src/views/exercise_questions/create/components/common/SoundRecord.vue

@@ -22,7 +22,7 @@
       @click="microphone"
     />
     <SvgIcon v-else icon-class="mic-line" class="record" @click="microphone" />
-    <SvgIcon icon-class="delete-back-line" :class="['delete-btn', wavBlob ? '' : 'not-url']" @click="delectWav" />
+    <SvgIcon icon-class="delete-back-line" :class="['delete-btn', wavBlob ? '' : 'not-url']" @click="deleteWav" />
 
     <audio ref="audio" :src="wavBlob" preload="metadata"></audio>
   </div>
@@ -148,7 +148,7 @@ export default {
       }
     },
     // 删除录音
-    delectWav() {
+    deleteWav() {
       this.$refs.audio.pause();
       this.hasMicro = '';
       this.microphoneStatus = false;

+ 2 - 14
src/views/exercise_questions/create/components/exercises/ChooseToneQuestion.vue

@@ -207,18 +207,7 @@ export default {
         let items_trim = items.trim();
         if (items_trim) {
           let items_yuan = JSON.parse(JSON.stringify(items_trim)).replace(/0|1|2|3|4/, '');
-          let indexs = -1;
-          if (items.indexOf('0') > -1) {
-            indexs = items.indexOf('0');
-          } else if (items.indexOf('1') > -1) {
-            indexs = items.indexOf('1');
-          } else if (items.indexOf('2') > -1) {
-            indexs = items.indexOf('2');
-          } else if (items.indexOf('3') > -1) {
-            indexs = items.indexOf('3');
-          } else if (items.indexOf('4') > -1) {
-            indexs = items.indexOf('4');
-          }
+          let indexs = items.search(/0|1|2|3|4/);
           if (this.data.property.answer_mode === 'select') {
             // 如果是选择声调 把声调放在拼音后面
             // select_item += `${items_yuan + items_trim.substring(indexs, indexs + 1)} `;
@@ -279,7 +268,7 @@ export default {
       align-items: center;
       width: 233px;
       padding: 5px 12px;
-      background: #f2f3f5;
+      background-color: $fill-color;
       border-radius: 2px;
 
       .audio-wrapper {
@@ -319,4 +308,3 @@ export default {
   }
 }
 </style>
-@/views/exercise_questions/data/chooseTone

+ 5 - 5
src/views/exercise_questions/create/components/exercises/JudgeQuestion.vue

@@ -37,7 +37,7 @@
                 :class="[
                   'option-type-item',
                   {
-                    active: data.answer.select_list.find(
+                    active: data.answer.answer_list.find(
                       (li) => li.mark === item.mark && li.option_type === option_type,
                     ),
                   },
@@ -182,7 +182,7 @@ export default {
       if (arr.length > 0) {
         this.data.stem = arr[0];
         this.data.option_list = arr.slice(1).map((content) => getOption(content));
-        this.data.answer.select_list = [];
+        this.data.answer.answer_list = [];
       }
     },
     /**
@@ -191,11 +191,11 @@ export default {
      * @param {String} mark 选项标记
      */
     selectOptionAnswer(option_type, mark) {
-      const index = this.data.answer.select_list.findIndex((item) => item.mark === mark);
+      const index = this.data.answer.answer_list.findIndex((item) => item.mark === mark);
       if (index === -1) {
-        this.data.answer.select_list.push({ option_type, mark });
+        this.data.answer.answer_list.push({ option_type, mark });
       } else {
-        this.data.answer.select_list[index].option_type = option_type;
+        this.data.answer.answer_list[index].option_type = option_type;
       }
     },
   },

+ 7 - 7
src/views/exercise_questions/create/components/exercises/SelectQuestion.vue

@@ -165,8 +165,8 @@ export default {
       }
     },
     changeSelectType(val) {
-      if (val === selectTypeList[0].value && this.data.answer.select_list.length > 1) {
-        this.data.answer.select_list = [this.data.answer.select_list[0]];
+      if (val === selectTypeList[0].value && this.data.answer.answer_list.length > 1) {
+        this.data.answer.answer_list = [this.data.answer.answer_list[0]];
       }
       // 当多选题切换到单选题时,分值类型切换为总分
       if (val === selectTypeList[0].value && this.data.property.score_type === scoreTypeList[1].value) {
@@ -174,18 +174,18 @@ export default {
       }
     },
     isAnswer(mark) {
-      return this.data.answer.select_list.indexOf(mark) !== -1;
+      return this.data.answer.answer_list.indexOf(mark) !== -1;
     },
     selectAnswer(mark) {
-      let index = this.data.answer.select_list.indexOf(mark);
+      let index = this.data.answer.answer_list.indexOf(mark);
       if (this.data.property.select_type === selectTypeList[0].value) {
-        this.data.answer.select_list = [mark];
+        this.data.answer.answer_list = [mark];
       }
       if (this.data.property.select_type === selectTypeList[1].value) {
         if (index === -1) {
-          this.data.answer.select_list.push(mark);
+          this.data.answer.answer_list.push(mark);
         } else {
-          this.data.answer.select_list.splice(index, 1);
+          this.data.answer.answer_list.splice(index, 1);
         }
       }
     },

+ 1 - 1
src/views/exercise_questions/data/chinese.js

@@ -14,7 +14,7 @@ export const chineseData = {
   option_number_show_mode: optionTypeList[0].value, // 选项类型
   description: '', // 描述
   content: '', // 题目
-  answer: { select_list: [], score: 0, score_type: scoreTypeList[0].value }, // 答案
+  answer: { answer_list: [], score: 0, score_type: scoreTypeList[0].value }, // 答案
   // 题型属性
   property: {
     stem_type: stemTypeList[0].value, // 题干类型

+ 1 - 1
src/views/exercise_questions/data/judge.js

@@ -21,7 +21,7 @@ export const judgeData = {
   option_number_show_mode: optionTypeList[0].value, // 选项类型
   option_list: [getOption(), getOption(), getOption()], // 选项
   file_id_list: [], // 文件 id 列表
-  answer: { select_list: [], score: 0, score_type: scoreTypeList[0].value }, // 答案
+  answer: { answer_list: [], score: 0, score_type: scoreTypeList[0].value }, // 答案
   // 题型属性
   property: {
     stem_type: stemTypeList[0].value, // 题干类型

+ 3 - 2
src/views/exercise_questions/data/read.js

@@ -1,5 +1,6 @@
 import { optionTypeList, stemTypeList, scoreTypeList, questionNumberTypeList } from './common';
-// 数据模板
+
+// 阅读题数据模板
 export const readData = {
   type: 'read', // 题型
   stem: '', // 题干
@@ -7,7 +8,7 @@ export const readData = {
   description: '', // 描述
   article: '', // 文章
   sample_text: '', // 范文
-  answer: { select_list: [], score: 0, score_type: scoreTypeList[0].value }, // 答案
+  answer: { answer_list: [], score: 0, score_type: scoreTypeList[0].value }, // 答案
   question_list: [], // 题目列表
   // 题型属性
   property: {

+ 5 - 2
src/views/exercise_questions/data/readAloud.js

@@ -5,12 +5,15 @@ export const readAloudData = {
   type: 'read_aloud', // 题型
   stem: '', // 题干
   reference_answer: '', // 参考答案
-  answer: { score: 0, score_type: scoreTypeList[0].value, reference_answer: '' }, // 答案
+  answer: {
+    score: 0,
+    score_type: scoreTypeList[0].value,
+  }, // 答案
   // 题型属性
   property: {
     stem_type: stemTypeList[0].value, // 题干类型
     question_number: 1, // 题号
-    is_enable_reference_answer: true, // 参考答案
+    is_enable_reference_answer: true, // 是否开启参考答案
     score: 1, // 分值
     score_type: scoreTypeList[0].value, // 分值类型
   },

+ 1 - 1
src/views/exercise_questions/data/repeat.js

@@ -17,7 +17,7 @@ export const repeatData = {
     { content: '', mark: getRandomNumber(), file_id_list: [] },
   ], // 选项
 
-  answer: { select_list: [], score: 0, score_type: scoreTypeList[0].value }, // 答案
+  answer: { answer_list: [], score: 0, score_type: scoreTypeList[0].value }, // 答案
   // 题型属性
   property: {
     stem_type: stemTypeList[0].value, // 题干类型

+ 1 - 1
src/views/exercise_questions/data/select.js

@@ -17,7 +17,7 @@ export const selectData = {
     { content: '', mark: getRandomNumber() },
   ], // 选项
   file_id_list: [], // 文件 id 列表
-  answer: { select_list: [], score: 0, score_type: scoreTypeList[0].value }, // 答案
+  answer: { answer_list: [], score: 0, score_type: scoreTypeList[0].value }, // 答案
   // 题型属性
   property: {
     stem_type: stemTypeList[0].value, // 题干类型

+ 1 - 2
src/views/exercise_questions/preview/ChooseTonePreview.vue

@@ -262,8 +262,7 @@ export default {
 
   .option-list {
     display: flex;
-    flex-direction: column;
-    flex-flow: wrap;
+    flex-flow: column wrap;
     row-gap: 16px;
 
     .option-item {

+ 1 - 1
src/views/exercise_questions/preview/FillPreview.vue

@@ -35,7 +35,7 @@ export default {
   watch: {
     'data.model_essay': {
       handler(val) {
-        this.answer.select_list = val
+        this.answer.answer_list = val
           .map((item) => {
             return item
               .map(({ type, content, mark }) => {

+ 4 - 4
src/views/exercise_questions/preview/JudgePreview.vue

@@ -54,15 +54,15 @@ export default {
   },
   methods: {
     isAnswer(mark, option_type) {
-      return this.answer.select_list.some((li) => li.mark === mark && li.option_type === option_type);
+      return this.answer.answer_list.some((li) => li.mark === mark && li.option_type === option_type);
     },
 
     selectAnswer(mark, option_type) {
-      const index = this.answer.select_list.findIndex((li) => li.mark === mark);
+      const index = this.answer.answer_list.findIndex((li) => li.mark === mark);
       if (index === -1) {
-        this.answer.select_list.push({ mark, option_type });
+        this.answer.answer_list.push({ mark, option_type });
       } else {
-        this.answer.select_list[index].option_type = option_type;
+        this.answer.answer_list[index].option_type = option_type;
       }
     },
   },

+ 2 - 2
src/views/exercise_questions/preview/MatchingPreview.vue

@@ -102,7 +102,7 @@ export default {
           item.every((li) => li.length <= 0) ? emptyStringArray.push(i) : '';
         });
         if (column_number === 2) {
-          this.answer.select_list = arr;
+          this.answer.answer_list = arr;
           return;
         }
 
@@ -133,7 +133,7 @@ export default {
             arr[emptyStringArray[i]] = item;
           });
         }
-        this.answer.select_list = arr;
+        this.answer.answer_list = arr;
       },
       deep: true,
     },

+ 7 - 1
src/views/exercise_questions/preview/ReadAloudPreview.vue

@@ -5,7 +5,7 @@
       <span class="question-number">{{ data.property.question_number }}.</span>
       <span v-html="sanitizeHTML(data.stem)"></span>
     </div>
-    <div>{{ data.reference_answer }}</div>
+    <div v-if="data.property.is_enable_reference_answer" class="reference-answer">{{ data.reference_answer }}</div>
   </div>
 </template>
 
@@ -27,5 +27,11 @@ export default {
 
 .readaloud-preview {
   @include preview;
+
+  .reference-answer {
+    padding: 12px 24px;
+    background-color: #f9f8f9;
+    border-radius: 8px;
+  }
 }
 </style>

+ 5 - 5
src/views/exercise_questions/preview/SelectPreview.vue

@@ -40,18 +40,18 @@ export default {
   },
   methods: {
     isAnswer(mark) {
-      return this.answer.select_list.indexOf(mark) !== -1;
+      return this.answer.answer_list.indexOf(mark) !== -1;
     },
     selectAnswer(mark) {
-      const index = this.answer.select_list.indexOf(mark);
+      const index = this.answer.answer_list.indexOf(mark);
       if (this.data.property.select_type === selectTypeList[0].value) {
-        this.answer.select_list = [mark];
+        this.answer.answer_list = [mark];
       }
       if (this.data.property.select_type === selectTypeList[1].value) {
         if (index === -1) {
-          this.answer.select_list.push(mark);
+          this.answer.answer_list.push(mark);
         } else {
-          this.answer.select_list.splice(index, 1);
+          this.answer.answer_list.splice(index, 1);
         }
       }
     },

+ 1 - 1
src/views/exercise_questions/preview/components/PreviewMixin.js

@@ -14,7 +14,7 @@ const PreviewMixin = {
   },
   data() {
     return {
-      answer: { select_list: [] }, // 答案
+      answer: { answer_list: [] }, // 答案
     };
   },
   methods: {