feat(t10-admin): 管理员体系前端——应用设置双 tab+单表单管理员+选人组件移植
build / build (push) Successful in 3m8s

- AppSettings.vue 应用设置页(基础/字典两 tab);修复 P86:Tabs 写 :value 而受控 prop 是 modelValue,致 ?tab=dicts 深链静默失效,改后深链实拍生效
- UserCheckModal.vue 自 notice 移植(view-ui-plus+ztree,sources 注入式数据源);public/libs 收录 jquery+ztree 本地件(index.html 引用)
- api/module/admin.ts + mock/adminapi.ts + types/admin.ts;AdminListPanel/FormAdminModal 组件
- routes/menuNav/menuRoute/modulePerms 适配管理员菜单与权限位;tree-icon 图标资源
This commit is contained in:
chenxing
2026-10-15 20:25:39 +08:00
parent 14d45f7e3c
commit d8f1a1fbfa
30 changed files with 1377 additions and 33 deletions
+16 -8
View File
@@ -8,10 +8,10 @@ import type { RouteRecordRaw } from "vue-router";
* 两处对齐约束:
* ① path 必须与 UserBase app_module.path 逐字一致(手册 §2.2 表;layout 优先按 path
* 匹配菜单高亮与面包屑);
* ② <b>本表刻意不写 meta.modId</b>——规范 §4「modId 全量对齐后端 /base/GetUserMod,禁臆造」:
* 本应用模块行的 customId 除权限锚点 fc:scope:all 外均未配(手册 §2.2 表为「—」),
* 后端 resolveModId 因此回退 app_module 主键 id,该值跨环境不稳定,写进路由必然失配。
* 详情页需要父级高亮时用 meta.parentId(同 Notice/flow-center 范式)。
* ② <b>本表刻意不写 meta.modId</b>——规范 §4「modId 全量对齐后端 /base/GetUserMod,禁臆造」。
* 手册 §2.2 v1.5 起中心五行的 customId 是显式数字(200~204),但把号段抄进路由就等于和
* UserBase 侧的配置耦死(改号即失配),而 layout 的高亮与面包屑本来就按 path 匹配
* (utils/menuRoute.ts 的 ROUTE_PATHS)。详情页需要父级高亮时用 meta.parentPath。
*
* 页面本体分任务落地:管理面/设计器 T6、填报页 T7、数据与统计与快应用 T8;
* 本轮 T5 只交付壳与四形态占位页,占位页不含领域逻辑。
@@ -32,7 +32,7 @@ const routes: RouteRecordRaw[] = [
meta: { title: "表单设计" },
},
{
// 设计器子页面:UserBase 侧没有这条模块行(手册 §2.2 只登记四个管理行 + 我的填写 + 权限锚点),
// 设计器子页面:UserBase 侧没有这条模块行(手册 §2.2 v1.5 只有五行:表单设计/数据管理/统计/应用设置/我的填写),
// 所以它不进左导航;高亮与面包屑由 layout 按 meta.parentPath 挂到「表单设计」行下。
// uuid 走 query 而非 path 参数,menuRoute 的 ROUTE_PATHS 才能把它当静态 path 收进去。
path: "/admin/forms/designer",
@@ -62,10 +62,18 @@ const routes: RouteRecordRaw[] = [
meta: { title: "统计" },
},
{
// 应用设置(手册 §2.2 v1.5 的行;页内两 tab:角色设置 / 字典管理,?tab= 深链)。
// tab 不占模块行、不进导航(同设计器子页的口径),高亮与面包屑就挂本行。
path: "/admin/app",
name: "fc_admin_app",
component: () => import("@/views/admin/AppSettings.vue"),
meta: { title: "应用设置" },
},
{
// 旧字典管理地址(六行版模块行时代的 path):只保留重定向,不再单独成页(T10 方案 §6.1)。
// 外部残留链接落到这里=进应用设置的字典 tab,避免出现"两条都能进、只有一条有守卫"的口径。
path: "/admin/dicts",
name: "fc_admin_dicts",
component: () => import("@/views/admin/Dicts.vue"),
meta: { title: "字典管理" },
redirect: "/admin/app?tab=dicts",
},
/* ---------------- 填报页(分享/门户/快应用直落,code 寻址) ---------------- */
{