feat(consignment): 分类家族口径支持二级分类匹配上级寄卖库存

- 新增 consignment-category-scope 作为分类范围单一事实来源(自身 + 祖先 + 子孙,二级分类对祖先库存按系列收窄)
- 寄卖库存列表/统计/筛选项按分类范围取数,二级分类(血宴/暗潮/怒嚎)可正常进入下拉并看到挂在一级分类下的货
- 一键查询待匹配看板:订单侧与库存侧都改为分类范围过滤,二级分类页签不再空白
- 手动匹配候选与提交校验统一按分类家族取数(工单分类 + 其一级分类),跨枪型仍不参与自动匹配,人工强制匹配需填原因
- 仓库搜索关键字增加系列、规格文本与当前/上级分类名,可直接搜「血宴」「苏尔南手枪」
- 新增分类范围单测,并补充看板跨层级用例
This commit is contained in:
2026-11-15 19:47:30 +08:00
parent d7606060a4
commit 8181ef50a5
11 changed files with 882 additions and 53 deletions
@@ -260,16 +260,21 @@ export default function ConsignmentWorkOrderMatchModal({
/>
) : null}
{!candidatesQuery.isLoading && !candidatesQuery.isError ? (
<Space wrap size={8} style={{ marginBottom: 12 }}>
<Input.Search
allowClear
placeholder="搜索寄卖单号 / 库存号 / 物品 / 规格 / 打手"
style={{ width: 320 }}
value={keyword}
onChange={(event) => setKeyword(event.target.value)}
/>
<Typography.Text type="secondary">
显示 {visibleOptions.length} / 候选 {options.length} 条
<Space direction="vertical" size={8} style={{ width: '100%', marginBottom: 12 }}>
<Space wrap size={8}>
<Input.Search
allowClear
placeholder="搜索寄卖单号 / 库存号 / 物品 / 规格 / 打手"
style={{ width: 320 }}
value={keyword}
onChange={(event) => setKeyword(event.target.value)}
/>
<Typography.Text type="secondary">
显示 {visibleOptions.length} / 候选 {options.length} 条
</Typography.Text>
</Space>
<Typography.Text type="secondary" style={{ fontSize: 12 }}>
候选范围:本工单分类及其上级分类下的全部在库寄卖单(跨枪型会标为不匹配,需填原因才能强制匹配)。
</Typography.Text>
</Space>
) : null}