# 完单申请功能实现总结 ## 功能概述 在补齐支付单时,用户可以选择是否申请完成订单。如果勾选了完单申请,审核人员在进行支付审核时可以看到该申请信息。 ## 数据库修改 ### 新增字段(zyt_tcm_prescription_order表) ```sql -- 执行 add_completion_request_field.sql ALTER TABLE `zyt_tcm_prescription_order` ADD COLUMN `completion_request` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '完单申请:0=未申请,1=已申请' AFTER `payment_slip_audit_remark`, ADD COLUMN `completion_request_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '完单申请时间' AFTER `completion_request`, ADD COLUMN `completion_request_by` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '完单申请人ID' AFTER `completion_request_time`, ADD COLUMN `completion_request_by_name` varchar(64) NOT NULL DEFAULT '' COMMENT '完单申请人姓名' AFTER `completion_request_by`; ``` ## 前端修改 ### 1. 补齐支付单对话框(order_list.vue) - 添加"完单申请"单选项(不申请/申请完成订单) - 添加提示文字说明 - 表单数据中添加 `completion_request` 字段(默认值0) ### 2. 提交逻辑 - 手动创建支付单时,将 `completion_request` 字段传递给后端 - 关联已有支付单时,同样传递 `completion_request` 字段 ### 3. 审核对话框 - 如果订单有完单申请(`completion_request=1`),显示警告提示框 - 显示申请人姓名和申请时间 - 审核人员可以清楚看到该订单已申请完成 ## 后端修改 ### 1. 新增支付单接口(addPayOrder) **文件**: `server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php` - 接收 `completion_request` 参数 - 如果值为1,记录完单申请信息: - `completion_request = 1` - `completion_request_time = 当前时间戳` - `completion_request_by = 操作人ID` - `completion_request_by_name = 操作人姓名` - 操作日志中记录"并申请完成订单" ### 2. 关联支付单接口(linkPayOrder) **文件**: `server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php` - 接收 `completion_request` 参数 - 如果值为1,记录完单申请信息(同上) - 操作日志中记录"并申请完成订单" ## 使用流程 1. **补齐支付单** - 用户在"已发货"状态下点击"新增支付单" - 选择手动创建或关联已有支付单 - 勾选"申请完成订单"选项 - 提交后,订单记录完单申请信息 2. **支付审核** - 审核人员点击"支付审核" - 如果该订单有完单申请,对话框顶部显示黄色警告框 - 显示申请人和申请时间 - 审核人员可以根据完单申请决定是否通过 3. **完成订单** - 支付审核通过后,订单状态变为"已发货" - 满足完成条件(已发货+支付审核通过)时,可以点击"完成订单" ## 注意事项 1. 完单申请只是一个提示信息,不会自动完成订单 2. 审核人员仍需手动点击"完成订单"按钮 3. 完单申请信息在订单详情中可见 4. 操作日志会记录完单申请的操作 ## 测试要点 - [ ] 手动创建支付单时勾选完单申请 - [ ] 关联已有支付单时勾选完单申请 - [ ] 审核对话框正确显示完单申请信息 - [ ] 申请人姓名和时间正确显示 - [ ] 操作日志正确记录 - [ ] 不勾选完单申请时,审核对话框不显示提示