diff --git a/src/views/authority/role.vue b/src/views/authority/role.vue index f17267c..3a6cce2 100644 --- a/src/views/authority/role.vue +++ b/src/views/authority/role.vue @@ -6,6 +6,7 @@ :data="data" ref="crud" v-model="form" + v-model:page="page" :permission="permissionList" :before-open="beforeOpen" @row-del="rowDel" @@ -729,7 +730,9 @@ export default { onLoad(page, params = {}) { this.loading = true; getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { - this.data = res.data.data; + const data = res.data.data || {}; + this.data = data.records || []; + this.page.total = data.total || 0; this.loading = false; this.selectionClear(); }); 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 @@ />