From 49d28c8d4fc87f01d34dd4828206ffac2e3eab35 Mon Sep 17 00:00:00 2001 From: yeuimu <2197651308@qq.com> Date: Sun, 30 Aug 2026 02:55:28 +0800 Subject: [PATCH] fix(admin): block re-config for family-configured links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 按用户反馈:族已配置后不允许再配置(撤回上一轮的「再配置」入口): - 「配置」按钮仅在本链接及其同款族均未配置时显示(configuredCount 与 familyConfiguredCount 均为 0),族已配置的链接只显示「同款已配置」徽标 - openConfigModal 增加统一拦截(按钮与右树拖拽两条路径都覆盖): 已配置/族已配置的链接弹出警告并阻止打开配置弹窗,避免产生官网 不可见的冗余商品 - 文档同步:撤回「再配置」语义,恢复拦截说明 已核实 PLTF004(族 786)实际仅 1 个官网商品,「四个配置」是右树 族聚合徽标造成的观感误解;149 个族无一跨分类,左树一族一行计数无误。 验证:admin vue-tsc 干净 + vitest 22/22 绿 --- apps/admin/src/views/goods/GoodsView.vue | 13 +++++++++---- docs/references/product-center.md | 13 ++++++------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/apps/admin/src/views/goods/GoodsView.vue b/apps/admin/src/views/goods/GoodsView.vue index 69ef7a0..89bd67a 100644 --- a/apps/admin/src/views/goods/GoodsView.vue +++ b/apps/admin/src/views/goods/GoodsView.vue @@ -449,6 +449,11 @@ function collectSiblings(ogNode: any): any[] { function openConfigModal(og: any, dropTarget: any) { const ogNode = findOgNodeById(og.rawId) + // 族已配置 → 不允许再配置(按钮隐藏 + 拖拽拦截):公开契约一族一款,重复配置只产生官网不可见的冗余商品 + if (ogNode && (ogNode.configuredCount > 0 || ogNode.familyConfiguredCount > 0)) { + ElMessage.warning('同款已配置为官网商品,不允许重复配置;如需调整请在左侧编辑对应商品') + return + } configOG.value = { ...og, familyId: og.familyId ?? ogNode?.familyId ?? null } configDropTarget.value = dropTarget configSiblings.value = ogNode ? collectSiblings(ogNode) : [] @@ -1246,7 +1251,7 @@ onMounted(() => loadAll()) 同款已配置 loadAll()) @click.stop="locateInLeftTree(data.rawId)" /> {{ data.familyConfiguredCount > 0 ? '再配置' : '配置' }} + >配置
{{ data.label }} diff --git a/docs/references/product-center.md b/docs/references/product-center.md index f9ca8f7..1cc8c6a 100644 --- a/docs/references/product-center.md +++ b/docs/references/product-center.md @@ -168,10 +168,10 @@ curl -X POST /product-families/organize -H "$AUTH" # 后台「整理 如 BRTF004)或族归属跨分类匹配,同款不同工艺/物流/仓库均在列(含已配置链接), 支持搜索过滤;无候选时显示空态提示。 - 右树徽标语义(**族感知**,公开契约一族一款):**已配置 N**(绿,本链接已配置为官网商品, - N=国数)/ **同款已配置**(绿,本链接未单独建商品但所属族已配置)/ **成族**(蓝,已归族且全族 - 未配置)/ **未配置**(橙);「定位到官网商品」在自身或同族已配置时出现(按 主链接 → 同族 → - 旧副源顺序定位并高亮),「配置」在本链接未单独建商品时可用;族已配置时按钮文案为 - 「再配置」(供调整归族/再配置到其他国家分类,注意会产生官网不可见的冗余商品); + N=国数)/ **同款已配置**(绿,本链接未单独建商品但所属族已配置,无需再配)/ **成族**(蓝, + 已归族且全族未配置)/ **未配置**(橙);「定位到官网商品」在自身或同族已配置时出现(按 + 主链接 → 同族 → 旧副源顺序定位并高亮);「配置」按钮仅在本链接及其同款族均未配置时出现, + 拖拽到左侧分类/国家的路径同样被拦截(提示同款已配置、不允许重复配置); - 族分组头部计数与「仅未配置」筛选同样按族语义(族已配置 → 计入已配置)。 - **左树一族一行**(国家/品类模式):同款多条配置只显示排序最前的一条,名称旁 「N 个配置」徽标悬浮列出其余配置(可打开编辑),分组头部计数仍按全部商品统计。 @@ -179,9 +179,8 @@ curl -X POST /product-families/organize -H "$AUTH" # 后台「整理 - 页面组件化:`GoodsView.vue` 拆出 `components/` 下的 GoodsEditDialog(编辑弹窗)、 GoodsConfigDialog(配置弹窗)、CustomGoodDialog(自定义商品)、TagFilterPopover(标签筛选弹层)。 -> 注意:历史上每族多点「配置」会产生多个同名的官网商品(重复项可手动删除)。曾按"族已配置 -> 拦截配置入口"处理过,现已撤回:族已配置的链接徽标显示「同款已配置」、按钮为「再配置」, -> 入口保留供调整归族/加配国家,重复产生的冗余商品建议清理。 +> 注意:公开契约一族一款,同款(同族)已配置后**不允许再配置**——配置按钮隐藏、拖拽路径拦截, +> 避免产生官网不可见的冗余商品;历史重复商品(如早期 DG120/AUTM003 测试期间产生的)仍建议清理。 **链接级标签(自动派生 + 人工修正,2026-08 规则改版)**: