Files
MES/yawei-mes/.sql/2026-03-14_00_周启威_修复报工单配置权限.sql
2026-04-02 10:39:03 +08:00

118 lines
9.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================
-- 修复报工单配置权限问题
-- 版本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检查该用户的角色权限配置