From 328febf368f1494b4b5b647f3eab5f4ad38eb072 Mon Sep 17 00:00:00 2001
From: zhouwenxuan <1175765986@qq.com>
Date: 星期四, 12 十月 2023 16:54:27 +0800
Subject: [PATCH] 日报接口、图表优化
---
src/views/monitorData/daily/index.vue | 112 ++++++++++++++-------
src/api/monitorData/daily/index.ts | 15 +++
src/views/monitorData/gasData/index.vue | 50 +++++++--
src/views/monitorData/fluxData/index.vue | 36 ++++++-
src/views/monitorData/weatherData/index.vue | 40 ++++++-
5 files changed, 188 insertions(+), 65 deletions(-)
diff --git a/src/api/monitorData/daily/index.ts b/src/api/monitorData/daily/index.ts
new file mode 100644
index 0000000..946f4fe
--- /dev/null
+++ b/src/api/monitorData/daily/index.ts
@@ -0,0 +1,15 @@
+import request from '/@/utils/request';
+
+export function dailyApi() {
+ return {
+
+ //日报查询
+ getDaily: (data: object) => {
+ return request({
+ url: import.meta.env.VITE_API_URL + `/dailyReport/page`,
+ method: 'post',
+ data: data
+ });
+ },
+ };
+}
diff --git a/src/views/monitorData/daily/index.vue b/src/views/monitorData/daily/index.vue
index 4e313d6..df56e75 100644
--- a/src/views/monitorData/daily/index.vue
+++ b/src/views/monitorData/daily/index.vue
@@ -26,14 +26,8 @@
</el-form>
</div>
<el-table :data="state.tableData.data" style="width: 100%">
- <el-table-column align="center" prop="date" label="日期"/>
- <el-table-column align="center" label="文件名称">
- <template #default="scope">
- <div v-for="(item, index) in scope.row.file" :key="index">
- {{ item.filename}}
- </div>
- </template>
- </el-table-column>
+ <el-table-column align="center" prop="gmtCreate" label="日期"/>
+ <el-table-column align="center" prop="name" label="文件名称"/>
<el-table-column label="操作" show-overflow-tooltip width="140">
<template #default="scope">
<el-button size="small" text type="primary" @click="downLoad(scope.row)">下载</el-button>
@@ -60,11 +54,13 @@
</template>
<script setup lang="ts">
-import {reactive, ref} from "vue";
+import {onMounted, reactive, ref} from "vue";
import { TableDailytState } from "/@/types/monitorData";
import axios from "axios";
import Cookies from "js-cookie";
import { ElMessage } from 'element-plus'
+import {dailyApi} from "/@/api/monitorData/daily";
+import moment from "moment/moment";
const state = reactive<TableDailytState>({
tableData: {
@@ -93,9 +89,38 @@
}
});
-const initDailyData = () => {
- console.log("数据列表")
+onMounted(
+ () => {
+ getNowTime();
+ initDailyData()
+ }
+);
+
+const initDailyData = async () => {
+ const param = {
+ pageIndex: state.tableData.listQuery.pageIndex,
+ pageSize: state.tableData.listQuery.pageSize,
+ searchParams: {
+ year: state.tableData.listQuery.searchParams.time.substring(0,4),
+ month: state.tableData.listQuery.searchParams.time.substring(5,7)
+ }
+ }
+ let res = await dailyApi().getDaily(param);
+ if(res.data.code == 100) {
+ state.tableData.data = res.data.data;
+ state.tableData.total = res.data.total;
+ state.tableData.listQuery.pageIndex = res.data.pageIndex;
+ state.tableData.listQuery.pageSize = res.data.pageSize;
+ }
+
+ console.log("数据列表",res)
};
+const getNowTime = () => {
+ let isDate = new Date()
+ const year = isDate.getFullYear();
+ const month = isDate.getMonth() + 1;
+ state.tableData.listQuery.searchParams.time = (year + "-" + (month >= 10 ? month : "0" + month)).toString();
+}
const onHandleSizeChange = (val: number) => {
state.tableData.listQuery.pageSize = val;
initDailyData();
@@ -106,39 +131,48 @@
initDailyData();
};
const downLoad = (file: any) => {
- // axios.get(process.env.VITE_API_URL + file.fileUrl, {
- // headers: {
- // 'Content-Type': 'application/json',
- // 'Authorization': Cookies.get('token'),
- // },
- // responseType: 'blob'
- // }).then(res => {
- // if (res) {
- // const link = document.createElement('a')
- // let blob = new Blob([res.data], {
- // type: res.data.type
- // })
- // link.style.display = "none";
- // link.href = URL.createObjectURL(blob); // 创建URL
- // link.setAttribute("download", file.fileName);
- // document.body.appendChild(link);
- // link.click();
- // document.body.removeChild(link);
- // } else {
- // ElMessage({
- // message: '获取文件失败',
- // type: 'error',
- // })
- // }
- // })
+ console.log("file",file)
+ axios.get(import.meta.env.VITE_API_URL + file.fileUrl, {
+ headers: {
+ 'Content-Type': 'application/json',
+ 'tk': `${Cookies.get('token')}`,
+ 'uid':`${Cookies.get('uid')}`
+ },
+ responseType: 'blob'
+ }).then(res => {
+ if (res) {
+ const link = document.createElement('a')
+ let blob = new Blob([res.data], {
+ type: res.data.type
+ })
+ link.style.display = "none";
+ link.href = URL.createObjectURL(blob); // 创建URL
+ link.setAttribute("download", file.name);
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
+ ElMessage({
+ message: '下载成功',
+ type: 'success',
+ })
+ } else {
+ ElMessage({
+ message: '获取文件失败',
+ type: 'error',
+ })
+ }
+ })
}
const search = () => {
- console.log("xxxx",state.tableData.listQuery.searchParams)
+ state.tableData.listQuery.pageIndex = 1;
+ initDailyData();
+ console.log("vla",state.tableData.listQuery.searchParams)
}
const reset = () => {
- state.tableData.listQuery.searchParams.time = '';
+ getNowTime();
+ initDailyData();
}
</script>
<style scoped lang="scss">
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/monitorData/fluxData/index.vue b/src/views/monitorData/fluxData/index.vue
index c420e6e..107a490 100644
--- a/src/views/monitorData/fluxData/index.vue
+++ b/src/views/monitorData/fluxData/index.vue
@@ -49,7 +49,7 @@
</el-form>
</div>
<div id="gasChart" style="height: 500px;width: auto"></div>
- <el-table :data="state.tableData.data" style="width: 100%">
+ <el-table :data="state.tableData.data" style="width: 100%" v-loading="loading">
<el-table-column type="index" label="序号" width="80" />
<el-table-column align="center" prop="time" label="采集时间"/>
<el-table-column align="center" prop="regionName" label="区域名称"/>
@@ -106,6 +106,7 @@
},
});
+const loading = ref(false);
const myChart = shallowRef(null)
const chooseTime = (val:any) => {
@@ -165,11 +166,18 @@
}
let resChart = await fluxDataApi().getFluxLineChart(chartParam);
if(resChart.data.code == 100) {
- yData.value = mapArray(resChart.data.data);
- areaChart.value = yData.value.map((item: any) => {
- return item.name
- });
- dataZoomEnd.value = xData.value.length > 25 ? 5 : 100;
+ if(resChart.data.data) {
+ yData.value = mapArray(resChart.data.data);
+ areaChart.value = yData.value.map((item: any) => {
+ return item.name
+ });
+ dataZoomEnd.value = xData.value.length > 25 ? 5 : 100;
+ }else {
+ yData.value = [];
+ xData.value = [];
+ dataZoomEnd.value = 100;
+ }
+
initCharts();
}else {
ElMessage({
@@ -178,6 +186,7 @@
});
}
+ loading.value = true;
//表格
const pageParam = {
pageIndex: state.tableData.listQuery.pageIndex,
@@ -195,6 +204,7 @@
state.tableData.total = res.data.total;
state.tableData.listQuery.pageIndex = res.data.pageIndex;
state.tableData.listQuery.pageSize = res.data.pageSize;
+ loading.value = false;
}else {
ElMessage({
type: 'warning',
@@ -335,6 +345,20 @@
saveAsImage: { show: true }
}
},
+ graphic: {
+ type: 'text', // 类型:文本
+ left: 'center',
+ top: 'middle',
+ silent: true, // 不响应事件
+ invisible: yData.value.length > 0, // 有数据就隐藏
+ style: {
+ fill: '#9d9d9d',
+ fontWeight: 'bold',
+ text: '暂无数据',
+ fontFamily: 'Microsoft YaHei',
+ fontSize: '22px'
+ }
+ },
xAxis: [
{
type: 'category',
diff --git a/src/views/monitorData/gasData/index.vue b/src/views/monitorData/gasData/index.vue
index 552db39..043df7a 100644
--- a/src/views/monitorData/gasData/index.vue
+++ b/src/views/monitorData/gasData/index.vue
@@ -39,7 +39,7 @@
</el-form>
</div>
<div id="gasChart" style="height: 500px;width: auto"></div>
- <el-table :data="state.tableData.data" style="width: 100%;margin-top: 20px">
+ <el-table :data="state.tableData.data" style="width: 100%;margin-top: 20px" v-loading="loading">
<el-table-column type="index" label="序号" width="80" />
<el-table-column align="center" prop="time" label="采集时间"/>
<el-table-column align="center" prop="windSpeed" label="风速"/>
@@ -112,6 +112,7 @@
}
}
}
+const loading = ref(false);
const dataZoomEnd = ref();
const xData = ref([]);
const yData = ref([]);
@@ -140,14 +141,22 @@
}
let resChart = await gasDataApi().getGasLineChart(chartParam);
if(resChart.data.code == 100) {
- xData.value = resChart.data.data.map((item: any) => {
- return item.time;
- })
- yData.value = resChart.data.data.map((item: any) => {
- return item.gasValue;
- })
- dataZoomEnd.value = xData.value.length > 25 ? 30 : 100;
- markLines.value = 110;
+ if (resChart.data.data) {
+ xData.value = resChart.data.data.map((item: any) => {
+ return item.time;
+ })
+ yData.value = resChart.data.data.map((item: any) => {
+ return item.gasValue;
+ })
+ dataZoomEnd.value = xData.value.length > 25 ? 30 : 100;
+ markLines.value = 110;
+
+ }else {
+ xData.value = [];
+ yData.value = [];
+ markLines.value = 0;
+ dataZoomEnd.value = 100;
+ }
initCharts();
}else {
ElMessage({
@@ -156,6 +165,7 @@
});
}
+ loading.value = true;
//表格
const pageParam = {
pageIndex: state.tableData.listQuery.pageIndex,
@@ -172,6 +182,7 @@
state.tableData.total = res.data.total;
state.tableData.listQuery.pageIndex = res.data.pageIndex;
state.tableData.listQuery.pageSize = res.data.pageSize;
+ loading.value = false;
}else {
ElMessage({
type: 'warning',
@@ -204,6 +215,7 @@
initInfoData();
};
const search = () => {
+ state.tableData.listQuery.pageIndex = 1;
initInfoData();
console.log("vla",state.tableData.listQuery.searchParams)
}
@@ -238,6 +250,20 @@
max: Math.max(markLines.value,...yData.value),
min: Math.min(markLines.value,...yData.value)
},
+ graphic: {
+ type: 'text', // 类型:文本
+ left: 'center',
+ top: 'middle',
+ silent: true, // 不响应事件
+ invisible: yData.value.length > 0, // 有数据就隐藏
+ style: {
+ fill: '#9d9d9d',
+ fontWeight: 'bold',
+ text: '暂无数据',
+ fontFamily: 'Microsoft YaHei',
+ fontSize: '25px'
+ }
+ },
series: [
{
data: yData.value,
@@ -249,10 +275,10 @@
position: 'end', // 表现内容展示的位置
color: 'red' // 展示内容颜色
},
- yAxis: markLines.value,
+ yAxis: markLines.value == 0 ? '':markLines.value ,
lineStyle: {
color: "red",
- width: 1, // 0 的时候可以隐藏线
+ width: markLines.value == 0 ? 0: 1, // 0 的时候可以隐藏线
type: "solid" // 实线,不写默认虚线
}
},],//type: 'average', 平均值, min最小值, max 最大值, median中位数
@@ -278,7 +304,7 @@
// 使用刚指定的配置项和数据显示图表。
myChart.value.setOption(option,true);
//自适应宽度
- window.addEventListener('resize', function () {
+ window.addEventListener('resize',function () {
myChart.value.resize();
})
}
diff --git a/src/views/monitorData/weatherData/index.vue b/src/views/monitorData/weatherData/index.vue
index b76f938..9e92ed5 100644
--- a/src/views/monitorData/weatherData/index.vue
+++ b/src/views/monitorData/weatherData/index.vue
@@ -39,7 +39,7 @@
</el-form>
</div>
<div id="gasChart" style="height: 500px;width: auto"></div>
- <el-table :data="state.tableData.data" style="width: 100%;margin-top: 20px">
+ <el-table :data="state.tableData.data" style="width: 100%;margin-top: 20px" v-loading="loading">
<el-table-column type="index" label="序号" width="80" />
<el-table-column align="center" prop="time" label="采集时间"/>
<el-table-column align="center" prop="value" :label='weatherName' />
@@ -108,6 +108,7 @@
]
}
});
+const loading = ref(false);
const weatherName = ref('温度');
const dataZoomEnd = ref();
const xData = ref([]);
@@ -161,13 +162,20 @@
}
let resChart = await weatherDataApi().getWeatherLineChart(chartParam);
if(resChart.data.code == 100) {
- xData.value = resChart.data.data.map((item: any) => {
- return item.time;
- })
- yData.value = resChart.data.data.map((item: any) => {
- return item.value;
- })
- dataZoomEnd.value = xData.value.length > 25 ? 5 : 100;
+ if(resChart.data.data) {
+ xData.value = resChart.data.data.map((item: any) => {
+ return item.time;
+ })
+ yData.value = resChart.data.data.map((item: any) => {
+ return item.value;
+ })
+ dataZoomEnd.value = xData.value.length > 25 ? 5 : 100;
+ }else {
+ xData.value = [];
+ yData.value = [];
+ dataZoomEnd.value = 100;
+ }
+
initCharts();
}else {
ElMessage({
@@ -176,6 +184,7 @@
});
}
+ loading.value = true;
//表格
const pageParam = {
pageIndex: state.tableData.listQuery.pageIndex,
@@ -192,6 +201,7 @@
state.tableData.total = res.data.total;
state.tableData.listQuery.pageIndex = res.data.pageIndex;
state.tableData.listQuery.pageSize = res.data.pageSize;
+ loading.value = false;
}else {
ElMessage({
type: 'warning',
@@ -250,6 +260,20 @@
show: true,
type: 'value'
},
+ graphic: {
+ type: 'text', // 类型:文本
+ left: 'center',
+ top: 'middle',
+ silent: true, // 不响应事件
+ invisible: yData.value.length > 0, // 有数据就隐藏
+ style: {
+ fill: '#9d9d9d',
+ fontWeight: 'bold',
+ text: '暂无数据',
+ fontFamily: 'Microsoft YaHei',
+ fontSize: '25px'
+ }
+ },
series: [
{
data: yData.value,
--
Gitblit v1.9.2