6.1 KiB
6.1 KiB
转账业务备注 + 缴费确认中撤回
状态:已确认
日期:2026-10-10
范围:存储服务 · 细胞存储转账(意向金 / 趸交 / 分期每期)
界面模式:协议/预签表单内嵌转账表;缴费财务确认列表
关联:docs/superpowers/specs/2026-10-03-per-sample-payment-presign-design.md
1. 背景与目标
1.1 现状
转账行 UI 仅有:转账方式、转账金额、转账时间、转账凭证、状态。
库表已具备:
| 表 | 业务备注 | 财务确认备注 |
|---|---|---|
biz_presign_transfer |
remark |
finance_remark |
biz_protocol_payment_transfer |
remark |
finance_remark |
缺口主要在前端:业务侧无法录入/展示 remark;查看与财务列表未系统展示双备注。
状态机:dfj(待缴费)→ jfqrz(缴费确认中)→ yjf(已缴费)。提交后业务侧锁定,无撤回,无法改完再提。
1.2 目标
- 每笔转账可填写业务备注(
remark),并在列表/查看展示。 - 财务备注(
finance_remark)仍由财务确认写入,业务侧只读展示。 - 缴费确认中支持业务撤回为待缴费,修改后保存并再次提交。
- 已缴费一律不可撤回、不可改业务字段。
1.3 非目标
- 不新增备注表或新列(复用现有
remark/finance_remark)。 - 不改财务确认主流程(确认/驳回语义保持)。
- 不做备注历史版本。
- 样本信息 / 运费 / 催缴无转账登记表本轮不改。
- 不自动冲抵意向金。
2. 字段语义与编辑规则
| 字段 | 文案 | 谁写 | 何时可写 |
|---|---|---|---|
remark |
备注 | 业务 | 仅 pay_status = dfj;与金额/凭证同锁定 |
finance_remark |
财务备注 | 财务 | 确认收款时;业务侧只读 |
- 锁定:
jfqrz/yjf下业务不可改金额、时间、方式、凭证、备注。 - 撤回不清除
finance_remark(保留历史财务批注)。 - 公共字段
remark即业务备注,不另建biz_remark。
3. 撤回状态机
dfj ──提交财务确认──► jfqrz ──财务确认──► yjf
▲ │
└──── 业务撤回 ──────┘
| 动作 | 前置状态 | 结果状态 | 谁可操作 | 副作用 |
|---|---|---|---|---|
| 提交财务确认 | dfj |
jfqrz |
业务(既有) | 无 |
| 撤回 | jfqrz |
dfj |
业务 | 保留 finance_remark 与财务确认附件 |
| 财务确认收款 | jfqrz |
yjf |
财务(既有) | 可写 finance_remark |
| 财务驳回(若已有) | jfqrz |
既有规则 | 财务 | 本设计不改驳回语义 |
约束:
can_withdraw_receipt(pay_status)当且仅当pay_status == "jfqrz"。yjf不可撤回。- 撤回后流程:编辑(
dfj)→ 保存 → 再次「提交财务确认」。
共享规则放在 app/services/protocol_transfer_status.py(与 can_submit_receipt / can_confirm_receipt 并列)。
4. API
4.1 正式协议转账
- 既有 create/update 草稿:确保接收并持久化
remark;仅dfj可改业务字段(含备注)。 - 新增
POST /web/admin/.../payment-transfers/{id}/withdraw(路径与现有 transfer 路由模块对齐)- 租户隔离;校验转账存在且
del_flag=0。 jfqrz→dfj;不改finance_remark/finance_confirm_attachments。- 非
jfqrz→ 业务错误提示(如「仅缴费确认中可撤回」)。
- 租户隔离;校验转账存在且
4.2 预签意向金转账
- 既有 draft update:已支持
remark;保持仅dfj可改。 - 新增 对等 withdraw 接口(挂在
presign-orders转账路由下)。 - 列表/详情
_transfer_to_dict已含remark/financeRemark,保持不变。
4.3 财务确认
- 继续只写
finance_remark;确认列表/详情展示业务「备注」+「财务备注」。
5. 前端
5.1 转账表列顺序
方式 → 金额 → 时间 → 凭证 → 备注 → 财务备注 → 状态 → 操作
- 备注:
dfj可编辑el-input(建议 maxlength 与库一致 512);锁定后只读文本。 - 财务备注:始终只读(业务表单/查看);财务确认弹窗继续可写。
5.2 操作列
| 状态 | 操作 |
|---|---|
dfj |
保存(若需)+ 提交财务确认 + 删除(既有) |
jfqrz |
撤回(ElMessageBox.confirm) |
yjf |
无撤回;业务字段只读 |
5.3 页面清单
| 页面 | 改动 |
|---|---|
PresignOrderFormDialog.vue |
意向金表加备注/财务备注列;jfqrz 撤回 |
SamplePaymentPanel.vue |
各期转账表同上;保存透传 remark;撤回调正式 API |
ProtocolFormDialog.vue |
关联意向金子表展示备注/财务备注(只读,数据来自预签) |
ProtocolViewDialog.vue |
意向金 + 样本转账只读表补两列 |
| 缴费财务确认页 | 待办/已办列表或详情补业务「备注」列(财务备注已有则对齐) |
| 缴费信息(转账明细弹窗/表) | 有转账列则补展示 |
不改:催缴信息、样本信息、运费信息(无本类转账登记)。
6. 测试要点
- 单测:
can_withdraw_receipt:jfqrz真,其余假。 - 单测/集成:withdraw 后状态为
dfj,finance_remark不变。 - 单测:
yjf/dfj调用 withdraw 失败。 - 手工:预签与正式各走一遍「提交 → 撤回 → 改备注/金额 → 保存 → 再提交 → 财务确认」。
- 手工:查看弹窗与财务页可见双备注。
7. SQL
无需执行建表/加列迁移。
(若环境缺少历史 remark/finance_remark,以 docs/sql/biz_per_sample_payment_presign.sql 为准核对,本需求不新增脚本。)
8. 决策记录
| 项 | 结论 |
|---|---|
| 备注形态 | C:业务 remark + 财务 finance_remark,列表/查看都展示 |
| 业务备注锁定 | A:与金额/凭证一致,锁定后不可改 |
| 撤回权限 | 仅业务;jfqrz → dfj |
| 撤回与财务备注 | B:撤回不删除 finance_remark |
| 已缴费 | 一律不可撤回 |