1、修复首页问题

2、调整考试成绩的显示数据源
This commit is contained in:
ywyonui 2025-07-04 20:44:24 +08:00
parent 9f26117137
commit c6dd259a52
2 changed files with 56 additions and 64 deletions

View File

@ -8,7 +8,7 @@
<view class="color-bar"></view> <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> <text class="grade">{{ curKsdj.dfbs }}</text>
@ -28,7 +28,7 @@
<!-- 选项卡 --> <!-- 选项卡 -->
<view class="tabs"> <view class="tabs">
<view <view
v-if="kscjList.length > 2" v-if="ksccKmList.length > 2"
class="tab-item" class="tab-item"
:class="{ active: activeTab === 'diagnosis' }" :class="{ active: activeTab === 'diagnosis' }"
@click="switchTab('diagnosis')" @click="switchTab('diagnosis')"
@ -53,14 +53,14 @@
<!-- 学科成绩视图 --> <!-- 学科成绩视图 -->
<view class="score-view flex-1 po-re" v-if="activeTab === 'scores'"> <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 <view
class="subject-item" class="subject-item"
v-for="(kscj, index) in kscjList" v-for="(kscj, index) in ksccKscjList"
:key="index" :key="index"
> >
<view class="subject-header"> <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> <text v-if="showFsFlag && kscj.ksdj.id">分数{{ kscj.ksfs }}</text>
</view> </view>
<view class="subject-body"> <view class="subject-body">
@ -161,7 +161,6 @@ import dayjs from "dayjs";
import { xsKscjApi, getJzdShowFs } from "@/api/base/server"; import { xsKscjApi, getJzdShowFs } from "@/api/base/server";
import { useUserStore } from "@/store/modules/user"; import { useUserStore } from "@/store/modules/user";
import { useDataStore } from "@/store/modules/data"; import { useDataStore } from "@/store/modules/data";
import { format } from "path";
const { getCurXs } = useUserStore(); const { getCurXs } = useUserStore();
const { getData } = useDataStore(); const { getData } = useDataStore();
dayjs.locale("zh-cn"); dayjs.locale("zh-cn");
@ -219,14 +218,21 @@ let trendData = {
], ],
}; };
// //
const srcKmList = ref<any>([]); const sysKmList = ref<any>([]);
// //
const srcKsdjList = ref<any>([]); const ksccKmList = ref<any>([]);
// //
const srcKsccKscjList = ref<any>([]); const totalKmFs = ref<number>(0);
//
const srcXqKscjList = ref<any>([]); //
const kmDjList = ref<any>([]);
//
const djList = ref<any>([]);
//
const ksccKscjList = ref<any>([]);
//
const xqKscjList = ref<any>([]);
const switchKm = (index : number) => { const switchKm = (index : number) => {
curKmIndex.value = index; curKmIndex.value = index;
@ -392,38 +398,24 @@ const floatToInt = (floatNum: number, scale: number) => {
// //
const initKsdj = () => { const initKsdj = () => {
srcKsdjList.value.forEach((ksdj: any) => { djList.value.forEach((ksdj: any) => {
ksdj.djfsd = floatToInt(ksdj.djfsd, fsScale); // ksdj.djfsd = floatToInt(ksdj.djfsd, fsScale); //
ksdj.djfsg = floatToInt(ksdj.djfsg, fsScale); // ksdj.djfsg = floatToInt(ksdj.djfsg, fsScale); //
ksdj.djclr = colorMap[ksdj.dfbs] || ''; // 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{ } } // { id{ } }
const buildXqKmKscjList = () => { const buildXqKmKscjList = () => {
const xqKscjMap = new Map<string, any>(); const xqKscjMap = new Map<string, any>();
const len = srcXqKscjList.value.length; const len = xqKscjList.value.length;
for (let i = 0; i < len; i++) { 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'); exam.ksrq = dayjs(exam.kskstime).format('MM-DD');
if (!xqKscjMap.has(exam.kmId)) { if (!xqKscjMap.has(exam.kmId)) {
xqKscjMap.set(exam.kmId, {}); xqKscjMap.set(exam.kmId, {});
@ -440,7 +432,7 @@ const buildXqKmKscjList = () => {
const dataMap = new Map(Object.entries(value)); const dataMap = new Map(Object.entries(value));
let km = { let km = {
id: key, 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), rqList: Array.from(dataMap.keys()).map(String),
fsList: Array.from(dataMap.values()).map(Number) fsList: Array.from(dataMap.values()).map(Number)
}; };
@ -451,27 +443,26 @@ const buildXqKmKscjList = () => {
} }
const rebuildData = () => { const rebuildData = () => {
// let ksfsList: any[] = [];
let ksccKmmcList = [];
let ksccKmIdList = getData.kmId.split(",");
let ksfsList = [];
let totalFs = 0.00; let totalFs = 0.00;
kscjList.value = []; ksccKscjList.value = ksccKscjList.value.map((cj: any) => {
for (let i = 0; i < ksccKmIdList.length; i++) { ksfsList.push(cj.ksfs);
let kmmc = srcKmList.value.find((item: any) => item.id === ksccKmIdList[i])?.kmmc; totalFs += cj.ksfs;
ksccKmmcList.push(kmmc); let fs = floatToInt(cj.ksfs, fsScale);
let km = { id: ksccKmIdList[i], kmmc: kmmc }; //
let kmKscj = buildKmKscj(km, srcKsccKscjList.value); cj.ksdj = kmDjList.value.find((item: any) => item.kmId == cj.kmId && item.djfsd <= fs && item.djfsg >= fs) || {};
ksfsList.push(kmKscj.ksfs); cj.km = ksccKmList.value.find((item: any) => item.kmId === cj.kmId) || {};
totalFs += kmKscj.ksfs; return cj;
kscjList.value.push(kmKscj); });
}
// //
radarData.categories = ksccKmmcList; radarData.categories = ksccKmList.value.map((item: any) => {
totalKmFs.value += item.kmfs;
return item.kmmc;
});
radarData.series = [{ name: "分数", data: ksfsList }]; radarData.series = [{ name: "分数", data: ksfsList }];
// //
totalFs = floatToInt(totalFs, fsScale) / ksccKmIdList.length; totalFs = floatToInt(totalFs, fsScale);
curKsdj.value = srcKsdjList.value.find((item: any) => item.djfsd <= totalFs && item.djfsg >= totalFs); curKsdj.value = djList.value.find((item: any) => item.djfsd <= totalFs && item.djfsg >= totalFs) || {};
// //
buildXqKmKscjList(); buildXqKmKscjList();
} }
@ -485,10 +476,12 @@ onMounted(async () => {
njmcId: getData.njmcId njmcId: getData.njmcId
}); });
if (res.resultCode == 1) { if (res.resultCode == 1) {
srcKmList.value = res.result.kmList; sysKmList.value = res.result.kmList;
srcKsdjList.value = res.result.ksdjList; ksccKmList.value = res.result.ksccKmList;
srcKsccKscjList.value = res.result.ksccKscjList; kmDjList.value = res.result.kmDjList;
srcXqKscjList.value = res.result.xqKscjList; djList.value = res.result.djList;
ksccKscjList.value = res.result.ksccKscjList;
xqKscjList.value = res.result.xqKscjList;
showFsFlag.value = res.result.showFs; showFsFlag.value = res.result.showFs;
// //
initKsdj(); initKsdj();

View File

@ -95,11 +95,11 @@ const menuItems = ref([
icon: "/static/base/home/file-search-line.png", icon: "/static/base/home/file-search-line.png",
path: "/pages/base/grades/list", path: "/pages/base/grades/list",
}, },
// { {
// title: "线", title: "在线请假",
// icon: "/static/base/home/draft-line.png", icon: "/static/base/home/draft-line.png",
// path: "/pages/base/leave-request/index", path: "/pages/base/leave-request/index",
// }, },
// TODO: // TODO:
// { // {
// title: "", // title: "",
@ -171,7 +171,6 @@ function handleMenuClick(item: any) {
// //
function switchXs(xs: any) { function switchXs(xs: any) {
curXs = xs;
getArticleList(); getArticleList();
} }