From 540a487d2dea42bad9a461b454071fa1b93d1daa Mon Sep 17 00:00:00 2001
From: lizhenhua <1075222162@qq.com>
Date: Tue, 2 Dec 2025 10:48:29 +0800
Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E9=85=8D=E7=BD=AE=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=20=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/canteenreport/index.vue | 122 ++++++++++++++++--------
src/views/canteenreport/people.vue | 143 +++++++++++++++++++++++------
2 files changed, 199 insertions(+), 66 deletions(-)
diff --git a/src/views/canteenreport/index.vue b/src/views/canteenreport/index.vue
index bb5ecdab..b101ca42 100644
--- a/src/views/canteenreport/index.vue
+++ b/src/views/canteenreport/index.vue
@@ -2,24 +2,21 @@
-
+
-
-
-
- 查询
+ v-model="dateRange"
+ type="daterange"
+ align="right"
+ unlink-panels
+ range-separator="至"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ format="yyyy-MM-dd"
+ style="width: 340px"
+ :default-time="['00:00:00', '23:59:59']"
+ :picker-options="pickerOptions"
+ >
+ 查询
导出
@@ -208,19 +205,12 @@ import { saveAs } from "file-saver";
export default {
name: "CanteenRecord",
data() {
- const today = new Date();
- const startOfDay = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, "0")}-${String(
- today.getDate()
- ).padStart(2, "0")} 00:00:00`;
- const endOfDay = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, "0")}-${String(
- today.getDate()
- ).padStart(2, "0")} 23:59:59`;
return {
queryParams: {
pageNum: 1,
pageSize: 10,
- startPayTime: startOfDay,
- endPayTime: endOfDay,
+ startPayTime: '',
+ endPayTime: '',
orgId: null,
},
detailType: "",
@@ -237,9 +227,33 @@ export default {
pageNum: 1,
pageSize: 20,
},
+ dateRange: [],
+ pickerOptions: {
+ shortcuts: [
+ {
+ text: '最近一周',
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+ picker.$emit('pick', [start, end]);
+ }
+ },
+ {
+ text: '最近一个月',
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+ picker.$emit('pick', [start, end]);
+ }
+ },
+ ]
+ },
};
},
created() {
+ this.dateRange = this.defaultDateRange();
this.getList();
},
computed: {
@@ -264,6 +278,13 @@ export default {
}
},
methods: {
+ // 默认日期范围:当天
+ defaultDateRange() {
+ const today = new Date();
+ const start = new Date(today.getFullYear(), today.getMonth(), today.getDate());
+ const end = new Date(today.getFullYear(), today.getMonth(), today.getDate());
+ return [start, end];
+ },
exportExcel() {
if (!this.tableData || this.tableData.length === 0) {
this.$message.warning("暂无数据可导出");
@@ -462,25 +483,37 @@ export default {
/** 查询主表 */
getList() {
this.loading = true; // 开启加载
+
+ // 处理日期范围
+ let startTime = '';
+ let endTime = '';
+
+ if (this.dateRange && this.dateRange.length === 2) {
+ const start = new Date(this.dateRange[0]);
+ const end = new Date(this.dateRange[1]);
+ startTime = `${start.getFullYear()}-${String(start.getMonth() + 1).padStart(2, "0")}-${String(
+ start.getDate()
+ ).padStart(2, "0")} 00:00:00`;
+ endTime = `${end.getFullYear()}-${String(end.getMonth() + 1).padStart(2, "0")}-${String(
+ end.getDate()
+ ).padStart(2, "0")} 23:59:59`;
+ }
+
+ this.queryParams.startPayTime = startTime;
+ this.queryParams.endPayTime = endTime;
+
listCanteenRecord(this.queryParams).then((res) => {
this.tableData = res|| [];
this.loading = false;
});
},
handleQuery() {
- if (
- this.queryParams.startPayTime &&
- this.queryParams.endPayTime &&
- this.queryParams.endPayTime < this.queryParams.startPayTime
- ) {
- this.$message.error("结束时间不能早于开始时间");
- return;
- }
this.queryParams.pageNum = 1;
this.getList();
},
resetQuery() {
- this.queryParams = { pageNum: 1, pageSize: 10, startPayTime: null, endPayTime: null, orgId: null };
+ this.queryParams = { pageNum: 1, pageSize: 10, startPayTime: '', endPayTime: '', orgId: null };
+ this.dateRange = this.defaultDateRange();
this.getList();
},
/** 查看详情 */
@@ -522,13 +555,28 @@ export default {
},
/** 获取详情分页数据 */
getDetailList(status) {
+ // 处理日期范围
+ let startTime = '';
+ let endTime = '';
+
+ if (this.dateRange && this.dateRange.length === 2) {
+ const start = new Date(this.dateRange[0]);
+ const end = new Date(this.dateRange[1]);
+ startTime = `${start.getFullYear()}-${String(start.getMonth() + 1).padStart(2, "0")}-${String(
+ start.getDate()
+ ).padStart(2, "0")} 00:00:00`;
+ endTime = `${end.getFullYear()}-${String(end.getMonth() + 1).padStart(2, "0")}-${String(
+ end.getDate()
+ ).padStart(2, "0")} 23:59:59`;
+ }
+
const params = {
conSource: status,
orgName: this.detail.orgName,
pageNum: this.detailParams.pageNum,
pageSize: this.detailParams.pageSize,
- startPayTime: this.queryParams.startPayTime,
- endPayTime: this.queryParams.endPayTime,
+ startPayTime: startTime,
+ endPayTime: endTime,
};
getDetailList(params).then((res) => {
this.detailData = res || [];
diff --git a/src/views/canteenreport/people.vue b/src/views/canteenreport/people.vue
index ef3ade45..02707016 100644
--- a/src/views/canteenreport/people.vue
+++ b/src/views/canteenreport/people.vue
@@ -28,23 +28,20 @@
-
+
-
-
-
+ v-model="dateRange"
+ type="daterange"
+ align="right"
+ unlink-panels
+ range-separator="至"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ format="yyyy-MM-dd"
+ style="width: 340px"
+ :default-time="['00:00:00', '23:59:59']"
+ :picker-options="pickerOptions"
+ >
查询
@@ -171,19 +168,39 @@ import ExcelJS from "exceljs";
import { saveAs } from "file-saver";
export default {
data() {
- const today = new Date();
- const startOfDay = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, "0")}-${String(today.getDate()).padStart(2,"0")} 00:00:00`;
- const endOfDay = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2,"0")}-${String(today.getDate()).padStart(2,"0")} 23:59:59`;
return {
totalConsume: 0, // 消费总额
totalRefund: 0, // 退款总额
selectedOrg: [], // 支持多选
orgOptions:[],
+ dateRange: [],
+ pickerOptions: {
+ shortcuts: [
+ {
+ text: '最近一周',
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+ picker.$emit('pick', [start, end]);
+ }
+ },
+ {
+ text: '最近一个月',
+ onClick(picker) {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+ picker.$emit('pick', [start, end]);
+ }
+ },
+ ]
+ },
queryParams: {
pageNum: 1,
pageSize: 10,
- startPayTime: startOfDay,
- endPayTime: endOfDay,
+ startPayTime: '',
+ endPayTime: '',
orgName: "",
},
detailVisible: false,
@@ -199,10 +216,17 @@ export default {
};
},
created() {
+ this.dateRange = this.defaultDateRange();
this.getList();
this.getTree();
},
methods: {
+ // 默认日期范围:当天
+ defaultDateRange() {
+ const end = new Date();
+ const start = new Date();
+ return [start, end];
+ },
getTree(){
getTree().then(res => {
this.orgOptions = res;
@@ -261,10 +285,6 @@ export default {
tableCellStyle() { return { textAlign: "center" }; },
handleQuery() {
- if(this.queryParams.startPayTime && this.queryParams.endPayTime && this.queryParams.endPayTime < this.queryParams.startPayTime){
- this.$message.error("结束时间不能早于开始时间");
- return;
- }
this.queryParams.pageNum = 1;
this.getList();
},
@@ -281,8 +301,31 @@ export default {
},
getList() {
this.loading = true;
- // 取最后一级 orgId
- this.queryParams.selectedOrg = this.getSelectedOrgIds(); // 二级或三级下的所有 id
+
+ // 处理日期范围
+ let startTime = '';
+ let endTime = '';
+
+ if (this.dateRange && this.dateRange.length === 2) {
+ const start = this.dateRange[0];
+ const end = this.dateRange[1];
+
+ const formatDate = d => {
+ const date = new Date(d);
+ const y = date.getFullYear();
+ const m = String(date.getMonth() + 1).padStart(2, '0');
+ const day = String(date.getDate()).padStart(2, '0');
+ return `${y}-${m}-${day}`;
+ };
+
+ startTime = formatDate(start) + ' 00:00:00';
+ endTime = formatDate(end) + ' 23:59:59';
+ }
+
+ // 取最后一级 orgId
+ this.queryParams.selectedOrg = this.getSelectedOrgIds(); // 二级或三级下的所有 id
+ this.queryParams.startPayTime = startTime;
+ this.queryParams.endPayTime = endTime;
// queryParams.orgPath = this.selectedOrg.join(',');
peoplelistRecord(this.queryParams).then(res => {
this.tableData = res.rows || [];
@@ -296,8 +339,30 @@ export default {
// 获取选中的组织 ID
this.queryParams.selectedOrg = this.getSelectedOrgIds();
+ // 处理日期范围
+ let startTime = '';
+ let endTime = '';
+
+ if (this.dateRange && this.dateRange.length === 2) {
+ const start = this.dateRange[0];
+ const end = this.dateRange[1];
+
+ const formatDate = d => {
+ const date = new Date(d);
+ const y = date.getFullYear();
+ const m = String(date.getMonth() + 1).padStart(2, '0');
+ const day = String(date.getDate()).padStart(2, '0');
+ return `${y}-${m}-${day}`;
+ };
+
+ startTime = formatDate(start) + ' 00:00:00';
+ endTime = formatDate(end) + ' 23:59:59';
+ }
+
// 克隆参数,单独对中文参数进行 encodeURIComponent
const params = { ...this.queryParams };
+ params.startPayTime = startTime;
+ params.endPayTime = endTime;
if (params.custName) {
params.custName = encodeURIComponent(params.custName); // 中文名编码
}
@@ -317,12 +382,32 @@ export default {
},
getDetailList() {
+ // 处理日期范围
+ let startTime = '';
+ let endTime = '';
+
+ if (this.dateRange && this.dateRange.length === 2) {
+ const start = this.dateRange[0];
+ const end = this.dateRange[1];
+
+ const formatDate = d => {
+ const date = new Date(d);
+ const y = date.getFullYear();
+ const m = String(date.getMonth() + 1).padStart(2, '0');
+ const day = String(date.getDate()).padStart(2, '0');
+ return `${y}-${m}-${day}`;
+ };
+
+ startTime = formatDate(start) + ' 00:00:00';
+ endTime = formatDate(end) + ' 23:59:59';
+ }
+
const params = {
orgName: this.detail.orgName,
pageNum: 1,
pageSize: 10,
- startPayTime: this.queryParams.startPayTime,
- endPayTime: this.queryParams.endPayTime,
+ startPayTime: startTime,
+ endPayTime: endTime,
};
getDetailList(params).then(res => {
this.detailData = res.list || [];