¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-card class="flex-auto scroll-table-card" shadow="hover"> |
| | | <el-tabs v-model="state.activeName" class="w100 h100"> |
| | | <el-tab-pane label="çåå¾" name="heatMapPage" class="w100 h100"> |
| | | <div class="box_right_title form_m1"> |
| | | <span class="mr15">è¿è¡åæ</span> |
| | | <el-form ref="queryQHFormRef" :inline="true" :model="state.queryQHForm"> |
| | | <el-form-item label="æ¥æ"> |
| | | <el-date-picker |
| | | v-model="state.queryQHForm.themetime" |
| | | range-separator="~" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | :disabled-date="disablesDate" |
| | | type="daterange" |
| | | :default-time="defaultTime" |
| | | clearable |
| | | value-format="YYYY-MM-DD" |
| | | @change="getDateTime" |
| | | size="small" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button class="ml10" @click="timeQuery()" size="small" type="primary">æ¥è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div class="setQHForm"> |
| | | <el-form ref="queryQHFormRef" :inline="true" :model="state.queryQHForm" :rules="queryQHRules"> |
| | | <el-form-item label="æµéé´éå¼" prop="Qspace"> |
| | | <el-input-number |
| | | v-model="state.queryQHForm.Qspace" |
| | | placeholder="æµéé´éå¼" |
| | | autocomplete="off" |
| | | :controls="false" |
| | | style="width: 100px" |
| | | :min="1" |
| | | @input="flowIntervalValue" |
| | | ></el-input-number> |
| | | </el-form-item> |
| | | <el-form-item label="æ¬ç¨é´éå¼" prop="Hspace"> |
| | | <el-input-number |
| | | v-model="state.queryQHForm.Hspace" |
| | | placeholder="æ¬ç¨é´éå¼" |
| | | :controls="false" |
| | | style="width: 100px" |
| | | autocomplete="off" |
| | | @input="headIntervalValue" |
| | | ></el-input-number> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <el-form :model="state.QHForm" :inline="true"> |
| | | <el-form-item label="æ¾ç¤ºå¼" label-width="65px"> |
| | | <el-switch v-model="state.QHForm.showValue" @change="isShowQHValue" /> |
| | | </el-form-item> |
| | | <!-- @change="isShowTOrP" --> |
| | | <el-form-item label="æ¶é´æåç" label-width="95px"> |
| | | <el-switch v-model="state.QHForm.tOrP" @change="tOrPChange" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div style="display: flex; height: calc(100% - 120px)"> |
| | | <div id="chartHeatmapBox" class="chart" style="width: calc(100% - 0px); height: calc(100% - 0px)"></div> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="精确æ¥è¯¢" name="cacurateQueryPage"> |
| | | <el-row :gutter="8" class="h100"> |
| | | <el-col :span="20" :xs="24" class="flex-column h100"> |
| | | <div> |
| | | <div class="box_right_title form_m1"> |
| | | <span class="mr15">è¿è¡åæ</span> |
| | | <el-form ref="queryQHFormRef" :inline="true" :model="state.queryQHForm"> |
| | | <el-form-item label="æ¥æ"> |
| | | <el-date-picker |
| | | v-model="state.queryQHForm.themetime" |
| | | range-separator="~" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | :disabled-date="disablesDate" |
| | | type="daterange" |
| | | :default-time="defaultTime" |
| | | clearable |
| | | value-format="YYYY-MM-DD" |
| | | @change="getDateTime" |
| | | size="small" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <el-table |
| | | class="mt10" |
| | | ref="draggableTableRef" |
| | | border |
| | | row-key="ID" |
| | | :cell-style="{ textAlign: 'center' }" |
| | | :header-cell-style="{ textAlign: 'center' }" |
| | | :data="state.displayTableData" |
| | | style="width: 100%" |
| | | highlight-current-row |
| | | height="670" |
| | | > |
| | | <el-table-column type="index" label="åºå·" fixed="left" show-overflow-tooltip width="150" /> |
| | | <el-table-column prop="Name" label="æ³µç»å" show-overflow-tooltip width="150"> </el-table-column> |
| | | <el-table-column prop="Qavg" label="æµé" show-overflow-tooltip width="150" /> |
| | | <el-table-column prop="Havg" width="150" label="æ¬ç¨" show-overflow-tooltip /> |
| | | <el-table-column prop="Pavg" width="150" label="åç(kW)" show-overflow-tooltip /> |
| | | <el-table-column label="è¿è¡æ¶é´(h)" show-overflow-tooltip prop="Tsum" fixed="right"> </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="4" :xs="24" class="flex-column h100"> |
| | | <div class="box_right_title">åæåæ°</div> |
| | | <div class="mt10"> |
| | | <el-form label-width="45px" :model="state.analyzeForm" class="formLabel_size"> |
| | | <div class="flex flex-space-between"> |
| | | <el-form-item label="æµé"> |
| | | <el-input v-model="state.analyzeForm.Q" @input="verifiyInstant($event, 1)" class="analyseInput_left" /> |
| | | </el-form-item> |
| | | <el-form-item label="åå·®å¼" label-width="56px"> |
| | | <el-input |
| | | v-model="state.analyzeForm.deviationQValue" |
| | | @input="verifiyInstant($event, 2)" |
| | | class="analyseInput_right" |
| | | /> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="flex flex-space-between"> |
| | | <el-form-item label="æ¬ç¨"> |
| | | <el-input v-model="state.analyzeForm.H" @input="verifiyInstant($event, 3)" class="analyseInput_left" /> |
| | | </el-form-item> |
| | | <el-form-item label="åå·®å¼" label-width="56px"> |
| | | <el-input |
| | | v-model="state.analyzeForm.deviationHValue" |
| | | @input="verifiyInstant($event, 4)" |
| | | class="analyseInput_right" |
| | | /> |
| | | </el-form-item> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | <div class="box_right_title mt10">åå·®èå´</div> |
| | | <div class="mt10"> |
| | | <el-form label-width="45px" :model="state.deviationForm"> |
| | | <div class="flex flex-space-between"> |
| | | <el-form-item label="æµé"> |
| | | <el-input v-model="state.deviationForm.QdStart" @input="verifiyInstant($event, 5)" class="deviationInput" /> |
| | | <span style="color: #ccc; padding: 0px 4px"> ï½ </span> |
| | | <el-input v-model="state.deviationForm.QdEnd" @input="verifiyInstant($event, 6)" class="deviationInput" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="flex flex-space-between mt10"> |
| | | <el-form-item label="æ¬ç¨"> |
| | | <el-input v-model="state.deviationForm.HdStart" @input="verifiyInstant($event, 7)" class="deviationInput" /> |
| | | <span style="color: #ccc; padding: 0px 4px"> ï½ </span> |
| | | <el-input v-model="state.deviationForm.HdEnd" @input="verifiyInstant($event, 8)" class="deviationInput" /> |
| | | </el-form-item> |
| | | </div> |
| | | <el-form-item> |
| | | <el-button class="ml10 mt10" type="primary" @click="getTableDetail()">æ¥è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </el-card> |
| | | <el-dialog |
| | | :destroy-on-close="true" |
| | | v-model="state.heatmapDetailShow" |
| | | width="700px" |
| | | :close-on-click-modal="false" |
| | | @closed="closeDialog" |
| | | :title="state.dialogTitle" |
| | | > |
| | | <div style="display: flex; height: 400px; width: 100%"> |
| | | <div id="chartPie" class="chart" style="width: calc(100% - 0px); height: calc(100% - 0px)"></div> |
| | | </div> |
| | | |
| | | <el-table |
| | | ref="draggableTableRef" |
| | | border |
| | | :cell-style="{ textAlign: 'center' }" |
| | | :header-cell-style="{ textAlign: 'center' }" |
| | | :data="state.pieData" |
| | | style="width: 100%" |
| | | highlight-current-row |
| | | > |
| | | <el-table-column type="index" label="åºå·" show-overflow-tooltip width="70" /> |
| | | <el-table-column prop="Name" label="æ³µç»å" show-overflow-tooltip width="130"> </el-table-column> |
| | | <el-table-column prop="Qavg" label="æµé" show-overflow-tooltip width="110" /> |
| | | <el-table-column prop="Havg" width="90" label="æ¬ç¨" show-overflow-tooltip /> |
| | | <el-table-column prop="Pavg" width="130" label="åç(kW)" show-overflow-tooltip /> |
| | | <el-table-column label="è¿è¡æ¶é´(h)" show-overflow-tooltip prop="Tsum"> </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import * as echarts from 'echarts'; |
| | | import { ElMessage } from 'element-plus'; |
| | | import moment from 'moment'; |
| | | import type { FormRules } from 'vue'; |
| | | import { onActivated, onMounted, reactive, ref, shallowRef, toRefs } from 'vue'; |
| | | import { GetRectDetailListOfDayRange, GetRectListOfDayRange } from '/@/api/eta/runHeat'; |
| | | import { LOGIC_SITE_CODE } from '/@/constants'; |
| | | import { uniqueInArray } from '/@/utils/istation/common.js'; |
| | | import { verifyNumberComma } from '/@/utils/toolsValidate'; |
| | | const defaultTime = ref<[Date, Date]>([new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)]); |
| | | // å®ä¹åéå
容 |
| | | const state = reactive({ |
| | | chartData: [], |
| | | echartTitle: '', |
| | | queryQHForm: { |
| | | Qspace: 100, |
| | | Hspace: 1, |
| | | themetime: '', |
| | | } as any, |
| | | QHForm: { |
| | | showValue: false, |
| | | tOrP: true, |
| | | }, |
| | | heatmapDetailShow: false, //æå¼çåå¾çè¯¦ç» ï¼é»è®¤å
³éï¼ |
| | | dialogTitle: 'æ³µç»åä¿¡æ¯', //详ç»çåå |
| | | pieData: [], //饼徿°æ®æº |
| | | activeName: 'heatMapPage', //é»è®¤éä¸çåå¾ |
| | | displayTableData: [], //精确æ¥è¯¢æ°æ® |
| | | analyzeForm: { |
| | | deviationQValue: 50, |
| | | deviationHValue: 0.5, |
| | | } as any, //åæåæ° |
| | | deviationForm: {} as any, //åå·®èå´ |
| | | min: '', |
| | | max: '', |
| | | runTimeData: [], |
| | | minE: '', |
| | | maxE: '', |
| | | eData: [], |
| | | }); |
| | | const m_chartHeatmapBox = shallowRef(); |
| | | const m_chartPie = shallowRef(); |
| | | const queryQHFormRef = ref(); |
| | | //#region ====================== å¾è¡¨ä¼ å ====================== |
| | | const props = defineProps({ |
| | | currentListID: String, |
| | | queryDisabled: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | pumpTitle: String, |
| | | }); |
| | | let { currentListID, queryDisabled, pumpTitle } = toRefs(props); |
| | | //#endregion |
| | | //#region ====================== 设置æ¶é´äºä»¶ ====================== |
| | | //é»è®¤æ¶é´éæ©å7天/é»è®¤éæ©å½å¤© |
| | | const getdatatime = () => { |
| | | let sevenAgo = moment(new Date()).subtract(7, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'); |
| | | let today = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss'); |
| | | return [sevenAgo, today]; |
| | | }; |
| | | //è·åæ¥æçæ¶é´ |
| | | const getDateTime = (val) => { |
| | | if (val == null) { |
| | | return ElMessage.warning('è¯·éæ©æ¶é´'); |
| | | } |
| | | state.queryQHForm.themetime[0] = val[0]; |
| | | state.queryQHForm.themetime[1] = val[1]; |
| | | }; |
| | | // æ¶é´éå¶ |
| | | const disablesDate = (time) => { |
| | | return time.getTime() > new Date().getTime(); |
| | | }; |
| | | //æ¥è¯¢æ¶é´ |
| | | const timeQuery = async () => { |
| | | if (!queryQHFormRef.value) return; |
| | | await queryQHFormRef.value.validate(async (valid, fields) => { |
| | | if (valid) { |
| | | getChartList(); |
| | | } else { |
| | | return ElMessage.error('å¿
填项!'); |
| | | } |
| | | }); |
| | | }; |
| | | //#endregion |
| | | //#region ====================== 表åéªè¯ ====================== |
| | | const queryQHRules = reactive<FormRules>({ |
| | | Qspace: [{ required: true, message: 'åªè½è¾å
¥æ°å', trigger: 'blur' }], |
| | | Hspace: [{ required: true, message: 'åªè½è¾å
¥æ°å', trigger: 'blur' }], |
| | | }); |
| | | //#endregion |
| | | //#region ====================== å¾è¡¨ æ¬ç¨/æç/init====================== |
| | | //éè¿ æ¥ææ²çº¿è·åçåå¾å¾è¡¨æ°æ® |
| | | const getChartList = async () => { |
| | | await GetRectListOfDayRange({ |
| | | ObjectType: LOGIC_SITE_CODE, |
| | | ObjectID: currentListID.value, |
| | | Qspace: state.queryQHForm.Qspace, |
| | | Hspace: state.queryQHForm.Hspace, |
| | | StartDay: state.queryQHForm.themetime[0], |
| | | EndDay: state.queryQHForm.themetime[1], |
| | | }).then((res) => { |
| | | let result = res.Data; |
| | | if (res.Code != 0) { |
| | | state.chartData = []; |
| | | m_chartHeatmapBox.value && m_chartHeatmapBox.value.clear(); |
| | | return; |
| | | } |
| | | if (res.Data == null || res.Data.length == 0) { |
| | | state.chartData = []; |
| | | m_chartHeatmapBox.value && m_chartHeatmapBox.value.clear(); |
| | | return ElMessage.warning('ææ æ°æ®'); |
| | | } |
| | | state.chartData = result || []; |
| | | |
| | | setTimeout(() => { |
| | | //åå§åå¾è¡¨ |
| | | BuildchartHeatmapBox(); |
| | | }, 100); |
| | | }); |
| | | }; |
| | | // åå§åæµéæ¬ç¨å¾è¡¨ |
| | | const BuildchartHeatmapBox = () => { |
| | | m_chartHeatmapBox.value && m_chartHeatmapBox.value.clear(); |
| | | if (state.chartData.length == 0) return; |
| | | //å
è·åDomä¸çå®ä¾ |
| | | let chartDom = echarts.getInstanceByDom(document.getElementById('chartHeatmapBox') as HTMLDivElement); |
| | | //ç¶å夿å®ä¾æ¯å¦åå¨ï¼å¦æä¸åå¨ï¼å°±å建æ°å®ä¾ |
| | | if (chartDom == null) { |
| | | chartDom = echarts.init(document.getElementById('chartHeatmapBox') as HTMLDivElement); |
| | | } |
| | | m_chartHeatmapBox.value = chartDom; |
| | | var xData = []; |
| | | var yData = []; |
| | | var runTimeData = []; |
| | | var eData = []; |
| | | for (var i = 0; i < state.chartData.length; i++) { |
| | | var node = state.chartData[i]; |
| | | if (node.Tsum != 0) { |
| | | var x = parseFloat(((node.Qmax + node.Qmin) / 2).toFixed(4)); |
| | | var y = parseFloat(((node.Hmax + node.Hmin) / 2).toFixed(4)); |
| | | var time = parseFloat((node.Tsum / 60 / 60).toFixed(3)); |
| | | x = node.Qmax; |
| | | y = node.Hmax; |
| | | |
| | | xData.push(x); |
| | | yData.push(y); |
| | | node.Tsum = time; |
| | | runTimeData.push({ rect_data: node, value: [x.toString(), y.toString(), node.Tsum, node] }); |
| | | eData.push({ rect_data: node, value: [x.toString(), y.toString(), node.Eavg, node] }); //Eavg æç |
| | | } |
| | | } |
| | | xData = uniqueInArray(xData); //å»é |
| | | yData = uniqueInArray(yData); //å»é |
| | | yData.sort(compareNumbers); |
| | | var max = 1; |
| | | var min = 0; |
| | | var maxE = 100; |
| | | var minE = 0; |
| | | if (state.chartData.length != 0) { |
| | | max = Math.max.apply( |
| | | Math, |
| | | state.chartData.map((item) => { |
| | | return item.Tsum; |
| | | }) |
| | | ); //æ°æ®çæå¤§å¼ |
| | | min = Math.min.apply( |
| | | Math, |
| | | state.chartData.map((item) => { |
| | | return item.Tsum; |
| | | }) |
| | | ); //æ°æ®çæå°å¼ |
| | | maxE = Math.max.apply( |
| | | Math, |
| | | state.chartData.map((item) => { |
| | | return item.Eavg; |
| | | }) |
| | | ); //æçæ°æ®çæå¤§å¼ |
| | | var minValE = []; |
| | | state.chartData.forEach((item) => { |
| | | if (item.Eavg != 0) { |
| | | minValE.push(item.Eavg); |
| | | } |
| | | }); |
| | | minE = Math.min.apply(Math, minValE); //æçæ°æ®çæå°å¼ |
| | | } |
| | | // console.log(xData, yData, runTimeData); |
| | | //console.log(max,min) |
| | | runTimeData = runTimeData.map(function (item) { |
| | | return { rect_data: item.rect_data, value: [item.value[0], item.value[1], item.value[2] || '-'] }; |
| | | //return { rect_data: item.rect_data, value: [item.value[0], item.value[1], item.value[2]] }; |
| | | }); |
| | | |
| | | eData = eData.map(function (item) { |
| | | return { rect_data: item.rect_data, value: [item.value[0], item.value[1], item.value[2] || '-'] }; |
| | | }); |
| | | var option = { |
| | | tooltip: { |
| | | //position: 'top' |
| | | formatter: function (p) { |
| | | //console.log(p.data) |
| | | if (!p.data) { |
| | | return ''; |
| | | } |
| | | return ( |
| | | p.data.rect_data.Qmin + |
| | | '-' + |
| | | p.data.rect_data.Qmax + |
| | | '</br>' + |
| | | p.marker + |
| | | 'æ¶é´: ' + |
| | | p.data.rect_data.Tsum + |
| | | 'å°æ¶ æç: ' + |
| | | p.data.rect_data.Eavg + |
| | | '%' |
| | | ); |
| | | }, |
| | | }, |
| | | animation: false, |
| | | grid: { |
| | | containLabel: true, |
| | | left: '80', |
| | | right: '80', |
| | | top: '70', |
| | | bottom: '15', |
| | | }, |
| | | legend: { |
| | | data: ['æç', 'è¿è¡æ¶é´'], |
| | | }, |
| | | xAxis: { |
| | | name: 'æµé(m³)', |
| | | type: 'category', //category log |
| | | data: xData, |
| | | //boundaryGap:false, |
| | | splitArea: { |
| | | show: true, |
| | | interval: 0, |
| | | }, |
| | | axisLabel: { |
| | | //formatter: function (value, index) { |
| | | // console.log(value, index) |
| | | // return value |
| | | //} |
| | | }, |
| | | axisTick: { |
| | | alignWithLabel: true, |
| | | }, |
| | | axisPointer: { |
| | | show: true, |
| | | type: 'shadow', |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | name: 'æ¬ç¨(m)', |
| | | type: 'category', |
| | | data: yData, |
| | | splitArea: { |
| | | show: true, |
| | | interval: 0, |
| | | }, |
| | | axisTick: { |
| | | alignWithLabel: true, |
| | | }, |
| | | axisPointer: { |
| | | show: true, |
| | | type: 'shadow', |
| | | }, |
| | | }, |
| | | visualMap: [ |
| | | { |
| | | min: min, |
| | | max: max, |
| | | calculable: true, |
| | | text: ['æ¶é´:(å°æ¶)', ''], |
| | | textGap: 20, |
| | | realtime: false, |
| | | //orient:'horizontal', |
| | | top: 'middle', |
| | | inRange: { |
| | | color: ['#2ba2ee', '#f32cb7'], //['#2ba2ee', '#f32cb7'] //['#313695', '#a50026'] |
| | | }, |
| | | ////color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | | name: 'è¿è¡æ¶é´', |
| | | type: 'heatmap', |
| | | data: runTimeData, |
| | | label: { |
| | | show: false, |
| | | }, |
| | | emphasis: { |
| | | itemStyle: { |
| | | shadowBlur: 10, |
| | | shadowColor: 'rgba(0, 0, 0, 0.5)', |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | }; |
| | | // 使ç¨åæå®çé
ç½®é¡¹åæ°æ®æ¾ç¤ºå¾è¡¨ã |
| | | m_chartHeatmapBox.value.setOption(option, true); |
| | | m_chartHeatmapBox.value.setOption({ |
| | | visualMap: [ |
| | | { |
| | | min: min, |
| | | max: max, |
| | | range: [min, max], |
| | | }, |
| | | ], |
| | | }); |
| | | m_chartHeatmapBox.value.on('click', function (obj) { |
| | | let node = obj.data.rect_data; |
| | | let QAve = (node.Qmin + node.Qmax) / 2; |
| | | let HAve = (node.Hmin + node.Hmax) / 2; |
| | | state.deviationForm.QdStart = node.Qmin; |
| | | state.deviationForm.QdEnd = node.Qmax; |
| | | state.analyzeForm.Q = QAve; |
| | | state.deviationForm.HdStart = node.Hmin; |
| | | state.deviationForm.HdEnd = node.Hmax; |
| | | state.analyzeForm.H = HAve; |
| | | setChartTableDialog(node.Qmin, node.Qmax, node.Hmin, node.Hmax); |
| | | }); |
| | | state.min = min; |
| | | state.max = max; |
| | | state.runTimeData = runTimeData; |
| | | state.minE = minE; |
| | | state.maxE = maxE; |
| | | state.eData = eData; |
| | | window.addEventListener('resize', selfAdaption); |
| | | }; |
| | | const compareNumbers = (a, b) => { |
| | | return a - b; // ä»å°å°å¤§æåº |
| | | }; |
| | | //æå¼å¼¹çª |
| | | const setChartTableDialog = async (qLower, qUpper, hLower, hUpper) => { |
| | | state.heatmapDetailShow = true; |
| | | await GetRectDetailListOfDayRange({ |
| | | ObjectType: LOGIC_SITE_CODE, |
| | | ObjectID: currentListID.value, |
| | | Qmin: qLower, |
| | | Qmax: qUpper, |
| | | Hmin: hLower, |
| | | Hmax: hUpper, |
| | | StartDay: state.queryQHForm.themetime[0], |
| | | EndDay: state.queryQHForm.themetime[1], |
| | | }).then((res) => { |
| | | let result = res.Data; |
| | | if (res.Code != 0) { |
| | | state.pieData = []; |
| | | m_chartPie.value && m_chartPie.value.clear(); |
| | | return; |
| | | } |
| | | if (res.Data == null || res.Data.length == 0) { |
| | | state.pieData = []; |
| | | m_chartPie.value && m_chartPie.value.clear(); |
| | | return ElMessage.warning('é¥¼å¾ææ æ°æ®'); |
| | | } |
| | | result.forEach((item) => (item.Tsum = (item.Tsum / 60 / 60).toFixed(2))); |
| | | state.pieData = result || []; |
| | | setTimeout(() => { |
| | | //åå§åé¥¼å¾ |
| | | buildPieChartBox(); |
| | | }, 100); |
| | | }); |
| | | }; |
| | | // åå§åé¥¼å¾ |
| | | const buildPieChartBox = () => { |
| | | m_chartPie.value && m_chartPie.value.clear(); |
| | | if (state.pieData.length == 0) return; |
| | | //å
è·åDomä¸çå®ä¾ |
| | | let chartDom = echarts.getInstanceByDom(document.getElementById('chartPie') as HTMLDivElement); |
| | | //ç¶å夿å®ä¾æ¯å¦åå¨ï¼å¦æä¸åå¨ï¼å°±å建æ°å®ä¾ |
| | | if (chartDom == null) { |
| | | chartDom = echarts.init(document.getElementById('chartPie') as HTMLDivElement); |
| | | } |
| | | m_chartPie.value = chartDom; |
| | | var seriesData = []; |
| | | for (var i = 0; i < state.pieData.length; i++) { |
| | | var item = state.pieData[i]; |
| | | seriesData.push({ value: parseFloat(item.Tsum), name: item.Name }); |
| | | } |
| | | let option = { |
| | | title: { |
| | | text: '', |
| | | subtext: '', |
| | | left: 'center', |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item', |
| | | }, |
| | | legend: { |
| | | orient: 'vertical', |
| | | left: 'left', |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'è¿è¡æ¶é´', |
| | | type: 'pie', |
| | | radius: '50%', |
| | | data: seriesData, |
| | | label: { |
| | | show: true, |
| | | formatter: '{b}{a}ï¼{c}å°æ¶', |
| | | }, |
| | | emphasis: { |
| | | itemStyle: { |
| | | shadowBlur: 10, |
| | | shadowOffsetX: 0, |
| | | shadowColor: 'rgba(0, 0, 0, 0.5)', |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | }; |
| | | m_chartPie.value.setOption(option, true); |
| | | m_chartPie.value && m_chartPie.value.resize(); |
| | | }; |
| | | //å
³éå¼¹çª |
| | | const closeDialog = () => { |
| | | state.heatmapDetailShow = false; |
| | | }; |
| | | // çåå¾èªéåº |
| | | const selfAdaption = () => { |
| | | if (!m_chartHeatmapBox.value) return; |
| | | m_chartHeatmapBox.value.resize(); |
| | | }; |
| | | // 饼å¾èªéåº |
| | | const selfPipeAdaption = () => { |
| | | if (!m_chartPie.value) return; |
| | | m_chartPie.value.resize(); |
| | | }; |
| | | //#endregion |
| | | //#region ====================== æ¯å¦æ¾ç¤ºå¼/æ¶é´/åç ====================== |
| | | const isShowQHValue = () => { |
| | | if (state.QHForm.showValue) { |
| | | m_chartHeatmapBox.value && |
| | | m_chartHeatmapBox.value.setOption({ |
| | | series: [ |
| | | { |
| | | label: { |
| | | show: true, |
| | | color: 'white', |
| | | }, |
| | | }, |
| | | ], |
| | | }); |
| | | } else { |
| | | m_chartHeatmapBox.value && |
| | | m_chartHeatmapBox.value.setOption({ |
| | | series: [ |
| | | { |
| | | label: { |
| | | show: false, |
| | | }, |
| | | }, |
| | | ], |
| | | }); |
| | | } |
| | | }; |
| | | const tOrPChange = (val) => { |
| | | state.QHForm.tOrP = val; |
| | | isShowTOrP(); |
| | | }; |
| | | const isShowTOrP = () => { |
| | | var isRunTime = true; |
| | | if (state.QHForm.tOrP) { |
| | | m_chartHeatmapBox.value.setOption({ |
| | | visualMap: [ |
| | | { |
| | | min: state.min, |
| | | max: state.max, |
| | | text: ['æ¶é´:(å°æ¶)', ''], |
| | | range: [state.min, state.max], |
| | | inRange: { |
| | | color: ['#2ba2ee', '#f32cb7'], |
| | | }, |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | | name: 'è¿è¡æ¶é´', |
| | | data: state.runTimeData, |
| | | }, |
| | | ], |
| | | }); |
| | | isRunTime = true; |
| | | } else { |
| | | m_chartHeatmapBox.value.setOption({ |
| | | visualMap: [ |
| | | { |
| | | min: state.minE, |
| | | max: state.maxE, |
| | | text: ['æç:(%)', ''], |
| | | range: [state.minE, state.maxE], |
| | | inRange: { |
| | | color: ['#ccc', '#332cb7'], |
| | | }, |
| | | }, |
| | | ], |
| | | |
| | | series: [ |
| | | { |
| | | name: 'æç', |
| | | data: state.eData, |
| | | }, |
| | | ], |
| | | }); |
| | | isRunTime = false; |
| | | } |
| | | }; |
| | | |
| | | //#endregion |
| | | //#region ====================== 忢æç²¾ç¡®æ¥è¯¢ ====================== |
| | | //éªè¯çæ¶ååªè½è¾å
¥æ°å |
| | | const verifiyInstant = (val, type) => { |
| | | switch (type) { |
| | | case 1: |
| | | if (state.analyzeForm.Q == '') return; |
| | | state.analyzeForm.Q = verifyNumberComma(val); |
| | | let qLowerValue = parseFloat(state.analyzeForm.Q) - parseFloat(state.analyzeForm.deviationQValue); |
| | | let qUpperValue = parseFloat(state.analyzeForm.Q) + parseFloat(state.analyzeForm.deviationQValue); |
| | | state.deviationForm.QdStart = qLowerValue; //æµéåå·®æå°å¼ |
| | | state.deviationForm.QdEnd = qUpperValue; //æµéåå·®æå¤§å¼ |
| | | |
| | | break; |
| | | case 2: |
| | | if (state.analyzeForm.deviationQValue == '') return; |
| | | state.analyzeForm.deviationQValue = verifyNumberComma(val); |
| | | let q_LowerValue = parseFloat(state.analyzeForm.Q) - parseFloat(state.analyzeForm.deviationQValue); |
| | | let q_UpperValue = parseFloat(state.analyzeForm.Q) + parseFloat(state.analyzeForm.deviationQValue); |
| | | state.deviationForm.QdStart = q_LowerValue; //æµéåå·®æå°å¼ |
| | | state.deviationForm.QdEnd = q_UpperValue; //æµéåå·®æå¤§å¼ |
| | | |
| | | break; |
| | | case 3: |
| | | if (state.analyzeForm.H == '') return; |
| | | state.analyzeForm.H = verifyNumberComma(val); |
| | | let hLowerValue = parseFloat(state.analyzeForm.H) - parseFloat(state.analyzeForm.deviationHValue); |
| | | let hUpperValue = parseFloat(state.analyzeForm.H) + parseFloat(state.analyzeForm.deviationHValue); |
| | | state.deviationForm.HdStart = hLowerValue; //æ¬ç¨åå·®æå°å¼ |
| | | state.deviationForm.HdEnd = hUpperValue; //æ¬ç¨åå·®æå¤§å¼ |
| | | break; |
| | | case 4: |
| | | if (state.analyzeForm.deviationHValue == '') return; |
| | | state.analyzeForm.deviationHValue = verifyNumberComma(val); |
| | | let h_LowerValue = parseFloat(state.analyzeForm.H) - parseFloat(state.analyzeForm.deviationHValue); |
| | | let h_UpperValue = parseFloat(state.analyzeForm.H) + parseFloat(state.analyzeForm.deviationHValue); |
| | | state.deviationForm.HdStart = h_LowerValue; //æ¬ç¨åå·®æå°å¼ |
| | | state.deviationForm.HdEnd = h_UpperValue; //æ¬ç¨åå·®æå¤§å¼ |
| | | break; |
| | | case 5: |
| | | state.deviationForm.QdStart = verifyNumberComma(val); |
| | | |
| | | break; |
| | | case 6: |
| | | state.deviationForm.QdEnd = verifyNumberComma(val); |
| | | break; |
| | | case 7: |
| | | state.deviationForm.HdStart = verifyNumberComma(val); |
| | | |
| | | break; |
| | | case 8: |
| | | state.deviationForm.HdEnd = verifyNumberComma(val); |
| | | break; |
| | | } |
| | | }; |
| | | //ç嬿µéé´éå¼ |
| | | const flowIntervalValue = (val) => { |
| | | // state.analyzeForm.Q = val; |
| | | var intervalValueFlow = state.queryQHForm.Qspace / 2; //æµéé´éå¼ |
| | | //å°æµéé´éå¼å®æ¶èµç»æµéåå·®å¼ |
| | | state.analyzeForm.deviationQValue = intervalValueFlow; |
| | | var qLowerValue = parseFloat(state.analyzeForm.Q) - parseFloat(state.analyzeForm.deviationQValue); |
| | | var qUpperValue = parseFloat(state.analyzeForm.Q) + parseFloat(state.analyzeForm.deviationQValue); |
| | | state.deviationForm.QdStart = qLowerValue; //æµéåå·®æå°å¼ |
| | | state.deviationForm.QdEnd = qUpperValue; //æµéåå·®æå¤§å¼ |
| | | }; |
| | | //ç嬿¬ç¨é´éå¼ |
| | | const headIntervalValue = (val) => { |
| | | // state.analyzeForm.Q = val; |
| | | var intervalValueFlow = state.queryQHForm.Hspace / 2; //æ¬ç¨é´éå¼ |
| | | //å°æ¬ç¨é´éå¼å®æ¶èµç»æ¬ç¨åå·®å¼ |
| | | state.analyzeForm.deviationHValue = intervalValueFlow; |
| | | var hLowerValue = parseFloat(state.analyzeForm.H) - parseFloat(state.analyzeForm.deviationHValue); |
| | | var hUpperValue = parseFloat(state.analyzeForm.H) + parseFloat(state.analyzeForm.deviationHValue); |
| | | state.deviationForm.HdStart = hLowerValue; //æ¬ç¨åå·®æå°å¼ |
| | | state.deviationForm.HdEnd = hUpperValue; //æ¬ç¨åå·®æå¤§å¼ |
| | | }; |
| | | const getTableDetail = async () => { |
| | | var qLowerValue = state.deviationForm.QdStart; //æµéåå·®æå°å¼ |
| | | var qUpperValue = state.deviationForm.QdEnd; //æµéåå·®æå¤§å¼ |
| | | var hLowerValue = state.deviationForm.HdStart; //æ¬ç¨åå·®æå°å¼ |
| | | var hUpperValue = state.deviationForm.HdEnd; //æ¬ç¨åå·®æå¤§å¼ |
| | | if (qLowerValue > qUpperValue && hLowerValue > hUpperValue) { |
| | | return ElMessage.warning('æµéãæ¬ç¨åå·®æå°å¼ä¸è½å¤§äºæå¤§å¼'); |
| | | } else if (qLowerValue > qUpperValue) { |
| | | return ElMessage.warning('æµéåå·®æå°å¼ä¸è½å¤§äºæå¤§å¼'); |
| | | } else if (hLowerValue > hUpperValue) { |
| | | return ElMessage.warning('æ¬ç¨åå·®æå°å¼ä¸è½å¤§äºæå¤§å¼'); |
| | | } else { |
| | | if (qLowerValue == null || qLowerValue == '') return ElMessage.warning('请è¾å
¥æµé'); |
| | | if (qUpperValue == null || qUpperValue == '') return ElMessage.warning('请è¾å
¥æµé'); |
| | | if (hLowerValue == null || hLowerValue == '') return ElMessage.warning('请è¾å
¥æ¬ç¨'); |
| | | if (hUpperValue == null || hUpperValue == '') return ElMessage.warning('请è¾å
¥æ¬ç¨'); |
| | | await GetRectDetailListOfDayRange({ |
| | | ObjectType: LOGIC_SITE_CODE, |
| | | ObjectID: currentListID.value, |
| | | Qmin: qLowerValue, |
| | | Qmax: qUpperValue, |
| | | Hmin: hLowerValue, |
| | | Hmax: hUpperValue, |
| | | StartDay: state.queryQHForm.themetime[0], |
| | | EndDay: state.queryQHForm.themetime[1], |
| | | }).then((res) => { |
| | | let result = res.Data; |
| | | if (res.Code != 0) { |
| | | state.displayTableData = []; |
| | | return; |
| | | } |
| | | if (res.Data == null || res.Data.length == 0) { |
| | | state.displayTableData = []; |
| | | return ElMessage.warning('è¡¨æ ¼ææ æ°æ®'); |
| | | } |
| | | result.forEach((item) => (item.Tsum = (item.Tsum / 60 / 60).toFixed(2))); |
| | | state.displayTableData = result || []; |
| | | }); |
| | | } |
| | | }; |
| | | //#endregion |
| | | onMounted(() => { |
| | | let getSevenDate = getdatatime(); |
| | | state.queryQHForm.themetime = getSevenDate; |
| | | window.addEventListener('resize', selfPipeAdaption); |
| | | }); |
| | | onActivated(() => { |
| | | window.addEventListener('resize', selfPipeAdaption); |
| | | }); |
| | | defineExpose({ |
| | | getChartList, |
| | | }); |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | :deep(.el-tabs__content) { |
| | | width: 100%; |
| | | height: calc(100% - 50px); |
| | | } |
| | | .box_right_title { |
| | | background: linear-gradient(90deg, #2d81d9, #0655b4); |
| | | color: #fff; |
| | | height: 30px; |
| | | line-height: 30px; |
| | | text-align: left; |
| | | border-radius: 7px; |
| | | padding-left: 10px; |
| | | display: flex; |
| | | } |
| | | .form_m1 { |
| | | :deep(.el-form-item__label) { |
| | | color: #ffffff !important; |
| | | } |
| | | } |
| | | .setQHForm { |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | align-items: center; |
| | | padding-top: 10px; |
| | | } |
| | | .analyseInput_left { |
| | | width: 68px; |
| | | height: 32px; |
| | | line-height: 32px; |
| | | // border: 1px solid #cccccc; |
| | | text-align: center; |
| | | color: #666; |
| | | } |
| | | .analyseInput_right { |
| | | width: 45px; |
| | | height: 32px; |
| | | line-height: 32px; |
| | | // border: 1px solid #cccccc; |
| | | text-align: center; |
| | | color: #666; |
| | | } |
| | | .deviationInput { |
| | | width: 68px; |
| | | height: 32px; |
| | | line-height: 32px; |
| | | // border: 1px solid #cccccc; |
| | | text-align: center; |
| | | color: #666; |
| | | } |
| | | .formLabel_size { |
| | | :deep(.el-form-item__label) { |
| | | font-size: 1rem !important; |
| | | } |
| | | :deep(.el-form-item--default) { |
| | | margin-bottom: 10px !important; |
| | | line-height: 36px; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | è¿è¡ç¹åæ |
| | | <template> |
| | | <!-- æ§è½æ²çº¿ --> |
| | | <el-row :gutter="8" class="h100"> |
| | | <el-col :span="4" :xs="24" class="h100"> |
| | | <el-card shadow="hover" class="h100 left-tree-card" v-loading="treeLoading"> |
| | | <LeftTreeByMgr |
| | | :treedata="listTreeData" |
| | | :showTitle="false" |
| | | :defaultProps="state.defaultProps" |
| | | :currentNodeKey="currentListID" |
| | | @click="handleClickNode" |
| | | :defaultProps="state.defaultProps" |
| | | defaultExpandAll |
| | | :folderIcon="(_, data) => data.LogicType !== LOGIC_SITE_CODE" |
| | | > |
| | |
| | | </el-card> |
| | | </el-col> |
| | | <el-col :span="20" :xs="24" class="flex-column h100"> |
| | | <el-card class="flex-auto scroll-table-card" shadow="hover"> |
| | | <el-tabs v-model="state.activeName" class="w100 h100"> |
| | | <el-tab-pane label="çåå¾" name="heatMapPage" class="w100 h100"> |
| | | <div class="box_right_title form_m1"> |
| | | <span class="mr15">è¿è¡åæ</span> |
| | | <el-form ref="queryQHFormRef" :inline="true" :model="state.queryQHForm"> |
| | | <el-form-item label="æ¥æ"> |
| | | <el-date-picker |
| | | v-model="state.queryQHForm.themetime" |
| | | range-separator="~" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | :disabled-date="disablesDate" |
| | | type="daterange" |
| | | :default-time="defaultTime" |
| | | clearable |
| | | value-format="YYYY-MM-DD" |
| | | @change="getDateTime" |
| | | size="small" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button class="ml10" @click="timeQuery()" size="small" type="primary">æ¥è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div class="setQHForm"> |
| | | <el-form ref="queryQHFormRef" :inline="true" :model="state.queryQHForm" :rules="queryQHRules"> |
| | | <el-form-item label="æµéé´éå¼" prop="Qspace"> |
| | | <el-input-number |
| | | v-model="state.queryQHForm.Qspace" |
| | | placeholder="æµéé´éå¼" |
| | | autocomplete="off" |
| | | :controls="false" |
| | | style="width: 100px" |
| | | :min="1" |
| | | @input="flowIntervalValue" |
| | | ></el-input-number> |
| | | </el-form-item> |
| | | <el-form-item label="æ¬ç¨é´éå¼" prop="Hspace"> |
| | | <el-input-number |
| | | v-model="state.queryQHForm.Hspace" |
| | | placeholder="æ¬ç¨é´éå¼" |
| | | :controls="false" |
| | | style="width: 100px" |
| | | autocomplete="off" |
| | | @input="headIntervalValue" |
| | | ></el-input-number> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <el-form :model="state.QHForm" :inline="true"> |
| | | <el-form-item label="æ¾ç¤ºå¼" label-width="65px"> |
| | | <el-switch v-model="state.QHForm.showValue" @change="isShowQHValue" /> |
| | | </el-form-item> |
| | | <!-- @change="isShowTOrP" --> |
| | | <el-form-item label="æ¶é´æåç" label-width="95px"> |
| | | <el-switch v-model="state.QHForm.tOrP" @change="tOrPChange" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div style="display: flex; height: calc(100% - 120px)"> |
| | | <div id="chartHeatmapBox" class="chart" style="width: calc(100% - 0px); height: calc(100% - 0px)"></div> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="精确æ¥è¯¢" name="cacurateQueryPage"> |
| | | <el-row :gutter="8" class="h100"> |
| | | <el-col :span="20" :xs="24" class="flex-column h100"> |
| | | <div> |
| | | <div class="box_right_title form_m1"> |
| | | <span class="mr15">è¿è¡åæ</span> |
| | | <el-form ref="queryQHFormRef" :inline="true" :model="state.queryQHForm"> |
| | | <el-form-item label="æ¥æ"> |
| | | <el-date-picker |
| | | v-model="state.queryQHForm.themetime" |
| | | range-separator="~" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | :disabled-date="disablesDate" |
| | | type="daterange" |
| | | :default-time="defaultTime" |
| | | clearable |
| | | value-format="YYYY-MM-DD" |
| | | @change="getDateTime" |
| | | size="small" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <el-table |
| | | class="mt10" |
| | | ref="draggableTableRef" |
| | | border |
| | | row-key="ID" |
| | | :cell-style="{ textAlign: 'center' }" |
| | | :header-cell-style="{ textAlign: 'center' }" |
| | | :data="state.displayTableData" |
| | | style="width: 100%" |
| | | highlight-current-row |
| | | height="670" |
| | | > |
| | | <el-table-column type="index" label="åºå·" fixed="left" show-overflow-tooltip width="150" /> |
| | | <el-table-column prop="Name" label="æ³µç»å" show-overflow-tooltip width="150"> </el-table-column> |
| | | <el-table-column prop="Qavg" label="æµé" show-overflow-tooltip width="150" /> |
| | | <el-table-column prop="Havg" width="150" label="æ¬ç¨" show-overflow-tooltip /> |
| | | <el-table-column prop="Pavg" width="150" label="åç(kW)" show-overflow-tooltip /> |
| | | <el-table-column label="è¿è¡æ¶é´(h)" show-overflow-tooltip prop="Tsum" fixed="right"> </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="4" :xs="24" class="flex-column h100"> |
| | | <div class="box_right_title">åæåæ°</div> |
| | | <div class="mt10"> |
| | | <el-form label-width="45px" :model="state.analyzeForm" class="formLabel_size"> |
| | | <div class="flex flex-space-between"> |
| | | <el-form-item label="æµé"> |
| | | <el-input v-model="state.analyzeForm.Q" @input="verifiyInstant($event, 1)" class="analyseInput_left" /> |
| | | </el-form-item> |
| | | <el-form-item label="åå·®å¼" label-width="56px"> |
| | | <el-input |
| | | v-model="state.analyzeForm.deviationQValue" |
| | | @input="verifiyInstant($event, 2)" |
| | | class="analyseInput_right" |
| | | /> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="flex flex-space-between"> |
| | | <el-form-item label="æ¬ç¨"> |
| | | <el-input v-model="state.analyzeForm.H" @input="verifiyInstant($event, 3)" class="analyseInput_left" /> |
| | | </el-form-item> |
| | | <el-form-item label="åå·®å¼" label-width="56px"> |
| | | <el-input |
| | | v-model="state.analyzeForm.deviationHValue" |
| | | @input="verifiyInstant($event, 4)" |
| | | class="analyseInput_right" |
| | | /> |
| | | </el-form-item> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | <div class="box_right_title mt10">åå·®èå´</div> |
| | | <div class="mt10"> |
| | | <el-form label-width="45px" :model="state.deviationForm"> |
| | | <div class="flex flex-space-between"> |
| | | <el-form-item label="æµé"> |
| | | <el-input v-model="state.deviationForm.QdStart" @input="verifiyInstant($event, 5)" class="deviationInput" /> |
| | | <span style="color: #ccc; padding: 0px 4px"> ï½ </span> |
| | | <el-input v-model="state.deviationForm.QdEnd" @input="verifiyInstant($event, 6)" class="deviationInput" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="flex flex-space-between mt10"> |
| | | <el-form-item label="æ¬ç¨"> |
| | | <el-input v-model="state.deviationForm.HdStart" @input="verifiyInstant($event, 7)" class="deviationInput" /> |
| | | <span style="color: #ccc; padding: 0px 4px"> ï½ </span> |
| | | <el-input v-model="state.deviationForm.HdEnd" @input="verifiyInstant($event, 8)" class="deviationInput" /> |
| | | </el-form-item> |
| | | </div> |
| | | <el-form-item> |
| | | <el-button class="ml10 mt10" type="primary" @click="getTableDetail()">æ¥è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </el-card> |
| | | <RunPointAnalysisCom ref="runPointAnalysisRef" :currentListID="currentListID" :pumpTitle="state.echartTitle" /> |
| | | </el-col> |
| | | <el-dialog |
| | | :destroy-on-close="true" |
| | | v-model="state.heatmapDetailShow" |
| | | width="700px" |
| | | :close-on-click-modal="false" |
| | | @closed="closeDialog" |
| | | :title="state.dialogTitle" |
| | | > |
| | | <div style="display: flex; height: 400px; width: 100%"> |
| | | <div id="chartPie" class="chart" style="width: calc(100% - 0px); height: calc(100% - 0px)"></div> |
| | | </div> |
| | | |
| | | <el-table |
| | | ref="draggableTableRef" |
| | | border |
| | | :cell-style="{ textAlign: 'center' }" |
| | | :header-cell-style="{ textAlign: 'center' }" |
| | | :data="state.pieData" |
| | | style="width: 100%" |
| | | highlight-current-row |
| | | > |
| | | <el-table-column type="index" label="åºå·" show-overflow-tooltip width="70" /> |
| | | <el-table-column prop="Name" label="æ³µç»å" show-overflow-tooltip width="130"> </el-table-column> |
| | | <el-table-column prop="Qavg" label="æµé" show-overflow-tooltip width="110" /> |
| | | <el-table-column prop="Havg" width="90" label="æ¬ç¨" show-overflow-tooltip /> |
| | | <el-table-column prop="Pavg" width="130" label="åç(kW)" show-overflow-tooltip /> |
| | | <el-table-column label="è¿è¡æ¶é´(h)" show-overflow-tooltip prop="Tsum"> </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | </el-row> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import * as echarts from 'echarts'; |
| | | import { ElMessage } from 'element-plus'; |
| | | import LeftTreeByMgr from '/@/components/tree/leftTreeByMgr.vue'; |
| | | import type { FormRules } from 'vue'; |
| | | import { ref, onMounted, computed, reactive, shallowRef, onActivated } from 'vue'; |
| | | import { computed, nextTick, onMounted, reactive, ref } from 'vue'; |
| | | import { getDefaultLogicPolicyStd } from '/@/api/phm/logicPolicyStd'; |
| | | import { GetLogicTreeListByPolicyIDStd } from '/@/api/phm/logicTreeStd'; |
| | | import { getSite } from '/@/projectCom/components/manage/utils'; |
| | | import { uniqueInArray } from '/@/utils/istation/common.js'; |
| | | import LeftTreeByMgr from '/@/components/tree/leftTreeByMgr.vue'; |
| | | import { LOGIC_SITE_CODE } from '/@/constants'; |
| | | import { GetRectListOfDayRange, GetRectDetailListOfDayRange } from '/@/api/eta/runHeat'; |
| | | import moment from 'moment'; |
| | | import { verifyNumberComma } from '/@/utils/toolsValidate'; |
| | | const defaultTime = ref<[Date, Date]>([new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)]); |
| | | import { getSite } from '/@/projectCom/components/manage/utils'; |
| | | import RunPointAnalysisCom from '/@/projectCom/curve/runPoint/RunPointAnalysisCom.vue'; |
| | | // å®ä¹åéå
容 |
| | | const state = reactive({ |
| | | chartData: [], |
| | | echartTitle: '', |
| | | queryQHForm: { |
| | | Qspace: 100, |
| | | Hspace: 1, |
| | | themetime: '', |
| | | } as any, |
| | | QHForm: { |
| | | showValue: false, |
| | | tOrP: true, |
| | | }, |
| | | heatmapDetailShow: false, //æå¼çåå¾çè¯¦ç» ï¼é»è®¤å
³éï¼ |
| | | dialogTitle: 'æ³µç»åä¿¡æ¯', //详ç»çåå |
| | | pieData: [], //饼徿°æ®æº |
| | | defaultProps: { |
| | | id: 'LogicID', |
| | | label: 'Name', |
| | | children: 'Children', |
| | | }, //æ èç¹ |
| | | activeName: 'heatMapPage', //é»è®¤éä¸çåå¾ |
| | | displayTableData: [], //精确æ¥è¯¢æ°æ® |
| | | analyzeForm: { |
| | | deviationQValue: 50, |
| | | deviationHValue: 0.5, |
| | | } as any, //åæåæ° |
| | | deviationForm: {} as any, //åå·®èå´ |
| | | min: '', |
| | | max: '', |
| | | runTimeData: [], |
| | | minE: '', |
| | | maxE: '', |
| | | eData: [], |
| | | }, |
| | | }); |
| | | const m_chartHeatmapBox = shallowRef(); |
| | | const m_chartPie = shallowRef(); |
| | | const queryQHFormRef = ref(); |
| | | const runPointAnalysisRef = ref(); |
| | | //#region ====================== å·¦ä¾§æ æ°æ®ï¼tree init ====================== |
| | | const treeLoading = ref(false); |
| | | const listTreeData = ref([]); |
| | | const currentTreeNode = ref(null); |
| | | const currentListID = computed(() => currentTreeNode.value?.LogicID); |
| | | const defaultSelectID = window.moduleConfig.comprehensive.logicSite.defaultSelectID; //é»è®¤éä¸é¿å
´...æ³µç«çID |
| | | const currentListID = computed(() => currentTreeNode.value?.LogicID); |
| | | const handleClickNode = (data) => { |
| | | currentTreeNode.value = data; |
| | | if (data.LogicType !== LOGIC_SITE_CODE) { |
| | | m_chartHeatmapBox.value && m_chartHeatmapBox.value.clear(); |
| | | return ElMessage.warning('æ¯çº¿ä¸å¯é!'); |
| | | } |
| | | window.moduleConfig.comprehensive.logicSite.defaultSelectID = data.LogicID; |
| | | state.echartTitle = data.Name; |
| | | timeQuery(); |
| | | nextTick(() => { |
| | | runPointAnalysisRef.value.getChartList(); |
| | | }); |
| | | }; |
| | | const getListTreeData = async () => { |
| | | treeLoading.value = true; |
| | |
| | | }); |
| | | }; |
| | | //#endregion |
| | | //#region ====================== 设置æ¶é´äºä»¶ ====================== |
| | | //é»è®¤æ¶é´éæ©å7天/é»è®¤éæ©å½å¤© |
| | | const getdatatime = () => { |
| | | let sevenAgo = moment(new Date()).subtract(7, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'); |
| | | let today = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss'); |
| | | return [sevenAgo, today]; |
| | | }; |
| | | //è·åæ¥æçæ¶é´ |
| | | const getDateTime = (val) => { |
| | | if (val == null) { |
| | | return ElMessage.warning('è¯·éæ©æ¶é´'); |
| | | } |
| | | state.queryQHForm.themetime[0] = val[0]; |
| | | state.queryQHForm.themetime[1] = val[1]; |
| | | }; |
| | | // æ¶é´éå¶ |
| | | const disablesDate = (time) => { |
| | | return time.getTime() > new Date().getTime(); |
| | | }; |
| | | //æ¥è¯¢æ¶é´ |
| | | const timeQuery = async () => { |
| | | if (!queryQHFormRef.value) return; |
| | | await queryQHFormRef.value.validate(async (valid, fields) => { |
| | | if (valid) { |
| | | getChartList(); |
| | | } else { |
| | | return ElMessage.error('å¿
填项!'); |
| | | } |
| | | }); |
| | | }; |
| | | //#endregion |
| | | //#region ====================== 表åéªè¯ ====================== |
| | | const queryQHRules = reactive<FormRules>({ |
| | | Qspace: [{ required: true, message: 'åªè½è¾å
¥æ°å', trigger: 'blur' }], |
| | | Hspace: [{ required: true, message: 'åªè½è¾å
¥æ°å', trigger: 'blur' }], |
| | | }); |
| | | //#endregion |
| | | //#region ====================== å¾è¡¨ æ¬ç¨/æç/init====================== |
| | | //éè¿ æ¥ææ²çº¿è·åçåå¾å¾è¡¨æ°æ® |
| | | const getChartList = async () => { |
| | | await GetRectListOfDayRange({ |
| | | ObjectType: LOGIC_SITE_CODE, |
| | | ObjectID: currentListID.value, |
| | | Qspace: state.queryQHForm.Qspace, |
| | | Hspace: state.queryQHForm.Hspace, |
| | | StartDay: state.queryQHForm.themetime[0], |
| | | EndDay: state.queryQHForm.themetime[1], |
| | | }) |
| | | .then((res) => { |
| | | let result = res.Data; |
| | | if (res.Code != 0) { |
| | | state.chartData = []; |
| | | m_chartHeatmapBox.value && m_chartHeatmapBox.value.clear(); |
| | | return; |
| | | } |
| | | if (res.Data == null || res.Data.length == 0) { |
| | | state.chartData = []; |
| | | m_chartHeatmapBox.value && m_chartHeatmapBox.value.clear(); |
| | | return ElMessage.warning('ææ æ°æ®'); |
| | | } |
| | | state.chartData = result || []; |
| | | |
| | | setTimeout(() => { |
| | | //åå§åå¾è¡¨ |
| | | BuildchartHeatmapBox(); |
| | | }, 100); |
| | | }) |
| | | .catch((err) => { |
| | | ElMessage.error('è·åå¾è¡¨æ°æ®å¤±è´¥' + (err?.Message ? `ï¼${JSON.stringify(err.Message)}` : '')); |
| | | }); |
| | | }; |
| | | // åå§åæµéæ¬ç¨å¾è¡¨ |
| | | const BuildchartHeatmapBox = () => { |
| | | m_chartHeatmapBox.value && m_chartHeatmapBox.value.clear(); |
| | | if (state.chartData.length == 0) return; |
| | | //å
è·åDomä¸çå®ä¾ |
| | | let chartDom = echarts.getInstanceByDom(document.getElementById('chartHeatmapBox') as HTMLDivElement); |
| | | //ç¶å夿å®ä¾æ¯å¦åå¨ï¼å¦æä¸åå¨ï¼å°±å建æ°å®ä¾ |
| | | if (chartDom == null) { |
| | | chartDom = echarts.init(document.getElementById('chartHeatmapBox') as HTMLDivElement); |
| | | } |
| | | m_chartHeatmapBox.value = chartDom; |
| | | var xData = []; |
| | | var yData = []; |
| | | var runTimeData = []; |
| | | var eData = []; |
| | | for (var i = 0; i < state.chartData.length; i++) { |
| | | var node = state.chartData[i]; |
| | | if (node.Tsum != 0) { |
| | | var x = parseFloat(((node.Qmax + node.Qmin) / 2).toFixed(4)); |
| | | var y = parseFloat(((node.Hmax + node.Hmin) / 2).toFixed(4)); |
| | | var time = parseFloat((node.Tsum / 60 / 60).toFixed(3)); |
| | | x = node.Qmax; |
| | | y = node.Hmax; |
| | | |
| | | xData.push(x); |
| | | yData.push(y); |
| | | node.Tsum = time; |
| | | runTimeData.push({ rect_data: node, value: [x.toString(), y.toString(), node.Tsum, node] }); |
| | | eData.push({ rect_data: node, value: [x.toString(), y.toString(), node.Eavg, node] }); //Eavg æç |
| | | } |
| | | } |
| | | xData = uniqueInArray(xData); //å»é |
| | | yData = uniqueInArray(yData); //å»é |
| | | yData.sort(compareNumbers); |
| | | var max = 1; |
| | | var min = 0; |
| | | var maxE = 100; |
| | | var minE = 0; |
| | | if (state.chartData.length != 0) { |
| | | max = Math.max.apply( |
| | | Math, |
| | | state.chartData.map((item) => { |
| | | return item.Tsum; |
| | | }) |
| | | ); //æ°æ®çæå¤§å¼ |
| | | min = Math.min.apply( |
| | | Math, |
| | | state.chartData.map((item) => { |
| | | return item.Tsum; |
| | | }) |
| | | ); //æ°æ®çæå°å¼ |
| | | maxE = Math.max.apply( |
| | | Math, |
| | | state.chartData.map((item) => { |
| | | return item.Eavg; |
| | | }) |
| | | ); //æçæ°æ®çæå¤§å¼ |
| | | var minValE = []; |
| | | state.chartData.forEach((item) => { |
| | | if (item.Eavg != 0) { |
| | | minValE.push(item.Eavg); |
| | | } |
| | | }); |
| | | minE = Math.min.apply(Math, minValE); //æçæ°æ®çæå°å¼ |
| | | } |
| | | // console.log(xData, yData, runTimeData); |
| | | //console.log(max,min) |
| | | runTimeData = runTimeData.map(function (item) { |
| | | return { rect_data: item.rect_data, value: [item.value[0], item.value[1], item.value[2] || '-'] }; |
| | | //return { rect_data: item.rect_data, value: [item.value[0], item.value[1], item.value[2]] }; |
| | | }); |
| | | |
| | | eData = eData.map(function (item) { |
| | | return { rect_data: item.rect_data, value: [item.value[0], item.value[1], item.value[2] || '-'] }; |
| | | }); |
| | | var option = { |
| | | tooltip: { |
| | | //position: 'top' |
| | | formatter: function (p) { |
| | | //console.log(p.data) |
| | | if (!p.data) { |
| | | return ''; |
| | | } |
| | | return ( |
| | | p.data.rect_data.Qmin + |
| | | '-' + |
| | | p.data.rect_data.Qmax + |
| | | '</br>' + |
| | | p.marker + |
| | | 'æ¶é´: ' + |
| | | p.data.rect_data.Tsum + |
| | | 'å°æ¶ æç: ' + |
| | | p.data.rect_data.Eavg + |
| | | '%' |
| | | ); |
| | | }, |
| | | }, |
| | | animation: false, |
| | | grid: { |
| | | containLabel: true, |
| | | left: '80', |
| | | right: '80', |
| | | top: '70', |
| | | bottom: '15', |
| | | }, |
| | | legend: { |
| | | data: ['æç', 'è¿è¡æ¶é´'], |
| | | }, |
| | | xAxis: { |
| | | name: 'æµé(m³)', |
| | | type: 'category', //category log |
| | | data: xData, |
| | | //boundaryGap:false, |
| | | splitArea: { |
| | | show: true, |
| | | interval: 0, |
| | | }, |
| | | axisLabel: { |
| | | //formatter: function (value, index) { |
| | | // console.log(value, index) |
| | | // return value |
| | | //} |
| | | }, |
| | | axisTick: { |
| | | alignWithLabel: true, |
| | | }, |
| | | axisPointer: { |
| | | show: true, |
| | | type: 'shadow', |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | name: 'æ¬ç¨(m)', |
| | | type: 'category', |
| | | data: yData, |
| | | splitArea: { |
| | | show: true, |
| | | interval: 0, |
| | | }, |
| | | axisTick: { |
| | | alignWithLabel: true, |
| | | }, |
| | | axisPointer: { |
| | | show: true, |
| | | type: 'shadow', |
| | | }, |
| | | }, |
| | | visualMap: [ |
| | | { |
| | | min: min, |
| | | max: max, |
| | | calculable: true, |
| | | text: ['æ¶é´:(å°æ¶)', ''], |
| | | textGap: 20, |
| | | realtime: false, |
| | | //orient:'horizontal', |
| | | top: 'middle', |
| | | inRange: { |
| | | color: ['#2ba2ee', '#f32cb7'], //['#2ba2ee', '#f32cb7'] //['#313695', '#a50026'] |
| | | }, |
| | | ////color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | | name: 'è¿è¡æ¶é´', |
| | | type: 'heatmap', |
| | | data: runTimeData, |
| | | label: { |
| | | show: false, |
| | | }, |
| | | emphasis: { |
| | | itemStyle: { |
| | | shadowBlur: 10, |
| | | shadowColor: 'rgba(0, 0, 0, 0.5)', |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | }; |
| | | // 使ç¨åæå®çé
ç½®é¡¹åæ°æ®æ¾ç¤ºå¾è¡¨ã |
| | | m_chartHeatmapBox.value.setOption(option, true); |
| | | m_chartHeatmapBox.value.setOption({ |
| | | visualMap: [ |
| | | { |
| | | min: min, |
| | | max: max, |
| | | range: [min, max], |
| | | }, |
| | | ], |
| | | }); |
| | | m_chartHeatmapBox.value.on('click', function (obj) { |
| | | let node = obj.data.rect_data; |
| | | setChartTableDialog(node.Qmin, node.Qmax, node.Hmin, node.Hmax); |
| | | }); |
| | | state.min = min; |
| | | state.max = max; |
| | | state.runTimeData = runTimeData; |
| | | state.minE = minE; |
| | | state.maxE = maxE; |
| | | state.eData = eData; |
| | | window.addEventListener('resize', selfAdaption); |
| | | }; |
| | | const compareNumbers = (a, b) => { |
| | | return a - b; // ä»å°å°å¤§æåº |
| | | }; |
| | | //æå¼å¼¹çª |
| | | const setChartTableDialog = async (qLower, qUpper, hLower, hUpper) => { |
| | | state.heatmapDetailShow = true; |
| | | await GetRectDetailListOfDayRange({ |
| | | ObjectType: LOGIC_SITE_CODE, |
| | | ObjectID: currentListID.value, |
| | | Qmin: qLower, |
| | | Qmax: qUpper, |
| | | Hmin: hLower, |
| | | Hmax: hUpper, |
| | | StartDay: state.queryQHForm.themetime[0], |
| | | EndDay: state.queryQHForm.themetime[1], |
| | | }).then((res) => { |
| | | let result = res.Data; |
| | | if (res.Code != 0) { |
| | | state.pieData = []; |
| | | m_chartPie.value && m_chartPie.value.clear(); |
| | | return; |
| | | } |
| | | if (res.Data == null || res.Data.length == 0) { |
| | | state.pieData = []; |
| | | m_chartPie.value && m_chartPie.value.clear(); |
| | | return ElMessage.warning('é¥¼å¾ææ æ°æ®'); |
| | | } |
| | | result.forEach((item) => (item.Tsum = (item.Tsum / 60 / 60).toFixed(2))); |
| | | state.pieData = result || []; |
| | | setTimeout(() => { |
| | | //åå§åé¥¼å¾ |
| | | buildPieChartBox(); |
| | | }, 100); |
| | | }); |
| | | }; |
| | | // åå§åé¥¼å¾ |
| | | const buildPieChartBox = () => { |
| | | m_chartPie.value && m_chartPie.value.clear(); |
| | | if (state.pieData.length == 0) return; |
| | | //å
è·åDomä¸çå®ä¾ |
| | | let chartDom = echarts.getInstanceByDom(document.getElementById('chartPie') as HTMLDivElement); |
| | | //ç¶å夿å®ä¾æ¯å¦åå¨ï¼å¦æä¸åå¨ï¼å°±å建æ°å®ä¾ |
| | | if (chartDom == null) { |
| | | chartDom = echarts.init(document.getElementById('chartPie') as HTMLDivElement); |
| | | } |
| | | m_chartPie.value = chartDom; |
| | | var seriesData = []; |
| | | for (var i = 0; i < state.pieData.length; i++) { |
| | | var item = state.pieData[i]; |
| | | seriesData.push({ value: parseFloat(item.Tsum), name: item.Name }); |
| | | } |
| | | let option = { |
| | | title: { |
| | | text: '', |
| | | subtext: '', |
| | | left: 'center', |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item', |
| | | }, |
| | | legend: { |
| | | orient: 'vertical', |
| | | left: 'left', |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'è¿è¡æ¶é´', |
| | | type: 'pie', |
| | | radius: '50%', |
| | | data: seriesData, |
| | | label: { |
| | | show: true, |
| | | formatter: '{b}{a}ï¼{c}å°æ¶', |
| | | }, |
| | | emphasis: { |
| | | itemStyle: { |
| | | shadowBlur: 10, |
| | | shadowOffsetX: 0, |
| | | shadowColor: 'rgba(0, 0, 0, 0.5)', |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | }; |
| | | m_chartPie.value.setOption(option, true); |
| | | m_chartPie.value && m_chartPie.value.resize(); |
| | | }; |
| | | //å
³éå¼¹çª |
| | | const closeDialog = () => { |
| | | state.heatmapDetailShow = false; |
| | | }; |
| | | // çåå¾èªéåº |
| | | const selfAdaption = () => { |
| | | if (!m_chartHeatmapBox.value) return; |
| | | m_chartHeatmapBox.value.resize(); |
| | | }; |
| | | // 饼å¾èªéåº |
| | | const selfPipeAdaption = () => { |
| | | if (!m_chartPie.value) return; |
| | | m_chartPie.value.resize(); |
| | | }; |
| | | //#endregion |
| | | //#region ====================== æ¯å¦æ¾ç¤ºå¼/æ¶é´/åç ====================== |
| | | const isShowQHValue = () => { |
| | | if (state.QHForm.showValue) { |
| | | m_chartHeatmapBox.value && |
| | | m_chartHeatmapBox.value.setOption({ |
| | | series: [ |
| | | { |
| | | label: { |
| | | show: true, |
| | | color: 'white', |
| | | }, |
| | | }, |
| | | ], |
| | | }); |
| | | } else { |
| | | m_chartHeatmapBox.value && |
| | | m_chartHeatmapBox.value.setOption({ |
| | | series: [ |
| | | { |
| | | label: { |
| | | show: false, |
| | | }, |
| | | }, |
| | | ], |
| | | }); |
| | | } |
| | | }; |
| | | const tOrPChange = (val) => { |
| | | state.QHForm.tOrP = val; |
| | | isShowTOrP(); |
| | | }; |
| | | const isShowTOrP = () => { |
| | | var isRunTime = true; |
| | | if (state.QHForm.tOrP) { |
| | | m_chartHeatmapBox.value.setOption({ |
| | | visualMap: [ |
| | | { |
| | | min: state.min, |
| | | max: state.max, |
| | | text: ['æ¶é´:(å°æ¶)', ''], |
| | | range: [state.min, state.max], |
| | | inRange: { |
| | | color: ['#2ba2ee', '#f32cb7'], |
| | | }, |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | | name: 'è¿è¡æ¶é´', |
| | | data: state.runTimeData, |
| | | }, |
| | | ], |
| | | }); |
| | | isRunTime = true; |
| | | } else { |
| | | m_chartHeatmapBox.value.setOption({ |
| | | visualMap: [ |
| | | { |
| | | min: state.minE, |
| | | max: state.maxE, |
| | | text: ['æç:(%)', ''], |
| | | range: [state.minE, state.maxE], |
| | | inRange: { |
| | | color: ['#ccc', '#332cb7'], |
| | | }, |
| | | }, |
| | | ], |
| | | |
| | | series: [ |
| | | { |
| | | name: 'æç', |
| | | data: state.eData, |
| | | }, |
| | | ], |
| | | }); |
| | | isRunTime = false; |
| | | } |
| | | }; |
| | | |
| | | //#endregion |
| | | //#region ====================== 忢æç²¾ç¡®æ¥è¯¢ ====================== |
| | | //éªè¯çæ¶ååªè½è¾å
¥æ°å |
| | | const verifiyInstant = (val, type) => { |
| | | switch (type) { |
| | | case 1: |
| | | if (state.analyzeForm.Q == '') return; |
| | | state.analyzeForm.Q = verifyNumberComma(val); |
| | | var qLowerValue = parseFloat(state.analyzeForm.Q) - parseFloat(state.analyzeForm.deviationQValue); |
| | | var qUpperValue = parseFloat(state.analyzeForm.Q) + parseFloat(state.analyzeForm.deviationQValue); |
| | | state.deviationForm.QdStart = qLowerValue; //æµéåå·®æå°å¼ |
| | | state.deviationForm.QdEnd = qUpperValue; //æµéåå·®æå¤§å¼ |
| | | |
| | | break; |
| | | case 2: |
| | | if (state.analyzeForm.deviationQValue == '') return; |
| | | state.analyzeForm.deviationQValue = verifyNumberComma(val); |
| | | var qLowerValue = parseFloat(state.analyzeForm.Q) - parseFloat(state.analyzeForm.deviationQValue); |
| | | var qUpperValue = parseFloat(state.analyzeForm.Q) + parseFloat(state.analyzeForm.deviationQValue); |
| | | state.deviationForm.QdStart = qLowerValue; //æµéåå·®æå°å¼ |
| | | state.deviationForm.QdEnd = qUpperValue; //æµéåå·®æå¤§å¼ |
| | | |
| | | break; |
| | | case 3: |
| | | if (state.analyzeForm.H == '') return; |
| | | state.analyzeForm.H = verifyNumberComma(val); |
| | | var hLowerValue = parseFloat(state.analyzeForm.H) - parseFloat(state.analyzeForm.deviationHValue); |
| | | var hUpperValue = parseFloat(state.analyzeForm.H) + parseFloat(state.analyzeForm.deviationHValue); |
| | | state.deviationForm.HdStart = hLowerValue; //æ¬ç¨åå·®æå°å¼ |
| | | state.deviationForm.HdEnd = hUpperValue; //æ¬ç¨åå·®æå¤§å¼ |
| | | break; |
| | | case 4: |
| | | if (state.analyzeForm.deviationHValue == '') return; |
| | | state.analyzeForm.deviationHValue = verifyNumberComma(val); |
| | | var hLowerValue = parseFloat(state.analyzeForm.H) - parseFloat(state.analyzeForm.deviationHValue); |
| | | var hUpperValue = parseFloat(state.analyzeForm.H) + parseFloat(state.analyzeForm.deviationHValue); |
| | | state.deviationForm.HdStart = hLowerValue; //æ¬ç¨åå·®æå°å¼ |
| | | state.deviationForm.HdEnd = hUpperValue; //æ¬ç¨åå·®æå¤§å¼ |
| | | break; |
| | | case 5: |
| | | state.deviationForm.QdStart = verifyNumberComma(val); |
| | | |
| | | break; |
| | | case 6: |
| | | state.deviationForm.QdEnd = verifyNumberComma(val); |
| | | break; |
| | | case 7: |
| | | state.deviationForm.HdStart = verifyNumberComma(val); |
| | | |
| | | break; |
| | | case 8: |
| | | state.deviationForm.HdEnd = verifyNumberComma(val); |
| | | break; |
| | | } |
| | | }; |
| | | //ç嬿µéé´éå¼ |
| | | const flowIntervalValue = (val) => { |
| | | // state.analyzeForm.Q = val; |
| | | var intervalValueFlow = state.queryQHForm.Qspace / 2; //æµéé´éå¼ |
| | | //å°æµéé´éå¼å®æ¶èµç»æµéåå·®å¼ |
| | | state.analyzeForm.deviationQValue = intervalValueFlow; |
| | | var qLowerValue = parseFloat(state.analyzeForm.Q) - parseFloat(state.analyzeForm.deviationQValue); |
| | | var qUpperValue = parseFloat(state.analyzeForm.Q) + parseFloat(state.analyzeForm.deviationQValue); |
| | | state.deviationForm.QdStart = qLowerValue; //æµéåå·®æå°å¼ |
| | | state.deviationForm.QdEnd = qUpperValue; //æµéåå·®æå¤§å¼ |
| | | }; |
| | | //ç嬿¬ç¨é´éå¼ |
| | | const headIntervalValue = (val) => { |
| | | // state.analyzeForm.Q = val; |
| | | var intervalValueFlow = state.queryQHForm.Hspace / 2; //æ¬ç¨é´éå¼ |
| | | //å°æ¬ç¨é´éå¼å®æ¶èµç»æ¬ç¨åå·®å¼ |
| | | state.analyzeForm.deviationHValue = intervalValueFlow; |
| | | var hLowerValue = parseFloat(state.analyzeForm.H) - parseFloat(state.analyzeForm.deviationHValue); |
| | | var hUpperValue = parseFloat(state.analyzeForm.H) + parseFloat(state.analyzeForm.deviationHValue); |
| | | state.deviationForm.HdStart = hLowerValue; //æ¬ç¨åå·®æå°å¼ |
| | | state.deviationForm.HdEnd = hUpperValue; //æ¬ç¨åå·®æå¤§å¼ |
| | | }; |
| | | const getTableDetail = async () => { |
| | | var qLowerValue = state.deviationForm.QdStart; //æµéåå·®æå°å¼ |
| | | var qUpperValue = state.deviationForm.QdEnd; //æµéåå·®æå¤§å¼ |
| | | var hLowerValue = state.deviationForm.HdStart; //æ¬ç¨åå·®æå°å¼ |
| | | var hUpperValue = state.deviationForm.HdEnd; //æ¬ç¨åå·®æå¤§å¼ |
| | | if (qLowerValue > qUpperValue && hLowerValue > hUpperValue) { |
| | | return ElMessage.warning('æµéãæ¬ç¨åå·®æå°å¼ä¸è½å¤§äºæå¤§å¼'); |
| | | } else if (qLowerValue > qUpperValue) { |
| | | return ElMessage.warning('æµéåå·®æå°å¼ä¸è½å¤§äºæå¤§å¼'); |
| | | } else if (hLowerValue > hUpperValue) { |
| | | return ElMessage.warning('æ¬ç¨åå·®æå°å¼ä¸è½å¤§äºæå¤§å¼'); |
| | | } else { |
| | | if (qLowerValue == null || qLowerValue == '') return ElMessage.warning('请è¾å
¥æµé'); |
| | | if (qUpperValue == null || qUpperValue == '') return ElMessage.warning('请è¾å
¥æµé'); |
| | | if (hLowerValue == null || hLowerValue == '') return ElMessage.warning('请è¾å
¥æ¬ç¨'); |
| | | if (hUpperValue == null || hUpperValue == '') return ElMessage.warning('请è¾å
¥æ¬ç¨'); |
| | | await GetRectDetailListOfDayRange({ |
| | | ObjectType: LOGIC_SITE_CODE, |
| | | ObjectID: currentListID.value, |
| | | Qmin: qLowerValue, |
| | | Qmax: qUpperValue, |
| | | Hmin: hLowerValue, |
| | | Hmax: hUpperValue, |
| | | StartDay: state.queryQHForm.themetime[0], |
| | | EndDay: state.queryQHForm.themetime[1], |
| | | }) |
| | | .then((res) => { |
| | | let result = res.Data; |
| | | if (res.Code != 0) { |
| | | state.displayTableData = []; |
| | | return; |
| | | } |
| | | if (res.Data == null || res.Data.length == 0) { |
| | | state.displayTableData = []; |
| | | return ElMessage.warning('è¡¨æ ¼ææ æ°æ®'); |
| | | } |
| | | result.forEach((item) => (item.Tsum = (item.Tsum / 60 / 60).toFixed(2))); |
| | | state.displayTableData = result || []; |
| | | }) |
| | | .catch((err) => { |
| | | return ElMessage.error('è·åè¡¨æ ¼å表失败' + (err?.Message ? `ï¼${JSON.stringify(err.Message)}` : '')); |
| | | }); |
| | | } |
| | | }; |
| | | //#endregion |
| | | onMounted(() => { |
| | | let getSevenDate = getdatatime(); |
| | | state.queryQHForm.themetime = getSevenDate; |
| | | setTimeout(() => { |
| | | getListTreeData(); |
| | | }, 100); |
| | | window.addEventListener('resize', selfPipeAdaption); |
| | | }); |
| | | onActivated(() => { |
| | | window.addEventListener('resize', selfPipeAdaption); |
| | | getListTreeData(); |
| | | }); |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | :deep(.el-tabs__content) { |
| | | width: 100%; |
| | | height: calc(100% - 50px); |
| | | } |
| | | .box_right_title { |
| | | background: linear-gradient(90deg, #2d81d9, #0655b4); |
| | | color: #fff; |
| | | height: 30px; |
| | | line-height: 30px; |
| | | text-align: left; |
| | | border-radius: 7px; |
| | | padding-left: 10px; |
| | | display: flex; |
| | | } |
| | | .form_m1 { |
| | | :deep(.el-form-item__label) { |
| | | color: #ffffff !important; |
| | | } |
| | | } |
| | | .setQHForm { |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | align-items: center; |
| | | padding-top: 10px; |
| | | } |
| | | .analyseInput_left { |
| | | width: 68px; |
| | | height: 32px; |
| | | line-height: 32px; |
| | | // border: 1px solid #cccccc; |
| | | text-align: center; |
| | | color: #666; |
| | | } |
| | | .analyseInput_right { |
| | | width: 45px; |
| | | height: 32px; |
| | | line-height: 32px; |
| | | // border: 1px solid #cccccc; |
| | | text-align: center; |
| | | color: #666; |
| | | } |
| | | .deviationInput { |
| | | width: 68px; |
| | | height: 32px; |
| | | line-height: 32px; |
| | | // border: 1px solid #cccccc; |
| | | text-align: center; |
| | | color: #666; |
| | | } |
| | | .formLabel_size { |
| | | :deep(.el-form-item__label) { |
| | | font-size: 1rem !important; |
| | | } |
| | | :deep(.el-form-item--default) { |
| | | margin-bottom: 10px !important; |
| | | line-height: 36px; |
| | | } |
| | | } |
| | | </style> |