|
|
- <template>
- <view class="mt32 question__view" :class="[props.mode]">
- <view class="size-28 mb20 question">
- {{ `${props.index + 1}、${props.data.question}` }}
- </view>
- <view class="size-28 option"
- v-for="(option, oIdx) in props.data.options"
- :key="`${props.index}-option-${oIdx}`"
- :class="[props.modelValue === option.value ? 'is-selected' : '']"
- @click="onClick(option.value)"
- >
- {{ `${String.fromCharCode(65 + oIdx)}、${option.label}` }}
- </view>
- </view>
- </template>
-
- <script setup>
-
- const props = defineProps({
- index: {
- type: Number,
- default: null,
- },
- data: {
- type: Object,
- default() {
- return {}
- }
- },
- modelValue: {
- type: String | Number,
- default: null,
- },
- mode: {
- type: String,
- default: 'select', // select | display
- }
- })
-
- const emit = defineEmits(['update:modelValue'])
-
- const onClick = (val) => {
- emit('update:modelValue', val)
- }
-
- </script>
-
- <style lang="scss" scoped>
- .question {
- color: #000000;
- }
-
- .option {
- background-color: #F3F3F3;
- color: #707070;
- line-height: 37rpx;
- padding: 23rpx;
- border-radius: 28rpx;
-
- & + & {
- margin-top: 20rpx;
- }
- }
-
- .question__view.select {
- .option.is-selected {
- background-color: rgba($color: #FFBF60, $alpha: 0.22);
- color: #FFBF60;
- }
- }
- </style>
|