updaet:学校体测管理

This commit is contained in:
ltx 2026-07-13 14:50:52 +08:00
parent be84942c5a
commit f50f8b8a9c
8 changed files with 155 additions and 17 deletions

View File

@ -7,6 +7,12 @@ export function importSportsHallStudentsTestData(formData) {
})
}
export function importSummaryOfGradesStudentsTestData(formData) {
return http.post('/api/SportsHall/SummaryOfGradesImportStudentsTestData', formData, false, {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
// 运动馆体测成绩分页列表
export function getSportsHallStudentsTestPageList(params) {
return http.get('/api/SportsHall/GetSportsHallStudentsTestPageList', null, false, { params })

View File

@ -83,6 +83,35 @@ function confirm() {
}
.dialog-footer {
display: flex;
align-items: center;
justify-content: flex-end;
p {
width: 120px;
height: 40px;
border-radius: 8px;
text-align: center;
line-height: 40px;
font-size: 14px;
font-family: PingFangSC;
font-weight: 400;
cursor: pointer;
}
p:nth-of-type(1) {
background: #FAFAFA;
color: rgba(0, 0, 0, 0.65);
border: 1px solid #DCDFE6;
margin-right: 20px;
}
p:nth-of-type(2) {
background: #0486FE;
color: #FFFFFF;
}
}
.my-header {
width: 100%;
height: 20px;

View File

@ -1,6 +1,6 @@
<template>
<div v-if="!props.embeddedInSummary" style="height: 4px;"></div>
<commonManage :class="{ 'summary-body-side': props.embeddedInSummary }">
<div :class="{ 'summary-body-side': props.embeddedInSummary }">
<div class="head">
<div class="left">
<div class="one">
@ -90,7 +90,7 @@
@size-change="handleSizeChange" @current-change="changePage" />
</div>
</div>
</commonManage>
</div>
<commonDialog :list="data.dialogData" @cancle="cancle" @confirm="confirm" v-if="data.dialogData.dialogVisible">
<template #cont>
<div class="dialogManage" v-if="!data.isImport">
@ -199,7 +199,7 @@ handelData.value.sort((a, b) => {
return 0;
}
});
const toolbarButtons = computed(() => handelData.value.filter((item) => item.engName !== 'Export' && item.engName !== 'Update' && item.engName !== 'Update' && item.engName !== 'Delete'))
const toolbarButtons = computed(() => handelData.value.filter((item) => item.engName !== 'Export' && item.engName !== 'Import' && item.engName !== 'Update' && item.engName !== 'Delete'))
const showRowOperate = computed(() => true)
const ruleForm = ref({
studentNo: '',
@ -652,6 +652,25 @@ async function AddList() {
display: none;
}
:deep(.el-input__wrapper),
:deep(.el-select__wrapper) {
min-height: 34px;
border-radius: 8px;
box-shadow: 0 0 0 1px #dce4f0 inset;
transition: box-shadow 0.18s ease, background 0.18s ease;
background: #f8fbff;
box-shadow: 0 0 0 1px #dfe8f5 inset;
transition: all 0.18s ease;
}
:deep(.el-input__wrapper:hover),
:deep(.el-select__wrapper:hover),
:deep(.el-input__wrapper.is-focus),
:deep(.el-select__wrapper.is-focused) {
box-shadow: 0 0 0 1px #2f8dff inset, 0 0 0 3px rgba(47, 141, 255, 0.1);
}
.head {
width: 100%;
height: auto;
@ -671,12 +690,16 @@ async function AddList() {
overflow: visible;
.one {
width: 270px !important;
width: 280px !important;
height: 36px;
display: flex;
align-items: center;
margin-left: 0;
.desctipt {
font-weight: 600;
}
.m-2 {
width: 170px;
margin-left: 10px;
@ -731,6 +754,20 @@ async function AddList() {
justify-content: center;
line-height: 34px;
user-select: none;
color: #ffffff !important;
border: 1px solid #176be7 !important;
background: linear-gradient(135deg, #2f8dff 0%, #176be7 100%) !important;
box-shadow: 0 7px 16px rgba(47, 141, 255, 0.2);
}
.Search:hover,
.Add:hover,
.Update:hover,
.Delete:hover,
.Export:hover,
.Import:hover {
transform: translateY(-1px);
}
}
@ -750,7 +787,12 @@ async function AddList() {
text-align: center;
line-height: 20px;
cursor: pointer;
margin-left: 10px
margin-left: 10px;
margin-right: 12px;
}
.delete {
color: rgb(241, 88, 88);
}
.addTeacherDrawer {

View File

@ -238,7 +238,7 @@ export default {
margin-top: 2px;
}
.ivu-card {
box-shadow: 0 3px 14pxrgba(117, 114, 114, 0.47);
box-shadow: 0 3px 14px rgba(117, 114, 114, 0.47);
display: flex;
position: relative;
padding-top: 10px;
@ -309,7 +309,7 @@ export default {
}
.order-range .order-item {
box-shadow: 0 3px 14pxrgba(117, 114, 114, 0.47);
box-shadow: 0 3px 14px rgba(117, 114, 114, 0.47);
flex: 1;
border-radius: 6px;
font-size: 14px;

View File

@ -90,7 +90,8 @@
</template>
</el-table-column>
<el-table-column v-for="item in tableItemColumns" :key="item.id"
:label="`${item.itemTypeName}${item.unit ? `(${item.unit})` : ''}`" min-width="130" align="center">
:label="`${item.itemTypeName}${item.unit ? `(${item.unit})` : ''}`" min-width="130"
align="center">
<template #default="{ row }">
<span>{{ getItemValue(row, item.id) }}</span>
</template>
@ -164,7 +165,8 @@
</el-dialog>
<!-- 成绩修正弹窗 -->
<el-dialog v-model="editDialog.visible" title="成绩修正" width="560px" :close-on-click-modal="false" append-to-body>
<el-dialog v-model="editDialog.visible" title="成绩修正" width="560px" :close-on-click-modal="false"
append-to-body>
<el-form ref="editFormRef" :model="editForm" label-width="160px" size="default">
<el-form-item label="学生姓名">
<el-input :value="editForm.studentName" disabled />
@ -206,7 +208,7 @@
import { ref, reactive, onMounted } from 'vue'
import BodySideData from '@/views/bodySideData/index.vue'
import { ElMessage } from 'element-plus'
import { importSportsHallStudentsTestData, getSummaryOfGradesStudentsTestPageList, correctScore } from '@/api/sportsHall'
import { importSummaryOfGradesStudentsTestData, getSummaryOfGradesStudentsTestPageList, correctScore } from '@/api/sportsHall'
import { GetGradeNames } from '@/api/grade'
const activeTab = ref('trainingRecord')
@ -360,7 +362,7 @@ const handleUploadRequest = async (options: any) => {
const formData = new FormData()
formData.append('file', options.file)
try {
const res = await importSportsHallStudentsTestData(formData)
const res = await importSummaryOfGradesStudentsTestData(formData)
if (res.code != 200) {
ElMessage.error(res.message || '上传失败')
return
@ -382,7 +384,7 @@ const downloadTemplate = async () => {
try {
// TODO: 替换为实际模板下载接口
// ElMessage.info('正在下载模板...')
window.open('https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/web/%E8%BF%90%E5%8A%A8%E9%A6%86%E5%AD%A6%E7%94%9F%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx', '_blank')
window.open('https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/web/%E5%AD%A6%E6%A0%A1%E5%AD%A6%E7%94%9F%E4%BD%93%E6%B5%8B%E6%88%90%E7%BB%A9%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx', '_blank')
// const res = await axios.get('/api/sportHall/downloadTemplate', { responseType: 'blob' })
// const url = window.URL.createObjectURL(new Blob([res.data]))
@ -611,6 +613,8 @@ onMounted(() => {
color: #176be7;
border-color: #9fc6ff;
background: #f4f8ff;
transform: translateY(-1px);
}
}
@ -621,14 +625,18 @@ onMounted(() => {
border-radius: 8px;
font-size: 14px;
line-height: 35px;
background: #4188FE;
border: 1px solid #176be7;
// background: #4188FE;
// border: 1px solid #176be7;
box-shadow: none;
transition: all 0.2s;
color: #ffffff !important;
border: 1px solid #176be7 !important;
background: linear-gradient(135deg, #2f8dff 0%, #176be7 100%) !important;
box-shadow: 0 7px 16px rgba(47, 141, 255, 0.2);
&:hover {
background: #176be7;
box-shadow: 0 7px 16px rgba(47, 141, 255, 0.18);
// background: #176be7;
// box-shadow: 0 7px 16px rgba(47, 141, 255, 0.18);
transform: translateY(-1px);
}

View File

@ -26,7 +26,7 @@ export default ({ mode }: ConfigEnv) => {
port: 9990,
proxy: {
'/dev-api': {
// target: ENV.VITE_API_BASE || 'http://localhost:52356',
// target: 'http://8.153.108.90:9991/',
target: ENV.VITE_API_BASE || 'http://localhost:9991',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/dev-api/, '')

28
yd-web.err.log Normal file
View File

@ -0,0 +1,28 @@
DEPRECATION WARNING [legacy-js-api]: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.
More info: https://sass-lang.com/d/legacy-js-api
DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.
More info and automated migrator: https://sass-lang.com/d/import
╷
1 │ @import "@/assets/style/mixin.scss";
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
╵
src\views\bigScreen\newScreen\index.vue 1:9 root stylesheet
DEPRECATION WARNING [legacy-js-api]: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.
More info: https://sass-lang.com/d/legacy-js-api
DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.
More info and automated migrator: https://sass-lang.com/d/import
╷
1 │ @import "@/assets/style/mixin.scss";div {
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
╵
src\views\bigScreen\newScreen\playground\index.scss 1:9 root stylesheet

25
yd-web.out.log Normal file
View File

@ -0,0 +1,25 @@
> vol.vue3@0.1.0 dev
> vite
当前环境信息: development
ENV: {
VITE_BASE_URL: '/',
VITE_API_BASE: 'http://localhost:9991',
VITE_IMAGE_BASE_URL: 'http://localhost:9991',
VITE_LOCAL_API: '1'
}

vite v2.9.18 dev server running at:

> Network: http://192.168.0.100:9990/
> Local: http://localhost:9990/
ready in 2088ms.
14:15:35 [vite] hmr update /src/views/motionData/summaryOfGrades/index.vue
14:27:09 [vite] hmr update /src/components/commonDialog/index.vue?vue&type=style&index=0&scoped=true&lang.less
14:27:51 [vite] hmr update /src/components/commonDialog/index.vue?vue&type=style&index=0&scoped=true&lang.less
14:28:26 [vite] hmr update /src/views/bodySideData/index.vue
14:28:28 [vite] hmr update /src/views/bodySideData/index.vue
14:28:43 [vite] hmr update /src/views/bodySideData/index.vue