From 15e005fd2001a61779c6c6ca86533ae8449222b3 Mon Sep 17 00:00:00 2001 From: wuweihua <88888888> Date: Fri, 16 Oct 2026 16:28:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/data/rule/config/index.vue | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/bms-front/src/views/data/rule/config/index.vue b/bms-front/src/views/data/rule/config/index.vue index b2defbb3..c2814f23 100644 --- a/bms-front/src/views/data/rule/config/index.vue +++ b/bms-front/src/views/data/rule/config/index.vue @@ -327,11 +327,28 @@ function handleDelete(ids) { function searchProduct(keyword) { productLoading.value = true - listProductOptions({ productCode: keyword || undefined, status: '1' }).then(res => { - const rows = res.data || res.rows || [] + const kw = (keyword || '').trim() + const base = { status: '1' } + // product_code / product_name are separate likes; query both and merge + const reqs = kw + ? [ + listProductOptions({ ...base, productCode: kw }), + listProductOptions({ ...base, productName: kw }) + ] + : [listProductOptions(base)] + Promise.all(reqs).then(results => { const map = new Map() - ;[...productOptions.value, ...rows].forEach(p => { - if (p && p.productCode) map.set(p.productCode, p) + results.forEach(res => { + ;(res.data || res.rows || []).forEach(p => { + if (p && p.productCode) map.set(p.productCode, p) + }) + }) + // keep already-selected options visible + toList(form.value.productCodeList).forEach(code => { + if (code && !map.has(code)) { + const hit = productOptions.value.find(p => p.productCode === code) + map.set(code, hit || { productCode: code, productName: code }) + } }) productOptions.value = Array.from(map.values()) }).finally(() => {