没有证面引用。
+没有关联购买证。
没有证面引用。
+没有关联购买证。
没有证面引用。
+没有关联购买证。
一次仅上传并解析一张证件图片或 PDF。解析只补充还没手工填写的空字段。删除证件附件后,证面信息、绑定合同产品和证面引用会清空。
一次仅上传并解析一张证件图片或 PDF。解析只补充还没手工填写的空字段。删除证件附件后,证面信息、绑定合同产品和关联购买证会清空。已有额度流水。尚未关联购买证档案的引用可以补全;已关联的引用不能修改或移除。
@@ -921,7 +921,7 @@ } function addReference() { if (form.value.referencesEditable === false) { - ElMessage.warning('已有额度流水,不能新增或移除证面引用') + ElMessage.warning('已有额度流水,不能新增或移除关联购买证') return } form.value.purchaseRefs = [ @@ -1034,17 +1034,17 @@ touch('categoryId') categoryOpen.value = false } - async function matchBuyerCustomer(name: string, current: number) { - const buyer = name.trim() - if (!buyer) return + async function matchBuyerCustomer(name: string, current: number, partyLabel = '证面单位') { + const party = name.trim() + if (!party) return try { - const result = await fetchCustomerOptions({ keyword: buyer, limit: 200 }) + const result = await fetchCustomerOptions({ keyword: party, limit: 200 }) if (current !== epoch) return - const matches = exactCustomerMatches(extractCustomers(result), buyer) + const matches = exactCustomerMatches(extractCustomers(result), party) if (matches.length === 1) { const matched = { id: String(matches[0].id), - customerName: matches[0].customerName || buyer + customerName: matches[0].customerName || party } if (!systemCustomer.value.id) { systemCustomer.value = matched @@ -1058,8 +1058,8 @@ } ElMessage.warning( matches.length - ? '有多个客户与购买单位同名,请手工选择' - : '未找到与购买单位完全一致的客户,请手工选择' + ? `有多个客户与${partyLabel}同名,请手工选择` + : `未找到与${partyLabel}完全一致的客户,请手工选择` ) } catch { if (current === epoch) ElMessage.warning('客户匹配失败,请手工选择') @@ -1544,10 +1544,14 @@ if (targetKind === 'purchase') { const buyer = String(form.value.buyerName || '').trim() const productName = String(form.value.productNameOnCert || '').trim() - if (buyer) await matchBuyerCustomer(buyer, current) + if (buyer) await matchBuyerCustomer(buyer, current, '购买单位') if (productName) await matchCertCategory(productName, current) } - if (targetKind === 'transport') await linkRecognizedPurchaseCerts(current, targetKind, image) + if (targetKind === 'transport') { + const consignee = String(form.value.consigneeName || '').trim() + if (consignee) await matchBuyerCustomer(consignee, current, '收货单位') + await linkRecognizedPurchaseCerts(current, targetKind, image) + } if (current !== epoch || kind.value !== targetKind || recognitionImage.value !== image) return ElMessage.success( Object.keys(result.invalidFields || {}).length diff --git a/web-admin/src/views/pl/quota-cert/index.vue b/web-admin/src/views/pl/quota-cert/index.vue index 18adc9a87..0104d9925 100644 --- a/web-admin/src/views/pl/quota-cert/index.vue +++ b/web-admin/src/views/pl/quota-cert/index.vue @@ -172,7 +172,7 @@一次仅上传并解析一张证件图片或 PDF;保存成功后自动清空,继续处理下一张
-删除证件附件后,证面信息、绑定合同产品和证面引用会清空
+删除证件附件后,证面信息、绑定合同产品和关联购买证会清空
请核对证号、数量、单位、有效次数和引用关系。解析只补充未编辑的空字段。
@@ -421,7 +421,7 @@