fix: 老师数据看板

This commit is contained in:
李梦 2026-02-12 19:10:18 +08:00
parent da364bc97d
commit 6fda3ac190
4 changed files with 849 additions and 246 deletions

4
.env
View File

@ -1,5 +1,5 @@
#VITE_HOST = http://192.168.0.114:9053
VITE_HOST = http://43.136.52.196:9053
#VITE_HOST= https://ai.xuexiaole.com
#VITE_HOST = http://43.136.52.196:9053
VITE_HOST= https://ai.xuexiaole.com
VITE_OSS_HOST = https://xxl-1313840333.cos.ap-guangzhou.myqcloud.com
VITE_WS_URL = wss://test.qiaoying.vip/wss/websocket

View File

@ -108,6 +108,67 @@ export interface ClassHomeworkReportData {
studentList: ClassHomeworkStudentItem[];
}
// ---------- AI 批改效率总览 school/report/aiCorrectionEfficiency/overview ----------
export interface TopErrorTitle {
titleId?: number | string;
titleContent?: string;
subjectId?: number;
subjectName?: string;
errorCount?: number;
errorRate?: number;
[key: string]: any;
}
export interface AiCorrectionOverview {
classId: number | string;
className: string;
aiPaperCount: number;
aiTitleCount: number;
teacherSaveTimeMinutes: number;
excellentCount: number;
excellentRate: number;
goodCount: number;
goodRate: number;
passCount: number;
passRate: number;
unsubmittedCount: number;
unsubmittedRate: number;
topErrorTitles: TopErrorTitle[];
}
/** AI 批改效率总览GET 请求form 风格 query */
export const getAiCorrectionOverview = (params: {
classId: string | number;
subjectIds?: number[];
startTime?: string;
endTime?: string;
schoolId?: string;
}) => {
const formEncode = (v: string) => encodeURIComponent(v).replace(/%20/g, '+');
const query: string[] = [];
query.push('classId=' + formEncode(String(params.classId)));
if (params.schoolId) {
query.push('schoolId=' + formEncode(String(params.schoolId)));
}
if (params.subjectIds && params.subjectIds.length > 0) {
params.subjectIds.forEach((id) => {
query.push('subjectIds=' + formEncode(String(id)));
});
}
if (params.startTime != null && params.startTime !== '' && String(params.startTime).trim() !== '') {
const st = String(params.startTime).trim();
query.push('startTime=' + formEncode(st.includes(' ') ? st : st + ' 00:00:00'));
}
if (params.endTime != null && params.endTime !== '' && String(params.endTime).trim() !== '') {
const et = String(params.endTime).trim();
query.push('endTime=' + formEncode(et.includes(' ') ? et : et + ' 23:59:59'));
}
return request({
url: '/school/report/aiCorrectionEfficiency/overview?' + query.join('&'),
method: 'GET',
});
};
/** 班级作业报表GET 请求,参数以 form 表单风格放在 querysubjectIds 为多个同名参数) */
export const getClassHomeworkReport = (params: {
classId: string | number;

View File

@ -103,7 +103,7 @@ import { getClassListByTeacher, getSubjectListByClassId } from '@/api/teacher';
import { teacher } from '@/store/teacher';
import { storeToRefs } from 'pinia';
const teacherStore = teacher();
const { schoolId } = storeToRefs(teacherStore);
const { schoolId, teacherInfo } = storeToRefs(teacherStore);
// +
const topPaddingRightRpx = ref(0);
@ -167,12 +167,20 @@ watch(() => selectedClassId.value, async (newClassId) => {
//
if (Array.isArray(data)) {
subjectList.value = data.map((item: any) => ({
value: item.subjectId ?? item.id ?? item.value,
value: Number(item.subjectId ?? item.id ?? item.value),
label: item.subjectName ?? item.name ?? item.label ?? '',
}));
} else {
subjectList.value = [];
}
// getLoginUser subjectId
const teacherSubjectId = teacherInfo.value?.subjectId;
if (teacherSubjectId != null && teacherSubjectId !== '') {
const tid = Number(teacherSubjectId);
if (!isNaN(tid) && subjectList.value.some((s) => s.value === tid)) {
selectedSubjectIds.value = [tid];
}
}
} catch (e) {
console.error('获取学科列表失败', e);
subjectList.value = [];

File diff suppressed because it is too large Load Diff