| | |
| | | x: 0.35, |
| | | y: 0.35, |
| | | type: 'dischargeCircuit', |
| | | setData:{} |
| | | setData:{ |
| | | xAxisData:['低告警数量', '告警机房总数', '告警机房数比例', '告警总数','告警总数比例'], |
| | | maxYAxis:[50,50,50,50,50], |
| | | xData:[30,19,"37%",44,"25%"], |
| | | data:[30,19,37,44,25] |
| | | } |
| | | } |
| | | }, |
| | | { |
| | |
| | | export default { |
| | | name: "dischargeCircuit", |
| | | chart: "", |
| | | chartData: {}, |
| | | props: { |
| | | id: { |
| | | require: true, |
| | |
| | | setOption(opt) { |
| | | this.$options.discharge.setOption(opt); |
| | | }, |
| | | setData() { |
| | | setData(dataList) { |
| | | let self = this; |
| | | let xAxisData = [];//['低告警数量', '告警机房总数', '告警机房数比例', '告警总数','告警总数比例'] |
| | | let maxYAxis = []; |
| | | let xData =[]; |
| | | let data = []; |
| | | // 存值 |
| | | self.$options.chartData = dataList; |
| | | if(!dataList){ |
| | | self.$axios({ |
| | | method:"get", |
| | | url:"/batteryAlarm/dischargeAnalysis", |
| | | params:null |
| | | |
| | | }).then(res=>{ |
| | | if(res.data.code == 1){ |
| | | let result = res.data.data; |
| | | for (const key in result) { |
| | | xAxisData.push(key); |
| | | xData.push(result[key]); |
| | | if(typeof(result[key]) == 'string'){ |
| | | data.push(parseFloat(result[key].replace(/%/g,""))); |
| | | }else{ |
| | | data.push(result[key]); |
| | | } |
| | | } |
| | | let maxInt = Math.max.apply(null,data) + 100; |
| | | data.forEach(() => { |
| | | maxYAxis.push(maxInt); |
| | | }); |
| | | self.optionSet(xAxisData,maxYAxis,xData,data,); |
| | | console.log(xAxisData,data) |
| | | } |
| | | }) |
| | | }else{ |
| | | self.optionSet(dataList.xAxisData,dataList.maxYAxis,dataList.xData,dataList.data); |
| | | } |
| | | |
| | | }, |
| | | // 图表配置 |
| | | optionSet(xAxisData,maxYAxis,xData,data){ |
| | | var option = { |
| | | grid: { |
| | | left: '10%', |
| | | right: '5%', |
| | | left: '15%', |
| | | right: '15%', |
| | | bottom: '10%', |
| | | top: '17%', |
| | | z: 22 |
| | | }, |
| | | xAxis: [ |
| | | { |
| | | //左侧柱状图的x轴 |
| | | //左侧柱状图的x轴 下X轴 |
| | | type: 'category', |
| | | gridIndex: 0,//y轴所在的 grid 的索引 |
| | | // boundaryGap: false, |
| | |
| | | fontSize: '12' |
| | | } |
| | | }, |
| | | data: ['低告警数量', '告警机房总数', '告警机房数比例', '告警总数','告警总数比例'], |
| | | data: xAxisData//['低告警数量', '告警机房总数', '告警机房数比例', '告警总数','告警总数比例'], |
| | | // inverse: true, //反转 |
| | | }, |
| | | { |
| | | // 左侧柱状图的Y轴 |
| | | // 左侧柱状图的Y轴 上X轴 |
| | | gridIndex: 0,//y轴所在的 grid 的索引 |
| | | splitLine: 'none', |
| | | axisTick: 'none', |
| | |
| | | return colorList[index]; |
| | | }, |
| | | }, |
| | | data: [555,444,333,222,666], |
| | | data: xData//[555,444,333,222,666], |
| | | }, |
| | | ], |
| | | yAxis: { |
| | | //坐标轴 |
| | | yAxis: [ |
| | | { |
| | | //坐标轴 左Y轴 |
| | | type: 'value', |
| | | // name: '数值', |
| | | min: 0, |
| | | max: maxYAxis[0], |
| | | // interval: 300, |
| | | axisLine: { |
| | | show: false, |
| | | // y坐标线样式 |
| | |
| | | } |
| | | } |
| | | }, |
| | | |
| | | |
| | | {//右Y轴 |
| | | type: 'value', |
| | | // name: '比例', |
| | | min: 0, |
| | | max: 100, |
| | | // interval: 10, |
| | | axisLabel: { |
| | | formatter: '{value} %' |
| | | }, |
| | | //分格线 |
| | | splitLine: { |
| | | show:false, |
| | | lineStyle: { |
| | | color: '#000' |
| | | } |
| | | } |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | name: '低告警数量', |
| | | type: 'bar', |
| | | xAxisIndex: 0,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。 |
| | | yAxisIndex: 0,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。 |
| | | data: [555,0,0,0,0], |
| | | data: [data[0],0,0,0,0], |
| | | barWidth: 15, |
| | | itemStyle: { |
| | | normal: { |
| | |
| | | type: 'bar', |
| | | xAxisIndex: 0,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。 |
| | | yAxisIndex: 0,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。 |
| | | data: [0,444,0,0,0], |
| | | data: [0,data[1],0,0,0], |
| | | barWidth: 15, |
| | | itemStyle: { |
| | | normal: { |
| | |
| | | name: '告警机房数比例', |
| | | type: 'bar', |
| | | xAxisIndex: 0,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。 |
| | | yAxisIndex: 0,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。 |
| | | data: [0,0,333,0,0], |
| | | yAxisIndex: 1,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。 |
| | | data: [0,0,data[2],0,0], |
| | | barWidth: 15, |
| | | itemStyle: { |
| | | normal: { |
| | |
| | | { |
| | | name: '告警总数', |
| | | type: 'bar', |
| | | xAxisIndex: 0,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。 |
| | | // xAxisIndex: 0,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。 |
| | | yAxisIndex: 0,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。 |
| | | data: [0,0,0,222,0], |
| | | data: [0,0,0,data[3],0], |
| | | barWidth: 15, |
| | | itemStyle: { |
| | | normal: { |
| | |
| | | { |
| | | name: '告警总数比例', |
| | | type: 'bar', |
| | | xAxisIndex: 0,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。 |
| | | yAxisIndex: 0,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。 |
| | | data: [0,0,0,0,666], |
| | | // xAxisIndex: 0,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。 |
| | | yAxisIndex: 1,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。 |
| | | data: [0,0,0,0,data[4]], |
| | | barWidth: 15, |
| | | itemStyle: { |
| | | normal: { |
| | |
| | | xAxisIndex: 0,//使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。 |
| | | yAxisIndex: 0,//使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用。 |
| | | barGap: '-1', |
| | | data: [1800,1800, 1800,1800,1800], |
| | | data: maxYAxis,//[1800,1800, 1800,1800,1800], |
| | | barWidth: 15, |
| | | itemStyle: { |
| | | normal: { |
| | |
| | | type: 'pictorialBar', |
| | | // symbol: '../../assets/logo copy.png', |
| | | symbolSize: [30,-30], |
| | | yAxisIndex: 0, |
| | | color:new echarts.graphic.LinearGradient(0, 1, 0, 0, [ |
| | | 'rgba(220,58,123,0.4)', 'rgba(234,167,116,0.4)' |
| | | ].map((color, offset) => ({ |
| | |
| | | }))), |
| | | z: 12, |
| | | data: [{ |
| | | value: 555, |
| | | value: data[0], |
| | | symbolPosition: 'end' |
| | | },{ |
| | | value: 0, |
| | |
| | | value: 0, |
| | | symbolPosition: 'end' |
| | | }] |
| | | },{ |
| | | }, |
| | | { |
| | | name: '告警机房总数', |
| | | type: 'pictorialBar', |
| | | yAxisIndex: 0, |
| | | // symbol: 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAMAAADWZboaAAAAZlBMVEUAAABe3uVe3+Vf3uVf3+Zf3uVg3+Zg3+Zf3+Vi4OZh4OZg3+Z86/Bh3+Zi4Odj4Odi4OZ86/B76/B86/Bj4ed56+9x5+xn4umB7/N87PB36e+A7/N+7fF/7vJ/7vJ+7fGA7/OB7/PReX+lAAAAIXRSTlMABQkVDREmIhk3MR10LEFFPHh7cUprXE35h2XnqMLAp+mHAG9cAAAB5ElEQVRIx83WjU7CMBQFYIoiKMqU/XUboHv/l/Tce7t2XamDNSacETEmX86tlK2rx4py150o+MstMBLwWRfHKo6JCVxLnvmFGBjFQ58oF1//sUZhGy/ClSTWObgnL4O+bkeN4nY2okfNMbkRt9/vtxz8InoTsWplJSCzFxPmO8+GpSIByX3YQAuGDWtRKhKjCnxDXhF6Z4yxnZ20Wgko7BMRDmxtSGVaI4kdTIgb+zTYoJQlIMlDlmUFgrcDWWC201qSayqlTkiCddWWeV62VU0YlnpRi9VOKaSUsiyq/N0krwq2Ugt7lVpZl5BfHNiytjagMi+XYp0kCR45hMlivVQrE/uU5pXSrCB5bM6d1t2lOZItMqmliT3q5uVxqxzyW/ccfYLNKx7ZTeykMvNyac2yt2Fbc61MHLSC0rwoxbiNdlQ3GBm1NLHQsHUrtEXppR/ljNpW6DbSCoqlFiVoN6YdaFlgsSFVPs1BdT8OaB5QyQzVcaqWDows/zepxR8ObLglTrdtCRVuRNj4Rrxh+//0ke2f8KVL+Kon3GCSbmsJN9OUW3j6g0Ns+LgCij2u0h+Sghc8mlMPBMgdx5DFh59VmOVHrvmDnoNxCz3J7MFWsMuaLyR089xz/xhlfijvwutR8gv3zk6BLUUeCgAAAABJRU5ErkJggg==', |
| | | symbolSize: [30,-30], |
| | | color:new echarts.graphic.LinearGradient(0, 1, 0, 0, [ |
| | |
| | | value: 0, |
| | | symbolPosition: 'end' |
| | | },{ |
| | | value: 444, |
| | | value: data[1], |
| | | symbolPosition: 'end' |
| | | },{ |
| | | value: 0, |
| | |
| | | value: 0, |
| | | symbolPosition: 'end' |
| | | }] |
| | | },{ |
| | | }, |
| | | { |
| | | name: '告警机房数比例', |
| | | yAxisIndex: 1, |
| | | type: 'pictorialBar', |
| | | // symbol: 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAMAAADWZboaAAAAZlBMVEUAAABe3uVe3+Vf3uVf3+Zf3uVg3+Zg3+Zf3+Vi4OZh4OZg3+Z86/Bh3+Zi4Odj4Odi4OZ86/B76/B86/Bj4ed56+9x5+xn4umB7/N87PB36e+A7/N+7fF/7vJ/7vJ+7fGA7/OB7/PReX+lAAAAIXRSTlMABQkVDREmIhk3MR10LEFFPHh7cUprXE35h2XnqMLAp+mHAG9cAAAB5ElEQVRIx83WjU7CMBQFYIoiKMqU/XUboHv/l/Tce7t2XamDNSacETEmX86tlK2rx4py150o+MstMBLwWRfHKo6JCVxLnvmFGBjFQ58oF1//sUZhGy/ClSTWObgnL4O+bkeN4nY2okfNMbkRt9/vtxz8InoTsWplJSCzFxPmO8+GpSIByX3YQAuGDWtRKhKjCnxDXhF6Z4yxnZ20Wgko7BMRDmxtSGVaI4kdTIgb+zTYoJQlIMlDlmUFgrcDWWC201qSayqlTkiCddWWeV62VU0YlnpRi9VOKaSUsiyq/N0krwq2Ugt7lVpZl5BfHNiytjagMi+XYp0kCR45hMlivVQrE/uU5pXSrCB5bM6d1t2lOZItMqmliT3q5uVxqxzyW/ccfYLNKx7ZTeykMvNyac2yt2Fbc61MHLSC0rwoxbiNdlQ3GBm1NLHQsHUrtEXppR/ljNpW6DbSCoqlFiVoN6YdaFlgsSFVPs1BdT8OaB5QyQzVcaqWDows/zepxR8ObLglTrdtCRVuRNj4Rrxh+//0ke2f8KVL+Kon3GCSbmsJN9OUW3j6g0Ns+LgCij2u0h+Sghc8mlMPBMgdx5DFh59VmOVHrvmDnoNxCz3J7MFWsMuaLyR089xz/xhlfijvwutR8gv3zk6BLUUeCgAAAABJRU5ErkJggg==', |
| | | symbolSize: [30,-30], |
| | |
| | | value: 0, |
| | | symbolPosition: 'end' |
| | | },{ |
| | | value: 333, |
| | | value: data[2], |
| | | symbolPosition: 'end' |
| | | },{ |
| | | value: 0, |
| | |
| | | value: 0, |
| | | symbolPosition: 'end' |
| | | }] |
| | | },{ |
| | | }, |
| | | { |
| | | name: '告警总数', |
| | | type: 'pictorialBar', |
| | | // symbol: 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAMAAADWZboaAAAAZlBMVEUAAABe3uVe3+Vf3uVf3+Zf3uVg3+Zg3+Zf3+Vi4OZh4OZg3+Z86/Bh3+Zi4Odj4Odi4OZ86/B76/B86/Bj4ed56+9x5+xn4umB7/N87PB36e+A7/N+7fF/7vJ/7vJ+7fGA7/OB7/PReX+lAAAAIXRSTlMABQkVDREmIhk3MR10LEFFPHh7cUprXE35h2XnqMLAp+mHAG9cAAAB5ElEQVRIx83WjU7CMBQFYIoiKMqU/XUboHv/l/Tce7t2XamDNSacETEmX86tlK2rx4py150o+MstMBLwWRfHKo6JCVxLnvmFGBjFQ58oF1//sUZhGy/ClSTWObgnL4O+bkeN4nY2okfNMbkRt9/vtxz8InoTsWplJSCzFxPmO8+GpSIByX3YQAuGDWtRKhKjCnxDXhF6Z4yxnZ20Wgko7BMRDmxtSGVaI4kdTIgb+zTYoJQlIMlDlmUFgrcDWWC201qSayqlTkiCddWWeV62VU0YlnpRi9VOKaSUsiyq/N0krwq2Ugt7lVpZl5BfHNiytjagMi+XYp0kCR45hMlivVQrE/uU5pXSrCB5bM6d1t2lOZItMqmliT3q5uVxqxzyW/ccfYLNKx7ZTeykMvNyac2yt2Fbc61MHLSC0rwoxbiNdlQ3GBm1NLHQsHUrtEXppR/ljNpW6DbSCoqlFiVoN6YdaFlgsSFVPs1BdT8OaB5QyQzVcaqWDows/zepxR8ObLglTrdtCRVuRNj4Rrxh+//0ke2f8KVL+Kon3GCSbmsJN9OUW3j6g0Ns+LgCij2u0h+Sghc8mlMPBMgdx5DFh59VmOVHrvmDnoNxCz3J7MFWsMuaLyR089xz/xhlfijvwutR8gv3zk6BLUUeCgAAAABJRU5ErkJggg==', |
| | | symbolSize: [30,-30], |
| | | yAxisIndex: 0, |
| | | color:new echarts.graphic.LinearGradient(0, 1, 0, 0, [ |
| | | 'rgba(117,103,244,0.4)', 'rgba(156,178,255,0.4)' |
| | | ].map((color, offset) => ({ |
| | |
| | | value: 0, |
| | | symbolPosition: 'end' |
| | | },{ |
| | | value: 222, |
| | | value: data[3], |
| | | symbolPosition: 'end' |
| | | },{ |
| | | value: 0, |
| | | symbolPosition: 'end' |
| | | }] |
| | | },{ |
| | | }, |
| | | { |
| | | name: '告警总数比例', |
| | | type: 'pictorialBar', |
| | | yAxisIndex: 1, |
| | | // symbol: 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAMAAADWZboaAAAAZlBMVEUAAABe3uVe3+Vf3uVf3+Zf3uVg3+Zg3+Zf3+Vi4OZh4OZg3+Z86/Bh3+Zi4Odj4Odi4OZ86/B76/B86/Bj4ed56+9x5+xn4umB7/N87PB36e+A7/N+7fF/7vJ/7vJ+7fGA7/OB7/PReX+lAAAAIXRSTlMABQkVDREmIhk3MR10LEFFPHh7cUprXE35h2XnqMLAp+mHAG9cAAAB5ElEQVRIx83WjU7CMBQFYIoiKMqU/XUboHv/l/Tce7t2XamDNSacETEmX86tlK2rx4py150o+MstMBLwWRfHKo6JCVxLnvmFGBjFQ58oF1//sUZhGy/ClSTWObgnL4O+bkeN4nY2okfNMbkRt9/vtxz8InoTsWplJSCzFxPmO8+GpSIByX3YQAuGDWtRKhKjCnxDXhF6Z4yxnZ20Wgko7BMRDmxtSGVaI4kdTIgb+zTYoJQlIMlDlmUFgrcDWWC201qSayqlTkiCddWWeV62VU0YlnpRi9VOKaSUsiyq/N0krwq2Ugt7lVpZl5BfHNiytjagMi+XYp0kCR45hMlivVQrE/uU5pXSrCB5bM6d1t2lOZItMqmliT3q5uVxqxzyW/ccfYLNKx7ZTeykMvNyac2yt2Fbc61MHLSC0rwoxbiNdlQ3GBm1NLHQsHUrtEXppR/ljNpW6DbSCoqlFiVoN6YdaFlgsSFVPs1BdT8OaB5QyQzVcaqWDows/zepxR8ObLglTrdtCRVuRNj4Rrxh+//0ke2f8KVL+Kon3GCSbmsJN9OUW3j6g0Ns+LgCij2u0h+Sghc8mlMPBMgdx5DFh59VmOVHrvmDnoNxCz3J7MFWsMuaLyR089xz/xhlfijvwutR8gv3zk6BLUUeCgAAAABJRU5ErkJggg==', |
| | | symbolSize: [30,-30], |
| | | color:new echarts.graphic.LinearGradient(0, 1, 0, 0, [ |
| | |
| | | value: 0, |
| | | symbolPosition: 'end' |
| | | },{ |
| | | value: 666, |
| | | value: data[4], |
| | | symbolPosition: 'end' |
| | | }] |
| | | }, |
| | |
| | | let self = this; |
| | | setTimeout(function(){ |
| | | self.$options.discharge.resize(); |
| | | self.setData(null); |
| | | self.setData(self.$options.chartData); |
| | | }) |
| | | } |
| | | }, |
| | |
| | | this.$options.chart.setOption(opt); |
| | | }, |
| | | setData(dataList) { |
| | | console.log(dataList) |
| | | let self = this; |
| | | let legendData = []; |
| | | let yAxisData = []; |