Browse Source

修改排序题预览问题

dusenyao 1 year ago
parent
commit
2812383594
1 changed files with 14 additions and 12 deletions
  1. 14 12
      src/views/exercise_questions/preview/SortPreview.vue

+ 14 - 12
src/views/exercise_questions/preview/SortPreview.vue

@@ -62,6 +62,7 @@ export default {
       move_list: [], // 移动后的数组
       drag: false,
       click_index_list: [], // 点击选中的索引
+      disrupted: false, // 是否打乱
     };
   },
   watch: {
@@ -74,6 +75,18 @@ export default {
       },
       deep: true,
     },
+    'data.option_list': {
+      handler(val) {
+        if (!val) return;
+        this.move_list = this.shuffle(val.slice()).map((item, i) => ({
+          ...item,
+          correct: item.mark === this.data.option_list[i].mark,
+        }));
+        this.disrupted = true;
+      },
+      deep: true,
+      immediate: true,
+    },
     click_index_list: {
       handler(val) {
         if (val.length === 2) {
@@ -82,21 +95,10 @@ export default {
       },
     },
   },
-  created() {
-    this.handleData();
-  },
-  mounted() {},
   methods: {
-    // 初始化数据
-    handleData() {
-      let sort_list = this.shuffle(JSON.parse(JSON.stringify(this.data.option_list)));
-      sort_list.forEach((item, index) => {
-        item.correct = item.mark === this.data.option_list[index].mark;
-      });
-      this.move_list = sort_list;
-    },
     // 随机打乱数组顺序
     shuffle(arr) {
+      if (this.disrupted) return arr;
       for (let i = arr.length - 1; i > 0; i--) {
         const j = Math.floor(Math.random() * (i + 1));
         [arr[i], arr[j]] = [arr[j], arr[i]];