<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.items" @click="answerClick(item)"
|
:class="answerState(item)">
|
<div class="answer-icon flex flex-col justify-center items-center flex-shrink-0">{{ item.prefix }}</div>
|
<div class="answer-text text-gray-700">{{ item.content }}</div>
|
</div>
|
</div>
|
|
</el-scrollbar>
|
</div>
|
</template>
|
|
<script setup>
|
import { ref } from 'vue';
|
import { storeToRefs } from 'pinia';
|
import ExamInfo from '@/components/ExamInfo/index.vue';
|
import { useExamStore } from '@/store/index.js';
|
|
const examStore = useExamStore();
|
|
const { currentType, currentIndex } = storeToRefs(examStore);
|
|
const activeQuestion = ref(examStore.getActiveQuestion);
|
|
const answerClick = (item) => {
|
if (item) {
|
// resetAnswer();
|
item.isActive = !item.isActive;
|
const answerList = filterAnswer();
|
examStore.setQuestionAnswer(currentType.value, currentIndex.value, answerList.join(','));
|
|
}
|
};
|
|
const answerState = (item) => {
|
return {
|
active: item.isActive
|
};
|
};
|
|
const filterAnswer = () => {
|
return activeQuestion.value.items.filter(item => item.isActive);
|
}
|
|
|
</script>
|
|
<style lang="scss" scoped>
|
.answer-item {
|
max-width: 500px;
|
border-radius: 10px;
|
border: 1px solid #DCDFE6;
|
overflow: hidden;
|
margin-bottom: 20px;
|
cursor: pointer;
|
|
&:last-of-type {
|
margin-bottom: 0;
|
}
|
|
&:hover {
|
border-color: #3680fa;
|
|
.answer-icon {
|
color: #3680fa;
|
border-color: #3680fa;
|
}
|
}
|
|
|
.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;
|
}
|
}
|
</style>
|