| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- -- =============================================================================
- -- S6-IPQC-BILL-PAGE-1 · 「IPQC 检查单」独立 Tab + 独立详情页菜单
- --
- -- 背景:S6 的过程检验单(S6_PROCESS_INSPECTION 链,源 ado_s6_process_inspection_bill)
- -- 此前没有任何菜单入口 —— 用户必须先进「生产指令单列表」,再从行操作打开一个 Drawer
- -- 才能完成录入/提交/审核/处置。本脚本为它建立独立入口,与 S7 FQC 的信息架构对齐。
- --
- -- 两条同名链务必区分(改错会白做):
- -- 本脚本服务的是 S6_PROCESS_INSPECTION(工序级、有 S0 检规快照、逐样本实测);
- -- 既有菜单 1329016020001「过程检验单列表」是另一条 IPQC_INSPECTION 链(源 qms_gcjyd、
- -- 单头级汇总),本脚本完全不动它。
- --
- -- 路由形态沿用 S5 IQC(1.0.535.sql)的修正版,而不是 S7 FQC(1.0.382.sql):
- -- * 详情页用 path param /:id,不用 ?id= —— 路径即状态,便于直链与刷新;
- -- * 详情页 IsKeepAlive = 0。它是强状态页面(可录入 → 只读 → 退回 → 可录入),
- -- KeepAlive 会缓存旧的 canEdit / flowState / 项目结果。S7 那条设成 1,是已知问题。
- -- * 列表页 IsKeepAlive = 1,从详情返回时保留分页与查询条件(页面自身 onActivated 重新取数)。
- --
- -- 授权口径同样沿用 S5:租户可见性与角色授权都**子查询继承**同目录入口菜单
- -- 1329016020001 的既有授权面(实测 10 个租户 / 23 个角色),不硬编码 RoleId、
- -- 不新建权限码(Permission 留 NULL,与 S6 其余菜单一致)。
- -- 这样后续给该目录加/减授权时,这两个新菜单自动跟随,不会漏配。
- --
- -- Id 生成沿用 1.0.535.sql 的 `MAX(Id) + ROW_NUMBER()`,且**一段只处理一个 MenuId** ——
- -- 两个菜单不合并成一条 CROSS JOIN。合并写法需要在 Id 里同时编码「菜单序」与「租户序」,
- -- 极易写出对同一菜单所有租户取同值的表达式而撞主键(本脚本第一版就是这么挂的)。
- --
- -- 幂等:每段 INSERT 都带 NOT EXISTS;重复执行 0 变更。
- -- =============================================================================
- -- ── 1. 列表页菜单(可见 Tab)──
- INSERT INTO SysMenu (Id, Pid, Type, Name, Path, Component, Title, Icon, IsIframe, IsHide, IsKeepAlive, IsAffix, OrderNo, Status, Remark, CreateTime)
- SELECT 1329016020002, 1322000000020, 2, 'aidopS6IpqcBillList',
- '/aidop/s6/process-quality/ipqc-bill-list',
- '/aidop/s6/process-quality/ipqcBillList',
- 'IPQC 检查单', 'ele-Tickets',
- 0, 0, 1, 0, 20, 1, 'S6-IPQC-BILL-PAGE-1 过程检验单(工序级)独立入口', NOW()
- FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM (SELECT Id FROM SysMenu) t WHERE t.Id = 1329016020002);
- -- ── 2. 详情页菜单(hidden child route,不出现在菜单树里)──
- INSERT INTO SysMenu (Id, Pid, Type, Name, Path, Component, Title, Icon, IsIframe, IsHide, IsKeepAlive, IsAffix, OrderNo, Status, Remark, CreateTime)
- SELECT 1329016020003, 1322000000020, 2, 'aidopS6IpqcBillDetail',
- '/aidop/s6/process-quality/ipqc-bill-detail/:id',
- '/aidop/s6/process-quality/ipqcBillDetail',
- 'IPQC 检查单详情', 'ele-Document',
- 0, 1, 0, 0, 21, 1, 'S6-IPQC-BILL-PAGE-1 强状态详情页,IsKeepAlive=0', NOW()
- FROM DUAL
- WHERE NOT EXISTS (SELECT 1 FROM (SELECT Id FROM SysMenu) t WHERE t.Id = 1329016020003);
- -- ── 3. 列表页租户可见性:继承 1329016020001 的租户面 ──
- INSERT INTO SysTenantMenu (Id, TenantId, MenuId)
- SELECT base.m + ROW_NUMBER() OVER (ORDER BY src.TenantId), src.TenantId, 1329016020002
- FROM (SELECT COALESCE(MAX(Id), 0) AS m FROM SysTenantMenu) base
- CROSS JOIN (SELECT DISTINCT TenantId FROM SysTenantMenu WHERE MenuId = 1329016020001) src
- WHERE NOT EXISTS (
- SELECT 1 FROM (SELECT TenantId, MenuId FROM SysTenantMenu) x
- WHERE x.TenantId = src.TenantId AND x.MenuId = 1329016020002
- );
- -- ── 4. 详情页租户可见性:同上 ──
- INSERT INTO SysTenantMenu (Id, TenantId, MenuId)
- SELECT base.m + ROW_NUMBER() OVER (ORDER BY src.TenantId), src.TenantId, 1329016020003
- FROM (SELECT COALESCE(MAX(Id), 0) AS m FROM SysTenantMenu) base
- CROSS JOIN (SELECT DISTINCT TenantId FROM SysTenantMenu WHERE MenuId = 1329016020001) src
- WHERE NOT EXISTS (
- SELECT 1 FROM (SELECT TenantId, MenuId FROM SysTenantMenu) x
- WHERE x.TenantId = src.TenantId AND x.MenuId = 1329016020003
- );
- -- ── 5. 列表页角色授权:继承 1329016020001 的角色面 ──
- INSERT INTO SysRoleMenu (Id, RoleId, MenuId)
- SELECT base.m + ROW_NUMBER() OVER (ORDER BY src.RoleId), src.RoleId, 1329016020002
- FROM (SELECT COALESCE(MAX(Id), 0) AS m FROM SysRoleMenu) base
- CROSS JOIN (SELECT DISTINCT RoleId FROM SysRoleMenu WHERE MenuId = 1329016020001) src
- WHERE NOT EXISTS (
- SELECT 1 FROM (SELECT RoleId, MenuId FROM SysRoleMenu) x
- WHERE x.RoleId = src.RoleId AND x.MenuId = 1329016020002
- );
- -- ── 6. 详情页角色授权:同上 ──
- INSERT INTO SysRoleMenu (Id, RoleId, MenuId)
- SELECT base.m + ROW_NUMBER() OVER (ORDER BY src.RoleId), src.RoleId, 1329016020003
- FROM (SELECT COALESCE(MAX(Id), 0) AS m FROM SysRoleMenu) base
- CROSS JOIN (SELECT DISTINCT RoleId FROM SysRoleMenu WHERE MenuId = 1329016020001) src
- WHERE NOT EXISTS (
- SELECT 1 FROM (SELECT RoleId, MenuId FROM SysRoleMenu) x
- WHERE x.RoleId = src.RoleId AND x.MenuId = 1329016020003
- );
|