From ad5e7a527167a86ca7969e874df9950a5c4e2ff9 Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期五, 30 十月 2026 09:57:41 +0800
Subject: [PATCH] 器官收费
---
src/views/project/statistics/applyStatistics/index.vue | 155 +++++++++++++++++++++++++++++++++++----------------
1 files changed, 106 insertions(+), 49 deletions(-)
diff --git a/src/views/project/statistics/applyStatistics/index.vue b/src/views/project/statistics/applyStatistics/index.vue
index b5e3653..a534727 100644
--- a/src/views/project/statistics/applyStatistics/index.vue
+++ b/src/views/project/statistics/applyStatistics/index.vue
@@ -24,21 +24,6 @@
>
</el-date-picker>
</el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="璐圭敤绫诲瀷">
- <el-select
- v-model="queryParams.paexpensetype"
- placeholder="璇烽�夋嫨璐圭敤绫诲瀷"
- >
- <el-option
- v-for="item in reportlist"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </el-form-item>
</el-col>
<el-col :span="6">
<el-form-item align="left" label="鎶ラ攢閮ㄩ棬" prop="padeptno">
@@ -111,39 +96,48 @@
></right-toolbar>
</el-row>
- <!--<el-table v-loading="loading" border :data="donatebaseinfoList"> -->
- <el-table
- :data="jxidata"
- ref="table"
- border
- max-height="700"
- highlight-current-row
- :summary-method="getSummaries"
- show-summary
- >
- <el-table-column label="搴忓彿" align="center" prop="id" width="50" />
- <el-table-column label="缁熻鏈堜唤" align="center" prop="applymonth" />
- <el-table-column label="涓氬姟缁�" align="center" prop="deptmentName" />
- <el-table-column label="涓撹亴浜哄憳" align="center" prop="username" />
- <el-table-column label="鎶ラ攢鎬婚噾棰�" align="center" prop="amount" width="180" :formatter="amountFormatter" />
- <el-table-column label="涓撳璐�" align="center" prop="expertfee" width="160" :formatter="amountFormatter" />
- <el-table-column label="浼︾悊涓撳璐�" align="center" prop="ethicalistfee" width="160" :formatter="amountFormatter" />
- <el-table-column label="鍖诲鎴愭湰" align="center" prop="medicalcost" width="160" :formatter="amountFormatter" />
- <el-table-column label="鍔炲叕璐�" align="center" prop="officecost" width="160" :formatter="amountFormatter" />
- <el-table-column label="宸梾璐�" align="center" prop="reimcost" width="160" :formatter="amountFormatter" />
+ <el-tabs v-model="activeTab">
+ <el-tab-pane label="鎸変笟鍔$粍" name="dept">
+ <el-table :data="deptData" ref="deptTable" border max-height="700" highlight-current-row
+ :summary-method="getDeptSummaries" show-summary>
+ <el-table-column label="搴忓彿" align="center" prop="id" width="50" />
+ <el-table-column label="涓氬姟缁�" align="center" prop="deptname" />
+ <el-table-column label="鎶ラ攢鎬婚噾棰�" align="center" prop="amount" width="180" :formatter="amountFormatter" />
+ <el-table-column label="涓撳璐�" align="center" prop="expertfee" width="160" :formatter="amountFormatter" />
+ <el-table-column label="浼︾悊涓撳璐�" align="center" prop="ethicalistfee" width="160" :formatter="amountFormatter" />
+ <el-table-column label="鍖诲鎴愭湰" align="center" prop="medicalcost" width="160" :formatter="amountFormatter" />
+ <el-table-column label="鍔炲叕璐�" align="center" prop="officecost" width="160" :formatter="amountFormatter" />
+ <el-table-column label="宸梾璐�" align="center" prop="reimcost" width="160" :formatter="amountFormatter" />
+ </el-table>
+ </el-tab-pane>
- <!-- <el-table-column label="鎿嶄綔" align="center">
- <template slot-scope="scope">
- <el-button size="mini" type="text" icon="el-icon-edit"
- >鏄庣粏</el-button
- >
- </template>
- </el-table-column> -->
- </el-table>
+ <el-tab-pane label="鎸変汉鍛�" name="person">
+ <el-table :data="jxidata" ref="personTable" border max-height="700" highlight-current-row
+ :summary-method="getSummaries" show-summary>
+ <el-table-column label="搴忓彿" align="center" prop="id" width="50" />
+ <el-table-column label="涓氬姟缁�" align="center" prop="deptmentName" />
+ <el-table-column label="涓撹亴浜哄憳" align="center" prop="username" />
+ <el-table-column label="鎶ラ攢鎬婚噾棰�" align="center" prop="amount" width="180" :formatter="amountFormatter" />
+ <el-table-column label="涓撳璐�" align="center" prop="expertfee" width="160" :formatter="amountFormatter" />
+ <el-table-column label="浼︾悊涓撳璐�" align="center" prop="ethicalistfee" width="160" :formatter="amountFormatter" />
+ <el-table-column label="鍖诲鎴愭湰" align="center" prop="medicalcost" width="160" :formatter="amountFormatter" />
+ <el-table-column label="鍔炲叕璐�" align="center" prop="officecost" width="160" :formatter="amountFormatter" />
+ <el-table-column label="宸梾璐�" align="center" prop="reimcost" width="160" :formatter="amountFormatter" />
+
+ <!-- <el-table-column label="鎿嶄綔" align="center">
+ <template slot-scope="scope">
+ <el-button size="mini" type="text" icon="el-icon-edit"
+ >鏄庣粏</el-button
+ >
+ </template>
+ </el-table-column> -->
+ </el-table>
+ </el-tab-pane>
+ </el-tabs>
<div style="margin: 10px;text-align: right;">
<div>
- 鍏� <span style="color:#1890FF ;">{{ total }}</span> 鏉℃暟鎹�
+ 鍏� <span style="color:#1890FF ;">{{ tableTotal }}</span> 鏉℃暟鎹�
</div>
</div>
@@ -160,7 +154,8 @@
listbxiaostatistics,
listjixstatistics,
listanlstatistics,
- exportExpenseStatistics
+ exportExpenseStatistics,
+ exportExpenseDeptStatistics
} from "@/api/project/statistics";
import { listUser } from "@/api/project/organization";
@@ -252,6 +247,10 @@
donatebaseinfoList: [],
// 鎹愮尞鍩虹琛ㄦ牸鏁版嵁
jxidata: [],
+ // 褰撳墠椤电锛歞ept=鎸変笟鍔$粍锛宲erson=鎸変汉鍛�
+ activeTab: "dept",
+ // 鎸変笟鍔$粍鑱氬悎鏁版嵁
+ deptData: [],
// 寮瑰嚭灞傛爣棰�
title: "",
// 鏄惁鏄剧ず寮瑰嚭灞�
@@ -282,7 +281,11 @@
};
},
//鐩戝惉灞炴�� 绫讳技浜巇ata姒傚康
- computed: {},
+ computed: {
+ tableTotal() {
+ return this.activeTab === "dept" ? this.deptData.length : this.jxidata.length;
+ }
+ },
activated() {},
mounted() {},
@@ -341,6 +344,36 @@
this.jxidata.forEach(($obj, $index) => {
$obj.id = $index + 1;
});
+ this.buildDeptData();
+ });
+ },
+ /** 鎸変笟鍔$粍鑱氬悎锛�6 涓噾棰濆垎鍒眰鍜� */
+ buildDeptData() {
+ const map = new Map();
+ this.jxidata.forEach(row => {
+ const key = row.deptmentno || row.deptmentName || "鏈垎缁�";
+ if (!map.has(key)) {
+ map.set(key, {
+ deptname: row.deptmentName || "鏈垎缁�",
+ amount: 0,
+ expertfee: 0,
+ ethicalistfee: 0,
+ medicalcost: 0,
+ officecost: 0,
+ reimcost: 0
+ });
+ }
+ const item = map.get(key);
+ item.amount += Number(row.amount) || 0;
+ item.expertfee += Number(row.expertfee) || 0;
+ item.ethicalistfee += Number(row.ethicalistfee) || 0;
+ item.medicalcost += Number(row.medicalcost) || 0;
+ item.officecost += Number(row.officecost) || 0;
+ item.reimcost += Number(row.reimcost) || 0;
+ });
+ this.deptData = Array.from(map.values()).map((item, index) => {
+ item.id = index + 1;
+ return item;
});
},
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
@@ -352,11 +385,15 @@
pauserno: this.queryParams.pauserno,
paexpensetype: this.queryParams.paexpensetype
};
+ const exportApi =
+ this.activeTab === "dept"
+ ? exportExpenseDeptStatistics
+ : exportExpenseStatistics;
this.$modal
- .confirm("鏄惁纭瀵煎嚭褰撳墠绛涢�夋潯浠朵笅鐨勮垂鐢ㄧ粺璁℃暟鎹紵")
+ .confirm("鏄惁纭瀵煎嚭褰撳墠鍒楄〃鐨勮垂鐢ㄧ粺璁℃暟鎹紵")
.then(() => {
this.exportLoading = true;
- return exportExpenseStatistics(queryParams);
+ return exportApi(queryParams);
})
.then(response => {
this.$download.name(response.msg);
@@ -412,7 +449,7 @@
getSummaries(param) {
const { columns, data } = param;
const sums = [];
- var columnnames = ["applymonth", "deptmentName", "username"];
+ var columnnames = ["deptmentName", "username"];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = "鍚堣";
@@ -440,6 +477,26 @@
}
});
return sums;
+ },
+ /** 鎸変笟鍔$粍琛ㄦ牸鍚堣 */
+ getDeptSummaries(param) {
+ const { columns, data } = param;
+ const sums = [];
+ columns.forEach((column, index) => {
+ if (index === 0) {
+ sums[index] = "鍚堣";
+ return;
+ }
+ if (column.property === "deptname") {
+ return;
+ }
+ const total = data.reduce(
+ (prev, item) => prev + (Number(item[column.property]) || 0),
+ 0
+ );
+ sums[index] = total === 0 ? "" : Number(total).toFixed(2);
+ });
+ return sums;
}
},
--
Gitblit v1.9.3