feat(shell): T5 前端·壳与管理端框架——fork notice/front 基线并剥领域
build / build (push) Successful in 3m10s

- A 类主题 loader 原文接入 + env-config 引导 + vite /static 与 /api(8086) 代理(P6/P11)
- GetUserMod 左导航:utils/menuNav.ts 单点实现 path 空锚点跳过、分组收敛、icon 兜底、面包屑基线(对齐 Notice 13afb22 refined 版)
- alova 封装 + api/module/base.ts(getUserMod 可选 appCode,P2 定名;H4 前空树不回落,P3)
- 路由骨架一 SPA 四形态:/admin/{forms,data,stats,dicts}、/f/:code、/app/:appCode/*、/my;self!=top 剥壳(方案 §3.3)
- 规范件落位:tableActions.ts(UserBase 同构源,正文 MD5 不变)、TablePageAlovaNew + useElementHeight、page-wrapper yh-fill 骨架
- view-ui-plus 精确锁 1.3.24;本地零 layout.css/icons.css;avatar 两件由 YschTheme sync 下发
- 剥除:notice 领域 views/api/mock/menu 兜底、alova-vant(mobiapi)、ztree+jquery 与重依赖(按需回补,见 service/docs/T5-report.md 问题单 P52)
This commit is contained in:
chenxing
2026-10-14 20:35:41 +08:00
parent cebc32fbef
commit fdd9aaaa3b
81 changed files with 12410 additions and 1473 deletions
+117
View File
@@ -0,0 +1,117 @@
/**
* 表单中心本地 Mock(vite-plugin-mock,仅 `npm run dev:mock` 即 --mode mock 生效)。
*
* 背景与授权口径:执行手册 §5 P1 的降级取证先例——本地 CAS/UserBase 不可用时,
* 以本文件的模块树验证「壳渲染 + 左导航 + path 空节点跳过」,并把结论记入问题单。
*
* 形状严格对齐后端 FormBaseController.toFrontendTree 的下发字段
* (id/modId/name/parentId/page/level/icon/orderNumber/usable/children,信封 {code,msg,data}),
* 模块行取执行手册 §2.2 的建议表(中心管理员四模块行 + 我的填写 + 数据全量权限锚点行)。
*/
import type { IModule } from "@/types/Basics";
const ok = (data: any) => ({ code: 0, msg: "", data });
/** 中心应用(form-center)自身的模块树 */
const OWN_MODULES: IModule[] = [
{
id: 9101,
modId: 9101,
name: "表单设计",
parentId: 0,
page: "/admin/forms",
level: 1,
icon: "word",
orderNumber: 1,
usable: true,
children: []
},
{
id: 9102,
modId: 9102,
name: "数据管理",
parentId: 0,
page: "/admin/data",
level: 1,
icon: "category",
orderNumber: 2,
usable: true,
children: []
},
{
id: 9103,
modId: 9103,
name: "统计",
parentId: 0,
page: "/admin/stats",
level: 1,
icon: "tongji",
orderNumber: 3,
usable: true,
children: []
},
{
id: 9104,
modId: 9104,
name: "字典管理",
parentId: 0,
page: "/admin/dicts",
level: 1,
icon: "zidingyi",
orderNumber: 4,
usable: true,
children: []
},
{
id: 9105,
modId: 9105,
name: "我的填写",
parentId: 0,
page: "/my",
level: 1,
// 平台未配置图标 → layout 兜底 icon-list(规范 §4 / Notice 13afb22)
icon: "",
orderNumber: 5,
usable: true,
children: []
},
{
// path 空行 = 纯权限锚点(customId=fc:scope:all):后端按授权集合扫描消费,
// 前端导航渲染必须跳过(手册 §2.2)。modId 由后端 resolveModId 回退主键 id(非数字 customId)
id: 9106,
modId: 9106,
name: "数据全量",
parentId: 0,
page: "",
level: 1,
icon: "",
orderNumber: 6,
usable: true,
children: []
}
];
export default [
{
url: "/api/base/GetUserInfo",
method: "get",
response: () =>
ok({
id: 186532,
account: "mockadmin",
name: "Mock 管理员",
profilePicture: "",
school: { id: 3260, name: "云海附属中学" }
})
},
{
url: "/api/base/GetUserMod",
method: "get",
// 与后端同一条判定:appCode 指向别的应用 → 空树(H4 未上线口径,P3:前端不得回落本应用树)
response: ({ query }: any) => {
const target = String(query?.appCode ?? "").trim();
if (target && target.toLowerCase() !== "form-center") return ok([]);
return ok(OWN_MODULES);
}
}
];