-- ============================================================================= -- CRM 合同管理:进度式创建(合同信息 / 产品清单),绑定项目或无头合同 -- 对应租户端 backend 页面:/apps/crm/contract -- 说明: -- 1. project_id 为空即为「无头合同」,否则为「项目合同」; -- 2. our_role:我方角色 1=甲方 2=乙方 3=丙方 4=丁方(当前租户扮演的一方,默认乙方); -- party_count:2=双方(甲乙)3=三方(甲乙丙)4=四方(甲乙丙丁); -- 3. parties / products 以 JSON 文本存储; -- 4. 各部分金额冗余为表字段,由后端按 products 重算,便于统计与排序; -- 5. status:1=草稿(进度式保存中)2=已完成 3=已作废;step 记录创建进度。 -- ⚠️ 安全说明:本脚本只做 CREATE TABLE IF NOT EXISTS,不删除或覆盖任何已有数据,可重复执行。 -- ============================================================================= SET NAMES utf8mb4; CREATE TABLE IF NOT EXISTS `yz_backend_crm_contract` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID', `tenant_id` varchar(64) NOT NULL COMMENT '租户ID', `contract_no` varchar(50) NOT NULL DEFAULT '' COMMENT '合同编号', `contract_name` varchar(100) NOT NULL COMMENT '合同名称', `contract_category` varchar(20) NOT NULL DEFAULT '' COMMENT '合同分类:1开发/2服务/3销售/4租赁/5采购/6运维/7咨询/8其他', `our_role` tinyint(4) NOT NULL DEFAULT '2' COMMENT '我方角色:1甲方/2乙方/3丙方/4丁方(当前租户扮演的一方)', `party_count` tinyint(4) NOT NULL DEFAULT '2' COMMENT '合同形式:2双方(甲乙)/3三方(甲乙丙)/4四方(甲乙丙丁)', `project_id` bigint(20) DEFAULT NULL COMMENT '关联项目ID(yz_backend_crm_project.id),空=无头合同', `project_name` varchar(100) NOT NULL DEFAULT '' COMMENT '项目名称', `owner_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '项目负责人用户ID', `owner_user_name` varchar(128) NOT NULL DEFAULT '' COMMENT '项目负责人姓名(默认为创建人)', `sign_date` date DEFAULT NULL COMMENT '签订日期', `effective_date` date DEFAULT NULL COMMENT '生效日期', `expire_date` date DEFAULT NULL COMMENT '结束日期', `parties` text COMMENT '各方签约主体 JSON:[{role,ref_type,ref_id,ref_name,signer_name,signer_phone}]', `products` text COMMENT '产品清单 JSON:[{name,category,spec,unit,quantity,price,cost_price,remark}]', `hardware_amount` decimal(14,2) NOT NULL DEFAULT '0.00' COMMENT '硬件部分金额(元)', `software_amount` decimal(14,2) NOT NULL DEFAULT '0.00' COMMENT '软件部分金额(元)', `other_amount` decimal(14,2) NOT NULL DEFAULT '0.00' COMMENT '其他部分金额(服务/开发/其他)(元)', `total_amount` decimal(14,2) NOT NULL DEFAULT '0.00' COMMENT '合同总金额(元)', `total_cost` decimal(14,2) NOT NULL DEFAULT '0.00' COMMENT '产品总成本(元)', `total_profit` decimal(14,2) NOT NULL DEFAULT '0.00' COMMENT '合同总利润(元)', `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:1草稿/2已完成/3已作废/4履约中/5执行异常', `step` tinyint(4) NOT NULL DEFAULT '1' COMMENT '进度式创建步骤:1合同信息/2产品清单', `remark` text COMMENT '备注', `create_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人用户ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`), KEY `idx_tenant_id` (`tenant_id`), KEY `idx_contract_name` (`tenant_id`,`contract_name`), KEY `idx_contract_no` (`tenant_id`,`contract_no`), KEY `idx_project` (`tenant_id`,`project_id`), KEY `idx_status` (`tenant_id`,`status`), KEY `idx_delete_time` (`delete_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户CRM合同表';