From 79678b7a83c996193fcefd284c972475af55c9d4 Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期一, 02 十一月 2026 16:12:22 +0800
Subject: [PATCH] 回款统计样式调整
---
src/views/project/statistics/chargeStatistics/index.vue | 376 +++++++++++++++++++++++++++++++++++------------------
1 files changed, 250 insertions(+), 126 deletions(-)
diff --git a/src/views/project/statistics/chargeStatistics/index.vue b/src/views/project/statistics/chargeStatistics/index.vue
index c12a510..826eacf 100644
--- a/src/views/project/statistics/chargeStatistics/index.vue
+++ b/src/views/project/statistics/chargeStatistics/index.vue
@@ -6,35 +6,35 @@
:model="queryParams"
ref="queryForm"
:inline="true"
- label-width="70px"
+ v-show="showSearch"
+ label-width="80px"
>
<el-row :gutter="8">
<el-col :span="8">
- <el-form-item label="鍖婚櫌鍚嶇О">
- <org-selecter
- ref="orgSelecter"
- :org-type="'4'"
- v-model="queryParams.pahospitalno"
+ <el-form-item label="妗堜緥鏃堕棿">
+ <el-date-picker
+ v-model="selecttime"
+ type="daterange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ value-format="yyyy-MM-dd"
+ style="width: 220px"
+ @change="getTimeList"
/>
</el-form-item>
</el-col>
- <el-col :span="12">
- <el-form-item label="缁熻鏃ユ湡">
- <el-date-picker
- style="width: 100%"
- v-model="selecttime"
- type="monthrange"
- range-separator="鑷�"
- start-placeholder="寮�濮嬫湀浠�"
- end-placeholder="缁撴潫鏈堜唤"
- value-format="yyyy-MM-dd"
- @change="getTimeList"
- >
- </el-date-picker>
+ <el-col :span="7">
+ <el-form-item label="鍖婚櫌鍚嶇О">
+ <el-input
+ v-model="queryParams.pahospitalname"
+ placeholder="璇疯緭鍏ュ尰闄㈠悕绉�"
+ clearable
+ size="small"
+ @keyup.enter.native="handleQuery"
+ />
</el-form-item>
</el-col>
- </el-row>
- <el-row :gutter="8">
<el-col :span="6">
<el-form-item>
<el-button
@@ -52,7 +52,24 @@
</el-row>
</el-form>
- <!--<el-table v-loading="loading" border :data="donatebaseinfoList"> -->
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="mini"
+ :loading="exportLoading"
+ @click="handleExport"
+ >瀵煎嚭</el-button
+ >
+ </el-col>
+ <right-toolbar
+ :showSearch.sync="showSearch"
+ @queryTable="getList"
+ ></right-toolbar>
+ </el-row>
+
<el-table
v-loading="loading"
:data="jxidata"
@@ -63,34 +80,21 @@
: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="receivemonth" />
- <el-table-column label="鍖婚櫌鍚嶇О" align="center" prop="hospitalname">
- </el-table-column>
- <el-table-column label="宸叉敹閲戦" align="center" prop="amount">
- </el-table-column>
- <el-table-column label="鏈敹閲戦" align="center" prop="nonpayment">
- </el-table-column>
- <el-table-column label="搴旀敹閲戦" align="center" prop="organcharge">
- </el-table-column>
-
- <el-table-column
- label="鎿嶄綔"
- align="center"
- class-name="small-padding fixed-width"
- fixed="right"
- >
+ <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">
<template slot-scope="scope">
- <!-- v-if="scope.row.recordstate==2"
- -->
- <el-button
- size="mini"
- type="text"
- icon="el-icon-edit"
- >璇存槑</el-button
- >
+ <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>
@@ -100,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>
@@ -113,7 +180,9 @@
listsfeistatistics,
listbxiaostatistics,
listjixstatistics,
- listanlstatistics
+ listanlstatistics,
+ getChargeStatisticsDetail,
+ exportChargeStatistics
} from "@/api/project/statistics";
import { listUser } from "@/api/project/organization";
@@ -139,7 +208,7 @@
countyname: "",
cuuntry: "",
- selecttime: "",
+ selecttime: [],
reportervalue: "",
reportlist: [
{ label: "鏈敹娆�", value: "0" },
@@ -207,7 +276,13 @@
// 鑾峰彇缁勭粐鍚嶇О鏃堕棿鑼冨洿
daterangeReporttime: [],
// 鏌ヨ鍙傛暟
- queryParams: {},
+ queryParams: {
+ pageNum: 1,
+ pageSize: 20,
+ pabegtime: "",
+ paendtime: "",
+ pahospitalname: ""
+ },
// 琛ㄥ崟鍙傛暟
form: {},
@@ -223,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姒傚康
@@ -246,15 +335,93 @@
return Arr;
},
- /** 鏌ヨ鎹愮尞鍩虹鍒楄〃 */
+ /** 鏌ヨ鏀舵缁熻 */
getList() {
- listsfeistatistics(this.queryParams).then(res => {
- this.jxidata = res.rows;
- this.jxidata.forEach(($obj, $index) => {
- $obj.id = $index + 1;
+ this.loading = true;
+ listsfeistatistics(this.queryParams)
+ .then(res => {
+ this.jxidata = res.rows || [];
+ this.jxidata.forEach(($obj, $index) => {
+ $obj.id = $index + 1;
+ });
+ this.total = res.total;
+ this.loading = false;
+ })
+ .catch(() => {
+ this.loading = false;
});
- this.total = res.total;
+ },
+ /** 鐐瑰嚮宸叉敹/鏈敹閲戦锛屾煡璇㈣鍖婚櫌鏄庣粏 */
+ 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() {
+ const queryParams = {
+ pabegtime: this.queryParams.pabegtime,
+ paendtime: this.queryParams.paendtime,
+ pahospitalname: this.queryParams.pahospitalname
+ };
+ this.$modal
+ .confirm("鏄惁纭瀵煎嚭褰撳墠绛涢�夋潯浠朵笅鐨勬敹娆剧粺璁℃暟鎹紵")
+ .then(() => {
+ this.exportLoading = true;
+ return exportChargeStatistics(queryParams);
+ })
+ .then(response => {
+ this.$download.name(response.msg);
+ this.exportLoading = false;
+ })
+ .catch(() => {
+ this.exportLoading = false;
+ });
},
// 琛ㄥ崟閲嶇疆
@@ -268,82 +435,39 @@
},
/** 閲嶇疆鎸夐挳鎿嶄綔 */
resetQuery() {
- this.daterangeReporttime = [];
-
- this.reportervalue = "";
-
- this.queryParams = {};
this.selecttime = [];
- this.getTimeList();
- this.searchAddress = {
- sheng: "",
- shi: "",
- qu: "",
- organizationname: null
+ this.queryParams = {
+ pageNum: 1,
+ pageSize: 20,
+ pabegtime: "",
+ paendtime: "",
+ pahospitalname: ""
};
-
this.resetForm("queryForm");
- this.handleQuery();
+ this.getList();
},
- getTimeList(e) {
- if (this.selecttime != 0) {
- this.queryParams.pabegtime = this.selecttime[0];
- this.queryParams.paendtime = this.selecttime[1];
- // if (this.queryParams.paendtime == this.queryParams.pabegtime) {
- let num = Number(this.queryParams.paendtime.slice(5, 7));
- if (num < 9) {
- let mon = Number(this.queryParams.paendtime.slice(6, 7));
- this.queryParams.paendtime =
- this.queryParams.paendtime.slice(0, 5) +
- "0" +
- (mon + 1) +
- "-" +
- "01" +
- " " +
- "00" +
- ":" +
- "00" +
- ":" +
- "00";
- }
- // this.queryParams.paendtime=this.queryParams.paendtime.slice(0,5)骞�
- else if (num >= 10) {
- this.queryParams.paendtime =
- this.queryParams.paendtime.slice(0, 5) +
- (num + 1) +
- "-" +
- "01" +
- " " +
- "00" +
- ":" +
- "00" +
- ":" +
- "00";
- } else {
- this.queryParams.paendtime =
- this.queryParams.paendtime.slice(0, 5) +
- "10" +
- "-" +
- "01" +
- " " +
- "00" +
- ":" +
- "00" +
- ":" +
- "00";
- }
- this.queryParams.pabegtime =
- this.queryParams.pabegtime + " " + "00" + ":" + "00" + ":" + "00";
- // }
+ /** 鏃ユ湡鑼冨洿锛氭渚嬫椂闂达紝寮�濮� 00:00:00锛岀粨鏉� 23:59:59 */
+ getTimeList() {
+ if (this.selecttime && this.selecttime.length === 2) {
+ this.queryParams.pabegtime = this.selecttime[0] + " 00:00:00";
+ this.queryParams.paendtime = this.selecttime[1] + " 23:59:59";
} else {
- // this.queryParams.pabegtime = "1998-01-01 00:00:00";
- // this.queryParams.paendtime = "2998-01-01 00:00:00";
+ this.queryParams.pabegtime = "";
+ this.queryParams.paendtime = "";
}
+ },
+ /** 閲戦鏄剧ず锛氫繚鐣欎袱浣嶅皬鏁帮紝0 鏄剧ず 0.00 */
+ amountFormatter(row, column, cellValue) {
+ if (cellValue === null || cellValue === undefined || cellValue === "") {
+ return "0.00";
+ }
+ const num = Number(cellValue);
+ return Number.isFinite(num) ? num.toFixed(2) : "0.00";
},
getSummaries(param) {
const { columns, data } = param;
const sums = [];
- var columnnames = ["receivemonth", "hospitalname"];
+ var columnnames = ["hospitalname"];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = "鍚堣";
@@ -376,7 +500,7 @@
//鐢熷懡鍛ㄦ湡 - 鍒涘缓瀹屾垚锛堝彲浠ヨ闂綋鍓峵his瀹炰緥锛�
created() {
//鑾峰彇鍒楄〃
- this.getList();
+ //this.getList();
}
// //鐢熷懡鍛ㄦ湡 - 鎸傝浇瀹屾垚锛堝彲浠ヨ闂瓺OM鍏冪礌锛�
// mounted() {},
--
Gitblit v1.9.3