From 7f543937fb4c901df9aeabee98d9bf487abe70ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Wed, 16 Sep 2026 14:14:53 +0800 Subject: [PATCH 01/43] =?UTF-8?q?:sparkles:=20=E7=BB=93=E7=AE=97=E5=8D=95?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=97=B6=E8=87=AA=E5=8A=A8=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?BFI=E6=B1=87=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - currency.js: 新增getBfiExchangeRate接口调用 - pre-settlement-editor.vue: - 选择合同后同步结算币种并自动查询当天BFI汇率 - 汇率日期变更时自动查询BFI汇率并回填结算汇率 - 新增时自动设置当天日期并查询汇率 - formal-settlement-editor.vue: - 选择合同后同步结算币种并自动查询当天BFI汇率 - 汇率日期变更时自动查询BFI汇率并回填结算汇率 - 新增时自动查询当天BFI汇率 --- src/api/base/currency.js | 11 ++++++ .../components/formal-settlement-editor.vue | 21 ++++++++++++ .../components/pre-settlement-editor.vue | 34 +++++++++++++++++-- 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/src/api/base/currency.js b/src/api/base/currency.js index adb7555..69fd94b 100644 --- a/src/api/base/currency.js +++ b/src/api/base/currency.js @@ -58,3 +58,14 @@ export const changeStatus = (id, status) => { }, }); }; + +export const getBfiExchangeRate = (currencyCode, effectdate) => { + return request({ + url: '/blade-transport/bfi/exchange-rate', + method: 'get', + params: { + currencyCode, + effectdate, + }, + }); +}; diff --git a/src/views/settlement/components/formal-settlement-editor.vue b/src/views/settlement/components/formal-settlement-editor.vue index 93cd0bd..496eb46 100644 --- a/src/views/settlement/components/formal-settlement-editor.vue +++ b/src/views/settlement/components/formal-settlement-editor.vue @@ -22,6 +22,7 @@ type="date" value-format="YYYY-MM-DD" placeholder="请选择" + @change="fetchBfiExchangeRate" /> Date: Thu, 17 Sep 2026 16:40:12 +0800 Subject: [PATCH 02/43] =?UTF-8?q?:sparkles:=20=E4=BB=98=E6=AC=BE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=96=B0=E5=A2=9E=E5=90=8C=E6=AD=A5=E4=BB=98=E6=AC=BE?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E6=8C=89=E9=92=AE=E5=B9=B6=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E9=87=91=E8=9D=B6=E5=8D=95=E6=8D=AE=E7=8A=B6=E6=80=81=E9=80=89?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/payment/paymentApplication.js | 5 +++++ src/views/payment/payment-application.vue | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/api/payment/paymentApplication.js b/src/api/payment/paymentApplication.js index 7c48a0d..7bbbbc5 100644 --- a/src/api/payment/paymentApplication.js +++ b/src/api/payment/paymentApplication.js @@ -20,6 +20,8 @@ export const syncKingdee = id => request({ url: `${baseUrl}/sync-kingdee`, method: 'post', params: { id } }); export const syncKingdeeBatch = ids => request({ url: `${baseUrl}/sync-kingdee-batch`, method: 'post', data: ids }); +export const syncKingdeeResult = () => + request({ url: `${baseUrl}/sync-kingdee-result`, method: 'post' }); export const paymentTypeOptions = [ { label: '项目预付', value: 'project_advance' }, @@ -36,5 +38,8 @@ export const approvalStatusOptions = [ export const kingdeeStatusOptions = [ { label: '未生成', value: 'unsynced' }, { label: '已生成', value: 'synced' }, + { label: '付款中', value: 'paying' }, + { label: '已付款', value: 'paid' }, + { label: '已关闭', value: 'closed' }, { label: '生成失败', value: 'failed' }, ]; diff --git a/src/views/payment/payment-application.vue b/src/views/payment/payment-application.vue index 9fb193b..5c03fa0 100644 --- a/src/views/payment/payment-application.vue +++ b/src/views/payment/payment-application.vue @@ -84,6 +84,13 @@ @click="handleSync" >批量同步 + 同步付款结果 item.label); const rows = this.rows.map(row => this.columns.map(item => row[item.prop] || '')); -- 2.52.0 From f067518c0e0c6112ca14a2a9ea34a4460d3c0d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Fri, 18 Sep 2026 11:51:06 +0800 Subject: [PATCH 03/43] =?UTF-8?q?fix:=20=E4=BB=98=E6=AC=BE=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E6=89=B9=E9=87=8F=E5=90=8C=E6=AD=A5=E9=87=91=E8=9D=B6?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E6=97=B6=E5=B1=95=E7=A4=BA=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 批量同步后解析返回结果,按"同步失败"标识区分成功与失败条目 - 部分失败时以 warning 提示成功/失败条数及具体失败原因(停留8秒),全部成功仍提示已同步条数 --- src/views/payment/payment-application.vue | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/views/payment/payment-application.vue b/src/views/payment/payment-application.vue index 5c03fa0..42bffc8 100644 --- a/src/views/payment/payment-application.vue +++ b/src/views/payment/payment-application.vue @@ -403,8 +403,17 @@ export default { this.$message.warning('请选择至少一条审批通过的付款申请'); return; } - await api.syncKingdeeBatch(rows.map(row => row.id)); - this.$message.success(`已同步${rows.length}条付款申请`); + const data = this.unwrapData(await api.syncKingdeeBatch(rows.map(row => row.id))) || []; + const failedList = data.filter(item => String(item).includes('同步失败')); + if (failedList.length) { + this.$message({ + type: 'warning', + message: `同步完成:成功${data.length - failedList.length}条,失败${failedList.length}条。${failedList.join(';')}`, + duration: 8000, + }); + } else { + this.$message.success(`已同步${data.length}条付款申请`); + } this.loadTable(); }, async handleSyncResult() { -- 2.52.0 From 58aaf79445859652646e6f68350e65fd8ce14b1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Fri, 18 Sep 2026 20:01:29 +0800 Subject: [PATCH 04/43] =?UTF-8?q?:sparkles:=20=E5=AE=A2=E5=95=86=E6=A1=A3?= =?UTF-8?q?=E6=A1=88=E6=96=B0=E5=A2=9E=E9=87=91=E8=9D=B6=E5=AE=A2=E5=95=86?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=9B=9E=E5=A1=AB=E4=B8=8E=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E9=87=91=E8=9D=B6=E9=87=8D=E6=8E=A8=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/vehicle/customer-archive.js | 20 +++ src/views/vehicle/customer-archive.vue | 200 +++++++++++++++++++++++-- 2 files changed, 204 insertions(+), 16 deletions(-) diff --git a/src/api/vehicle/customer-archive.js b/src/api/vehicle/customer-archive.js index 9d859f2..8cfdb5f 100644 --- a/src/api/vehicle/customer-archive.js +++ b/src/api/vehicle/customer-archive.js @@ -113,6 +113,26 @@ export const getScoreTemplate = quantificationId => { }); }; +export const queryKingdeeCustomer = creditCode => { + return request({ + url: '/blade-transport/bfi/customer/query-by-credit-code', + method: 'get', + params: { + creditCode, + }, + }); +}; + +export const syncKingdee = id => { + return request({ + url: '/blade-transport/customer-archive/sync-kingdee', + method: 'post', + params: { + id, + }, + }); +}; + export const recognizeBusinessLicenseOcr = imageUrl => { return request({ url: '/blade-transport/baidu-ocr/recognize-url', diff --git a/src/views/vehicle/customer-archive.vue b/src/views/vehicle/customer-archive.vue index 9c36d1a..ee1cdd1 100644 --- a/src/views/vehicle/customer-archive.vue +++ b/src/views/vehicle/customer-archive.vue @@ -109,6 +109,12 @@ {{ row.status === 1 ? '启用' : '停用' }} +