From 74ea9bc7a086d6e4b45b2261ac0bf409896e6ef9 Mon Sep 17 00:00:00 2001 From: linyongLynn <15926056+linyonglynn@user.noreply.gitee.com> Date: Thu, 16 Oct 2025 15:05:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=A6=96=E9=A1=B5=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E6=8D=AE=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/XyTable/index.vue | 13 + src/views/dashboard/index.vue | 220 ++++- src/views/visit/check.vue | 614 +++++++----- src/views/visit/component/showVisit.vue | 473 ++++++--- src/views/visit/record.vue | 1198 ++++++++++++++++++----- 5 files changed, 1879 insertions(+), 639 deletions(-) diff --git a/src/components/XyTable/index.vue b/src/components/XyTable/index.vue index 39d8df5..f45e2aa 100644 --- a/src/components/XyTable/index.vue +++ b/src/components/XyTable/index.vue @@ -512,6 +512,19 @@ export default { let _this = this; if (_this.auths?.length > 0) { let btns = new Map(); + btns.set( + "detail", + _this.$emit('detail', scope.row)} + > + 查看 + + ); btns.set( "edit",
+ +
+ + + 查询 + 重置 +
+
@@ -35,43 +55,89 @@ customerArr: [], orderArr: [], chartData: {}, + // 时间段筛选 + dateRange: this.getDefaultDateRange(), + 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]); + } + }, { + text: '最近三个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + picker.$emit('pick', [start, end]); + } + }] + }, pieData:{ - // xArr:['普通访客','施工访客','物流车辆'], yArr:[ { - value:20, - name:"普通访客" + value: 0, + name:"普通访客", + itemStyle: { + color: '#D1AC7B' // 普通访客卡片颜色 + } },{ - value:40, - name:"施工访客" + value: 0, + name:"施工访客", + itemStyle: { + color: '#9193BC' // 施工访客卡片颜色 + } },{ - value:40, - name:"物流车辆" + value: 0, + name:"物流车辆", + itemStyle: { + color: '#64A48E' // 物流车辆卡片颜色 + } }], radiusArr:'50%' }, LineData:{ - xArr: ['9:00-10:00','10:00-11:00','11:00-12:00','12:00-13:00'], + xArr: [], legendArr: ["普通访客", "施工访客", "物流车辆"], series:[ { name: '普通访客', type: 'line', stack: 'Total', - data: [20,10,40,70] + data: [], + itemStyle: { + color: '#D1AC7B' // 普通访客颜色 + } }, { name: '施工访客', type: 'line', stack: 'Total', - data: [15,75,35,45] + data: [], + itemStyle: { + color: '#9193BC' // 施工访客颜色 + } }, { name: '物流车辆', type: 'line', stack: 'Total', - data: [75,35,60,10] + data: [], + itemStyle: { + color: '#64A48E' // 物流车辆颜色 + } } ] } @@ -85,10 +151,118 @@ } }, methods: { - async loadData() { - await getChartsHome().then((res) => { - console.log(res); + // 获取默认时间范围(30天前到今天) + getDefaultDateRange() { + const today = new Date(); + const thirtyDaysAgo = new Date(); + thirtyDaysAgo.setDate(today.getDate() - 30); + + return [ + this.formatDate(thirtyDaysAgo), + this.formatDate(today) + ]; + }, + + // 格式化日期为 YYYY-MM-DD + formatDate(date) { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; + }, + + // 更新圆饼图数据 + updatePieChartData(listData) { + if (listData && listData.common_visit && listData.work_visit && listData.car_visit) { + this.pieData.yArr = [ + { + value: listData.common_visit.total || 0, + name: "普通访客", + itemStyle: { + color: '#D1AC7B' // 普通访客卡片颜色 + } + }, + { + value: listData.work_visit.total || 0, + name: "施工访客", + itemStyle: { + color: '#9193BC' // 施工访客卡片颜色 + } + }, + { + value: listData.car_visit.total || 0, + name: "物流车辆", + itemStyle: { + color: '#64A48E' // 物流车辆卡片颜色 + } + } + ]; + } + }, + + // 更新曲线图数据 + updateLineChartData(dateList) { + if (dateList && Array.isArray(dateList)) { + // 提取日期作为横坐标 + this.LineData.xArr = dateList.map(item => { + // 格式化日期显示,只显示月-日 + const date = new Date(item.date); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + return `${month}-${day}`; + }); + + // 提取各类型访客数据 + this.LineData.series[0].data = dateList.map(item => item.common_visit || 0); + this.LineData.series[1].data = dateList.map(item => item.work_visit || 0); + this.LineData.series[2].data = dateList.map(item => item.car_visit || 0); + } + }, + + // 时间段改变事件 + handleDateChange(value) { + console.log('选择的时间段:', value); + }, + // 查询按钮 + handleSearch() { + if (this.dateRange && this.dateRange.length === 2) { + console.log('查询时间段:', { + startDate: this.dateRange[0], + endDate: this.dateRange[1] + }); + // 调用接口获取筛选后的数据 + this.loadData({ + start_date: this.dateRange[0], + end_date: this.dateRange[1] + }); + this.$message.success('查询成功'); + } else { + this.$message.warning('请选择时间段'); + } + }, + // 重置按钮 + handleReset() { + // 重置为默认时间范围(30天前到今天) + this.dateRange = this.getDefaultDateRange(); + console.log('重置时间筛选'); + // 使用默认时间范围重新加载数据 + this.loadData({ + start_date: this.dateRange[0], + end_date: this.dateRange[1] + }); + this.$message.success('已重置'); + }, + async loadData(params = {}) { + await getChartsHome(params).then((res) => { + console.log('接口返回数据:', res); this.list = res.list; + + // 更新圆饼图数据 + this.updatePieChartData(res.list); + + // 更新曲线图数据 + this.updateLineChartData(res.all_date_list); + // this.chartData = res; // let _business_data = []; // let _collect_data = []; @@ -215,8 +389,11 @@ } }, created() { - - this.loadData(); + // 页面初始化时使用默认时间范围加载数据 + this.loadData({ + start_date: this.dateRange[0], + end_date: this.dateRange[1] + }); }, mounted() { @@ -236,6 +413,17 @@ + diff --git a/src/views/visit/component/showVisit.vue b/src/views/visit/component/showVisit.vue index 40ffef7..5332db2 100644 --- a/src/views/visit/component/showVisit.vue +++ b/src/views/visit/component/showVisit.vue @@ -28,11 +28,11 @@ 核销状态:
-
-
-
- {{item.value}} -
+
+
+
+ {{item.value}} +
- - + placeholder="请输入入场牌"> --> + +
@@ -67,12 +67,12 @@
- - - + placeholder="请输入停车牌"> --> + + +
@@ -208,16 +208,16 @@ {{form.company_name}}
- - + - --> - - - + --> + + + - + + + + +