fix(admin): block re-config for family-configured links

按用户反馈:族已配置后不允许再配置(撤回上一轮的「再配置」入口):
- 「配置」按钮仅在本链接及其同款族均未配置时显示(configuredCount
  与 familyConfiguredCount 均为 0),族已配置的链接只显示「同款已配置」徽标
- openConfigModal 增加统一拦截(按钮与右树拖拽两条路径都覆盖):
  已配置/族已配置的链接弹出警告并阻止打开配置弹窗,避免产生官网
  不可见的冗余商品
- 文档同步:撤回「再配置」语义,恢复拦截说明

已核实 PLTF004(族 786)实际仅 1 个官网商品,「四个配置」是右树
族聚合徽标造成的观感误解;149 个族无一跨分类,左树一族一行计数无误。

验证:admin vue-tsc 干净 + vitest 22/22 绿
This commit is contained in:
yeuimu
2026-08-30 02:55:28 +08:00
parent 7ff12fc69b
commit 49d28c8d4f
2 changed files with 15 additions and 11 deletions
+9 -4
View File
@@ -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())
<span
v-else-if="data.familyConfiguredCount > 0"
class="og-badge og-badge--ok"
:title="`同款族 ${data.familyCode || ''} 已配置为官网商品,本链接自身未单独配置`"
:title="`同款族 ${data.familyCode || ''} 已配置为官网商品,本链接无需再配置`"
>同款已配置</span>
<span
v-else-if="data.familyId"
@@ -1279,11 +1284,11 @@ onMounted(() => loadAll())
@click.stop="locateInLeftTree(data.rawId)"
/>
<el-button
v-if="!data.configuredCount"
v-if="!data.configuredCount && !data.familyConfiguredCount"
size="small" type="primary" link class="og-config-btn"
:title="data.familyConfiguredCount > 0 ? '同款已配置为官网商品,点此可将本款再配置到其他国家/分类' : '配置为官网商品(可勾选同款链接归入同一族)'"
title="配置为官网商品(可勾选同款链接归入同一族)"
@click.stop="openConfigFromRightTree(data)"
>{{ data.familyConfiguredCount > 0 ? '再配置' : '配置' }}</el-button>
>配置</el-button>
</div>
<div v-else class="og-cat-node">
<span>{{ data.label }}</span>