From 4d3b6cdaed9175caf48e3a2e375bd618bb042c93 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, 16 Oct 2026 19:47:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=93=E7=AE=97=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8D=95=E6=8E=A5=E5=85=A5=E9=87=91=E8=9D=B6=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E4=B8=8E=E5=86=B2=E9=94=80=E9=A2=84=E6=A3=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/settlement/settlementAdjustment.js | 4 ++ .../settlement/settlementAdjustmentTable.js | 2 + .../settlement-adjustment-editor.vue | 15 +++++++ .../settlement/settlement-adjustment.vue | 42 +++++++++++++++---- 4 files changed, 54 insertions(+), 9 deletions(-) diff --git a/src/api/settlement/settlementAdjustment.js b/src/api/settlement/settlementAdjustment.js index d809bf6..4c7b460 100644 --- a/src/api/settlement/settlementAdjustment.js +++ b/src/api/settlement/settlementAdjustment.js @@ -17,6 +17,10 @@ export const approve = id => request({ url: `${baseUrl}/approve`, method: 'post' export const returnBill = (id, reason) => request({ url: `${baseUrl}/return`, method: 'post', data: { id, reason } }); export const repush = id => request({ url: `${baseUrl}/repush`, method: 'post', params: { id } }); +export const syncKingdee = id => + request({ url: `${baseUrl}/sync-kingdee`, method: 'post', timeout: 30000, params: { id } }); +export const kingdeeWriteOffPrecheck = formalSettlementId => + request({ url: `${baseUrl}/kingdee-writeoff-precheck`, method: 'get', params: { formalSettlementId } }); export const approvalStatusOptions = [ { label: '草稿', value: 'draft' }, diff --git a/src/option/settlement/settlementAdjustmentTable.js b/src/option/settlement/settlementAdjustmentTable.js index aaaa9fc..ad8b2fb 100644 --- a/src/option/settlement/settlementAdjustmentTable.js +++ b/src/option/settlement/settlementAdjustmentTable.js @@ -9,6 +9,8 @@ export const settlementAdjustmentTableColumns = [ { label: '合同名称', prop: 'contractName', minWidth: 170 }, { label: '调整金额', prop: 'adjustmentAmount', minWidth: 130, money: true }, { label: '审核状态', prop: 'approvalStatusName', minWidth: 110, status: true }, + { label: '金蝶单据状态', prop: 'kingdeeSyncStatus', minWidth: 130, kingdee: true }, + { label: '金蝶单据号', prop: 'kingdeeBillNo', minWidth: 150 }, { label: '当前节点', prop: 'currentNode', minWidth: 120 }, { label: '当前处理人', prop: 'currentProcessor', minWidth: 130 }, { label: '创建人', prop: 'createUserName', minWidth: 110 }, diff --git a/src/views/settlement/components/settlement-adjustment-editor.vue b/src/views/settlement/components/settlement-adjustment-editor.vue index 0c646d3..0ee9530 100644 --- a/src/views/settlement/components/settlement-adjustment-editor.vue +++ b/src/views/settlement/components/settlement-adjustment-editor.vue @@ -414,6 +414,8 @@ export default { }); this.details = []; this.recalculate(); + // 金蝶冲销预检:软提示,不阻断建单(金蝶不可用时静默降级) + this.precheckWriteOff(formalSettlementId); this.loading = true; try { const { data } = await api.getFormalDetails(formalSettlementId); @@ -431,6 +433,19 @@ export default { this.loading = false; } }, + async precheckWriteOff(formalSettlementId) { + try { + const { data } = await api.kingdeeWriteOffPrecheck(formalSettlementId); + if (String(this.form.formalSettlementId) !== String(formalSettlementId)) return; + const result = data?.data || data || {}; + if (!result.message) return; + if (result.syncStatus === 'synced' && result.writtenOff === false) + this.$message.warning(result.message); + else this.$message.info(result.message); + } catch (error) { + // 预检软提示:金蝶查询失败静默降级,不阻断建单 + } + }, addFeeRow() { this.details.push({ formalSettlementDetailId: null, diff --git a/src/views/settlement/settlement-adjustment.vue b/src/views/settlement/settlement-adjustment.vue index c4bacd4..9a43c11 100644 --- a/src/views/settlement/settlement-adjustment.vue +++ b/src/views/settlement/settlement-adjustment.vue @@ -93,11 +93,16 @@ >{{ row[column.prop] || '-' }}{{ kingdeeSyncName(row.kingdeeSyncStatus) }}{{ formatMoney(row[column.prop]) }}{{ displayValue(row[column.prop]) }} -