From 40987f843e458aa67694be30dccde1a3b920085e Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期一, 02 十一月 2026 14:01:45 +0800
Subject: [PATCH] 已收金额,未收金额钻取数据列表

---
 src/views/project/statistics/chargeStatistics/index.vue |  149 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 145 insertions(+), 4 deletions(-)

diff --git a/src/views/project/statistics/chargeStatistics/index.vue b/src/views/project/statistics/chargeStatistics/index.vue
index 7503d9d..7de8654 100644
--- a/src/views/project/statistics/chargeStatistics/index.vue
+++ b/src/views/project/statistics/chargeStatistics/index.vue
@@ -83,8 +83,20 @@
       <el-table-column label="搴忓彿" align="center" prop="id" width="80" />
       <el-table-column label="鍖婚櫌鍚嶇О" align="center" prop="hospitalname" show-overflow-tooltip width="260" />
       <el-table-column label="搴旀敹閲戦" align="center" prop="organcharge" width="160" :formatter="amountFormatter" />
-      <el-table-column label="宸叉敹閲戦" align="center" prop="amount" width="160" :formatter="amountFormatter" />
-      <el-table-column label="鏈敹閲戦" align="center" prop="nonpayment" width="160" :formatter="amountFormatter" />
+      <el-table-column label="宸叉敹閲戦" align="center" prop="amount" width="160">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleDetail(scope.row, '1')">{{
+            amountFormatter(scope.row, null, scope.row.amount)
+          }}</el-button>
+        </template>
+      </el-table-column>
+      <el-table-column label="鏈敹閲戦" align="center" prop="nonpayment" width="160">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleDetail(scope.row, '0')">{{
+            amountFormatter(scope.row, null, scope.row.nonpayment)
+          }}</el-button>
+        </template>
+      </el-table-column>
     </el-table>
 
     <div style="margin: 10px;text-align: right;">
@@ -92,6 +104,69 @@
         鍏� <span style="color:#1890FF ;">{{ total }}</span> 鏉℃暟鎹�
       </div>
     </div>
+
+    <!-- 宸叉敹 / 鏈敹閲戦鏄庣粏 -->
+    <el-dialog
+      :title="detailTitle"
+      :visible.sync="detailOpen"
+      width="1100px"
+      append-to-body
+      :close-on-click-modal="false"
+    >
+      <el-table
+        v-loading="detailLoading"
+        border
+        :data="detailList"
+        max-height="520"
+        show-summary
+        :summary-method="getDetailSummaries"
+      >
+        <el-table-column type="index" label="搴忓彿" width="55" align="center" />
+        <el-table-column label="妗堜緥鏃堕棿" width="110" align="center">
+          <template slot-scope="scope">
+            {{ parseTime(scope.row.donatetime, "{y}-{m}-{d}") }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="donorname" label="鎹愮尞鑰�" width="100" align="center" />
+        <el-table-column prop="organname" label="鍣ㄥ畼鍚嶇О" width="100" align="center" />
+        <el-table-column prop="name" label="鍙椾綋濮撴皬" width="100" align="center" />
+        <el-table-column
+          prop="caseno"
+          label="鍣ㄥ畼鍒嗛厤缂栧彿"
+          min-width="140"
+          align="center"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          prop="organcharge"
+          label="搴旀敹閲戦"
+          width="120"
+          align="center"
+          :formatter="amountFormatter"
+        />
+        <el-table-column
+          prop="amount"
+          label="宸叉敹閲戦"
+          width="120"
+          align="center"
+          :formatter="amountFormatter"
+        />
+        <el-table-column
+          prop="nonpayment"
+          label="鏈敹閲戦"
+          width="120"
+          align="center"
+          :formatter="amountFormatter"
+        />
+      </el-table>
+      <pagination
+        v-show="detailTotal > 0"
+        :total="detailTotal"
+        :page.sync="detailQuery.pageNum"
+        :limit.sync="detailQuery.pageSize"
+        @pagination="getDetailList"
+      />
+    </el-dialog>
 
     <!-- 娣诲姞鎴栦慨鏀瑰灞炵‘璁ゅ璇濇 -->
   </div>
@@ -106,6 +181,7 @@
   listbxiaostatistics,
   listjixstatistics,
   listanlstatistics,
+  getChargeStatisticsDetail,
   exportChargeStatistics
 } from "@/api/project/statistics";
 
@@ -222,7 +298,21 @@
       //鏄惁鏄剧ず纭鐧昏琛�
       isShowConfirmationDialog: false,
       //纭鐧昏琛╰itle
-      confirmationTitle: ""
+      confirmationTitle: "",
+      // 宸叉敹/鏈敹閲戦鏄庣粏閽诲彇
+      detailOpen: false,
+      detailLoading: false,
+      detailTitle: "",
+      detailList: [],
+      detailTotal: 0,
+      detailQuery: {
+        pageNum: 1,
+        pageSize: 10,
+        pabegtime: "",
+        paendtime: "",
+        pahospitalname: "",
+        pachargestate: ""
+      }
     };
   },
   //鐩戝惉灞炴�� 绫讳技浜巇ata姒傚康
@@ -260,6 +350,57 @@
         .catch(() => {
           this.loading = false;
         });
+    },
+    /** 鐐瑰嚮宸叉敹/鏈敹閲戦锛屾煡璇㈣鍖婚櫌鏄庣粏 */
+    handleDetail(row, chargeState) {
+      this.detailQuery = {
+        pageNum: 1,
+        pageSize: 10,
+        pabegtime: this.queryParams.pabegtime,
+        paendtime: this.queryParams.paendtime,
+        pahospitalname: row.hospitalname,
+        pachargestate: chargeState
+      };
+      this.detailTitle =
+        (row.hospitalname || "") +
+        " - " +
+        (chargeState === "1" ? "宸叉敹閲戦鏄庣粏" : "鏈敹閲戦鏄庣粏");
+      this.detailOpen = true;
+      this.getDetailList();
+    },
+    /** 鏌ヨ鏄庣粏鍒楄〃 */
+    getDetailList() {
+      this.detailLoading = true;
+      getChargeStatisticsDetail(this.detailQuery)
+        .then(res => {
+          this.detailList = res.rows || [];
+          this.detailTotal = res.total || 0;
+        })
+        .finally(() => {
+          this.detailLoading = false;
+        });
+    },
+    /** 鏄庣粏鍚堣 */
+    getDetailSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      const moneyProps = ["organcharge", "amount", "nonpayment"];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "鍚堣";
+          return;
+        }
+        if (moneyProps.indexOf(column.property) === -1) {
+          sums[index] = "";
+          return;
+        }
+        const total = data.reduce((prev, item) => {
+          const value = Number(item[column.property]);
+          return prev + (isNaN(value) ? 0 : value);
+        }, 0);
+        sums[index] = total.toFixed(2);
+      });
+      return sums;
     },
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
@@ -359,7 +500,7 @@
   //鐢熷懡鍛ㄦ湡 - 鍒涘缓瀹屾垚锛堝彲浠ヨ闂綋鍓峵his瀹炰緥锛�
   created() {
     //鑾峰彇鍒楄〃
-    this.getList();
+    //this.getList();
   }
   // //鐢熷懡鍛ㄦ湡 - 鎸傝浇瀹屾垚锛堝彲浠ヨ闂瓺OM鍏冪礌锛�
   //    mounted() {},

--
Gitblit v1.9.3