test.vue

chat8

<template>
 <div>
    <div id="app">
      <header>
        <h1>{{ examTitle }}</h1>
      </header>
      <main>
        <div class="student-info">
          <p>考生:</p>
          <p>【Student name: {{ studentName }}】</p>
          <p>【Student ID: {{ studentId }}】</p>
        </div>
        <div class="green-border"></div>
        <div class="single">
            <div>单选题</div>
            <div>得分:   总分:20</div>
        </div>
        <div v-for="(question, index) in questions" :key="question.id" class="questions">
          <h2>Question {{ index + 1 }}</h2>
          <p>{{ question.content }}</p>
          <form>
            <div class="radio-buttons">
              <label v-for="option in question.options" :key="option.id">
                <input type="radio" :value="option.id">
                {{ option.content }}
              </label>
            </div>
          </form>
          <p>Score: {{ getQuestionScore(question.id) }}/{{ question.score }}</p>
        </div>
        <div class="green-border"></div>
      </main>
      <footer>
        <button @click="submitExam">Submit</button>
      </footer>
    </div>
 </div>
</template>

<script>
 export default {
 data () {
 return {
    examTitle: '2023年春季学期《web应用前端开发》测试',
    studentName: '',
    studentId: '',
    questions: [],
    exams: []
  }
 },
 methods:{
    getQuestionScore(questionId) {
        const selectedOptionId = this.selectedAnswers[questionId];
        const question = this.questions.find(q => q.id === questionId);
        const selectedOption = question.options.find(o => o.id === selectedOptionId);

        if (selectedOption && selectedOption.isCorrect) {
          return question.score;
        } else {
          return 0;
        }
 },
 submitExam() {
        const answers = this.selectedAnswers;
        // send answers to server using AJAX
      },
},
mounted() {
  axios.get('/api/exam')
    .then(response => {
      const examData = response.data;
      this.examTitle = examData.title;
      this.studentName = examData.studentName;
      this.studentId = examData.studentId;
      this.questions = examData.questions;
      this.selectedAnswers = {};
      this.questions.forEach(q => {
        this.selectedAnswers[q.id] = null;
      });
    })
    .catch(error => {
      console.error(error);
    });
},
created: function() {
                axios.get('http://172.23.252.37:8080/exam/list')
                    .then(function(response) {
                        // 把相应数据赋值给exams
                        vm.exams = response.data;
                    })
                    .catch(function(error) {
                        console.error(error);
                    });
            }
}

</script>
<style scoped>
.green-border {
  border: 2px solid green;
}

.single{
  display: flex;
  justify-content: space-between; 
  align-items: center; 
}
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Adj_Seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值