case/src/components/questionend.vue
zoujiandong daf55dd296 标题
2025-03-11 17:25:17 +08:00

165 lines
4.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="qbox" v-if="question.question_type != 3">
<div class="title">
{{ question.question_name }}{{ question.question_type == 1 ? '单选' : question.question_type == 2 ? '多选' :question.question_type == 3 ? '问答' : '判断'}}</div>
<div class="tips" v-if="question.question_type == 2">:本题可选择多个选项!</div>
<div class="tips" v-else-if="question.question_type == 1">:本题最多可选择1个选项!</div>
<div class="options" v-if="question.question_type == 1 || question.question_type == 2 || question.question_type == 4">
<div class="cell" v-for="(item, index) in question.case_item_question_option" :key="item.option_id" v-if="question.case_item_question_option">
<div class="title">{{ item.option_value }}</div>
<div class="progressbox">
<div class="progress">
<div class="inner" :style="{ width: 220 / 100 * item.proportion + 'px' }"></div>
</div>
<div class="numbox">
<div class="num">{{ item.select_num }}</div>
<div class="precent">{{ item.proportion }}%</div>
</div>
</div>
</div>
</div>
<div class="options_con" v-if="question.question_type == 3">
<van-field readonly :autosize="{ minHeight: 120 }" v-model="question.question_answer" rows="2" autosize type="textarea"
placeholder="请输入内容" show-word-limit />
</div>
</div>
</template>
<script setup>
import { ref } from "vue";
const emit = defineEmits(['checkAnswer']);
const zimu = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
const props = defineProps({
question: {
type: Object,
default: () => ({}),
},
disabled: {
type: Boolean,
default: false
},
pageIndex: {
type: Number,
default: 0
},
questionIndex: {
type: Number,
default: 0
},
});
</script>
<style lang='scss' scoped>
.options_con {
border-radius: 5px;
border: .5px solid #efefef;
margin-top: 15px;
box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.08);
border-radius: 10px;
padding: 15px 0px;
padding-bottom: 8px;
:deep() .van-cell {
background: none;
}
:deep() .van-field__word-limit {
color: #999999;
}
}
.qbox {
margin-bottom: 15px;
.title {
font-weight: bold;
line-height: 20px;
font-size: 16px;
color: #333333;
}
.tips {
margin-top: 8px;
font-weight: 500;
font-size: 12px;
color: #999999;
}
.cell {
border-bottom: 1px solid #efefef;
background: #fff;
margin-bottom: 12px;
.title {
margin: 0 10px;
font-weight: 500;
font-size: 14px;
color: #1F1F1F;
}
.numbox {
display: flex;
font-size: 12px;
color: #999999;
.precent {
margin-left: 5px;
}
}
.progressbox {
justify-content: space-between;
align-items: center;
margin: 8px 10px 15px;
margin-bottom: 15px;
display: flex;
border-radius: 5px;
.progress {
margin-right: 10px;
width: 220px;
overflow: hidden;
height: 5px;
background: #EFF3FF;
border-radius: 5px;
}
.inner {
width: 80%;
height: 5px;
border-radius: 5px;
background: #43C9C3;
}
}
}
.active {
border: 1px solid #43C9C3;
}
.cell:last-child {
margin-bottom: 0;
border: none;
}
.options {
margin-top: 15px;
box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.08);
border-radius: 10px;
padding: 15px 0px;
padding-bottom: 8px;
}
.img-icon {
width: 19px;
height: 19px;
}
}
</style>