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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user