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 @@
-
+
@@ -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();
}