|
|
@@ -54,20 +54,22 @@
|
|
|
:analysis-list="data.analysis_list"
|
|
|
@closeAnswerAnalysis="closeAnswerAnalysis"
|
|
|
>
|
|
|
- <ul slot="right-answer" class="option-list">
|
|
|
- <draggable v-model="right_answer_list" animation="300" :disabled="true">
|
|
|
- <transition-group
|
|
|
- class="group"
|
|
|
- :style="{
|
|
|
- flexDirection: data.property.arrange_direction === arrangeTypeList[0].value ? 'row' : 'column',
|
|
|
- }"
|
|
|
- >
|
|
|
- <li v-for="(item, i) in right_answer_list" :key="i" :class="['drag-item']">
|
|
|
- <span class="rich-text" v-html="convertText(sanitizeHTML(item.content))"></span>
|
|
|
- </li>
|
|
|
- </transition-group>
|
|
|
- </draggable>
|
|
|
- </ul>
|
|
|
+ <div slot="right-answer" class="right-answer">
|
|
|
+ <ul v-for="(li, i) in rightAnswerList" :key="i" class="option-list">
|
|
|
+ <draggable :value="li" :disabled="true">
|
|
|
+ <transition-group
|
|
|
+ class="group"
|
|
|
+ :style="{
|
|
|
+ flexDirection: data.property.arrange_direction === arrangeTypeList[0].value ? 'row' : 'column',
|
|
|
+ }"
|
|
|
+ >
|
|
|
+ <li v-for="(item, j) in li" :key="j" :class="['drag-item']">
|
|
|
+ <span class="rich-text" v-html="convertText(sanitizeHTML(item.content))"></span>
|
|
|
+ </li>
|
|
|
+ </transition-group>
|
|
|
+ </draggable>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
</AnswerAnalysis>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -88,13 +90,27 @@ export default {
|
|
|
data: getSortData(),
|
|
|
arrangeTypeList,
|
|
|
move_list: [], // 移动后的数组
|
|
|
- right_answer_list: [], // 正确答案列表
|
|
|
drag: false,
|
|
|
clickIndexList: [], // 点击选中的索引
|
|
|
is_all_right: false, // 是否全对
|
|
|
orderTypeList,
|
|
|
};
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ rightAnswerList() {
|
|
|
+ const optionList = this.data.option_list;
|
|
|
+ if (!optionList.length) return [];
|
|
|
+ const rightNumber = optionList[0].custom_serial_number.split('/').length;
|
|
|
+ return Array.from({ length: rightNumber }, (_, i) => {
|
|
|
+ return optionList
|
|
|
+ .map((item) => ({
|
|
|
+ ...item,
|
|
|
+ custom_serial_number: item.custom_serial_number.split('/')[i],
|
|
|
+ }))
|
|
|
+ .sort((a, b) => Number(a.custom_serial_number) - Number(b.custom_serial_number));
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
watch: {
|
|
|
move_list: {
|
|
|
handler(val) {
|
|
|
@@ -110,24 +126,6 @@ export default {
|
|
|
this.move_list = this.answer.answer_list.map((mark) =>
|
|
|
this.data.option_list.find((item) => item.mark === mark),
|
|
|
);
|
|
|
- const rightAnswerNum = this.move_list[0].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.split('/')[correctSerial]) -
|
|
|
- Number(b.custom_serial_number.split('/')[correctSerial]),
|
|
|
- );
|
|
|
},
|
|
|
immediate: true,
|
|
|
},
|
|
|
@@ -252,5 +250,17 @@ export default {
|
|
|
line-height: 24px;
|
|
|
color: #000;
|
|
|
}
|
|
|
+
|
|
|
+ .right-answer {
|
|
|
+ .option-list {
|
|
|
+ margin-bottom: 16px;
|
|
|
+
|
|
|
+ .group {
|
|
|
+ .drag-item {
|
|
|
+ cursor: default;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|