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: {