zhaohy 3 weeks ago
parent
commit
b41ac8dcbe
  1. 28
      hx-ai-intelligent/src/view/monitor/deviceMonitor/page.vue
  2. 43
      hx-ai-intelligent/src/view/monitor/deviceMonitor/table/index.vue
  3. 42
      hx-ai-intelligent/src/view/monitor/deviceMonitor/tree/index.vue
  4. 31
      hx-ai-intelligent/src/view/monitor/energyMonitor/graphTable/index.vue
  5. 28
      hx-ai-intelligent/src/view/monitor/energyMonitor/page.vue
  6. 20
      hx-ai-intelligent/src/view/monitor/energyMonitor/tree/index.vue
  7. 118
      hx-ai-intelligent/src/view/monitor/environmentMonitor/aggregateData/index.vue
  8. 32
      hx-ai-intelligent/src/view/monitor/environmentMonitor/averageData/index.vue
  9. 28
      hx-ai-intelligent/src/view/monitor/environmentMonitor/historyData/index.vue

28
hx-ai-intelligent/src/view/monitor/deviceMonitor/page.vue

@ -6,7 +6,7 @@
<tree ref="treeRef" /> <tree ref="treeRef" />
</div> </div>
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20" style="height: 100%">
<div <div
style=" style="
width: 98%; width: 98%;
@ -16,14 +16,15 @@
margin-left: 1.5%; margin-left: 1.5%;
"> ">
<div class="ns-right-title"> <div class="ns-right-title">
<span><ns-icon name="title" size="11" style="margin-right: 3px" />历史数据</span> <!-- <span><ns-icon name="title" size="11" style="margin-right: 3px" />历史数据</span> -->
<div class="title">历史数据</div>
<div class="button"> <div class="button">
<ns-icon name="xiazai" size="18" style="margin-right: 10px" @click="downloadChart" /> <ns-icon name="xiazai" size="18" style="margin-right: 10px" @click="downloadChart" />
<ns-icon :name="iconName" size="18" style="margin-right: 10px" @click="change" /> <ns-icon :name="iconName" size="18" style="margin-right: 10px" @click="change" />
</div> </div>
</div> </div>
<graph ref="graphRef" v-if="isGraph" /> <graph ref="graphRef" v-if="isGraph" />
<environment-table ref="tableRef" style="width: 100%" v-else /> <environment-table ref="tableRef" style="height: 83%" v-else />
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
@ -89,4 +90,25 @@
display: inline-block; display: inline-block;
padding-right: 10px; padding-right: 10px;
} }
.title {
text-align: left;
height: 32px;
line-height: 32px;
font-weight: bold;
user-select: text;
position: relative;
padding-left: 20px;
}
.title::before {
content: '';
position: absolute;
left: 10px;
top: 50%;
transform: translateY(-50%);
height: 13px;
width: 3px;
border-radius: 1px;
background-color: #2778ff;
}
</style> </style>

43
hx-ai-intelligent/src/view/monitor/deviceMonitor/table/index.vue

@ -1,18 +1,27 @@
<template> <template>
<a-table <div style="width: 100%; overflow-y: auto">
:columns="columns" <a-table
:data-source="data" :columns="columns"
bordered :data-source="data"
:pagination="false" bordered
style="width: 99%; height: 75%; margin-left: 0.5%" :pagination="false"
:scroll="{ x: x, y: 450 }" /> style="width: 99%; margin-left: 0.5%"
<a-pagination :scroll="{ x: x }" />
:total="total" <a-pagination
:show-total="(total, range) => ` 共 ${total} 条`" :total="total"
show-size-changer size="small"
show-quick-jumper :show-total="(total, range) => `显示第${range[0]}到${range[1]}条记录 ,共${total} 条记录`"
@change="onChange" show-size-changer
style="display: flex; justify-content: right; margin-top: 10px; margin-right: 30px" /> show-quick-jumper
@change="onChange"
style="
display: flex;
justify-content: right;
margin-top: 10px;
margin-right: 30px;
padding-bottom: 10px;
" />
</div>
</template> </template>
<script lang="ts"> <script lang="ts">
@ -268,7 +277,7 @@
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
::v-deep .ant-table-container table > thead > tr:first-child th:last-child { // ::v-deep .ant-table-container table > thead > tr:first-child th:last-child {
display: none !important; // display: none !important;
} // }
</style> </style>

42
hx-ai-intelligent/src/view/monitor/deviceMonitor/tree/index.vue

@ -2,8 +2,8 @@
<template> <template>
<div class="parent-container"> <div class="parent-container">
<div class="ns-tree-title"> <div class="ns-tree-title">
<ns-icon name="deviceType" size="11" style="margin-right: 3px" /> <ns-icon name="deviceType" size="11" style="margin-top: 10px" />
<span>设备列表</span> <div class="title">设备列表</div>
</div> </div>
<a-tree-select <a-tree-select
ref="select" ref="select"
@ -83,6 +83,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { message } from 'ant-design-vue';
import type { TreeSelectProps, SelectProps } from 'ant-design-vue'; import type { TreeSelectProps, SelectProps } from 'ant-design-vue';
import { defineComponent, ref, onMounted, onUnmounted, watch } from 'vue'; import { defineComponent, ref, onMounted, onUnmounted, watch } from 'vue';
import dayjs, { Dayjs } from 'dayjs'; import dayjs, { Dayjs } from 'dayjs';
@ -228,12 +229,14 @@
const getDianWeiList = () => { const getDianWeiList = () => {
let deviceIds: any[] = []; let deviceIds: any[] = [];
if (checkedKeys.value && checkedKeys.value.length > 0) { if (checkedKeys.value && checkedKeys.value.length > 0) {
debugger;
checkedKeys.value.forEach((element) => { checkedKeys.value.forEach((element) => {
if (value.value != element && value.value != '999999999') { if (value.value != element && value.value != '999999999') {
deviceIds.push(element); deviceIds.push(element);
} }
}); });
if (deviceIds.length == 0) {
return;
}
http http
.post(deviceMonitor.getDevicePointToMonitor, { .post(deviceMonitor.getDevicePointToMonitor, {
deviceIds: deviceIds, deviceIds: deviceIds,
@ -275,6 +278,11 @@
// pageData // pageData
const getSelect = () => { const getSelect = () => {
pageData.tableList = [];
pageData.tableColumns = [];
pageData.graphList = [];
pageData.XData = [];
if (!startDate.value || !endDate.value) { if (!startDate.value || !endDate.value) {
// //
const today = new Date(); const today = new Date();
@ -293,6 +301,10 @@
} }
}); });
} }
if (deviceIds.length == 0) {
message.warning('请先选择设备!');
return;
}
http http
.post(deviceMonitor.getDeviceGraph, { .post(deviceMonitor.getDeviceGraph, {
deviceIds: deviceIds, deviceIds: deviceIds,
@ -414,8 +426,9 @@
<style lang="less" scoped> <style lang="less" scoped>
.ns-tree-title { .ns-tree-title {
display: flex;
user-select: text; user-select: text;
margin-bottom: 5px; margin-bottom: 12px;
padding-bottom: 10px; padding-bottom: 10px;
padding-top: 10px; padding-top: 10px;
border-bottom: 1px solid #e9e9e9; border-bottom: 1px solid #e9e9e9;
@ -444,4 +457,25 @@
// width: 100%; // width: 100%;
// // margin-bottom: 10px; // // margin-bottom: 10px;
// } // }
.title {
text-align: left;
height: 32px;
line-height: 32px;
font-weight: bold;
user-select: text;
position: relative;
padding-left: 9px;
}
// .title::before {
// content: '';
// position: absolute;
// left: 10px;
// top: 50%;
// transform: translateY(-50%);
// height: 13px;
// width: 3px;
// border-radius: 1px;
// background-color: #2778ff;
// }
</style> </style>

31
hx-ai-intelligent/src/view/monitor/energyMonitor/graphTable/index.vue

@ -1,18 +1,21 @@
<template> <template>
<a-table <div style="height: 100%; width: 100%; overflow-y: auto">
:columns="columns" <a-table
:data-source="data" :columns="columns"
bordered :data-source="data"
style="width: 99%; height: 90%; margin-left: 0.5%" bordered
:pagination="false" style="width: 99%; margin-left: 0.5%"
:scroll="{ x: '2000' }" /> :pagination="false"
<a-pagination :scroll="{ x: '2000' }" />
:total="total" <a-pagination
:show-total="(total, range) => ` 共 ${total} 条`" :total="total"
show-size-changer size="small"
show-quick-jumper :show-total="(total, range) => `显示第${range[0]}到${range[1]}条记录 ,共${total} 条记录`"
@change="onChange" show-size-changer
style="display: flex; justify-content: right; margin-top: 10px; margin-right: 30px" /> show-quick-jumper
@change="onChange"
style="display: flex; justify-content: right; margin-top: 10px; margin-right: 30px" />
</div>
</template> </template>
<script lang="ts"> <script lang="ts">

28
hx-ai-intelligent/src/view/monitor/energyMonitor/page.vue

@ -32,12 +32,13 @@
<ns-icon :name="iconName" size="18" style="margin-right: 10px" @click="change" /> <ns-icon :name="iconName" size="18" style="margin-right: 10px" @click="change" />
</div> </div>
</div> </div>
<span style="padding-left: 10px; line-height: 20px"> <!-- <span style="padding-left: 10px; line-height: 20px">
<ns-icon name="title" size="11" style="margin-right: 3px" />统计数据 <ns-icon name="title" size="11" style="margin-right: 3px" />统计数据
</span> </span> -->
<div class="title">统计数据</div>
</div> </div>
<div v-if="activeKey == '1'" style="height: 72%; width: 100%"> <div v-if="activeKey == '1'" style="height: 75%; width: 100%">
<graph-graph ref="graphRef" v-if="isGraph" /> <graph-graph ref="graphRef" v-if="isGraph" />
<environment-table ref="tableRef" v-else style="width: 100%" /> <environment-table ref="tableRef" v-else style="width: 100%" />
</div> </div>
@ -155,4 +156,25 @@
::v-deep .ant-tabs-tab:hover { ::v-deep .ant-tabs-tab:hover {
color: #000000; /* 悬停时的文字颜色 */ color: #000000; /* 悬停时的文字颜色 */
} }
.title {
text-align: left;
height: 32px;
line-height: 32px;
font-weight: bold;
user-select: text;
position: relative;
padding-left: 20px;
}
.title::before {
content: '';
position: absolute;
left: 10px;
top: 50%;
transform: translateY(-50%);
height: 13px;
width: 3px;
border-radius: 1px;
background-color: #2778ff;
}
</style> </style>

20
hx-ai-intelligent/src/view/monitor/energyMonitor/tree/index.vue

@ -2,8 +2,9 @@
<template> <template>
<div class="parent-container"> <div class="parent-container">
<div class="ns-tree-title"> <div class="ns-tree-title">
<ns-icon name="common" size="11" style="margin-right: 3px" /> <ns-icon name="common" size="11" style="margin-top: 10px" />
<span>数据点位</span> <!-- <span>数据点位</span> -->
<div class="title">数据点位</div>
</div> </div>
<a-select <a-select
@ -383,7 +384,7 @@
deviceInfoCodes: mode.value == '0' ? checkedKeys.value : [], // device_info_code deviceInfoCodes: mode.value == '0' ? checkedKeys.value : [], // device_info_code
energyQueryType: mode.value, // 0 1 energyQueryType: mode.value, // 0 1
nodeIds: mode.value == '1' ? checkedKeys.value : [], nodeIds: mode.value == '1' ? checkedKeys.value.checked : [],
startDate: startTime, startDate: startTime,
endDate: endTime, endDate: endTime,
}) })
@ -647,8 +648,9 @@
<style lang="less" scoped> <style lang="less" scoped>
.ns-tree-title { .ns-tree-title {
display: flex;
user-select: text; user-select: text;
margin-bottom: 5px; margin-bottom: 12px;
padding-bottom: 10px; padding-bottom: 10px;
padding-top: 10px; padding-top: 10px;
border-bottom: 1px solid #e9e9e9; border-bottom: 1px solid #e9e9e9;
@ -690,4 +692,14 @@
.ant-radio-button-wrapper:not(:first-child)::before { .ant-radio-button-wrapper:not(:first-child)::before {
width: 0; width: 0;
} }
.title {
text-align: left;
height: 32px;
line-height: 32px;
font-weight: bold;
user-select: text;
position: relative;
padding-left: 9px;
}
</style> </style>

118
hx-ai-intelligent/src/view/monitor/environmentMonitor/aggregateData/index.vue

@ -15,7 +15,7 @@
"> ">
<div style="display: flex"> <div style="display: flex">
<ns-icon name="zongheshuju" size="30" style="margin-right: 3px" /> <ns-icon name="zongheshuju" size="30" style="margin-right: 3px" />
<span>设备状态</span> <span style="font-weight: bold">设备状态</span>
</div> </div>
<div style="width: 100%; height: 100%; padding-left: 10%; padding-right: 10%"> <div style="width: 100%; height: 100%; padding-left: 10%; padding-right: 10%">
@ -73,7 +73,7 @@
"> ">
<div style="display: flex"> <div style="display: flex">
<ns-icon name="zongheshuju" size="30" style="margin-right: 3px" /> <ns-icon name="zongheshuju" size="30" style="margin-right: 3px" />
<div style="height: 10%">平均值</div> <div style="height: 10%; font-weight: bold">平均值</div>
</div> </div>
<div style="display: flex; flex-wrap: wrap; width: 100%; height: 92%"> <div style="display: flex; flex-wrap: wrap; width: 100%; height: 92%">
@ -144,7 +144,7 @@
"> ">
<div style="width: 100%; display: flex; align-items: center"> <div style="width: 100%; display: flex; align-items: center">
<ns-icon name="zongheshuju" size="30" style="margin-right: 3px; margin-top: 8px" /> <ns-icon name="zongheshuju" size="30" style="margin-right: 3px; margin-top: 8px" />
<div style="width: 20%">环境指数分析</div> <div style="width: 20%; font-weight: bold">环境指数分析</div>
<div style="width: 80%; float: right; padding-right: 40px"> <div style="width: 80%; float: right; padding-right: 40px">
<a-select <a-select
v-model:value="typeValue" v-model:value="typeValue"
@ -812,24 +812,110 @@
lineHeight: 20, lineHeight: 20,
}, },
}, },
// dataZoom: [
// {
// show: true,
// type: 'slider',
// zoomLock: true,
// startValue: 0, //
// endValue: 23,
// bottom: 20,
// height: 10,
// showDetail: false,
// },
// {
// show: true,
// type: 'inside',
// xAxisIndex: 0,
// zoomOnMouseWheel: false, //
// moveOnMouseMove: true, //
// moveOnMouseWheel: true,
// },
// ],
//
dataZoom: [ dataZoom: [
{ {
show: true,
type: 'slider', type: 'slider',
zoomLock: true, // backgroundColor: 'yellow',
fillerColor: new echarts.graphic.LinearGradient(
0,
0,
1,
0,
[
{
offset: 0,
color: 'rgba(97, 134, 255, 1)',
},
{
offset: 1,
color: 'rgba(36, 186, 255, 1)',
},
],
false,
),
height: 12, // slider15
// start: 0,
// end: 100,
startValue: 0, // startValue: 0, //
endValue: 23, endValue: 23,
bottom: 20, right: 60,
height: 10, left: 60,
showDetail: false, bottom: 10,
}, handleIcon:
{ 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5M36.9,35.8h-1.3z M27.8,35.8 h-1.3H27L27.8,35.8L27.8,35.8z', // 使 axisPointer
show: true, handleSize: '140%', //
type: 'inside', // borderColor: 'none',
xAxisIndex: 0, handleStyle: {
zoomOnMouseWheel: false, // color: new echarts.graphic.LinearGradient(
moveOnMouseMove: true, // 0,
moveOnMouseWheel: true, 0,
1,
0,
[
{
offset: 0,
color: 'rgba(97, 134, 255, 1)',
},
{
offset: 1,
color: 'rgba(36, 186, 255, 1)',
},
],
false,
),
borderWidth: 4,
borderColor: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: 'rgba(255, 255, 255, 1)',
},
{
offset: 1,
color: 'rgba(204, 238, 255, 1)',
},
],
false,
),
shadowOffsetX: 0, // x
shadowOffsetY: 0, // y
},
// label
// 20050101 2005\n0101
// labelFormatter: function (index, value) {
// const year = value.slice(0, 4);
// const date = value.slice(4);
// return year + '\n' + date;
// },
// textStyle: {
// fontStyle: 'italic', //
// },
// showDataShadow: false, //
}, },
], ],
visualMap: { visualMap: {

32
hx-ai-intelligent/src/view/monitor/environmentMonitor/averageData/index.vue

@ -1,7 +1,7 @@
<!-- eslint-disable vue/v-on-event-hyphenation --> <!-- eslint-disable vue/v-on-event-hyphenation -->
<template> <template>
<!-- <a-spin :spinning="loading"> --> <!-- <a-spin :spinning="loading"> -->
<div style="background: #ffffff; height: 95%; position: relative"> <div style="background: #ffffff; height: 95%; position: relative; overflow-y: auto">
<a-spin :spinning="loading"> <a-spin :spinning="loading">
<a-table <a-table
:columns="tableColumns" :columns="tableColumns"
@ -13,9 +13,10 @@
<div <div
style="display: flex; align-items: center; justify-content: space-between; width: 100%"> style="display: flex; align-items: center; justify-content: space-between; width: 100%">
<div style="display: flex; align-items: center; width: 85%"> <div style="display: flex; align-items: center; width: 85%">
<div style="width: 10%" <div style="width: 10%">
><ns-icon name="title" size="11" style="margin-right: 3px" />数据报表</div <!-- <ns-icon name="title" size="11" style="margin-right: 3px" /> -->
> <span class="title">数据报表</span>
</div>
<a-select <a-select
v-model:value="frequencyValue" v-model:value="frequencyValue"
@ -175,6 +176,8 @@
startDate.value = year + '-' + month + '-' + day; startDate.value = year + '-' + month + '-' + day;
endDate.value = year + '-' + month + '-' + day; endDate.value = year + '-' + month + '-' + day;
} }
tableColumns.value = [];
tableColumns.value.push(...tableColumnsA);
http http
.post(environmentMonitor.getDeviceAveragesByRate, { .post(environmentMonitor.getDeviceAveragesByRate, {
orgId: orgId.value, orgId: orgId.value,
@ -253,4 +256,25 @@
/* ::v-deep .ant-table-title + .ant-table-container table > thead > tr:first-child th:last-child { /* ::v-deep .ant-table-title + .ant-table-container table > thead > tr:first-child th:last-child {
display: none !important; display: none !important;
} */ } */
.title {
text-align: left;
height: 32px;
line-height: 32px;
font-weight: bold;
user-select: text;
position: relative;
padding-left: 9px;
}
.title::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
height: 13px;
width: 3px;
border-radius: 1px;
background-color: #2778ff;
}
</style> </style>

28
hx-ai-intelligent/src/view/monitor/environmentMonitor/historyData/index.vue

@ -19,9 +19,10 @@
border-top: 0 !important; border-top: 0 !important;
"> ">
<div style="display: flex; align-items: center; width: 85%"> <div style="display: flex; align-items: center; width: 85%">
<div style="width: 10%" <div style="width: 10%">
><ns-icon name="title" size="11" style="margin-right: 3px" />数据报表</div <!-- <ns-icon name="title" size="11" style="margin-right: 3px" /> -->
> <span class="title">数据报表</span>
</div>
<a-select <a-select
v-model:value="typeValue" v-model:value="typeValue"
placeholder="请选择环境参数" placeholder="请选择环境参数"
@ -324,7 +325,6 @@
}); });
} }
x.value = 360 + headerList.length * 60; x.value = 360 + headerList.length * 60;
debugger;
let columnA: any[] = [...tableColumnsA]; let columnA: any[] = [...tableColumnsA];
columnA.push(...tableColumnsB); columnA.push(...tableColumnsB);
tableColumns.value = columnA; tableColumns.value = columnA;
@ -406,4 +406,24 @@
/* ::v-deep .ant-table-title + .ant-table-container table > thead > tr:first-child th:last-child { /* ::v-deep .ant-table-title + .ant-table-container table > thead > tr:first-child th:last-child {
display: none !important; display: none !important;
} */ } */
.title {
text-align: left;
height: 32px;
line-height: 32px;
font-weight: bold;
user-select: text;
position: relative;
padding-left: 9px;
}
.title::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
height: 13px;
width: 3px;
border-radius: 1px;
background-color: #2778ff;
}
</style> </style>

Loading…
Cancel
Save