This commit is contained in:
zlwu committed 2026-05-26 12:32:19 +08:00
1 parent bb8c981afd
commit 065e6c34b4
45 files changed
+16838 -4598

No files matched your search

@@ -1,3 +0,0 @@
-- 渠道服务购买订单:新增服务订单名称
ALTER TABLE `biz_channel_service_order`
ADD COLUMN `order_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '服务订单名称' AFTER `channel_name`;
@@ -1,15 +0,0 @@
-- 渠道服务订单操作流水:财务确认人、作废人、作废时间
ALTER TABLE `biz_channel_service_order_txn`
ADD COLUMN `finance_confirm_by` varchar(64) DEFAULT NULL COMMENT '财务确认人ID' AFTER `finance_confirm_time`,
ADD COLUMN `void_by` varchar(64) DEFAULT NULL COMMENT '作废人ID' AFTER `finance_remark`,
ADD COLUMN `void_time` datetime DEFAULT NULL COMMENT '作废时间' AFTER `void_by`;
-- 历史已确认流水:用 update_by 回填确认人
UPDATE `biz_channel_service_order_txn`
SET `finance_confirm_by` = `update_by`
WHERE `txn_status` = 'yqr' AND `finance_confirm_time` IS NOT NULL AND `finance_confirm_by` IS NULL;
-- 历史已作废流水:用 update_by / update_time 回填(仅曾提交财务的流水视为财务作废)
UPDATE `biz_channel_service_order_txn`
SET `void_by` = `update_by`, `void_time` = `update_time`
WHERE `txn_status` = 'yzf' AND `finance_submit_time` IS NOT NULL AND `void_by` IS NULL;
@@ -0,0 +1,8 @@
-- 2026-05-26: biz_pilot_checkup 新增 pilot_patient_id 字段
-- 用于体检管理页面按患者维度管理体检记录
ALTER TABLE biz_pilot_checkup
ADD COLUMN pilot_patient_id VARCHAR(64) DEFAULT NULL COMMENT '中试患者ID'
AFTER pilot_application_id;
CREATE INDEX idx_pilot_checkup_patient_id ON biz_pilot_checkup(pilot_patient_id);
@@ -0,0 +1,37 @@
-- 中试服务申请单:支持新增弹窗一揽子保存(申请单名称、输注方案扩展、输注计划明细、细胞产品)
ALTER TABLE `biz_pilot_application`
ADD COLUMN `application_name` varchar(200) DEFAULT NULL COMMENT '申请单名称' AFTER `application_no`;
ALTER TABLE `biz_pilot_infusion_plan`
ADD COLUMN `channel_agreement_id` varchar(64) DEFAULT NULL COMMENT '渠道协议ID' AFTER `infusion_start_date`;
ALTER TABLE `biz_pilot_infusion_schedule`
ADD COLUMN `infusion_location` varchar(200) DEFAULT NULL COMMENT '输注地点' AFTER `infusion_time`,
ADD COLUMN `infusion_method` varchar(32) DEFAULT NULL COMMENT '输注方式(字典 szfs)' AFTER `infusion_location`;
DROP TABLE IF EXISTS `biz_pilot_infusion_schedule_product`;
CREATE TABLE `biz_pilot_infusion_schedule_product` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`infusion_schedule_id` varchar(64) NOT NULL COMMENT '输注计划ID',
`price_id` varchar(64) DEFAULT NULL COMMENT '协议价格/订单产品引用ID',
`project_code` varchar(64) DEFAULT NULL COMMENT '项目编码',
`project_name` varchar(200) DEFAULT NULL COMMENT '项目名称',
`cell_type_name` varchar(200) DEFAULT NULL COMMENT '细胞类型',
`spec_text` varchar(200) DEFAULT NULL COMMENT '规格',
`agreement_price` decimal(18,2) DEFAULT NULL COMMENT '协议单价(元)',
`actual_price` decimal(18,2) DEFAULT NULL COMMENT '实际单价(元)',
`quantity` int(11) DEFAULT '1' COMMENT '份数',
`product_status` varchar(32) DEFAULT NULL COMMENT '产品状态(如待输注)',
`tenant_no` varchar(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除',
PRIMARY KEY (`id`),
KEY `idx_pisp_schedule` (`infusion_schedule_id`,`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='中试申请单-输注计划细胞产品';
@@ -0,0 +1,85 @@
-- 中试服务申请单 — 输注方式字典(dict_type: szfs)
-- 在「系统管理 > 字典管理」中维护;前端通过 fetchDictDataOptions('szfs') 加载
INSERT INTO `sys_dict_type` (
`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`,
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
) VALUES (
'TDP000000000000000000000000000090',
'输注方式',
'szfs',
'zkxw',
10,
'中试服务申请单-输注计划输注方式',
'd3000000000000000000000000000001',
'b13c2be2-4e71-11f1-9f47-00163e3bdd96',
NOW(),
'd3000000000000000000000000000001',
NOW(),
0
);
INSERT INTO `sys_dict_data` (
`id`, `dict_label`, `dict_value`, `dict_type`, `tenant_no`, `order_num`, `remark`,
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
) VALUES
(
'TDP000000000000000000000000000091',
'静脉输注',
'jmsz',
'szfs',
'zkxw',
1,
'',
'd3000000000000000000000000000001',
'b13c2be2-4e71-11f1-9f47-00163e3bdd96',
NOW(),
'd3000000000000000000000000000001',
NOW(),
0
),
(
'TDP000000000000000000000000000092',
'皮下注射',
'pxzs',
'szfs',
'zkxw',
2,
'',
'd3000000000000000000000000000001',
'b13c2be2-4e71-11f1-9f47-00163e3bdd96',
NOW(),
'd3000000000000000000000000000001',
NOW(),
0
),
(
'TDP000000000000000000000000000093',
'局部注射',
'jbzs',
'szfs',
'zkxw',
3,
'',
'd3000000000000000000000000000001',
'b13c2be2-4e71-11f1-9f47-00163e3bdd96',
NOW(),
'd3000000000000000000000000000001',
NOW(),
0
),
(
'TDP000000000000000000000000000094',
'其他',
'qt',
'szfs',
'zkxw',
4,
'',
'd3000000000000000000000000000001',
'b13c2be2-4e71-11f1-9f47-00163e3bdd96',
NOW(),
'd3000000000000000000000000000001',
NOW(),
0
);
@@ -1,2 +0,0 @@
ALTER TABLE biz_channel_service_order_txn
ADD COLUMN refund_attachments TEXT NULL COMMENT '退款附件(逗号分隔URL)' AFTER remark;
+141 -22
View File
@@ -11,7 +11,7 @@
Target Server Version : 50736 (5.7.36)
File Encoding : 65001
Date: 25/05/2026 12:53:10
Date: 25/05/2026 20:56:43
*/
SET NAMES utf8mb4;
@@ -53,11 +53,13 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('01770d35b8a44a0b9942a90d6f710fc8', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'channel/202605/18/5563b6f27bdb443ca5e359b306dcf228.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-18 13:52:49', NULL, '2026-05-18 13:52:49', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('0224631a027e48eea16a66c5a7f97619', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'cell-product/202605/22/1dff96183a0c4ae2923c9090f66d20ab.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-22 11:42:17', NULL, '2026-05-22 11:42:17', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('02e26e380b734ecab0f17641c7d8273a', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'channel/202605/18/b662a27ec73c418cb5004d9b39227b4c.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-18 15:15:00', NULL, '2026-05-18 15:15:00', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('035ffc3b489e42829ee1f208d89c07d3', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'channel-service-order/202605/25/db70dda6a9c343c6834da9f6b79d1a8f.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 15:42:41', NULL, '2026-05-25 15:42:41', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('03d9f53e2aa142a5943dc9cc089c64b8', NULL, NULL, '1a1500fd4bd94d859d60c89438ca0502.jpeg', 'jpeg', 'sample-reception/202605/19/bf53c7bb56924d9caa32942c89267a2c.jpeg', 898736, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 16:42:40', NULL, '2026-05-19 16:42:40', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('042bf5e6fca4416ba72ac27b18f4b93f', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'qc-lab/202605/19/b79508653ff24d4f91f33ce36d8d3f76.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 17:53:17', NULL, '2026-05-19 17:53:17', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('04415021d8eb418c9cb4ba3a14bb7359', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'sample-reception/202605/17/82c34b4104c7430b9061e69b88d1a19c.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 16:24:31', NULL, '2026-05-17 16:24:31', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('04ebd2f18d7a422f89229af647d6a216', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'qc-lab/202605/24/270c2fa218be48228477b96e4dc268aa.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 16:41:16', NULL, '2026-05-24 16:41:16', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('05c75ee86bdc49a1bcbb4ed042deeadb', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol/202605/14/a32e136ec8484aafa4e091ca1e8a668d.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:10:26', NULL, '2026-05-14 21:10:26', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('0836e90ec26a471ebe39b98078037018', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (2).jpeg', 'jpeg', 'channel-service-order-finance/202605/25/98752b487d6c4aad9ef979235abf85ea.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:50:51', NULL, '2026-05-25 16:50:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('08c50beb50d74261be6bd64c677472d1', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'protocol-payment-refund/202605/17/30d1aa0397ff423a921de9ff119a412d.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 11:26:10', NULL, '2026-05-17 11:26:10', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('098804b70c7042f6a269d8de807dcc4e', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'qc-lab/202605/20/a786dcf20ab5437db86c4f1ae61fc7c4.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-20 06:24:05', NULL, '2026-05-20 06:24:05', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('09a8b7278677491992d8fd2216b08600', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'protocol/202605/16/fcab56dd1868474cb45b2074f36611c6.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 18:49:49', NULL, '2026-05-16 18:49:49', 0);
@@ -70,6 +72,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('0e3f3b23678942d6acc6ba9cfb16230a', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'cell-product/202605/21/563dfcc3d46645c1b8e7195ac79cb89e.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 12:44:39', NULL, '2026-05-21 12:44:39', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('102ef6ad4fc747708ef6a99e1b1bd862', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'qc-lab/202605/21/5836dc1be4444321931db58bdf903022.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 10:27:24', NULL, '2026-05-21 10:27:24', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('10375cfa7b0b412f94a8e1102daa9df0', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'protocol/202605/14/66409a5538e84325917ad2e477288cd3.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:28:08', NULL, '2026-05-14 21:28:08', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('108ee609f50c40feaa32203c6639b1f4', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'channel-service-order/202605/25/1e30fcf84e7b4216a62eb4ff1c1aaaa2.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:36:05', NULL, '2026-05-25 16:36:05', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('120cf31b40dd437ebd13a85bfc74487a', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol/202605/19/3458344dc66649f2b34f2e6050edc38b.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 16:04:47', NULL, '2026-05-19 16:04:47', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('141cb18ea0994afd96bc4b6a03d72ba3', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol-payment/202605/17/6ebedb900a014c48afbd6d0fd86ee8c7.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 21:08:38', NULL, '2026-05-17 21:08:38', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('141f34bd71d647f2872d9b420e2fe048', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol-payment/202605/16/fcd96e554a764448a5ad22272a34a275.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 20:15:35', NULL, '2026-05-16 20:15:35', 0);
@@ -95,6 +98,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('28bb5f78592946b3b5ac927cd97ef206', NULL, NULL, '1.jpg', 'jpg', 'protocol/202605/16/c93e7c4613524efab78d5f984ae5078c.jpg', 16907, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 20:03:21', NULL, '2026-05-16 20:03:21', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('2b56fe2d5f2343d9ae94612b085b56e0', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol-payment/202605/16/81b89839bcad4f0b874448c0055c506c.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 20:15:36', NULL, '2026-05-16 20:15:36', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('2b961db4c56a46df9a3f493cb5fa9ba1', NULL, NULL, '39a2502f555ab8ccbf9448e2c8e7b97f.jpg', 'jpg', 'protocol-payment/202605/24/72b27224288b4cd09dac20b22b9a9c3d.jpg', 1082294, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 09:09:39', NULL, '2026-05-24 09:09:39', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('2c00c26661e3476c9a988e9c268ee61a', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (2).jpeg', 'jpeg', 'channel-service-order-finance/202605/25/d21b80e6c4804d22a3a6cf80be3fdaee.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:40:04', NULL, '2026-05-25 17:40:04', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('2c5b972bbbe246cf82178a0a8340ea33', NULL, NULL, '副本天台技师数字化校园平台采购需求V1.0.docx', 'docx', 'protocol/202605/14/813bdaa3aa994f13a8c826821171c9da.docx', 212013, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:28:11', NULL, '2026-05-14 21:28:11', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('2e3bcb9e19824e4aad1e2bf69c8f0c9d', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'channel/202605/18/5c70abb6daee41d88aa75cad3fd6ee2f.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-18 15:15:00', NULL, '2026-05-18 15:15:00', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('2ed30559113449dabeebfd5f0569e3ba', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'cell-product/202605/21/b9901a1457804e40afa28227de79e0eb.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 12:47:45', NULL, '2026-05-21 12:47:45', 0);
@@ -112,6 +116,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('36671e1f03c547b39b8f7a2896fc62a2', NULL, NULL, '2fcd7b1a95319861f2309ebfdf717402.jpeg', 'jpeg', 'protocol-finance-receipt/202605/17/cc1384ada0c34a2a972a98f8204554f9.jpeg', 76865, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 21:49:57', NULL, '2026-05-17 21:49:57', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('36bca42172fb41fb9fffc87fc08fb458', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'storage-release-review/202605/24/08881f9febb24a68a1cf98300fc67d65.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 17:13:52', NULL, '2026-05-24 17:13:52', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('36fc97fa61e74e96bb78f9ef75506306', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'storage-cert/202605/24/b35332c147f54f43991ea544cb7352b0.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 17:47:13', NULL, '2026-05-24 17:47:13', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('3778c3008a374adf86a40f429c277de3', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'channel-service-order-finance/202605/25/e24a8297c6674a7b9ef6263976de90b7.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:40:32', NULL, '2026-05-25 17:40:32', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('38743b0593434e57959f59376aaa617a', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'qc-third-party/202605/21/80117b120ca34459ac2a8bf9bb5855f9.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 10:27:02', NULL, '2026-05-21 10:27:02', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('38a945735a0b4c2e82b23fb8118e8862', NULL, NULL, '29bea7a5338e821e42d97a017ed2cf15.jpeg', 'jpeg', 'sample-reception/202605/23/4857dbf21a634cdeb2491086125aa84e.jpeg', 123750, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 21:58:42', NULL, '2026-05-23 21:58:42', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('3a1b0a17ba8f47f9a0ee8d1b2d1d708c', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'qc-lab/202605/20/5e5f40393bbc44e591d789dffeda09ce.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-20 06:24:11', NULL, '2026-05-20 06:24:11', 0);
@@ -123,6 +128,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('3f3cfdffdfd049b985bc8695781ef608', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'cell-product/202605/24/940d2a36e39742df97c65c02688f77a2.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 12:45:01', NULL, '2026-05-24 12:45:01', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('3f529e99cc5a4c99a1108ef63e3d52dd', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol-finance-refund/202605/17/f91893b9af5f4c959427aa608cb509ce.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 11:25:00', NULL, '2026-05-17 11:25:00', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('414d8f1ce48846a9a5642d40667be2b1', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'cell-product/202605/24/50d7a85b07414be99e2f6e454e683722.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 12:44:32', NULL, '2026-05-24 12:44:32', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('41acce5fc91a4380810a41529fff29ef', NULL, NULL, '0f6f9e20c16004e044e94c800b0aab2d.jpg', 'jpg', 'channel-service-order/202605/25/56aff6c41fd74dfc983d4bbfd95738b0.jpg', 394391, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:35:42', NULL, '2026-05-25 17:35:42', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('42bfad1612ed47179934fdd9d9cf713e', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'cell-product/202605/21/68ae0c5fc2664fc7b980638f2bdfddc1.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 13:13:02', NULL, '2026-05-21 13:13:02', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('43552c5ac7654636852d7911550d9454', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'cell-product/202605/21/b479f2c4c973469c8713eb35335d8e22.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 12:39:37', NULL, '2026-05-21 12:39:37', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('436b7731d2524318861af15a9360dd8b', NULL, NULL, '0fb7a9ee09724a46bfc8b85cbaeb21c3.jpeg', 'jpeg', 'qc-lab/202605/24/72b1254090d045b5a71dfd9171b22a52.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 16:42:39', NULL, '2026-05-24 16:42:39', 0);
@@ -131,9 +137,11 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('450f9b2d73414a2ea388a2285b85d2a2', NULL, NULL, '72e2e0adb8d2bebfa0ca25e44dac8fb0.jpg', 'jpg', 'qc-lab/202605/24/f8b8efd74e90438fba15a0b74a736aaf.jpg', 148212, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 09:16:06', NULL, '2026-05-24 09:16:06', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('4596238b2081423a9fa329bb74bcf697', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol/202605/14/d55b8aef127a42a2bfdbc29c4fb85bd8.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:33:04', NULL, '2026-05-14 21:33:04', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('45b07303e0744ecd9df305a01d60a12e', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'fullmoon-todo/202605/20/a991c3a2196e43d699d78ec579009432.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-20 12:46:51', NULL, '2026-05-20 12:46:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('460493b24c874fb4a6f8ff6e24d2a9ad', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'channel-service-order/202605/25/2e4cb84f7b9c4c86894e61e6340f36d8.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:36:41', NULL, '2026-05-25 16:36:41', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('46dd53002bcd4ef1871f94f36f13e2dd', NULL, NULL, '0f6f9e20c16004e044e94c800b0aab2d.jpg', 'jpg', 'sample-reception/202605/20/83d767bd2cfb4bb38e11753b0b163719.jpg', 394391, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-20 13:21:06', NULL, '2026-05-20 13:21:06', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('4767dcd9bc4045089be5bc4d131ee32d', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'cell-product/202605/23/b7b4d6fc321342c1a1eeca005253b19a.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 11:18:16', NULL, '2026-05-23 11:18:16', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('4781e55ce6d64c34a5897d687372179f', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'donation-consent/202605/19/10bae9d643b346c786a457bdada9ea78.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 10:21:14', NULL, '2026-05-19 10:21:14', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('47e7738b22e04460b09b4249961fe9dd', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'channel-service-order-refund/202605/25/a0eb2c7225144fc9af0c1a9d71fe00de.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:28:50', NULL, '2026-05-25 18:28:50', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('488079bd615f4b37958e573f1fa4c9b2', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'cell-product/202605/22/259b7e6d5dc24708a494ec691cc94755.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-22 11:42:17', NULL, '2026-05-22 11:42:17', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('4925da4dc1fe4e668d555f6207ad8a34', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'protocol-payment-refund/202605/17/b4dbf7f9233a4644bd33a18e8b0f7a14.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 11:10:46', NULL, '2026-05-17 11:10:46', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('4a0dd9999cb7407e8586b9a12e51e7e5', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'sample-reception/202605/19/a37dcf7d6a6c4df5b9f824daddfac61d.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 16:21:57', NULL, '2026-05-19 16:21:57', 0);
@@ -156,6 +164,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('54ddaaf36d694b679834db3204432a08', NULL, NULL, '0fb7a9ee09724a46bfc8b85cbaeb21c3.jpeg', 'jpeg', 'sample-reception/202605/20/2ee0758e103141ba954f35b6a5a90cc5.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-20 13:21:06', NULL, '2026-05-20 13:21:06', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('5561abcd2cb5489588c7d377334d0cf0', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'channel-service-order/202605/24/353084f4e5e84c28a5869a43bcd9a6eb.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:24:51', NULL, '2026-05-24 21:24:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('56e73b0453ad4f8f9900b005309de14e', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'qc-lab/202605/20/653fcae4426e4a0c9559d22fa971e5ce.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-20 06:24:02', NULL, '2026-05-20 06:24:02', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('57322ef69040481783f31a2a4b0e85f5', NULL, NULL, '0f6f9e20c16004e044e94c800b0aab2d.jpg', 'jpg', 'channel-service-order-finance/202605/25/ab5f0e4b97e84addb74f1e9ab0d6a6e0.jpg', 394391, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:35:36', NULL, '2026-05-25 18:35:36', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('582554afdd9948e79b479a0f9f37de29', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'channel-service-order/202605/24/498a82d2ecd6448ca0ced7ce2bfeb4a0.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:47:04', NULL, '2026-05-24 21:47:04', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('58401177ce0f4bf0b2e50e87769f82b0', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'protocol-payment-refund/202605/17/e59fb6b0393247da990ec242e66fc951.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 11:26:11', NULL, '2026-05-17 11:26:11', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('588f2807738840989b9d40ca5623ba32', NULL, NULL, '0fb7a9ee09724a46bfc8b85cbaeb21c3.jpeg', 'jpeg', 'protocol-payment/202605/16/a0152723d46944fba45571f73ee080ef.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 22:51:06', NULL, '2026-05-16 22:51:06', 0);
@@ -167,12 +176,14 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('5fd0058f42e74159b44f5dcae675f9fe', NULL, NULL, '0fb7a9ee09724a46bfc8b85cbaeb21c3.jpeg', 'jpeg', 'protocol/202605/16/423b5e5596d547e4adba4f87f9df12a4.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 20:11:51', NULL, '2026-05-16 20:11:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('618f842474ba4df38a83caba5d35121d', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol-finance-refund/202605/17/3894db6f28904f96b8a59eb1bc9b139d.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 16:00:51', NULL, '2026-05-17 16:00:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6267f25395e1488d9f99f0feb2090734', NULL, NULL, '杭州第一技师学院数字化校园建设招标文件5.8定稿(2).docx', 'docx', 'channel/202605/18/fc77e3f527b24d8abf57b4c3900fb531.docx', 226358, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-18 17:47:04', NULL, '2026-05-18 17:47:04', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('641cfa8880ac49378fa1f31a7e424263', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'channel-service-order-finance/202605/25/bdb0fb6da3d84ff9a3316adcf5f24435.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 19:22:32', NULL, '2026-05-25 19:22:32', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('658839504d7343589e342dca47a72791', NULL, NULL, '2a29963d0f9742eaa309db37c855cafd.docx', 'docx', 'protocol-finance-refund/202605/17/17deef041fea4d77b061aa26d72b8606.docx', 226358, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 15:55:36', NULL, '2026-05-17 15:55:36', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('668b2631421a4ad5b92d56443c0992b1', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol-finance-refund/202605/17/020923af57bd426aa246a96b30d07618.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 16:00:45', NULL, '2026-05-17 16:00:45', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('66b24e2703084fa19f9f657d7bfcf364', NULL, NULL, '0f6f9e20c16004e044e94c800b0aab2d.jpg', 'jpg', 'protocol/202605/17/17c6f1176d614d869dfc6c3df752e21a.jpg', 394391, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 21:39:59', NULL, '2026-05-17 21:39:59', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('678e395fced9426dad3cc12a7b29b5e5', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'cell-product/202605/21/76c8166d489e40de9689b8e308b38b70.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 12:56:11', NULL, '2026-05-21 12:56:11', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('67e2cfdc9db74ff4b977198bffacacfe', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'qc-lab/202605/20/6d920d2069ad46008597075fd7c232a7.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-20 06:24:08', NULL, '2026-05-20 06:24:08', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('68758816bd764d838e9873068b7ca048', NULL, NULL, '2a29963d0f9742eaa309db37c855cafd.docx', 'docx', 'channel/202605/18/fc9e6c6569174fb58e3a21973d7dc300.docx', 226358, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-18 13:52:50', NULL, '2026-05-18 13:52:50', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('68d303578ec44f3ba1251de93c42c8fb', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (2).jpeg', 'jpeg', 'channel-service-order/202605/25/4be33fb523f2401cb2add272be35c4ba.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:04:48', NULL, '2026-05-25 16:04:48', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6a29a2e40b7644a8ba9f7a874127edca', NULL, NULL, '4fa5d72f3507c3405b352f90ddc33b10.jpeg', 'jpeg', 'protocol/202605/23/e559383b509a49ecae0f37bfea61d9db.jpeg', 75175, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 21:52:57', NULL, '2026-05-23 21:52:57', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6ac61937dd834d05a96590dae6238653', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'qc-third-party/202605/24/eecfab0b2b8348b5b32a835b4cb576ba.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 16:40:50', NULL, '2026-05-24 16:40:50', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6b2949f4aecf4b1db2e10727d42cdf9a', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol-payment/202605/19/fec1af028eaf42e7a8f774d7ec739827.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 16:07:41', NULL, '2026-05-19 16:07:41', 0);
@@ -180,6 +191,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6bf4c08857064b58a34944bac80ac0ef', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'fullmoon-todo/202605/20/5efe946318054ffa9abf73f4d4b80cb7.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-20 12:40:38', NULL, '2026-05-20 12:40:38', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6c6502c3c2d1407b8f3d47e258c69189', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol-finance-refund/202605/17/2847681fe6b64c0d955cba2bd608d370.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 15:55:35', NULL, '2026-05-17 15:55:35', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6db59e6c7a03477dad6fb650491d17cb', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'cell-product/202605/22/741cb249f5ed4fa2bffef100359afdaf.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-22 11:23:51', NULL, '2026-05-22 11:23:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6e0ad855c1494f478fdbdfb1766a4cc7', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (2).jpeg', 'jpeg', 'channel-service-order-finance/202605/25/e29fd77637a747989de9e1ee276de6ce.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:43:14', NULL, '2026-05-25 16:43:14', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6e9bc86cfe7946759053506e76e5f865', NULL, NULL, '副本天台技师数字化校园平台采购需求V1.0.docx', 'docx', 'protocol/202605/14/2ee32cfd619740e3a828ecba0d74e1c8.docx', 212013, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:33:04', NULL, '2026-05-14 21:33:04', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6ee91cf1c5434cabab629c3399a0b971', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'qc-third-party/202605/19/dc850626abf14ce49f2faa120a189f67.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 17:23:22', NULL, '2026-05-19 17:23:22', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('70238024ab8b48e7b1228ce187ee5dcc', NULL, NULL, '41220600e115a477c85997e46ae6bdd3.jpeg', 'jpeg', 'sample-reception/202605/23/aa5f0bd3656c4b3b83b24353b6b68453.jpeg', 222083, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 15:16:46', NULL, '2026-05-23 15:16:46', 0);
@@ -190,6 +202,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('74769f518bff4d6780e088e6beb9a02a', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'channel-service-order-finance/202605/24/face91db0bd84d4d8c2ae9982d68b8a3.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:47:51', NULL, '2026-05-24 21:47:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('752f52f7ae2a4c6aa9ec9018b680d9e6', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'qc-lab/202605/20/eea8f9bf23374ddd918dd98739d1a920.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-20 06:24:08', NULL, '2026-05-20 06:24:08', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('7540d15fbe594fc991b9a9a4a639e209', NULL, NULL, '4fa5d72f3507c3405b352f90ddc33b10.jpeg', 'jpeg', 'sample-reception/202605/23/a0fbe08dc4dc4d43bd52f65bb31810f3.jpeg', 75175, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 15:16:38', NULL, '2026-05-23 15:16:38', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('762a90ab31d5404787f4dca7cb8940a1', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'channel-service-order/202605/25/c82040d336794612a275aa6781c4c35e.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:43:38', NULL, '2026-05-25 18:43:38', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('769f9d5555a84671838965bab460f760', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol/202605/14/24031c9a311740d09be61c5a406400d3.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:06:18', NULL, '2026-05-14 21:06:18', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('76ed110b60914cb4ac32be14d00b6237', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'qc-lab/202605/24/e7ad4285d26049158b3f4777fc267216.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 16:41:57', NULL, '2026-05-24 16:41:57', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('78a95da3384740fa97306b1ababbb2d3', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'channel-service-order/202605/24/98b0f061f9ea43c1b3bda70d3624d9af.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:27:11', NULL, '2026-05-24 21:27:11', 0);
@@ -208,6 +221,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('88cab14ff87c4c6e970875d28cbe2bb4', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol-finance-refund/202605/17/939c8285eb134cd4a2de9a81bb3766fc.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 15:58:39', NULL, '2026-05-17 15:58:39', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('8b91032f37b84f0f9dbd487ee03eb38e', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'fullmoon-todo/202605/20/7cf285956f114fd7b7e75ba296a4ca61.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-20 12:46:51', NULL, '2026-05-20 12:46:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('8bc7df1435b24f33b0ea06648f43632a', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'cell-product/202605/23/e4371cc2eefc498ca536d164734ca91b.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 10:53:42', NULL, '2026-05-23 10:53:42', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('8c2cfcc2018f4d8599a9d70786c2d306', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'channel-service-order/202605/25/ff97bd7cf41d4ed09f910ef71e83f27b.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:30:46', NULL, '2026-05-25 16:30:46', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('8e510e29ab0346dab0d1c81f0eaaf8e9', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'cell-product/202605/23/70b79644a4524287930cb60be577e8b2.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 10:53:42', NULL, '2026-05-23 10:53:42', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('8ea9f73ac24a466c9723dd2f7a87b3b6', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'cell-product/202605/23/fc6e6baf98cc445fb9b6f04bbac01041.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 11:29:27', NULL, '2026-05-23 11:29:27', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('8f2c1fe0f2fb4a44ab8ad67b40b5f70c', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'protocol/202605/16/68de6647c726467a8d7fcaf3d605cac1.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 18:49:49', NULL, '2026-05-16 18:49:49', 0);
@@ -215,6 +229,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9166830ced8c43e0a03c9f1caade62df', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'channel-service-order/202605/24/58292175be174b4a81115e2b497b7cb4.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:46:22', NULL, '2026-05-24 21:46:22', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9182ea4f50a44dfd8bfabbd4200c7ce2', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'sample-reception/202605/21/a945f693e4a042509ebc370ac51c195b.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 09:57:51', NULL, '2026-05-21 09:57:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9231ba65b7894b50a11c0a34a8552d4c', NULL, NULL, '安庆师范.md', 'md', '202605/18/336f4cad9ed940999c5451283f0d0e28.md', 9193, 'text/markdown', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-18 16:44:54', NULL, '2026-05-18 16:44:54', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9287cfffa97b4378a8e37b43a63b606e', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'channel-service-order-finance/202605/25/fcf6d1933fd74a099f085d7326b877a5.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:47:45', NULL, '2026-05-25 16:47:45', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('939ed3e8b0de4d5f90d6cde053edeeec', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'protocol-finance-receipt/202605/19/49f105474ffb4644bfe4220dbdadd605.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 16:08:46', NULL, '2026-05-19 16:08:46', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('94df7cac7d86466f8690e360a35950f7', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol-finance-refund/202605/17/a52b6f3d31d743d08064647466f53060.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 15:50:53', NULL, '2026-05-17 15:50:53', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9672934a7a9c40ff917e9bbabb027b9c', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol-payment-refund/202605/17/e53fe4c8924e4995a01619e792f1f8d1.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 11:10:49', NULL, '2026-05-17 11:10:49', 0);
@@ -224,12 +239,15 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('981eecf713bf41b7b4eeb775f7bd0964', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'channel-service-order-finance/202605/24/145b5e42e6954b079a65e9fb2eaeea72.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:46:41', NULL, '2026-05-24 21:46:41', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('98c5b11ffd5a4293b4739b200c2aca0b', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'cell-product/202605/23/e62f2f2425c3495fb2635daa3743c3ef.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 11:11:46', NULL, '2026-05-23 11:11:46', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('99863c9144174b58b01868e171dcf6e3', NULL, NULL, '副本天台技师数字化校园平台采购需求V1.0.docx', 'docx', 'protocol/202605/14/689d6f1939b14e6ca02442b3e46abf51.docx', 212013, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:06:19', NULL, '2026-05-14 21:06:19', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('99b97033bf7340a7a3d3d388c3a72294', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'channel-service-order/202605/25/f860e46b841148038e672495334f566d.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:04:44', NULL, '2026-05-25 16:04:44', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9a361b8b14b54225ad7a665c9a7ef744', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'cell-product/202605/23/5117aa31ea004483b80e7c9e86f80ced.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 10:53:42', NULL, '2026-05-23 10:53:42', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9b09688ac86b4d15bed667e9f48de68d', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'qc-third-party/202605/21/e654d8aa2a624463a349e9ddd6bb1052.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 10:27:02', NULL, '2026-05-21 10:27:02', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9c549ff7ea4f45dbb7c3b13188062a2e', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'qc-third-party/202605/24/f007181b3615431e85d972f2eda0f32b.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 09:15:04', NULL, '2026-05-24 09:15:04', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9cf1634c23d84272855c2ce5592a58b4', NULL, NULL, '菠菜.jpg', 'jpg', 'channel/202605/18/0a51342a694144898d4d77509cdcabb0.jpg', 390090, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-18 13:52:02', NULL, '2026-05-18 13:52:02', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9d5e691136684c4fb7ffc90280a039ea', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol/202605/14/e6757c3083d9453e838bf7ed6032d95a.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:27:45', NULL, '2026-05-14 21:27:45', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9dd27100ece5467193fbc772daef475a', NULL, NULL, '1.jpg', 'jpg', 'protocol/202605/16/2b7c4a54e7584b96884d9993a02c0dcb.jpg', 16907, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 18:40:56', NULL, '2026-05-16 18:40:56', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9e0cb62a50dc40459e10fc7f30fafec4', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'channel-service-order-finance/202605/25/c2438a83d90348a7a50a25f3a9b3476e.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:33:04', NULL, '2026-05-25 18:33:04', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9f3615617bbf4091a280c57f311cb880', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'channel-service-order/202605/25/e0e350d57ede4a528cc590bf6e7879a8.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:04:47', NULL, '2026-05-25 16:04:47', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('a1b2b296885b432aa83a03e5ed10c390', NULL, NULL, '1.jpg', 'jpg', 'protocol-payment/202605/16/1e25c285eda94965af90352921fb365f.jpg', 16907, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 20:06:18', NULL, '2026-05-16 20:06:18', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('a1c50a5dc42d4b299f97e0bf4ce16cce', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'protocol-finance-receipt/202605/17/e547ff23eac542c994dc4d57d9e35ed8.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 15:44:59', NULL, '2026-05-17 15:44:59', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('a2199b2ca477458787cc2f02894711c8', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'qc-lab/202605/21/4e2dabe185684eb9bd388b5075f9bd34.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 10:43:29', NULL, '2026-05-21 10:43:29', 0);
@@ -239,8 +257,12 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('a35e18f3e38844e9b62c8dfddcb5c44d', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'sample-reception/202605/17/d7082b67b3984db293ffec6a401c3d03.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 16:27:55', NULL, '2026-05-17 16:27:55', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('a70fbd1ce7484e5cab21a80bfc420fac', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', '202605/21/fc5fdb71363547efb31602aedc3d3058.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 12:11:02', NULL, '2026-05-21 12:11:02', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('a8c3d920482b467389b357db12677e51', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'storage-cert/202605/20/34a264de92754a75a4a764fdfdf14409.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-20 10:23:00', NULL, '2026-05-20 10:23:00', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('a8e91078c95c49eb90c85757b9aae051', NULL, NULL, '61bc795a0d6983684588eb67c7fff04c.jpg', 'jpg', 'channel-service-order-finance/202605/25/0c431416fc2444a4a7975867ee3c2a48.jpg', 784667, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:52:52', NULL, '2026-05-25 18:52:52', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('a90fefb237a54c1592a861132f39edea', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'sample-reception/202605/24/ece8100fca5947bfa8373dfeabb2f148.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 10:58:09', NULL, '2026-05-24 10:58:09', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('aa257881ac0646aa8f16d6dac586557f', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'channel-service-order-finance/202605/25/c0474c3d917d4611ab1ae9c32602fba5.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:55:56', NULL, '2026-05-25 17:55:56', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('aa3e29215c684ab6a50dfe58067777ec', NULL, NULL, '4fa5d72f3507c3405b352f90ddc33b10.jpeg', 'jpeg', 'channel-service-order-refund/202605/25/bf70f26a2b3041afbf727071c4c4c383.jpeg', 75175, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:21:12', NULL, '2026-05-25 18:21:12', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('aa68e5bd5f5740ada88c87ff88966308', NULL, NULL, '2f46cda665504a87ab28a3d28b582fc7.jpg', 'jpg', 'protocol-finance-receipt/202605/19/886632127b4d4a299a71bbfaa5d54fc9.jpg', 452488, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 16:35:08', NULL, '2026-05-19 16:35:08', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ab2f97f3355140eb9f15abedfb13d333', NULL, NULL, '0f6f9e20c16004e044e94c800b0aab2d.jpg', 'jpg', 'channel-service-order-finance/202605/25/9b96344f881b4d179eb22c05e2d6fa9a.jpg', 394391, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 19:25:50', NULL, '2026-05-25 19:25:50', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ac355579a5ec481d977205a811ff5770', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'protocol-finance-refund/202605/24/72e17b57ff1e4c008395fe44ff87c934.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 09:03:36', NULL, '2026-05-24 09:03:36', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ad50d5e0a5c0473a9ea179669721ceb5', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'qc-third-party/202605/21/c9250b6b959545b0b5f9fdcc277a6d42.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 10:26:44', NULL, '2026-05-21 10:26:44', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('adbae6a74a194c589ebe156082b2b07b', NULL, NULL, '0f6f9e20c16004e044e94c800b0aab2d.jpg', 'jpg', 'cell-product/202605/21/7eaeb2dad63c4e7288bd0c4057e70416.jpg', 394391, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 12:56:12', NULL, '2026-05-21 12:56:12', 0);
@@ -249,14 +271,18 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b151c0f82536499598eff76a87ff6741', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'storage-release-review/202605/24/5feddb1d6bc7443f8e0fbf2b84613d53.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 17:13:52', NULL, '2026-05-24 17:13:52', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b1b5edb9aeca420dbe23e38402efcf7a', NULL, NULL, '0f6f9e20c16004e044e94c800b0aab2d.jpg', 'jpg', 'fullmoon-todo/202605/20/94513627d8514672b55fbd9c897b9b98.jpg', 394391, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-20 12:46:51', NULL, '2026-05-20 12:46:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b1d2ec9e28674d8bb22051ea23d2802f', NULL, NULL, '20239cd26cc0396fa345023b592eed22.jpg', 'jpg', 'protocol/202605/24/ffea1a9248384d868343948e6c83351c.jpg', 222329, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 09:05:32', NULL, '2026-05-24 09:05:32', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b1e519697b654c9f929e95b5975657e1', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (2).jpeg', 'jpeg', 'channel-service-order/202605/25/6aaaae424f16402d99686c2ad4d53ae2.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:30:45', NULL, '2026-05-25 16:30:45', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b2cd8627a8884bc489350f1cc6290f34', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (2).jpeg', 'jpeg', 'channel-service-order/202605/25/4d5f6c4b85ac4abebfa707712f0ffc26.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:41:24', NULL, '2026-05-25 17:41:24', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b501da0c397341f2959e3f9e0e60bb22', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol-payment/202605/16/dbbfe85a051641578642ff231fe531ca.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 22:50:01', NULL, '2026-05-16 22:50:01', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b5954bbe039a4931bd1d1b8ca3087574', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'qc-third-party/202605/24/8bc88745d5e0409284ddb4528d6022e2.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 16:38:14', NULL, '2026-05-24 16:38:14', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b5dc5e8b6ed2484bbc6ab7a6a242f6f9', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'protocol-finance-refund/202605/17/190e67dfc1db4f178090fb6cd0b33be6.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 15:56:02', NULL, '2026-05-17 15:56:02', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b8e14ceb41f54731926fc7470dd6d9e5', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol/202605/21/fd928fc48a4d4ee3ae72c94c658e01fe.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 09:30:46', NULL, '2026-05-21 09:30:46', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b9361efa24814129b9efc406bf2e8147', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'channel-service-order/202605/25/96e324a803d145f1bc4441aa0dbc37ab.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 15:42:40', NULL, '2026-05-25 15:42:40', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('b93fecc4a4064a57941cdfeca6d492e4', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol/202605/17/a9c200ba90354902a0572d22035d66cb.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 21:17:25', NULL, '2026-05-17 21:17:25', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ba0020fca2964a41857c1d7a0de40e30', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol/202605/14/cd9d2c39eefe47cfb03099ca88f5d5d9.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 22:00:36', NULL, '2026-05-14 22:00:36', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ba563235f99a4b4fa2824f0464cbbbd5', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'protocol/202605/14/df03665c547c47dab79c38fe3ba0874d.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:29:35', NULL, '2026-05-14 21:29:35', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('bbcdc678b32f4d13b61cd6e6b3576efb', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'sample-reception/202605/21/9701de6a21ee44ac87441b7eadca9b6f.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 09:57:51', NULL, '2026-05-21 09:57:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('bccc987023cc486b95c7db123dde4e88', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'channel-service-order-finance/202605/25/ed63b35b5b9445e0abb7dca9f390efc6.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:35:13', NULL, '2026-05-25 18:35:13', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('bcd9e535dd13414193dd146df9f6737c', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'sample-reception/202605/17/567ae8a12ec647afbfe4ac8307fa0858.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 16:26:38', NULL, '2026-05-17 16:26:38', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('bced760d55b54e1d871f6070434d26b8', NULL, NULL, '12e76fd99601089bcc12c83726407efe.jpg', 'jpg', 'protocol/202605/23/e978b0d754d44218b30f2fccd97d6504.jpg', 292893, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 22:00:44', NULL, '2026-05-23 22:00:44', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('bdcde934f6d147da9246ba774007aaae', NULL, NULL, '1a1500fd4bd94d859d60c89438ca0502.jpeg', 'jpeg', 'fullmoon-todo/202605/21/44ff721742b547539b2ea602af3966ed.jpeg', 898736, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 09:54:00', NULL, '2026-05-21 09:54:00', 0);
@@ -267,6 +293,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('c09179a1918d4cfeb4bbeaeb67d96c27', NULL, NULL, '0eee40147c69c50aa9701cb27fe1b73c.jpeg', 'jpeg', 'cell-product/202605/23/6c229b5e92cd417aa542314b99bfca05.jpeg', 77222, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-23 10:53:42', NULL, '2026-05-23 10:53:42', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('c1be951522654fb190b3549b71b8ccd8', NULL, NULL, '杭州第一技师学院数字化校园建设招标文件5.8定稿(2).docx', 'docx', '202605/18/d888b84be03245d4b12448b5f27ea864.docx', 226358, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-18 17:23:42', NULL, '2026-05-18 17:23:42', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('c1c5738c42a34755967824cc53a8d477', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol/202605/14/5a0644ac91b649328f81b5e7661f554f.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:04:51', NULL, '2026-05-14 21:04:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('c28f9918b3c647ccb4e1c5f82f2c6593', NULL, NULL, '0f6f9e20c16004e044e94c800b0aab2d.jpg', 'jpg', 'channel-service-order/202605/25/1c84b000fa004a8cab1113c59a1e4c8e.jpg', 394391, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 15:42:40', NULL, '2026-05-25 15:42:40', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('c5d7def9fa44441d961f3cd131c75348', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'channel-service-order-finance/202605/24/dade1c7abd554df18dcc70a844e76486.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:25:23', NULL, '2026-05-24 21:25:23', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('c644b7d355cb4f53be00a7ab6717dd5b', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol-payment-refund/202605/24/2c9eef7efa254717ac5201429c5d60f9.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 09:02:27', NULL, '2026-05-24 09:02:27', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('c7bf249ea2a942fb8ecf65769ad6e0d3', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'fullmoon-todo/202605/20/560a9342012d42fb9524254bde745222.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-20 12:13:03', NULL, '2026-05-20 12:13:03', 0);
@@ -276,6 +303,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('cdb8df10e4204eacbb22eba7e3a938ed', NULL, NULL, '2a29963d0f9742eaa309db37c855cafd.docx', 'docx', 'qc-third-party/202605/19/b72fe9707e6946d083554dd4be7e47b1.docx', 226358, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 17:23:22', NULL, '2026-05-19 17:23:22', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ced3d9c7f96e4367ad3a7e848b2b58b3', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol-payment/202605/16/166a14791ee045e2b33a69d58efb94ca.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 22:50:48', NULL, '2026-05-16 22:50:48', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d06a4823c1a84c2e9af497250c449ea2', NULL, NULL, '1.png', 'png', 'donation-other/202605/19/701f3c7248044020b29fc6802fe1aa87.png', 50295, 'image/png', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 10:32:48', NULL, '2026-05-19 10:32:48', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d166dc4860bc4f20a17a3f593cbf46a1', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (2).jpeg', 'jpeg', 'channel-service-order/202605/25/c15599885aed4043ae27669c99474d84.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:36:08', NULL, '2026-05-25 16:36:08', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d167c6b747414046bbc585eee3623393', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'storage-cert/202605/20/e59592f2229647b0aa2098d687cd0234.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-20 10:23:00', NULL, '2026-05-20 10:23:00', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d1c8d11b68aa4cbabb22bf6d21ca8af5', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol/202605/14/7fe75c363a2943a6a80540fac5647dd8.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 22:02:22', NULL, '2026-05-14 22:02:22', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d248924acfae4b95ae3f97f10a114119', NULL, NULL, '2a29963d0f9742eaa309db37c855cafd.docx', 'docx', 'channel/202605/18/7f801fb4595441aca9e53041f1a31576.docx', 226358, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-18 13:52:03', NULL, '2026-05-18 13:52:03', 0);
@@ -318,9 +346,12 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ea74df17c28d4164a352500b495a9e73', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'protocol/202605/17/bbbe8532b47c42b388b8298a9ccc4a88.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 16:10:58', NULL, '2026-05-17 16:10:58', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ea8b7674842b46c99c4881a2643f2d74', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'cell-product/202605/21/a0c8455e60574177a9ae03d0e26ad58e.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 13:13:01', NULL, '2026-05-21 13:13:01', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ecca20a7a8624af3b0134926beaed7d4', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'fullmoon-todo/202605/21/1f8a9f7ed11c45299a8b4a7c036f1a4b.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 09:53:24', NULL, '2026-05-21 09:53:24', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ee40e26ea8ad42d6ae1a4016a4c88936', NULL, NULL, '67a69585b94c565aba4d8e8a87360197.jpg', 'jpg', 'channel-service-order/202605/25/58a61c4f7cb1419697304ed185d2af0b.jpg', 139643, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:37:32', NULL, '2026-05-25 17:37:32', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ef94e9a32efc4652bc2abaa579407b03', NULL, NULL, '0aab48e2ff412201e89667ef5a1465b1.jpeg', 'jpeg', 'cell-product/202605/21/79f4f26e882a4ad09b70ef6fc0a17066.jpeg', 30578, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 13:13:02', NULL, '2026-05-21 13:13:02', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('f020c18dd8374e1298514ec4aeaabd94', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (2).jpeg', 'jpeg', 'channel-service-order-finance/202605/25/72225a0aa8f2471fadc9da2f5a5c7d7c.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:21:48', NULL, '2026-05-25 18:21:48', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('f0cfa4f3bfa24c538962d99a9e47269e', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol/202605/16/6613f29a297f4184a0213029727715c3.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-16 21:20:59', NULL, '2026-05-16 21:20:59', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('f158b8c8c8bb43ccb8883fc01b2e702b', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'fullmoon-todo/202605/24/7ec506e92c4b4d3ea923fcba51444328.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 17:47:51', NULL, '2026-05-24 17:47:51', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('f2b977f04bea4b3ca3b7a982dbb35bd9', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1) (1).jpeg', 'jpeg', 'channel-service-order/202605/25/4b7b80dfbf414c9cb635a8b9208e2a03.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:55:23', NULL, '2026-05-25 16:55:23', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('f3271585de564994bb9da319c249a75b', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'cell-product/202605/24/9d65852270224b138d41baf39697cbaf.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 12:45:01', NULL, '2026-05-24 12:45:01', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('f3f5b49cdda74a47a37f32f4f0717138', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'protocol/202605/14/f04337d738fd4cec97017b7656e1f366.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-14 21:27:48', NULL, '2026-05-14 21:27:48', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('f5b63eb8b490471198d5906824ee7e9c', NULL, NULL, '0f6f9e20c16004e044e94c800b0aab2d.jpg', 'jpg', 'qc-lab/202605/22/c0fe18ffbacb490fa5148deef3d7df0f.jpg', 394391, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-22 14:30:06', NULL, '2026-05-22 14:30:06', 0);
@@ -330,6 +361,7 @@ INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_na
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('fa57c04fa24f49a7994fe962304c3edc', NULL, NULL, '贝贝南瓜.jpg', 'jpg', 'channel/202605/18/a8c5d984968a4c8f9c7f2441ed4cccd8.jpg', 382308, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-18 13:46:42', NULL, '2026-05-18 13:46:42', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('fb581e09002043e89ffaeb4eef60533e', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc (1).jpeg', 'jpeg', 'protocol-finance-refund/202605/19/25bebd8c580641d4a846ee893bb52dff.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-19 16:24:07', NULL, '2026-05-19 16:24:07', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('fdcad9dda293423e8c005fced8fd4a96', NULL, NULL, '0cc02a211bdcaaa15ae4b8b62dabd3dc.jpeg', 'jpeg', 'qc-lab/202605/24/3bfa997445b84ef6936fe0d47c8efcb7.jpeg', 17985, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 16:41:16', NULL, '2026-05-24 16:41:16', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('fed955b985c74fa6ba179e2960c54812', NULL, NULL, '0f6f9e20c16004e044e94c800b0aab2d.jpg', 'jpg', 'channel-service-order/202605/25/aea1c54a6650450c8f823a5dbde335dc.jpg', 394391, 'image/jpeg', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:29:44', NULL, '2026-05-25 18:29:44', 0);
INSERT INTO `biz_attachment` (`id`, `business_type`, `business_id`, `original_name`, `file_ext`, `file_url`, `file_size`, `file_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('fff50de6bac64ac683fc5ec6c4c1783a', NULL, NULL, '2a29963d0f9742eaa309db37c855cafd.docx', 'docx', 'protocol-payment/202605/17/c32740a2cdd4406f8b868d0bf2b618e7.docx', 226358, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'zkxw', NULL, NULL, 'd3000000000000000000000000000001', '', '2026-05-17 21:21:07', NULL, '2026-05-17 21:21:07', 0);
COMMIT;
@@ -452,10 +484,15 @@ CREATE TABLE `biz_cell_product_price` (
-- Records of biz_cell_product_price
-- ----------------------------
BEGIN;
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('03510A92D2F94F71B74258DF8E0F76E9', '5亿CIK细胞', 'xmbm00003', 'CIK', 'CIK细胞', '5*10⁸', '0B37A553466346AA88C405F663501143', 'A10DAEB8A9F44CABACE5A001C9DFC247', 20000.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 12:19:59', 'd3000000000000000000000000000001', '2026-05-18 12:19:59', 0);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('0712E43EDC384548A2CC4A71DD7D5F9F', '项目名称1', '项目编码1', 'HSC', 'HSC(造血干细胞)', '50*10⁸', '9B412C797D6848BAAB100A0E9DD46F43', '7A95A37DCCE343D3B5CB37E444EDE840', 2222.00, 'zkxw', 0, '111222', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 04:45:32', 'd3000000000000000000000000000001', '2026-05-21 04:45:48', 0);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('3557DDBD12ED45438F48F0487FA658E6', '50亿CAR-T细胞', 'xmbm00002', 'CAR-T', 'CAR-T细胞', '50*10⁸', '9B412C797D6848BAAB100A0E9DD46F43', '64584C840E9545F2A6BDA4C8DEE877DF', 230000.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 12:19:34', 'd3000000000000000000000000000001', '2026-05-18 12:19:34', 0);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('40BDCA8A87F54335A24DEEC7D44BC4E4', '5亿CAR-T细胞', 'xmbm00001', 'CAR-T', 'CAR-T细胞', '5*10⁸', '0B37A553466346AA88C405F663501143', '64584C840E9545F2A6BDA4C8DEE877DF', 29880.00, 'zkxw', 0, '备注', 'd3000000000000000000000000000001', '', '2026-05-18 12:18:55', 'd3000000000000000000000000000001', '2026-05-18 12:18:55', 0);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('03510A92D2F94F71B74258DF8E0F76E9', '5亿CIK细胞', 'xmbm00003', 'CIK', 'CIK细胞', '5*10⁸', '0B37A553466346AA88C405F663501143', 'A10DAEB8A9F44CABACE5A001C9DFC247', 20000.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 12:19:59', 'd3000000000000000000000000000001', '2026-05-25 13:05:32', 1);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('0712E43EDC384548A2CC4A71DD7D5F9F', '项目名称1', '项目编码1', 'HSC', 'HSC(造血干细胞)', '50*10⁸', '9B412C797D6848BAAB100A0E9DD46F43', '7A95A37DCCE343D3B5CB37E444EDE840', 2222.00, 'zkxw', 0, '111222', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 04:45:32', 'd3000000000000000000000000000001', '2026-05-25 13:05:32', 1);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('3557DDBD12ED45438F48F0487FA658E6', '50亿CAR-T细胞', 'xmbm00002', 'CAR-T', 'CAR-T细胞', '50*10⁸', '9B412C797D6848BAAB100A0E9DD46F43', '64584C840E9545F2A6BDA4C8DEE877DF', 230000.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 12:19:34', 'd3000000000000000000000000000001', '2026-05-25 13:05:32', 1);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('40BDCA8A87F54335A24DEEC7D44BC4E4', '5亿CAR-T细胞', 'xmbm00001', 'CAR-T', 'CAR-T细胞', '5*10⁸', '0B37A553466346AA88C405F663501143', '64584C840E9545F2A6BDA4C8DEE877DF', 29880.00, 'zkxw', 0, '备注', 'd3000000000000000000000000000001', '', '2026-05-18 12:18:55', 'd3000000000000000000000000000001', '2026-05-25 13:05:33', 1);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000021', '5亿CAR-T细胞', 'tst_xmbm00001', 'CAR-T', 'CAR-T细胞', '5*10⁸', 'TDP000000000000000000000000000012', 'TDP000000000000000000000000000001', 29880.00, 'zkxw', 1, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000022', '50亿CAR-T细胞', 'tst_xmbm00002', 'CAR-T', 'CAR-T细胞', '50*10⁸', 'TDP000000000000000000000000000013', 'TDP000000000000000000000000000001', 230000.00, 'zkxw', 2, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000023', '5亿CIK细胞', 'tst_xmbm00003', 'CIK', 'CIK细胞', '5*10⁸', 'TDP000000000000000000000000000012', 'TDP000000000000000000000000000002', 20000.00, 'zkxw', 3, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000024', '1亿MSC细胞', 'tst_xmbm00004', 'MSC', 'MSC(间充质干细胞)', '1*10⁸', 'TDP000000000000000000000000000011', 'TDP000000000000000000000000000003', 8800.00, 'zkxw', 4, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_price` (`id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000025', '5亿NK细胞', 'tst_xmbm00005', 'NK', 'NK细胞', '5*10⁸', 'TDP000000000000000000000000000012', 'TDP000000000000000000000000000004', 15000.00, 'zkxw', 5, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
COMMIT;
-- ----------------------------
@@ -485,6 +522,8 @@ CREATE TABLE `biz_cell_product_project_system` (
BEGIN;
INSERT INTO `biz_cell_product_project_system` (`id`, `system_name`, `system_code`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('31F6B1B3467D44ACAF0B80EDBD69E73A', '优惠套餐1', 'yhtc0001', '1', 'zkxw', 0, '备注', 'd3000000000000000000000000000001', '', '2026-05-18 13:00:55', 'd3000000000000000000000000000001', '2026-05-18 13:01:03', 0);
INSERT INTO `biz_cell_product_project_system` (`id`, `system_name`, `system_code`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6C351702EE1C48629204F7F2C4DCB132', '体系12', '体系编码12', '0', 'zkxw', 0, '备注12', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 04:48:00', 'd3000000000000000000000000000001', '2026-05-21 04:53:59', 0);
INSERT INTO `biz_cell_product_project_system` (`id`, `system_name`, `system_code`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000031', '标准价格体系', 'tst_bz001', '1', 'zkxw', 1, '测试数据-标准价', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_project_system` (`id`, `system_name`, `system_code`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000032', '中试优惠套餐', 'tst_yh001', '1', 'zkxw', 2, '测试数据-优惠价', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
COMMIT;
-- ----------------------------
@@ -540,6 +579,12 @@ INSERT INTO `biz_cell_product_project_system_item` (`id`, `project_system_id`, `
INSERT INTO `biz_cell_product_project_system_item` (`id`, `project_system_id`, `source_price_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('C46F61B86B2D42CC9877BAB14661FB1B', '6C351702EE1C48629204F7F2C4DCB132', '0712E43EDC384548A2CC4A71DD7D5F9F', '项目名称1', '项目编码1', 'HSC', 'HSC(造血干细胞)', '50*10⁸', '9B412C797D6848BAAB100A0E9DD46F43', '7A95A37DCCE343D3B5CB37E444EDE840', 200.00, 'zkxw', 0, '2', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 04:50:34', 'd3000000000000000000000000000001', '2026-05-21 04:52:34', 1);
INSERT INTO `biz_cell_product_project_system_item` (`id`, `project_system_id`, `source_price_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('D2EACC1F1C1F4168B67CC8ECF7892CC9', '6C351702EE1C48629204F7F2C4DCB132', '03510A92D2F94F71B74258DF8E0F76E9', '5亿CIK细胞', 'xmbm00003', 'CIK', 'CIK细胞', '5*10⁸', '0B37A553466346AA88C405F663501143', 'A10DAEB8A9F44CABACE5A001C9DFC247', 3000.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 04:48:56', 'd3000000000000000000000000000001', '2026-05-21 04:50:34', 1);
INSERT INTO `biz_cell_product_project_system_item` (`id`, `project_system_id`, `source_price_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('FEC4667403374561921210B2972C1690', '6C351702EE1C48629204F7F2C4DCB132', '40BDCA8A87F54335A24DEEC7D44BC4E4', '5亿CAR-T细胞', 'xmbm00001', 'CAR-T', 'CAR-T细胞', '5*10⁸', '0B37A553466346AA88C405F663501143', '64584C840E9545F2A6BDA4C8DEE877DF', 29880.00, 'zkxw', 0, '2', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 04:52:34', 'd3000000000000000000000000000001', '2026-05-21 04:54:00', 1);
INSERT INTO `biz_cell_product_project_system_item` (`id`, `project_system_id`, `source_price_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000041', 'TDP000000000000000000000000000031', 'TDP000000000000000000000000000021', '5亿CAR-T细胞', 'tst_xmbm00001', 'CAR-T', 'CAR-T细胞', '5*10⁸', 'TDP000000000000000000000000000012', 'TDP000000000000000000000000000001', 29880.00, 'zkxw', 1, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_project_system_item` (`id`, `project_system_id`, `source_price_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000042', 'TDP000000000000000000000000000031', 'TDP000000000000000000000000000023', '5亿CIK细胞', 'tst_xmbm00003', 'CIK', 'CIK细胞', '5*10⁸', 'TDP000000000000000000000000000012', 'TDP000000000000000000000000000002', 20000.00, 'zkxw', 2, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_project_system_item` (`id`, `project_system_id`, `source_price_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000043', 'TDP000000000000000000000000000031', 'TDP000000000000000000000000000024', '1亿MSC细胞', 'tst_xmbm00004', 'MSC', 'MSC(间充质干细胞)', '1*10⁸', 'TDP000000000000000000000000000011', 'TDP000000000000000000000000000003', 8800.00, 'zkxw', 3, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_project_system_item` (`id`, `project_system_id`, `source_price_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000044', 'TDP000000000000000000000000000032', 'TDP000000000000000000000000000021', '5亿CAR-T细胞', 'tst_xmbm00001', 'CAR-T', 'CAR-T细胞', '5*10⁸', 'TDP000000000000000000000000000012', 'TDP000000000000000000000000000001', 26800.00, 'zkxw', 1, '测试数据-9折', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_project_system_item` (`id`, `project_system_id`, `source_price_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000045', 'TDP000000000000000000000000000032', 'TDP000000000000000000000000000022', '50亿CAR-T细胞', 'tst_xmbm00002', 'CAR-T', 'CAR-T细胞', '50*10⁸', 'TDP000000000000000000000000000013', 'TDP000000000000000000000000000001', 190000.00, 'zkxw', 2, '测试数据-优惠价', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_project_system_item` (`id`, `project_system_id`, `source_price_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `spec_id`, `cell_product_type_id`, `unit_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000046', 'TDP000000000000000000000000000032', 'TDP000000000000000000000000000023', '5亿CIK细胞', 'tst_xmbm00003', 'CIK', 'CIK细胞', '5*10⁸', 'TDP000000000000000000000000000012', 'TDP000000000000000000000000000002', 18000.00, 'zkxw', 3, '测试数据-9折', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
COMMIT;
-- ----------------------------
@@ -566,12 +611,15 @@ CREATE TABLE `biz_cell_product_spec` (
-- Records of biz_cell_product_spec
-- ----------------------------
BEGIN;
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('0B37A553466346AA88C405F663501143', '5*10⁸', '5*10⁸', 'zkxw', 0, '5*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:15:15', 'd3000000000000000000000000000001', '2026-05-18 12:15:15', 0);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('5D48BA1DB99E4540A44886E1FE3F65CB', '3*10⁸', '3*10⁸', 'zkxw', 0, '3*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:15:03', 'd3000000000000000000000000000001', '2026-05-18 12:15:03', 0);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('778C3BEF1AC04358916BC9229AD3192B', '2*10⁸', '2*10⁸', 'zkxw', 0, '2*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:14:56', 'd3000000000000000000000000000001', '2026-05-18 12:14:56', 0);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9B412C797D6848BAAB100A0E9DD46F43', '50*10⁸', '50*10⁸', 'zkxw', 0, '50*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:15:24', 'd3000000000000000000000000000001', '2026-05-21 04:44:06', 0);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('B09CB55CF4C34741808D8F05E2D10A09', '1*10⁸', '1*10⁸', 'zkxw', 0, '1*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:14:46', 'd3000000000000000000000000000001', '2026-05-18 12:14:46', 0);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('D333799E31464BFFBF5CF508C896ABAD', '4*10⁸', '4*10⁸', 'zkxw', 0, '4*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:15:09', 'd3000000000000000000000000000001', '2026-05-18 12:15:09', 0);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('0B37A553466346AA88C405F663501143', '5*10⁸', '5*10⁸', 'zkxw', 0, '5*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:15:15', 'd3000000000000000000000000000001', '2026-05-25 13:05:19', 1);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('5D48BA1DB99E4540A44886E1FE3F65CB', '3*10⁸', '3*10⁸', 'zkxw', 0, '3*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:15:03', 'd3000000000000000000000000000001', '2026-05-25 13:05:19', 1);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('778C3BEF1AC04358916BC9229AD3192B', '2*10⁸', '2*10⁸', 'zkxw', 0, '2*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:14:56', 'd3000000000000000000000000000001', '2026-05-25 13:05:20', 1);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9B412C797D6848BAAB100A0E9DD46F43', '50*10⁸', '50*10⁸', 'zkxw', 0, '50*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:15:24', 'd3000000000000000000000000000001', '2026-05-25 13:05:19', 1);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('B09CB55CF4C34741808D8F05E2D10A09', '1*10⁸', '1*10⁸', 'zkxw', 0, '1*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:14:46', 'd3000000000000000000000000000001', '2026-05-25 13:05:20', 1);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('D333799E31464BFFBF5CF508C896ABAD', '4*10⁸', '4*10⁸', 'zkxw', 0, '4*10⁸', 'd3000000000000000000000000000001', '', '2026-05-18 12:15:09', 'd3000000000000000000000000000001', '2026-05-25 13:05:19', 1);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000011', '1*10⁸', '1*10⁸', 'zkxw', 1, '测试数据-1亿', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000012', '5*10⁸', '5*10⁸', 'zkxw', 2, '测试数据-5亿', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_spec` (`id`, `spec_code`, `spec_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000013', '50*10⁸', '50*10⁸', 'zkxw', 3, '测试数据-50亿', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
COMMIT;
-- ----------------------------
@@ -605,6 +653,10 @@ INSERT INTO `biz_cell_product_type` (`id`, `product_type_code`, `product_type_na
INSERT INTO `biz_cell_product_type` (`id`, `product_type_code`, `product_type_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('A10DAEB8A9F44CABACE5A001C9DFC247', 'CIK', 'CIK细胞', 'zkxw', 0, 'CIK细胞', 'd3000000000000000000000000000001', '', '2026-05-18 12:12:52', 'd3000000000000000000000000000001', '2026-05-18 12:12:52', 0);
INSERT INTO `biz_cell_product_type` (`id`, `product_type_code`, `product_type_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('A41DED3C495A4950B5436D026060DB6A', 'MSC', 'MSC(间充质干细胞)', 'zkxw', 0, 'MSC(间充质干细胞)', 'd3000000000000000000000000000001', '', '2026-05-18 12:11:48', 'd3000000000000000000000000000001', '2026-05-18 12:11:59', 0);
INSERT INTO `biz_cell_product_type` (`id`, `product_type_code`, `product_type_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('B18AD46E010C46FCAE504B401F0B4B5E', '13', '12', 'zkxw', 0, '14', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 04:41:35', 'd3000000000000000000000000000001', '2026-05-21 04:41:51', 1);
INSERT INTO `biz_cell_product_type` (`id`, `product_type_code`, `product_type_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000001', 'CAR-T', 'CAR-T细胞', 'zkxw', 1, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_type` (`id`, `product_type_code`, `product_type_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000002', 'CIK', 'CIK细胞', 'zkxw', 2, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_type` (`id`, `product_type_code`, `product_type_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000003', 'MSC', 'MSC(间充质干细胞)', 'zkxw', 3, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_cell_product_type` (`id`, `product_type_code`, `product_type_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000004', 'NK', 'NK细胞', 'zkxw', 4, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
COMMIT;
-- ----------------------------
@@ -672,6 +724,8 @@ BEGIN;
INSERT INTO `biz_channel` (`id`, `channel_name`, `credit_code`, `channel_type`, `contact_name`, `contact_phone`, `contact_email`, `protocol_attachments`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('28E940BB50AA43C4803AAD236DCAD343', '13123', '', '', '', '', '', '', 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 15:51:33', 'd3000000000000000000000000000001', '2026-05-18 15:51:40', 1);
INSERT INTO `biz_channel` (`id`, `channel_name`, `credit_code`, `channel_type`, `contact_name`, `contact_phone`, `contact_email`, `protocol_attachments`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('4F1E0F7B543C46438F7A65F1EDAFFF07', 'ceshi', '', '', '', '', '', '', 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 14:11:44', 'd3000000000000000000000000000001', '2026-05-18 15:13:40', 1);
INSERT INTO `biz_channel` (`id`, `channel_name`, `credit_code`, `channel_type`, `contact_name`, `contact_phone`, `contact_email`, `protocol_attachments`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('6CBE51D29EB44AAAB6DF1774A76508E7', '安徽每年大健康有限公司', '12312345dsfs7778123', 'hzjg', '李先生', '13877662223', '7889123@qq.com', 'channel/202605/18/fc77e3f527b24d8abf57b4c3900fb531.docx', 'zkxw', 0, '渠道备注', 'd3000000000000000000000000000001', '', '2026-05-18 15:17:19', 'd3000000000000000000000000000001', '2026-05-18 17:47:05', 0);
INSERT INTO `biz_channel` (`id`, `channel_name`, `credit_code`, `channel_type`, `contact_name`, `contact_phone`, `contact_email`, `protocol_attachments`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000051', '合肥兴皖合作医院', '91340100MA8NTEST001', 'yy', '张主任', '13800138001', 'zhang@test-hospital.com', NULL, 'zkxw', 1, '测试数据-三甲医院合作渠道', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_channel` (`id`, `channel_name`, `credit_code`, `channel_type`, `contact_name`, `contact_phone`, `contact_email`, `protocol_attachments`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000052', '六安金安健康管理中心', '91341500MA8NTEST002', 'hzjg', '王经理', '13800138002', 'wang@test-health.com', NULL, 'zkxw', 2, '测试数据-合作机构渠道', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
COMMIT;
-- ----------------------------
@@ -700,7 +754,7 @@ CREATE TABLE `biz_channel_account` (
-- Records of biz_channel_account
-- ----------------------------
BEGIN;
INSERT INTO `biz_channel_account` (`id`, `channel_id`, `balance_amount`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('ACE7B72CC1A04DE1927914D993CB4FDD', '6CBE51D29EB44AAAB6DF1774A76508E7', 1080000.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:25:25', 'd3000000000000000000000000000001', '2026-05-24 21:47:53', 0);
INSERT INTO `biz_channel_account` (`id`, `channel_id`, `balance_amount`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('1F482FB830904712AE40EE2B7FE803F2', 'TDP000000000000000000000000000051', 115500.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:47:48', 'd3000000000000000000000000000001', '2026-05-25 18:35:39', 0);
COMMIT;
-- ----------------------------
@@ -743,6 +797,9 @@ INSERT INTO `biz_channel_agreement` (`id`, `channel_id`, `agreement_type`, `busi
INSERT INTO `biz_channel_agreement` (`id`, `channel_id`, `agreement_type`, `business_type`, `settle_mode`, `credit_limit_amount`, `effective_date`, `expire_date`, `agreement_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9C11FC43822E414EAFE422FD15221434', '6CBE51D29EB44AAAB6DF1774A76508E7', 'kyxy', '', '', NULL, '', '', 'dsx', 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 23:13:48', 'd3000000000000000000000000000001', '2026-05-21 04:59:52', 1);
INSERT INTO `biz_channel_agreement` (`id`, `channel_id`, `agreement_type`, `business_type`, `settle_mode`, `credit_limit_amount`, `effective_date`, `expire_date`, `agreement_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('BD9342C2402E4C5AA5F9B078A5D5D77A', '4F1E0F7B543C46438F7A65F1EDAFFF07', 'zsxy', '', '', NULL, '20260505', '', 'sxz', 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 14:15:33', 'd3000000000000000000000000000001', '2026-05-18 14:15:33', 0);
INSERT INTO `biz_channel_agreement` (`id`, `channel_id`, `agreement_type`, `business_type`, `settle_mode`, `credit_limit_amount`, `effective_date`, `expire_date`, `agreement_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('D1567EBA3C7A405FBB54819D466BFA7C', '6CBE51D29EB44AAAB6DF1774A76508E7', 'lcxy', '', '', NULL, '20260501', '', 'sxz', 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 15:32:55', 'd3000000000000000000000000000001', '2026-05-18 15:37:23', 1);
INSERT INTO `biz_channel_agreement` (`id`, `channel_id`, `agreement_type`, `business_type`, `settle_mode`, `credit_limit_amount`, `effective_date`, `expire_date`, `agreement_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000081', 'TDP000000000000000000000000000051', 'zsxy', '', 'yj', 500000.00, '20260101', '20261231', 'sxz', 'zkxw', 1, '测试数据-中试协议(生效中)', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_channel_agreement` (`id`, `channel_id`, `agreement_type`, `business_type`, `settle_mode`, `credit_limit_amount`, `effective_date`, `expire_date`, `agreement_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000082', 'TDP000000000000000000000000000051', 'kyxy', '', 'nj', 200000.00, '20260101', '20261231', 'sxz', 'zkxw', 2, '测试数据-科研协议', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_channel_agreement` (`id`, `channel_id`, `agreement_type`, `business_type`, `settle_mode`, `credit_limit_amount`, `effective_date`, `expire_date`, `agreement_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000083', 'TDP000000000000000000000000000052', 'zsxy', '', 'dcjs', NULL, '20260201', '20261231', 'sxz', 'zkxw', 1, '测试数据-中试协议(单次结算)', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
COMMIT;
-- ----------------------------
@@ -792,6 +849,11 @@ INSERT INTO `biz_channel_agreement_product_price` (`id`, `channel_agreement_id`,
INSERT INTO `biz_channel_agreement_product_price` (`id`, `channel_agreement_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `original_price`, `agreement_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('C2BD855B34E549E2950FA708550928F6', '3427658A9FF8431DB10D1E2FFCB49E54', '5亿CAR-T细胞', 'xmbm00001', 'CAR-T', 'CAR-T细胞', '5*10⁸', 29880.00, 2.00, 'zkxw', 0, '备注2', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-21 04:58:38', 'd3000000000000000000000000000001', '2026-05-21 04:59:03', 0);
INSERT INTO `biz_channel_agreement_product_price` (`id`, `channel_agreement_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `original_price`, `agreement_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('C4A7E4030E2C407B8BB5B5D23C09549E', '3427658A9FF8431DB10D1E2FFCB49E54', '5亿CIK细胞', 'xmbm00003', 'CIK', 'CIK细胞', '5*10⁸', 30000.00, NULL, 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 16:03:43', 'd3000000000000000000000000000001', '2026-05-18 23:03:52', 1);
INSERT INTO `biz_channel_agreement_product_price` (`id`, `channel_agreement_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `original_price`, `agreement_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('FB04274F28514A81822954CF9F5872B7', '3427658A9FF8431DB10D1E2FFCB49E54', '5亿CAR-T细胞', 'xmbm00001', 'CAR-T', 'CAR-T细胞', '5*10⁸', 29880.00, NULL, 'zkxw', 0, '备注', 'd3000000000000000000000000000001', '', '2026-05-18 16:03:35', 'd3000000000000000000000000000001', '2026-05-18 23:03:58', 1);
INSERT INTO `biz_channel_agreement_product_price` (`id`, `channel_agreement_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `original_price`, `agreement_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000091', 'TDP000000000000000000000000000081', '5亿CAR-T细胞', 'tst_xmbm00001', 'CAR-T', 'CAR-T细胞', '5*10⁸', 29880.00, 26800.00, 'zkxw', 1, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_channel_agreement_product_price` (`id`, `channel_agreement_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `original_price`, `agreement_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000092', 'TDP000000000000000000000000000081', '5亿CIK细胞', 'tst_xmbm00003', 'CIK', 'CIK细胞', '5*10⁸', 20000.00, 18000.00, 'zkxw', 2, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_channel_agreement_product_price` (`id`, `channel_agreement_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `original_price`, `agreement_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000093', 'TDP000000000000000000000000000081', '50亿CAR-T细胞', 'tst_xmbm00002', 'CAR-T', 'CAR-T细胞', '50*10⁸', 230000.00, 190000.00, 'zkxw', 3, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_channel_agreement_product_price` (`id`, `channel_agreement_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `original_price`, `agreement_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000094', 'TDP000000000000000000000000000083', '5亿CIK细胞', 'tst_xmbm00003', 'CIK', 'CIK细胞', '5*10⁸', 20000.00, 17500.00, 'zkxw', 1, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_channel_agreement_product_price` (`id`, `channel_agreement_id`, `project_name`, `project_code`, `cell_type_code`, `cell_type_name`, `spec_text`, `original_price`, `agreement_price`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000095', 'TDP000000000000000000000000000083', '5亿NK细胞', 'tst_xmbm00005', 'NK', 'NK细胞', '5*10⁸', 15000.00, 13500.00, 'zkxw', 2, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
COMMIT;
-- ----------------------------
@@ -827,6 +889,8 @@ BEGIN;
INSERT INTO `biz_channel_invoice` (`id`, `channel_id`, `company_name`, `tax_no`, `company_address`, `company_phone`, `bank_name`, `bank_account`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('1CAE0E06AAB343CF9934C5E0661B8B35', '6CBE51D29EB44AAAB6DF1774A76508E7', '安徽每年大健康有限公司1', '12313afaf123123', '安徽省合肥市经开区098号', '13899223322', '中国银行', '123455123123', 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 15:17:20', 'd3000000000000000000000000000001', '2026-05-18 15:51:04', 0);
INSERT INTO `biz_channel_invoice` (`id`, `channel_id`, `company_name`, `tax_no`, `company_address`, `company_phone`, `bank_name`, `bank_account`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('494E16F207F84B378D1835CCA7A262D5', '6CBE51D29EB44AAAB6DF1774A76508E7', '安徽每年大健康', '123771283812312', '安徽省合肥市蜀山区望江西路098号', '', '中国银行', '123134536123', 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 15:17:19', 'd3000000000000000000000000000001', '2026-05-18 15:17:19', 0);
INSERT INTO `biz_channel_invoice` (`id`, `channel_id`, `company_name`, `tax_no`, `company_address`, `company_phone`, `bank_name`, `bank_account`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('CD9901995B664C29B8F8EE0D5E3A7A97', '28E940BB50AA43C4803AAD236DCAD343', '123', '123', '123123', '123', '123', '123123', 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 15:51:33', 'd3000000000000000000000000000001', '2026-05-18 15:51:33', 0);
INSERT INTO `biz_channel_invoice` (`id`, `channel_id`, `company_name`, `tax_no`, `company_address`, `company_phone`, `bank_name`, `bank_account`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000061', 'TDP000000000000000000000000000051', '合肥兴皖合作医院', '91340100MA8NTEST001', '安徽省合肥市蜀山区科学大道100号', '0551-88880001', '中国工商银行合肥分行', '6222021234567890123', 'zkxw', 1, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_channel_invoice` (`id`, `channel_id`, `company_name`, `tax_no`, `company_address`, `company_phone`, `bank_name`, `bank_account`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000062', 'TDP000000000000000000000000000052', '六安金安健康管理中心', '91341500MA8NTEST002', '安徽省六安市金安区健康路88号', '0564-66660002', '中国建设银行六安分行', '6227009876543210987', 'zkxw', 1, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
COMMIT;
-- ----------------------------
@@ -858,6 +922,8 @@ CREATE TABLE `biz_channel_mail_address` (
BEGIN;
INSERT INTO `biz_channel_mail_address` (`id`, `channel_id`, `mail_address`, `mail_contact`, `mail_phone`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('12A06086903949668EEADA023E39475D', '6CBE51D29EB44AAAB6DF1774A76508E7', '合肥市蜀山区098号', '李现是', '13766221122', 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 15:17:21', 'd3000000000000000000000000000001', '2026-05-18 15:31:13', 0);
INSERT INTO `biz_channel_mail_address` (`id`, `channel_id`, `mail_address`, `mail_contact`, `mail_phone`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('FA0252016DE248EB81039357D1608957', '6CBE51D29EB44AAAB6DF1774A76508E7', '安徽省合肥市蜀山区098号', '王二哥', '13899882211', 'zkxw', 0, '', 'd3000000000000000000000000000001', '', '2026-05-18 15:17:20', 'd3000000000000000000000000000001', '2026-05-18 15:31:24', 0);
INSERT INTO `biz_channel_mail_address` (`id`, `channel_id`, `mail_address`, `mail_contact`, `mail_phone`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000071', 'TDP000000000000000000000000000051', '安徽省合肥市蜀山区科学大道100号 细胞治疗中心', '张主任', '13800138001', 'zkxw', 1, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
INSERT INTO `biz_channel_mail_address` (`id`, `channel_id`, `mail_address`, `mail_contact`, `mail_phone`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('TDP000000000000000000000000000072', 'TDP000000000000000000000000000052', '安徽省六安市金安区健康路88号', '王经理', '13800138002', 'zkxw', 1, '测试数据', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 13:04:19', 'd3000000000000000000000000000001', '2026-05-25 13:04:19', 0);
COMMIT;
-- ----------------------------
@@ -893,6 +959,8 @@ CREATE TABLE `biz_channel_product_quota` (
-- Records of biz_channel_product_quota
-- ----------------------------
BEGIN;
INSERT INTO `biz_channel_product_quota` (`id`, `channel_id`, `project_code`, `project_name`, `cell_type_code`, `cell_type_name`, `spec_text`, `total_qty`, `used_qty`, `remaining_qty`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('23B974DFA18D4486A8A86A1CBD0A04DE', 'TDP000000000000000000000000000052', 'tst_xmbm00003', '5亿CIK细胞', 'CIK', 'CIK细胞', '5*10⁸', 22.0000, 0.0000, 22.0000, 'zkxw', 0, '', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:52:58', 'd3000000000000000000000000000001', '2026-05-25 19:25:55', 0);
INSERT INTO `biz_channel_product_quota` (`id`, `channel_id`, `project_code`, `project_name`, `cell_type_code`, `cell_type_name`, `spec_text`, `total_qty`, `used_qty`, `remaining_qty`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('FABE40AC40714AE98A3BC36668EE72D0', 'TDP000000000000000000000000000052', 'tst_xmbm00005', '5亿NK细胞', 'NK', 'NK细胞', '5*10⁸', 15.0000, 0.0000, 15.0000, 'zkxw', 0, '', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:52:58', 'd3000000000000000000000000000001', '2026-05-25 19:25:56', 0);
COMMIT;
-- ----------------------------
@@ -947,10 +1015,11 @@ CREATE TABLE `biz_channel_service_order` (
-- Records of biz_channel_service_order
-- ----------------------------
BEGIN;
INSERT INTO `biz_channel_service_order` (`id`, `channel_id`, `channel_name`, `dept_name`, `order_type`, `prepay_amount`, `purchase_total_amount`, `order_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `channel_agreement_id`, `total_recharge_amount`, `total_refund_amount`, `current_balance`, `balance_before`, `balance_after`, `finance_submit_by`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `refund_apply_by`, `refund_apply_time`, `refund_amount`, `refund_remark`, `refund_attachments`, `refund_finance_confirm_time`, `refund_finance_confirm_attachments`, `refund_finance_remark`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`) VALUES ('2C899FA98D994650876241A9C614092D', '6CBE51D29EB44AAAB6DF1774A76508E7', '安徽每年大健康有限公司', '第一次充值部门', 'yfk', 100000.00, NULL, 'ytf', 'zkxw', 0, '第一次充值部门', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:46:01', 'd3000000000000000000000000000001', '2026-05-25 07:50:45', 0, '3427658A9FF8431DB10D1E2FFCB49E54', 100000.00, 20000.00, 80000.00, 1100000.00, 1080000.00, 'd3000000000000000000000000000001', '2026-05-24 21:46:43', 'channel-service-order-finance/202605/24/145b5e42e6954b079a65e9fb2eaeea72.jpeg', '确认收款10', 'd3000000000000000000000000000001', '2026-05-24 21:47:05', 20000.00, '退款2万', 'channel-service-order/202605/24/498a82d2ecd6448ca0ced7ce2bfeb4a0.jpeg', '2026-05-24 21:47:53', 'channel-service-order-finance/202605/24/face91db0bd84d4d8c2ae9982d68b8a3.jpeg', '退2万', '2026-05-24 21:46:24', '充值10万', 'channel-service-order/202605/24/58292175be174b4a81115e2b497b7cb4.jpeg');
INSERT INTO `biz_channel_service_order` (`id`, `channel_id`, `channel_name`, `dept_name`, `order_type`, `prepay_amount`, `purchase_total_amount`, `order_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `channel_agreement_id`, `total_recharge_amount`, `total_refund_amount`, `current_balance`, `balance_before`, `balance_after`, `finance_submit_by`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `refund_apply_by`, `refund_apply_time`, `refund_amount`, `refund_remark`, `refund_attachments`, `refund_finance_confirm_time`, `refund_finance_confirm_attachments`, `refund_finance_remark`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`) VALUES ('B6AD9DCEA62443EEB98B46124DDE0130', '6CBE51D29EB44AAAB6DF1774A76508E7', '安徽每年大健康有限公司', '研发部门', 'yfk', 2000000.00, NULL, 'ytf', 'zkxw', 0, '充值20万', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:24:23', 'd3000000000000000000000000000001', '2026-05-25 07:50:45', 0, '3427658A9FF8431DB10D1E2FFCB49E54', 2000000.00, 1000000.00, 1000000.00, 2000000.00, 1000000.00, 'd3000000000000000000000000000001', '2026-05-24 21:25:25', 'channel-service-order-finance/202605/24/dade1c7abd554df18dcc70a844e76486.jpeg', '到账', 'd3000000000000000000000000000001', '2026-05-24 21:27:13', 1000000.00, '退款10万', 'channel-service-order/202605/24/98b0f061f9ea43c1b3bda70d3624d9af.jpeg', '2026-05-24 21:28:06', 'channel-service-order-finance/202605/24/928dcf66a25d491e8e7d19625e13faa6.jpeg', '退款20万', '2026-05-24 21:24:52', '请确认是否到账', 'channel-service-order/202605/24/353084f4e5e84c28a5869a43bcd9a6eb.jpeg');
INSERT INTO `biz_channel_service_order` (`id`, `channel_id`, `channel_name`, `dept_name`, `order_type`, `prepay_amount`, `purchase_total_amount`, `order_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `channel_agreement_id`, `total_recharge_amount`, `total_refund_amount`, `current_balance`, `balance_before`, `balance_after`, `finance_submit_by`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `refund_apply_by`, `refund_apply_time`, `refund_amount`, `refund_remark`, `refund_attachments`, `refund_finance_confirm_time`, `refund_finance_confirm_attachments`, `refund_finance_remark`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`) VALUES ('E7EECBCA6DF74493BB5D433937B0B382', '6CBE51D29EB44AAAB6DF1774A76508E7', '安徽每年大健康有限公司', '测试', 'yfk', 5000000.00, NULL, 'dqr', 'zkxw', 0, '充值50万', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 19:25:55', 'd3000000000000000000000000000001', '2026-05-25 07:50:45', 0, NULL, 5000000.00, 0.00, 5000000.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `biz_channel_service_order` (`id`, `channel_id`, `channel_name`, `dept_name`, `order_type`, `prepay_amount`, `purchase_total_amount`, `order_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `channel_agreement_id`, `total_recharge_amount`, `total_refund_amount`, `current_balance`, `balance_before`, `balance_after`, `finance_submit_by`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `refund_apply_by`, `refund_apply_time`, `refund_amount`, `refund_remark`, `refund_attachments`, `refund_finance_confirm_time`, `refund_finance_confirm_attachments`, `refund_finance_remark`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`) VALUES ('EB42201B868C47D99D8045CA34CE40A8', '6CBE51D29EB44AAAB6DF1774A76508E7', '安徽每年大健康有限公司', '测试', 'yfk', 1000000.00, NULL, 'dsx', 'zkxw', 0, '充值100万', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 19:50:11', 'd3000000000000000000000000000001', '2026-05-25 07:50:45', 0, NULL, 1000000.00, 0.00, 1000000.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `biz_channel_service_order` (`id`, `channel_id`, `channel_name`, `order_name`, `dept_name`, `order_type`, `prepay_amount`, `purchase_total_amount`, `order_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `channel_agreement_id`, `total_recharge_amount`, `total_refund_amount`, `current_balance`, `balance_before`, `balance_after`, `finance_submit_by`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `refund_apply_by`, `refund_apply_time`, `refund_amount`, `refund_remark`, `refund_attachments`, `refund_finance_confirm_time`, `refund_finance_confirm_attachments`, `refund_finance_remark`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`) VALUES ('3FCD1B8C3034439D80DF1E09A8E34889', 'TDP000000000000000000000000000052', '六安金安健康管理中心', NULL, '医学服务部', 'gmcp', NULL, NULL, 'dsx', 'zkxw', 0, '测试购买产品份数订单', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:00:43', 'd3000000000000000000000000000001', '2026-05-25 18:37:12', 1, 'TDP000000000000000000000000000083', 0.00, 0.00, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `biz_channel_service_order` (`id`, `channel_id`, `channel_name`, `order_name`, `dept_name`, `order_type`, `prepay_amount`, `purchase_total_amount`, `order_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `channel_agreement_id`, `total_recharge_amount`, `total_refund_amount`, `current_balance`, `balance_before`, `balance_after`, `finance_submit_by`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `refund_apply_by`, `refund_apply_time`, `refund_amount`, `refund_remark`, `refund_attachments`, `refund_finance_confirm_time`, `refund_finance_confirm_attachments`, `refund_finance_remark`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`) VALUES ('62E930F447F848BF9C6B2585C4384BDD', 'TDP000000000000000000000000000051', '合肥兴皖合作医院', '合肥兴皖订单1', '医学研究部', 'yfk', NULL, NULL, 'sxz', 'zkxw', 0, '备注', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 15:23:49', 'd3000000000000000000000000000001', '2026-05-25 20:53:13', 0, 'TDP000000000000000000000000000081', 126000.00, 10500.00, 115500.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `biz_channel_service_order` (`id`, `channel_id`, `channel_name`, `order_name`, `dept_name`, `order_type`, `prepay_amount`, `purchase_total_amount`, `order_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `channel_agreement_id`, `total_recharge_amount`, `total_refund_amount`, `current_balance`, `balance_before`, `balance_after`, `finance_submit_by`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `refund_apply_by`, `refund_apply_time`, `refund_amount`, `refund_remark`, `refund_attachments`, `refund_finance_confirm_time`, `refund_finance_confirm_attachments`, `refund_finance_remark`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`) VALUES ('8896EC3782894BCF993688D4E877C6C7', 'TDP000000000000000000000000000052', '六安金安健康管理中心', NULL, '医学服务部', 'gmcp', NULL, 445000.00, 'dsx', 'zkxw', 0, '购买产品份数测试', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:46:04', 'd3000000000000000000000000000001', '2026-05-25 17:59:56', 1, 'TDP000000000000000000000000000083', 0.00, 0.00, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `biz_channel_service_order` (`id`, `channel_id`, `channel_name`, `order_name`, `dept_name`, `order_type`, `prepay_amount`, `purchase_total_amount`, `order_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `channel_agreement_id`, `total_recharge_amount`, `total_refund_amount`, `current_balance`, `balance_before`, `balance_after`, `finance_submit_by`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `refund_apply_by`, `refund_apply_time`, `refund_amount`, `refund_remark`, `refund_attachments`, `refund_finance_confirm_time`, `refund_finance_confirm_attachments`, `refund_finance_remark`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`) VALUES ('8AEEEE2F49CF4DB5A75A25570A718A37', 'TDP000000000000000000000000000052', '六安金安健康管理中心', '金安订单1', '医学服务部', 'gmcp', NULL, NULL, 'sxz', 'zkxw', 0, '备注备注', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:37:33', 'd3000000000000000000000000000001', '2026-05-25 20:48:12', 0, 'TDP000000000000000000000000000083', 0.00, 0.00, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `biz_channel_service_order` (`id`, `channel_id`, `channel_name`, `order_name`, `dept_name`, `order_type`, `prepay_amount`, `purchase_total_amount`, `order_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `channel_agreement_id`, `total_recharge_amount`, `total_refund_amount`, `current_balance`, `balance_before`, `balance_after`, `finance_submit_by`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `refund_apply_by`, `refund_apply_time`, `refund_amount`, `refund_remark`, `refund_attachments`, `refund_finance_confirm_time`, `refund_finance_confirm_attachments`, `refund_finance_remark`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`) VALUES ('D48691856341411A8653D169A7233E26', 'TDP000000000000000000000000000051', '合肥兴皖合作医院', NULL, '医学研究部1', 'yfk', 1000000.00, NULL, 'dsx', 'zkxw', 0, '备注信息1', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 15:15:39', 'd3000000000000000000000000000001', '2026-05-25 15:23:34', 1, 'TDP000000000000000000000000000082', 0.00, 0.00, 0.00, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
COMMIT;
-- ----------------------------
@@ -1017,6 +1086,10 @@ CREATE TABLE `biz_channel_service_order_product` (
-- Records of biz_channel_service_order_product
-- ----------------------------
BEGIN;
INSERT INTO `biz_channel_service_order_product` (`id`, `service_order_id`, `project_code`, `project_name`, `cell_type`, `spec_text`, `agreement_unit_price`, `buy_qty`, `buy_amount`, `total_buy_qty`, `total_unsubscribe_qty`, `current_qty`, `total_unsubscribe_amount`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('02D23B9FEB9C4D52985CE741E8828754', '8AEEEE2F49CF4DB5A75A25570A718A37', 'tst_xmbm00003', '5亿CIK细胞', 'CIK细胞', '5*10⁸', 17500.00, 2.0000, 35000.00, 23.0000, 1.0000, 22.0000, 17500.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:41:37', 'd3000000000000000000000000000001', '2026-05-25 19:22:02', 0);
INSERT INTO `biz_channel_service_order_product` (`id`, `service_order_id`, `project_code`, `project_name`, `cell_type`, `spec_text`, `agreement_unit_price`, `buy_qty`, `buy_amount`, `total_buy_qty`, `total_unsubscribe_qty`, `current_qty`, `total_unsubscribe_amount`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('5068C4DD7D13492D8681D2122FA1CE6E', '8896EC3782894BCF993688D4E877C6C7', 'tst_xmbm00003', '5亿CIK细胞', 'CIK细胞', '5*10⁸', 17500.00, 10.0000, 175000.00, 0.0000, 0.0000, 0.0000, 0.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:46:04', 'd3000000000000000000000000000001', '2026-05-25 17:46:04', 0);
INSERT INTO `biz_channel_service_order_product` (`id`, `service_order_id`, `project_code`, `project_name`, `cell_type`, `spec_text`, `agreement_unit_price`, `buy_qty`, `buy_amount`, `total_buy_qty`, `total_unsubscribe_qty`, `current_qty`, `total_unsubscribe_amount`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('50B8BA0C0FBC4262B1CC741F538C2EDF', '8896EC3782894BCF993688D4E877C6C7', 'tst_xmbm00005', '5亿NK细胞', 'NK细胞', '5*10⁸', 13500.00, 20.0000, 270000.00, 0.0000, 0.0000, 0.0000, 0.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:46:04', 'd3000000000000000000000000000001', '2026-05-25 17:46:04', 0);
INSERT INTO `biz_channel_service_order_product` (`id`, `service_order_id`, `project_code`, `project_name`, `cell_type`, `spec_text`, `agreement_unit_price`, `buy_qty`, `buy_amount`, `total_buy_qty`, `total_unsubscribe_qty`, `current_qty`, `total_unsubscribe_amount`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('A28B12ADE67249F68E061734B11359CD', '8AEEEE2F49CF4DB5A75A25570A718A37', 'tst_xmbm00005', '5亿NK细胞', 'NK细胞', '5*10⁸', 13500.00, 10.0000, 135000.00, 20.0000, 5.0000, 15.0000, 67500.00, 'zkxw', 0, '', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:41:37', 'd3000000000000000000000000000001', '2026-05-25 19:06:10', 0);
COMMIT;
-- ----------------------------
@@ -1031,6 +1104,7 @@ CREATE TABLE `biz_channel_service_order_txn` (
`txn_status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'dsx' COMMENT 'dsx待生效 dqr待财务确认 yqr已确认 yzf已作废',
`products_json` text COLLATE utf8mb4_unicode_ci COMMENT '产品明细JSON(purchase/unsubscribe类型)',
`remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
`refund_attachments` text COLLATE utf8mb4_unicode_ci COMMENT '退款附件(逗号分隔URL)',
`finance_submit_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发起确认人ID',
`finance_submit_time` datetime DEFAULT NULL COMMENT '发起确认时间',
`finance_submit_remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发起确认备注',
@@ -1060,12 +1134,23 @@ CREATE TABLE `biz_channel_service_order_txn` (
-- Records of biz_channel_service_order_txn
-- ----------------------------
BEGIN;
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('437cb6bf72ba793da77d98cba385c753', '2C899FA98D994650876241A9C614092D', 'recharge', 100000.00, 'yqr', NULL, '第一次充值部门', 'd3000000000000000000000000000001', '2026-05-24 21:46:24', '充值10万', 'channel-service-order/202605/24/58292175be174b4a81115e2b497b7cb4.jpeg', '2026-05-24 21:46:43', 'channel-service-order-finance/202605/24/145b5e42e6954b079a65e9fb2eaeea72.jpeg', '确认收款10', 1100000.00, 1080000.00, 'zkxw', NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:46:01', 'd3000000000000000000000000000001', '2026-05-24 21:47:53', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('88663422c69b700c88baed0f7fc3806d', 'B6AD9DCEA62443EEB98B46124DDE0130', 'recharge', 2000000.00, 'yqr', NULL, '充值20万', 'd3000000000000000000000000000001', '2026-05-24 21:24:52', '请确认是否到账', 'channel-service-order/202605/24/353084f4e5e84c28a5869a43bcd9a6eb.jpeg', '2026-05-24 21:25:25', 'channel-service-order-finance/202605/24/dade1c7abd554df18dcc70a844e76486.jpeg', '到账', 2000000.00, 1000000.00, 'zkxw', NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:24:23', 'd3000000000000000000000000000001', '2026-05-24 21:28:06', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('955897e4880e8b89c4272c7a83347d22', 'E7EECBCA6DF74493BB5D433937B0B382', 'recharge', 5000000.00, 'dsx', NULL, '充值50万', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'zkxw', NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 19:25:55', 'd3000000000000000000000000000001', '2026-05-24 19:25:55', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('a756072e585a357342b667e8eaa6cc58', 'EB42201B868C47D99D8045CA34CE40A8', 'recharge', 1000000.00, 'dsx', NULL, '充值100万', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'zkxw', NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 19:50:11', 'd3000000000000000000000000000001', '2026-05-24 19:50:27', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('e277b6a070624c025d884bac6ad8b01a', 'B6AD9DCEA62443EEB98B46124DDE0130', 'refund', 1000000.00, 'yqr', NULL, '退款10万', 'd3000000000000000000000000000001', '2026-05-24 21:27:13', '退款10万', 'channel-service-order/202605/24/98b0f061f9ea43c1b3bda70d3624d9af.jpeg', '2026-05-24 21:28:06', 'channel-service-order-finance/202605/24/928dcf66a25d491e8e7d19625e13faa6.jpeg', '退款20万', NULL, NULL, 'zkxw', NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:27:13', 'd3000000000000000000000000000001', '2026-05-24 21:28:06', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_attachments`, `finance_remark`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('f3e327ae584fa5390c811cb0adb2dce0', '2C899FA98D994650876241A9C614092D', 'refund', 20000.00, 'yqr', NULL, '退款2万', 'd3000000000000000000000000000001', '2026-05-24 21:47:05', '退款2万', 'channel-service-order/202605/24/498a82d2ecd6448ca0ced7ce2bfeb4a0.jpeg', '2026-05-24 21:47:53', 'channel-service-order-finance/202605/24/face91db0bd84d4d8c2ae9982d68b8a3.jpeg', '退2万', NULL, NULL, 'zkxw', NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-24 21:47:05', 'd3000000000000000000000000000001', '2026-05-24 21:47:53', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('175EAA9A7B04452784914EFDC422D8E5', '62E930F447F848BF9C6B2585C4384BDD', 'refund', 2000.00, 'yqr', NULL, '备注申请退款2000', NULL, 'd3000000000000000000000000000001', '2026-05-25 17:55:34', '备注申请退款2000', '', '2026-05-25 17:55:59', 'd3000000000000000000000000000001', 'channel-service-order-finance/202605/25/c0474c3d917d4611ab1ae9c32602fba5.jpeg', '退款2000', NULL, NULL, 120000.00, 118000.00, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:55:00', 'd3000000000000000000000000000001', '2026-05-25 17:55:59', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('2AA64E1F23454906810D5834C44719E7', '62E930F447F848BF9C6B2585C4384BDD', 'recharge', 1111.00, 'dsx', NULL, '', NULL, NULL, NULL, NULL, 'channel-service-order/202605/25/4b7b80dfbf414c9cb635a8b9208e2a03.jpeg', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:55:26', 'd3000000000000000000000000000001', '2026-05-25 16:55:26', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('2BA137DFED4D436E8DCC94849725FD12', '8AEEEE2F49CF4DB5A75A25570A718A37', 'purchase', 322500.00, 'yqr', '[{\"project_code\": \"tst_xmbm00003\", \"project_name\": \"5亿CIK细胞\", \"cell_type\": \"CIK细胞\", \"spec_text\": \"5*10⁸\", \"agreement_unit_price\": 17500.0, \"qty\": 3.0, \"amount\": 52500.0}, {\"project_code\": \"tst_xmbm00005\", \"project_name\": \"5亿NK细胞\", \"cell_type\": \"NK细胞\", \"spec_text\": \"5*10⁸\", \"agreement_unit_price\": 13500.0, \"qty\": 20.0, \"amount\": 270000.0}]', '测试123123', NULL, 'd3000000000000000000000000000001', '2026-05-25 18:51:38', '测试123123', '', '2026-05-25 18:52:58', 'd3000000000000000000000000000001', 'channel-service-order-finance/202605/25/0c431416fc2444a4a7975867ee3c2a48.jpg', '123123财务备注财务备注', NULL, NULL, NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:41:37', 'd3000000000000000000000000000001', '2026-05-25 18:52:58', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('32FD8EA8CF694A04AB4A5CE5923E38F7', '62E930F447F848BF9C6B2585C4384BDD', 'recharge', 100000.00, 'yqr', NULL, '充值10万元', NULL, 'd3000000000000000000000000000001', '2026-05-25 17:37:53', '充值10万元', 'channel-service-order/202605/25/58a61c4f7cb1419697304ed185d2af0b.jpg', '2026-05-25 17:40:35', 'd3000000000000000000000000000001', 'channel-service-order-finance/202605/25/e24a8297c6674a7b9ef6263976de90b7.jpeg', '确认到账', NULL, NULL, 20000.00, 120000.00, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:37:33', 'd3000000000000000000000000000001', '2026-05-25 17:40:35', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('4FC80A597F9B484680D6DEBA232D9CC2', '62E930F447F848BF9C6B2585C4384BDD', 'recharge', 10000000.00, 'yzf', NULL, '', NULL, 'd3000000000000000000000000000001', '2026-05-25 16:48:21', '', 'channel-service-order/202605/25/2e4cb84f7b9c4c86894e61e6340f36d8.jpeg', NULL, NULL, NULL, NULL, 'd3000000000000000000000000000001', '2026-05-25 17:07:39', NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:36:50', 'd3000000000000000000000000000001', '2026-05-25 17:13:24', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('544D2D2B577E45198119BA045C83568C', '62E930F447F848BF9C6B2585C4384BDD', 'refund', 500.00, 'yqr', NULL, '申请退款500', 'channel-service-order-refund/202605/25/a0eb2c7225144fc9af0c1a9d71fe00de.jpeg', 'd3000000000000000000000000000001', '2026-05-25 18:29:11', '申请退款500', 'channel-service-order-refund/202605/25/a0eb2c7225144fc9af0c1a9d71fe00de.jpeg', '2026-05-25 18:35:39', 'd3000000000000000000000000000001', 'channel-service-order-finance/202605/25/ab5f0e4b97e84addb74f1e9ab0d6a6e0.jpg', '退款500', NULL, NULL, 116000.00, 115500.00, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:28:57', 'd3000000000000000000000000000001', '2026-05-25 18:35:39', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('5B7FEC19B2C14F41B45B84C9C3D6EF58', '62E930F447F848BF9C6B2585C4384BDD', 'recharge', 30000.00, 'yzf', NULL, '充值3万元', NULL, NULL, NULL, NULL, 'channel-service-order/202605/25/56aff6c41fd74dfc983d4bbfd95738b0.jpg', NULL, NULL, NULL, NULL, 'd3000000000000000000000000000001', '2026-05-25 17:36:52', NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:35:43', 'd3000000000000000000000000000001', '2026-05-25 17:36:52', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('7244283EFBD14AD2988033CD60E2CBDB', '8AEEEE2F49CF4DB5A75A25570A718A37', 'purchase', 350000.00, 'yqr', '[{\"project_code\": \"tst_xmbm00003\", \"project_name\": \"5亿CIK细胞\", \"cell_type\": \"CIK细胞\", \"spec_text\": \"5*10⁸\", \"agreement_unit_price\": 17500.0, \"qty\": 20.0, \"amount\": 350000.0}]', '20份', NULL, 'd3000000000000000000000000000001', '2026-05-25 19:22:04', '20份', '', '2026-05-25 19:22:37', 'd3000000000000000000000000000001', 'channel-service-order-finance/202605/25/bdb0fb6da3d84ff9a3316adcf5f24435.jpeg', '确认收款', NULL, NULL, NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 19:22:02', 'd3000000000000000000000000000001', '2026-05-25 19:22:37', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('890B16A75979426EAC872725C1398335', '62E930F447F848BF9C6B2585C4384BDD', 'refund', 8000.00, 'yqr', NULL, '8000', 'channel-service-order-refund/202605/25/bf70f26a2b3041afbf727071c4c4c383.jpeg', 'd3000000000000000000000000000001', '2026-05-25 18:21:23', '8000', '', '2026-05-25 18:21:51', 'd3000000000000000000000000000001', 'channel-service-order-finance/202605/25/72225a0aa8f2471fadc9da2f5a5c7d7c.jpeg', '退款8000', NULL, NULL, 118000.00, 110000.00, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:21:13', 'd3000000000000000000000000000001', '2026-05-25 18:21:51', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('9BDAF29E54284AB5B033E0181FEAA1D5', '8AEEEE2F49CF4DB5A75A25570A718A37', 'purchase', 70000.00, 'yzf', '[{\"project_code\": \"tst_xmbm00003\", \"project_name\": \"5亿CIK细胞\", \"cell_type\": \"CIK细胞\", \"spec_text\": \"5*10⁸\", \"agreement_unit_price\": 17500.0, \"qty\": 4.0, \"amount\": 70000.0}]', '备注 4 份', NULL, 'd3000000000000000000000000000001', '2026-05-25 18:55:09', '备注 4 份', '', NULL, NULL, NULL, NULL, 'd3000000000000000000000000000001', '2026-05-25 18:56:43', NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:54:55', 'd3000000000000000000000000000001', '2026-05-25 18:56:43', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('AC174E5DAF654476A6D0C93FFD04EB09', '8AEEEE2F49CF4DB5A75A25570A718A37', 'unsubscribe', 85000.00, 'yqr', '[{\"project_code\": \"tst_xmbm00003\", \"project_name\": \"5亿CIK细胞\", \"cell_type\": null, \"spec_text\": \"5*10⁸\", \"agreement_unit_price\": 17500.0, \"qty\": 1.0, \"amount\": null}, {\"project_code\": \"tst_xmbm00005\", \"project_name\": \"5亿NK细胞\", \"cell_type\": null, \"spec_text\": \"5*10⁸\", \"agreement_unit_price\": 13500.0, \"qty\": 5.0, \"amount\": null}]', '退订', NULL, 'd3000000000000000000000000000001', '2026-05-25 19:20:20', '退订', '', '2026-05-25 19:25:55', 'd3000000000000000000000000000001', 'channel-service-order-finance/202605/25/9b96344f881b4d179eb22c05e2d6fa9a.jpg', '确认', NULL, NULL, NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 19:06:10', 'd3000000000000000000000000000001', '2026-05-25 19:25:55', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('B9B499052F5F41CEB3276B700DDF6EF0', '62E930F447F848BF9C6B2585C4384BDD', 'recharge', 2000000.12, 'yzf', NULL, '充值2000000.12', NULL, NULL, NULL, NULL, 'channel-service-order/202605/25/96e324a803d145f1bc4441aa0dbc37ab.jpeg,channel-service-order/202605/25/1c84b000fa004a8cab1113c59a1e4c8e.jpg', NULL, NULL, NULL, NULL, 'd3000000000000000000000000000001', '2026-05-25 16:34:03', NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 15:42:54', 'd3000000000000000000000000000001', '2026-05-25 17:13:24', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('BAA48F6107364A97BC885570EFDF7F6B', '62E930F447F848BF9C6B2585C4384BDD', 'recharge', 20000.00, 'yqr', NULL, '充值备注', NULL, 'd3000000000000000000000000000001', '2026-05-25 16:36:18', '', 'channel-service-order/202605/25/c15599885aed4043ae27669c99474d84.jpeg,channel-service-order/202605/25/1e30fcf84e7b4216a62eb4ff1c1aaaa2.jpeg', '2026-05-25 16:47:48', 'd3000000000000000000000000000001', 'channel-service-order-finance/202605/25/fcf6d1933fd74a099f085d7326b877a5.jpeg', '确认收款', NULL, NULL, 0.00, 20000.00, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 16:36:09', 'd3000000000000000000000000000001', '2026-05-25 17:27:23', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('D41CCA1BBBDD4E7187E0AFCA00820EE8', '62E930F447F848BF9C6B2585C4384BDD', 'recharge', 4000.00, 'dsx', NULL, '充值4000', NULL, NULL, NULL, NULL, 'channel-service-order/202605/25/c82040d336794612a275aa6781c4c35e.jpeg', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:43:39', 'd3000000000000000000000000000001', '2026-05-25 18:43:39', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('E99362DDC7CD4EE3B9167859DB7E18E0', '62E930F447F848BF9C6B2585C4384BDD', 'recharge', 6000.00, 'yqr', NULL, '充值6000', NULL, 'd3000000000000000000000000000001', '2026-05-25 18:29:55', '充值6000', 'channel-service-order/202605/25/aea1c54a6650450c8f823a5dbde335dc.jpg', '2026-05-25 18:35:20', 'd3000000000000000000000000000001', 'channel-service-order-finance/202605/25/ed63b35b5b9445e0abb7dca9f390efc6.jpeg', '财务备注财务备注', NULL, NULL, 110000.00, 116000.00, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 18:29:46', 'd3000000000000000000000000000001', '2026-05-25 18:35:20', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('EA3FE6174BED4B378AA80D5459B39E08', '62E930F447F848BF9C6B2585C4384BDD', 'recharge', 100.00, 'yzf', NULL, '充值100,测试作废', NULL, 'd3000000000000000000000000000001', '2026-05-25 17:41:33', '充值100,测试作废', 'channel-service-order/202605/25/4d5f6c4b85ac4abebfa707712f0ffc26.jpeg', NULL, NULL, NULL, NULL, 'd3000000000000000000000000000001', '2026-05-25 17:41:45', NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 17:41:25', 'd3000000000000000000000000000001', '2026-05-25 17:41:45', 0);
INSERT INTO `biz_channel_service_order_txn` (`id`, `service_order_id`, `txn_type`, `amount`, `txn_status`, `products_json`, `remark`, `refund_attachments`, `finance_submit_by`, `finance_submit_time`, `finance_submit_remark`, `finance_submit_attachments`, `finance_confirm_time`, `finance_confirm_by`, `finance_confirm_attachments`, `finance_remark`, `void_by`, `void_time`, `balance_before`, `balance_after`, `tenant_no`, `order_num`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('FE9337151C384892B7C8FC04B429F908', '62E930F447F848BF9C6B2585C4384BDD', 'recharge', 123.00, 'yzf', NULL, '123', NULL, NULL, NULL, NULL, 'channel-service-order/202605/25/6aaaae424f16402d99686c2ad4d53ae2.jpeg,channel-service-order/202605/25/ff97bd7cf41d4ed09f910ef71e83f27b.jpeg', NULL, NULL, NULL, NULL, 'd3000000000000000000000000000001', '2026-05-25 16:34:11', NULL, NULL, 'zkxw', 0, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 15:46:26', 'd3000000000000000000000000000001', '2026-05-25 17:13:24', 0);
COMMIT;
-- ----------------------------
@@ -2492,6 +2577,7 @@ DROP TABLE IF EXISTS `biz_pilot_application`;
CREATE TABLE `biz_pilot_application` (
`id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '主键ID',
`application_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '申请单号(自动生成,前缀ZSSQ)',
`application_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '申请单名称',
`application_status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'dks' COMMENT 'dks待开始 jxz进行中 ywc已完成 yzf已作废',
`channel_service_order_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '渠道服务购买订单ID',
`channel_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '渠道ID(缓存自服务订单)',
@@ -2514,6 +2600,7 @@ CREATE TABLE `biz_pilot_application` (
-- Records of biz_pilot_application
-- ----------------------------
BEGIN;
INSERT INTO `biz_pilot_application` (`id`, `application_no`, `application_status`, `channel_service_order_id`, `channel_id`, `channel_name`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('290ecf59-82cc-4a53-8cc2-3f72fa151bee', 'ZSSQ202605250001', 'dks', '8AEEEE2F49CF4DB5A75A25570A718A37', 'TDP000000000000000000000000000052', '六安金安健康管理中心', 'zkxw', 0, '123', 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-05-25 20:34:37', 'd3000000000000000000000000000001', '2026-05-25 20:34:37', 0);
COMMIT;
-- ----------------------------
@@ -2740,6 +2827,7 @@ CREATE TABLE `biz_pilot_infusion_plan` (
`course_interval` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '疗程间隔描述',
`infusion_route` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '输注途径',
`infusion_start_date` char(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '输注开始日期YYYYMMDD',
`channel_agreement_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '渠道协议ID',
`tenant_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
`remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
@@ -2769,6 +2857,8 @@ CREATE TABLE `biz_pilot_infusion_schedule` (
`cell_type` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '细胞类型',
`spec_text` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '规格',
`infusion_time` datetime DEFAULT NULL COMMENT '输注时间',
`infusion_location` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '输注地点',
`infusion_method` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '输注方式(字典 szfs)',
`schedule_status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'dsc' COMMENT 'dsc待生产 ysc已生产 yjf已交付 yqx已取消',
`attachments` varchar(4000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '附件逗号分隔',
`tenant_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
@@ -2784,6 +2874,35 @@ CREATE TABLE `biz_pilot_infusion_schedule` (
KEY `idx_pis_plan` (`infusion_plan_id`,`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='中试申请单-输注计划';
-- ----------------------------
-- Table structure for biz_pilot_infusion_schedule_product
-- ----------------------------
DROP TABLE IF EXISTS `biz_pilot_infusion_schedule_product`;
CREATE TABLE `biz_pilot_infusion_schedule_product` (
`id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '主键ID',
`infusion_schedule_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '输注计划ID',
`price_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '协议价格/订单产品引用ID',
`project_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '项目编码',
`project_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '项目名称',
`cell_type_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '细胞类型',
`spec_text` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '规格',
`agreement_price` decimal(18,2) DEFAULT NULL COMMENT '协议单价(元)',
`actual_price` decimal(18,2) DEFAULT NULL COMMENT '实际单价(元)',
`quantity` int(11) DEFAULT '1' COMMENT '份数',
`product_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '产品状态(如待输注)',
`tenant_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
`remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人id',
`create_dept_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建人部门ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人id',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除',
PRIMARY KEY (`id`),
KEY `idx_pisp_schedule` (`infusion_schedule_id`,`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='中试申请单-输注计划细胞产品';
-- ----------------------------
-- Records of biz_pilot_infusion_schedule
-- ----------------------------
@@ -0,0 +1,478 @@
# 中试服务申请单 — 详情页改弹窗 + UI合规修复 实施计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** 将中试服务申请单详情页从独立路由改为弹窗形式(照抄采集协议单的查看/编辑弹窗风格),并修复列表页按钮图标缺失。
**Architecture:** 新建 `ApplicationDetailDialog.vue`,从 `ApplicationDetail.vue` 复制全部业务逻辑,改 props-driven 弹窗接口。列表页 `index.vue` 引入弹窗组件替换路由跳转。照抄 `ProtocolViewDialog`(KPI+data-grid)和 `ProtocolFormDialog`(form-grid+section-card)的 CSS 风格。
**Tech Stack:** Vue 3 + Element Plus + TypeScript + SCSS
**设计规格:** `docs/superpowers/specs/2025-05-25-pilot-application-dialog-refactor-design.md`
---
## 文件结构
| 文件 | 操作 | 职责 |
|------|------|------|
| `src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue` | **新建** | 详情弹窗组件,props-driven,照抄 ProtocolViewDialog + ProtocolFormDialog 风格 |
| `src/views/pilot-service/pilot-application/index.vue` | **修改** | 列表页:引入弹窗组件、替换路由跳转、补按钮图标 |
| `src/views/pilot-service/pilot-application/ApplicationDetail.vue` | **删除** | 被新组件完全替代 |
| `src/router/modules/sqxp.ts` | **修改** | 删除 PilotApplicationDetail 路由定义 |
**参考文件(照抄风格源,只读不修改):**
- `src/views/cell-storage/protocol/ProtocolViewDialog.vue` — KPI 摘要条、data-grid、section-card CSS
- `src/views/cell-storage/protocol/ProtocolFormDialog.vue` — form-grid、upload-card CSS
---
## Task 1: 创建 ApplicationDetailDialog.vue 弹窗壳层 + 基本信息Tab
**Files:**
- Create: `src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue`
- Read: `src/views/pilot-service/pilot-application/ApplicationDetail.vue`(源文件,复制逻辑)
- Read: `src/views/cell-storage/protocol/ProtocolViewDialog.vue`(照抄 KPI + data-grid + section-card CSS)
- [ ] **Step 1: 复制 ApplicationDetail.vue 为 ApplicationDetailDialog.vue 并改造弹窗壳层**
从 `ApplicationDetail.vue` 复制全部内容到 `ApplicationDetailDialog.vue`,然后改造:
1. **替换 `<template>` 最外层**:移除 `<div class="page-container">` 和 `<header class="page-head">`(返回按钮+标题),改为 `el-dialog` 弹窗壳:
```vue
<template>
<el-dialog
:model-value="modelValue"
@update:model-value="emit('update:modelValue', $event)"
:title="dialogTitle"
width="1600px"
class="dialog-form-layout application-detail-dialog"
align-center
destroy-on-close
:close-on-click-modal="false"
>
<div
class="application-detail-body"
:class="{ 'is-loading': detailLoading }"
v-loading="detailLoading"
element-loading-text="加载中…"
>
<!-- detail-tabs sticky 导航 -->
<div class="detail-tabs">
<div
v-for="tab in detailTabs"
:key="tab.key"
class="detail-tab"
:class="{ active: activeTab === tab.key }"
@click="scrollToTab(tab.key)"
>
{{ tab.label }}
</div>
</div>
<template v-if="applicationDetail">
<!-- KPI 摘要条 -->
<div class="kpi-strip">
<div class="kpi-card">
<div class="kpi-card__icon"><el-icon><Document /></el-icon></div>
<div class="kpi-card__main">
<div class="kpi-label">申请单号</div>
<div class="kpi-value kpi-value--emphasis">{{ displayValue(applicationDetail.applicationNo) }}</div>
</div>
</div>
<div class="kpi-card">
<div class="kpi-card__icon"><el-icon><CircleCheck /></el-icon></div>
<div class="kpi-card__main">
<div class="kpi-label">状态</div>
<div class="kpi-value">
<el-tag :type="applicationStatusTagType(applicationDetail.applicationStatus)" size="small">
{{ applicationStatusLabel(applicationDetail.applicationStatus) }}
</el-tag>
</div>
</div>
</div>
<div class="kpi-card">
<div class="kpi-card__icon"><el-icon><User /></el-icon></div>
<div class="kpi-card__main">
<div class="kpi-label">渠道名称</div>
<div class="kpi-value">{{ displayValue(applicationDetail.channelName) }}</div>
</div>
</div>
<div class="kpi-card">
<div class="kpi-card__icon"><el-icon><Calendar /></el-icon></div>
<div class="kpi-card__main">
<div class="kpi-label">创建时间</div>
<div class="kpi-value">{{ displayValue(applicationDetail.createTime) }}</div>
</div>
</div>
</div>
<!-- 原 el-tabs 内容迁移到这里 -->
<div id="tab-basic" class="form-tab-pane">
<!-- 申请单信息(只读,用 data-grid 替代 el-descriptions) -->
<div class="section-card section-card--white">
<div class="section-title"><h3>申请单信息</h3></div>
<div class="data-grid data-grid--4">
<div class="data-item"><div class="data-label">申请单号</div><div class="data-value">{{ displayValue(applicationDetail.applicationNo) }}</div></div>
<div class="data-item"><div class="data-label">渠道名称</div><div class="data-value">{{ displayValue(applicationDetail.channelName) }}</div></div>
<div class="data-item"><div class="data-label">服务订单名称</div><div class="data-value">{{ displayValue(applicationDetail.serviceOrderNo) }}</div></div>
<div class="data-item"><div class="data-label">状态</div><div class="data-value"><el-tag :type="applicationStatusTagType(applicationDetail.applicationStatus)" size="small">{{ applicationStatusLabel(applicationDetail.applicationStatus) }}</el-tag></div></div>
<div class="data-item"><div class="data-label">创建时间</div><div class="data-value">{{ displayValue(applicationDetail.createTime) }}</div></div>
<div class="data-item"><div class="data-label">备注</div><div class="data-value">{{ displayValue(applicationDetail.remark) }}</div></div>
</div>
</div>
<!-- 患者信息(可编辑表单,保留原 form-grid-2 布局) -->
<!-- 直接复制原 ApplicationDetail.vue 中 Tab1 的患者信息部分 -->
</div>
<!-- 其余5个Tab内容照搬原文件,每个用 form-tab-pane 包裹 -->
<!-- ... -->
</template>
</div>
<!-- 状态操作按钮(照抄原 header 中的按钮) -->
<template #header>
<div class="detail-dialog-header">
<div class="detail-dialog-header-left">
<span class="detail-dialog-title">申请单详情</span>
<el-tag v-if="applicationDetail.applicationStatus" :type="applicationStatusTagType(applicationDetail.applicationStatus)" size="large">
{{ applicationStatusLabel(applicationDetail.applicationStatus) }}
</el-tag>
</div>
<div class="detail-dialog-header-right">
<el-button v-if="applicationDetail.applicationStatus === 'dks'" class="btn-main" type="primary" @click="handleStart"><el-icon><VideoPlay /></el-icon>开始</el-button>
<el-button v-if="applicationDetail.applicationStatus === 'jxz'" class="btn-main" type="primary" @click="handleComplete"><el-icon><CircleCheck /></el-icon>完成</el-button>
<el-button v-if="applicationDetail.applicationStatus === 'dks' || applicationDetail.applicationStatus === 'jxz'" class="btn-op-item op-warn" type="danger" @click="handleVoid"><el-icon><CircleClose /></el-icon>作废</el-button>
</div>
</div>
</template>
</el-dialog>
<!-- 8个嵌套弹窗照搬 -->
</template>
```
2. **替换 `<script>` 的 props 接口**:
```typescript
defineOptions({ name: 'ApplicationDetailDialog' })
const props = defineProps<{
modelValue: boolean
applicationId: string
listRow?: any
}>()
const emit = defineEmits<{
(e: 'update:modelValue', val: boolean): void
(e: 'status-changed'): void
}>()
```
3. **替换数据加载方式**:移除 `onMounted` + `route.query.id`,改为:
```typescript
// 移除
// const route = useRoute()
// onMounted(() => { loadApplicationDetail(route.query.id) })
// 新增
const detailTabs = [
{ key: 'basic', label: '基本信息' },
{ key: 'infusion', label: '输注方案' },
{ key: 'checkup', label: '体检信息' },
{ key: 'delivery', label: '交付信息' },
{ key: 'release', label: '放行审核' },
{ key: 'confirm', label: '应用确认' },
]
const activeTab = ref('basic')
const scrollToTab = (key: string) => {
activeTab.value = key
const el = document.getElementById(`tab-${key}`)
if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' })
}
watch(() => props.applicationId, (newId) => {
if (newId && props.modelValue) {
loadApplicationDetail(newId)
}
}, { immediate: true })
```
4. **状态操作后发射事件**:在 `handleStart`、`handleComplete`、`handleVoid` 成功后追加 `emit('status-changed')`
5. **新增图标 import**:`VideoPlay`, `CircleCheck`, `CircleClose`, `Document`, `Calendar` 等
- [ ] **Step 2: 照抄 CSS 样式**
从 `ProtocolViewDialog.vue` 的 `<style scoped>` 中复制以下 CSS 块到 `ApplicationDetailDialog.vue`:
- `.kpi-strip` / `.kpi-card` / `.kpi-card__icon` / `.kpi-card__main` / `.kpi-label` / `.kpi-value`(L2073-2143)
- `.data-grid` / `--2` / `--3` / `--4`(L2197-2212)
- `.data-item` / `.data-label` / `.data-value`(L2214-2238)
- `.section-card` / `--white` / `--green`(L2146-2168)
- `.section-title` + `::before` + `h3`(L2170-2194)
从 `ProtocolFormDialog.vue` 的 `<style scoped>` 中复制:
- `.detail-tabs` / `.detail-tab`(L2878-2912)
- `.form-tab-pane`(L2917-2924)
- `.form-grid` / `--col2` / `--col4` / `.form-col-span-2`(L2995-3023)
新增弹窗 header 样式:
```scss
.detail-dialog-header {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
.detail-dialog-header-left {
display: flex;
align-items: center;
gap: 12px;
}
.detail-dialog-title {
font-size: 16px;
font-weight: 600;
color: #1e293b;
}
.detail-dialog-header-right {
display: flex;
align-items: center;
gap: 8px;
}
.application-detail-body {
background: #f5f7fa;
overflow: visible;
}
```
- [ ] **Step 3: 验证无编译错误**
Run: `cd web-admin && pnpm build:typecheck 2>&1 | head -50`
Expected: 无与 ApplicationDetailDialog.vue 相关的类型错误
---
## Task 2: 改造列表页 index.vue — 引入弹窗 + 补按钮图标
**Files:**
- Modify: `src/views/pilot-service/pilot-application/index.vue`
- [ ] **Step 1: 引入弹窗组件,替换路由跳转逻辑**
在 `<script>` 区域:
1. 移除 `const router = useRouter()`(如果其他地方还用到 router 则保留)
2. 新增弹窗状态变量和事件处理:
```typescript
import ApplicationDetailDialog from './ApplicationDetailDialog.vue'
const detailDialogVisible = ref(false)
const detailApplicationId = ref('')
const handleView = (row: any) => {
detailApplicationId.value = row.id
detailDialogVisible.value = true
}
const handleEdit = (row: any) => {
detailApplicationId.value = row.id
detailDialogVisible.value = true
}
// handleSubmit 中:创建成功后打开弹窗而非跳转路由
// 将 router.push({ name: 'PilotApplicationDetail', ... }) 替换为:
// detailApplicationId.value = newId
// detailDialogVisible.value = true
const onDetailStatusChanged = () => {
loadData()
}
```
3. 在 `<template>` 底部(新增申请单弹窗之后)添加弹窗组件:
```vue
<ApplicationDetailDialog
v-model="detailDialogVisible"
:application-id="detailApplicationId"
@status-changed="onDetailStatusChanged"
/>
```
- [ ] **Step 2: 补充操作列按钮的 el-icon**
在 `<template>` 操作列区域,为所有 `el-button` 补充 `<el-icon>` 前缀:
```vue
<!-- 查看 -->
<el-button class="btn-op-item primary" @click="handleView(row)">
<el-icon><View /></el-icon>查看
</el-button>
<!-- 编辑 -->
<el-button v-if="row.applicationStatus === 'dks'" class="btn-op-item" @click="handleEdit(row)">
<el-icon><Edit /></el-icon>编辑
</el-button>
<!-- 删除(popconfirm 内) -->
<template #reference>
<el-button class="btn-op-item op-warn"><el-icon><Delete /></el-icon>删除</el-button>
</template>
<!-- 开始 -->
<el-button v-if="row.applicationStatus === 'dks'" class="btn-op-item primary" type="primary" @click="handleStart(row)">
<el-icon><VideoPlay /></el-icon>开始
</el-button>
<!-- 完成 -->
<el-button v-if="row.applicationStatus === 'jxz'" class="btn-op-item primary" type="primary" @click="handleComplete(row)">
<el-icon><CircleCheck /></el-icon>完成
</el-button>
<!-- 作废 -->
<el-button v-if="..." class="btn-op-item op-warn" type="danger" @click="handleVoid(row)">
<el-icon><CircleClose /></el-icon>作废
</el-button>
```
更新 import 语句:
```typescript
import {
Plus, Search, RefreshLeft, Close, Check,
View, Edit, Delete, VideoPlay, CircleCheck, CircleClose
} from '@element-plus/icons-vue'
```
- [ ] **Step 3: 验证列表页无编译错误**
Run: `cd web-admin && pnpm build:typecheck 2>&1 | head -50`
Expected: 无与 index.vue 相关的类型错误
---
## Task 3: 清理路由 + 删除旧详情页
**Files:**
- Modify: `src/router/modules/sqxp.ts`
- Delete: `src/views/pilot-service/pilot-application/ApplicationDetail.vue`
- [ ] **Step 1: 删除 PilotApplicationDetail 路由定义**
在 `src/router/modules/sqxp.ts` 第650-656行,删除:
```typescript
{
id: '80000000000000000000000000000011',
name: 'PilotApplicationDetail',
path: 'pilot-application/detail',
component: '/pilot-service/pilot-application/ApplicationDetail',
meta: { title: '申请单详情', hidden: true }
}
```
注意保留上一行的逗号处理——删除该对象后,`PilotApplication` 路由对象后不应有尾随逗号。
- [ ] **Step 2: 删除 ApplicationDetail.vue**
```bash
rm src/views/pilot-service/pilot-application/ApplicationDetail.vue
```
- [ ] **Step 3: 全局搜索确认无其他引用**
Run: `grep -r "PilotApplicationDetail\|ApplicationDetail" web-admin/src/ --include="*.vue" --include="*.ts"`
Expected: 0 结果(所有引用已清理)
---
## Task 4: 弹窗内嵌套弹窗按钮图标补充
**Files:**
- Modify: `src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue`
- [ ] **Step 1: 检查并补充弹窗内所有操作按钮的 el-icon**
在 `ApplicationDetailDialog.vue` 中,搜索所有 `el-button` 标签(不含 `el-icon` 子元素的),按 openspec 规范补充图标:
- "新增输注方案" → `Plus`
- "手动添加计划" → `Plus`
- "选择客户" → `User`
- "保存患者信息" → `Check`
- 各 Tab 中的"编辑" → `Edit`
- 各 Tab 中的"删除" → `Delete`
- 嵌套弹窗 footer 的"取消" → `Close`,"确定" → `Check`
- 其他操作按钮逐一检查
确保所有图标已在 `<script>` 中从 `@element-plus/icons-vue` import。
- [ ] **Step 2: 验证无遗漏**
Run: `grep -n '<el-button' web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue | head -50`
Expected: 手动检查每个 el-button 是否包含 `<el-icon>` 子元素
---
## Task 5: 端到端验证
**Files:** 无新增修改
- [ ] **Step 1: 构建检查**
Run: `cd web-admin && pnpm build 2>&1 | tail -20`
Expected: 构建成功,无错误
- [ ] **Step 2: Lint 检查**
Run: `cd web-admin && pnpm lint 2>&1 | tail -30`
Expected: 无 ESLint 错误(或仅预存在的无关错误)
- [ ] **Step 3: 更新知识图谱**
Run: `./scripts/update-graph.sh frontend`
Expected: 前端知识图谱更新成功
---
## Self-Review
### 1. Spec Coverage
| Spec Section | Task |
|---|---|
| 3.1 照抄清单 A1-A5 (ViewDialog) | Task 1 (弹窗壳层+CSS) |
| 3.1 照抄清单 B1-B4 (FormDialog) | Task 1 (表单CSS) |
| 3.1 照抄清单 C1-C4 (公共) | Task 1 (detail-tabs, section-card) |
| 3.2 弹窗组件接口 | Task 1 (defineProps/defineEmits) |
| 3.3 弹窗壳层配置 | Task 1 (el-dialog 1600px) |
| 3.4 顶部区域改造 | Task 1 (自定义 #header) |
| 3.5 正文结构 | Task 1 (KPI + data-grid + form-tab-pane) |
| 3.6 数据加载变更 | Task 1 (watch) |
| 3.7 列表页改造 | Task 2 (引入弹窗+替换路由) |
| 4.1 操作列按钮图标 | Task 2 (补充 el-icon) |
| 4.2 弹窗内按钮图标 | Task 4 |
| 5. 路由清理 | Task 3 |
**Gap check:** 无遗漏。
### 2. Placeholder Scan
无 TBD/TODO/占位符。
### 3. Type Consistency
- `ApplicationDetailDialog` props: `modelValue: boolean`, `applicationId: string` — 与 `index.vue` 中的使用 `v-model="detailDialogVisible"` 和 `:application-id="detailApplicationId"` 一致。
- Event `status-changed` — 与 `@status-changed="onDetailStatusChanged"` 一致。
@@ -0,0 +1,941 @@
# 体检管理页面实施计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** 新增独立的体检管理页面,以患者为维度管理中试服务体检全流程(登记、上传报告、费用结算)。
**Architecture:** 在现有 `biz_pilot_checkup` 表新增 `pilot_patient_id` 字段实现患者维度关联。后端新增 3 个 API(分页列表、待登记患者、批量创建),前端新增 3 个 Vue 文件(列表页 + 登记弹窗 + 详情弹窗)。
**Tech Stack:** FastAPI + SQLAlchemy(后端)、Vue 3 + Element Plus + TypeScript(前端)
**Design Spec:** `docs/superpowers/specs/2026-05-26-checkup-management-page-design.md`
---
## File Map
### Backend — 新建/修改
| 文件 | 操作 | 职责 |
|------|------|------|
| `docs/sql/2026-05-26-add-pilot-patient-id-to-checkup.sql` | 新建 | ALTER TABLE 迁移 SQL |
| `backend/app/models/models.py:2913-2938` | 修改 | `BizPilotCheckup` 新增 `pilot_patient_id` 字段 |
| `backend/app/crud/pilot_checkup.py` | 修改 | 新增 3 个函数 + 更新现有 `_row_to_dict_checkup`/`create_checkup` |
| `backend/app/api/pilot_checkup.py` | 修改 | 新增 3 个端点 + 更新 `CheckupSaveBody` |
### Frontend — 新建/修改
| 文件 | 操作 | 职责 |
|------|------|------|
| `web-admin/src/api/admin.ts` | 修改 | 新增 3 个 API 函数 |
| `web-admin/src/router/modules/sqxp.ts` | 修改 | 新增路由 |
| `web-admin/src/views/pilot-service/checkup-management/index.vue` | 新建 | 主列表页 |
| `web-admin/src/views/pilot-service/checkup-management/CheckupRegisterDialog.vue` | 新建 | 批量登记体检弹窗 |
| `web-admin/src/views/pilot-service/checkup-management/CheckupDetailDialog.vue` | 新建 | 详情弹窗(报告上传 + 实际项目) |
---
## Task 1: 数据库迁移 SQL
**Files:**
- Create: `docs/sql/2026-05-26-add-pilot-patient-id-to-checkup.sql`
- [ ] **Step 1: 创建迁移 SQL 文件**
```sql
-- 2026-05-26: biz_pilot_checkup 新增 pilot_patient_id 字段
-- 用于体检管理页面按患者维度管理体检记录
ALTER TABLE biz_pilot_checkup
ADD COLUMN pilot_patient_id VARCHAR(64) DEFAULT NULL COMMENT '中试患者ID'
AFTER pilot_application_id;
-- 为已有数据补充 pilot_patient_id(通过申请单关联患者)
-- 注意:一个申请单可能对应多个患者,这里仅标记第一个需要体检的患者
-- 新数据将通过 API 正确设置
CREATE INDEX idx_pilot_checkup_patient_id ON biz_pilot_checkup(pilot_patient_id);
```
- [ ] **Step 2: 在数据库执行迁移**
```bash
cd backend && source venv/bin/activate
python -c "
from app.core.database import engine
from sqlalchemy import text
with engine.connect() as conn:
conn.execute(text('ALTER TABLE biz_pilot_checkup ADD COLUMN pilot_patient_id VARCHAR(64) DEFAULT NULL COMMENT \"中试患者ID\" AFTER pilot_application_id'))
conn.execute(text('CREATE INDEX idx_pilot_checkup_patient_id ON biz_pilot_checkup(pilot_patient_id)'))
conn.commit()
print('Migration done')
"
```
- [ ] **Step 3: 提交**
```bash
git add docs/sql/2026-05-26-add-pilot-patient-id-to-checkup.sql
git commit -m "feat(checkup): add pilot_patient_id column to biz_pilot_checkup table"
```
---
## Task 2: 后端 Model 更新
**Files:**
- Modify: `backend/app/models/models.py` (line ~2913, `BizPilotCheckup` class)
- [ ] **Step 1: 在 `BizPilotCheckup` 类中新增字段**
在 `pilot_application_id` 字段之后(约 line 2919 后)添加:
```python
pilot_patient_id = Column(String(64), nullable=True, comment="中试患者ID")
```
完整上下文:找到 `BizPilotCheckup` 类中的 `pilot_application_id` 行,在其下一行添加 `pilot_patient_id`。
- [ ] **Step 2: 验证 Model 能正常加载**
```bash
cd backend && source venv/bin/activate
python -c "from app.models.models import BizPilotCheckup; print([c.name for c in BizPilotCheckup.__table__.columns])"
```
预期输出包含 `pilot_patient_id`。
- [ ] **Step 3: 提交**
```bash
git add backend/app/models/models.py
git commit -m "feat(checkup): add pilot_patient_id to BizPilotCheckup model"
```
---
## Task 3: 后端 CRUD 层更新
**Files:**
- Modify: `backend/app/crud/pilot_checkup.py`
- [ ] **Step 1: 更新 `_row_to_dict_checkup` 函数 — 添加 `pilotPatientId` 字段**
在 `_row_to_dict_checkup` 函数的字典构建中,`"pilotApplicationId"` 行之后添加:
```python
"pilotPatientId": row.pilot_patient_id or "",
```
同时,在 `if db and tenant_no:` 块内(`institutionName` 查找之后),添加患者信息关联查询:
```python
# patientName / sex / age / phoneNo — from BizPilotPatient
from app.models.models import BizPilotPatient, BizPilotApplication
if row.pilot_patient_id:
patient = (
db.query(BizPilotPatient)
.filter(
BizPilotPatient.id == row.pilot_patient_id,
BizPilotPatient.del_flag == 0,
)
.first()
)
if patient:
d["patientName"] = patient.patient_name or ""
d["sex"] = patient.sex or ""
d["age"] = patient.age
d["phoneNo"] = patient.phone_no or ""
else:
d["patientName"] = ""
d["sex"] = ""
d["age"] = None
d["phoneNo"] = ""
else:
d["patientName"] = ""
d["sex"] = ""
d["age"] = None
d["phoneNo"] = ""
# applicationNo / channelName — from BizPilotApplication
if row.pilot_application_id:
app = (
db.query(BizPilotApplication)
.filter(
BizPilotApplication.id == row.pilot_application_id,
BizPilotApplication.del_flag == 0,
)
.first()
)
if app:
d["applicationNo"] = app.application_no or ""
d["channelName"] = app.channel_name or ""
else:
d["applicationNo"] = ""
d["channelName"] = ""
else:
d["applicationNo"] = ""
d["channelName"] = ""
```
注意:`from app.models.models import BizPilotPatient, BizPilotApplication` 已在文件顶部 import 区域(如果不存在需添加)。当前文件顶部已有:
```python
from app.models.models import (
BizCheckupInstitution,
BizPilotCheckup,
BizPilotCheckupActualItem,
BizPilotCheckupReserveItem,
)
```
需要改为:
```python
from app.models.models import (
BizCheckupInstitution,
BizPilotApplication,
BizPilotCheckup,
BizPilotCheckupActualItem,
BizPilotCheckupReserveItem,
BizPilotPatient,
)
```
- [ ] **Step 2: 更新 `create_checkup` 函数 — 支持 `pilot_patient_id`**
在 `create_checkup` 函数中,`BizPilotCheckup(...)` 构造参数里添加:
```python
pilot_patient_id=data.get("pilotPatientId") or None,
```
- [ ] **Step 3: 新增 `list_checkups_paginated` 函数**
在文件末尾(`delete_actual_item` 函数之后)添加:
```python
# ────────────────────────────────────────────
# Checkup List (Paginated)
# ────────────────────────────────────────────
def list_checkups_paginated(
db: Session,
tenant_no: str,
page: int = 1,
page_size: int = 10,
checkup_status: Optional[str] = None,
fee_status: Optional[str] = None,
checkup_institution_id: Optional[str] = None,
application_no: Optional[str] = None,
patient_name: Optional[str] = None,
channel_id: Optional[str] = None,
) -> Dict[str, Any]:
q = db.query(BizPilotCheckup).filter(
BizPilotCheckup.tenant_no == tenant_no,
BizPilotCheckup.del_flag == 0,
)
if checkup_status:
statuses = [s.strip() for s in checkup_status.split(",") if s.strip()]
if statuses:
q = q.filter(BizPilotCheckup.checkup_status.in_(statuses))
if fee_status:
statuses = [s.strip() for s in fee_status.split(",") if s.strip()]
if statuses:
q = q.filter(BizPilotCheckup.fee_status.in_(statuses))
if checkup_institution_id:
q = q.filter(BizPilotCheckup.checkup_institution_id == checkup_institution_id)
if application_no:
app_subq = (
db.query(BizPilotApplication.id)
.filter(
BizPilotApplication.application_no.like(f"%{application_no}%"),
BizPilotApplication.del_flag == 0,
)
.subquery()
)
q = q.filter(BizPilotCheckup.pilot_application_id.in_(app_subq))
if patient_name:
patient_subq = (
db.query(BizPilotPatient.id)
.filter(
BizPilotPatient.patient_name.like(f"%{patient_name}%"),
BizPilotPatient.del_flag == 0,
)
.subquery()
)
q = q.filter(BizPilotCheckup.pilot_patient_id.in_(patient_subq))
if channel_id:
app_subq = (
db.query(BizPilotApplication.id)
.filter(
BizPilotApplication.channel_id == channel_id,
BizPilotApplication.del_flag == 0,
)
.subquery()
)
q = q.filter(BizPilotCheckup.pilot_application_id.in_(app_subq))
total = q.order_by(None).with_entities(func.count(BizPilotCheckup.id)).scalar() or 0
page = max(1, page)
page_size = min(max(1, page_size), 100)
rows = (
q.order_by(BizPilotCheckup.create_time.desc())
.offset((page - 1) * page_size)
.limit(page_size)
.all()
)
items = [_row_to_dict_checkup(r, db, tenant_no) for r in rows]
return {
"list": items,
"pagination": {"page": page, "pageSize": page_size, "total": total},
}
```
- [ ] **Step 4: 新增 `list_pending_patients` 函数**
紧接上面函数之后添加:
```python
def list_pending_patients(
db: Session,
tenant_no: str,
page: int = 1,
page_size: int = 10,
application_no: Optional[str] = None,
patient_name: Optional[str] = None,
channel_id: Optional[str] = None,
) -> Dict[str, Any]:
"""查询 need_checkup=1 但尚未有 biz_pilot_checkup 记录的患者"""
# 已有 checkup 的 patient_id 集合
checked_patient_ids = (
db.query(BizPilotCheckup.pilot_patient_id)
.filter(
BizPilotCheckup.tenant_no == tenant_no,
BizPilotCheckup.del_flag == 0,
BizPilotCheckup.pilot_patient_id.isnot(None),
BizPilotCheckup.pilot_patient_id != "",
)
.subquery()
)
q = db.query(BizPilotPatient).filter(
BizPilotPatient.need_checkup == 1,
BizPilotPatient.tenant_no == tenant_no,
BizPilotPatient.del_flag == 0,
~BizPilotPatient.id.in_(checked_patient_ids),
)
if patient_name:
q = q.filter(BizPilotPatient.patient_name.like(f"%{patient_name}%"))
if application_no or channel_id:
app_q = db.query(BizPilotApplication.id).filter(
BizPilotApplication.tenant_no == tenant_no,
BizPilotApplication.del_flag == 0,
)
if application_no:
app_q = app_q.filter(
BizPilotApplication.application_no.like(f"%{application_no}%")
)
if channel_id:
app_q = app_q.filter(BizPilotApplication.channel_id == channel_id)
app_subq = app_q.subquery()
q = q.filter(BizPilotPatient.pilot_application_id.in_(app_subq))
total = q.order_by(None).with_entities(func.count(BizPilotPatient.id)).scalar() or 0
page = max(1, page)
page_size = min(max(1, page_size), 100)
rows = (
q.order_by(BizPilotPatient.create_time.desc())
.offset((page - 1) * page_size)
.limit(page_size)
.all()
)
items = []
for r in rows:
d = {
"id": r.id,
"pilotApplicationId": r.pilot_application_id or "",
"patientName": r.patient_name or "",
"sex": r.sex or "",
"age": r.age,
"phoneNo": r.phone_no or "",
}
# 关联申请单信息
app = (
db.query(BizPilotApplication)
.filter(
BizPilotApplication.id == r.pilot_application_id,
BizPilotApplication.del_flag == 0,
)
.first()
)
if app:
d["applicationNo"] = app.application_no or ""
d["channelName"] = app.channel_name or ""
d["channelId"] = app.channel_id or ""
else:
d["applicationNo"] = ""
d["channelName"] = ""
d["channelId"] = ""
items.append(d)
return {
"list": items,
"pagination": {"page": page, "pageSize": page_size, "total": total},
}
```
- [ ] **Step 5: 新增 `batch_create_checkups` 函数**
紧接上面函数之后添加:
```python
def batch_create_checkups(
db: Session,
patient_ids: list,
checkup_institution_id: str,
reserve_time: Optional[str],
reserve_items: list,
tenant_no: str,
user_id: str,
) -> list:
"""为多个患者批量创建体检记录 + 预约项目"""
results = []
now = datetime.now()
for patient_id in patient_ids:
# 查找患者信息以获取 application_id
patient = (
db.query(BizPilotPatient)
.filter(
BizPilotPatient.id == patient_id,
BizPilotPatient.tenant_no == tenant_no,
BizPilotPatient.del_flag == 0,
)
.first()
)
if not patient:
continue
# 创建 checkup 主记录
checkup_row = BizPilotCheckup(
id=uuid.uuid4().hex,
pilot_application_id=patient.pilot_application_id,
pilot_patient_id=patient_id,
checkup_institution_id=checkup_institution_id or "",
reserve_time=reserve_time or None,
reserve_fee=sum(
float(item.get("projectFee") or 0) for item in reserve_items
) if reserve_items else None,
actual_checkup_time=None,
actual_checkup_fee=None,
fee_settled=0,
checkup_status="dtj",
fee_status="wjs",
checkup_remark="",
report_attachments="",
tenant_no=tenant_no,
order_num=0,
remark="",
create_by=user_id,
create_dept_id="",
create_time=now,
update_by=user_id,
update_time=now,
del_flag=0,
)
db.add(checkup_row)
db.flush() # 确保 checkup_row.id 可用
# 创建预约项目
for idx, item in enumerate(reserve_items):
ri = BizPilotCheckupReserveItem(
id=uuid.uuid4().hex,
pilot_checkup_id=checkup_row.id,
project_name=item.get("projectName") or item.get("project_name") or "",
project_fee=item.get("projectFee") if item.get("projectFee") is not None else (
item.get("project_fee") if item.get("project_fee") is not None else None
),
tenant_no=tenant_no,
order_num=idx + 1,
remark="",
create_by=user_id,
create_dept_id="",
create_time=now,
update_by=user_id,
update_time=now,
del_flag=0,
)
db.add(ri)
results.append(_row_to_dict_checkup(checkup_row, db, tenant_no))
db.commit()
return results
```
- [ ] **Step 6: 验证 CRUD 能正常加载**
```bash
cd backend && source venv/bin/activate
python -c "from app.crud import pilot_checkup; print([f for f in dir(pilot_checkup) if not f.startswith('_')])"
```
预期输出包含 `list_checkups_paginated`、`list_pending_patients`、`batch_create_checkups`。
- [ ] **Step 7: 提交**
```bash
git add backend/app/crud/pilot_checkup.py
git commit -m "feat(checkup): add paginated list, pending patients, and batch create CRUD functions"
```
---
## Task 4: 后端 API 层更新
**Files:**
- Modify: `backend/app/api/pilot_checkup.py`
- [ ] **Step 1: 更新 `CheckupSaveBody` — 新增 `patient_id` 字段**
在 `CheckupSaveBody` 类中添加:
```python
patient_id: Optional[str] = None
```
- [ ] **Step 2: 更新 `api_save_checkup` — 传递 `patient_id`**
在 `api_save_checkup` 函数中,`data` 字典构建添加:
```python
"pilotPatientId": body.patient_id,
```
- [ ] **Step 3: 新增 `BatchCheckupSaveBody` Schema**
在 Pydantic Schemas 区域(`CheckupItemsSaveBody` 之后)添加:
```python
class BatchCheckupSaveBody(BaseModel):
patientIds: List[str]
checkupInstitutionId: Optional[str] = None
reserveTime: Optional[str] = None
reserveItems: Optional[List[CheckupItemBody]] = None
```
- [ ] **Step 4: 新增 `api_list_checkups` 端点**
在"1. 体检信息 CRUD"区域末尾(`api_settle_fee` 之后)添加:
```python
@router.get("/pilot-checkup/list")
async def api_list_checkups(
page: int = Query(1, ge=1),
pageSize: int = Query(10, ge=1, le=100, alias="pageSize"),
checkupStatus: Optional[str] = Query(None, alias="checkupStatus"),
feeStatus: Optional[str] = Query(None, alias="feeStatus"),
checkupInstitutionId: Optional[str] = Query(None, alias="checkupInstitutionId"),
applicationNo: Optional[str] = Query(None, alias="applicationNo"),
patientName: Optional[str] = Query(None, alias="patientName"),
channelId: Optional[str] = Query(None, alias="channelId"),
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
tenant_no = _get_tenant_no(db, user)
result = pilot_checkup.list_checkups_paginated(
db,
tenant_no=tenant_no,
page=page,
page_size=pageSize,
checkup_status=checkupStatus,
fee_status=feeStatus,
checkup_institution_id=checkupInstitutionId,
application_no=applicationNo,
patient_name=patientName,
channel_id=channelId,
)
return success_response(result)
```
- [ ] **Step 5: 新增 `api_list_pending_patients` 端点**
```python
@router.get("/pilot-checkup/pending-patients")
async def api_list_pending_patients(
page: int = Query(1, ge=1),
pageSize: int = Query(10, ge=1, le=100, alias="pageSize"),
applicationNo: Optional[str] = Query(None, alias="applicationNo"),
patientName: Optional[str] = Query(None, alias="patientName"),
channelId: Optional[str] = Query(None, alias="channelId"),
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
tenant_no = _get_tenant_no(db, user)
result = pilot_checkup.list_pending_patients(
db,
tenant_no=tenant_no,
page=page,
page_size=pageSize,
application_no=applicationNo,
patient_name=patientName,
channel_id=channelId,
)
return success_response(result)
```
- [ ] **Step 6: 新增 `api_batch_save_checkup` 端点**
```python
@router.post("/pilot-checkup/batch-save")
async def api_batch_save_checkup(
body: BatchCheckupSaveBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
items_json = [item.dict() for item in body.reserveItems] if body.reserveItems else []
result = pilot_checkup.batch_create_checkups(
db,
patient_ids=body.patientIds,
checkup_institution_id=body.checkupInstitutionId or "",
reserve_time=body.reserveTime or None,
reserve_items=items_json,
tenant_no=tenant_no,
user_id=user.get("user_id"),
)
return success_response(result, message=f"成功为 {len(result)} 名患者创建体检记录")
except ValueError as e:
return error_response(400, str(e))
```
- [ ] **Step 7: 验证 API 能正常启动**
```bash
cd backend && source venv/bin/activate
python -c "from app.api.pilot_checkup import router; routes = [r.path for r in router.routes]; print(routes)"
```
预期输出包含 `/web/admin/pilot-checkup/list`、`/web/admin/pilot-checkup/pending-patients`、`/web/admin/pilot-checkup/batch-save`。
- [ ] **Step 8: 提交**
```bash
git add backend/app/api/pilot_checkup.py
git commit -m "feat(checkup): add list, pending-patients, and batch-save API endpoints"
```
---
## Task 5: 前端 API 函数
**Files:**
- Modify: `web-admin/src/api/admin.ts`
- [ ] **Step 1: 在"中试服务 - 体检管理"区域末尾(`deletePilotCheckupActualItem` 之后)添加 3 个新函数**
```typescript
// 体检记录分页列表
export const fetchPilotCheckupList = (params: any) =>
request.get({ url: '/web/admin/pilot-checkup/list', params })
// 待登记体检的患者列表
export const fetchPilotCheckupPendingPatients = (params: any) =>
request.get({ url: '/web/admin/pilot-checkup/pending-patients', params })
// 批量创建体检记录
export const batchSavePilotCheckup = (data: any) =>
request.post({ url: '/web/admin/pilot-checkup/batch-save', params: data })
```
- [ ] **Step 2: 验证无语法错误**
```bash
cd web-admin && npx tsc --noEmit src/api/admin.ts 2>&1 | head -5
```
- [ ] **Step 3: 提交**
```bash
git add web-admin/src/api/admin.ts
git commit -m "feat(checkup): add frontend API functions for checkup management page"
```
---
## Task 6: 前端路由
**Files:**
- Modify: `web-admin/src/router/modules/sqxp.ts`
- [ ] **Step 1: 在 `PilotService` 的 `children` 数组末尾(`PilotApplication` 路由之后,即约 line 710 的 `}` 之前)添加新路由**
```typescript
{
id: '80000000000000000000000000000011',
name: 'CheckupManagement',
path: 'checkup-management',
component: '/pilot-service/checkup-management/index',
meta: {
title: '体检管理',
keepAlive: true,
menuCode: 'pilot-service:checkup-management:list'
}
}
```
- [ ] **Step 2: 提交**
```bash
git add web-admin/src/router/modules/sqxp.ts
git commit -m "feat(checkup): add checkup management route"
```
---
## Task 7: 列表页 `index.vue`
**Files:**
- Create: `web-admin/src/views/pilot-service/checkup-management/index.vue`
**参考模板**: `pilot-service/channel-service-order/index.vue`(复杂列表)+ `checkup-institution/index.vue`(同模块风格)
- [ ] **Step 1: 创建目录**
```bash
mkdir -p web-admin/src/views/pilot-service/checkup-management
```
- [ ] **Step 2: 创建 `index.vue`**
页面结构要求(遵循 AGENTS.md UI 规范):
- `page-container` > `page-head` > `h1` 标题"体检管理"
- `panel` > `panel-top` > `h2` "体检记录"
- `filter-block` > `filter-grid`(2行4列筛选项)
- `list-toolbar`:已选 N 项 + 「登记体检」按钮
- `el-table` 带 `type="selection"` 列
- `el-pagination`
- 操作列 `fixed="right"` min-width ≥ 260
筛选项:
- 体检状态(`el-select`:全部/待体检/已体检)
- 费用状态(`el-select`:全部/未结算/已结算)
- 体检机构(`el-select`,调用 `fetchCheckupInstitutionList` 加载选项)
- 申请单号(`el-input`)
- 患者姓名(`el-input`)
表格列(`min-width`,无 `width`):
| 列 | prop | 说明 |
|---|---|---|
| ☐选择 | — | `type="selection"` |
| 序号 | — | `type="index"` |
| 申请单号 | applicationNo | |
| 患者姓名 | patientName | |
| 性别 | sex | 显示"男"/"女" |
| 年龄 | age | |
| 渠道名称 | channelName | |
| 体检机构 | institutionName | 未登记显示"—" |
| 预约时间 | reserveTime | |
| 体检状态 | checkupStatus | `el-tag`:`checkupStatusTagType` |
| 费用状态 | feeStatus | `el-tag`:待结算 info / 已结算 success |
| 实际费用 | actualCheckupFee | `formatMoneyDisplay` |
| 操作 | — | 查看 / 标记已体检 / 费用结算 |
操作按钮条件:
- 查看:始终可用 → 打开 `CheckupDetailDialog`
- 标记已体检:`checkupStatus === 'dtj'` 可用
- 费用结算:`checkupStatus === 'ytj' && feeStatus === 'wjs'` 可用
工具栏「登记体检」按钮:`selectedRows.length > 0` 且所有选中行 `checkupStatus === 'dtj'` 时可用,点击打开 `CheckupRegisterDialog`。
API 调用:
- 列表数据:`fetchPilotCheckupList`
- 机构下拉:`fetchCheckupInstitutionList`
- 标记已体检:`markPilotCheckupChecked`
- 费用结算:`settlePilotCheckupFee`
复用工具:
- `checkupStatusLabel` / `checkupStatusTagType` from `@/utils/status-tag-registry`
- `formatMoneyDisplay` from `@/utils/format`
- [ ] **Step 3: 验证页面加载**
启动 dev server,访问 `/#/pilot-service/checkup-management`,确认页面正常渲染。
- [ ] **Step 4: 提交**
```bash
git add web-admin/src/views/pilot-service/checkup-management/index.vue
git commit -m "feat(checkup): create checkup management list page"
```
---
## Task 8: 登记体检弹窗 `CheckupRegisterDialog.vue`
**Files:**
- Create: `web-admin/src/views/pilot-service/checkup-management/CheckupRegisterDialog.vue`
**参考模式**: `CheckupPackagePanel.vue`(项目选择器模式)
- [ ] **Step 1: 创建弹窗组件**
组件结构:
- `el-dialog` title="登记体检" width="1380px" `class="dialog-form-layout"` `destroy-on-close`
- 内部分 3 个区域:患者选择区、体检信息区、项目选择区
**患者选择区**:
- 搜索栏:申请单号 + 患者姓名 + 搜索按钮
- `el-table` 带 `type="selection"`:展示 `fetchPilotCheckupPendingPatients` 数据
- 列:申请单号、患者姓名、性别、年龄、渠道名称
- 底部显示"已选 N 名患者"
**体检信息区**(`form-grid-2`):
- 体检机构:`el-select` 调用 `fetchCheckupInstitutionList`,选择后加载该机构的项目和套餐
- 预约时间:`el-date-picker` type="datetime"
**项目选择区**:
- `el-tabs` 两个 Tab:「从套餐添加」和「添加单项」
- Tab 1(套餐):`el-select` 选套餐 → 点击"加载套餐项目" → 自动填充到项目列表
- Tab 2(单项):`el-button` "添加项目" → 打开项目选择器(`el-table` 带 selection 展示该机构所有项目)
- 已选项目列表:`el-table` 显示项目名称 + 费用,可删除
- 底部合计费用
**保存逻辑**:
- 校验:至少选 1 名患者、必选体检机构
- 调用 `batchSavePilotCheckup` 传入 `{ patientIds, checkupInstitutionId, reserveTime, reserveItems }`
- 成功后 `emit('success')` 并关闭弹窗
API 调用:
- `fetchPilotCheckupPendingPatients` — 搜索患者
- `fetchCheckupInstitutionList` — 机构下拉
- `fetchCheckupInstitutionProjects(institutionId)` — 机构项目列表
- `fetchCheckupInstitutionPackages(institutionId)` — 机构套餐列表
- `fetchCheckupInstitutionPackageDetail(packageId)` — 套餐详情(含项目)
- `batchSavePilotCheckup` — 批量保存
- [ ] **Step 2: 在 `index.vue` 中引入并使用**
在 `index.vue` 中 import 并注册 `CheckupRegisterDialog`,添加 `v-model` 绑定和 `@success` 回调(回调刷新列表)。
- [ ] **Step 3: 提交**
```bash
git add web-admin/src/views/pilot-service/checkup-management/
git commit -m "feat(checkup): create batch checkup register dialog"
```
---
## Task 9: 详情弹窗 `CheckupDetailDialog.vue`
**Files:**
- Create: `web-admin/src/views/pilot-service/checkup-management/CheckupDetailDialog.vue`
**参考模式**: `ApplicationDetailDialog.vue` 体检 Tab 部分(约 line 2900-3500)
- [ ] **Step 1: 创建详情弹窗组件**
组件结构:
- `el-dialog` title="体检详情 — {patientName}" width="1200px" `class="dialog-form-layout"` `destroy-on-close`
**基本信息区**(只读展示,`form-grid-2`):
- 申请单号、患者姓名、性别、年龄、渠道名称
- 体检机构、预约时间
- 体检状态 `el-tag`、费用状态 `el-tag`
**预约项目区**(只读):
- `el-table` 展示预约项目列表(项目名称 + 费用)
- 底部合计
**实际项目区**(可编辑):
- `el-button` "添加单项" → 内联输入行(项目名称 input + 费用 input + 确认按钮)
- `el-table` 展示实际项目列表(项目名称 + 费用 + 删除操作)
- 底部合计
**体检报告区**(卡片化上传,参考 `ProtocolFormDialog.vue`):
- `el-upload` 触发器为虚线卡片(140×96px, dashed border `#a7f3d0`)
- 已上传文件展示为卡片行,每个卡片含文件名 + 下载/删除按钮
- 上传调用 `fetchUploadAttachment`,URL 以逗号分隔存储到 `reportAttachments`
**备注区**:
- `el-input` type="textarea" v-model 绑定 `checkupRemark`
**底部操作按钮**(根据状态显示):
- 标记已体检:`checkupStatus === 'dtj'` 时显示
- 费用结算:`checkupStatus === 'ytj' && feeStatus === 'wjs'` 时显示
- 保存:保存备注和实际项目修改
API 调用:
- 打开时加载:`fetchPilotCheckupDetail({ application_id })` + `fetchPilotCheckupReserveItems` + `fetchPilotCheckupActualItems`
- 保存实际项目:`savePilotCheckupActualItems`
- 保存主信息:`savePilotCheckup`
- 标记已体检:`markPilotCheckupChecked`
- 费用结算:`settlePilotCheckupFee`
- 上传附件:`fetchUploadAttachment`
- 下载附件:`fetchAttachmentDownloadUrl`
- [ ] **Step 2: 在 `index.vue` 中引入并使用**
在 `index.vue` 中 import 并注册 `CheckupDetailDialog`,点击"查看"或行双击时打开。
- [ ] **Step 3: 提交**
```bash
git add web-admin/src/views/pilot-service/checkup-management/
git commit -m "feat(checkup): create checkup detail dialog with report upload"
```
---
## Task 10: 端到端验证
- [ ] **Step 1: 启动后端**
```bash
cd backend && source venv/bin/activate && ./start-local.sh
```
- [ ] **Step 2: 启动前端**
```bash
cd web-admin && pnpm dev
```
- [ ] **Step 3: 验证关键流程**
1. 访问 `/#/pilot-service/checkup-management`,列表页正常加载
2. 点击「登记体检」按钮,弹窗正常弹出
3. 搜索患者、选择体检机构、添加项目、保存 — 成功创建体检记录
4. 列表中出现新记录,状态为"待体检"
5. 点击"查看",详情弹窗正常显示基本信息 + 预约项目
6. 上传体检报告附件 — 成功
7. 添加实际项目 — 成功
8. 点击"标记已体检" — 状态变为"已体检"
9. 点击"费用结算" — 状态变为"已结算"
- [ ] **Step 4: 检查 LSP 诊断**
```bash
# 后端
cd backend && python -c "from app.api.pilot_checkup import router; print('OK')"
# 前端 — 在 IDE 中检查 index.vue 无报错
```
- [ ] **Step 5: 最终提交**
```bash
git add -A
git commit -m "feat(checkup): complete checkup management page with register, detail, and report upload"
```
@@ -0,0 +1,435 @@
# 中试服务申请单 — 详情页改弹窗 + UI合规修复
> 日期: 2025-05-25
> 状态: 设计待审
> 影响: web-admin 前端 only
---
## 1. 背景与目标
当前【中试服务申请单】模块有两个界面:
- **列表页** `pilot-application/index.vue`(644行)— 菜单可见路由
- **详情页** `pilot-application/ApplicationDetail.vue`(2635行)— `hidden: true` 路由,通过 `router.push` 跳转
**问题**:
1. 详情页作为独立路由页面,用户需通过浏览器后退返回列表,体验割裂
2. 列表页操作列按钮缺少 `el-icon`,不符合 openspec 按钮须携带图标规范
**目标**:
1. 将详情页从独立路由改为弹窗形式,**同时参考两个参考页面**:
- **查看弹窗风格**:照抄 `ProtocolViewDialog.vue`(采集协议单查看弹窗,1600px 宽,KPI 摘要条 + data-grid 只读数据展示)
- **编辑/新增弹窗风格**:照抄 `ProtocolFormDialog.vue`(采集协议单新增/编辑弹窗,1380px 宽,section-card + form-grid 表单布局)
2. 一并修复列表页所有操作按钮的 `el-icon` 缺失
---
## 2. 变更范围
| 文件 | 操作 | 说明 |
|------|------|------|
| `src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue` | **新建** | 详情弹窗主体(照抄 ProtocolViewDialog 的 KPI + data-grid 只读展示风格) |
| `src/views/pilot-service/pilot-application/index.vue` | **修改** | 引入弹窗组件,替换路由跳转逻辑,修复按钮图标 |
| `src/views/pilot-service/pilot-application/ApplicationDetail.vue` | **删除** | 被 ApplicationDetailDialog.vue 完全替代 |
| `src/router/modules/sqxp.ts` | **修改** | 删除 PilotApplicationDetail 路由定义(第650-656行) |
**不变更**:
- API 层(`src/api/admin.ts`)— 无需修改
- 状态标签工具(`src/utils/status-tag-registry.ts`)— 无需修改
- 后端代码 — 无需修改
---
## 3. 设计方案:详情页改弹窗(照抄 ProtocolViewDialog + ProtocolFormDialog 风格)
> **核心原则**:详情弹窗 = **查看模式照抄 ProtocolViewDialog** + **编辑区域照抄 ProtocolFormDialog**。
>
> - **查看展示**(申请单只读信息、各Tab中的只读数据)→ 照抄 `ProtocolViewDialog.vue`(1600px宽,KPI 摘要条 + `.data-grid` + `.section-card`)
> - **表单编辑**(患者信息可编辑表单、嵌套弹窗中的表单)→ 照抄 `ProtocolFormDialog.vue`(`.form-grid` + `.section-card`)
> - **公共元素**(弹窗壳层、Sticky Tab 导航、状态操作按钮)→ 两者共用
### 3.1 照抄清单:两个参考弹窗的关键风格要素
#### A. 来自 ProtocolViewDialog(查看弹窗,只读展示风格)
| # | 风格要素 | ProtocolViewDialog 中的实现 | 申请单详情弹窗中的对应 |
|---|----------|---------------------------|----------------------|
| A1 | **弹窗宽度** | `width="1600px"` + `class="dialog-form-layout protocol-view-dialog"` | 照抄 1600px(查看类弹窗用更宽尺寸,与 ProtocolViewDialog 一致) |
| A2 | **KPI 摘要条** | `.kpi-strip` 4列网格 + `.kpi-card`(渐变绿背景 #ecfdf5、图标徽章、label+value) | 用于展示:申请单号、状态、渠道名称、创建时间 等关键指标 |
| A3 | **只读数据网格** | `.data-grid .data-grid--4` + `.data-item`(`.data-label` + `.data-value`) | 用于"申请单信息"只读区域(替代原 `el-descriptions`) |
| A4 | **绿色背景分区** | `.section-card--green`(#f0fdf4 背景) | 可用于患者信息区(区分只读和可编辑) |
| A5 | **白色背景分区** | `.section-card--white`(默认白底) | 用于申请单信息、输注方案等标准分区 |
#### B. 来自 ProtocolFormDialog(编辑弹窗,表单风格)
| # | 风格要素 | ProtocolFormDialog 中的实现 | 申请单详情弹窗中的对应 |
|---|----------|---------------------------|----------------------|
| B1 | **表单网格** | `.form-grid`(默认3列)、`.form-grid--col2`、`.form-grid--col4`、`.form-col-span-2` | 用于患者信息可编辑表单 |
| B2 | **表单标签位置** | `label-position="top"` + `scroll-to-error` | 照抄 |
| B3 | **附件上传卡片** | `.upload-card`(140×96px 虚线框 + Plus 图标)+ `.attachment-item` 卡片列表 | 用于诊断附件上传区域 |
| B4 | **弹窗背景色** | `.protocol-dialog-body { background: #f5f7fa; overflow: visible }` | 照抄 |
#### C. 公共元素(两个弹窗共用)
| # | 风格要素 | 实现 |
|---|----------|------|
| C1 | **DialogFormBody 包裹** | `<DialogFormBody :loading="loading" body-class="application-dialog-body min-h-[200px]">` |
| C2 | **Sticky Tab 导航** | `.detail-tabs` + `.detail-tab`,绿色背景 pill 样式,`position: sticky; top: 0` |
| C3 | **分区卡片** | `.section-card`(白底圆角12px、阴影、hover 效果)+ `.section-title`(绿色竖线 `::before`) |
| C4 | **Footer 按钮** | 嵌套弹窗:`btn-ghost`(取消)+ `btn-main type="primary"`(确定),都带 `<el-icon>` |
### 3.2 弹窗组件接口
参照 `ProtocolFormDialog.vue` 的标准模式:
```typescript
// ApplicationDetailDialog.vue
const props = defineProps<{
modelValue: boolean // v-model 控制显隐
applicationId: string // 申请单 ID(替代 route.query.id)
listRow?: any // 可选:列表行数据(用于预填标题/状态)
}>()
const emit = defineEmits<{
(e: 'update:modelValue', val: boolean): void
(e: 'status-changed'): void // 状态操作后通知父组件刷新列表
}>()
```
### 3.3 弹窗壳层配置(照抄 ProtocolViewDialog 查看弹窗尺寸)
```vue
<el-dialog
:model-value="modelValue"
@update:model-value="emit('update:modelValue', $event)"
:title="dialogTitle"
width="1600px"
class="dialog-form-layout application-detail-dialog"
align-center
destroy-on-close
:close-on-click-modal="false"
>
<div
class="application-detail-body"
:class="{ 'is-loading': detailLoading }"
v-loading="detailLoading"
element-loading-text="加载中…"
>
<!-- 照抄 ProtocolViewDialog 的 detail-tabs sticky 导航 -->
<div class="detail-tabs">
<div
v-for="tab in detailTabs"
:key="tab.key"
class="detail-tab"
:class="{ active: activeTab === tab.key }"
@click="scrollToTab(tab.key)"
>
{{ tab.label }}
</div>
</div>
<template v-if="applicationDetail">
<!-- KPI 摘要条(照抄 ProtocolViewDialog) -->
<div class="kpi-strip">...</div>
<!-- 6个Tab内容区域 -->
...
</template>
</div>
</el-dialog>
```
- `width="1600px"` — 与 ProtocolViewDialog 查看弹窗一致(查看类弹窗用更宽尺寸)
- `application-detail-dialog` — 弹窗级样式
- `application-detail-body` — 与 `protocol-view-body` 一致的灰底滚动容器
- 直接用 `div + v-loading` 替代 `DialogFormBody`(与 ProtocolViewDialog 保持一致)
### 3.4 顶部区域改造
**移除**:原详情页的 `<header class="page-head">` 返回按钮和标题栏(弹窗自带关闭按钮)
**保留**:状态操作按钮(开始/完成/作废),移入弹窗 `#header` 自定义 slot 右侧
```vue
<!-- 照抄 ProtocolFormDialog 的 header 布局风格 -->
<template #header>
<div class="detail-dialog-header">
<div class="detail-dialog-header-left">
<h3>申请单详情</h3>
<span v-if="applicationDetail.applicationNo" class="detail-code">
{{ applicationDetail.applicationNo }}
</span>
<el-tag
v-if="applicationDetail.applicationStatus"
:type="applicationStatusTagType(applicationDetail.applicationStatus)"
size="large"
>
{{ applicationStatusLabel(applicationDetail.applicationStatus) }}
</el-tag>
</div>
<div class="detail-dialog-header-right">
<el-button v-if="..." class="btn-main" type="primary" @click="handleStart">
<el-icon><VideoPlay /></el-icon>开始
</el-button>
<el-button v-if="..." class="btn-main" type="primary" @click="handleComplete">
<el-icon><CircleCheck /></el-icon>完成
</el-button>
<el-button v-if="..." class="btn-op-item op-warn" type="danger" @click="handleVoid">
<el-icon><CircleClose /></el-icon>作废
</el-button>
</div>
</div>
</template>
```
### 3.5 正文结构:照抄两个参考弹窗的混合模式
**ProtocolViewDialog 的正文层次**(查看模式,只读数据展示):
```
div.protocol-view-body (灰底 #f5f7fa, v-loading)
└─ .detail-tabs (sticky 绿色 pill 导航)
└─ .kpi-strip (4列 KPI 摘要条:协议号 / 状态 / 母亲姓名 / 登记日期)
└─ #view-section-basic (.section-card > .data-grid--4 > .data-item)
└─ #view-section-party (.section-card--green > .data-grid--4)
└─ #view-section-collection (.section-card > .data-grid--4)
└─ #view-section-sample (.section-card > 样本卡片)
└─ #view-section-payment (.section-card > 缴费卡片)
```
**申请单详情弹窗照抄后的正文层次**:
```
div.application-detail-body (灰底, v-loading)
└─ .detail-tabs (sticky 绿色 pill 导航)
基本信息 | 输注方案 | 体检信息 | 交付信息 | 放行审核 | 应用确认
└─ .kpi-strip (4列 KPI 摘要条,照抄 ProtocolViewDialog)
申请单号 | 状态 | 渠道名称 | 创建时间
└─ #tab-basic (.section-card)
├─ 申请单信息(.data-grid--4 只读,照抄 ProtocolViewDialog)
└─ 患者信息(.form-grid--col2 表单,照抄 ProtocolFormDialog)
└─ #tab-infusion (.section-card)
└─ 方案表格 + 展开计划列表
└─ #tab-checkup (.section-card)
└─ 体检详情 + 预约/实际项目
└─ #tab-delivery (.section-card)
└─ 交付列表
└─ #tab-release (.section-card)
└─ 审核列表
└─ #tab-confirm (.section-card)
└─ 确认列表
└─ 8个嵌套弹窗 (el-dialog z-index 自动递增,不受影响)
```
**具体照抄细节**:
1. **KPI 摘要条**(照抄 ProtocolViewDialog `.kpi-strip`)
- `.kpi-strip`: `display: grid; grid-template-columns: repeat(4, 1fr); margin-bottom: 24px; padding: 6px; background: linear-gradient(135deg, #ecfdf5 0%, #f8fafc 52%, #ecfdf5 100%); border: 1px solid #a7f3d0; border-radius: 12px`
- `.kpi-card`: `display: flex; align-items: flex-start; gap: 12px; padding: 14px 18px`
- `.kpi-card__icon`: 40×40px 圆角图标徽章(白底 + 绿色边框 + 绿色图标)
- `.kpi-label`: 11px 灰色标签
- `.kpi-value`: 15px 黑色值(强调值 `.kpi-value--emphasis`: 16px + 绿色 + 加粗)
- 展示内容:申请单号、状态(el-tag)、渠道名称、创建时间
2. **只读数据展示**(照抄 ProtocolViewDialog `.data-grid`)
- `.data-grid--4`: `display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px 20px`
- `.data-item` > `.data-label`(12px 灰色)+ `.data-value`(14px 黑色)
- **替代原详情页的 `el-descriptions` 组件**,用 `.data-grid` 做只读展示
3. **Tab 导航用 `.detail-tabs` + `.detail-tab`**(自定义样式),不用 `el-tabs` 组件
- 与 ProtocolViewDialog / ProtocolFormDialog 完全一致的 sticky 绿色 pill 导航
4. **每个 Tab 内容用 `.section-card` 包裹**
- 白色区域 `.section-card--white`(默认)、绿色区域 `.section-card--green`
5. **分区标题用 `.section-title`**
- `.section-title::before`: 绿色竖线 `3px × 18px; background: #10b981`
6. **表单区域**(照抄 ProtocolFormDialog `.form-grid`)
- 患者信息编辑表单:`.form-grid--col2` + `label-position="top"`
- `.form-col-span-2`: 跨整行(临床诊断、诊断附件)
7. **附件上传**(照抄 ProtocolFormDialog `.upload-card` 卡片化布局)
- 上传触发器:140×96px 虚线框 + Plus 图标 + "上传附件" 文字
### 3.6 数据加载方式变更
**原方式**:`onMounted` + `route.query.id`
**新方式**:`watch(applicationId)` + 立即加载
```typescript
watch(() => props.applicationId, (newId) => {
if (newId && props.modelValue) {
loadApplicationDetail(newId)
}
}, { immediate: true })
```
弹窗关闭时(`destroy-on-close`)自动清理状态。
### 3.7 列表页 index.vue 改造
**替换导航逻辑**:
```typescript
// 移除
const router = useRouter()
const handleView = (row) => router.push({ name: 'PilotApplicationDetail', query: { id: row.id } })
// 新增
const detailDialogVisible = ref(false)
const detailApplicationId = ref('')
const handleView = (row: any) => {
detailApplicationId.value = row.id
detailDialogVisible.value = true
}
const handleEdit = (row: any) => {
detailApplicationId.value = row.id
detailDialogVisible.value = true
}
// 创建成功后不再跳转路由,改为打开详情弹窗
const handleSubmit = async () => {
// ...提交逻辑...
const newId = data?.id || data?.pilotApplicationId || data
if (newId) {
detailApplicationId.value = newId
detailDialogVisible.value = true
}
loadData()
}
// 状态变更后刷新列表
const onDetailStatusChanged = () => {
loadData()
}
```
**模板引入弹窗组件**:
```vue
<ApplicationDetailDialog
v-model="detailDialogVisible"
:application-id="detailApplicationId"
@status-changed="onDetailStatusChanged"
/>
```
---
## 4. 设计方案:列表页 UI 合规修复
### 4.1 操作列按钮补充 el-icon
当前操作列按钮缺少图标,需按 openspec 规范补充:
| 按钮 | 图标组件 | 适用状态 |
|------|----------|----------|
| 查看 | `View` | 始终显示 |
| 编辑 | `Edit` | 仅 `dks`(待开始) |
| 删除 | `Delete` | 仅 `dks`(popconfirm 内) |
| 开始 | `VideoPlay` | 仅 `dks` |
| 完成 | `CircleCheck` | 仅 `jxz`(进行中) |
| 作废 | `CircleClose` | 仅 `dks` / `jxz` |
**新增 import**:
```typescript
import {
Plus, Search, RefreshLeft, Close, Check,
View, Edit, Delete, VideoPlay, CircleCheck, CircleClose
} from '@element-plus/icons-vue'
```
### 4.2 详情弹窗内按钮图标
详情弹窗顶部状态操作按钮(开始/完成/作废)也需补充 el-icon:
- 开始 → `VideoPlay`
- 完成 → `CircleCheck`
- 作废 → `CircleClose`
弹窗内各 Tab 的操作按钮(新增输注方案、编辑、删除等)也需补充 el-icon。
### 4.3 其他合规项
| 检查项 | 当前状态 | 操作 |
|--------|----------|------|
| 状态字段用 el-tag | ✅ 已合规 | 无需修改 |
| 操作列 fixed="right" | ✅ 已合规 | 无需修改 |
| min-width 而非 width | ✅ 已合规 | 无需修改 |
| 筛选区搜索/重置有图标 | ✅ 已合规 | 无需修改 |
| 弹窗 footer 有图标 | ✅ 已合规 | 无需修改 |
| 排序字段默认不展示 | ✅ 无排序字段 | 无需修改 |
---
## 5. 路由清理
删除 `src/router/modules/sqxp.ts` 中的 PilotApplicationDetail 路由定义:
```typescript
// 删除以下路由(第650-656行)
{
id: '80000000000000000000000000000011',
name: 'PilotApplicationDetail',
path: 'pilot-application/detail',
component: '/pilot-service/pilot-application/ApplicationDetail',
meta: { title: '申请单详情', hidden: true }
}
```
---
## 6. 不在范围内
- 后端 API 变更
- 数据库变更
- 新增业务功能
- 其他页面的 UI 合规修复
- 状态标签注册表变更
---
## 7. 风险与缓解
| 风险 | 缓解措施 |
|------|----------|
| 2635行组件改造量大 | 保留原有逻辑,仅改 props 接口和容器层,不重构内部 |
| 嵌套弹窗 z-index 层级 | el-dialog 自动管理 z-index 递增,不受影响;验证点:打开详情弹窗后逐个测试嵌套弹窗 |
| `destroy-on-close` 导致状态丢失 | 符合预期:每次打开弹窗重新加载数据,与原来路由跳转行为一致 |
| 列表页操作列按钮变多导致换行 | 操作列已设置 `min-width="280"`,验证各状态下的按钮宽度是否足够 |
---
## 8. 照抄样式速查表(从两个参考弹窗复制)
### 来自 ProtocolViewDialog.vue(查看弹窗 — 只读展示风格)
| CSS 类/块 | ProtocolViewDialog 行号 | 用途 |
|-----------|------------------------|------|
| `.protocol-view-body` | ~L15-19 | 弹窗 body 灰底 + v-loading 容器 |
| `.kpi-strip` / `.kpi-card` / `.kpi-label` / `.kpi-value` | L2073-2143 | KPI 摘要条(4列绿渐变背景 + 图标徽章) |
| `.data-grid` / `--2` / `--3` / `--4` | L2197-2212 | 只读数据网格 |
| `.data-item` / `.data-label` / `.data-value` | L2214-2238 | 只读数据项(label + value) |
| `.section-card` / `--white` / `--green` | L2146-2168 | 分区卡片 |
| `.section-title` + `::before` + `h3` | L2170-2194 | 分区标题(绿色竖线) |
| `.detail-tabs` / `.detail-tab` | 同 ProtocolFormDialog | Sticky 绿色 pill Tab 导航 |
### 来自 ProtocolFormDialog.vue(编辑弹窗 — 表单风格)
| CSS 类/块 | ProtocolFormDialog 行号 | 用途 |
|-----------|------------------------|------|
| `.protocol-dialog-body` | L2867-2870 | 弹窗 body 灰底背景 |
| `.form-tab-pane` | L2917-2924 | Tab 内容区容器 |
| `.form-grid` / `--col2` / `--col4` / `.form-col-span-2` | L2995-3023 | 表单网格布局 |
| `.upload-card` / `.attachment-item` | ~L3100+ | 附件上传卡片 |
| `@media (max-width: 900px)` | L3520-3543 | 响应式断点 |
@@ -0,0 +1,386 @@
# 体检管理页面设计
> 日期:2026-05-26
> 状态:待审核
> 需求来源:用户提出新增独立的体检管理界面
## 1. 背景与目标
### 现状
- 体检信息管理目前嵌入在中试服务申请单详情弹窗的 Tab 3 中(`ApplicationDetailDialog.vue`)
- `biz_pilot_checkup` 表按 `pilot_application_id` 关联,一条申请单对应一条体检记录
- 后端 API 只有 `get_checkup_by_application`(按申请单ID查单条),无分页列表接口
- 运营人员需要进入每个申请单才能操作体检,效率低
### 目标
新增独立的**体检管理**页面,以**患者**为维度管理体检全流程:
1. 查看所有需要体检的中试服务订单中的患者
2. 批量选择患者,统一登记体检机构和体检项目
3. 对单个患者上传体检报告、登记实际项目和价格
4. 标记已体检、费用结算
### 关键数据模型变更
当前 `biz_pilot_checkup` 只有 `pilot_application_id`,没有 `pilot_patient_id`。需要增加该字段,使体检记录对应到具体患者。
## 2. 数据模型变更
### 2.1 `biz_pilot_checkup` 新增字段
```sql
ALTER TABLE biz_pilot_checkup
ADD COLUMN pilot_patient_id VARCHAR(64) DEFAULT NULL COMMENT '中试患者ID'
AFTER pilot_application_id;
```
**影响范围**:
- `backend/app/models/models.py` — `BizPilotCheckup` 类新增 `pilot_patient_id` 列
- `backend/app/crud/pilot_checkup.py` — `_row_to_dict_checkup`、`create_checkup`、`update_checkup` 需处理该字段
- 前端 API 和表单数据需同步
### 2.2 兼容性
- 现有申请单详情弹窗中的体检 Tab 继续工作(查询时 `pilot_patient_id` 为空则按 `pilot_application_id` 匹配)
- 新的体检管理页面同时使用 `pilot_application_id` 和 `pilot_patient_id`
## 3. 后端 API 变更
### 3.1 新增:分页列表
```
GET /web/admin/pilot-checkup/list
```
**查询参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 是 | 页码 |
| pageSize | int | 是 | 每页条数 |
| checkupStatus | string | 否 | 体检状态:dtj/ytj |
| feeStatus | string | 否 | 费用状态:wjs/yjs |
| checkupInstitutionId | string | 否 | 体检机构ID |
| applicationNo | string | 否 | 申请单号(模糊搜索) |
| patientName | string | 否 | 患者姓名(模糊搜索) |
| channelId | string | 否 | 渠道ID |
**返回数据**:JOIN `biz_pilot_patient` + `biz_pilot_application` + `biz_checkup_institution`,返回:
```json
{
"id": "checkup_id",
"pilotApplicationId": "...",
"pilotPatientId": "...",
"applicationNo": "ZSSQ202605260001",
"channelName": "XX医院",
"patientName": "张三",
"sex": "1",
"age": 45,
"phoneNo": "138xxxx",
"checkupInstitutionId": "...",
"institutionName": "XX体检中心",
"reserveTime": "2026-05-28 10:00:00",
"reserveFee": 500.00,
"actualCheckupTime": "",
"actualCheckupFee": null,
"checkupStatus": "dtj",
"feeStatus": "wjs",
"reportAttachments": "",
"checkupRemark": "",
"createTime": "2026-05-26 14:00:00"
}
```
### 3.2 新增:未登记体检的患者列表
用于体检管理页面的"待登记"患者数据源——查询所有 `need_checkup=1` 但尚未创建 `biz_pilot_checkup` 记录的患者:
```
GET /web/admin/pilot-checkup/pending-patients
```
**查询参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 是 | 页码 |
| pageSize | int | 是 | 每页条数 |
| applicationNo | string | 否 | 申请单号(模糊搜索) |
| patientName | string | 否 | 患者姓名(模糊搜索) |
| channelId | string | 否 | 渠道ID |
**返回数据**:JOIN `biz_pilot_patient` + `biz_pilot_application`,返回患者信息 + 申请单信息。
### 3.3 新增:批量创建体检记录
```
POST /web/admin/pilot-checkup/batch-save
```
**请求体**:
```json
{
"patientIds": ["patient_id_1", "patient_id_2"],
"checkupInstitutionId": "institution_id",
"reserveTime": "2026-05-28 10:00:00",
"reserveItems": [
{ "projectName": "血常规", "projectFee": 50.00 },
{ "projectName": "肝功能", "projectFee": 120.00 }
]
}
```
为每个 `patientId` 创建独立的 `biz_pilot_checkup` 记录 + `biz_pilot_checkup_reserve_item` 记录。
### 3.4 现有 API 适配
- `CheckupSaveBody` 新增可选字段 `patient_id`
- `create_checkup` 同时写入 `pilot_patient_id`
- `_row_to_dict_checkup` 返回 `pilotPatientId` 字段
- `get_checkup_by_application` 保持不变(向后兼容)
## 4. 前端设计
### 4.1 路由
在 `sqxp.ts` 的 `PilotService` 路由组下新增:
```typescript
{
id: '80000000000000000000000000000011',
name: 'CheckupManagement',
path: 'checkup-management',
component: '/pilot-service/checkup-management/index',
meta: {
title: '体检管理',
keepAlive: true,
menuCode: 'pilot-service:checkup-management:list'
}
}
```
菜单位置:「中试服务管理」→「体检管理」,排在「体检机构及项目价格」之后。
### 4.2 文件结构
```
web-admin/src/views/pilot-service/checkup-management/
├── index.vue # 主列表页
├── CheckupRegisterDialog.vue # 登记体检弹窗(批量选择患者 + 填写机构/项目/时间)
├── CheckupDetailDialog.vue # 详情弹窗(查看信息 + 上传报告 + 登记实际项目)
```
### 4.3 列表页 (`index.vue`)
**模板参考**:`channel-service-order/index.vue`(复杂列表模式 P07)
**页面布局**:
```
┌──────────────────────────────────────────────────┐
│ 体检管理 │
├──────────────────────────────────────────────────┤
│ 筛选条件: │
│ [体检状态▼] [费用状态▼] [体检机构▼] │
│ [申请单号____] [患者姓名____] [渠道____] │
│ [查询] [重置] │
├──────────────────────────────────────────────────┤
│ 已选 0 项 [登记体检] │
│ ───────────────────────────────────────────────── │
│ ☐ | 申请单号 | 患者 | 性别 | 年龄 | 渠道 | │
│ | 体检机构 | 预约时间 | 体检状态 | 费用状态 | │
│ | 实际费用 | 操作 │
│ │
│ [分页] │
└──────────────────────────────────────────────────┘
```
**表格列定义**:
| 列 | 字段 | 宽度 | 说明 |
|---|---|---|---|
| ☐选择 | — | 55 | `type="selection"`,仅 `checkupStatus=dtj` 的行可勾选 |
| 申请单号 | applicationNo | 160 | |
| 患者姓名 | patientName | 100 | |
| 性别 | sex | 60 | `el-tag`:男/女 |
| 年龄 | age | 60 | |
| 渠道名称 | channelName | 140 | |
| 体检机构 | institutionName | 160 | 未登记时显示 "—" |
| 预约时间 | reserveTime | 160 | |
| 体检状态 | checkupStatus | 100 | `el-tag`:待体检(warning)/已体检(success) |
| 费用状态 | feeStatus | 100 | `el-tag`:未结算(info)/已结算(success) |
| 实际费用 | actualCheckupFee | 100 | `formatMoneyDisplay` |
| 操作 | — | 260 | fixed="right":查看、编辑项目、标记已体检、费用结算 |
**操作按钮逻辑**:
- **查看**:所有状态可用 → 打开 `CheckupDetailDialog`(只读模式)
- **编辑项目**:`checkupStatus=dtj` 可用 → 打开 `CheckupDetailDialog`(编辑模式)
- **标记已体检**:`checkupStatus=dtj` 可用 → 调用 `markPilotCheckupChecked`
- **费用结算**:`checkupStatus=ytj` 且 `feeStatus=wjs` 可用 → 调用 `settlePilotCheckupFee`
- **登记体检**(工具栏):选中 1+ 条 `checkupStatus=dtj` 的记录 → 打开 `CheckupRegisterDialog`
**双数据源**:
列表页有两组数据:
1. **已登记的患者**(有 `biz_pilot_checkup` 记录):通过 `/pilot-checkup/list` 获取
2. **未登记的患者**(`need_checkup=1` 但无体检记录):通过 `/pilot-checkup/pending-patients` 获取
使用 Tab 切换:「全部」「待登记」「已登记」「待体检」「已体检」。
或者简化为:默认只展示已登记的(有 `biz_pilot_checkup` 记录),通过体检状态筛选。待登记的患者通过独立的"登记体检"按钮触发,弹窗中搜索并选择。
**最终选择简化方案**:列表只展示已有体检记录的患者。工具栏"登记体检"按钮打开弹窗,弹窗内搜索并勾选未登记的患者。
### 4.4 登记体检弹窗 (`CheckupRegisterDialog.vue`)
**交互流程**:
```
┌─ 登记体检 ─────────────────────────────────────┐
│ │
│ 搜索患者:[申请单号/患者姓名________] [搜索] │
│ │
│ ☐ | 申请单号 | 患者姓名 | 性别 | 年龄 | 渠道 | │
│ ☑ | ZSSQ...001 | 张三 | 男 | 45 | XX医院 | │
│ ☑ | ZSSQ...001 | 李四 | 女 | 52 | XX医院 | │
│ ☐ | ZSSQ...002 | 王五 | 男 | 38 | YY医院 | │
│ │
│ 已选 2 名患者 │
│ │
│ ── 体检信息 ─────────────────────────────────── │
│ │
│ 体检机构: [选择体检机构 ▼] │
│ 预约时间: [2026-05-28 10:00 🕐] │
│ │
│ ── 体检项目 ─────────────────────────────────── │
│ [从套餐添加] [添加单项] │
│ │
│ | 项目名称 | 项目费用 | 操作 | │
│ | 血常规 | ¥50.00 | [删除] | │
│ | 肝功能 | ¥120.00 | [删除] | │
│ │
│ 预约费用合计:¥170.00 │
│ │
│ [取消] [确定] │
└──────────────────────────────────────────────────┘
```
**关键组件交互**:
1. **搜索患者**:调用 `/pilot-checkup/pending-patients` 接口,搜索 `need_checkup=1` 且无体检记录的患者
2. **选择体检机构**:下拉选择,数据来自 `fetchCheckupInstitutionList`(现有 API)
3. **从套餐添加**:选择机构后,展示该机构的套餐列表,选择套餐后自动填充项目
4. **添加单项**:展示该机构的所有项目列表,多选后添加
5. **保存**:调用 `/pilot-checkup/batch-save`,为每个选中的患者创建体检记录 + 预约项目
**项目选择器**(复用 `CheckupPackagePanel.vue` 的模式):
- Tab 1:套餐选择 — 按机构筛选套餐 → 选择套餐 → 自动填充项目
- Tab 2:单项添加 — 按机构筛选项目 → 多选添加
### 4.5 详情弹窗 (`CheckupDetailDialog.vue`)
**模板参考**:`ApplicationDetailDialog.vue` 的体检 Tab 部分
**布局**:
```
┌─ 体检详情 ─ 张三 ──────────────────────────────┐
│ │
│ ── 基本信息 ────────────────────────────────── │
│ 申请单号:ZSSQ202605260001 │
│ 患者姓名:张三 性别:男 年龄:45 │
│ 渠道名称:XX医院 │
│ 体检机构:XX体检中心 │
│ 预约时间:2026-05-28 10:00 │
│ 体检状态:[待体检] 费用状态:[未结算] │
│ │
│ ── 预约项目 ────────────────────────────────── │
│ | 项目名称 | 项目费用 | │
│ | 血常规 | ¥50.00 | │
│ | 肝功能 | ¥120.00 | │
│ 合计:¥170.00 │
│ │
│ ── 实际项目 ───────────────── [添加单项] ────── │
│ | 项目名称 | 项目费用 | 操作 | │
│ | 血常规 | ¥50.00 | [删除] | │
│ | 肝功能 | ¥120.00 | [删除] | │
│ | 胸部CT | ¥300.00 | [删除] | │
│ 合计:¥470.00 │
│ │
│ ── 体检报告 ────────────────────────────────── │
│ [上传附件] [报告1.pdf] [报告2.jpg] │
│ │
│ ── 备注 ────────────────────────────────────── │
│ 患者体检一切正常... │
│ │
│ [标记已体检] [费用结算] [取消] │
└──────────────────────────────────────────────────┘
```
**交互**:
- 打开时加载 `fetchPilotCheckupDetail` + `fetchPilotCheckupReserveItems` + `fetchPilotCheckupActualItems`
- 实际项目可增删,调用现有 `savePilotCheckupActualItems` / `deletePilotCheckupActualItem`
- 附件上传使用卡片化上传模式(参考 `ProtocolFormDialog.vue`),调用 `fetchUploadAttachment`
- 标记已体检 / 费用结算复用现有 API
### 4.6 前端 API 新增
```typescript
// web-admin/src/api/admin.ts
// 体检记录分页列表
export const fetchPilotCheckupList = (params: any) =>
request.get({ url: '/web/admin/pilot-checkup/list', params })
// 待登记体检的患者列表
export const fetchPilotCheckupPendingPatients = (params: any) =>
request.get({ url: '/web/admin/pilot-checkup/pending-patients', params })
// 批量创建体检记录
export const batchSavePilotCheckup = (data: any) =>
request.post({ url: '/web/admin/pilot-checkup/batch-save', params: data })
```
## 5. 改动范围总结
### 后端
| 文件 | 改动 |
|------|------|
| `app/models/models.py` | `BizPilotCheckup` 新增 `pilot_patient_id` 字段 |
| `app/crud/pilot_checkup.py` | `_row_to_dict_checkup` 返回新字段;新增 `list_checkups_paginated`、`list_pending_patients`、`batch_create_checkups` 函数 |
| `app/api/pilot_checkup.py` | 新增 3 个 API 端点;`CheckupSaveBody` 新增 `patient_id` 字段 |
| `docs/sql/` | 新增迁移 SQL |
### 前端
| 文件 | 改动 |
|------|------|
| `src/views/pilot-service/checkup-management/index.vue` | **新建** — 主列表页 |
| `src/views/pilot-service/checkup-management/CheckupRegisterDialog.vue` | **新建** — 登记体检弹窗 |
| `src/views/pilot-service/checkup-management/CheckupDetailDialog.vue` | **新建** — 详情弹窗 |
| `src/api/admin.ts` | 新增 3 个 API 函数 |
| `src/router/modules/sqxp.ts` | 新增路由 |
### 复用的现有代码
- `status-tag-registry.ts` — `checkupStatusLabel` / `checkupStatusTagType`(现有)
- `fetchCheckupInstitutionList` — 体检机构列表 API(现有)
- `fetchCheckupInstitutionProjects` — 机构项目列表 API(现有)
- `fetchCheckupInstitutionPackages` — 机构套餐列表 API(现有)
- `fetchUploadAttachment` / `fetchAttachmentDownloadUrl` — 附件上传下载(现有)
- `savePilotCheckupReserveItems` / `savePilotCheckupActualItems` — 预约/实际项目保存(现有)
- `markPilotCheckupChecked` / `settlePilotCheckupFee` — 状态变更(现有)
- `formatMoneyDisplay` / `AmountInput` — 金额显示/输入(现有)
## 6. 不做的事
- **不修改**现有申请单详情弹窗中的体检 Tab(保持向后兼容)
- **不新增**数据库表(复用现有 3 张体检表 + 增加一个字段)
- **不做**体检结果录入(如检查指标、异常标记等)——仅管理项目、费用和报告附件
- **不做**自动费用计算——实际费用由运营手动录入