diff --git a/src/views/settlement/receivable-payable-detail.vue b/src/views/settlement/receivable-payable-detail.vue index 6f19b7f..f24f56d 100644 --- a/src/views/settlement/receivable-payable-detail.vue +++ b/src/views/settlement/receivable-payable-detail.vue @@ -1067,7 +1067,8 @@ import { formatContractOptionLabel } from '@/utils/contract'; import { isTierUnitPrice, isUnitPriceAdjustable } from '@/utils/settlement-adjust-rule'; import { downloadXls } from '@/utils/util'; import { createSettlementTransfer } from '@/utils/settlement-transfer'; -import { settlementListPath } from '@/utils/settlement-menu'; +import { settlementBillLabel, settlementListPath } from '@/utils/settlement-menu'; +import { getList as getFormalSettlementList } from '@/api/settlement/formalSettlement'; import { contractApprovalStatusOptions, contractCategoryOptions, @@ -1921,8 +1922,9 @@ export default { this.openSettlementDetail('/settlement/pre-settlement', row.preSettlementNo); return; } - if (this.settlementType === 'payable' && column.prop === 'formalSettlementNo') { - this.openSettlementDetail('/settlement/payment-settlement', row.formalSettlementNo); + // 正式结算单号:跳转付款/收款结算单表单页并打开详情(与开票申请等入口一致) + if (column.prop === 'formalSettlementNo') { + this.openFormalSettlementDetail(row.formalSettlementNo); return; } this.openDetailDialog(row); @@ -1934,6 +1936,42 @@ export default { } this.$router.push({ path, query: { detailNo } }); }, + async openFormalSettlementDetail(formalSettlementNo) { + const normalizedNo = String(formalSettlementNo || '') + .split(/[、,,]/) + .map(item => item.trim()) + .find(Boolean); + if (!normalizedNo) { + this.$message.info('当前记录未关联结算单详情'); + return; + } + try { + const data = this.unwrapPage( + await getFormalSettlementList(1, 10, { formalSettlementNo: normalizedNo }) + ); + const row = (data.records || []).find( + item => String(item.formalSettlementNo || '').trim() === normalizedNo + ); + if (!row?.id) { + this.$message.warning('未找到对应的正式结算单'); + return; + } + const settlementType = row.settlementType || this.settlementType || 'payable'; + const listPath = settlementListPath(settlementType); + await this.$router.push({ + path: `${listPath}/form`, + query: { + mode: 'view', + id: row.id, + settlementType, + listPath, + name: `查看${settlementBillLabel(settlementType)}`, + }, + }); + } catch (error) { + this.$message.error('正式结算单详情加载失败'); + } + }, async openRouteDetail(detailId = this.$route.query.detailId) { // 结算明细点「单据号」会带 detailId 跳到本页;只有当前停在应收/应付明细页时才自动展开详情 const routePath = diff --git a/src/views/system/mp-user.vue b/src/views/system/mp-user.vue index 651ea35..af11263 100644 --- a/src/views/system/mp-user.vue +++ b/src/views/system/mp-user.vue @@ -66,17 +66,21 @@ />