{"remainingRequest":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\cssc-fvue\\src\\views\\GridControl\\ReactivePower.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\cssc-fvue\\src\\views\\GridControl\\ReactivePower.vue","mtime":1681441192473},{"path":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport { Bar } from '@antv/g2plot'\r\nimport { Chart } from '@antv/g2'\r\nimport utils from '@/hotent-ui-util'\r\nexport default {\r\n name: 'reactivePower',\r\n data() {\r\n return {\r\n imgOn: require('@/assets/img/buttonOn.png'),\r\n imgOff: require('@/assets/img/buttonOff.png'),\r\n tableHeight: 300,\r\n accecptData: false,\r\n emsGridDispathReactEnabled: false,\r\n emsGridDispatchReactVal: 0,\r\n emsGridDispatchReactValUnit: '',\r\n emsFactoryReactSum: 0,\r\n emsFactoryReactSumUnit: '',\r\n columns: [\r\n // {\r\n // label: '机组名称',\r\n // prop: 'fanName',\r\n // minWidth: '15%',\r\n // sortable: true,\r\n // },\r\n {\r\n label: '风速',\r\n prop: 'winSpd',\r\n minWidth: '15%',\r\n sortable: true,\r\n unit: 'm/s',\r\n },\r\n {\r\n label: '无功分配值',\r\n prop: 'var_52',\r\n minWidth: '20%',\r\n sortable: true,\r\n unit: 'Kvar',\r\n },\r\n {\r\n label: '无功功率',\r\n prop: 'powReact',\r\n minWidth: '20%',\r\n sortable: true,\r\n unit: 'Kvar',\r\n },\r\n ],\r\n tableData: [],\r\n maxOriginValue: 0,\r\n maxValue: 0,\r\n minOriginValue: 0,\r\n minValue: 0,\r\n chart: null,\r\n chartData: [],\r\n }\r\n },\r\n created() { },\r\n mounted() {\r\n this.initCrewList()\r\n this.accecptData = true\r\n this.$bus.$on('SCADAMsg', (data) => {\r\n if (this.accecptData) {\r\n // console.log(data, 'SCADAMsg')\r\n this.changeData(data)\r\n }\r\n })\r\n this.$nextTick(() => {\r\n this.initChart()\r\n })\r\n },\r\n beforeDestroy() {\r\n this.accecptData = false\r\n },\r\n methods: {\r\n initCrewList() {\r\n let query = {\r\n sorter: [{ direction: 'ASC', property: 'sn' }],\r\n }\r\n this.$http.post('${cssc}/biz/base/fanInfo/v1/list', query).then(\r\n (resp) => {\r\n if (resp.data) {\r\n this.formatFan(resp.data)\r\n }\r\n },\r\n (error) => {\r\n reject(error)\r\n }\r\n )\r\n },\r\n formatFan(data) {\r\n this.crewsList = []\r\n data.forEach((item, index) => {\r\n this.crewsList.push({\r\n fancode: item.fanCode,\r\n fanName: item.fanName,\r\n var_52: null,\r\n powReact: null,\r\n })\r\n })\r\n },\r\n initChart() {\r\n this.chart = new Chart({\r\n container: 'chart-container',\r\n autoFit: true,\r\n })\r\n this.chart.data(this.chartData)\r\n this.chart.scale({\r\n date: {\r\n alias: '时间',\r\n type: 'time',\r\n formatter: (value) => {\r\n return utils.formatDate(value, 'time')\r\n },\r\n },\r\n value: {\r\n sync: true, // 将 pv 字段数值同 time 字段数值进行同步\r\n nice: true,\r\n min: 0,\r\n },\r\n })\r\n this.chart.axis('date', {\r\n grid: null,\r\n label: {\r\n style: {\r\n fill: '#979ba4',\r\n },\r\n },\r\n line: {\r\n style: {\r\n stroke: '#414959',\r\n },\r\n },\r\n })\r\n this.chart.axis('value', {\r\n grid: {\r\n line: {\r\n style: {\r\n stroke: '#414959',\r\n lineWidth: 1,\r\n lineDash: [3, 3],\r\n },\r\n },\r\n },\r\n label: {\r\n style: {\r\n fill: '#979ba4',\r\n },\r\n formatter: (val) => {\r\n return val + ' ' + this.emsGridDispatchReactValUnit\r\n },\r\n },\r\n line: {\r\n style: {\r\n stroke: '#414959',\r\n },\r\n },\r\n })\r\n\r\n this.chart.legend({\r\n position: 'top',\r\n itemName: {\r\n style: {\r\n fill: '#979ba4',\r\n },\r\n },\r\n })\r\n this.chart.tooltip({\r\n shared: true,\r\n showCrosshairs: true,\r\n domStyles: {\r\n 'g2-tooltip': {\r\n background: 'rgba(0,0,0, 0.8)',\r\n color: '#d6e0ec',\r\n },\r\n },\r\n })\r\n this.chart\r\n .line()\r\n .position('date*value')\r\n .color('type', ['#399873', '#ff9c00'])\r\n this.chart.interaction('active-region')\r\n this.chart.render()\r\n },\r\n changeData(data) {\r\n if (data.wind) {\r\n this.emsGridDispathReactEnabled = data.wind\r\n .emsGridDispathReactEnabled\r\n ? data.wind.emsGridDispathReactEnabled.val\r\n : false // 电网调度无功指令\r\n\r\n this.emsGridDispatchReactVal = data.wind.emsGridDispatchReactVal\r\n ? data.wind.emsGridDispatchReactVal.val\r\n : 0 // 电网调度无功指令值\r\n this.emsGridDispatchReactValUnit = data.wind\r\n .emsGridDispatchReactVal\r\n ? data.wind.emsGridDispatchReactVal.unit\r\n : '' // 电网调度无功指令值单位\r\n this.emsFactoryReactSum = data.wind.emsFactoryReactSum\r\n ? data.wind.emsFactoryReactSum.val\r\n : 0 // 风场总有功\r\n this.emsFactoryReactSumUnit = data.wind.emsFactoryReactSum\r\n ? data.wind.emsFactoryReactSum.unit\r\n : '' // 风场总有功单位\r\n if (\r\n data.wind.emsGridDispatchReactVal ||\r\n data.wind.emsFactoryReactSum\r\n ) {\r\n let newData1 = {\r\n date: parseInt(data.time),\r\n value: data.wind.emsGridDispatchReactVal\r\n ? data.wind.emsGridDispatchReactVal.val\r\n : null,\r\n type: '电网无功调度指令值',\r\n }\r\n let newData2 = {\r\n date: parseInt(data.time),\r\n value: data.wind.emsFactoryReactSum\r\n ? data.wind.emsFactoryReactSum.val\r\n : null,\r\n type: '风场总无功',\r\n }\r\n this.chartData.push(newData1, newData2)\r\n if (this.chartData.length > 600) {\r\n this.chartData.splice(0, 2)\r\n }\r\n this.chart.changeData(this.chartData)\r\n }\r\n }\r\n\r\n if (data.fan) {\r\n this.maxOriginValue = 0\r\n this.maxValue = 0\r\n this.minOriginValue = 0\r\n this.minValue = 0\r\n if (this.crewsList) {\r\n\r\n\r\n this.crewsList.forEach((item) => {\r\n item.winSpd = data.fan[item.fancode].winSpd\r\n ? data.fan[item.fancode].winSpd.val\r\n : null\r\n item.winSpdUnit = data.fan[item.fancode].winSpd\r\n ? data.fan[item.fancode].winSpd.unit\r\n : null\r\n item.var_52 = data.fan[item.fancode].var_52\r\n ? data.fan[item.fancode].var_52.val\r\n : null\r\n item.var_52Unit = data.fan[item.fancode].var_52\r\n ? data.fan[item.fancode].var_52.unit\r\n : null\r\n item.powReact = data.fan[item.fancode].powReact\r\n ? data.fan[item.fancode].powReact.val\r\n : null\r\n item.powReactUnit = data.fan[item.fancode].powReact\r\n ? data.fan[item.fancode].powReact.unit\r\n : null\r\n this.maxOriginValue = Math.max(\r\n this.maxOriginValue,\r\n item.var_52,\r\n item.powReact\r\n )\r\n this.minOriginValue = Math.min(\r\n this.minOriginValue,\r\n item.var_52,\r\n item.powReact\r\n )\r\n })\r\n // 取到所有指标中的最大值和最小值\r\n // 最大值占对比图90%,最小值占对比图10%\r\n this.maxValue = this.maxOriginValue\r\n this.minValue = this.minOriginValue\r\n\r\n // 取得100%的值,这里要注意负数\r\n let total =\r\n (Math.abs(this.maxValue) + Math.abs(this.minValue)) / 0.8\r\n\r\n // 因为存在负数的情况,所以整体加一个100%。全部取正数 计算出起始点的值。\r\n let start = this.minValue + total * 0.9 // this.minValue + totol - totol * 0.1\r\n\r\n // (获取值 + total - 起始点 / total)\r\n // console.log(this.maxValue, this.minValue, total, start)\r\n this.crewsList.forEach((item) => {\r\n item.widthV =\r\n Math.round(\r\n ((item.var_52 + total - start) / total) * 10000\r\n ) / 100\r\n item.widthP =\r\n Math.round(\r\n ((item.powReact + total - start) / total) * 10000\r\n ) / 100\r\n })\r\n this.tableData = this.crewsList\r\n }\r\n }\r\n },\r\n },\r\n}\r\n",null]}