提交 290fea76 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 d4aa4f79
...@@ -116,6 +116,11 @@ function handlePercentChange(row: any, index: number) { ...@@ -116,6 +116,11 @@ function handlePercentChange(row: any, index: number) {
row.percent = Math.min(100 - otherTotal, row.percent) row.percent = Math.min(100 - otherTotal, row.percent)
}) })
} }
function rowScore(percent = 0) {
const score = parseFloat(props.data.score) || 0
return (percent / 100) * score
}
</script> </script>
<template> <template>
...@@ -126,19 +131,26 @@ function handlePercentChange(row: any, index: number) { ...@@ -126,19 +131,26 @@ function handlePercentChange(row: any, index: number) {
@update:modelValue="$emit('update:modelValue')"> @update:modelValue="$emit('update:modelValue')">
<el-form ref="formRef" :model="form" label-suffix=":"> <el-form ref="formRef" :model="form" label-suffix=":">
<el-form-item label="实验名称">{{ data?.name }}</el-form-item> <el-form-item label="实验名称">{{ data?.name }}</el-form-item>
<el-form-item label="是否允许查看成绩明细" prop="is_show"> <el-row>
<el-radio-group v-model="form.is_show"> <el-col :span="12">
<el-radio label="1"></el-radio> <el-form-item label="是否允许查看成绩明细" prop="is_show">
<el-radio label="0"></el-radio> <el-radio-group v-model="form.is_show">
</el-radio-group> <el-radio label="1"></el-radio>
</el-form-item> <el-radio label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="实验总成绩">{{ data?.score }}</el-form-item>
</el-col>
</el-row>
<el-form-item> <el-form-item>
<el-row justify="space-between" style="width: 100%"> <el-row justify="space-between" style="width: 100%">
<p>实验成绩规则:</p> <p>实验成绩规则:</p>
<el-button type="primary" :icon="Plus" @click="handleAdd"></el-button> <el-button type="primary" :icon="Plus" @click="handleAdd"></el-button>
</el-row> </el-row>
<el-table :data="form.rule_list" row-key="id"> <el-table :data="form.rule_list" row-key="id">
<el-table-column prop="name" width="250"> <el-table-column prop="name" width="200">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.name" :maxlength="20" style="width: 100%" v-if="row.type === 5" /> <el-input v-model="row.name" :maxlength="20" style="width: 100%" v-if="row.type === 5" />
<el-select <el-select
...@@ -158,13 +170,16 @@ function handlePercentChange(row: any, index: number) { ...@@ -158,13 +170,16 @@ function handlePercentChange(row: any, index: number) {
</el-table-column> </el-table-column>
<el-table-column prop="rule_mode"> <el-table-column prop="rule_mode">
<template #default="{ row }"> <template #default="{ row }">
<el-radio-group v-model="row.rule_mode"> <el-radio-group v-model="row.rule_mode" size="small">
<el-radio :label="1">手工评分</el-radio> <el-radio :label="1">手工评分</el-radio>
<el-radio :label="2" v-if="[2, 3].includes(row.type)">自动评分</el-radio> <el-radio :label="2" v-if="[2, 3].includes(row.type)">自动评分</el-radio>
</el-radio-group> </el-radio-group>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="right" width="70"> <el-table-column width="100">
<template #default="{ row }">满分:{{ rowScore(row.percent) }} </template>
</el-table-column>
<el-table-column align="right" width="60">
<template #default="{ $index, row }"> <template #default="{ $index, row }">
<el-button text type="primary" @click="handleRemove($index)" v-if="row.type !== 1">删除</el-button> <el-button text type="primary" @click="handleRemove($index)" v-if="row.type !== 1">删除</el-button>
</template> </template>
...@@ -185,7 +200,7 @@ function handlePercentChange(row: any, index: number) { ...@@ -185,7 +200,7 @@ function handlePercentChange(row: any, index: number) {
<style lang="scss" scoped> <style lang="scss" scoped>
.total { .total {
width: 100%; width: 100%;
padding: 10px 250px; padding: 10px 200px;
box-sizing: border-box; box-sizing: border-box;
p { p {
margin-left: 16px; margin-left: 16px;
......
...@@ -74,7 +74,7 @@ const teacherText = $computed(() => { ...@@ -74,7 +74,7 @@ const teacherText = $computed(() => {
</template> </template>
<!-- 附件组件 --> <!-- 附件组件 -->
<template v-else-if="item.type === 2"> <template v-else-if="item.type === 2">
<el-table :data="[{}, {}]" stripe :header-cell-style="{ background: '#ededed' }"> <el-table stripe :header-cell-style="{ background: '#ededed' }">
<el-table-column label="序号" type="index" width="80px" align="center"></el-table-column> <el-table-column label="序号" type="index" width="80px" align="center"></el-table-column>
<el-table-column label="附件类型" align="center"></el-table-column> <el-table-column label="附件类型" align="center"></el-table-column>
<el-table-column label="附件名称" align="center"></el-table-column> <el-table-column label="附件名称" align="center"></el-table-column>
......
<script setup> <script setup>
import { getExperimentGradeRule } from '../api' import { getExperimentGradeRule } from '../api'
const props = defineProps({ experiment_id: String }) const props = defineProps({ data: Object })
const detail = reactive({ is_show: undefined, rule_list: [] }) const detail = reactive({ is_show: undefined, rule_list: [] })
const canViewText = $computed(() => { const canViewText = $computed(() => {
const map = { 1: '是', 0: '否' } const map = { 1: '是', 0: '否' }
...@@ -9,7 +9,7 @@ const canViewText = $computed(() => { ...@@ -9,7 +9,7 @@ const canViewText = $computed(() => {
}) })
function fetchInfo() { function fetchInfo() {
getExperimentGradeRule({ experiment_id: props.experiment_id }).then(res => { getExperimentGradeRule({ experiment_id: props.data.id }).then(res => {
const data = res.data.detail const data = res.data.detail
let ruleList = [] let ruleList = []
try { try {
...@@ -34,7 +34,8 @@ onMounted(() => { ...@@ -34,7 +34,8 @@ onMounted(() => {
<el-form-item label="实验成绩规则" align="right"> <el-form-item label="实验成绩规则" align="right">
<el-form label-suffix=":"> <el-form label-suffix=":">
<el-form-item :label="item.name" v-for="(item, index) in detail.rule_list" :key="index"> <el-form-item :label="item.name" v-for="(item, index) in detail.rule_list" :key="index">
{{ item.percent }}% <span>{{ item.percent }}%</span>
<span style="padding-left: 80px">满分:{{ (data.score * item.percent) / 100 }}</span>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-form-item> </el-form-item>
......
...@@ -144,6 +144,6 @@ const reportRulesVisible = $ref(false) ...@@ -144,6 +144,6 @@ const reportRulesVisible = $ref(false)
v-model="studentListVisible" v-model="studentListVisible"
:data="rowData" :data="rowData"
v-if="studentListVisible && rowData"></StudentListDialog> v-if="studentListVisible && rowData"></StudentListDialog>
<ViewGradeRules v-model="gradeRulesVisible" :experiment_id="id" v-if="gradeRulesVisible"></ViewGradeRules> <ViewGradeRules v-model="gradeRulesVisible" :data="detail" v-if="gradeRulesVisible && detail"></ViewGradeRules>
<ViewReportRules v-model="reportRulesVisible" :experiment_id="id" v-if="reportRulesVisible"></ViewReportRules> <ViewReportRules v-model="reportRulesVisible" :experiment_id="id" v-if="reportRulesVisible"></ViewReportRules>
</template> </template>
...@@ -172,7 +172,10 @@ const resultVisible = $ref(false) ...@@ -172,7 +172,10 @@ const resultVisible = $ref(false)
</el-row> </el-row>
</el-form-item> </el-form-item>
<div class="score-result"> <div class="score-result">
<p class="score-result__total">{{ scoreValue(score) }}</p> <div class="score-result__total">
<p class="t1">{{ scoreValue(score) }}</p>
<p class="t2">满分:{{ experiment.score }}</p>
</div>
<el-table <el-table
:data="form.score_details" :data="form.score_details"
stripe stripe
...@@ -182,6 +185,7 @@ const resultVisible = $ref(false) ...@@ -182,6 +185,7 @@ const resultVisible = $ref(false)
<el-table-column label="权重" prop="percent" align="center"> <el-table-column label="权重" prop="percent" align="center">
<template #default="{ row }"> {{ row.percent }}% </template> <template #default="{ row }"> {{ row.percent }}% </template>
</el-table-column> </el-table-column>
<el-table-column label="满分" prop="score" align="center"></el-table-column>
<el-table-column label="得分" prop="commit_score" align="center"></el-table-column> <el-table-column label="得分" prop="commit_score" align="center"></el-table-column>
<el-table-column label="操作" prop="commit_score" align="center"> <el-table-column label="操作" prop="commit_score" align="center">
<template #default="{ row }"> <template #default="{ row }">
...@@ -266,7 +270,9 @@ const resultVisible = $ref(false) ...@@ -266,7 +270,9 @@ const resultVisible = $ref(false)
min-width: 120px; min-width: 120px;
white-space: nowrap; white-space: nowrap;
text-align: center; text-align: center;
font-size: 30px; .t1 {
color: var(--main-color); font-size: 30px;
color: var(--main-color);
}
} }
</style> </style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论