rk
2025-09-28 a8fb7ae2dbb61a94141ed5e73d3bb2632b7b84df
h5/pages/answer/answer.vue
@@ -6,11 +6,16 @@
    </view>
    <view class="box_list">
      <view class="box_list_answer" v-if="list && list.length > 0">
        <view v-if="status == 1 || status == 2" class="score_static">
          <text class="name">本次得分:</text>
          <text class="num" :class="{ warry: status == 2 }">{{ score }}分</text>
        </view>
        <!--    单选/判断   -->
        <view v-for="(item, index) in list" :key="index" class="list_item">
          <view class="box_list_answer_name">
            {{ index + 1 }}、{{ item.title
            }}<text style="color: #ed4545">*</text>
            <text>{{ index + 1 }}、{{ item.title }}</text>
            <text v-if="item.score"> ({{ item.score }}分)</text>
            <text style="color: #ed4545">*</text>
          </view>
          <template v-if="item.type == 1 || item.type == 0">
            <view
@@ -29,7 +34,9 @@
                  (item.selAnswer &&
                    item.answer === item.selAnswer &&
                    item.selAnswer == line.code) ||
                  item.selAnswer == line.code
                  (item.selAnswer == line.code && status != '2') ||
                  (item.answer === item.selAnswer &&
                    item.selAnswer == line.code)
                "
              />
              <image
@@ -50,10 +57,12 @@
                  (item.selAnswer &&
                    item.answer === item.selAnswer &&
                    item.selAnswer == line.code) ||
                  item.selAnswer == line.code
                  (item.selAnswer == line.code && status != '2') ||
                  (item.answer === item.selAnswer &&
                    item.selAnswer == line.code)
                "
                style="color: rgba(2, 94, 239, 1)"
                ><text class="mr24" style="color: rgba(2, 94, 239, 1)">{{
                style="color: rgba(77, 153, 168, 1)"
                ><text class="mr24" style="color: rgba(77, 153, 168, 1)">{{
                  line.code
                }}</text>
                {{ line.value }}</text
@@ -61,6 +70,7 @@
              <text
                v-if="
                  item.selAnswer &&
                  item.selAnswer == line.code &&
                  item.answer !== item.selAnswer &&
                  status == '2'
                "
@@ -73,14 +83,18 @@
            </view>
            <view
              class="box_list_answer_tips"
              style="margin-bottom: 0rpx"
              v-if="
                item.selAnswer &&
                item.answer !== item.selAnswer &&
                status != '0'
              "
            >
              <image src="@/static/ic_wrong@2x.png" />
              <text>回答错误</text>
              <view class="line">
                <image src="@/static/ic_wrong@2x.png" />
                <text>回答错误</text>
              </view>
              <view class="line">正确答案:{{ item.answer }}</view>
            </view>
            <view
              class="box_list_answer_tips"
@@ -90,8 +104,10 @@
                status != '0'
              "
            >
              <image src="@/static/meeting/icon/ic_choose_sel@2x.png" />
              <text>回答正确</text>
              <view class="line">
                <image src="@/static/ic_success@2.png" />
                <text class="success">回答正确</text>
              </view>
            </view>
          </template>
          <template v-if="item.type == 2">
@@ -104,7 +120,10 @@
              <image src="@/static/checkbox@2x.png" v-if="!line.checked" />
              <image
                src="@/static/checkbo1x_sel@2x.png"
                v-if="line.checked || (item.selAnswer === item.answer && line.checked)"
                v-if="
                  (line.checked && status != '2') ||
                  (item.selAnswer === item.answer && line.checked)
                "
              />
              <image
                src="@/static/checkbox_wrong@2x.png"
@@ -114,27 +133,25 @@
                  status == '2'
                "
              />
              <text v-if="!item.selAnswer || item.selAnswer !== line.code"
              <text v-if="!line.checked"
                ><text class="mr24">{{ line.code }}</text>
                {{ line.value }}</text
              >
              <text
                v-if="
                  (item.selAnswer &&
                    item.answer === item.selAnswer &&
                    item.selAnswer == line.code) ||
                  item.selAnswer == line.code
                  (line.checked && status != '2') ||
                  (item.selAnswer === item.answer && line.checked)
                "
                style="color: rgba(2, 94, 239, 1)"
                ><text class="mr24" style="color: rgba(2, 94, 239, 1)">{{
                style="color: rgba(77, 153, 168, 1)"
                ><text class="mr24" style="color: rgba(77, 153, 168, 1)">{{
                  line.code
                }}</text>
                {{ line.value }}</text
              >
              <text
                v-if="
                  item.selAnswer &&
                  item.answer !== item.selAnswer &&
                  line.checked &&
                  item.selAnswer !== item.answer &&
                  status == '2'
                "
                style="color: rgba(237, 69, 69, 1)"
@@ -152,8 +169,11 @@
                status != '0'
              "
            >
              <image src="@/static/ic_wrong@2x.png" />
              <text>回答错误</text>
              <view class="line">
                <image src="@/static/ic_wrong@2x.png" />
                <text>回答错误</text>
              </view>
              <view class="line">正确答案:{{ item.answer }}</view>
            </view>
            <view
              class="box_list_answer_tips"
@@ -163,8 +183,10 @@
                status != '0'
              "
            >
              <image src="@/static/meeting/icon/ic_choose_sel@2x.png" />
              <text>回答正确</text>
              <view class="line">
                <image src="@/static/ic_success@2.png" />
                <text class="success">回答正确</text>
              </view>
            </view>
          </template>
        </view>
@@ -172,6 +194,7 @@
        <view
          v-if="status == '0'"
          class="box_list_answer_btn"
          :class="{ disable: !answerIng }"
          @click="onSubmit()"
          >提交</view
        >
@@ -182,7 +205,7 @@
          v-if="status == '2'"
          style="background-color: #db534c"
          class="box_list_answer_btn"
          @click="status = '0'"
          @click="handleAgain"
          >答题失败,再来一次</view
        >
        <!--    多选    -->
@@ -198,7 +221,7 @@
                  <text style="color: rgba(237, 69, 69, 1)"
                     v-if="success && multiple.toString().indexOf(item.code) !== -1">{{item.code}} {{item.value}}</text>
                  <text v-else-if="!multiple || multiple.toString().indexOf(item.code) === -1">{{item.code}} {{item.value}}</text>
                  <text style="color: rgba(2, 94, 239, 1)"
                  <text style="color: rgba(77, 153, 168, 1)"
                     v-else-if="multiple.toString().indexOf(item.code) !== -1">{{item.code}} {{item.value}}</text>
               </view>
            </template> -->
@@ -208,21 +231,32 @@
</template>
<script>
import { getProblemsVO, getSystemDictData } from '@/api'
import { getProblemsVO, getSystemDictData, saveProblemsVO } from '@/api'
export default {
  name: 'answer',
  data() {
    return {
      list: [],
      bg: require("@/static/banner_dati.jpg"),
      bg: require("@/static/banner_dati.png"),
      title: '',
      content: '',
      status: '0'
      status: '0',
      score: 0
    }
  },
  computed: {
    answerIng() {
      let count = 0
      this.list.forEach(item => {
        if (item.selAnswer || item.selAnswer == 0) {
          count++
        }
      })
      return count === this.list.length
    }
  },
  onLoad() {
    this.getProblems()
    this.getInfo()
@@ -270,7 +304,6 @@
              item.status = '0'
              item.selAnswer = null
            })
            console.log(res.data)
            this.list = res.data
          }
          // res.param.problemsDOList.forEach(item => {
@@ -282,6 +315,7 @@
    },
    // 单选选择中题目
    select(line, i) {
      if (this.status != '0') return
      this.list.forEach((item, index) => {
        if (index === i) {
          item.selAnswer = line.code
@@ -290,10 +324,11 @@
      // this.problemIndex = index
    },
    changeBox(index, jeck) {
      if (this.status != '0') return
      this.list.forEach((item, i) => {
        if (index === i) {
          item.options.forEach((item2, j) => {
            if(j === jeck){
            if (j === jeck) {
              item2.checked = !item2.checked
            }
          })
@@ -329,6 +364,7 @@
    },
    // 下一题
    onSubmit() {
      if (!this.answerIng) return
      const { list } = this
      // 验证所有题目都有选项
      let count = 0
@@ -348,6 +384,8 @@
      list.forEach(item => {
        if (item.selAnswer !== item.answer) {
          flag++
        } else {
          this.score += item.score
        }
      })
      if (flag > 0) {
@@ -360,10 +398,24 @@
        this.status = '1'
      }
    },
    handleAgain() {
      this.status = '0'
      this.score = 0
      this.getProblems()
    },
    next() {
      uni.navigateTo({
        url: `/pages/userinfo/userinfo`
      saveProblemsVO({
        openId: this.$store.state.openId,
        useType: '1',
        content: '',
            score: this.score
      }).then(res => {
        this.score = 0
        uni.navigateTo({
          url: `/pages/appointment/appointment?answerId=${res.data}`
        })
      })
    }
  }
}
@@ -373,7 +425,7 @@
.box {
  width: 100%;
  height: 100vh;
  background: #025eef;
  background: $uni-color-primary;
  .box_bgimage {
    width: 100%;
    padding: 0 40rpx;
@@ -425,9 +477,17 @@
        box-sizing: border-box;
        background: #f7f7f7;
        border-radius: 8rpx;
        display: flex;
        align-items: center;
        margin-bottom: 24rpx;
        .line {
          display: flex;
          align-items: center;
          font-size: 28rpx;
          color: #333333;
          margin-bottom: 20rpx;
          &:nth-last-child(1){
            margin-bottom: 0;
          }
        }
        image {
          width: 28rpx;
          height: 28rpx;
@@ -438,6 +498,23 @@
          color: #e42d2d;
          margin-left: 16rpx;
        }
        .success {
          color: $uni-color-primary;
        }
      }
    }
    .score_static {
      display: flex;
      font-size: 32rpx;
      margin-bottom: 40rpx;
      .name {
        font-weight: 600;
      }
      .num {
        color: $uni-color-primary;
      }
      .warry {
        color: #ed4545;
      }
    }
    .list_item {
@@ -469,19 +546,21 @@
    }
    .box_list_answer_btn {
      position: fixed;
      bottom: 140rpx;
      bottom: 120rpx;
      left: 60rpx;
      width: 630rpx;
      height: 88rpx;
      line-height: 88rpx;
      text-align: center;
      background: #025eef;
      box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(2, 94, 239, 0.3);
      background: $uni-color-primary;
      box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(77, 153, 168, 0.3);
      border-radius: 44rpx;
      font-size: 30rpx;
      font-weight: 500;
      color: #ffffff;
    }
    .disable {
      background-color: #cccccc;
    }
  }
}
</style>