{"remainingRequest":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\bzzgj-fvue\\src\\views\\Device\\performanceAnalysis\\HealthAnalysis.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\src\\views\\Device\\performanceAnalysis\\HealthAnalysis.vue","mtime":1688626262846},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-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//\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//\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//\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 * as echarts from 'echarts'\r\nimport dictUtils from '@/components/dict/DictSelectUtils.js'\r\nimport vueSeamlessScroll from 'vue-seamless-scroll'\r\nimport equipmentIndex from '@/api/device/equipmentIndex.js'\r\nimport resourceManage from '@/api/device/resourceManage.js'\r\nimport equipmentManage from '@/api/device/equipmentManage.js'\r\nexport default {\r\n components: {\r\n vueSeamlessScroll,\r\n },\r\n data() {\r\n var that = this\r\n return {\r\n selectA: false,\r\n selectB: true,\r\n selectC: true,\r\n selectD: true,\r\n selectE: true,\r\n warnAnalyzeData: [],\r\n regionPicker: [],\r\n endTime: '',\r\n startTime: '',\r\n warnFailureTime: '',\r\n warnFailureFailure: '',\r\n warnFailureAlarm: '',\r\n areaStatusAreaName: [],\r\n productValue: '',\r\n deviceValue: 'bspqx',\r\n productData: [],\r\n intellectData: [\r\n {\r\n alarm: 0,\r\n failure: 0,\r\n normal: 0,\r\n num: 0,\r\n other: 0,\r\n scrap: 0,\r\n typeCode: 'barricade',\r\n typeName: '升降路障产品',\r\n },\r\n {\r\n alarm: 0,\r\n failure: 0,\r\n normal: 0,\r\n num: 0,\r\n other: 0,\r\n scrap: 0,\r\n typeCode: 'barricade',\r\n typeName: '升降路障产品',\r\n },\r\n {\r\n alarm: 0,\r\n failure: 0,\r\n normal: 0,\r\n num: 0,\r\n other: 0,\r\n scrap: 0,\r\n typeCode: 'barricade',\r\n typeName: '升降路障产品',\r\n },\r\n {\r\n alarm: 0,\r\n failure: 0,\r\n normal: 0,\r\n num: 0,\r\n other: 0,\r\n scrap: 0,\r\n typeCode: 'barricade',\r\n typeName: '升降路障产品',\r\n },\r\n {\r\n alarm: 0,\r\n failure: 0,\r\n normal: 0,\r\n num: 0,\r\n other: 0,\r\n scrap: 0,\r\n typeCode: 'barricade',\r\n typeName: '升降路障产品',\r\n },\r\n {\r\n alarm: 0,\r\n failure: 0,\r\n normal: 0,\r\n num: 0,\r\n other: 0,\r\n scrap: 0,\r\n typeCode: 'barricade',\r\n typeName: '升降路障产品',\r\n },\r\n {\r\n alarm: 0,\r\n failure: 0,\r\n normal: 0,\r\n num: 0,\r\n other: 0,\r\n scrap: 0,\r\n typeCode: 'barricade',\r\n typeName: '升降路障产品',\r\n },\r\n ],\r\n equipmentData: [],\r\n\r\n activeName: '/1552911478301003776',\r\n conditions: [\r\n {\r\n name: '综合管理局',\r\n value: '/1552911478301003776',\r\n },\r\n {\r\n name: '渝高物业',\r\n value: '/1667102417759510528',\r\n },\r\n {\r\n name: '视频监控',\r\n value: '',\r\n },\r\n ],\r\n searchForm: {\r\n productValue: '',\r\n regionValue: '',\r\n },\r\n treeData: [],\r\n loading: false,\r\n reportFormData: [],\r\n searchType: false,\r\n areaId: '',\r\n fullId: '',\r\n typeCode: '',\r\n startTime: '',\r\n endTime: '',\r\n productValue1: '',\r\n productDataOne: [],\r\n equipmentStatusData: [],\r\n // 用于已选择的第一个时间\r\n pickerOneDate: null,\r\n pickerOptions: {\r\n // 获取选择的第一个时间\r\n onPick: (obj) => {\r\n // 把第一个时间分配给pickerOneDate\r\n let startDate = new Date(obj.minDate).getTime()\r\n that.pickerOneDate = startDate\r\n },\r\n disabledDate(time) {\r\n if (that.pickerOneDate) {\r\n const day = 7 * 24 * 3600 * 1000\r\n let maxTime = that.pickerOneDate + day\r\n let minTime = that.pickerOneDate - day\r\n return (\r\n time.getTime() > maxTime ||\r\n time.getTime() < minTime ||\r\n time.getTime() > Date.now()\r\n )\r\n } else {\r\n return time.getTime() > Date.now()\r\n }\r\n },\r\n },\r\n }\r\n },\r\n created() {\r\n this.loadProduct() //产品树\r\n this.areaStatusList() //设备分析\r\n this.getAreaTree() //区域树\r\n this.getAllproductType()\r\n this.getReportForm() // 获取区域设备分析数据\r\n this.getEquipmentLife() //获取设备年限分析数据\r\n },\r\n mounted() {},\r\n computed: {},\r\n methods: {\r\n getAllproductType() {\r\n equipmentIndex.AllproductType({}, (res) => {\r\n if (res.state) {\r\n this.productDataOne = res.value\r\n this.productValue1 =\r\n this.productDataOne[0].children[0].fullId\r\n this.typeCode = this.productDataOne[0].children[0].fullId\r\n this.getEquipmentStatus()\r\n }\r\n })\r\n },\r\n //搜索\r\n handleSearch() {\r\n this.searchType = true\r\n if (this.activeName == 2) {\r\n this.getVideoData()\r\n } else {\r\n this.getReportForm()\r\n }\r\n },\r\n toDevicePage(val) {\r\n if (this.activeName != 2) {\r\n localStorage.setItem('product', JSON.stringify(val))\r\n this.$router.push({\r\n path: 'DevicePage',\r\n })\r\n } else {\r\n localStorage.setItem('monitor', JSON.stringify(val))\r\n console.log('监控')\r\n this.$router.push({\r\n path: 'MonitorPage',\r\n })\r\n }\r\n },\r\n //tab切换\r\n handleTabsClick(tab) {\r\n this.searchType = false\r\n this.searchForm = {\r\n regionValue: [],\r\n productValue: [],\r\n }\r\n this.loadProduct()\r\n if (tab.index == 2) {\r\n this.getVideoData()\r\n } else {\r\n this.getReportForm()\r\n }\r\n },\r\n //产品树\r\n loadProduct() {\r\n resourceManage.getProductTree(\r\n {\r\n // fullId: this.activeName\r\n },\r\n (res) => {\r\n if (res.state) {\r\n this.productData = res.value\r\n }\r\n }\r\n )\r\n },\r\n //区域\r\n getAreaTree() {\r\n equipmentManage.loadAreaTree(\r\n {\r\n id: '0',\r\n },\r\n (res) => {\r\n this.treeData = res.value // this.formatData(res.rows)\r\n this.$set(this.treeData)\r\n }\r\n )\r\n },\r\n regionChange(val, data) {\r\n console.log(data)\r\n let arr = JSON.parse(JSON.stringify(data))\r\n if (val == 'product') {\r\n this.typeCode = arr.pop()\r\n } else if (val == 'time') {\r\n if (data == null) {\r\n this.pickerOneDate = null\r\n } else {\r\n this.startTime = arr[0]\r\n this.endTime = arr[1]\r\n }\r\n }\r\n this.getEquipmentStatus()\r\n },\r\n // 获取报表数据\r\n getReportForm() {\r\n let areaFullId = this.searchForm.regionValue\r\n ? this.searchForm.regionValue.pop()\r\n : ''\r\n let fullId = ''\r\n if (this.searchType) {\r\n fullId = this.searchForm.productValue.pop()\r\n console.log(fullId)\r\n if (!fullId) {\r\n fullId = this.activeName\r\n }\r\n } else {\r\n fullId = this.activeName\r\n }\r\n let isIntellect = ''\r\n const formData = new FormData()\r\n formData.append('areaFullId', areaFullId ? areaFullId : '')\r\n formData.append('fullId', fullId ? fullId : '')\r\n formData.append('isIntellect', isIntellect ? isIntellect : '')\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n }\r\n this.$http\r\n .post(\r\n window.context.portal +\r\n `/homepage/v1/deviceProductStatistics`,\r\n formData,\r\n config\r\n )\r\n .then((res) => {\r\n if (res.data.state) {\r\n this.reportFormData = res.data.value\r\n }\r\n })\r\n },\r\n //视频\r\n getVideoData() {\r\n let areaFullId = this.searchForm.regionValue.pop()\r\n let isIntellect = ''\r\n const formData = new FormData()\r\n formData.append('areaFullId', areaFullId ? areaFullId : '')\r\n formData.append('fullId', '')\r\n formData.append('isIntellect', isIntellect ? isIntellect : '')\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n }\r\n this.$http\r\n .post(\r\n window.context.portal + `/homepage/v1/videoStatistics`,\r\n formData,\r\n config\r\n )\r\n .then((res) => {\r\n if (res.data.state) {\r\n this.reportFormData = res.data.value\r\n }\r\n })\r\n },\r\n productChange(val) {\r\n if (this.productValue.length > 0) {\r\n let arr = JSON.parse(JSON.stringify(this.productValue))\r\n this.fullId = arr.pop()\r\n } else {\r\n this.fullId = ''\r\n }\r\n this.areaStatusList()\r\n },\r\n //设备分析\r\n areaStatusList() {\r\n const formData = new FormData()\r\n formData.append('areaId', this.areaId ? this.areaId : '')\r\n formData.append('fullId', this.fullId ? this.fullId : '')\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n }\r\n this.$http\r\n .post(\r\n window.context.portal + `/homepage/v1/areaStatusAnalyze`,\r\n formData,\r\n config\r\n )\r\n .then((res) => {\r\n if (res.data.state) {\r\n this.equipmentData = res.data.value\r\n this.$nextTick(() => {\r\n this.equipmentInit()\r\n })\r\n }\r\n })\r\n },\r\n // 设备分析echarts\r\n equipmentInit() {\r\n let myChart = echarts.init(document.getElementById('Bar'))\r\n // 指定图表的配置项和数据\r\n let AData = []\r\n let BData = []\r\n let CData = []\r\n this.equipmentData.forEach((e) => {\r\n AData.push({\r\n value: e.normal,\r\n extra: {\r\n param: e.areaId,\r\n },\r\n })\r\n BData.push({\r\n value: e.failure,\r\n extra: {\r\n param: e.areaId,\r\n },\r\n })\r\n CData.push({\r\n value: e.alarm,\r\n extra: {\r\n param: e.areaId,\r\n },\r\n })\r\n })\r\n let option = {\r\n toolbox: {\r\n feature: {\r\n restore: {\r\n show: true,\r\n title: '返回',\r\n },\r\n },\r\n iconStyle: {\r\n borderColor: '#000',\r\n },\r\n },\r\n // title: {\r\n // \ttext: '全校人数汇总',\r\n // \tleft: 'center'\r\n // },\r\n tooltip: {\r\n trigger: 'axis',\r\n axisPointer: {\r\n type: 'shadow',\r\n },\r\n },\r\n legend: {},\r\n grid: {\r\n left: 50,\r\n right: 20,\r\n bottom: '10%',\r\n },\r\n xAxis: {\r\n data: this.equipmentData.map((a) => a.areaName),\r\n },\r\n yAxis: {},\r\n series: [\r\n {\r\n // color: '#1890ff',\r\n type: 'bar',\r\n name: '正常数',\r\n data: AData,\r\n barWidth: 25,\r\n showBackground: true,\r\n label: {\r\n show: true,\r\n fontSize: 13,\r\n color: '#000',\r\n position: 'top',\r\n // 配置自定义参数\r\n extra: {\r\n customParam: '这里是自定义参数',\r\n },\r\n },\r\n itemStyle: {\r\n normal: {\r\n color: new echarts.graphic.LinearGradient(\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n [\r\n {\r\n offset: 0,\r\n color: '#01D1FF',\r\n },\r\n {\r\n offset: 1,\r\n color: '#1890ff',\r\n },\r\n ]\r\n ),\r\n },\r\n },\r\n },\r\n {\r\n color: '#ff8000',\r\n type: 'bar',\r\n name: '故障数',\r\n barWidth: 25,\r\n showBackground: true,\r\n data: BData,\r\n label: {\r\n show: true,\r\n fontSize: 13,\r\n color: '#000',\r\n position: 'top',\r\n // 配置自定义参数\r\n extra: {\r\n customParam: '这里是自定义参数',\r\n },\r\n },\r\n itemStyle: {\r\n normal: {\r\n color: new echarts.graphic.LinearGradient(\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n [\r\n {\r\n offset: 0,\r\n color: '#FFBD7A',\r\n },\r\n {\r\n offset: 1,\r\n color: '#ff8000',\r\n },\r\n ]\r\n ),\r\n },\r\n },\r\n },\r\n {\r\n color: '#f9c700',\r\n type: 'bar',\r\n name: '报警数',\r\n barWidth: 25,\r\n data: CData,\r\n showBackground: true,\r\n label: {\r\n show: true,\r\n fontSize: 13,\r\n color: '#000',\r\n position: 'top',\r\n extra: {\r\n customParam: '这里是自定义参数',\r\n },\r\n },\r\n itemStyle: {\r\n normal: {\r\n color: new echarts.graphic.LinearGradient(\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n [\r\n {\r\n offset: 0,\r\n color: '#FFE375',\r\n },\r\n {\r\n offset: 1,\r\n color: '#f9c700',\r\n },\r\n ]\r\n ),\r\n },\r\n },\r\n },\r\n ],\r\n }\r\n option.xAxis.data = this.equipmentData.map((a) => a.areaName)\r\n myChart.setOption(option)\r\n // 点击柱状触发事件(点击事件,点击下钻查询年级所属的班级数据) 如不需要下钻查询可不写\r\n myChart.on('click', (params) => {\r\n let areaId = params.data.extra.param\r\n let fullId = ''\r\n if (areaId) {\r\n const formData = new FormData()\r\n formData.append('areaId', areaId ? areaId : '')\r\n formData.append('fullId', fullId ? fullId : '')\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n }\r\n this.$http\r\n .post(\r\n window.context.portal +\r\n `/homepage/v1/areaStatusAnalyze`,\r\n formData,\r\n config\r\n )\r\n .then((res) => {\r\n if (res.data.state) {\r\n let AData = []\r\n let BData = []\r\n let CData = []\r\n this.equipmentData = res.data.value\r\n res.data.value.forEach((e) => {\r\n AData.push({\r\n value: e.normal,\r\n extra: {\r\n param: e.areaId,\r\n },\r\n })\r\n BData.push({\r\n value: e.failure,\r\n extra: {\r\n param: e.areaId,\r\n },\r\n })\r\n CData.push({\r\n value: e.alarm,\r\n extra: {\r\n param: e.areaId,\r\n },\r\n })\r\n })\r\n option.series = [\r\n {\r\n color: '#1890ff',\r\n type: 'bar',\r\n name: '正常数',\r\n data: AData,\r\n },\r\n {\r\n color: '#ff8000',\r\n type: 'bar',\r\n name: '故障数',\r\n data: BData,\r\n },\r\n {\r\n color: '#f9c700',\r\n type: 'bar',\r\n name: '报警数',\r\n data: CData,\r\n },\r\n ]\r\n option.xAxis.data = this.equipmentData.map(\r\n (a) => a.areaName\r\n )\r\n myChart.setOption(option)\r\n }\r\n })\r\n }\r\n })\r\n },\r\n //获取设备使用年限分析数据\r\n getEquipmentLife() {\r\n equipmentIndex.lifeAnalyze((res) => {\r\n if (res.state) {\r\n res.value = res.value.map((item) => {\r\n return {\r\n typeName: item.typeName,\r\n 正常使用年限数量: item.normal,\r\n 临近使用年限数量: item.warn,\r\n 超过使用年限数量: item.alarm,\r\n }\r\n })\r\n\r\n this.warnAnalyzeData = res.value\r\n this.$nextTick(() => {\r\n this.equipmentLife()\r\n })\r\n }\r\n })\r\n },\r\n //设备使用年限分析\r\n equipmentLife() {\r\n let myChart = echarts.init(document.getElementById('lifeAnalyze'))\r\n let option = {\r\n legend: {},\r\n tooltip: {},\r\n grid: {\r\n // top: '2%',\r\n left: '2%',\r\n right: '4%',\r\n bottom: '4%',\r\n containLabel: true,\r\n },\r\n color: ['#1890ff', '#f9c700', '#ff8000'],\r\n dataset: {\r\n // typeName: item.typeName,\r\n // 设备使用年限预警数: item.warn,\r\n // 设备报警数: item.alarm\r\n dimensions: [\r\n 'typeName',\r\n '正常使用年限数量',\r\n '临近使用年限数量',\r\n '超过使用年限数量',\r\n ],\r\n source: this.warnAnalyzeData,\r\n },\r\n // xAxis: {type: 'category'},\r\n xAxis: {\r\n type: 'value',\r\n boundaryGap: [0, 0.1],\r\n axisLabel: {\r\n textStyle: {\r\n // color: \"#C5D2F2\", //颜色\r\n fontSize: '14', //字体大小\r\n },\r\n },\r\n // max: 150, //最大值\r\n min: 0, //最小值\r\n splitNumber: 3, //间隔数量\r\n axisTick: {\r\n //坐标轴刻度相关设置\r\n show: false, //是否显示坐标轴刻度。\r\n },\r\n },\r\n yAxis: [\r\n {\r\n type: 'category',\r\n },\r\n ],\r\n // Declare several bar series, each will be mapped\r\n // to a column of dataset.source by default.\r\n series: [\r\n {\r\n type: 'bar',\r\n label: {\r\n show: true,\r\n fontSize: 13,\r\n position: 'right',\r\n // normal: {\r\n // \tshow: false,\r\n // \tposition: 'top'\r\n // },\r\n // formatter: '{@value}',\r\n },\r\n showBackground: true,\r\n itemStyle: {\r\n normal: {\r\n color: function () {\r\n return {\r\n type: 'linear',\r\n x: 1,\r\n y: 0,\r\n x2: 0,\r\n y2: 0,\r\n colorStops: [\r\n {\r\n offset: 0,\r\n color: '#01D1FF', // 0% 处的颜色\r\n },\r\n {\r\n offset: 0.9,\r\n color: '#1890ff', // 100% 处的颜色\r\n },\r\n ],\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: 'bar',\r\n label: {\r\n show: true,\r\n fontSize: 13,\r\n position: 'right',\r\n },\r\n showBackground: true,\r\n itemStyle: {\r\n normal: {\r\n color: function () {\r\n return {\r\n type: 'linear',\r\n x: 1,\r\n y: 0,\r\n x2: 0,\r\n y2: 0,\r\n colorStops: [\r\n {\r\n offset: 0,\r\n color: '#FFE375', // 0% 处的颜色\r\n },\r\n {\r\n offset: 0.9,\r\n color: '#f9c700', // 100% 处的颜色\r\n },\r\n ],\r\n }\r\n },\r\n },\r\n },\r\n },\r\n {\r\n type: 'bar',\r\n label: {\r\n show: true,\r\n fontSize: 13,\r\n position: 'right',\r\n // normal: {\r\n // \tshow: false,\r\n // \tposition: 'top'\r\n // },\r\n // formatter: '{@value}'\r\n },\r\n showBackground: true,\r\n itemStyle: {\r\n normal: {\r\n color: function () {\r\n return {\r\n type: 'linear',\r\n x: 1,\r\n y: 0,\r\n x2: 0,\r\n y2: 0,\r\n colorStops: [\r\n {\r\n offset: 0,\r\n color: '#FFBD7A', // 0% 处的颜色\r\n },\r\n {\r\n offset: 0.9,\r\n color: '#ff8000', // 100% 处的颜色\r\n },\r\n ],\r\n }\r\n },\r\n },\r\n },\r\n },\r\n ],\r\n //滚动条\r\n dataZoom: [\r\n {\r\n type: 'slider',\r\n show: true,\r\n yAxisIndex: [0],\r\n width: 6, //组件宽度\r\n // backgroundColor: \"#1A53DD\", //两边未选中的滑动条区域的颜色\r\n borderRadius: 5,\r\n // borderColor: \"#093683\", //滚动条边框颜色\r\n // fillerColor: \"#093683\", //选中的滑动条区域的颜色\r\n left: '95%', //滚动条位置\r\n start: 0, //数据窗口范围的起始百分比\r\n end: 10, //数据窗口范围的结束百分比\r\n realtime: true, //是否实时更新\r\n },\r\n ],\r\n }\r\n option && myChart.setOption(option)\r\n },\r\n //设备状态分析\r\n getEquipmentStatus() {\r\n const formData = new FormData()\r\n formData.append('typeCode', this.typeCode ? this.typeCode : '')\r\n formData.append('startTime', this.startTime ? this.startTime : '')\r\n formData.append('endTime', this.endTime ? this.endTime : '')\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n }\r\n this.$http\r\n .post(\r\n window.context.portal +\r\n `/homepage/v1/warnFailureHisAnalyze`,\r\n formData,\r\n config\r\n )\r\n .then((res) => {\r\n if (res.data.state) {\r\n console.log(res.data.value)\r\n this.equipmentStatusData = res.data.value\r\n // this.equipmentData = res.data.value\r\n this.$nextTick(() => {\r\n this.equipmentStatus()\r\n })\r\n }\r\n })\r\n },\r\n //设备状态分析echarts\r\n equipmentStatus() {\r\n let myChart = echarts.init(document.getElementById('deviceList'))\r\n let xName = []\r\n let AData = []\r\n let BData = []\r\n this.equipmentStatusData.forEach((e) => {\r\n xName.push(e.typeName)\r\n AData.push(e.failure)\r\n BData.push(e.alarm)\r\n })\r\n\r\n let option = {\r\n tooltip: {\r\n trigger: 'axis',\r\n axisPointer: {\r\n type: 'cross',\r\n label: {\r\n backgroundColor: '#6a7985',\r\n },\r\n },\r\n formatter: function (params) {\r\n // console.log(params)\r\n var relVal = params[0].name\r\n for (var i = 0, l = params.length; i < l; i++) {\r\n relVal +=\r\n '
' +\r\n params[i].marker +\r\n params[i].seriesName +\r\n ':' +\r\n '' +\r\n params[i].value +\r\n '' +\r\n '个'\r\n }\r\n return relVal\r\n },\r\n },\r\n // 更改图例默认颜色(依次应用)\r\n color: ['#f9c700', '#ff8000'],\r\n legend: {\r\n icon: 'circle', //图例样式\r\n data: ['报警数量', '故障数量'],\r\n },\r\n // toolbox: {\r\n // feature: {\r\n // saveAsImage: {}\r\n // }\r\n // },\r\n grid: {\r\n left: '3%',\r\n right: '4%',\r\n bottom: '5%',\r\n containLabel: true,\r\n },\r\n xAxis: [\r\n {\r\n type: 'category',\r\n // boundaryGap: false,\r\n data: xName,\r\n axisLabel: {\r\n interval: 0, //代表显示所有x轴标签显示\r\n // rotate: 45 //代表逆时针旋转45度\r\n },\r\n },\r\n ],\r\n yAxis: [\r\n {\r\n max: function (value) {\r\n return value.max + parseInt(value.max * 0.2)\r\n },\r\n minInterval: 1,\r\n type: 'value',\r\n },\r\n ],\r\n series: [\r\n {\r\n name: '报警数量',\r\n type: 'line',\r\n stack: 'Total2',\r\n smooth: true,\r\n areaStyle: {\r\n color: '#c8ecf2',\r\n },\r\n emphasis: {\r\n focus: 'series',\r\n },\r\n areaStyle: {\r\n color: {\r\n type: 'linear',\r\n x: 0,\r\n y: 0,\r\n x2: 0,\r\n y2: 1,\r\n colorStops: [\r\n // 渐变颜色\r\n {\r\n offset: 0,\r\n color: 'rgba(249, 199, 0, 0.6)',\r\n },\r\n {\r\n offset: 1,\r\n color: 'rgba(249, 199, 0, 0)',\r\n },\r\n ],\r\n global: false,\r\n },\r\n },\r\n data: AData,\r\n },\r\n {\r\n name: '故障数量',\r\n type: 'line',\r\n stack: 'Total3',\r\n smooth: true,\r\n label: {\r\n show: true,\r\n position: 'top',\r\n },\r\n areaStyle: {\r\n color: '#ffe7e1',\r\n },\r\n emphasis: {\r\n focus: 'series',\r\n },\r\n areaStyle: {\r\n color: {\r\n type: 'linear',\r\n x: 0,\r\n y: 0,\r\n x2: 0,\r\n y2: 1,\r\n colorStops: [\r\n // 渐变颜色\r\n {\r\n offset: 0,\r\n color: 'rgba(255, 128, 0, 0.6)',\r\n },\r\n {\r\n offset: 1,\r\n color: 'rgba(255, 128, 0, 0)',\r\n },\r\n ],\r\n global: false,\r\n },\r\n },\r\n data: BData,\r\n },\r\n ],\r\n //滚动条\r\n dataZoom: [\r\n // {\r\n // type: 'inside',\r\n // },\r\n {\r\n show: true,\r\n type: 'slider',\r\n realtime: true,\r\n startValue: 0,\r\n endValue: 14,\r\n xAxisIndex: [0],\r\n bottom: '10',\r\n left: '30',\r\n height: 10,\r\n borderColor: 'rgba(0,0,0,0)',\r\n // textStyle: {\r\n // \tcolor: '#000',\r\n // },\r\n },\r\n ],\r\n }\r\n option && myChart.setOption(option)\r\n },\r\n },\r\n}\r\n",null]}