From a68195121e02f4294542a11ac96e48047f0fde24 Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期三, 28 十月 2026 18:09:09 +0800
Subject: [PATCH] 绩效科室
---
src/views/project/statistics/performanceStaristics/index.vue | 140 +++++++++++++++++++++++++++++++++-------------
1 files changed, 99 insertions(+), 41 deletions(-)
diff --git a/src/views/project/statistics/performanceStaristics/index.vue b/src/views/project/statistics/performanceStaristics/index.vue
index f2b1ac5..a93897b 100644
--- a/src/views/project/statistics/performanceStaristics/index.vue
+++ b/src/views/project/statistics/performanceStaristics/index.vue
@@ -25,14 +25,7 @@
</el-date-picker>
</el-form-item>
</el-col>
- <el-col :span="5">
- <el-form-item label="缁╂晥绫诲瀷">
- <el-radio-group v-model="queryParams.pabonustype">
- <el-radio v-for="item in reporttype" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :span="5">
+ <el-col :span="10">
<el-form-item label="缁╂晥浜哄憳" prop="pauserno">
<el-input v-model="queryParams.pausername" placeholder="璇疯緭鍏ュ鍚�" clearable size="small"
@keyup.enter.native="handleQuery" />
@@ -55,24 +48,41 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
- <!--<el-table v-loading="loading" border :data="donatebaseinfoList"> -->
- <el-table v-loading="loading" :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="100">
- </el-table-column>
- <el-table-column label="缁熻鏈堜唤" align="center" prop="bonusmonth" />
- <el-table-column label="绉戝涓氬姟缁�" align="center" prop="deptName"> </el-table-column>
- <el-table-column label="缁╂晥浜哄憳/鍖婚櫌" align="center" prop="beneficiaryname" />
- <el-table-column label="缁╂晥閲戦" align="center" prop="amount" :formatter="amountFormatter" />
- <!-- <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" fixed="right">
- <template slot-scope="scope">
- <el-button size="mini" type="text" icon="el-icon-edit">鏄庣粏</el-button>
- </template>
- </el-table-column> -->
- </el-table>
+ <el-tabs v-model="activeTab">
+ <el-tab-pane label="鎸変笟鍔$粍" name="dept">
+ <el-table v-loading="loading" :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="80" />
+ <el-table-column label="涓氬姟缁�" align="center" prop="deptname" />
+ <el-table-column label="缁╂晥閲戦" align="center" prop="amount" :formatter="amountFormatter" />
+ <el-table-column label="鏈堝害缁╂晥" align="center" prop="mamount" :formatter="amountFormatter" />
+ <el-table-column label="瀛e害缁╂晥" align="center" prop="samount" :formatter="amountFormatter" />
+ <el-table-column label="骞村害缁╂晥" align="center" prop="yamount" :formatter="amountFormatter" />
+ </el-table>
+ </el-tab-pane>
+
+ <el-tab-pane label="鎸変汉鍛�" name="person">
+ <el-table v-loading="loading" :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="80" />
+ <el-table-column label="涓氬姟缁�" align="center" prop="deptName" />
+ <el-table-column label="缁╂晥浜哄憳/鍖婚櫌" align="center" prop="beneficiaryname" />
+ <el-table-column label="缁╂晥閲戦" align="center" prop="amount" :formatter="amountFormatter" />
+ <el-table-column label="鏈堝害缁╂晥" align="center" prop="mamount" :formatter="amountFormatter" />
+ <el-table-column label="瀛e害缁╂晥" align="center" prop="samount" :formatter="amountFormatter" />
+ <el-table-column label="骞村害缁╂晥" align="center" prop="yamount" :formatter="amountFormatter" />
+ <!-- <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" fixed="right">
+ <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>
@@ -90,7 +100,8 @@
listbxiaostatistics,
listjixstatistics,
listanlstatistics,
- exportPerformanceStatistics
+ exportPerformanceStatistics,
+ exportPerformanceDeptStatistics
} from "@/api/project/statistics";
import { listUser } from "@/api/project/organization";
@@ -120,12 +131,6 @@
selecttime: "",
reportervalue: "",
- reporttype: [
- { label: "鍏ㄩ儴", value: "0" },
- { label: "鏈堝害", value: "68" },
- { label: "瀛e害", value: "69" },
- { label: "骞村害", value: "70" }
- ],
//鐪佸競鍖�
//榛樿鍊艰缃紝鍙负绌�
searchAddress: {
@@ -182,6 +187,10 @@
donatebaseinfoList: [],
// 鎹愮尞鍩虹琛ㄦ牸鏁版嵁
jxidata: [],
+ // 褰撳墠椤电锛歞ept=鎸変笟鍔$粍锛宲erson=鎸変汉鍛�
+ activeTab: "dept",
+ // 鎸変笟鍔$粍鑱氬悎鏁版嵁
+ deptData: [],
// 寮瑰嚭灞傛爣棰�
title: "",
// 鏄惁鏄剧ず寮瑰嚭灞�
@@ -190,7 +199,6 @@
daterangeReporttime: [],
// 鏌ヨ鍙傛暟
queryParams: {
- pabonustype: "0",
pabegtime: null,
paendtime: null,
pausername: "",
@@ -215,7 +223,11 @@
};
},
//鐩戝惉灞炴�� 绫讳技浜巇ata姒傚康
- computed: {},
+ computed: {
+ tableTotal() {
+ return this.activeTab === "dept" ? this.deptData.length : this.jxidata.length;
+ }
+ },
activated() { },
mounted() { },
@@ -256,16 +268,13 @@
return Arr;
},
- /** 缁勮鏌ヨ鍙傛暟锛氭湭閫夋嫨缁熻鏃ユ湡鏃舵煡鍏ㄩ儴锛岀哗鏁堢被鍨嬩负绌烘寜鍏ㄩ儴 */
+ /** 缁勮鏌ヨ鍙傛暟锛氭湭閫夋嫨缁熻鏃ユ湡鏃舵煡鍏ㄩ儴 */
buildQueryParams() {
const query = { ...this.queryParams };
if (!query.pabegtime || !query.paendtime) {
// 鏂� SP 榛樿鍙栬繎 6 涓湀锛岃�岀哗鏁� jxrq 鏁版嵁闆嗕腑鍦� 2023-08~2024-01锛岄粯璁や細鏌ヤ笉鍒�
query.pabegtime = "2000-01-01 00:00:00";
query.paendtime = "2999-12-31 23:59:59";
- }
- if (!query.pabonustype) {
- query.pabonustype = "0";
}
return query;
},
@@ -278,16 +287,46 @@
$obj.id = $index + 1;
});
this.total = res.total;
+ this.buildDeptData();
+ });
+ },
+ /** 鎸変笟鍔$粍鑱氬悎锛氱哗鏁堥噾棰�/鏈堝害/瀛e害/骞村害鍒嗗埆姹傚拰 */
+ buildDeptData() {
+ const map = new Map();
+ this.jxidata.forEach(row => {
+ const key = row.deptId || row.deptName || "鏈垎缁�";
+ if (!map.has(key)) {
+ map.set(key, {
+ deptname: row.deptName || "鏈垎缁�",
+ amount: 0,
+ mamount: 0,
+ samount: 0,
+ yamount: 0
+ });
+ }
+ const item = map.get(key);
+ item.amount += Number(row.amount) || 0;
+ item.mamount += Number(row.mamount) || 0;
+ item.samount += Number(row.samount) || 0;
+ item.yamount += Number(row.yamount) || 0;
+ });
+ this.deptData = Array.from(map.values()).map((item, index) => {
+ item.id = index + 1;
+ return item;
});
},
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
handleExport() {
const queryParams = this.buildQueryParams();
+ const exportApi =
+ this.activeTab === "dept"
+ ? exportPerformanceDeptStatistics
+ : exportPerformanceStatistics;
this.$modal
- .confirm("鏄惁纭瀵煎嚭褰撳墠绛涢�夋潯浠朵笅鐨勭哗鏁堢粺璁℃暟鎹紵")
+ .confirm("鏄惁纭瀵煎嚭褰撳墠鍒楄〃鐨勭哗鏁堢粺璁℃暟鎹紵")
.then(() => {
this.exportLoading = true;
- return exportPerformanceStatistics(queryParams);
+ return exportApi(queryParams);
})
.then(response => {
this.$download.name(response.msg);
@@ -320,7 +359,6 @@
this.queryParams = {
- pabonustype: "0",
pabegtime: null,
paendtime: null,
pausername: "",
@@ -355,7 +393,7 @@
getSummaries(param) {
const { columns, data } = param;
const sums = [];
- var columnnames = ["applymonth", "deptmentName", "username", "deptName", "beneficiaryname"];
+ var columnnames = ["deptName", "beneficiaryname"];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = "鍚堣";
@@ -383,6 +421,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