Files
MES/yawei-mes/.sql/2026-03-14_00_周启威_修复报工单配置权限.sql

118 lines
9.4 KiB
MySQL
Raw Normal View History

2026-04-02 10:38:23 +08:00
-- ============================================================
-- 修复报工单配置权限问题
-- 版本v2.0.009 日期2026-03-14 作者:周启威
-- 问题:报工单新增时提示"加载配置失败: error"和"没有权限"
-- 原因:缺少报工单类别配置和字段配置的权限记录
-- ============================================================
-- ============================================================
-- 1. 获取报工单菜单ID通过perms标识动态查询
-- ============================================================
SET @report_menu_id = (SELECT menu_id FROM sys_menu WHERE perms = 'production:report:list' LIMIT 1);
-- 验证是否找到报工单菜单
SELECT CONCAT('报工单菜单ID: ', IFNULL(@report_menu_id, '未找到')) AS '查询结果';
-- 如果找不到报工单菜单,则终止执行
-- 注意MySQL不支持直接的IF判断终止需要手动检查上面的查询结果
-- 如果@report_menu_id为NULL请检查sys_menu表中是否存在perms='production:report:list'的记录
-- ============================================================
-- 2. 添加权限配置到菜单表使用动态parent_id
-- ============================================================
-- 类别配置权限
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '类别配置查询', @report_menu_id, 11, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:categoryConfig:list', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:categoryConfig:list');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '类别配置详情', @report_menu_id, 12, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:categoryConfig:query', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:categoryConfig:query');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '类别配置新增', @report_menu_id, 13, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:categoryConfig:add', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:categoryConfig:add');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '类别配置修改', @report_menu_id, 14, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:categoryConfig:edit', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:categoryConfig:edit');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '类别配置删除', @report_menu_id, 15, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:categoryConfig:remove', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:categoryConfig:remove');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '类别名称重置', @report_menu_id, 16, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:categoryConfig:resetName', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:categoryConfig:resetName');
-- 字段配置权限
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '字段配置查询', @report_menu_id, 21, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:fieldConfig:list', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:fieldConfig:list');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '字段配置详情', @report_menu_id, 22, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:fieldConfig:query', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:fieldConfig:query');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '字段配置新增', @report_menu_id, 23, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:fieldConfig:add', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:fieldConfig:add');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '字段配置修改', @report_menu_id, 24, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:fieldConfig:edit', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:fieldConfig:edit');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '字段配置删除', @report_menu_id, 25, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:fieldConfig:remove', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:fieldConfig:remove');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '字段名称重置', @report_menu_id, 26, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:fieldConfig:resetName', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:fieldConfig:resetName');
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
SELECT '字段批量修改', @report_menu_id, 27, '#', '', NULL, 1, 0, 'F', '0', '0', 'production:report:fieldConfig:batchEdit', '#', 'admin', NOW(), 'admin', NOW(), ''
WHERE @report_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'production:report:fieldConfig:batchEdit');
-- ============================================================
-- 3. 验证权限配置
-- ============================================================
-- 执行以下查询验证权限是否添加成功:
SELECT menu_id, menu_name, parent_id, perms
FROM sys_menu
WHERE perms LIKE 'production:report:%Config:%'
ORDER BY parent_id, order_num;
-- ============================================================
-- 4. 说明
-- ============================================================
-- 1. 本SQL使用动态查询parent_id通过perms='production:report:list'定位报工单菜单
-- 2. 使用NOT EXISTS避免重复插入权限记录
-- 3. 管理员userId=1默认拥有所有权限*:*:*),无需单独分配
-- 4. 如果你使用的不是管理员账号,需要在"系统管理->角色管理"中手动分配权限
-- 5. 执行此SQL后需要
-- - 清除浏览器缓存
-- - 退出系统并重新登录
-- - 重新打开报工单新增页面测试
-- 6. 如果仍有问题,请检查:
-- - 数据库中是否已存在 pro_report_category_config 和 pro_report_field_config 表
-- - 表中是否有初始化数据(执行 2026-03-05_v2.0.003_周启威_报工单页面类别与字段控制.sql
-- - 后端服务是否已重启
-- - 当前登录用户的userIdSELECT user_id FROM sys_user WHERE user_name = '你的用户名'
-- - 如果userId不是1检查该用户的角色权限配置