From c6dd259a5273ba0fefee8e5c0bcdf104068f7d6b Mon Sep 17 00:00:00 2001 From: ywyonui Date: Fri, 4 Jul 2025 20:44:24 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E5=A4=8D=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E9=97=AE=E9=A2=98=202=E3=80=81=E8=B0=83=E6=95=B4=E8=80=83?= =?UTF-8?q?=E8=AF=95=E6=88=90=E7=BB=A9=E7=9A=84=E6=98=BE=E7=A4=BA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/base/grades/detail.vue | 109 +++++++++++++++---------------- src/pages/base/home/index.vue | 11 ++-- 2 files changed, 56 insertions(+), 64 deletions(-) diff --git a/src/pages/base/grades/detail.vue b/src/pages/base/grades/detail.vue index bc02ce6..67b8726 100644 --- a/src/pages/base/grades/detail.vue +++ b/src/pages/base/grades/detail.vue @@ -8,7 +8,7 @@ - 共{{kscjList.length}}科(满分{{ kscjList.length * 100 }}分) + 共{{ksccKmList.length}}科(满分{{ totalKmFs }}分) {{ curKsdj.dfbs }} @@ -28,7 +28,7 @@ - + - {{ kscj.kmmc }} + {{ kscj.km.kmmc }} (分数{{ kscj.ksfs }}) @@ -161,7 +161,6 @@ import dayjs from "dayjs"; import { xsKscjApi, getJzdShowFs } from "@/api/base/server"; import { useUserStore } from "@/store/modules/user"; import { useDataStore } from "@/store/modules/data"; -import { format } from "path"; const { getCurXs } = useUserStore(); const { getData } = useDataStore(); dayjs.locale("zh-cn"); @@ -219,14 +218,21 @@ let trendData = { ], }; -// 后端查询到的所有科目列表 -const srcKmList = ref([]); -// 后端查询到的考试等级列表 -const srcKsdjList = ref([]); -// 后端查询到的当前学生本次考试成绩列表 -const srcKsccKscjList = ref([]); -// 后端查询到的当前学生本次学期所有成绩列表 -const srcXqKscjList = ref([]); +// 所有科目列表 +const sysKmList = ref([]); +// 当前考试科目列表 +const ksccKmList = ref([]); +// 科目卷面分总数 +const totalKmFs = ref(0); + +// 科目等级列表 +const kmDjList = ref([]); +// 考试场次等级列表 +const djList = ref([]); +// 考试场次成绩列表 +const ksccKscjList = ref([]); +// 学期成绩 +const xqKscjList = ref([]); const switchKm = (index : number) => { curKmIndex.value = index; @@ -392,38 +398,24 @@ const floatToInt = (floatNum: number, scale: number) => { // 初始化考试等级列表 const initKsdj = () => { - srcKsdjList.value.forEach((ksdj: any) => { + djList.value.forEach((ksdj: any) => { ksdj.djfsd = floatToInt(ksdj.djfsd, fsScale); // 等级最低分 ksdj.djfsg = floatToInt(ksdj.djfsg, fsScale); // 等级最高分 ksdj.djclr = colorMap[ksdj.dfbs] || ''; // 等级颜色 }); + kmDjList.value.forEach((kmdj: any) => { + kmdj.djfsd = floatToInt(kmdj.djfsd, fsScale); // 等级最低分 + kmdj.djfsg = floatToInt(kmdj.djfsg, fsScale); // 等级最高分 + kmdj.djclr = colorMap[kmdj.dfbs] || ''; // 等级颜色 + }); }; -// 单科科目成绩构建 -const buildKmKscj = (km: any, cjList: any) => { - let cj = cjList.find((item: any) => item.kmId === km.id); - if (cj) { - km.ksfs = cj.ksfs; // 记录分数 - const fs = floatToInt(cj.ksfs, fsScale); - // 查询考试等级 - km.ksdj = srcKsdjList.value.find((item: any) => item.djfsd <= fs && item.djfsg >= fs); - } else { - km.ksfs = 0.00; - km.ksdj = { - id: '', - dfbs: '无', - dsms: '无' - } - } - return km; -} - // 构建当前学期所有科目成绩(对象是按照{ 科目id:{ 日期:成绩 } }的结构拼接) const buildXqKmKscjList = () => { const xqKscjMap = new Map(); - const len = srcXqKscjList.value.length; + const len = xqKscjList.value.length; for (let i = 0; i < len; i++) { - const exam = srcXqKscjList.value[i]; + const exam = xqKscjList.value[i]; exam.ksrq = dayjs(exam.kskstime).format('MM-DD'); if (!xqKscjMap.has(exam.kmId)) { xqKscjMap.set(exam.kmId, {}); @@ -440,7 +432,7 @@ const buildXqKmKscjList = () => { const dataMap = new Map(Object.entries(value)); let km = { id: key, - kmmc: srcKmList.value.find((item: any) => item.id === key)?.kmmc, + kmmc: sysKmList.value.find((item: any) => item.id === key)?.kmmc, rqList: Array.from(dataMap.keys()).map(String), fsList: Array.from(dataMap.values()).map(Number) }; @@ -451,27 +443,26 @@ const buildXqKmKscjList = () => { } const rebuildData = () => { - // 根据考试场次,分解对应的科目 - let ksccKmmcList = []; - let ksccKmIdList = getData.kmId.split(","); - let ksfsList = []; + let ksfsList: any[] = []; let totalFs = 0.00; - kscjList.value = []; - for (let i = 0; i < ksccKmIdList.length; i++) { - let kmmc = srcKmList.value.find((item: any) => item.id === ksccKmIdList[i])?.kmmc; - ksccKmmcList.push(kmmc); - let km = { id: ksccKmIdList[i], kmmc: kmmc }; - let kmKscj = buildKmKscj(km, srcKsccKscjList.value); - ksfsList.push(kmKscj.ksfs); - totalFs += kmKscj.ksfs; - kscjList.value.push(kmKscj); - } + ksccKscjList.value = ksccKscjList.value.map((cj: any) => { + ksfsList.push(cj.ksfs); + totalFs += cj.ksfs; + let fs = floatToInt(cj.ksfs, fsScale); + // 查询考试等级 + cj.ksdj = kmDjList.value.find((item: any) => item.kmId == cj.kmId && item.djfsd <= fs && item.djfsg >= fs) || {}; + cj.km = ksccKmList.value.find((item: any) => item.kmId === cj.kmId) || {}; + return cj; + }); // 雷达图数据 - radarData.categories = ksccKmmcList; + radarData.categories = ksccKmList.value.map((item: any) => { + totalKmFs.value += item.kmfs; + return item.kmmc; + }); radarData.series = [{ name: "分数", data: ksfsList }]; // 当前成绩列表 - totalFs = floatToInt(totalFs, fsScale) / ksccKmIdList.length; - curKsdj.value = srcKsdjList.value.find((item: any) => item.djfsd <= totalFs && item.djfsg >= totalFs); + totalFs = floatToInt(totalFs, fsScale); + curKsdj.value = djList.value.find((item: any) => item.djfsd <= totalFs && item.djfsg >= totalFs) || {}; // 构建趋势图所需的成绩列表信息 buildXqKmKscjList(); } @@ -485,10 +476,12 @@ onMounted(async () => { njmcId: getData.njmcId }); if (res.resultCode == 1) { - srcKmList.value = res.result.kmList; - srcKsdjList.value = res.result.ksdjList; - srcKsccKscjList.value = res.result.ksccKscjList; - srcXqKscjList.value = res.result.xqKscjList; + sysKmList.value = res.result.kmList; + ksccKmList.value = res.result.ksccKmList; + kmDjList.value = res.result.kmDjList; + djList.value = res.result.djList; + ksccKscjList.value = res.result.ksccKscjList; + xqKscjList.value = res.result.xqKscjList; showFsFlag.value = res.result.showFs; // 初始化考试等级 initKsdj(); diff --git a/src/pages/base/home/index.vue b/src/pages/base/home/index.vue index 129c70a..9bdadfb 100644 --- a/src/pages/base/home/index.vue +++ b/src/pages/base/home/index.vue @@ -95,11 +95,11 @@ const menuItems = ref([ icon: "/static/base/home/file-search-line.png", path: "/pages/base/grades/list", }, - // { - // title: "在线请假", - // icon: "/static/base/home/draft-line.png", - // path: "/pages/base/leave-request/index", - // }, + { + title: "在线请假", + icon: "/static/base/home/draft-line.png", + path: "/pages/base/leave-request/index", + }, // TODO:需求待协商硬件对接 // { // title: "进出校园", @@ -171,7 +171,6 @@ function handleMenuClick(item: any) { // 切换学生 function switchXs(xs: any) { - curXs = xs; getArticleList(); }