import type { RouteRecordRaw } from "vue-router"; /** * 流程中心路由。菜单自 2026-09-15 起改由 UserBase app_module 下发(与 Notice/svc-hall/事项库一致, * 层级经 BoaModule.children 承载),本表仍是路由的唯一来源,两处需保持对齐: * ① path 必须与 app_module.path 逐字一致(layout 优先按 path 匹配菜单高亮,modId 仅兜底); * ② meta.modId = 对应 app_module.custom_id(后端 FlowBaseController 取 custom_id 作 modId)。 * 数据/授权维护见 UserBase 侧「模块管理」与 flow-center接入UserBase菜单.sql。 * 办理页 /task/:taskId 为 UserMsg jumpPath 落地页(不挂菜单)。 *
* 详情/深链页(不挂菜单)通过 meta.parentId 关联父级菜单(UserBase 同款范式):左侧菜单保持 * 父级高亮、面包屑补全"父页>本页"。同一详情页可能被多个列表进入(如办件详情既可从"我提交的" * 也可从"办件记录"),此时列表页跳转带 ?pid=<父菜单modId> 动态覆盖 meta.parentId 静态默认。 */ const routes: RouteRecordRaw[] = [ { path: "/workbench", name: "flow_workbench", component: () => import("@/views/flow/Workbench.vue"), meta: { title: "工作台", modId: 100 }, }, { path: "/task/:taskId", name: "flow_task_handle", component: () => import("@/views/flow/TaskHandle.vue"), // 父级默认指向我的待办所在的"工作台"(外部消息落地页无 pid,走静态默认) meta: { title: "任务办理", parentId: 100 }, }, { path: "/instance/:instanceId", name: "flow_instance_detail", component: () => import("@/views/flow/InstanceDetail.vue"), meta: { title: "办件详情", parentId: 102 }, }, { // 流程示意图深链页(不挂菜单,同 /task/:taskId 模式);跨应用入口 window.open 整页跳转 path: "/diagram", name: "flow_diagram", component: () => import("@/views/flow/FlowDiagram.vue"), meta: { title: "流程示意图", parentId: 103 }, }, { path: "/admin/instances", name: "flow_admin_instances", component: () => import("@/views/flow/admin/Instances.vue"), meta: { title: "办件记录", modId: 102 }, }, { path: "/admin/defs", name: "flow_admin_defs", component: () => import("@/views/flow/admin/Defs.vue"), meta: { title: "流程定义", modId: 103 }, }, { // 流程编辑器(钉钉式卡片流;深链页不挂菜单,同 /diagram 模式)。 // query:空=新建;id=编辑草稿;id+baseGuid=升版本(载入该版内容为底稿) path: "/admin/defs/editor", name: "flow_def_editor", component: () => import("@/views/flow/admin/def-editor/index.vue"), meta: { title: "流程编辑器", parentId: 103 }, }, { // 回调管理(原 104 办理人映射已于 2026-10-10 下线,由 应用设置-科室管理 承载) path: "/admin/callbacks", name: "flow_admin_callbacks", component: () => import("@/views/flow/admin/Callbacks.vue"), meta: { title: "回调管理", modId: 105 }, }, { // 条件路由维护(flw_router 注册表,2026-09-24):菜单需在 UserBase 侧配置同 path 的 app_module path: "/admin/routers", name: "flow_admin_routers", component: () => import("@/views/flow/admin/Routers.vue"), meta: { title: "条件路由", modId: 106 }, }, { // 应用设置(2026-10-10 四议题):tab1 应用管理(flw_app 白名单,学校池同步); // tab2 科室管理(Part E 填充)。菜单需在 UserBase 侧配置同 path 的 app_module(custom_id=107) path: "/admin/app-setting", name: "flow_admin_app_setting", component: () => import("@/views/flow/admin/AppSetting.vue"), meta: { title: "应用设置", modId: 107 }, }, { // 接入向导(2026-10-15 议题二 P1):五步引导 + 配置生成器(源头消灭配置形态静默断点)。 // 与「应用设置-对接健康度」互补:向导管接入时一次引导,健康度管对接后持续体检。 // 菜单需在 UserBase 侧配置同 path 的 app_module(custom_id=108) path: "/admin/onboarding", name: "flow_admin_onboarding", component: () => import("@/views/flow/admin/Onboarding.vue"), meta: { title: "接入向导", modId: 108 }, }, { // 办件进度嵌入页(iframe 免签嵌入,App.vue 对 /embed/* 前缀旁路 CAS 与 layout): // 不挂菜单、无 parentId(子应用 Drawer 内打开,非管理面导航);query.token 必填 path: "/embed/instance", name: "flow_embed_instance", component: () => import("@/views/flow/EmbedInstance.vue"), meta: { title: "办件进度" }, }, { path: "/", redirect: "/workbench" }, // 兜底:UserMsg jumpPath / bizUrl 等外部深链若落到未登记路由,避免 no-match 静默空白页 { path: "/:pathMatch(.*)*", redirect: "/workbench" }, ]; export default routes;