From 6b0cb3769932c19062f5cd5339b2280275139f70 Mon Sep 17 00:00:00 2001 From: weicw1996 Date: Thu, 15 Oct 2026 20:41:20 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E7=BB=93=E7=AE=97=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E7=9A=84=E5=8D=95=E6=8D=AE=E5=8F=B7=E3=80=81=E8=BF=90?= =?UTF-8?q?=E5=8D=95=E5=8F=B7=E6=94=AF=E6=8C=81=E8=B7=B3=E8=BD=AC=E5=BA=94?= =?UTF-8?q?=E6=94=B6=E5=BA=94=E4=BB=98=E6=98=8E=E7=BB=86=E4=B8=8E=E8=BF=90?= =?UTF-8?q?=E5=8D=95=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../settlement/formalSettlementTable.js | 4 +- src/option/settlement/preSettlementTable.js | 2 +- src/utils/settlement-detail-link.js | 51 +++++++++++++++++++ .../components/formal-settlement-editor.vue | 29 ++++++++++- .../components/pre-settlement-editor.vue | 24 ++++++++- .../settlement/receivable-payable-detail.vue | 15 +++--- 6 files changed, 113 insertions(+), 12 deletions(-) create mode 100644 src/utils/settlement-detail-link.js diff --git a/src/option/settlement/formalSettlementTable.js b/src/option/settlement/formalSettlementTable.js index 83e9f1f..390c4e1 100644 --- a/src/option/settlement/formalSettlementTable.js +++ b/src/option/settlement/formalSettlementTable.js @@ -35,8 +35,8 @@ export const sourceColumns = [ ]; export const detailColumns = [ - { label: '单据号', prop: 'documentNo', minWidth: 180 }, - { label: '运单号', prop: 'waybillNo', minWidth: 160 }, + { label: '单据号', prop: 'documentNo', minWidth: 180, link: true }, + { label: '运单号', prop: 'waybillNo', minWidth: 160, link: true }, { label: '车号', prop: 'vehicleNo', minWidth: 130 }, { label: '发货地址', prop: 'departureAddress', minWidth: 180 }, { label: '到货地址', prop: 'arrivalAddress', minWidth: 180 }, diff --git a/src/option/settlement/preSettlementTable.js b/src/option/settlement/preSettlementTable.js index b383b92..01ab798 100644 --- a/src/option/settlement/preSettlementTable.js +++ b/src/option/settlement/preSettlementTable.js @@ -40,7 +40,7 @@ export const settlementSummaryColumns = [ export const settlementDetailColumns = [ { label: '单据号', prop: 'documentNo', minWidth: 180, link: true }, - { label: '运单号', prop: 'waybillNo', minWidth: 160 }, + { label: '运单号', prop: 'waybillNo', minWidth: 160, link: true }, { label: '车号', prop: 'vehicleNo', minWidth: 130 }, { label: '发货地址', prop: 'departureAddress', minWidth: 180 }, { label: '到货地址', prop: 'arrivalAddress', minWidth: 180 }, diff --git a/src/utils/settlement-detail-link.js b/src/utils/settlement-detail-link.js new file mode 100644 index 0000000..d218711 --- /dev/null +++ b/src/utils/settlement-detail-link.js @@ -0,0 +1,51 @@ +import { getList as getReceivablePayableDetailList } from '@/api/settlement/receivable-payable-detail'; +import { getList as getWaybillList } from '@/api/business/waybill-manage'; + +// 结算明细的「单据号」是应收应付明细单据号(应收 YS…/应付 YF…),按结算类型落到对应菜单页 +const SETTLEMENT_DETAIL_PATHS = { + receivable: '/settlement/receivable-detail', + payable: '/settlement/payable-detail', +}; + +const unwrapPage = response => { + const body = response?.data || response || {}; + return body?.data || body; +}; + +const firstRecordId = data => (Array.isArray(data) ? data : data?.records || [])[0]?.id || ''; + +export const settlementDetailPath = settlementType => + SETTLEMENT_DETAIL_PATHS[settlementType] || SETTLEMENT_DETAIL_PATHS.payable; + +/** + * 结算明细行「单据号」对应的应收应付明细ID:已落库的明细自带 sourceDetailId,未落库的行按单据号回查。 + */ +export const resolveReceivablePayableDetailId = async (row = {}, settlementType) => { + if (row.sourceDetailId) return row.sourceDetailId; + if (!row.documentNo) return ''; + try { + const data = unwrapPage( + await getReceivablePayableDetailList(1, 1, { + documentNo: row.documentNo, + settlementType, + }) + ); + return firstRecordId(data); + } catch (error) { + return ''; + } +}; + +/** + * 结算明细行「运单号」对应的运单ID:总单来源的明细没有 waybillId(运单号列存的是总单号),按运单号回查。 + */ +export const resolveWaybillId = async (row = {}) => { + if (row.waybillId) return row.waybillId; + if (!row.waybillNo) return ''; + try { + const data = unwrapPage(await getWaybillList(1, 1, { waybillNo: row.waybillNo })); + return firstRecordId(data); + } catch (error) { + return ''; + } +}; diff --git a/src/views/settlement/components/formal-settlement-editor.vue b/src/views/settlement/components/formal-settlement-editor.vue index bdaee89..b9d29d3 100644 --- a/src/views/settlement/components/formal-settlement-editor.vue +++ b/src/views/settlement/components/formal-settlement-editor.vue @@ -259,7 +259,14 @@ show-overflow-tooltip >