/* ============================================================================ FMS 工作流菜单(s_menu) 用途:挂两处菜单,与前端路由一一对应(见 fms-vue/src/router/routes.js): 1. 「系统管理 → 流程管理」→ /system/workflow(管理员配置流程) 2. 「审批中心」→ /approval 下的四个页面(我的待办 / 我发起的 / 我已处理 / 抄送我的) 说明: 1. 幂等:菜单按 b_id 判断存在性;日志菜单的排序号只在仍是旧值时后移。 2. 权限:本脚本不建权限点。侧栏可见性与路由进入由 menu.{菜单编码} 授权控制 (g3soft 超管默认可进入);需要给普通账号开放时,另行补 s_power(menu.xxx) + s_user_power 授权。 3. 排序:一级菜单 审批中心 5 → 基础资料 10 → 系统管理 10; 系统管理内 用户管理 10 → 流程管理 20 → 日志 30。 ============================================================================ */ -- 流程管理:系统管理下的页面菜单 if not exists (select 1 from dbo.s_menu where b_id = 'workflow') begin insert into dbo.s_menu (b_id, b_parent_id, b_depth, b_path, b_name, b_i18n, b_menu_type, b_route, b_icon, b_xh, b_canuse) values ('workflow', 'system', 1, '/system/workflow/', N'流程管理', 'menu.workflow', 'page', '/system/workflow', null, 20, 1); end GO -- 日志让位:目录后移到 30(只在还是 20 时执行,重复运行无副作用) update dbo.s_menu set b_xh = 30 where b_id = 'log' and b_xh = 20; GO /* ---------------------------------------------------------------------------- 审批中心(一级菜单):业务人员的日常入口,与「系统管理 → 流程管理」分开 ---------------------------------------------------------------------------- */ if not exists (select 1 from dbo.s_menu where b_id = 'approval') begin insert into dbo.s_menu (b_id, b_parent_id, b_depth, b_path, b_name, b_i18n, b_menu_type, b_route, b_icon, b_xh, b_canuse) values ('approval', null, 0, '/approval/', N'审批中心', 'menu.approval', 'directory', null, null, 5, 1); end GO if not exists (select 1 from dbo.s_menu where b_id = 'approval_todo') begin insert into dbo.s_menu (b_id, b_parent_id, b_depth, b_path, b_name, b_i18n, b_menu_type, b_route, b_icon, b_xh, b_canuse) values ('approval_todo', 'approval', 1, '/approval/approval_todo/', N'我的待办', 'menu.approval_todo', 'page', '/approval/todo', null, 10, 1); end GO if not exists (select 1 from dbo.s_menu where b_id = 'approval_initiated') begin insert into dbo.s_menu (b_id, b_parent_id, b_depth, b_path, b_name, b_i18n, b_menu_type, b_route, b_icon, b_xh, b_canuse) values ('approval_initiated', 'approval', 1, '/approval/approval_initiated/', N'我发起的', 'menu.approval_initiated', 'page', '/approval/initiated', null, 20, 1); end GO if not exists (select 1 from dbo.s_menu where b_id = 'approval_done') begin insert into dbo.s_menu (b_id, b_parent_id, b_depth, b_path, b_name, b_i18n, b_menu_type, b_route, b_icon, b_xh, b_canuse) values ('approval_done', 'approval', 1, '/approval/approval_done/', N'我已处理', 'menu.approval_done', 'page', '/approval/done', null, 30, 1); end GO if not exists (select 1 from dbo.s_menu where b_id = 'approval_cc') begin insert into dbo.s_menu (b_id, b_parent_id, b_depth, b_path, b_name, b_i18n, b_menu_type, b_route, b_icon, b_xh, b_canuse) values ('approval_cc', 'approval', 1, '/approval/approval_cc/', N'抄送我的', 'menu.approval_cc', 'page', '/approval/cc', null, 40, 1); end GO /* ---------------------------------------------------------------------------- 多语言(s_i18n):菜单名,默认语言为中文时写入中文值 已存在同键同语言的行不覆盖(人工翻译优先)。 ---------------------------------------------------------------------------- */ declare @i18n table (k varchar(150) primary key, v nvarchar(1000) not null); insert into @i18n (k, v) values ('menu.workflow', N'流程管理'), ('menu.approval', N'审批中心'), ('menu.approval_todo', N'我的待办'), ('menu.approval_initiated', N'我发起的'), ('menu.approval_done', N'我已处理'), ('menu.approval_cc', N'抄送我的'); insert into dbo.s_i18n (b_key, b_locale, b_value, b_canuse) select i.k, t.b_id, i.v, 1 from @i18n i cross join (select b_id from dbo.s_i18n_type where b_default = 1) t where not exists (select 1 from dbo.s_i18n x where x.b_key = i.k and x.b_locale = t.b_id); GO /* ---------------------------------------------------------------------------- 自检 ---------------------------------------------------------------------------- */ select '菜单' as 项, count(*) as 行数 from dbo.s_menu where b_id in ('workflow', 'log', 'approval', 'approval_todo', 'approval_initiated', 'approval_done', 'approval_cc') union all select '多语言', count(*) from dbo.s_i18n where b_key like 'menu.workflow' or b_key like 'menu.approval%'; GO