|  | @@ -62,6 +62,7 @@
 | 
	
		
			
				|  |  |                              :key="index"
 | 
	
		
			
				|  |  |                              v-model="item.value"
 | 
	
		
			
				|  |  |                              :disabled="disabled"
 | 
	
		
			
				|  |  | +                            :class="[...computedAnswerClass(item, i, j)]"
 | 
	
		
			
				|  |  |                              :style="[{ width: Math.max(80, item.value.length * 21.3) + 'px' }]"
 | 
	
		
			
				|  |  |                            />
 | 
	
		
			
				|  |  |                          </template>
 | 
	
	
		
			
				|  | @@ -82,7 +83,7 @@
 | 
	
		
			
				|  |  |                                slot="reference"
 | 
	
		
			
				|  |  |                                v-model="item.value"
 | 
	
		
			
				|  |  |                                :readonly="true"
 | 
	
		
			
				|  |  | -                              :class="[data.property.fill_font, ...computedAnswerClass(item.mark)]"
 | 
	
		
			
				|  |  | +                              :class="[...computedAnswerClass(item, i, j)]"
 | 
	
		
			
				|  |  |                                :style="[{ width: Math.max(80, item.value.length * 21.3) + 'px' }]"
 | 
	
		
			
				|  |  |                              />
 | 
	
		
			
				|  |  |                            </el-popover>
 | 
	
	
		
			
				|  | @@ -135,6 +136,7 @@
 | 
	
		
			
				|  |  |                              :key="index"
 | 
	
		
			
				|  |  |                              v-model="item.value"
 | 
	
		
			
				|  |  |                              :disabled="disabled"
 | 
	
		
			
				|  |  | +                            :class="[...computedAnswerClass(item, i, j)]"
 | 
	
		
			
				|  |  |                              :style="[{ width: Math.max(80, item.value.length * 21.3) + 'px' }]"
 | 
	
		
			
				|  |  |                            />
 | 
	
		
			
				|  |  |                          </template>
 | 
	
	
		
			
				|  | @@ -155,7 +157,7 @@
 | 
	
		
			
				|  |  |                                slot="reference"
 | 
	
		
			
				|  |  |                                v-model="item.value"
 | 
	
		
			
				|  |  |                                :readonly="true"
 | 
	
		
			
				|  |  | -                              :class="[data.property.fill_font, ...computedAnswerClass(item.mark)]"
 | 
	
		
			
				|  |  | +                              :class="[...computedAnswerClass(item, i, j)]"
 | 
	
		
			
				|  |  |                                :style="[{ width: Math.max(80, item.value.length * 21.3) + 'px' }]"
 | 
	
		
			
				|  |  |                              />
 | 
	
		
			
				|  |  |                            </el-popover>
 | 
	
	
		
			
				|  | @@ -184,9 +186,13 @@
 | 
	
		
			
				|  |  |                              @handleWav="handleMiniWav($event, item)"
 | 
	
		
			
				|  |  |                            />
 | 
	
		
			
				|  |  |                          </template>
 | 
	
		
			
				|  |  | -                        <!-- <span v-show="computedAnswerText(li.mark).length > 0" :key="`answer-${indexs}`" class="right-answer">
 | 
	
		
			
				|  |  | -                {{ computedAnswerText(li.mark) }}
 | 
	
		
			
				|  |  | -              </span> -->
 | 
	
		
			
				|  |  | +                        <span
 | 
	
		
			
				|  |  | +                          v-show="computedAnswerText(item, i, j).length > 0"
 | 
	
		
			
				|  |  | +                          :key="`answer-${j}`"
 | 
	
		
			
				|  |  | +                          class="right-answer"
 | 
	
		
			
				|  |  | +                        >
 | 
	
		
			
				|  |  | +                          {{ computedAnswerText(item, i, j) }}
 | 
	
		
			
				|  |  | +                        </span>
 | 
	
		
			
				|  |  |                        </template>
 | 
	
		
			
				|  |  |                      </p>
 | 
	
		
			
				|  |  |                    </template>
 | 
	
	
		
			
				|  | @@ -257,6 +263,19 @@ export default {
 | 
	
		
			
				|  |  |          this.handleData();
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    isJudgingRightWrong(val) {
 | 
	
		
			
				|  |  | +      if (!val) return;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // this.answer.answer_list.forEach(({ mark, value }) => {
 | 
	
		
			
				|  |  | +      //   this.modelEssay.forEach((item) => {
 | 
	
		
			
				|  |  | +      //     item.forEach((li) => {
 | 
	
		
			
				|  |  | +      //       if (li.mark === mark) {
 | 
	
		
			
				|  |  | +      //         li.content = value;
 | 
	
		
			
				|  |  | +      //       }
 | 
	
		
			
				|  |  | +      //     });
 | 
	
		
			
				|  |  | +      //   });
 | 
	
		
			
				|  |  | +      // });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    created() {
 | 
	
		
			
				|  |  |      this.handleData();
 | 
	
	
		
			
				|  | @@ -286,35 +305,35 @@ export default {
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    computedAnswerText(mark) {
 | 
	
		
			
				|  |  | +    computedAnswerText(item, i, j) {
 | 
	
		
			
				|  |  |        if (!this.isShowRightAnswer) return '';
 | 
	
		
			
				|  |  | -      let selectOption = this.answer.answer_list.find((item) => item.mark === mark);
 | 
	
		
			
				|  |  | -      let answerOption = this.data.answer.answer_list.find((item) => item.mark === mark);
 | 
	
		
			
				|  |  | -      if (!selectOption) return '';
 | 
	
		
			
				|  |  | -      let selectValue = selectOption.value;
 | 
	
		
			
				|  |  | -      let answerValue = answerOption.value;
 | 
	
		
			
				|  |  | -      let isRight = selectValue === answerValue;
 | 
	
		
			
				|  |  | -      if (isRight) return '';
 | 
	
		
			
				|  |  | -      return `(${answerValue})`;
 | 
	
		
			
				|  |  | +      let answerOption =
 | 
	
		
			
				|  |  | +        this.data.answer_list[i] && this.data.answer_list[i][j] ? this.data.answer_list[i][j].answer : '';
 | 
	
		
			
				|  |  | +      let answerOptionList = answerOption.split('\n');
 | 
	
		
			
				|  |  | +      if (!item) return '';
 | 
	
		
			
				|  |  | +      let selectValue = item.value;
 | 
	
		
			
				|  |  | +      let answerValue = answerOptionList[item.inputIndex] ? answerOptionList[item.inputIndex].split('/') : '';
 | 
	
		
			
				|  |  | +      let isRight = answerValue && answerValue.includes(selectValue);
 | 
	
		
			
				|  |  | +      if (isRight || !answerValue) return '';
 | 
	
		
			
				|  |  | +      return `(${answerValue.join('/')})`;
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 计算答题对错选项字体颜色
 | 
	
		
			
				|  |  |       * @param {string} mark 选项标识
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    computedAnswerClass(mark) {
 | 
	
		
			
				|  |  | +    computedAnswerClass(item, i, j) {
 | 
	
		
			
				|  |  |        if (!this.isJudgingRightWrong && !this.isShowRightAnswer) {
 | 
	
		
			
				|  |  |          return '';
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -      let selectOption = this.answer.answer_list.find((item) => item.mark === mark);
 | 
	
		
			
				|  |  | -      let answerOption = this.data.answer.answer_list.find((item) => item.mark === mark);
 | 
	
		
			
				|  |  | -      if (!selectOption) return '';
 | 
	
		
			
				|  |  | -      let selectValue = selectOption.value;
 | 
	
		
			
				|  |  | -      let answerValue = answerOption.value;
 | 
	
		
			
				|  |  | -      let answerType = answerOption.type;
 | 
	
		
			
				|  |  | +      let answerOption =
 | 
	
		
			
				|  |  | +        this.data.answer_list[i] && this.data.answer_list[i][j] ? this.data.answer_list[i][j].answer : '';
 | 
	
		
			
				|  |  | +      let answerOptionList = answerOption.split('\n');
 | 
	
		
			
				|  |  | +      if (!item) return '';
 | 
	
		
			
				|  |  | +      let selectValue = item.value;
 | 
	
		
			
				|  |  | +      let answerValue = answerOptionList[item.inputIndex] ? answerOptionList[item.inputIndex].split('/') : '';
 | 
	
		
			
				|  |  |        let classList = [];
 | 
	
		
			
				|  |  | -      let isRight =
 | 
	
		
			
				|  |  | -        answerType === 'only_one' ? selectValue === answerValue : answerValue.split('/').includes(selectValue);
 | 
	
		
			
				|  |  | -      if (this.isJudgingRightWrong) {
 | 
	
		
			
				|  |  | +      let isRight = answerValue && answerValue.includes(selectValue);
 | 
	
		
			
				|  |  | +      if (this.isJudgingRightWrong && answerValue) {
 | 
	
		
			
				|  |  |          isRight ? classList.push('right') : classList.push('wrong');
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -339,7 +358,7 @@ export default {
 | 
	
		
			
				|  |  |       * @param {Object} li 当前输入框对象
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      handleSelectWord(content, mark, li) {
 | 
	
		
			
				|  |  | -      if (!content || !mark || !li) return;
 | 
	
		
			
				|  |  | +      if (!content || !mark || !li || this.disabled) return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        li.value = content;
 | 
	
		
			
				|  |  |        this.selectedWordList.push(mark);
 | 
	
	
		
			
				|  | @@ -418,6 +437,7 @@ $border-color: #e6e6e6;
 | 
	
		
			
				|  |  |          align-items: center;
 | 
	
		
			
				|  |  |          width: 120px;
 | 
	
		
			
				|  |  |          margin: 0 2px;
 | 
	
		
			
				|  |  | +        font-size: 16px;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          &.pinyin :deep input.el-input__inner {
 | 
	
		
			
				|  |  |            font-family: 'PINYIN-B', sans-serif;
 | 
	
	
		
			
				|  | @@ -495,4 +515,15 @@ $border-color: #e6e6e6;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.word-list {
 | 
	
		
			
				|  |  | +  display: flex;
 | 
	
		
			
				|  |  | +  flex-wrap: wrap;
 | 
	
		
			
				|  |  | +  gap: 8px;
 | 
	
		
			
				|  |  | +  align-items: center;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  .word-item {
 | 
	
		
			
				|  |  | +    cursor: pointer;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  </style>
 |