| | |
| | | <template> |
| | | <div class="echarts-wrapper" @click="toParentPage"> |
| | | <div class="echarts-wrapper" @click="toParentPage" @dblclick="dblclick"> |
| | | <div class="echarts-content" ref="chart"></div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as echarts from "echarts"; |
| | | import { |
| | | onlinegroupVolAnalysis |
| | | } from '@/assets/js/api' |
| | | import { WebSocketClass } from '@/assets/js/socket' |
| | | import { checkboxs } from '@/assets/js/powerInfoData' |
| | | export default { |
| | | name: "PictorialBar", |
| | | chart: "", |
| | |
| | | } |
| | | }, |
| | | data() { |
| | | return {} |
| | | return { |
| | | websock: null |
| | | } |
| | | }, |
| | | methods: { |
| | | toParentPage() { |
| | | window.parent.parent.postMessage({ |
| | | cmd: "syncPage", |
| | | params: { |
| | | pageInfo: { |
| | | label: "电池实时告警", |
| | | name: "batteryrTimequery", |
| | | src: "#/batteryrTimequery", |
| | | closable: true |
| | | }, |
| | | } |
| | | }, "*"); |
| | | findParents(node, select) { |
| | | var parent = node.parentNode; |
| | | if (parent === null || parent.className.indexOf(select) != -1) { |
| | | return parent; |
| | | } else { |
| | | return this.findParents(parent, select); |
| | | } |
| | | }, |
| | | dblclick(e) { |
| | | this.isAllScreen = !this.isAllScreen |
| | | let parents = this.findParents(e.currentTarget, 'vdr') |
| | | if (this.isAllScreen) { |
| | | this.parentsStyle = JSON.parse(JSON.stringify(parents.style)); |
| | | parents.style.transform = 'none'; |
| | | parents.style.width = '100%'; |
| | | parents.style.height = '100%'; |
| | | parents.style.position = 'fixed'; |
| | | parents.style.left = 0; |
| | | parents.style.right = 0; |
| | | parents.style.bottom = 0; |
| | | parents.style.top = 0; |
| | | parents.style.zIndex = 99999; |
| | | } else { |
| | | parents.style.transform = this.parentsStyle.transform; |
| | | parents.style.width = this.parentsStyle.width; |
| | | parents.style.height = this.parentsStyle.height; |
| | | parents.style.position = this.parentsStyle.position; |
| | | parents.style.left = 'initial'; |
| | | parents.style.right = 'initial'; |
| | | parents.style.bottom = 'initial'; |
| | | parents.style.top = 'initial'; |
| | | parents.style.zIndex = 'auto'; |
| | | } |
| | | this.$options.chart.resize(); |
| | | }, |
| | | toParentPage(value) { |
| | | if (typeof (value) == 'string') { |
| | | window.parent.parent.postMessage({ |
| | | cmd: "syncPage", |
| | | params: { |
| | | pageInfo: { |
| | | label: "电池实时告警", |
| | | name: "batteryrTimequery", |
| | | src: "#/batteryrTimequery/?alarmType=" + value, |
| | | closable: true |
| | | }, |
| | | } |
| | | }, "*"); |
| | | } |
| | | }, |
| | | setOption(opt) { |
| | | this.$options.chart.setOption(opt); |
| | | this.$options.chart.on('click', (params) => { |
| | | console.log(params) |
| | | let name; |
| | | if (params.seriesName == '在线电压') { |
| | | name = '在线电压'; |
| | | } else if (params.seriesName == '组端电压') { |
| | | name = '组端电压'; |
| | | } |
| | | checkboxs.dcgj.map(item => { |
| | | if (item.label == name) { |
| | | this.toParentPage(item.value) |
| | | } |
| | | }) |
| | | }) |
| | | }, |
| | | organizeData(data) { |
| | | let option = { |
| | |
| | | top: 40, |
| | | right: 20, |
| | | left: 50, |
| | | bottom: 30 |
| | | bottom: 20 |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item', |
| | |
| | | data: data.xData, |
| | | }, |
| | | yAxis: { |
| | | axisLabel: { |
| | | color: '#fff', |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: '#007DD140', |
| | |
| | | this.organizeData(sendData) |
| | | } else { |
| | | this.postData() |
| | | setInterval(() => { |
| | | this.postData() |
| | | }, 3000) |
| | | } |
| | | }, |
| | | postData() { |
| | | let userId = localStorage.getItem('userId'); |
| | | let params = { |
| | | userId: userId |
| | | } |
| | | onlinegroupVolAnalysis(params).then((res) => { |
| | | if (res.data.code == 1) { |
| | | let optionData = { |
| | | xData: [], |
| | | series: [{ |
| | | name: "在线电压", |
| | | data: [], |
| | | color: '#E85D22' |
| | | }, |
| | | { |
| | | name: "组端电压", |
| | | data: [], |
| | | color: '#2EEA9D' |
| | | } |
| | | ] |
| | | this.websock = new WebSocketClass(`/screen/batteryAlarm/onlinegroupVolAnalysis/${userId}`, this.wsMessage) |
| | | }, |
| | | wsMessage(res) { |
| | | if (res.code == 1) { |
| | | let optionData = { |
| | | xData: [], |
| | | series: [{ |
| | | name: "在线电压", |
| | | data: [], |
| | | color: '#E85D22' |
| | | }, |
| | | { |
| | | name: "组端电压", |
| | | data: [], |
| | | color: '#2EEA9D' |
| | | } |
| | | let resData = res.data.data; |
| | | for (let key in resData) { |
| | | let seriesData = resData[key] |
| | | if (key == '在线电压') { |
| | | for (let jey in seriesData) { |
| | | if (typeof seriesData[jey] == 'string') { |
| | | optionData.series[0].data.push({ |
| | | name: jey, |
| | | value: Number(seriesData[jey].split('%')[0]) |
| | | }) |
| | | } else { |
| | | optionData.series[0].data.push({ |
| | | name: jey, |
| | | value: seriesData[jey] |
| | | }) |
| | | } |
| | | } |
| | | } else if (key == '组端电压') { |
| | | for (let jey in seriesData) { |
| | | if (typeof seriesData[jey] == 'string') { |
| | | optionData.series[1].data.push({ |
| | | name: jey, |
| | | value: Number(seriesData[jey].split('%')[0]) |
| | | }) |
| | | } else { |
| | | optionData.series[1].data.push({ |
| | | name: jey, |
| | | value: seriesData[jey] |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | this.$options.chartData = optionData; |
| | | this.organizeData(optionData) |
| | | ] |
| | | } |
| | | }).catch((err) => { |
| | | console.log(err) |
| | | }); |
| | | let resData = res.data; |
| | | for (let key in resData) { |
| | | let seriesData = resData[key] |
| | | if (key == '在线电压') { |
| | | for (let jey in seriesData) { |
| | | if (typeof seriesData[jey] == 'string') { |
| | | optionData.series[0].data.push({ |
| | | name: jey, |
| | | value: Number(seriesData[jey].split('%')[0]) |
| | | }) |
| | | } else { |
| | | optionData.series[0].data.push({ |
| | | name: jey, |
| | | value: seriesData[jey] |
| | | }) |
| | | } |
| | | } |
| | | } else if (key == '组端电压') { |
| | | for (let jey in seriesData) { |
| | | if (typeof seriesData[jey] == 'string') { |
| | | optionData.series[1].data.push({ |
| | | name: jey, |
| | | value: Number(seriesData[jey].split('%')[0]) |
| | | }) |
| | | } else { |
| | | optionData.series[1].data.push({ |
| | | name: jey, |
| | | value: seriesData[jey] |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | this.$options.chartData = optionData; |
| | | this.organizeData(optionData) |
| | | } |
| | | }, |
| | | outClear() { |
| | | this.websock.closeMyself() |
| | | this.websock = null |
| | | window.removeEventListener('resize', this.resize); |
| | | }, |
| | | resize() { |
| | | setTimeout(() => { |