From 2cf93824e4595de77c09464abb044ecf16f551f8 Mon Sep 17 00:00:00 2001 From: zhaoxing <2558691827@qq.com> Date: Mon, 9 Nov 2026 16:03:35 +0800 Subject: [PATCH] =?UTF-8?q?fix(consignment):=20=E4=BA=8C=E7=BA=A7=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E9=BB=98=E8=AE=A4=E5=B1=95=E5=BC=80=E5=B9=B6=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E8=AE=A1=E6=95=B0=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/ConsignmentTemplateCopyModal.tsx | 11 ++++++----- .../admin/panels/ConsignmentInventoryPanel.tsx | 10 ++++++---- .../src/pages/worker/WorkerConsignmentPage.tsx | 9 ++++++--- .../tests/consignment-matching-config.test.ts | 15 ++++++++++++--- 4 files changed, 30 insertions(+), 15 deletions(-) diff --git a/apps/frontend/src/components/admin/ConsignmentTemplateCopyModal.tsx b/apps/frontend/src/components/admin/ConsignmentTemplateCopyModal.tsx index add36c6c..7ee49418 100644 --- a/apps/frontend/src/components/admin/ConsignmentTemplateCopyModal.tsx +++ b/apps/frontend/src/components/admin/ConsignmentTemplateCopyModal.tsx @@ -248,8 +248,9 @@ export default function ConsignmentTemplateCopyModal({ }, [open, hasPublished]) useEffect(() => { - setTreeExpandedKeys([]) - }, [open, version, mode]) + if (!open) return + setTreeExpandedKeys(treeGroupKeys) + }, [open, version, mode, treeGroupKeys]) useEffect(() => { if (!open) return @@ -305,15 +306,15 @@ export default function ConsignmentTemplateCopyModal({ } value={selectedProfileId ?? undefined} treeData={treeData} - treeDefaultExpandAll={false} + treeDefaultExpandAll treeExpandedKeys={treeExpandedKeys} onTreeExpand={(keys) => setTreeExpandedKeys(keys as Array)} showSearch={{ treeNodeFilterProp: 'title', - onSearch: (value) => setTreeExpandedKeys(value.trim() ? treeGroupKeys : []), + onSearch: () => setTreeExpandedKeys(treeGroupKeys), }} onOpenChange={(open) => { - if (!open) setTreeExpandedKeys([]) + if (!open) setTreeExpandedKeys(treeGroupKeys) }} popupMatchSelectWidth={false} listHeight={320} diff --git a/apps/frontend/src/pages/admin/panels/ConsignmentInventoryPanel.tsx b/apps/frontend/src/pages/admin/panels/ConsignmentInventoryPanel.tsx index 47891990..02d94d5c 100644 --- a/apps/frontend/src/pages/admin/panels/ConsignmentInventoryPanel.tsx +++ b/apps/frontend/src/pages/admin/panels/ConsignmentInventoryPanel.tsx @@ -267,6 +267,9 @@ export default function ConsignmentInventoryPanel() { () => categoryTreeData.filter((node) => node.children?.length).map((node) => node.key), [categoryTreeData], ) + useEffect(() => { + setCategoryExpandedKeys(categoryGroupKeys) + }, [categoryGroupKeys]) // 默认「苏尔南手枪」;该分类未开启寄卖时回退到第一个已开启分类 useEffect(() => { @@ -968,17 +971,16 @@ export default function ConsignmentInventoryPanel() { value={categoryId ?? undefined} placeholder="寄卖分类" treeData={categoryTreeData} - treeDefaultExpandAll={false} + treeDefaultExpandAll treeExpandedKeys={categoryExpandedKeys} onTreeExpand={(keys) => setCategoryExpandedKeys(keys as Array)} showSearch={{ treeNodeFilterProp: 'title', - onSearch: (value) => setCategoryExpandedKeys(value.trim() ? categoryGroupKeys : []), + onSearch: () => setCategoryExpandedKeys(categoryGroupKeys), }} onOpenChange={(open) => { - if (!open) setCategoryExpandedKeys([]) + if (!open) setCategoryExpandedKeys(categoryGroupKeys) }} - popupMatchSelectWidth={false} listHeight={320} treeTitleRender={(node) => { const item = node as InventoryFilterTreeNode diff --git a/apps/frontend/src/pages/worker/WorkerConsignmentPage.tsx b/apps/frontend/src/pages/worker/WorkerConsignmentPage.tsx index 9ef57ff1..4abd37a6 100644 --- a/apps/frontend/src/pages/worker/WorkerConsignmentPage.tsx +++ b/apps/frontend/src/pages/worker/WorkerConsignmentPage.tsx @@ -321,6 +321,9 @@ export default function WorkerConsignmentPage() { () => profileTreeData.filter((node) => node.children?.length).map((node) => node.key), [profileTreeData], ) + useEffect(() => { + setProfileExpandedKeys(profileGroupKeys) + }, [profileGroupKeys]) const selectedProfile: WorkerConsignmentProfile | null = orderedConsignmentProfiles.find((profile) => profile.profileId === selectedProfileId) || orderedConsignmentProfiles[0] || @@ -892,15 +895,15 @@ export default function WorkerConsignmentPage() { value={selectedProfile?.profileId} style={{ minWidth: 220 }} treeData={profileTreeData} - treeDefaultExpandAll={false} + treeDefaultExpandAll treeExpandedKeys={profileExpandedKeys} onTreeExpand={(keys) => setProfileExpandedKeys(keys as Array)} showSearch={{ treeNodeFilterProp: 'title', - onSearch: (value) => setProfileExpandedKeys(value.trim() ? profileGroupKeys : []), + onSearch: () => setProfileExpandedKeys(profileGroupKeys), }} onOpenChange={(open) => { - if (!open) setProfileExpandedKeys([]) + if (!open) setProfileExpandedKeys(profileGroupKeys) }} placeholder={profileTreeData.length === 0 ? '暂无可发布的寄卖分类' : '请选择寄卖分类'} popupMatchSelectWidth={false} diff --git a/apps/frontend/tests/consignment-matching-config.test.ts b/apps/frontend/tests/consignment-matching-config.test.ts index baf338e2..1cb7a614 100644 --- a/apps/frontend/tests/consignment-matching-config.test.ts +++ b/apps/frontend/tests/consignment-matching-config.test.ts @@ -150,7 +150,10 @@ test('寄卖配置:规格字段与联系方式区块提供复制模板配置 assert.ok(modal.includes('不影响价格、保证金、服务费、匹配和超时设置'), '复制只替换当前区块') assert.ok(modal.includes('ruleKey'), '模板驱动规格必须提示 ruleKey 仍指向来源模板') assert.ok(modal.includes('TreeSelect'), '来源选择必须使用折叠树') - assert.ok(modal.includes('treeDefaultExpandAll={false}'), '来源树默认必须折叠') + assert.ok( + modal.includes('treeDefaultExpandAll') && !modal.includes('treeDefaultExpandAll={false}'), + '来源树默认必须展开二级', + ) assert.ok(modal.includes('treeTitleRender'), '来源树必须自定义层级标题') }) @@ -160,7 +163,10 @@ test('打手端:寄卖分类按一二级层级展示', () => { assert.ok(page.includes('orderWorkerProfiles'), '必须按一级/二级排序') assert.ok(page.includes('profileTreeData'), '必须构建一级/二级树') assert.ok(page.includes('TreeSelect'), '必须使用可折叠的 TreeSelect') - assert.ok(page.includes('treeDefaultExpandAll={false}'), '默认必须折叠') + assert.ok( + page.includes('treeDefaultExpandAll') && !page.includes('treeDefaultExpandAll={false}'), + '默认必须展开二级', + ) assert.ok(page.includes('treeTitleRender'), '必须自定义层级标题') assert.ok(page.includes('二级'), '二级分类必须有层级标签') }) @@ -169,7 +175,10 @@ test('寄售仓库:寄卖分类筛选按一二级层级展示', () => { const panel = read('../src/pages/admin/panels/ConsignmentInventoryPanel.tsx') assert.ok(panel.includes('categoryTreeData'), '必须构建一级/二级树') assert.ok(panel.includes('TreeSelect'), '必须使用可折叠的 TreeSelect') - assert.ok(panel.includes('treeDefaultExpandAll={false}'), '默认必须折叠') + assert.ok( + panel.includes('treeDefaultExpandAll') && !panel.includes('treeDefaultExpandAll={false}'), + '默认必须展开二级', + ) assert.ok(panel.includes('treeTitleRender'), '必须自定义层级标题') assert.ok(panel.includes('继承'), '继承型二级分类必须有继承标记') })