From f67a4036ed4b40798488bc687e1904fe2faaac5d 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, 28 Oct 2026 14:16:42 +0800 Subject: [PATCH 01/31] =?UTF-8?q?fix:=20=E9=A1=B9=E7=9B=AE=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E4=B8=8E=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E6=8E=A5=E5=8F=A3=E8=B6=85=E6=97=B6=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E4=BD=BF=E7=94=A8APPROVE=5FTIMEOUT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/business/contract-manage.js | 4 ++-- src/api/business/project-change.js | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/api/business/contract-manage.js b/src/api/business/contract-manage.js index b7ce897..875839a 100644 --- a/src/api/business/contract-manage.js +++ b/src/api/business/contract-manage.js @@ -1,4 +1,5 @@ import { createCrudApi } from './common'; +import { APPROVE_TIMEOUT } from '@/api/common'; import request from '@/axios'; const baseUrl = '/blade-transport/contract-manage'; @@ -36,8 +37,7 @@ export const approve = id => url: `${baseUrl}/approve`, method: 'post', params: { id }, - // 审批通过后同步推送合规(附件转传可达 20s+),覆盖全局 10s 超时 - timeout: 120000, + timeout: APPROVE_TIMEOUT, }); export const reject = id => diff --git a/src/api/business/project-change.js b/src/api/business/project-change.js index f1de353..c369a5f 100644 --- a/src/api/business/project-change.js +++ b/src/api/business/project-change.js @@ -1,4 +1,5 @@ import { createCrudApi } from './common'; +import { APPROVE_TIMEOUT } from '@/api/common'; import request from '@/axios'; const baseUrl = '/blade-transport/project-change'; @@ -35,6 +36,7 @@ export const approve = id => url: `${baseUrl}/approve`, method: 'post', params: { id }, + timeout: APPROVE_TIMEOUT, }); export const reject = id => From 358add743e116875f6fbd88143c6cabd505854d2 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, 28 Oct 2026 14:36:03 +0800 Subject: [PATCH 02/31] =?UTF-8?q?fix:=20=E5=90=88=E5=90=8C=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E5=AE=A1=E6=89=B9=E6=8E=A5=E5=8F=A3=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8APPROVE=5FTIMEOUT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/business/contract-change.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/business/contract-change.js b/src/api/business/contract-change.js index 4f407ec..739be83 100644 --- a/src/api/business/contract-change.js +++ b/src/api/business/contract-change.js @@ -1,4 +1,5 @@ import { createCrudApi } from './common'; +import { APPROVE_TIMEOUT } from '@/api/common'; import request from '@/axios'; const baseUrl = '/blade-transport/contract-change'; @@ -35,8 +36,7 @@ export const approve = id => url: `${baseUrl}/approve`, method: 'post', params: { id }, - // 审批通过后同步推送合规(附件转传可达 20s+),覆盖全局 10s 超时 - timeout: 120000, + timeout: APPROVE_TIMEOUT, }); export const reject = id => From 450288106321e9f9a1c872487bd9794bae7ce704 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, 28 Oct 2026 16:11:29 +0800 Subject: [PATCH 03/31] =?UTF-8?q?feat:=20=E4=BB=98=E6=AC=BE=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E5=AE=A1=E6=89=B9=E9=80=9A=E8=BF=87=E5=89=8D=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=A1=AE=E8=AE=A4=E5=BC=B9=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/payment/payment-application.vue | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/views/payment/payment-application.vue b/src/views/payment/payment-application.vue index 45b8fe6..ad7d57b 100644 --- a/src/views/payment/payment-application.vue +++ b/src/views/payment/payment-application.vue @@ -328,15 +328,17 @@ export default { this.refreshChange(); }, async handleApprove(row) { - // 防止重复点击:请求进行中忽略后续点击 + // 防止重复点击:请求进行中忽略后续点击,避免重复审批和重复提示 if (this.approveLoading) return; this.approveLoading = true; - const loading = this.$loading({ - lock: true, - text: '审批处理中,请稍候…', - background: 'rgba(255, 255, 255, 0.6)', - }); + let loading = null; try { + await this.$confirm('确认审批通过该付款申请?', '提示', { type: 'warning' }); + loading = this.$loading({ + lock: true, + text: '审批处理中,请稍候…', + background: 'rgba(255, 255, 255, 0.6)', + }); const res = await api.approve({ id: row.id }); // data=false 表示审批已通过但自动同步金蝶失败,msg 带具体原因 if (res.data.data === false) { @@ -346,7 +348,7 @@ export default { } this.refreshChange(); } finally { - loading.close(); + loading?.close(); this.approveLoading = false; } }, From 775307f5c04e23dee7a5d2de3c6de4536ae02d25 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, 28 Oct 2026 17:00:34 +0800 Subject: [PATCH 04/31] =?UTF-8?q?feat:=20=E4=BB=98=E6=AC=BE=E4=B8=8E?= =?UTF-8?q?=E5=BC=80=E7=A5=A8=E7=94=B3=E8=AF=B7=E9=87=91=E8=9D=B6=E5=8D=95?= =?UTF-8?q?=E6=8D=AE=E7=8A=B6=E6=80=81=E7=9D=80=E8=89=B2=E5=B9=B6=E6=82=AC?= =?UTF-8?q?=E6=B5=AE=E5=B1=95=E7=A4=BA=E5=A4=B1=E8=B4=A5=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/option/payment/paymentApplication.js | 2 +- src/utils/kingdee.js | 15 +++++++++++++++ src/views/payment/invoice-application.vue | 13 +++++++++++++ src/views/payment/payment-application.vue | 14 ++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/utils/kingdee.js diff --git a/src/option/payment/paymentApplication.js b/src/option/payment/paymentApplication.js index 65494a3..9a74a22 100644 --- a/src/option/payment/paymentApplication.js +++ b/src/option/payment/paymentApplication.js @@ -169,7 +169,7 @@ export const paymentApplicationOption = ({ { label: '当前节点', prop: 'currentNode', minWidth: 120, formatter: textFormatter }, { label: '当前处理人', prop: 'currentProcessor', minWidth: 120, formatter: textFormatter }, { label: '金蝶单据号', prop: 'kingdeeBillNo', minWidth: 130, formatter: textFormatter }, - { label: '金蝶单据状态', prop: 'kingdeeStatusName', minWidth: 130, formatter: textFormatter }, + { label: '金蝶单据状态', prop: 'kingdeeStatusName', slot: true, minWidth: 130 }, { label: '金蝶锁状态', prop: 'kingdeeLockStatus', slot: true, minWidth: 150 }, { label: '附件同步', prop: 'attachmentSyncStatusName', minWidth: 100, formatter: textFormatter }, ], diff --git a/src/utils/kingdee.js b/src/utils/kingdee.js new file mode 100644 index 0000000..b3f812c --- /dev/null +++ b/src/utils/kingdee.js @@ -0,0 +1,15 @@ +/** + * 金蝶单据状态公共映射 + */ + +/** 金蝶单据状态 → el-tag 颜色类型(failed 状态列表页悬浮展示失败原因) */ +export const KINGDEE_STATUS_TAG_TYPES = { + synced: 'success', + paid: 'success', + invoiced: 'success', + paying: 'warning', + failed: 'danger', +}; + +/** 金蝶单据状态 → el-tag 颜色类型,未映射状态返回 info */ +export const kingdeeStatusType = status => KINGDEE_STATUS_TAG_TYPES[status] || 'info'; diff --git a/src/views/payment/invoice-application.vue b/src/views/payment/invoice-application.vue index a447f77..e806a80 100644 --- a/src/views/payment/invoice-application.vue +++ b/src/views/payment/invoice-application.vue @@ -125,6 +125,17 @@ {{ displayValue(row[column.prop]) }} {{ formatMoney(row[column.prop]) }} + + + - +