P76(T8 验收遗留):快应用上下文的导出按钮此前恒按中心会话树判"导出"锚点 (Data.vue exportable 读 store.modules),锚点判定不生效(fail-closed 方向, 有授权也不画按钮)。本轮把 AppContext 拉到的**目标应用树**经 modules prop 下传, Data.vue 的权限判据改为 permsTree(app=应用树 / center=会话树),canExport 纯函数不动。 Stats.vue 未接:本页无锚点判定也无 store.modules 引用,加 prop 是死代码(差异记 T9 报告)。 P77(T8 验收遗留):应用上下文内的"详情"不再跳回中心路由 /admin/data/detail。 形态二选一取**子路由 /app/:appCode/data/detail**(同一个 AnswerDetail.vue): 地址保留 uuid 可深链/刷新、详情页只有一份实现、back() 本就按 app 回应用数据视图, 写 parentPath 反而造假(menuRoute 的 ROUTE_PATHS 只收静态 path,应用段导航在页内轻导航)。 goDetail 按 props.context 分派;back() 改读 route.params.appCode,撤掉 query.app 双轨。 观察项①(T8 验收记档):确认跨触底页勾选**会被清空**——view-ui-plus 的 data 监听器 用 makeObjBaseData 重建 objData,_isChecked 只认行上的 _checked(点选不回写行), 整组替换后勾选视觉与 getSelection 归零而"已选 N 条"仍累计。新增 withSelectionState() 在 reload/loadMore 两条装载路径按 selected 回填 _checked,selected 为唯一事实源。 演练桩(本地件,dev:mock 生效):baseapi 增 fc-drill 快应用模块树(方案 §6.2 五行含 导入/导出两个 path 空锚点),dataapi 增 /api/form/resolve 桩(快应用数据视图唯一的 合规取数路径是 code→resolve→uuid,契约 §1)。其余外指 appCode 仍旧返回空树(P3 口径)。 门禁:npm run build ✓ / npm run type-check 0 错 ✓; t1~t9 全量复跑:t5 13/0/1、t6 22/0/2、t7 12/0/0、t8 21/0/1、t9 12/0/1 (skip 均为 headless Edge --dump-dom 吐 0 字节的 P73 环境事实,不假通过)。 本提交含 T6~T8 三轮堆在工作区的既有改动(沿 T8 验收 §5 推送分层)。
This commit is contained in:
+46
-1
@@ -31,12 +31,30 @@ const routes: RouteRecordRaw[] = [
|
||||
component: () => import("@/views/admin/Forms.vue"),
|
||||
meta: { title: "表单设计" },
|
||||
},
|
||||
{
|
||||
// 设计器子页面:UserBase 侧没有这条模块行(手册 §2.2 只登记四个管理行 + 我的填写 + 权限锚点),
|
||||
// 所以它不进左导航;高亮与面包屑由 layout 按 meta.parentPath 挂到「表单设计」行下。
|
||||
// uuid 走 query 而非 path 参数,menuRoute 的 ROUTE_PATHS 才能把它当静态 path 收进去。
|
||||
path: "/admin/forms/designer",
|
||||
name: "fc_admin_form_designer",
|
||||
component: () => import("@/views/admin/FormDesigner.vue"),
|
||||
meta: { title: "表单设计器", parentPath: "/admin/forms" },
|
||||
},
|
||||
{
|
||||
path: "/admin/data",
|
||||
name: "fc_admin_data",
|
||||
component: () => import("@/views/admin/Data.vue"),
|
||||
meta: { title: "数据管理" },
|
||||
},
|
||||
{
|
||||
// 答卷详情:数据面身份只用 uuid(V5),所以 answerId 走 query 而非 path 参数
|
||||
// (同设计器先例——带参 path 不被 menuRoute 的 ROUTE_PATHS 收,且 uuid 形态固定 32 位,
|
||||
// 放 path 里除了暴露在地址段没有任何好处)。不进左导航,面包屑挂「数据管理」行下。
|
||||
path: "/admin/data/detail",
|
||||
name: "fc_admin_data_detail",
|
||||
component: () => import("@/views/admin/AnswerDetail.vue"),
|
||||
meta: { title: "答卷详情", parentPath: "/admin/data" },
|
||||
},
|
||||
{
|
||||
path: "/admin/stats",
|
||||
name: "fc_admin_stats",
|
||||
@@ -69,13 +87,40 @@ const routes: RouteRecordRaw[] = [
|
||||
component: () => import("@/views/AppContext.vue"),
|
||||
meta: { title: "应用表单" },
|
||||
},
|
||||
{
|
||||
// P77:快应用上下文内的答卷详情走应用自己的路径段,不把用户弹出应用壳
|
||||
// (T8 现状是恒推 /admin/data/detail——中心管理端那条路径)。
|
||||
// 形态二选一的取舍见 docs/T9-report.md:选子路由而非内嵌 Modal——地址里保留 uuid 可深链/刷新,
|
||||
// 且详情页(钉版渲染 + 三态空值 + 已删字段降级)只有一份实现。
|
||||
// 带参 path 不进 menuRoute 的 ROUTE_PATHS(该表按"无 : 的静态 path"收集),故不写 parentPath。
|
||||
path: "/app/:appCode/data/detail",
|
||||
name: "fc_app_data_detail",
|
||||
component: () => import("@/views/admin/AnswerDetail.vue"),
|
||||
meta: { title: "答卷详情" },
|
||||
},
|
||||
/* ---------------- 我的填写(全员授权行) ---------------- */
|
||||
// 两视图=两个独立入口,不做 query 参数分支(方案 §6.3「鉴权分支容易写漏」、V18):
|
||||
// /my/submit = 我提交的(submitter=会话用户);/my/about = 关于我的(subject=会话用户)。
|
||||
// /my 为兼容模块行 path(手册 §2.2 只登记了 /my 一行)保留,落在同一容器上,
|
||||
// 由容器内的 Tab 在两个入口间切换(Tab 是 UI 导航,不是接口参数分支)。
|
||||
{
|
||||
path: "/my",
|
||||
name: "fc_my_fill",
|
||||
name: "fc_my",
|
||||
component: () => import("@/views/My.vue"),
|
||||
meta: { title: "我的填写" },
|
||||
},
|
||||
{
|
||||
path: "/my/submit",
|
||||
name: "fc_my_submit",
|
||||
component: () => import("@/views/My.vue"),
|
||||
meta: { title: "我提交的", parentPath: "/my" },
|
||||
},
|
||||
{
|
||||
path: "/my/about",
|
||||
name: "fc_my_about",
|
||||
component: () => import("@/views/My.vue"),
|
||||
meta: { title: "关于我的", parentPath: "/my" },
|
||||
},
|
||||
// 兜底:外部深链/残留配置落到未登记路由时不白屏,回入口由壳决定首个可用页
|
||||
{ path: "/:pathMatch(.*)*", redirect: "/" },
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user