From 7298d5354963a88643a543b51b90192dc9fc934c Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 11 九月 2025 18:43:14 +0800
Subject: [PATCH] 最新版本541200007
---
admin/src/views/business/carStatistics.vue | 168 +++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 124 insertions(+), 44 deletions(-)
diff --git a/admin/src/views/business/carStatistics.vue b/admin/src/views/business/carStatistics.vue
index 6ada707..6d31df8 100644
--- a/admin/src/views/business/carStatistics.vue
+++ b/admin/src/views/business/carStatistics.vue
@@ -34,8 +34,8 @@
<div class="main_content">
<div class="type_wrap">
<div class="title">鍏ㄥ勾鍏ュ洯杞﹁締瓒嬪娍</div>
- <div id="echart1" ref="typeRef" v-if="info.cumulativeDataList"></div>
- <div style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;" v-else>
+ <div id="echart1" ref="typeRef" v-show="info.cumulativeDataList"></div>
+ <div style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;" v-show="!info.cumulativeDataList">
<img style="width: 200px;" src="@/assets/images/default_homeimg.png" alt="">
</div>
</div>
@@ -52,12 +52,12 @@
:clearable="false"
@change="getRataLists()"
:value-format="dateType === 'month' ? 'yyyy-MM' : 'yyyy'"
- style="margin-left: 20px; width: 130px;"
+ style="margin-left: 10px; width: 120px;"
placeholder="璇烽�夋嫨">
</el-date-picker>
</div>
- <div class="echart_2" ref="deptRef" v-if="listZB.length > 0"></div>
- <div style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;" v-else>
+ <div id="echart_2" v-show="listZB.length > 0"></div>
+ <div style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;" v-show="listZB.length === 0">
<img style="width: 200px;" src="@/assets/images/default_homeimg.png" alt="">
</div>
</div>
@@ -77,35 +77,37 @@
:clearable="false"
@change="getReportLists()"
:value-format="radio === 'month' ? 'yyyy-MM' : 'yyyy'"
- style="margin-left: 20px; width: 130px;"
+ style="margin-left: 10px; width: 120px;"
placeholder="璇烽�夋嫨">
</el-date-picker>
</div>
<el-button type="primary" style="margin-left: 20px;" icon="el-icon-upload2" @click="daochu">瀵煎嚭</el-button>
</div>
- <div class="list_head">
- <div class="list_head_item" v-for="(item, index) in column" :key="index">{{item}}</div>
- </div>
- <div class="table_box">
- <div class="list_content" v-for="(item, index) in list" :key="index">
- <div class="list_head_item" v-for="(child, i) in item" :key="i">{{child}}</div>
- </div>
- </div>
+ <template v-if="column.length > 0">
+ <el-table
+ style="width: 100%; margin-top: 15px;"
+ :data="list"
+ header-row-style="background-color: #F7F7F7;"
+ border
+ >
+ <el-table-column :prop="item" :label="item" align="center" :fixed="index === 0 ? true : index === column.length - 1 ? 'right' : false" v-for="(item, index) in column" :key="index"></el-table-column>
+ </el-table>
+ </template>
+ <div class="list_wu" v-else>鏆傛棤鏁版嵁</div>
</div>
<div class="main_table_list1">
<div class="title">
<span>鏈勾杞﹁締绱鍏ュ洯缁熻</span>
</div>
- <div class="list_head">
- <div class="list_head_item">杞﹁締鍒嗙被</div>
- <div class="list_head_item">鍏ュ洯娆℃暟</div>
- </div>
- <div class="table_box">
- <div class="list_content" v-for="(item, index) in info.yearSortList" :key="index">
- <div class="list_head_item">{{item.name}}</div>
- <div class="list_head_item">{{item.total}}</div>
- </div>
- </div>
+ <el-table
+ style="width: 100%; margin-top: 15px;"
+ :data="info.yearSortList"
+ header-row-style="background-color: #F7F7F7;"
+ border
+ >
+ <el-table-column prop="name" label="杞﹁締鍒嗙被" align="center"></el-table-column>
+ <el-table-column prop="total" label="鍏ュ洯娆℃暟" align="center"></el-table-column>
+ </el-table>
</div>
</div>
</div>
@@ -137,9 +139,9 @@
this.value = `${year}-${month}`
this.date1 = `${year}-${month}`
- this.getData()
- this.getRataLists()
- this.getReportLists()
+ this.getData()
+ this.getRataLists()
+ this.getReportLists()
},
methods: {
// 瀵煎嚭
@@ -166,12 +168,39 @@
getReportLists() {
getReportList({ dateStr: this.date1, isGroupBy: this.isGroupBy, type: 0 })
.then(res => {
- if (res.length === 0) return
this.column = res[0]
- this.list = res.slice(1, res.length);
- console.log(res)
+ this.list = res.slice(1).map(row => {
+ const obj = {};
+ this.column.forEach((header, index) => {
+ obj[header] = row[index];
+ });
+ return obj;
+ });
+ // const keys = res.map(row => row[0]); // 鑾峰彇閿悕
+ // const values = res.map(row => row.slice(1, row.length)); // 鑾峰彇鍊�
+ //
+ // this.list = values[0].map((_, index) => {
+ // return keys.reduce((obj, key, i) => {
+ // obj[key] = values[i][index];
+ // return obj;
+ // }, {});
+ // });
+
+ console.log(this.column)
+ console.log(this.list)
+
+ // if (res.length === 0) {
+ // this.column = []
+ // this.list = []
+ // return
+ // }
+ //
+ // this.column = res[0]
+ // this.list = res.slice(1, res.length);
+ //
+ // console.log(res)
})
},
changeDateType() {
@@ -192,18 +221,24 @@
getRataList({ dateStr: this.value, isGroupBy: this.isGroupBy, type: 0 })
.then(res => {
this.listZB = res
- this.$nextTick(() => {
+ // this.$nextTick(() => {
+ // this.initDept()
+ // })
+ setTimeout(() => {
this.initDept()
- })
+ },1000)
})
},
// 鍩虹鏁版嵁
getData() {
getInParkUserData({ isGroupBy: this.isGroupBy, type: 0 }).then(res => {
this.info = res
- this.$nextTick(() => {
+ // this.$nextTick(() => {
+ // this.initType()
+ // })
+ setTimeout(() => {
this.initType()
- })
+ }, 1000)
})
},
// 鍏ㄥ勾鍏ュ洯杞﹁締瓒嬪娍
@@ -217,12 +252,29 @@
let option = {
tooltip: {
- trigger: 'item'
+ trigger: 'axis',
+ axisPointer: {
+ type: 'line'
+ }
},
legend: {
show: false,
orient: 'vertical',
left: 'left'
+ },
+ graphic: {
+ elements: [
+ {
+ type: 'text',
+ left: 'left',
+ top: 'top',
+ style: {
+ text: '杞﹁締鏁�',
+ textAlign: 'center',
+ fill: '#333'
+ }
+ }
+ ]
},
grid: {
left: '0%',
@@ -236,11 +288,21 @@
data: names
},
yAxis: {
- type: 'value'
+ type: 'value',
+ axisLine: {
+ show: true
+ },
+ axisLabel: {
+ formatter: function (value) {
+ // 鍥涜垗浜斿叆鍒版渶杩戠殑鏁存暟
+ return Math.round(value);
+ }
+ }
},
series: [
{
data: datas,
+ name: '鍏ュ洯杞﹁締',
type: 'line',
areaStyle: {
normal: {
@@ -295,7 +357,9 @@
initDept() {
if (this.listZB.length === 0) return
- const myChart = echarts.init(document.querySelector('.echart_2'))
+ const dom = document.getElementById('echart_2')
+ console.log(dom)
+ const myChart = echarts.init(dom)
let data = this.listZB.map(item => {
return {
@@ -321,7 +385,7 @@
labelLine: {
normal: {
length: 30,
- length2: 100,
+ length2: 70,
}
},
label: {
@@ -463,7 +527,7 @@
background-color: #ffffff;
padding: 20px;
box-sizing: border-box;
- flex: 1;
+ width: 69%;
.title {
display: flex;
align-items: center;
@@ -472,6 +536,14 @@
font-size: 18px;
color: #222222;
}
+ }
+ .list_wu {
+ width: 100%;
+ height: 100px;
+ line-height: 100px;
+ text-align: center;
+ font-size: 16px;
+ color: #222222;
}
.list_head {
width: 100%;
@@ -518,8 +590,7 @@
}
}
.main_table_list1 {
- margin-left: 10px;
- width: 520px;
+ width: 30%;
padding: 20px;
box-sizing: border-box;
flex-shrink: 0;
@@ -527,6 +598,14 @@
.title {
font-weight: 500;
font-size: 18px;
+ color: #222222;
+ }
+ .list_wu {
+ width: 100%;
+ height: 100px;
+ line-height: 100px;
+ text-align: center;
+ font-size: 16px;
color: #222222;
}
.list_head {
@@ -586,7 +665,7 @@
display: flex;
align-items: center;
justify-content: space-between;
- height: 400px;
+ height: 350px;
.title {
font-weight: 500;
@@ -606,18 +685,19 @@
#echart1 {
width: 100%;
height: 100%;
+ margin-top: 18px;
}
}
.dept_wrap {
- width: 520px;
+ width: 420px;
flex-shrink: 0;
height: 100%;
background-color: #ffffff;
padding: 20px;
box-sizing: border-box;
margin-left: 10px;
- .echart_2 {
+ #echart_2 {
width: 100%;
height: 100%;
}
--
Gitblit v1.9.3