From 4ee3a62df619c4afcbe0160f6a021cbefd341fb5 Mon Sep 17 00:00:00 2001 From: ZhangYong Date: Tue, 14 Apr 2026 18:22:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E6=AC=BE=E6=89=A7=E8=A1=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=B2=BE=E7=BD=91=E5=8F=B7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moneyManage/receiveDetail/receiveService.vue | 40 +++++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/src/views/moneyManage/receiveDetail/receiveService.vue b/src/views/moneyManage/receiveDetail/receiveService.vue index 173f89d..0e08c8b 100644 --- a/src/views/moneyManage/receiveDetail/receiveService.vue +++ b/src/views/moneyManage/receiveDetail/receiveService.vue @@ -804,11 +804,12 @@ const handleJwcodeBlur = () => { // 精网号失焦:查询客户姓名和地区 const jwcodeQuerying = ref(false) let jwcodeQueryPromise = null +// 缓存上次查询成功的精网号 +const lastSearchedJwcode = ref('') const jwcodeSeachMarket = async () => { try { if (jwcodeQuerying.value && jwcodeQueryPromise) { - await jwcodeQueryPromise - return + return await jwcodeQueryPromise } const jwcode = String(addFormData.value.jwcode ?? '').replace(/\s/g, '') addFormData.value.jwcode = jwcode @@ -824,6 +825,12 @@ const jwcodeSeachMarket = async () => { ElMessage.error(t('elmessage.limitJwcodeLength')) return } + + // 如果当前精网号已经查询过并且成功,则直接返回上次的结果缓存(模拟成功) + if (lastSearchedJwcode.value === jwcode && addFormData.value.name && addFormData.value.market) { + return { code: 200, data: { market: addFormData.value.market, marketName: addFormData.value.marketName, name: addFormData.value.name } } + } + jwcodeQuerying.value = true jwcodeQueryPromise = request({ url: '/cashCollection/getNameAndMarket', @@ -835,25 +842,32 @@ const jwcodeSeachMarket = async () => { addFormData.value.market = result.data.market addFormData.value.marketName = result.data.marketName addFormData.value.name = result.data.name + lastSearchedJwcode.value = jwcode // 记录成功的精网号 if (addFormRef.value) { addFormRef.value.validateField('name'); addFormRef.value.validateField('market'); } + return result; // 新增:成功时返回完整对象以便外层判断 } else if (result.code == 0) { + lastSearchedJwcode.value = '' // 查询失败清空缓存 const region = result.data && result.data.market if (region) { ElMessage.info({ message: t('elmessage.userRegionHint', { region }), customClass: 'custom-blue-message' }) - return } ElMessage.error(t('elmessage.customerNotExist')) + return result; // 新增:如果code为0,返回完整对象以便外层阻断流程 } else { + lastSearchedJwcode.value = '' // 查询失败清空缓存 ElMessage.error(t('elmessage.customerNotExist')) + return result; // 其他错误也返回 } } catch (error) { console.log(error); + lastSearchedJwcode.value = '' + return { code: 500 }; // 异常时返回错误码 } finally { jwcodeQuerying.value = false jwcodeQueryPromise = null @@ -862,8 +876,9 @@ const jwcodeSeachMarket = async () => { const waitJwcodeQuery = async () => { if (jwcodeQuerying.value && jwcodeQueryPromise) { - await jwcodeQueryPromise + return await jwcodeQueryPromise } + return null } const LastGoodsName = ref('') @@ -935,7 +950,9 @@ const testGold = () => { // 客服新增收款 const handleAddForm = async () => { try { - await waitJwcodeQuery() + // 如果失焦事件已经触发了查询,这里会等待并拿到结果,否则返回null + const waitResult = await waitJwcodeQuery() + await addFormRef.value.validate(); if (!testGold().valid) { ElMessage.error(testGold().message); @@ -976,6 +993,19 @@ const handleAddForm = async () => { } ifAddDone.value = true + + // 核心判断:如果上面没有拦截到正在进行的请求,说明是直接点击的提交,需要主动查一次 + let jwcodeResult = waitResult + if (!jwcodeResult) { + jwcodeResult = await jwcodeSeachMarket() + } + + // 判断精网号查询的结果,如果是返回错误或者是 code=0 则直接退出新增流程 + if (!jwcodeResult || jwcodeResult.code === 0 || jwcodeResult.code === 500) { + ifAddDone.value = false; + return; + } + const result = await request({ url: '/cashCollection/add', data: {