feat: 细胞存储缴费催缴、统一样本信息与协议支付能力增强

汇总近期业务改动:催缴菜单与后端、样本信息快捷登记与进度、运费关联、客户档案扩展、协议优惠/期次与押金划转,并同步 SQL 迁移与管理端页面收敛。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-10-10 21:20:37 +08:00
1 parent 2d3472f5c4
commit db31990ebe
235 files changed
+14898 -10196

No files matched your search

@@ -0,0 +1,21 @@
import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
const componentUrl = new URL(
'../src/components/business/sample-payment-detail-dialog/index.vue',
import.meta.url
)
const source = readFileSync(componentUrl, 'utf8')
assert.match(source, /width="min\(1200px, 90vw\)"/)
assert.match(source, /class="detail-summary form-grid-4"/)
assert.equal(source.match(/class="detail-tag"/g)?.length, 2)
assert.match(source, /\.detail-tag\s*\{[^}]*align-self:\s*flex-start;[^}]*width:\s*fit-content;/s)
assert.match(source, /<el-table-column label="操作" min-width="150" align="center" fixed="right">/)
assert.match(source, /class="transfer-action-stack"/)
assert.match(
source,
/\.transfer-action-stack\s*\{[^}]*display:\s*inline-flex;[^}]*flex-direction:\s*column;/s
)
console.log('payment detail dialog layout contract passed')
@@ -1,28 +1,10 @@
import assert from 'node:assert/strict'
import {
resolvePaymentPreset,
getActiveSampleCount,
isInstallmentPayMode,
isPayModeValidForSampleCount
} from '../src/utils/protocol-payment-presets'
const fq1 = resolvePaymentPreset(1, 'fq')!
assert.equal(fq1.contractAmount, 25880)
assert.deepEqual(fq1.installmentAmounts, [6480, 3880, 3880, 3880, 3880, 3880])
assert.equal(
fq1.installmentAmounts!.reduce((s, v) => s + v, 0),
fq1.contractAmount
)
const djfq2 = resolvePaymentPreset(2, 'djfq')!
assert.equal(djfq2.contractAmount, 41000)
assert.equal(djfq2.installmentCount, 4)
assert.deepEqual(djfq2.installmentAmounts, [29360, 3880, 3880, 3880])
assert.equal(
djfq2.installmentAmounts!.reduce((s, v) => s + v, 0),
djfq2.contractAmount
)
assert.equal(getActiveSampleCount([{ sampleStatus: 'ycj' }]), 1)
assert.equal(getActiveSampleCount([{ sampleStatus: 'ycj' }, { sampleStatus: 'yzf' }]), 1)
assert.equal(