From fd7ca5d53fd834b0ed2efb85d34cdb5bcf9daa5b Mon Sep 17 00:00:00 2001 From: yeuimu <2197651308@qq.com> Date: Fri, 28 Aug 2026 13:29:54 +0800 Subject: [PATCH] feat(admin): goods view family badges and sibling matching --- apps/admin/src/views/goods/GoodsView.vue | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/admin/src/views/goods/GoodsView.vue b/apps/admin/src/views/goods/GoodsView.vue index f57c1c7..e832017 100644 --- a/apps/admin/src/views/goods/GoodsView.vue +++ b/apps/admin/src/views/goods/GoodsView.vue @@ -18,7 +18,7 @@ import { tagsApi } from '@/api/tags' import { tagGroupsApi } from '@/api/tag-groups' import { originGoodsApi } from '@/api/origin-goods' import { syncApi } from '@/api/sync' -import { sameOriginGroup } from '@/utils/origin-name' +import { sameFamily } from '@/utils/family-match' const mode = ref<'category' | 'country' | 'global'>('category') const loading = ref(false) @@ -275,6 +275,9 @@ function buildRightTree(tree: OriginGoodsTreeResponse) { variantCount: og.variantCount ?? 0, sizeRowCount: og.sizeRowCount ?? 0, packageRowCount: og.packageRowCount ?? 0, + familyId: og.familyId ?? null, + familyCode: og.familyCode ?? null, + familyStale: og.familyStale ?? null, })) return { id: 'rc-' + node.categoryId, @@ -408,7 +411,7 @@ function openConfigModal(og: any, dropTarget: any) { configSiblings.value = siblings configPrimaryId.value = String(og.rawId) configChecked.value = siblings - .filter((s) => sameOriginGroup(ogNode?.goodName ?? og.goodName, s.goodName)) + .filter((s) => sameFamily(ogNode ?? { goodName: og.goodName }, s)) .map((s) => String(s.rawId)) configForm.value = { countryId: '', cascaderCategory: [], categoryId: '', tagIds: [], positionId: '', goodImage: og.goodImage || '' } if (dropTarget) { @@ -1688,6 +1691,18 @@ onMounted(() => loadAll())
{{ data.label }} + {{ data.familyCode }} + 族待处理 loadAll()) background: linear-gradient(135deg, #f5f7fa, #e9ecef); } .og-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; } +.og-family-tag { flex-shrink: 0; } .og-price { color: #909399; font-size: 12px; flex-shrink: 0; } .og-badge { font-size: 10px; line-height: 1; padding: 3px 6px; border-radius: 8px;