| | |
| | | <template> |
| | | <div class="sheet-container w-full h-full"> |
| | | <el-scrollbar> |
| | | <el-collapse v-model="activeNames" @change="handleChange"> |
| | | <template v-for="item in sheetList"> |
| | | <el-collapse-item :title="item.title" :name="item.type"> |
| | | <el-collapse v-model="activeNames"> |
| | | <template v-for="item in examDetail"> |
| | | <el-collapse-item :title="item.title" :name="item.questionType"> |
| | | <div class="sheet-list grid grid-cols-5 gap-4 justify-items-center"> |
| | | <div class="sheet-item cursor-pointer flex justify-center items-center" v-for="index in item.total" @click="sheetClick(item,index)" :class="itemClass(item.type, index)"> |
| | | {{ index }} |
| | | <div class="sheet-item cursor-pointer flex justify-center items-center" v-for="question,index in item.questionList" @click="sheetClick(item.questionType,index)" :class="itemClass(question,item.questionType, index)"> |
| | | {{ index + 1 }} |
| | | </div> |
| | | </div> |
| | | </el-collapse-item> |
| | |
| | | |
| | | <script setup> |
| | | import { ref } from 'vue'; |
| | | import {storeToRefs} from 'pinia'; |
| | | import {useExamStore} from '@/store/index.js'; |
| | | const examStore = useExamStore(); |
| | | |
| | | const categroy = ref(0); |
| | | const sheetIndex = ref(0); |
| | | const {examDetail,currentType,currentIndex} = storeToRefs(examStore); |
| | | |
| | | const itemClass = (type,index) => { |
| | | const activeNames = ref(examDetail.value.map(item => item.questionType)); |
| | | |
| | | const itemClass = (question,type,index) => { |
| | | return { |
| | | active: categroy.value === type && sheetIndex.value === index |
| | | answer: question.answer || checkAnswerList(question.answerList), |
| | | active: currentType.value === type && currentIndex.value === index |
| | | } |
| | | } |
| | | |
| | | |
| | | const sheetList = ref([ |
| | | { |
| | | title: '单选题', |
| | | type: 1, |
| | | total: 20, |
| | | }, |
| | | { |
| | | title: '多选题', |
| | | type: 2, |
| | | total: 20, |
| | | }, |
| | | { |
| | | title: '判断题', |
| | | type: 3, |
| | | total: 20, |
| | | }, |
| | | ]); |
| | | |
| | | const activeNames = ref(sheetList.value.map(item => item.type)); |
| | | |
| | | |
| | | const handleChange = () => { |
| | | |
| | | }; |
| | | |
| | | const sheetClick = (item, index) => { |
| | | categroy.value = item.type; |
| | | sheetIndex.value = index; |
| | | const sheetClick = (type,index) => { |
| | | currentType.value = type; |
| | | currentIndex.value = index; |
| | | } |
| | | |
| | | |
| | | const checkAnswerList = (answerList) => { |
| | | return Array.isArray(answerList) && answerList.length && answerList.every(item => item); |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | |
| | | .active { |
| | | border-color: #3680fa; |
| | | } |
| | | .answer { |
| | | border-color: #3680fa !important; |
| | | background-color: #3680fa !important; |
| | | color: #fff !important; |
| | | } |
| | | </style> |