ExaminationItem.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <template>
  2. <view class="examination-item">
  3. <u-card padding="32" full :showHead="false">
  4. <view slot="body">
  5. <view>
  6. <u-button type="primary" size="mini" disabled>{{questionObj.questionType == 1 ? '单选题' : questionObj.questionType == 2 ? '多选题' : '判断题'}}</u-button>
  7. </view>
  8. <!-- 题干 -->
  9. <view class="question">
  10. {{itemIndex + 1}}. {{questionObj.questionContent}}
  11. </view>
  12. <!-- 选项- for循环每个选项 -->
  13. <block v-for="item in questionObj.questionOptionList" :key="item.id">
  14. <view
  15. class="question-option"
  16. @click="choose(item)"
  17. :class="selectCode === item.optionCode ? 'question-option-active' : ''"
  18. >
  19. {{item.optionCode}}. {{item.optionContent}}
  20. </view>
  21. </block>
  22. </view>
  23. </u-card>
  24. </view>
  25. </template>
  26. <script>
  27. export default {
  28. props: {
  29. questionObj: {
  30. type: Object,
  31. default: () => {}
  32. },
  33. itemIndex: {
  34. type: Number,
  35. default: 0
  36. },
  37. },
  38. data() {
  39. return {
  40. selectCode: null,
  41. testValue: 'lxp',
  42. };
  43. },
  44. methods: {
  45. choose(e) {
  46. const originalCode = this.selectCode
  47. this.selectCode = e.optionCode
  48. this.$emit('selected', originalCode, e.optionCode, this.questionObj.id, this.itemIndex)
  49. },
  50. }
  51. }
  52. </script>
  53. <style lang="scss">
  54. .examination-item {
  55. .question {
  56. margin: 16rpx 0;
  57. color: #1F2937;
  58. line-height: 56rpx;
  59. font-size: 36rpx;
  60. }
  61. .question-option {
  62. margin: 24rpx 0;
  63. padding: 24rpx 0 24rpx 26rpx;
  64. box-sizing: border-box;
  65. border: 1px solid #E4E7ED;
  66. border-radius: 8rpx;
  67. }
  68. .question-option-active {
  69. background-color: #E8FBF6;
  70. border: 1px solid #00C18A;
  71. }
  72. }
  73. </style>