You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
3.7 KiB

<template>
<div id="check-attendance">
<!-- 添加 "进入提问环节" 文本 -->
<div id="question-phase">
进入提问环节
</div>
<!-- 显示正在回答问题的学生姓名 -->
<div id="current-student">
现在回答问题的是 {{ currentStudent.name || "某某同学" }}
</div>
<div id="circle-container">
<button
v-for="(score, index) in scores"
:key="index"
class="circle-button"
:style="getButtonStyle(index)"
@click="selectScore(score)"
>
{{ score }}
</button>
</div>
<div id="selected-score">
: {{ selectedScore }}
</div>
</div>
</template>
<script>
import { ModifyStudentScore } from "@/api/api"; // 引入修改分数接口
export default {
data() {
return {
scores: [-1, 0.5, 1, 1.5, 2, 2.5, 3],
selectedScore: null,
currentStudent: this.$route.params.student, // 从路由参数中获取当前学生信息
detailModeType: this.$route.params.detailModeType // 从路由参数中获取当前学生信息
};
},
methods: {
selectScore(score) {
this.selectedScore = score; // 显示选中的分数
if (this.detailModeType != 0) {
score = this.detailModeType * score;
}
// 使用 this.detailModeType 访问 detailModeType
ModifyStudentScore(this.currentStudent.id, score).then((res) => {
if (res.code == 500) {
this.$message.error("修改分数发生错误");
} else if (res.code == 200) {
this.$message.success(this.currentStudent.name + "分数修改成功, 增加" + score + "分");
this.$router.push("/roll-call");
} else if (res.code == 401) {
alert("登录过期,请重新登录!");
this.$router.push("/login");
}
});
},
getButtonStyle(index) {
const angle = (index / this.scores.length) * 2 * Math.PI; // 计算每个按钮的角度
const radius = 150; // 圆环的半径
const x = radius * Math.cos(angle); // 按钮的 x 坐标
const y = radius * Math.sin(angle); // 按钮的 y 坐标
return {
position: 'absolute',
left: `${150 + x}px`, // 将 x 坐标平移至容器中心
top: `${150 + y}px`, // 将 y 坐标平移至容器中心
};
},
},
};
</script>
<style scoped>
#check-attendance {
box-sizing: border-box;
position: relative;
width: 85.4%;
height: 100vh;
min-width: 910px;
min-height: 700px;
background-image: url("../assets/background.png");
background-size: cover;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
#question-phase {
font-size: 28px;
color: white;
margin-bottom: 10px;
}
#current-student {
font-size: 24px;
color: white;
margin-bottom: 30px;
}
#circle-container {
position: relative;
width: 300px; /* 容器宽度,圆环直径 */
height: 300px;
position: relative;
}
.circle-button {
width: 60px;
height: 60px;
border-radius: 50%;
background-color: #87CEEB;
color: white;
border: none;
font-size: 18px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
transition: background-color 0.3s;
}
.circle-button:hover {
background-color: #1E90FF;
}
#selected-score {
margin-top: 20px;
font-size: 24px;
color: white;
}
</style>