|
@@ -54,7 +54,7 @@
|
|
|
<script>
|
|
|
import draggable from 'vuedraggable';
|
|
|
|
|
|
-import { getSortData, arrangeTypeList } from '@/views/book/courseware/data/sort';
|
|
|
+import { getSortData, arrangeTypeList, orderTypeList } from '@/views/book/courseware/data/sort';
|
|
|
|
|
|
import PreviewMixin from '../common/PreviewMixin';
|
|
|
|
|
@@ -71,6 +71,7 @@ export default {
|
|
|
drag: false,
|
|
|
clickIndexList: [], // 点击选中的索引
|
|
|
is_all_right: false, // 是否全对
|
|
|
+ orderTypeList,
|
|
|
};
|
|
|
},
|
|
|
watch: {
|
|
@@ -87,12 +88,23 @@ export default {
|
|
|
this.move_list = this.answer.answer_list.map((mark) =>
|
|
|
this.data.option_list.find((item) => item.mark === mark),
|
|
|
);
|
|
|
- this.is_all_right = this.move_list.every(
|
|
|
- ({ custom_serial_number }, index) => index + 1 === Number(custom_serial_number),
|
|
|
- );
|
|
|
+ const rightAnswerNum = this.move_list.custom_serial_number.split('/').length; // 正确答案组数
|
|
|
+ let correctSerial = 0; // 目前是第几组是正确答案
|
|
|
+ for (let i = 0; i < rightAnswerNum; i++) {
|
|
|
+ let isRight = this.move_list.every(
|
|
|
+ ({ custom_serial_number }, index) => index + 1 === Number(custom_serial_number.split('/')[i]),
|
|
|
+ );
|
|
|
+ if (isRight) {
|
|
|
+ this.is_all_right = isRight;
|
|
|
+ correctSerial = i;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
this.right_answer_list = this.data.option_list.toSorted(
|
|
|
- (a, b) => Number(a.custom_serial_number) - Number(b.custom_serial_number),
|
|
|
+ (a, b) =>
|
|
|
+ Number(a.custom_serial_number.split('/')[correctSerial]) -
|
|
|
+ Number(b.custom_serial_number.split('/')[correctSerial]),
|
|
|
);
|
|
|
},
|
|
|
immediate: true,
|
|
@@ -100,7 +112,11 @@ export default {
|
|
|
'data.option_list': {
|
|
|
handler(val) {
|
|
|
if (!val) return;
|
|
|
- this.move_list = JSON.parse(JSON.stringify(val));
|
|
|
+ if (this.data.property.order_type === orderTypeList[0].value) {
|
|
|
+ this.move_list = JSON.parse(JSON.stringify(val));
|
|
|
+ } else {
|
|
|
+ this.move_list = JSON.parse(JSON.stringify(val)).sort(() => Math.random() - 0.5);
|
|
|
+ }
|
|
|
},
|
|
|
deep: true,
|
|
|
immediate: true,
|
|
@@ -120,15 +136,17 @@ export default {
|
|
|
* @param {number} index 索引
|
|
|
*/
|
|
|
computedDragItemClass(index) {
|
|
|
+ let judgeClass = '';
|
|
|
+ if (this.isJudgingRightWrong) {
|
|
|
+ let serialList = this.move_list[index].custom_serial_number.split('/');
|
|
|
+ let isRight = serialList.some((serial) => Number(serial) === index + 1);
|
|
|
+ judgeClass = isRight ? 'right' : 'error';
|
|
|
+ }
|
|
|
return [
|
|
|
{
|
|
|
selected: this.clickIndexList.includes(index),
|
|
|
},
|
|
|
- this.isJudgingRightWrong
|
|
|
- ? Number(this.move_list[index].custom_serial_number) === index + 1
|
|
|
- ? 'right'
|
|
|
- : 'error'
|
|
|
- : '',
|
|
|
+ judgeClass,
|
|
|
];
|
|
|
},
|
|
|
/**
|