feat(M5): P0 契约层 + 审批/应用设置下线

- types/homeworkV2.ts:V2 全量类型契约(五态/枚举/矩阵/版本/通知)
- teacherHomework/studentHomework/notification 三客户端(28 端点)
- §6 审批功能下线:删 ApprovalList/ApprovalSetting/ApprovalFlowEditor,
  types/api/menu/menuRoute/App/mock 同步清理,DROPPED_MOD_IDS={5,6}
- §7 应用设置下线:删 HomeworkSetting/TypeSetBox/UserCheckInput,
  SettingApi 与 dict/contacts 死代码清理,DROPPED_MOD_IDS 扩 {21}
- 新增 V2 组件:TeacherHomeworks(已发布+草稿箱)、ReviewModal(批阅弹窗)、
  AttachmentUpload(附件上传)——尚未挂路由,页面切换随后续阶段
This commit is contained in:
wanghu
2026-09-16 02:29:32 +08:00
parent d75aab8d07
commit e6639f7925
40 changed files with 7734 additions and 1535 deletions
+4 -5
View File
@@ -4,7 +4,7 @@ import layout from "./components/layout.vue";
import { useRouter } from "vue-router";
import config from "@/assets/config/host.config";
import { baseApi } from "@/api/module/homework";
import { resolveMenuPage } from "@/utils/menuRoute";
import { resolveMenuPage, dropDroppedModules } from "@/utils/menuRoute";
import { Message } from "view-ui-plus";
const router = useRouter();
@@ -19,9 +19,8 @@ const layoutData = reactive({
isAlone: false,
});
function roleOfPath(p: string): "teacher" | "student" | "parent" {
function roleOfPath(p: string): "teacher" | "student" {
if (p.startsWith("/stu")) return "student";
if (p.startsWith("/par")) return "parent";
return "teacher";
}
@@ -38,8 +37,8 @@ async function initShell() {
const user: any = await baseApi.getUserInfo().send();
const { id, name, profilePicture } = user || {};
// 2. 获取当前用户已授权的模块列表
const modList: any[] = await baseApi.getUserMod().send();
// 2. 获取当前用户已授权的模块列表(剔除已下线的审批模块,避免死菜单)
const modList: any[] = dropDroppedModules(await baseApi.getUserMod().send());
layoutData.userInfo = { id, name: name || "管理员", avatar: profilePicture || "" };
layoutData.modList = modList || [];