<!-- 填空题 -->
|
<template>
|
<div class="answer-container w-full h-full">
|
<el-scrollbar>
|
<ExamInfo class="mb-5" :questionIndex="currentIndex" :activeQuestion="activeQuestion"></ExamInfo>
|
|
<div class="answer-content">
|
<div class="answer-item flex" v-for="item, index in activeQuestion.questionItemList" :class="answerState(item,index)">
|
<div class="answer-icon flex flex-col justify-center items-center flex-shrink-0">{{ item.prefix }}</div>
|
<div class="answer-text text-gray-700 grow">
|
<el-input v-model="answerList[index]"
|
maxlength="30"
|
placeholder="请输入内容"
|
class="answer-input"
|
@focus="answerFocus(item)"
|
@blur="answerBlur(item)"
|
@change="answerChange(index)"></el-input>
|
</div>
|
</div>
|
</div>
|
|
</el-scrollbar>
|
</div>
|
</template>
|
|
<script setup>
|
import { ref, watchEffect } from 'vue';
|
import { storeToRefs } from 'pinia';
|
import ExamInfo from '@/components/ExamInfo/index.vue';
|
import { useExamStore } from '@/store/index.js';
|
const examStore = useExamStore();
|
|
const answerList = ref([]);
|
|
|
const { currentType, currentIndex } = storeToRefs(examStore);
|
|
const activeQuestion = ref(examStore.getActiveQuestion);
|
|
const answerFocus = (item) => {
|
item.isActive = true;
|
};
|
|
const answerBlur = (item) => {
|
item.isActive = false;
|
}
|
|
const answerState = (item,index) => {
|
if(Array.isArray(activeQuestion.value.answerList) && activeQuestion.value.answerList[index]) {
|
item.isActive = true;
|
}
|
return {
|
active: item.isActive
|
};
|
};
|
|
const answerChange = () => {
|
examStore.setQuestionAnswerList(currentType.value, currentIndex.value, answerList.value);
|
}
|
|
|
watchEffect(() => {
|
activeQuestion.value.questionItemList.forEach((item, index) => {
|
if(Array.isArray(activeQuestion.value.answerList)) {
|
answerList.value[index] = activeQuestion.value.answerList[index];
|
} else {
|
answerList.value[index] = '';
|
}
|
});
|
})
|
|
|
</script>
|
|
<style lang="scss" scoped>
|
.answer-item {
|
max-width: 500px;
|
border-radius: 10px;
|
border: 1px solid #DCDFE6;
|
overflow: hidden;
|
margin-bottom: 20px;
|
|
&:last-of-type {
|
margin-bottom: 0;
|
}
|
|
|
.answer-icon {
|
width: 50px;
|
background-color: #F0F2F5;
|
border-right: 1px solid #ffffff;
|
}
|
|
.answer-text {
|
min-height: 50px;
|
padding: 15px 0;
|
margin: 0 10px;
|
}
|
}
|
|
.active {
|
border-color: #409EFF !important;
|
|
.answer-icon {
|
color: #ffffff !important;
|
border-color: #409EFF !important;
|
background-color: #409EFF !important;
|
}
|
}
|
|
.answer-input {
|
width: 100%;
|
border: 0;
|
:deep(.el-input__wrapper) {
|
box-shadow: none !important;
|
}
|
}
|
</style>
|