From 67ddfbd2db13529c8923838d4dc7ed4cf105b0fe Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Fri, 20 Oct 2023 15:41:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/views/monitorData/daily/index.vue | 112 ++++++++++++------
src/api/monitorData/daily/index.ts | 15 ++
src/views/monitorData/gasData/index.vue | 72 +++++++++---
src/views/monitorData/fluxData/index.vue | 56 +++++++--
src/types/monitorData.d.ts | 4
src/views/monitorData/weatherData/index.vue | 57 +++++++--
6 files changed, 228 insertions(+), 88 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/types/monitorData.d.ts b/src/types/monitorData.d.ts
index aef6fa0..e888c41 100644
--- a/src/types/monitorData.d.ts
+++ b/src/types/monitorData.d.ts
@@ -70,7 +70,7 @@
};
gasList: Array<any>;
areaList: Array<any>;
- }
+ },
}
export interface TableWeatherRow {
@@ -97,4 +97,4 @@
};
weatherTypeList: Array<any>;
}
-}
\ No newline at end of file
+}
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 d50c5d2..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="区域名称"/>
@@ -78,7 +78,7 @@
</template>
<script setup lang="ts">
-import {reactive, ref,onMounted} from "vue";
+import {reactive, ref, onMounted, shallowRef} from "vue";
import * as echarts from "echarts";
import { ElMessage, ElMessageBox } from 'element-plus'
import {TableFluxState} from "/@/types/monitorData";
@@ -103,8 +103,11 @@
},
gasList: [],
areaList: [],
- }
+ },
});
+
+const loading = ref(false);
+const myChart = shallowRef(null)
const chooseTime = (val:any) => {
console.log("val",val)
@@ -154,7 +157,7 @@
const yData = ref([]);
const areaChart = ref([]as any);
const initInfoData = async () => {
- //折线图
+ //柱状图
const chartParam = {
startTime: moment(state.tableData.listQuery.searchParams.time[0]).format('YYYY-MM-DD HH:mm:ss'),
endTime: moment(state.tableData.listQuery.searchParams.time[1]).format('YYYY-MM-DD HH:mm:ss'),
@@ -163,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 ? 2 : 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({
@@ -176,6 +186,7 @@
});
}
+ loading.value = true;
//表格
const pageParam = {
pageIndex: state.tableData.listQuery.pageIndex,
@@ -193,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',
@@ -214,7 +226,6 @@
let finalResult = []as any;
target.map((item: any) => {
let key = item.regionName;
- //如果有这个key,就push一个对象
if (obj[key]) {
obj[key].push(item);
} else {
@@ -306,7 +317,10 @@
const initCharts = () => {
- const myChart = echarts.init(document.getElementById('gasChart'));
+ if (myChart.value != null && myChart.value != "" && myChart.value != undefined) {
+ myChart.value.dispose();
+ }
+ myChart.value = echarts.init(document.getElementById('gasChart'));
// 指定图表的配置项和数据
const option = {
tooltip: {
@@ -329,6 +343,20 @@
magicType: { show: true, type: ['line', 'bar', 'stack'] },
restore: { show: true },
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: [
@@ -362,10 +390,10 @@
]
};
// 使用刚指定的配置项和数据显示图表。
- myChart.setOption(option,true);
+ myChart.value.setOption(option,true);
//自适应宽度
window.addEventListener('resize', function () {
- myChart.resize();
+ myChart.value.resize();
})
}
</script>
@@ -388,4 +416,4 @@
box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.2);
padding: 3px
}
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/monitorData/gasData/index.vue b/src/views/monitorData/gasData/index.vue
index dd84cc0..3bc9b1d 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="风速"/>
@@ -67,7 +67,7 @@
</template>
<script setup lang="ts">
-import {reactive, ref,onMounted} from "vue";
+import {reactive, ref, onMounted, shallowRef} from "vue";
import * as echarts from "echarts";
import { ElMessage, ElMessageBox } from 'element-plus'
import {TableGasState} from "/@/types/monitorData";
@@ -112,10 +112,12 @@
}
}
}
+const loading = ref(false);
const dataZoomEnd = ref();
const xData = ref([]);
const yData = ref([]);
const markLines = ref(0);
+const myChart = shallowRef(null)
onMounted(
() => {
getNowTime();
@@ -139,14 +141,20 @@
}
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;
+ }else {
+ xData.value = [];
+ yData.value = [];
+ markLines.value = 0;
+ dataZoomEnd.value = 100;
+ }
initCharts();
}else {
ElMessage({
@@ -155,6 +163,7 @@
});
}
+ loading.value = true;
//表格
const pageParam = {
pageIndex: state.tableData.listQuery.pageIndex,
@@ -171,6 +180,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',
@@ -183,7 +193,10 @@
let res = await gasManageApi().getGas({});
if(res.data.code == 100) {
state.tableData.gasList = res.data.data;
+ console.log("气体",state.tableData.gasList)
+ //默认选择第一个气体
state.tableData.listQuery.searchParams.gas = state.tableData.gasList[0].id;
+ markLines.value = state.tableData.gasList[0].threshold;
initInfoData();
}else {
ElMessage({
@@ -203,18 +216,27 @@
initInfoData();
};
const search = () => {
+ state.tableData.listQuery.pageIndex = 1;
+ const gasObj = state.tableData.gasList.filter(item => {
+ return item.id == state.tableData.listQuery.searchParams.gas
+ });
+ markLines.value = gasObj[0].threshold;
+
initInfoData();
- console.log("vla",state.tableData.listQuery.searchParams)
}
const reset = () => {
getNowTime();
state.tableData.listQuery.searchParams.gas = state.tableData.gasList[0].id;
+ markLines.value = state.tableData.gasList[0].threshold;
state.tableData.listQuery.pageIndex = 1;
initInfoData();
}
const initCharts = () => {
- const myChart = echarts.init(document.getElementById('gasChart'));
+ if (myChart.value != null && myChart.value != "" && myChart.value != undefined) {
+ myChart.value.dispose();
+ }
+ myChart.value = echarts.init(document.getElementById('gasChart'));
// 指定图表的配置项和数据
const option = {
tooltip: {
@@ -234,6 +256,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,
@@ -245,10 +281,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中位数
@@ -272,10 +308,10 @@
]
};
// 使用刚指定的配置项和数据显示图表。
- myChart.setOption(option,true);
+ myChart.value.setOption(option,true);
//自适应宽度
- window.addEventListener('resize', function () {
- myChart.resize();
+ window.addEventListener('resize',function () {
+ myChart.value.resize();
})
}
</script>
@@ -298,4 +334,4 @@
box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.2);
padding: 3px
}
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/monitorData/weatherData/index.vue b/src/views/monitorData/weatherData/index.vue
index 4a90727..85cb432 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' />
@@ -64,7 +64,7 @@
</template>
<script setup lang="ts">
-import {reactive, ref,onMounted} from "vue";
+import {reactive, ref, onMounted, shallowRef} from "vue";
import * as echarts from "echarts";
import { ElMessage, ElMessageBox } from 'element-plus'
import {TableWeatherState} from "/@/types/monitorData";
@@ -108,10 +108,12 @@
]
}
});
+const loading = ref(false);
const weatherName = ref('温度');
const dataZoomEnd = ref();
const xData = ref([]);
const yData = ref([]);
+const myChart = shallowRef(null)
const chooseTime = (val: any) => {
console.log("val",val)
@@ -160,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({
@@ -175,6 +184,7 @@
});
}
+ loading.value = true;
//表格
const pageParam = {
pageIndex: state.tableData.listQuery.pageIndex,
@@ -191,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',
@@ -215,9 +226,8 @@
};
const search = () => {
- console.log("vla",state.tableData.listQuery.searchParams)
- changeWeather(state.tableData.listQuery.searchParams.weatherType);
initInfoData();
+ changeWeather(state.tableData.listQuery.searchParams.weatherType);
}
const reset = () => {
getNowTime();
@@ -228,7 +238,10 @@
}
const initCharts = () => {
- const myChart = echarts.init(document.getElementById('gasChart'));
+ if (myChart.value != null && myChart.value != "" && myChart.value != undefined) {
+ myChart.value.dispose();
+ }
+ myChart.value = echarts.init(document.getElementById('gasChart'));
// 指定图表的配置项和数据
const option = {
tooltip: {
@@ -245,6 +258,20 @@
yAxis: {
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: [
{
@@ -269,10 +296,10 @@
]
};
// 使用刚指定的配置项和数据显示图表。
- myChart.setOption(option,true);
+ myChart.value.setOption(option,true);
//自适应宽度
window.addEventListener('resize', function () {
- myChart.resize();
+ myChart.value.resize();
})
}
</script>
@@ -295,4 +322,4 @@
box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.2);
padding: 3px
}
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.9.2