commit
build / build (push) Failing after 4m11s

This commit is contained in:
wanghu
2026-10-14 08:29:44 +08:00
parent 15762faeac
commit 9d387692b4
17 changed files with 1316 additions and 361 deletions
+49 -9
View File
@@ -4,14 +4,16 @@ import conf from "@/assets/config/host.config";
import type {
ClassTreeNode,
EffectiveSettingVo,
GradeSettingVo,
ModNode,
MyClassVo,
MyClassesVo,
MyTimetableVo,
NowYearTermVo,
SettingGetVo,
SubjectVo,
TemplateSaveRequest,
TimeSettingVo,
TimetableOverviewVo,
TimetableSaveRequest,
TimetableVo,
UpFileResultVo,
@@ -27,8 +29,6 @@ import type {
*
* 约定:
* - postJSON 用于 @RequestBody 接口;postForm 用于 @RequestParam 接口(表单提交)。
* - postForm 同时把参数拼到 URL query:后端 @RequestParam 都收得到,且本地
* vite-plugin-mock 不解析 urlencoded body,靠 query 才能拿到参数(不影响线上)。
*/
const BASE = "/api/base";
@@ -56,13 +56,11 @@ function postJSON<T = any>(url: string, data?: Record<string, any> | any[]): Met
function postForm<T = any>(url: string, data?: Record<string, any>): Method<T> {
const pairs = data ? Object.entries(data).filter(([, v]) => v !== undefined && v !== null) : [];
const form = pairs.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`).join("&");
// B1 修复:mock 只解析 query,故仅 mock 模式把参数拼进 URL;真后端只发 body,
// 否则 Spring @RequestParam 会把 query 与 body 同名值以逗号合并(单值变 "X,X"、数字变 "1,1" 直接 500)。
const fullUrl = conf.isMock && form ? `${url}${url.includes("?") ? "&" : "?"}${form}` : url;
// 只发 body,不拼 URL query:Spring @RequestParam 会把 query 与 body 同名值以逗号合并(单值变 "X,X" 直接 500)
return new Method<T>(
"POST",
alovaInstance,
fullUrl,
url,
{ headers: { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" } },
form || undefined
);
@@ -83,6 +81,26 @@ export function fileUploadUrl(): string {
return `${conf.serviceHost}${FILE}/Upload`;
}
/** 年级照片课表打包下载地址(ZIP,条目按年级+班级名命名;前端 fetch 取 Blob 后落盘) */
export function gradePhotoZipUrl(gradeName: string): string {
return `${conf.serviceHost}${TIMETABLE}/DownloadGradePhotos?gradeName=${encodeURIComponent(gradeName)}`;
}
/** 课表导入模板下载地址(按班级年级生效节次模板生成 xlsx) */
export function timetableImportTemplateUrl(classId: number): string {
return `${conf.serviceHost}${TIMETABLE}/ImportTemplate?classId=${classId}`;
}
/** 班级电子课表导出地址(xlsx,当前学年学期) */
export function timetableExportUrl(classId: number): string {
return `${conf.serviceHost}${TIMETABLE}/Export?classId=${classId}`;
}
/** 课表导入上传地址(FormData:classId + file,整表替换该班当前课表) */
export function timetableImportUrl(): string {
return `${conf.serviceHost}${TIMETABLE}/Import`;
}
class BaseApi {
// ========== 用户信息 & 模块权限 ==========
/** 获取当前登录用户信息 */
@@ -140,10 +158,16 @@ class SyllabusApi {
return get<NowYearTermVo>(`${TIMETABLE}/NowYearTerm`);
}
// ========== 排课情况 ==========
/** 全校排课情况汇总(每班电子版 / 照片版编排状态,按年级→班级排序) */
overview() {
return get<TimetableOverviewVo[]>(`${TIMETABLE}/Overview`);
}
// ========== 我的课表(按角色过滤的只读视图) ==========
/** 可查看班级列表(管理员/校领导=全部;班主任=所带;任教=任教班级) */
/** 可查看班级列表 + 身份标识(管理员/班主任/任教老师,前端按身份切换视图) */
myClasses() {
return get<MyClassVo[]>(`${TIMETABLE}/MyClasses`);
return get<MyClassesVo>(`${TIMETABLE}/MyClasses`);
}
/** 班级课表(权限校验;任教老师只返回任教科目格) */
myGet(classId: number) {
@@ -171,10 +195,26 @@ class SyllabusApi {
deleteTemplate(id: number) {
return postForm<void>(`${SETTING}/DeleteTemplate`, { id });
}
/** 保存节次模板的「显示全部/只显示节次」偏好(绑定模板记忆,预览课表/我的课表同随此值) */
saveTemplateShowBreakRows(id: number, showBreakRows: boolean) {
return postForm<void>(`${SETTING}/SaveTemplateShowBreakRows`, { id, showBreakRows });
}
/** 保存节次模板的「节次名称 显示/隐藏」偏好(绑定模板记忆,预览课表/我的课表同随此值) */
saveTemplateShowPeriodName(id: number, showPeriodName: boolean) {
return postForm<void>(`${SETTING}/SaveTemplateShowPeriodName`, { id, showPeriodName });
}
/** 课表编辑页生效设置:时间边界 + 当前学期下指定年级启用模板的行(term 1=上学期 2=下学期) */
effectiveForGrade(gradeName: string, term?: number) {
return get<EffectiveSettingVo>(`${SETTING}/ForGrade`, { gradeName, term });
}
/** 年级设置列表(启用 + 使用电子版/照片版;未配置的年级默认全启用) */
gradeSettings() {
return get<GradeSettingVo[]>(`${SETTING}/Grades`);
}
/** 批量保存年级设置(按年级名 upsert;作用于「我的课表」电子/照片视图切换) */
saveGradeSettings(data: GradeSettingVo[]) {
return postJSON<void>(`${SETTING}/SaveGrades`, data);
}
// ========== 附件 ==========
fileDownUrl = fileDownUrl;