|  | @@ -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,
 | 
	
		
			
				|  |  |        ];
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      /**
 |