refactor(frontend): 金额正则/分页/抽屉状态/行编辑与下拉收口
- 金额形态正则收进 utils/validate.ts 单点导出(此前四页各写,精度 调整漏改一页即「A 页拦得住 B 页放行后端 400」或历史行无法编辑) - params 版本/历史两抽屉的手写分页五件套换 usePagedList(白得请求 序号防竞态——快速翻页旧响应覆盖新页的手写坑不再复现) - 业务抽屉三份 id 状态收为 drawerRowId computed(单一状态源,消除 「标题 A 业务、留痕表 B 业务」的失同步面) - useEditingRow(三页逐字相同的 computed)与 useDropdownOptions (取数失败不阻断列表的骨架)收口,映射函数由调用方给出 - e2e 冒烟:基础数据 13 步 + 业务全链路 16 步全过 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
1 parent
60f6af6494
commit
0ef3adec21
8 files changed
+117
-98
No files matched your search
@@ -12,6 +12,21 @@ export const PASSWORD_MAX_BYTES = 72
|
||||
|
||||
const BYTE_HINT = '(中文一个字符约 3 字节)'
|
||||
|
||||
/**
|
||||
* 金额形态正则(与后端 `schemas/business._check_amount` 同口径单点维护)。
|
||||
*
|
||||
* 「DECIMAL 列 ↔ 前端放行位数」规则此前在业务/发货/回款/人员四页各写一份
|
||||
* (businesses 与 shipments 逐字重复,receipts/personnel 又各自内联两位小数
|
||||
* 正则),后端精度调整时漏改任何一页,就会出现「A 页面拦得住、B 页面放行
|
||||
* 后端 400」或「带精度历史行永远无法编辑」(fba8cfc 的教训)。
|
||||
*/
|
||||
/** 非负数字、最多两位小数(对齐 DECIMAL(14,2):金额/数量/成本/运费/工资) */
|
||||
export const AMOUNT_PATTERN = /^(\d+)(\.\d{1,2})?$/
|
||||
/** 非负数字、最多四位小数(对齐 DECIMAL(14,4):单价/指导价) */
|
||||
export const PRICE_PATTERN = /^(\d+)(\.\d{1,4})?$/
|
||||
/** 全零形态(数量「0 或 0.00」须拦:数量 >0 是明细行的硬约束) */
|
||||
export const ZERO_PATTERN = /^0+(\.0+)?$/
|
||||
|
||||
/** 计算 UTF-8 字节数 */
|
||||
export function passwordByteLength(value: string): number {
|
||||
return new TextEncoder().encode(value).length
|
||||
|
||||
Reference in new issue
Block a user