Browse Source

1.统一累积冷量单位kwh,瞬时冷量单位kw

2.首页、中央热水-项目总览、能源分析页面图表添加最大最小值
dev
selia-zx 1 week ago
parent
commit
e30daf2a0c
  1. 4
      src/views/centerairC/energyAnalysis/components/energyAnalysis.vue
  2. 4
      src/views/centerairC/energyAnalysis/components/qnqAnalysis.vue
  3. 4
      src/views/centerairC/energyAnalysis/components/ynyAnalysis.vue
  4. 4
      src/views/centerairC/energyAnalysis/components/ynyQnqAnalysis.vue
  5. 6
      src/views/centerairC/overview/index.vue
  6. 110
      src/views/components/monitor/hotWaterMonitor.vue
  7. 54
      src/views/components/viewEnergy.vue
  8. 51
      src/views/hotWater/energyAnalysis/components/energyReport.vue
  9. 94
      src/views/hotWater/energyAnalysis/components/temReport.vue
  10. 98
      src/views/hotWater/energyAnalysis/components/waterReport.vue
  11. 98
      src/views/hotWater/overview/index.vue
  12. 4
      src/views/index.vue

4
src/views/centerairC/energyAnalysis/components/energyAnalysis.vue

@ -124,7 +124,7 @@
</thead>
<tbody>
<tr>
<td v-if="coldData">制冷量(kwr)</td>
<td v-if="coldData">制冷量(kwh)</td>
<td v-for="(item, index) in coldData" :key="index">
{{ item }}
</td>
@ -454,7 +454,7 @@ export default {
'<span style="color: #000000; font-weight: bold;margin-left:5px">' +
value +
" " +
"kwr" +
"kw" +
"</span><br>";
} else if (seriesName === "瞬时功率") {
res +=

4
src/views/centerairC/energyAnalysis/components/qnqAnalysis.vue

@ -414,7 +414,7 @@ export default {
console.log("Max2", Max2);
// tooltip-
if (this.timeIndex2 == 0) {
this.unitValue = "(kwr)";
this.unitValue = "(kwh)";
} else if (this.timeIndex2 == 1) {
this.unitValue = "(kwh)";
} else {
@ -553,7 +553,7 @@ export default {
'<span style="color: #000000; font-weight: bold;margin-left:5px">' +
value +
" " +
"kwr" +
"kwh" +
"</span><br>";
} else if (seriesName === "上期") {
res +=

4
src/views/centerairC/energyAnalysis/components/ynyAnalysis.vue

@ -411,7 +411,7 @@ export default {
console.log("Max2", Max2);
// tooltip-
if (this.timeIndex2 == 0) {
this.unitValue = "(kwr)";
this.unitValue = "(kwh)";
} else if (this.timeIndex2 == 1) {
this.unitValue = "(kwh)";
} else {
@ -558,7 +558,7 @@ export default {
'<span style="color: #000000; font-weight: bold;margin-left:5px">' +
value +
" " +
"kwr" +
"kwh" +
"</span><br>";
} else if (seriesName === "上期") {
res +=

4
src/views/centerairC/energyAnalysis/components/ynyQnqAnalysis.vue

@ -414,7 +414,7 @@ export default {
// console.log("Max2", Max2);
// tooltip-
if (this.timeIndex2 == 0) {
this.unitValue = "(kwr)";
this.unitValue = "(kwh)";
} else if (this.timeIndex2 == 1) {
this.unitValue = "(kwh)";
} else {
@ -565,7 +565,7 @@ export default {
'<span style="color: #000000; font-weight: bold;margin-left:5px">' +
value +
" " +
"kwr" +
"kwh" +
"</span><br>";
} else if (
(seriesName === "本期" || seriesName === "同期") &&

6
src/views/centerairC/overview/index.vue

@ -109,7 +109,7 @@
<div class="table-content" style="width: 100%">
<el-table :data="tableData" style="width: 100%" stripe>
<el-table-column prop="date" label="时间"> </el-table-column>
<el-table-column prop="coldData" label="制冷量(kwr)">
<el-table-column prop="coldData" label="制冷量(kwh)">
</el-table-column>
<el-table-column prop="electData" label="用电量(kwh)">
</el-table-column>
@ -155,7 +155,7 @@
</tr>
<tr>
<th align="center">时间</th>
<th align="center">制冷量(kwr)</th>
<th align="center">制冷量(kwh)</th>
<th align="center">用电量(kwh)</th>
<th align="center">EER</th>
</tr>
@ -579,7 +579,7 @@ export default {
'<span style="color: #000000; font-weight: bold;margin-left:5px">' +
value +
" " +
"kwr" +
"kwh" +
"</span><br>";
} else if (seriesName === "用电量") {
res +=

110
src/views/components/monitor/hotWaterMonitor.vue

@ -48,8 +48,8 @@
<div class="flow-text text3">无线网关</div>
<div class="flow-text text4">回水阀</div>
<div class="flow-text text5">房间</div>
<div class="flow-text text20">水箱1</div>
<div class="flow-text text21">水箱2</div>
<div class="flow-text text20">水箱1(总容量:2.5)</div>
<div class="flow-text text21">水箱2(总容量:2.5)</div>
<!-- 供水定位 -->
<img class="supply" v-if="
this.upWaterState1 === '1' ||
@ -77,10 +77,10 @@
<!-- 循环加热泵定位-->
<img class="cycle-pipeline" src="../../../assets/flowimg/cycle-pipeline.png" alt="" />
<img class="cyclepum1" :src="getCyclePump1Img()" alt=""
<img class="cycle-pipeline" :src="getCyclePipelineImg()" alt="" />
<img class="cyclepum1" :src="getCyclePumpImg('loopPumpState1')" alt=""
@click="handleCyclePumpClick('主楼1号循环泵')" />
<img class="cyclepum2" :src="getCyclePump2Img()" alt=""
<img class="cyclepum2" :src="getCyclePumpImg('loopPumpState2')" alt=""
@click="handleCyclePumpClick('主楼2号循环泵')" />
<!-- 热泵定位 -->
<div :class="getHotPumPositionClass">
@ -90,14 +90,14 @@
<div class="hotPump-name">{{ item.pumpName }}</div>
<img class="hotPump-img" :src="getImageSrc(item)" alt=""
@click="handleHotPumpClick(item)" />
<!-- <div class="hotPump-tem1">温度:{{ item.waterTemp }}</div>
<!-- <div class="hotPump-tem1">温度:{{ item.tempSet }}</div>
-->
<img class="tem2" src="../../../assets/flowimg/thermometer.png" alt="" />
<div class="temContainer2">
<div class="temprogress" :style="{ height: item.waterTemp + '%' }">
<div class="temprogress" :style="{ height: item.tempSet + '%' }">
</div>
</div>
<b class="temdiv2">{{ item.waterTemp }}</b>
<b class="temdiv2">{{ item.tempSet }}</b>
</template>
<template v-else>
<img class="hotPump-img" :src="getImageSrc(item)" alt=""
@ -105,10 +105,10 @@
<div class="hotPump-name">{{ item.pumpName }}</div>
<img class="tem2" src="../../../assets/flowimg/thermometer.png" alt="" />
<div class="temContainer2">
<div class="temprogress" :style="{ height: item.waterTemp + '%' }">
<div class="temprogress" :style="{ height: item.tempSet + '%' }">
</div>
</div>
<b class="temdiv2">{{ item.waterTemp }}</b>
<b class="temdiv2">{{ item.tempSet }}</b>
</template>
</template>
<template v-else-if="tableData.length === 8">
@ -117,15 +117,15 @@
<div class="hotPump-name">{{ item.pumpName }}</div>
<img class="hotPump-img" :src="getImageSrc(item)" alt=""
@click="handleHotPumpClick(item)" />
<!-- <div class="hotPump-tem1">温度:{{ item.waterTemp }}</div>
<!-- <div class="hotPump-tem1">温度:{{ item.tempSet }}</div>
-->
<img class="tem2" src="../../../assets/flowimg/thermometer.png"
alt="" />
<div class="temContainer2">
<div class="temprogress" :style="{ height: item.waterTemp + '%' }">
<div class="temprogress" :style="{ height: item.tempSet + '%' }">
</div>
</div>
<b class="temdiv2">{{ item.waterTemp }}</b>
<b class="temdiv2">{{ item.tempSet }}</b>
</template>
<template v-else>
<div class="hotPump-name">{{ item.pumpName }}</div>
@ -134,10 +134,10 @@
<img class="tem1" src="../../../assets/flowimg/thermometer.png"
alt="" />
<div class="temContainer1">
<div class="temprogress" :style="{ height: item.waterTemp + '%' }">
<div class="temprogress" :style="{ height: item.tempSet + '%' }">
</div>
</div>
<b class="temdiv1">{{ item.waterTemp }}</b>
<b class="temdiv1">{{ item.tempSet }}</b>
</template>
</template>
<template v-else>
@ -145,15 +145,15 @@
<img class="hotPump-img" :src="getImageSrc(item)" alt=""
@click="handleHotPumpClick(item)" />
<div class="hotPump-name">{{ item.pumpName }}</div>
<!-- <div class="hotPump-tem1">温度:{{ item.waterTemp }}</div>
<!-- <div class="hotPump-tem1">温度:{{ item.tempSet }}</div>
-->
<img class="tem2" src="../../../assets/flowimg/thermometer.png"
alt="" />
<div class="temContainer2">
<div class="temprogress" :style="{ height: item.waterTemp + '%' }">
<div class="temprogress" :style="{ height: item.tempSet + '%' }">
</div>
</div>
<b class="temdiv2">{{ item.waterTemp }}</b>
<b class="temdiv2">{{ item.tempSet }}</b>
</template>
<template v-else>
<img class="hotPump-img" :src="getImageSrc(item)" alt=""
@ -162,10 +162,10 @@
<img class="tem1" src="../../../assets/flowimg/thermometer.png"
alt="" />
<div class="temContainer1">
<div class="temprogress" :style="{ height: item.waterTemp + '%' }">
<div class="temprogress" :style="{ height: item.tempSet + '%' }">
</div>
</div>
<b class="temdiv1">{{ item.waterTemp }}</b>
<b class="temdiv1">{{ item.tempSet }}</b>
</template>
</template>
</template>
@ -190,12 +190,12 @@
<div class="progressContainer1" v-if="getWaterPercentage(progress2, 2.5) > 50">
<div class="progress" :style="{ height: getWaterPercentage(progress2, 2.5) + '%' }">
</div>
<b class="propo">{{ progress2 }}</b>
<b class="propo">实际容量:{{ progress2 }}</b>
</div>
<div class="progressContainer2" v-else>
<div class="progress" :style="{ height: getWaterPercentage(progress2, 2.5) + '%' }">
</div>
<b class="propo">{{ progress2 }}</b>
<b class="propo">实际容量:{{ progress2 }}</b>
</div>
<!-- 保温水箱1定位 -->
@ -211,12 +211,12 @@
<div class="progressContainer3" v-if="getWaterPercentage(progress1, 2.5) > 50">
<div class="progress" :style="{ height: getWaterPercentage(progress1, 2.5) + '%' }">
</div>
<b class="propo">{{ progress1 }}</b>
<b class="propo">实际容量:{{ progress1 }}</b>
</div>
<div class="progressContainer4" v-else>
<div class="progress" :style="{ height: getWaterPercentage(progress1, 2.5) + '%' }">
</div>
<b class="propo">{{ progress1 }}</b>
<b class="propo">实际容量:{{ progress1 }}</b>
</div>
</div>
</div>
@ -232,6 +232,7 @@
<div class="flow-text text17">低区回水泵1</div>
<div class="flow-text text18">低区回水泵2</div>
<div class="flow-text text19">回水管</div>
<div class="flow-text text22">水箱(总容量:2.5)</div>
<!-- 左上 -->
<img class="upperLeft" src="../../../assets/flowimg/upperLeft.png" alt="" />
<!-- 低区回水 -->
@ -271,10 +272,10 @@
@click="handleHotPumpClick(item)" alt="" />
<img class="tem1" src="../../../assets/flowimg/thermometer.png" alt="" />
<div class="temContainer1">
<div class="temprogress" :style="{ height: item.waterTemp + '%' }">
<div class="temprogress" :style="{ height: item.tempSet + '%' }">
</div>
</div>
<b class="temdiv1">{{ item.waterTemp }}</b>
<b class="temdiv1">{{ item.tempSet }}</b>
</template>
<template v-else>
<img class="hotPump-img" :src="getImageSrc(item)"
@ -282,10 +283,10 @@
<div class="hotPump-name">{{ item.pumpName }}</div>
<img class="tem1" src="../../../assets/flowimg/thermometer.png" alt="" />
<div class="temContainer1">
<div class="temprogress" :style="{ height: item.waterTemp + '%' }">
<div class="temprogress" :style="{ height: item.tempSet + '%' }">
</div>
</div>
<b class="temdiv1">{{ item.waterTemp }}</b>
<b class="temdiv1">{{ item.tempSet }}</b>
</template>
</template>
</div>
@ -309,12 +310,12 @@
<div class="progressContainer5" v-if="getWaterPercentage(progress1, 2.5) > 50">
<div class="progress" :style="{ height: getWaterPercentage(progress1, 2.5) + '%' }">
</div>
<b class="propo">{{ progress1 }}</b>
<b class="propo">实际容量:{{ progress1 }}</b>
</div>
<div class="progressContainer6" v-else>
<div class="progress" :style="{ height: getWaterPercentage(progress1, 2.5) + '%' }">
</div>
<b class="propo">{{ progress1 }}</b>
<b class="propo">实际容量:{{ progress1 }}</b>
</div>
</div>
</div>
@ -1052,21 +1053,24 @@ export default {
isHotPumpRunning() {
return this.tableData.some(item => Number(item.runState) !== 0);
},
// -1
getCyclePump1Img() {
//
getCyclePumpImg(stateKey) {
if (this.tableData.length === 0) return require('../../../assets/flowimg/closepum.png');
const state = Number(this.tableData[0].loopPumpState1);
const state = Number(this.tableData[0][stateKey]);
if (state === 1) return require('../../../assets/flowimg/startpum.png');
if (state === 2) return require('../../../assets/flowimg/badpum.png');
return require('../../../assets/flowimg/closepum.png');
},
// -2
getCyclePump2Img() {
if (this.tableData.length === 0) return require('../../../assets/flowimg/closepum.png');
const state = Number(this.tableData[0].loopPumpState2);
if (state === 1) return require('../../../assets/flowimg/startpum.png');
if (state === 2) return require('../../../assets/flowimg/badpum.png');
return require('../../../assets/flowimg/closepum.png');
//
getCyclePipelineImg() {
if (this.tableData.length === 0) return require('../../../assets/flowimg/cycle-pipeline.png');
const state1 = Number(this.tableData[0].loopPumpState1);
const state2 = Number(this.tableData[0].loopPumpState2);
// 1
if (state1 === 1 || state2 === 1) {
return require('../../../assets/flowimg/cycle-pipeline.gif');
}
return require('../../../assets/flowimg/cycle-pipeline.png');
},
//
handleHotPumpClick(item) {
@ -1701,14 +1705,20 @@ export default {
.text20 {
position: absolute;
top: 3.4rem;
left: 5.4rem;
left: 4.8rem;
z-index: 1;
}
.text21 {
position: absolute;
top: 3.4rem;
left: 2.8rem;
left: 2.2rem;
z-index: 1;
}
.text22 {
position: absolute;
top: 3.2rem;
left: 2rem;
z-index: 1;
}
@ -1944,7 +1954,7 @@ export default {
width: 0.6rem;
height: 1.15rem;
position: absolute;
top: 1.9rem;
top: 1.7rem;
left: 3rem;
z-index: 3;
}
@ -2009,7 +2019,7 @@ export default {
.waterBox3 {
position: absolute;
top: 0.7rem;
top: 0.5rem;
left: 1.6rem;
width: 2.16rem;
height: 2.6rem;
@ -2045,7 +2055,7 @@ export default {
letter-spacing: 0.01rem;
color: #d22727;
position: absolute;
top: 1.8rem;
top: 1.6rem;
left: 3rem;
z-index: 3;
}
@ -2077,6 +2087,7 @@ export default {
color: #d22727;
position: absolute;
top: -0.3rem;
left:-0.5rem;
z-index: 3;
white-space: nowrap;
}
@ -2109,6 +2120,7 @@ export default {
color: #d22727;
position: absolute;
top: -0.3rem;
left:-0.5rem;
z-index: 3;
white-space: nowrap;
}
@ -2141,6 +2153,7 @@ export default {
color: #d22727;
position: absolute;
top: -0.3rem;
left:-0.4rem;
z-index: 3;
white-space: nowrap;
}
@ -2173,6 +2186,7 @@ export default {
color: #d22727;
position: absolute;
top: -0.3rem;
left:-0.4rem;
z-index: 3;
white-space: nowrap;
}
@ -2184,7 +2198,7 @@ export default {
background-color: #dff1fa;
margin-left: 2%;
position: absolute;
top: 1.7rem;
top: 1.5rem;
left: 1.9rem;
border: solid 0.01rem #11aaea;
z-index: 3;
@ -2205,6 +2219,7 @@ export default {
color: #d22727;
position: absolute;
top: -0.3rem;
left:-0.4rem;
z-index: 3;
white-space: nowrap;
}
@ -2216,7 +2231,7 @@ export default {
background-color: #dff1fa;
margin-left: 2%;
position: absolute;
top: 1.7rem;
top: 1.5rem;
left: 1.9rem;
border: solid 0.01rem red;
z-index: 3;
@ -2237,6 +2252,7 @@ export default {
color: #d22727;
position: absolute;
top: -0.3rem;
left:-0.4rem;
z-index: 3;
white-space: nowrap;
}

54
src/views/components/viewEnergy.vue

@ -2,13 +2,8 @@
<div style="width: 100%; height: 100%">
<div class="right-table">
<div class="choice">
<div
class="mr20"
v-for="(item, index) in energyTypes"
:key="index"
@click="handleEnter(index, item.name)"
:class="{ timeStyle: sharedIndex == index }"
>
<div class="mr20" v-for="(item, index) in energyTypes" :key="index" @click="handleEnter(index, item.name)"
:class="{ timeStyle: sharedIndex == index }">
{{ item.name }}
</div>
</div>
@ -174,6 +169,46 @@ export default {
global: false, // false
},
},
markPoint: {
data: [
{
type: 'max',
name: '最大值',
symbol: 'arrow',
symbolRotate: 180,
label: {
formatter: function (params) {
return params.value + chartsObj.unit;
}
}
},
{
type: 'min',
name: '最小值',
symbol: 'arrow',
symbolRotate: 180,
label: {
formatter: function (params) {
return params.value + chartsObj.unit;
}
}
}
],
label: {
fontSize: titleFontSize * 0.8,
color: colorObj.color,
fontWeight: 'bold',
padding: [4, 8],
borderRadius: 4,
backgroundColor: 'rgba(0, 0, 0, 0.7)',
// symbolSize: titleFontSize * 0.8,
offset: [0, -titleFontSize * 1.5]
},
itemStyle: {
color: colorObj.color
},
symbolSize: titleFontSize * 1
}
},
],
};
@ -299,24 +334,29 @@ export default {
.right-table {
padding: 27px 15px 35px 15px;
}
.mr20 {
width: 92px;
padding: 2px;
}
.charts {
margin-top: 20px;
width: 100%;
height: 300px;
}
// 2000px
@media (min-width: 2000px) {
.right-table {
padding: 0.27rem 0.15rem 0.25rem 0.15rem !important;
}
.mr20 {
width: 0.92rem !important;
padding: 0.02rem !important;
}
.charts {
margin-top: 0.2rem !important;
height: 3rem !important;

51
src/views/hotWater/energyAnalysis/components/energyReport.vue

@ -559,6 +559,8 @@ export default {
}
},
renderingBroken() {
let unit = "";
let itemColor = "";
if (this.currentIndex === 0) {
this.brokenOption.yAxis.name = "吨";
this.brokenOption.yAxis.nameTextStyle = {
@ -577,6 +579,8 @@ export default {
color: "rgba(212, 142, 23,0)", // 100%
},
];
unit = "吨";
itemColor = "#d48e17";
} else if (this.currentIndex === 1) {
this.brokenOption.yAxis.name = "度";
this.brokenOption.yAxis.nameTextStyle = {
@ -595,6 +599,8 @@ export default {
color: "rgba(26, 179, 149,0)", // 100%
},
];
unit = "度";
itemColor = "#1ab395";
} else if (this.currentIndex === 2) {
this.brokenOption.yAxis.name = "度/吨";
this.brokenOption.yAxis.nameTextStyle = {
@ -613,9 +619,12 @@ export default {
color: "rgba(31, 141, 238,0)", // 100%
},
];
unit = "";
itemColor = "#1f8dee";
}
//
const currentIndex = this.currentIndex;
const titleFontSize = this.$refs.chart_ref.offsetWidth / 100;
// tooltip
this.brokenOption.tooltip = {
trigger: "axis",
@ -635,6 +644,46 @@ export default {
}
},
};
this.brokenOption.series[0].markPoint = {
data: [
{
type: 'max',
name: '最大值',
symbol: 'arrow',
symbolRotate: 180,
label: {
formatter: function (params) {
return params.value + unit;
}
}
},
{
type: 'min',
name: '最小值',
symbol: 'arrow',
symbolRotate: 180,
label: {
formatter: function (params) {
return params.value + unit;
}
}
}
],
label: {
fontSize: titleFontSize * 0.8,
color: itemColor,
fontWeight: 'bold',
padding: [4, 8],
borderRadius: 4,
backgroundColor: 'rgba(0, 0, 0, 0.7)',
// symbolSize: titleFontSize * 0.8,
offset: [0, -titleFontSize * 1.5]
},
itemStyle: {
color: itemColor
},
symbolSize: titleFontSize * 1
}
this.brokenOption.xAxis.data = this.brokenTime;
this.brokenInstanc.setOption(this.brokenOption);
},
@ -764,7 +813,7 @@ export default {
},
grid: {
top: "10%",
top: "15%",
left: "3%",
right: "4%",
bottom: "5%",

94
src/views/hotWater/energyAnalysis/components/temReport.vue

@ -2,25 +2,10 @@
<div class="big-machine" v-loading="listLoading">
<div class="condition">
<div class="condition-left">
<el-select
style="margin-right: 0.1rem"
v-model="building"
placeholder="请选择楼栋"
clearable
>
<el-option
v-for="(item, index) in builds"
:key="index"
:label="item.building_name"
:value="item.id"
/>
<el-select style="margin-right: 0.1rem" v-model="building" placeholder="请选择楼栋" clearable>
<el-option v-for="(item, index) in builds" :key="index" :label="item.building_name" :value="item.id" />
</el-select>
<el-date-picker
v-model="dayDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
>
<el-date-picker v-model="dayDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
<div class="success-btn" style="margin: 0 0.12rem">
<el-button type="success" @click="findData">查询</el-button>
@ -31,14 +16,8 @@
</div>
</div>
<div class="charts" ref="chart_ref"></div>
<el-table
:data="tableData"
@row-click="handlerow"
highlight-current-row
height="400"
ref="maintable"
:cell-style="tableRowStyle"
>
<el-table :data="tableData" @row-click="handlerow" highlight-current-row height="400" ref="maintable"
:cell-style="tableRowStyle">
<el-table-column v-if="showBuild" prop="buildingName" label="楼栋名称">
</el-table-column>
<el-table-column v-if="!showBuild" prop="deviceName" label="热泵名称">
@ -241,6 +220,7 @@ export default {
color: "rgba(31, 141, 238,0)", // 100%
},
];
const titleFontSize = this.$refs.chart_ref.offsetWidth / 100;
// tooltip
this.brokenOption.tooltip = {
trigger: "axis",
@ -252,6 +232,46 @@ export default {
return `${month}<br/>温度: ${value}`;
},
};
this.brokenOption.series[0].markPoint = {
data: [
{
type: 'max',
name: '最大值',
symbol: 'arrow',
symbolRotate: 180,
label: {
formatter: function (params) {
return params.value + '℃';
}
}
},
{
type: 'min',
name: '最小值',
symbol: 'arrow',
symbolRotate: 180,
label: {
formatter: function (params) {
return params.value + '℃';
}
}
}
],
label: {
fontSize: titleFontSize * 0.8,
color: "#1f8dee",
fontWeight: 'bold',
padding: [4, 8],
borderRadius: 4,
backgroundColor: 'rgba(0, 0, 0, 0.7)',
// symbolSize: titleFontSize * 0.8,
offset: [0, -titleFontSize * 1.5]
},
itemStyle: {
color: "#1f8dee"
},
symbolSize: titleFontSize * 1
}
this.brokenOption.xAxis.data = this.brokenTime;
this.brokenInstanc.setOption(this.brokenOption);
},
@ -576,6 +596,7 @@ export default {
}
}
}
.data-content {
display: flex;
flex-direction: row;
@ -583,6 +604,7 @@ export default {
justify-content: space-between;
width: 100%;
margin-top: 23px;
.data-li {
background-color: transparent;
border-radius: 8px;
@ -597,16 +619,19 @@ export default {
font-size: 0.16rem;
position: relative;
overflow: hidden;
.use-icon {
width: 0.6rem;
height: 0.6rem;
}
.use-text {
width: 33%;
display: flex;
flex-direction: column;
align-items: flex-start;
color: #dbdbdb;
.data-text {
z-index: 11 !important;
font-family: DIN-Bold;
@ -614,22 +639,26 @@ export default {
margin-top: 0.05rem;
color: #ffffff;
}
.downText {
color: #ff4027;
z-index: 11 !important;
font-family: DIN-Bold;
font-size: 0.24rem;
margin-top: 0.05rem;
.el-icon-bottom {
margin-right: 0.08rem;
}
}
.upText {
color: #2ff016;
z-index: 11 !important;
font-family: DIN-Bold;
font-size: 0.24rem;
margin-top: 0.05rem;
.el-icon-bottom,
.el-icon-top {
margin-right: 0.08rem;
@ -637,6 +666,7 @@ export default {
}
}
}
.type-img {
position: absolute;
bottom: 0;
@ -644,12 +674,14 @@ export default {
height: 0.52rem;
z-index: 10;
}
.type1 {
border: 1px solid #e8aa13;
border-radius: 10px;
/* 设置渐变背景 */
background: linear-gradient(rgba(26, 56, 65, 0.5), rgba(184, 196, 51, 0.5));
}
.type1::after {
content: "";
width: 100%;
@ -663,12 +695,14 @@ export default {
bottom: -100% !important;
z-index: 1;
}
.type2 {
border: 1px solid #27a0f2;
border-radius: 10px;
/* 设置渐变背景 */
background: linear-gradient(rgba(2, 43, 88, 0.5), rgba(8, 96, 179, 0.5));
}
.type2::after {
content: "";
width: 100%;
@ -682,12 +716,14 @@ export default {
bottom: -100% !important;
z-index: 1;
}
.type3 {
border: 1px solid #1ad3ef;
border-radius: 10px;
/* 设置渐变背景 */
background: linear-gradient(rgba(2, 50, 89, 0.5), rgba(17, 145, 151, 0.5));
}
.type3::after {
content: "";
width: 100%;
@ -701,12 +737,14 @@ export default {
bottom: -100% !important;
z-index: 1;
}
.type4 {
border: 1px solid #11d47b;
border-radius: 10px;
/* 设置渐变背景 */
background: linear-gradient(rgba(2, 57, 82, 0.5), rgba(5, 91, 90, 0.5));
}
.type4::after {
content: "";
width: 100%;
@ -721,19 +759,23 @@ export default {
z-index: 1;
}
}
.choice {
margin: 20px;
.mr20 {
padding: 0.05rem 0.2rem;
white-space: nowrap;
width: auto;
}
}
.charts {
width: 100%;
height: 300px;
margin-bottom: 0.1rem;
}
// 2000px
@media (min-width: 2000px) {
.condition {

98
src/views/hotWater/energyAnalysis/components/waterReport.vue

@ -2,25 +2,10 @@
<div class="big-machine" v-loading="listLoading">
<div class="condition">
<div class="condition-left">
<el-select
style="margin-right: 0.1rem"
v-model="building"
placeholder="请选择楼栋"
clearable
>
<el-option
v-for="(item, index) in builds"
:key="index"
:label="item.building_name"
:value="item.id"
/>
<el-select style="margin-right: 0.1rem" v-model="building" placeholder="请选择楼栋" clearable>
<el-option v-for="(item, index) in builds" :key="index" :label="item.building_name" :value="item.id" />
</el-select>
<el-date-picker
v-model="dayDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
>
<el-date-picker v-model="dayDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
<div class="success-btn" style="margin: 0 0.12rem">
<el-button type="success" @click="findData">查询</el-button>
@ -31,14 +16,8 @@
</div>
</div>
<div class="charts" ref="chart_ref"></div>
<el-table
:data="tableData"
@row-click="handlerow"
highlight-current-row
height="400"
ref="maintable"
:cell-style="tableRowStyle"
>
<el-table :data="tableData" @row-click="handlerow" highlight-current-row height="400" ref="maintable"
:cell-style="tableRowStyle">
<el-table-column prop="buildingName" label="楼栋名称"> </el-table-column>
<el-table-column v-if="showDeviceName" prop="deviceName" label="设备名称">
</el-table-column>
@ -241,6 +220,7 @@ export default {
},
];
// tooltip
const titleFontSize = this.$refs.chart_ref.offsetWidth / 100;
this.brokenOption.tooltip = {
trigger: "axis",
formatter: function (params) {
@ -248,9 +228,49 @@ export default {
const data = params[0];
const month = data.name;
const value = data.value;
return `${month}<br/>水位: ${value} %`;
return `${month}<br/>水位: ${value} `;
},
};
this.brokenOption.series[0].markPoint = {
data: [
{
type: 'max',
name: '最大值',
symbol: 'arrow',
symbolRotate: 180,
label: {
formatter: function (params) {
return params.value + '米';
}
}
},
{
type: 'min',
name: '最小值',
symbol: 'arrow',
symbolRotate: 180,
label: {
formatter: function (params) {
return params.value + '米';
}
}
}
],
label: {
fontSize: titleFontSize * 0.8,
color: "#1f8dee",
fontWeight: 'bold',
padding: [4, 8],
borderRadius: 4,
backgroundColor: 'rgba(0, 0, 0, 0.7)',
// symbolSize: titleFontSize * 0.8,
offset: [0, -titleFontSize * 1.5]
},
itemStyle: {
color: "#1f8dee"
},
symbolSize: titleFontSize * 1
}
this.brokenOption.xAxis.data = this.brokenTime;
this.brokenInstanc.setOption(this.brokenOption);
},
@ -437,7 +457,7 @@ export default {
},
grid: {
top: "10%",
top: "15%",
left: "3%",
right: "4%",
bottom: "5%",
@ -576,6 +596,7 @@ export default {
}
}
}
.data-content {
display: flex;
flex-direction: row;
@ -583,6 +604,7 @@ export default {
justify-content: space-between;
width: 100%;
margin-top: 23px;
.data-li {
background-color: transparent;
border-radius: 8px;
@ -597,16 +619,19 @@ export default {
font-size: 0.16rem;
position: relative;
overflow: hidden;
.use-icon {
width: 0.6rem;
height: 0.6rem;
}
.use-text {
width: 33%;
display: flex;
flex-direction: column;
align-items: flex-start;
color: #dbdbdb;
.data-text {
z-index: 11 !important;
font-family: DIN-Bold;
@ -614,22 +639,26 @@ export default {
margin-top: 0.05rem;
color: #ffffff;
}
.downText {
color: #ff4027;
z-index: 11 !important;
font-family: DIN-Bold;
font-size: 0.24rem;
margin-top: 0.05rem;
.el-icon-bottom {
margin-right: 0.08rem;
}
}
.upText {
color: #2ff016;
z-index: 11 !important;
font-family: DIN-Bold;
font-size: 0.24rem;
margin-top: 0.05rem;
.el-icon-bottom,
.el-icon-top {
margin-right: 0.08rem;
@ -637,6 +666,7 @@ export default {
}
}
}
.type-img {
position: absolute;
bottom: 0;
@ -644,12 +674,14 @@ export default {
height: 0.52rem;
z-index: 10;
}
.type1 {
border: 1px solid #e8aa13;
border-radius: 10px;
/* 设置渐变背景 */
background: linear-gradient(rgba(26, 56, 65, 0.5), rgba(184, 196, 51, 0.5));
}
.type1::after {
content: "";
width: 100%;
@ -663,12 +695,14 @@ export default {
bottom: -100% !important;
z-index: 1;
}
.type2 {
border: 1px solid #27a0f2;
border-radius: 10px;
/* 设置渐变背景 */
background: linear-gradient(rgba(2, 43, 88, 0.5), rgba(8, 96, 179, 0.5));
}
.type2::after {
content: "";
width: 100%;
@ -682,12 +716,14 @@ export default {
bottom: -100% !important;
z-index: 1;
}
.type3 {
border: 1px solid #1ad3ef;
border-radius: 10px;
/* 设置渐变背景 */
background: linear-gradient(rgba(2, 50, 89, 0.5), rgba(17, 145, 151, 0.5));
}
.type3::after {
content: "";
width: 100%;
@ -701,12 +737,14 @@ export default {
bottom: -100% !important;
z-index: 1;
}
.type4 {
border: 1px solid #11d47b;
border-radius: 10px;
/* 设置渐变背景 */
background: linear-gradient(rgba(2, 57, 82, 0.5), rgba(5, 91, 90, 0.5));
}
.type4::after {
content: "";
width: 100%;
@ -721,19 +759,23 @@ export default {
z-index: 1;
}
}
.choice {
margin: 20px;
.mr20 {
padding: 0.05rem 0.2rem;
white-space: nowrap;
width: auto;
}
}
.charts {
width: 100%;
height: 300px;
margin-bottom: 0.1rem;
}
// 2000px
@media (min-width: 2000px) {
.condition {

98
src/views/hotWater/overview/index.vue

@ -8,38 +8,22 @@
</div>
<div class="overview-data">
<div class="overview-data-li">
<img
class="overview-img"
src="../../../assets/images/overview1.png"
alt=""
/>
<img class="overview-img" src="../../../assets/images/overview1.png" alt="" />
<div class="overview-num">{{ useHotWater }}</div>
<div class="overview-title">昨日用水量()</div>
</div>
<div class="overview-data-li">
<img
class="overview-img"
src="../../../assets/images/overview2.png"
alt=""
/>
<img class="overview-img" src="../../../assets/images/overview2.png" alt="" />
<div class="overview-num">{{ electValue }}</div>
<div class="overview-title">昨日用电量()</div>
</div>
<div class="overview-data-li">
<img
class="overview-img"
src="../../../assets/images/overview3.png"
alt=""
/>
<img class="overview-img" src="../../../assets/images/overview3.png" alt="" />
<div class="overview-num">{{ electWater }}</div>
<div class="overview-title">昨日单耗(/)</div>
</div>
<div class="overview-data-li">
<img
class="overview-img"
src="../../../assets/images/overview4.png"
alt=""
/>
<img class="overview-img" src="../../../assets/images/overview4.png" alt="" />
<div class="overview-num">{{ allData }}</div>
<div class="overview-title">通讯设备设备总数()</div>
</div>
@ -62,13 +46,8 @@
<div class="special-title">当月数据统计</div>
</div>
<div class="choice">
<div
class="mr20"
v-for="(item, index) in timeData2"
:key="index"
@click="handleEnter(index, $event)"
:class="{ timeStyle: currentIndex == index }"
>
<div class="mr20" v-for="(item, index) in timeData2" :key="index" @click="handleEnter(index, $event)"
:class="{ timeStyle: currentIndex == index }">
{{ item.title }}
</div>
</div>
@ -504,6 +483,7 @@ export default {
//chartInstance2 线
initChart2() {
this.brokenInstanc = echarts.init(this.$refs.analyse_ref);
const titleFontSize = this.$refs.analyse_ref.offsetWidth / 100;
this.brokenOption = {
tooltip: {
trigger: "axis",
@ -527,7 +507,7 @@ export default {
},
grid: {
top: "4%",
top: "15%",
left: "3%",
right: "4%",
bottom: "5%",
@ -711,18 +691,27 @@ export default {
});
},
renderingBroken() {
let unit = "";
let itemColor = "";
if (this.currentIndex === 0) {
this.brokenOption.series[0].data = this.brokenData1;
this.brokenOption.series[0].itemStyle.color = "#d48e17";
unit = "吨";
itemColor = "#d48e17";
} else if (this.currentIndex === 1) {
this.brokenOption.series[0].data = this.brokenData2;
this.brokenOption.series[0].itemStyle.color = "#1ab395";
unit = "度";
itemColor = "#1ab395";
} else if (this.currentIndex === 2) {
this.brokenOption.series[0].data = this.brokenData3;
this.brokenOption.series[0].itemStyle.color = "#1f8dee";
unit = "";
itemColor = "#1f8dee";
}
//
const currentIndex = this.currentIndex;
const titleFontSize = this.$refs.analyse_ref.offsetWidth / 100;
// tooltip
this.brokenOption.tooltip = {
trigger: "axis",
@ -742,6 +731,46 @@ export default {
}
},
};
this.brokenOption.series[0].markPoint = {
data: [
{
type: 'max',
name: '最大值',
symbol: 'arrow',
symbolRotate: 180,
label: {
formatter: function (params) {
return params.value + unit;
}
}
},
{
type: 'min',
name: '最小值',
symbol: 'arrow',
symbolRotate: 180,
label: {
formatter: function (params) {
return params.value + unit;
}
}
}
],
label: {
fontSize: titleFontSize * 0.8,
color: itemColor,
fontWeight: 'bold',
padding: [4, 8],
borderRadius: 4,
backgroundColor: 'rgba(0, 0, 0, 0.7)',
// symbolSize: titleFontSize * 0.8,
offset: [0, -titleFontSize * 1.5]
},
itemStyle: {
color: itemColor
},
symbolSize: titleFontSize * 1
}
this.brokenOption.xAxis.data = this.brokenTime;
this.brokenInstanc.setOption(this.brokenOption);
},
@ -756,8 +785,10 @@ export default {
align-items: stretch;
justify-content: space-between;
margin-bottom: 0.2rem;
.overview-top-left {
width: 65%;
.overview-data {
width: 100%;
padding: 0.5rem;
@ -765,16 +796,19 @@ export default {
flex-direction: row;
align-items: center;
justify-content: space-between;
.overview-data-li {
width: 1.8rem;
height: 1.65rem;
position: relative;
.overview-img {
width: 1.8rem;
height: 1.65rem;
position: absolute;
top: 0;
}
.overview-num {
font-family: DIN-Bold;
font-size: 0.3rem;
@ -787,6 +821,7 @@ export default {
top: 0.28rem;
right: 0;
}
.overview-title {
font-family: SourceHanSansCN-Regular;
font-size: 0.18rem;
@ -802,23 +837,28 @@ export default {
}
}
}
.overview-top-right {
width: 33%;
.pump-charts {
width: 100%;
height: 2.65rem;
}
}
}
.overview-bottom {
.choice {
margin: 20px;
margin: 20px 20px 0 20px;
.mr20 {
padding: 0.05rem 0.2rem;
white-space: nowrap;
width: auto;
}
}
.brokenEcharts {
width: 100%;
height: 4rem;

4
src/views/index.vue

@ -84,7 +84,7 @@
</div>
</div>
<div class="overview-li">
<div>总产冷量(kw)</div>
<div>总产冷量(kwh)</div>
<div class="overview-details">
{{ projectView.totalCold }}
</div>
@ -108,7 +108,7 @@
</div>
</div>
<div class="overview-li">
<div>今年产冷量(kw)</div>
<div>今年产冷量(kwh)</div>
<div class="overview-details">
{{ projectView.yearCold }}
</div>

Loading…
Cancel
Save