1、修复首页问题
2、调整考试成绩的显示数据源
This commit is contained in:
parent
9f26117137
commit
c6dd259a52
@ -8,7 +8,7 @@
|
||||
|
||||
<view class="color-bar"></view>
|
||||
|
||||
<text class="total-score">共{{kscjList.length}}科(满分{{ kscjList.length * 100 }}分)</text>
|
||||
<text class="total-score">共{{ksccKmList.length}}科(满分{{ totalKmFs }}分)</text>
|
||||
|
||||
<text class="grade">{{ curKsdj.dfbs }}</text>
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
<!-- 选项卡 -->
|
||||
<view class="tabs">
|
||||
<view
|
||||
v-if="kscjList.length > 2"
|
||||
v-if="ksccKmList.length > 2"
|
||||
class="tab-item"
|
||||
:class="{ active: activeTab === 'diagnosis' }"
|
||||
@click="switchTab('diagnosis')"
|
||||
@ -53,14 +53,14 @@
|
||||
|
||||
<!-- 学科成绩视图 -->
|
||||
<view class="score-view flex-1 po-re" v-if="activeTab === 'scores'">
|
||||
<view class="po-ab inset-0 px-15" style="overflow: auto">
|
||||
<view class="po-ab inset-0 px-15" style="overflow: auto" v-if="ksccKscjList.length">
|
||||
<view
|
||||
class="subject-item"
|
||||
v-for="(kscj, index) in kscjList"
|
||||
v-for="(kscj, index) in ksccKscjList"
|
||||
:key="index"
|
||||
>
|
||||
<view class="subject-header">
|
||||
<text class="subject-name">{{ kscj.kmmc }}</text>
|
||||
<text class="subject-name">{{ kscj.km.kmmc }}</text>
|
||||
<text v-if="showFsFlag && kscj.ksdj.id">(分数{{ kscj.ksfs }})</text>
|
||||
</view>
|
||||
<view class="subject-body">
|
||||
@ -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<any>([]);
|
||||
// 后端查询到的考试等级列表
|
||||
const srcKsdjList = ref<any>([]);
|
||||
// 后端查询到的当前学生本次考试成绩列表
|
||||
const srcKsccKscjList = ref<any>([]);
|
||||
// 后端查询到的当前学生本次学期所有成绩列表
|
||||
const srcXqKscjList = ref<any>([]);
|
||||
// 所有科目列表
|
||||
const sysKmList = ref<any>([]);
|
||||
// 当前考试科目列表
|
||||
const ksccKmList = ref<any>([]);
|
||||
// 科目卷面分总数
|
||||
const totalKmFs = ref<number>(0);
|
||||
|
||||
// 科目等级列表
|
||||
const kmDjList = ref<any>([]);
|
||||
// 考试场次等级列表
|
||||
const djList = ref<any>([]);
|
||||
// 考试场次成绩列表
|
||||
const ksccKscjList = ref<any>([]);
|
||||
// 学期成绩
|
||||
const xqKscjList = ref<any>([]);
|
||||
|
||||
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<string, any>();
|
||||
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();
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user