Browse Source

feat(crm): add quote approver setting table and menu SQL

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 3 tháng trước cách đây
mục cha
commit
82e648de9f

+ 43 - 0
backend/scripts/migrate_20260801_crm_quote_approver_setting.sql

@@ -0,0 +1,43 @@
+-- backend/scripts/migrate_20260801_crm_quote_approver_setting.sql
+
+CREATE TABLE IF NOT EXISTS `crm_quote_approver_setting` (
+  `id` varchar(64) NOT NULL COMMENT '主键ID(UUID)',
+  `approver_ids` varchar(1000) NOT NULL DEFAULT '' COMMENT '有序审批人用户ID,逗号分隔',
+  `status` char(1) NOT NULL DEFAULT '0' COMMENT '0启用 1停用',
+  `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
+  `order_num` int(11) DEFAULT NULL COMMENT '排序号',
+  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
+  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
+  `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志',
+  PRIMARY KEY (`id`),
+  KEY `idx_tenant_no` (`tenant_no`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CRM-报价单审批人设置(租户级)';
+
+-- 说明:MySQL 5.7 无部分唯一索引;租户「有效一条」由 save_setting upsert 保证,不加 (tenant_no, del_flag) 唯一键。
+
+-- 菜单:报价单审批人设置(CRM 根下,紧挨报价单管理)
+INSERT INTO `sys_menu` (
+  `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
+  `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
+  `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
+) VALUES (
+  'CRM3000000000000000000000000015',
+  '报价单审批人设置',
+  'CRM00000000000000000000000000001',
+  'C',
+  'quote-approver-setting',
+  '/crm/quote/approver-setting/index',
+  'crm:quote:approverSetting',
+  1, '1', '1', 'shanxia2.0', 55,
+  '租户级默认报价审批人',
+  'system', '', NOW(), NULL, NOW(), 0
+)
+ON DUPLICATE KEY UPDATE
+  `menu_name`=VALUES(`menu_name`),
+  `component`=VALUES(`component`),
+  `perms`=VALUES(`perms`),
+  `path`=VALUES(`path`);

+ 28 - 0
docs/sql/shanxia2.0.sql

@@ -2269,6 +2269,33 @@ INSERT INTO `crm_quote_approval` (`id`, `quote_id`, `quote_no`, `step`, `approve
 INSERT INTO `crm_quote_approval` (`id`, `quote_id`, `quote_no`, `step`, `approver_id`, `approver_name`, `approval_result`, `approval_opinion`, `approval_time`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('D74CD7F227CC4506BBF77E788DE075F6', '45D5DA129E104FB391A88953F3AE65FC', 'SXDD-20260606002', 2, 'd3000000000000000000000000000001', '系统管理员', 'approved', '123', '2026-06-06 17:16:05', 'shanxia2.0', NULL, '123', NULL, 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-06-06 17:14:30', 'd3000000000000000000000000000001', '2026-06-06 17:16:05', 0);
 COMMIT;
 
+-- ----------------------------
+-- Table structure for crm_quote_approver_setting
+-- ----------------------------
+DROP TABLE IF EXISTS `crm_quote_approver_setting`;
+CREATE TABLE `crm_quote_approver_setting` (
+  `id` varchar(64) NOT NULL COMMENT '主键ID(UUID)',
+  `approver_ids` varchar(1000) NOT NULL DEFAULT '' COMMENT '有序审批人用户ID,逗号分隔',
+  `status` char(1) NOT NULL DEFAULT '0' COMMENT '0启用 1停用',
+  `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
+  `order_num` int(11) DEFAULT NULL COMMENT '排序号',
+  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
+  `create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
+  `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
+  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志',
+  PRIMARY KEY (`id`) USING BTREE,
+  KEY `idx_tenant_no` (`tenant_no`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CRM-报价单审批人设置(租户级)';
+
+-- ----------------------------
+-- Records of crm_quote_approver_setting
+-- ----------------------------
+BEGIN;
+COMMIT;
+
 -- ----------------------------
 -- Table structure for crm_quote_product
 -- ----------------------------
@@ -9809,6 +9836,7 @@ INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `co
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('CRM2000000000000000000000003006', '商机分配', 'CRM2000000000000000000000000010', 'F', '', NULL, 'crm:opportunity:assign', 1, '1', '1', 'shanxia2.0', 6, NULL, NULL, '', '2026-05-31 16:17:46', NULL, '2026-05-31 16:17:46', 0);
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('CRM2000000000000000000000003007', '商机跟进', 'CRM2000000000000000000000000010', 'F', '', NULL, 'crm:opportunity:follow', 1, '1', '1', 'shanxia2.0', 7, NULL, NULL, '', '2026-05-31 16:17:46', NULL, '2026-05-31 16:17:46', 0);
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('CRM3000000000000000000000000010', '报价单管理', 'CRM00000000000000000000000000001', 'C', 'quote', '/crm/quote/index', 'crm:quote:list', 1, '1', '1', 'shanxia2.0', 5, NULL, 'system', '', '2026-07-05 21:00:00', NULL, '2026-07-05 21:00:00', 0);
+INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('CRM3000000000000000000000000015', '报价单审批人设置', 'CRM00000000000000000000000000001', 'C', 'quote-approver-setting', '/crm/quote/approver-setting/index', 'crm:quote:approverSetting', 1, '1', '1', 'shanxia2.0', 55, '租户级默认报价审批人', 'system', '', '2026-08-01 00:00:00', NULL, '2026-08-01 00:00:00', 0);
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('CRM3000000000000000000000000020', '合同管理', 'CRM00000000000000000000000000001', 'C', 'contract', '/crm/contract/index', 'crm:contract:list', 1, '1', '1', 'shanxia2.0', 6, NULL, 'system', '', '2026-07-05 21:00:00', NULL, '2026-07-05 21:00:00', 0);
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('CRM3000000000000000000000000030', '调价函管理', 'CRM00000000000000000000000000001', 'C', 'price-letter', '/crm/price-letter/index', 'crm:priceLetter:list', 1, '1', '1', 'shanxia2.0', 7, '独立调价函档案:接受(附件) / 发出(富文本打印);不关联合同与报价单', 'system', '', '2026-07-15 20:23:03', NULL, '2026-07-26 12:01:03', 0);
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('CRM3000000000000000000000000031', '调价函新增', 'CRM3000000000000000000000000030', 'F', '', NULL, 'crm:priceLetter:add', 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', '2026-07-15 20:23:03', NULL, '2026-07-15 20:23:03', 0);