更新物料大类和小类的字典表引用,优化前端表单组件,改用API选择器加载分类数据,增强用户体验。调整物料信息模态框,支持动态加载大类和小类选项。

This commit is contained in:
geht
2026-05-06 18:27:13 +08:00
parent 0b4458bbc5
commit 25629f2df1
8 changed files with 860 additions and 30 deletions

View File

@@ -0,0 +1,28 @@
-- MES 物料分类新增分类字典sys_category根节点与子节点
-- 根编码XSLMES_MATERIAL
-- 子类物料大类物料小类
-- 根节点物料分类
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000001', '0', '物料分类', 'XSLMES_MATERIAL', '1', 'admin', NOW()
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL');
-- 子节点物料大类
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000002', p.`id`, '物料大类', 'XSLMES_MATERIAL_MAJOR', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_MAJOR');
-- 子节点物料小类
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000003', p.`id`, '物料小类', 'XSLMES_MATERIAL_MINOR', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_MINOR');
-- 确保根节点有子节点标记
UPDATE `sys_category`
SET `has_child` = '1'
WHERE `code` = 'XSLMES_MATERIAL';

View File

@@ -0,0 +1,169 @@
-- MES 物料分类树根节点 -> 物料大类 -> 物料小类
-- 兼容处理清理上一版占位节点物料大类/物料小类避免出现在下拉中
-- 清理占位节点若存在
DELETE FROM `sys_category` WHERE `code` IN ('XSLMES_MATERIAL_MAJOR', 'XSLMES_MATERIAL_MINOR');
-- 确保根节点存在
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000001', '0', '物料分类', 'XSLMES_MATERIAL', '1', 'admin', NOW()
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL');
-- 物料大类
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000101', root.`id`, '原辅材料', 'XSLMES_MATERIAL_RAW_AUX', '1', 'admin', NOW()
FROM `sys_category` root
WHERE root.`code` = 'XSLMES_MATERIAL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000102', root.`id`, '小料', 'XSLMES_MATERIAL_SMALL', '1', 'admin', NOW()
FROM `sys_category` root
WHERE root.`code` = 'XSLMES_MATERIAL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_SMALL');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000103', root.`id`, '塑炼胶', 'XSLMES_MATERIAL_PLASTIC', '1', 'admin', NOW()
FROM `sys_category` root
WHERE root.`code` = 'XSLMES_MATERIAL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_PLASTIC');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000104', root.`id`, '母炼胶', 'XSLMES_MATERIAL_MASTER', '1', 'admin', NOW()
FROM `sys_category` root
WHERE root.`code` = 'XSLMES_MATERIAL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_MASTER');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000105', root.`id`, '终炼胶', 'XSLMES_MATERIAL_FINAL', '1', 'admin', NOW()
FROM `sys_category` root
WHERE root.`code` = 'XSLMES_MATERIAL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_FINAL');
-- 原辅材料 -> 小类
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000201', p.`id`, '炭黑', 'XSLMES_MATERIAL_RAW_AUX_TH', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_TH');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000202', p.`id`, '油料', 'XSLMES_MATERIAL_RAW_AUX_YL', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_YL');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000203', p.`id`, '粉料', 'XSLMES_MATERIAL_RAW_AUX_FL', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_FL');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000204', p.`id`, '钢丝', 'XSLMES_MATERIAL_RAW_AUX_GS', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_GS');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000205', p.`id`, '帘线', 'XSLMES_MATERIAL_RAW_AUX_LX', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_LX');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000206', p.`id`, '天然胶', 'XSLMES_MATERIAL_RAW_AUX_TRJ', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_TRJ');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000207', p.`id`, '合成胶', 'XSLMES_MATERIAL_RAW_AUX_HCJ', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_HCJ');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000208', p.`id`, '再生胶', 'XSLMES_MATERIAL_RAW_AUX_ZSJ', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_ZSJ');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000209', p.`id`, '硅烷', 'XSLMES_MATERIAL_RAW_AUX_GW', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_GW');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000210', p.`id`, '大粉料', 'XSLMES_MATERIAL_RAW_AUX_DFL', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_DFL');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000211', p.`id`, '白炭黑', 'XSLMES_MATERIAL_RAW_AUX_BTH', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_RAW_AUX'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_RAW_AUX_BTH');
-- 小料 -> 小类
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000301', p.`id`, '人工', 'XSLMES_MATERIAL_SMALL_RG', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_SMALL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_SMALL_RG');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000302', p.`id`, '自动', 'XSLMES_MATERIAL_SMALL_ZD', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_SMALL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_SMALL_ZD');
-- 塑炼胶 -> 小类
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000401', p.`id`, 'J0段胶', 'XSLMES_MATERIAL_PLASTIC_J0', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_PLASTIC'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_PLASTIC_J0');
-- 母炼胶 -> 小类
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000501', p.`id`, 'A胶', 'XSLMES_MATERIAL_MASTER_A', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_MASTER'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_MASTER_A');
-- 终炼胶 -> 小类
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000601', p.`id`, 'Q胶', 'XSLMES_MATERIAL_FINAL_Q', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_FINAL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_FINAL_Q');
INSERT INTO `sys_category` (`id`, `pid`, `name`, `code`, `has_child`, `create_by`, `create_time`)
SELECT '1993000000000000602', p.`id`, '返回胶', 'XSLMES_MATERIAL_FINAL_FHJ', '0', 'admin', NOW()
FROM `sys_category` p
WHERE p.`code` = 'XSLMES_MATERIAL_FINAL'
AND NOT EXISTS (SELECT 1 FROM `sys_category` WHERE `code` = 'XSLMES_MATERIAL_FINAL_FHJ');
-- 统一修正 has_child 标记仅针对物料分类树避免 MySQL 1093
-- 先将物料分类树节点全部置 0
UPDATE `sys_category`
SET `has_child` = '0'
WHERE `code` = 'XSLMES_MATERIAL'
OR `code` LIKE 'XSLMES_MATERIAL_%';
-- 再把有子节点的节点置 1通过派生表规避同表更新限制
UPDATE `sys_category` p
JOIN (
SELECT DISTINCT c.`pid` AS parent_id
FROM `sys_category` c
WHERE c.`code` LIKE 'XSLMES_MATERIAL_%'
AND c.`pid` IS NOT NULL
AND c.`pid` <> '0'
) t ON t.parent_id = p.`id`
SET p.`has_child` = '1'
WHERE p.`code` = 'XSLMES_MATERIAL'
OR p.`code` LIKE 'XSLMES_MATERIAL_%';