修复快捷工具无法显示

This commit is contained in:
hero920103 committed 2026-10-30 17:29:28 +08:00
1 parent 9898962836
commit 2e2b837a20
23 files changed
+1941 -38

No files matched your search

+68
View File
@@ -0,0 +1,68 @@
-- ============================================================
-- OA 职级管理 —— 菜单配置(yz_system_menu)
--
-- 幂等脚本:按 path 判重,重复执行不会产生重复菜单
-- 执行:mysql -h <host> -P <port> -u <user> -p <db> < oa_job_rank_menus.sql
--
-- 挂载位置:OA → 基础设置(目录,path = '/apps/oa/normalsetting')
-- OA
-- └─ 基础设置
-- ├─ 组织架构 /basic-settings/organization
-- ├─ 人员管理 /basic-settings/employee
-- ├─ 职位管理 /basic-settings/position
-- └─ 职级管理 /basic-settings/jobrank ← 本脚本新增
--
-- 对应页面:backend/src/views/basicSettings/jobRank/index.vue
--
-- 说明:
-- 1. views = [2](租户端),与同级的组织架构/人员管理/职位管理保持一致;
-- platforms 留空(= 全端),移动端可通过 webview 容器打开同一页面。
-- 2. 租户端角色(cid=2)的 rights 是显式菜单 ID 列表,菜单接口会按
-- rights 过滤。只插菜单不授权,会出现「目录可见但页面被过滤」,
-- 因此本脚本同时把菜单 ID 追加到角色 rights。
-- ============================================================
SET @basic_id := (
SELECT id FROM yz_system_menu
WHERE path = '/apps/oa/normalsetting' AND delete_time IS NULL
LIMIT 1
);
-- ---------- 职级管理(页面) ----------
INSERT INTO yz_system_menu
(pid, title, path, component_path, icon, sort, status, is_visible, views, platforms, type, creater, remark)
SELECT @basic_id, '职级管理', '/basic-settings/jobrank', '/basicSettings/jobRank/index.vue',
'Sort', 4, 1, 1, '[2]', NULL, 2, 'system',
'按部门设置职位等级,供薪酬管理与权限分级使用'
FROM DUAL
WHERE @basic_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM yz_system_menu WHERE path = '/basic-settings/jobrank' AND delete_time IS NULL) x);
SET @jobrank_id := (
SELECT id FROM yz_system_menu
WHERE path = '/basic-settings/jobrank' AND delete_time IS NULL
LIMIT 1
);
-- ---------- 角色授权:把菜单追加到所有租户端角色的 rights ----------
-- 只处理 rights 非空(显式授权)的角色;rights 为空表示全权限,无需追加。
UPDATE yz_system_admin_role
SET rights = CAST(JSON_ARRAY_APPEND(CAST(rights AS JSON), '$', @jobrank_id) AS CHAR)
WHERE cid = 2
AND rights IS NOT NULL
AND TRIM(rights) <> ''
AND JSON_VALID(rights)
AND @jobrank_id IS NOT NULL
AND NOT JSON_CONTAINS(CAST(rights AS JSON), CAST(@jobrank_id AS JSON));
-- ---------- 结果校验 ----------
SELECT id, pid, title, path, component_path, views, platforms, type, sort
FROM yz_system_menu
WHERE delete_time IS NULL AND path = '/basic-settings/jobrank';
SELECT id, name, tenant_id,
JSON_CONTAINS(CAST(rights AS JSON), CAST(@jobrank_id AS JSON)) AS has_jobrank
FROM yz_system_admin_role
WHERE cid = 2 AND rights IS NOT NULL AND TRIM(rights) <> ''
ORDER BY tenant_id, id;