diff --git a/frontend/src/pages/sku-mappings/index.vue b/frontend/src/pages/sku-mappings/index.vue index cf80e86..02cc7c5 100644 --- a/frontend/src/pages/sku-mappings/index.vue +++ b/frontend/src/pages/sku-mappings/index.vue @@ -88,6 +88,7 @@ const filteredStoreOptions = computed(() => { }) // Remote search for SKU origins +let skipCompanyWatch = false const skuSearchOptions = ref<{ value: number; label: string }[]>([]) const skuSearching = ref(false) let skuSearchTimer: ReturnType | null = null @@ -157,6 +158,12 @@ function openCreate() { function openEdit(record: SkuMappingForm & { id: number }) { editingId.value = record.id modalTitle.value = '编辑连接' + // 先预填 options,再赋值 form(避免 watch 清空后丢失) + skuSearchOptions.value = record.origin_sku_id + ? [{ value: record.origin_sku_id as number, label: record.origin_sku || '' }] + : [] + // 暂停 watch 重置逻辑 + skipCompanyWatch = true Object.assign(form, { company_id: record.company_id, platform_id: record.platform_id, @@ -170,10 +177,7 @@ function openEdit(record: SkuMappingForm & { id: number }) { enabled: record.enabled ?? true, note: record.note || '', }) - // 从已有列表数据预填 origin SKU 选项,无需额外 API 调用 - skuSearchOptions.value = record.origin_sku_id - ? [{ value: record.origin_sku_id as number, label: record.origin_sku || '' }] - : [] + nextTick(() => { skipCompanyWatch = false }) modalVisible.value = true } @@ -284,10 +288,11 @@ function applyGenerated() { } } -// Watch company change to reset SKU search +// Watch company change to reset SKU search (skip during openEdit) watch( () => form.company_id, () => { + if (skipCompanyWatch) return form.origin_sku_id = undefined form.origin_sku = '' skuSearchOptions.value = []