From 655b0804265c629544ffccecc50a2abdc41e10bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Fri, 27 Mar 2026 15:24:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=94=E6=94=B6=E6=B5=81=E6=B0=B4=E4=B8=AD?= =?UTF-8?q?=E9=97=B4=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_report/models/receivable_flow_report.py | 4 ++++ .../components/yuthon_report/receivable_report.js | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/yuthon_report/models/receivable_flow_report.py b/yuthon_report/models/receivable_flow_report.py index 8df4fff0a..d8f73520a 100644 --- a/yuthon_report/models/receivable_flow_report.py +++ b/yuthon_report/models/receivable_flow_report.py @@ -115,9 +115,11 @@ class ReceivableFlowReport(models.Model): contract_total_unpaid = sum(r.submitted for r in contract_recs) seq += 1 + contract_key = contract.contract_code if (contract and contract.contract_code) else "contract_{}".format(seq) # ==== 合同头行 ==== rows.append({ "row_type": "合同", + "orgHierarchy": [contract_key], "序号": seq, "租金id": "", "合同编号": { @@ -211,6 +213,7 @@ class ReceivableFlowReport(models.Model): # ==== 应收租金行 ==== rows.append({ "row_type": "主", + "orgHierarchy": [contract_key, str(rec.id)], "序号": "", "租金id": rec.id, "合同编号": "", @@ -260,6 +263,7 @@ class ReceivableFlowReport(models.Model): rows.append({ "row_type": "收款", + "orgHierarchy": [contract_key, str(rec.id), "pay_{}".format(ml.id)], "序号": "", "租金id": rec.id, "合同编号": "", diff --git a/yuthon_report/static/src/components/yuthon_report/receivable_report.js b/yuthon_report/static/src/components/yuthon_report/receivable_report.js index 434ef7b5f..34bedc369 100644 --- a/yuthon_report/static/src/components/yuthon_report/receivable_report.js +++ b/yuthon_report/static/src/components/yuthon_report/receivable_report.js @@ -82,6 +82,20 @@ class ReceivableReport extends Component { theme: agGrid.themeMaterial, columnDefs: columns, rowData: [], + // ===== Tree Data 折叠展开 ===== + treeData: true, + getDataPath: (data) => data.orgHierarchy || [], + groupDefaultExpanded: 0, // 默认全部折叠 + autoGroupColumnDef: { + headerName: '合同/明细', + minWidth: 200, + flex: 1.5, + pinned: 'left', + cellRendererParams: { + suppressCount: true, // 不显示子行数量 + }, + }, + // ===== 行样式 ===== rowClassRules: { 'ag-row-new-rent': function(params) { return params.data && params.data.acc_type === 'new';