日期:2026-07-06
范围:web-admin 采集协议单新增/编辑(ProtocolFormDialog.vue)、标准信息导入、后端缴费保存校验
前置 spec:2026-06-04-protocol-pay-mode-switch-design.md、2026-06-10-protocol-installment-config-design.md
状态:已实现
业务方给出「样本数 × 缴费模式」下的默认合同金额、默认期数、默认各期金额。这些数值仅作录入辅助;用户可自由修改合同金额、分期期数、各期金额;趸交也可拆成多条缴费明细(如预付款 + 尾款)。
当前实现与目标的主要差距:
| 维度 | 现状 | 目标 |
|---|---|---|
| 合同金额来源 | 非作废样本 price 之和 |
按定价表填默认,用户可改;样本数变化不自动改金额 |
| 分期默认金额 | 均分或历史 50/10/10… | 固定模板(6,480 / 3,880…) |
| 分期默认期数 | 一律 6 期 | 1 样本 6 期;2 样本分期/混合 5 期 |
| 缴费模式 | dj / fq |
增加双样本 趸交+分期 djfq |
| 趸交明细条数 | 后端禁止多条 dfj |
允许多条,合计 = 合同金额 |
| 默认填充时机 | 切分期、改样本价等会联动 | 方案 B:仅新建或首次选缴费模式时填默认 |
| 议题 | 决定 |
|---|---|
| 默认值性质 | 仅初始填充,不锁定;用户可改合同金额、期数、各期金额 |
| 样本数变化 | 不自动改合同金额、期数、明细(方案 B) |
| 缴费模式变化 | 首次从空/未选切到某模式时填该模式默认;已选过且用户已编辑后,再次切换仍走既有「模式切换」确认流(见 §6) |
| 单样本分期默认合同额 | 25,880(6,480 + 3,880×5) |
| 趸交默认合同额 | 优惠价:1 样本 22,880;2 样本 37,880 |
| 双样本「趸交+分期」 | 新模式 djfq,默认 41,000,5 期:22,880、6,480、3,880、3,880、3,880 |
| 双样本纯分期 | 默认 44,000,5 期:12,960、7,760、7,760、7,760、7,760 |
| 趸交多条明细 | 允许;Σ dueAmount(全部明细)= contractAmount;保存时不再限制「仅 1 条 dfj」 |
样本 price 字段 |
仍维护样本单价;与合同默认解耦;导入/保存时可提示样本价合计与合同额不一致,不阻断 |
| 定价表存放 | 前端 protocol-payment-presets.ts(常量);后端镜像校验逻辑不依赖默认表,只校验合计与条数 |
有效样本数 = 当前协议单内 sampleStatus !== 'yzf' 的样本条数,取值 1 或 2(与现网一致,不支持 0 样本保存缴费)。
| 样本数 | pay_mode |
默认合同金额 | 默认期数 | 默认各期金额(元) |
|---|---|---|---|---|
| 1 | dj |
22,880 | — | 单条明细 dueAmount = 22,880(用户可拆多条) |
| 1 | fq |
25,880 | 6 | 6,480、3,880、3,880、3,880、3,880、3,880 |
| 2 | dj |
37,880 | — | 单条明细 dueAmount = 37,880(用户可拆多条) |
| 2 | djfq |
41,000 | 5 | 22,880、6,480、3,880、3,880、3,880 |
| 2 | fq |
44,000 | 5 | 12,960、7,760、7,760、7,760、7,760 |
标签:djfq 展示为「趸交+分期」;字典 status-tag-registry / 后端摘要增加 djfq → 趸交+分期。
双样本时缴费模式选项:dj、djfq、fq(隐藏或禁用 djfq 当样本数 ≠ 2)。
pay_mode 从初始 dj 切到 fq / djfq,或新建后首次进入缴费 Tab 且明细为空时的初始化,与产品确认以「首次 onPayModeChange 且该模式从未应用过」为准)。pay_mode=dj 且 paymentDetails 为空:按 当前样本数 填趸交默认(合同额 + 1 条明细)。若此时样本数仍为 0,待用户添加第 1 个样本后不自动重填(方案 B);用户选模式或手动点「套用默认」时再填。实现建议:维护
paymentDefaultsApplied: Record<PayMode, boolean>(或lastAppliedPresetKey: string | null)。某pay_mode第一次生效时调用applyPaymentPreset(sampleCount, payMode),并标记已应用。
price用户自行改合同额、期数、明细;仅触发合计校验与既有「分期参数变更 / 模式切换」确认流。
缴费主表旁「恢复默认」按钮:按当前样本数 + 当前 pay_mode 重新套用 §3 定价表,需二次确认。
djcanAddPaymentDetail:改为在 dj 下始终允许添加(或:待缴条数无硬上限,仅校验合计)。Σ dueAmount(全部明细) 与 contractAmount 差额 ≤ 0.01;dfj;yjf:Σ yjf.dueAmount + Σ dfj.dueAmount 仍须等于 contractAmount(与现 remaining 逻辑一致,但允许多条 dfj 分摊剩余)。fq 与混合 djfqinstallment_count(与现 fq 一致)。installment_ratios 存各期金额(元),非百分比(与现网一致)。Σ 各期 dueAmount = contractAmount。djfq 在数据层按分期处理:每期有 installmentNo、应缴日;第 1 期金额语义为「趸交部分」,不做单独子表。contractAmount、多笔 transfer 覆盖默认填充(与 2026-07-02-protocol-standard-import-design.md 一致)。paymentDefaultsApplied 全部为已应用,避免再自动覆盖。既有切换规则(已缴锁定、确认流)保留。下列条目修订原 spec:
| 原规则 | 新规则 |
|---|---|
| 趸交仅 1 条有效明细 | 趸交可多条;切换生成时仍可合并为 1 条默认,用户随后可拆 |
pay_mode 仅 dj/fq |
增加 djfq;djfq ↔ fq 按分期规则;djfq → dj 同 fq → dj |
| 切换后分期金额均分 | 切换后若走「重建明细」,使用 §3 对应默认各期金额(非均分) |
双样本 → 单样本(或反向):不自动改合同/明细(方案 B);若当前 pay_mode=djfq 且样本数变为 1,阻断保存并提示「请切换缴费模式」,或自动要求用户改模式(推荐:保存前校验样本数与 djfq 一致)。
biz_protocol_payment.pay_mode| 值 | 含义 |
|---|---|
dj |
趸交 |
fq |
分期 |
djfq |
趸交+分期(仅双样本) |
字段长度 varchar(8) 足够。无需新列;installment_count / installment_ratios 在 djfq 与 fq 用法相同。
djfq。djfq,只读展示兼容即可。[ 趸交 ] [ 分期 ] // 1 样本
[ 趸交 ] [ 趸交+分期 ] [ 分期 ] // 2 样本
fq / djfq:展示期数、间隔、开始时间、各期金额输入格;默认期数/金额来自 §3。合计 xxx / 合同 xxx(已有)。syncContractAmount() 在样本价变更时对 contractAmount 的自动写入(方案 B)。form-tip(不阻断保存)。| 文件 | 改动 |
|---|---|
protocol_pay_mode_switch.py |
dj:删除「仅 1 条 dfj」;改为明细总额校验;支持 djfq 走 fq 分支 |
collection_protocol.py |
读写 pay_mode=djfq;列表/详情标签 |
qc_work_order_fee_summary.py 等 |
djfq 标签与分期展示 |
| 文件 | 改动 |
|---|---|
protocol-payment-presets.ts |
新建,§3 定价表 + applyPaymentPreset() |
protocol-payment-installment.ts |
默认金额生成改为调用 preset(均分仅作无 preset 时的兜底) |
protocol-pay-mode-switch.ts |
dj 多明细;PayMode 含 djfq |
ProtocolFormDialog.vue |
模式 UI、首次填充、去掉样本价→合同额联动 |
ProtocolViewDialog.vue |
djfq 展示 |
status-tag-registry.ts |
djfq |
protocol-standard-import-parse.ts |
识别「趸交+分期」文案 → djfq(P1) |
fq → 合同 25,880,6 期金额正确djfq → 41,000,5 期正确dfj 预付款场景,保存成功djfq 删至 1 样本,保存提示改模式| 日期 | 说明 |
|---|---|
| 2026-07-06 | 初稿:默认定价表、方案 B、djfq、趸交多明细 |