{"remainingRequest":"D:\\jenkins\\workspace\\sfz-lh-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\sfz-lh-fvue\\src\\views\\BigScreen\\deviceMonitor.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\sfz-lh-fvue\\src\\views\\BigScreen\\deviceMonitor.vue","mtime":1715713737010},{"path":"D:\\jenkins\\workspace\\sfz-lh-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\sfz-lh-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\sfz-lh-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//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 headline from './headline.vue'\r\nimport VueSeamlessScroll from 'vue-seamless-scroll'\r\nimport commonAPI from '@/api/bigScreen/common.js'\r\nimport utils from '@/utils'\r\nexport default {\r\n components: {headline, VueSeamlessScroll},\r\n name: 'deviceMonitor',\r\n data() {\r\n return {\r\n test: [],\r\n utils: utils,\r\n loadingColor: 'rgba(6, 46, 106, 0.01)',\r\n pageQuery: {\r\n pageBean: {\r\n page: 1,\r\n pageSize: -1,\r\n },\r\n },\r\n thisMenuValue: '',\r\n totalAmount: '',\r\n EquipmentCountData: [],\r\n statusData: [],\r\n // 设备系统分布数据\r\n SystemData: [\r\n // {\r\n // name: '',\r\n // amount: 0,\r\n // systemType: 4,\r\n // imgUrl: require('../../assets/img/bigScreen/icon-power.png'),\r\n // },\r\n {\r\n name: '',\r\n amount: 0,\r\n systemType: 2,\r\n // imgUrl: require('../../assets/img/bigScreen/icon-electromechanical.png'),\r\n imgUrl: require('../../assets/img/bigScreen/icon-power.png'),\r\n },\r\n {\r\n name: '',\r\n amount: 0,\r\n systemType: 1,\r\n imgUrl: require('../../assets/img/bigScreen/icon-platform.png'),\r\n },\r\n {\r\n name: '',\r\n amount: 0,\r\n systemType: 3,\r\n imgUrl: require('../../assets/img/bigScreen/icon-monitor.png'),\r\n },\r\n {\r\n name: '',\r\n amount: 0,\r\n systemType: 4,\r\n imgUrl: require('../../assets/img/bigScreen/icon-charge.png'),\r\n },\r\n ],\r\n systemType: [],\r\n // 故障维修数据\r\n ServiceData: [],\r\n state: [],\r\n // 设备类型数据\r\n pieChart: null,\r\n deviceType: [],\r\n pieData: [],\r\n pieOption: null,\r\n // 故障统计数据\r\n faultPieChart: null,\r\n level: [],\r\n faultPieData: [],\r\n faultPieOption: null,\r\n curIndex: 0,\r\n faultPiecurIndex: 0,\r\n // 故障分析数据\r\n analysisChartOptionSource: null,\r\n analysisChartResource: null,\r\n analysisChartDataResource: [\r\n {\r\n name: '17.47',\r\n value: ['17.47', 60],\r\n },\r\n {\r\n name: '17.47',\r\n value: ['17.47', 50],\r\n },\r\n {\r\n name: '17.47',\r\n value: ['17.47', 55],\r\n },\r\n {\r\n name: '17.47',\r\n value: ['17.47', 48],\r\n },\r\n {\r\n name: '17.47',\r\n value: ['17.47', 56],\r\n },\r\n {\r\n name: '17.47',\r\n value: ['17.47', 43],\r\n },\r\n ],\r\n // 巡检数据\r\n scrollheader: [\r\n {name: '序号', width: '4%'},\r\n {name: '巡检人员', width: '24%'},\r\n {name: '内容', width: '24%'},\r\n {name: '状态', width: '24%'},\r\n {name: '时间', width: '24%'},\r\n ],\r\n scrollListData: [],\r\n // 设备状态\r\n scrollHeaderDeviceStatus: [\r\n {name: '序号', width: '5%'},\r\n {name: '编码', width: '19%'},\r\n {name: '名称', width: '19%'},\r\n {name: '类型', width: '19%'},\r\n {name: '位置', width: '19%'},\r\n {name: '状态', width: '19%'},\r\n ],\r\n scrollHeaderDeviceStatusList: [],\r\n loadObj: {\r\n warnInfoData: false,\r\n scrollHeaderDeviceStatusList: false,\r\n scrollListData: false,\r\n faultPieData: false,\r\n pieData: false,\r\n barChartDeviceData: false,\r\n raderChart: false,\r\n },\r\n loadingColor: 'rgba(6, 46, 106, 0.01)',\r\n // 故障数量数据\r\n warnData: {\r\n num: 0,\r\n finished: 0,\r\n unfinished: 0,\r\n },\r\n // 设备率数据\r\n rateData: [\r\n {\r\n name: '设备在线率',\r\n value: 0,\r\n },\r\n {\r\n name: '设备离线率',\r\n value: 0,\r\n },\r\n {\r\n name: '设备故障率',\r\n value: 0,\r\n },\r\n {\r\n name: '故障处置率',\r\n value: 0,\r\n },\r\n // {\r\n // name: '维修及时率',\r\n // value: 0,\r\n // },\r\n ],\r\n // 预警信息\r\n warnInfoData: [],\r\n isOne: 1,\r\n isTwo: 2,\r\n isThree: 3,\r\n isFour: 4,\r\n analysis: {\r\n data: [\r\n '0',\r\n '0',\r\n '0',\r\n '0',\r\n '0',\r\n '0',\r\n '0',\r\n '0',\r\n '0',\r\n '0',\r\n '0',\r\n '0',\r\n ],\r\n value: [],\r\n },\r\n monthLogNum: '',\r\n lastmonthLogNum: '',\r\n qoq: '',\r\n direction: true,\r\n params: {},\r\n tollStationId: '',\r\n barChartDevice: null, // 设备故障排名\r\n barDeviceHitchSeriesData: [],\r\n barDeviceHitchYAxisData: [],\r\n raderChart: null, // 故障平均处理时间\r\n raderChartOptionSource: null,\r\n raderIndicatorData: [],\r\n raderSeriesData: [],\r\n loadingColor: 'rgba(6, 46, 106, 0.01)',\r\n }\r\n },\r\n computed: {\r\n optionSingleHeightTime() {\r\n return {\r\n step: 0.3,\r\n limitMoveNum: 1, // 开始无缝滚动的数据量 this.dataList.length\r\n openWatch: true, // 开启数据实时监控刷新dom\r\n }\r\n },\r\n },\r\n mounted() {},\r\n\r\n activated() {\r\n // 组件keepalive 页面显示时重新加载数据\r\n this.getData()\r\n },\r\n methods: {\r\n initData() {\r\n this.pieData = []\r\n this.faultPieData = []\r\n this.EquipmentCountData = []\r\n this.statusData = utils.getDictItemsFromCache('sbzt')\r\n this.statusData.forEach((item) => {\r\n this.EquipmentCountData.push({\r\n amount: 0,\r\n name: item.name,\r\n status: item.value,\r\n })\r\n })\r\n this.systemType = utils.getDictItemsFromCache('xtly')\r\n this.systemType.forEach((item) => {\r\n for (let i = 0; i < this.SystemData.length; i++) {\r\n if (this.SystemData[i].systemType == item.sequence)\r\n this.SystemData[i].name = item.name\r\n }\r\n })\r\n this.deviceType = utils.getDictItemsFromCache('sblx')\r\n this.deviceType.forEach((item) => {\r\n this.pieData.push({\r\n value: 0,\r\n name: item.name,\r\n deviceType: item.sequence,\r\n })\r\n })\r\n this.level = utils.getDictItemsFromCache('gzjb')\r\n this.level.forEach((item) => {\r\n this.faultPieData.push({\r\n value: 0,\r\n name: item.name,\r\n level: item.sequence,\r\n })\r\n })\r\n this.state = utils.getDictItemsFromCache('wxzt')\r\n this.state.forEach((item) => {\r\n this.ServiceData.push({\r\n value: 0,\r\n name: item.name,\r\n state: item.sequence,\r\n })\r\n })\r\n\r\n this.barDeviceHitchYAxisData = []\r\n this.barDeviceHitchSeriesData = []\r\n this.raderIndicatorData = []\r\n this.raderSeriesData = []\r\n },\r\n getData() {\r\n this.tollStationId = sessionStorage.getItem('tollStationId')\r\n this.initData()\r\n this.getDeviceStatusData()\r\n this.getAmonutData()\r\n this.getSystemData()\r\n this.getTypeData()\r\n this.getRateData()\r\n this.getStatisticsData()\r\n // this.getAnalysisData()\r\n this.getRepairData()\r\n this.getWarnInfo()\r\n this.getInspectLog()\r\n this.getHitchLogData()\r\n this.getHandleTime()\r\n },\r\n // 设备类型图\r\n drawPieChart() {\r\n this.pieData.forEach((i) => {\r\n i.name = i.name + '--' + i.value + '个'\r\n })\r\n // chart 已存在则为更新数据\r\n if (this.pieChart) {\r\n this.pieOption.series[0].data = this.pieData\r\n this.pieOption.legend.data = this.pieData\r\n this.pieChart.setOption(this.pieOption)\r\n } else {\r\n // chart 不存在则为初始化数据和图表\r\n this.pieChart = echarts.init(\r\n document.getElementById('section3-pie-chart')\r\n )\r\n this.pieOption = {\r\n title: {\r\n text: this.pieData[0].value + ' 个',\r\n subtext: this.pieData[0].name.split('--')[0],\r\n left: '30%',\r\n x: 'center',\r\n y: '38%',\r\n textAlign: 'center',\r\n textStyle: {\r\n color: '#fff',\r\n fontSize: '20px',\r\n lineHeight: 5,\r\n },\r\n subtextStyle: {\r\n color: '#fff',\r\n fontSize: '12px',\r\n },\r\n },\r\n // color: ['#699BFF', '#F4DE79'],\r\n tooltip: {\r\n trigger: 'item',\r\n backgroundColor: 'rgba(13, 79, 145, 0.9)',\r\n borderColor: '#3399FF',\r\n confine: true,\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n formatter: '{a}
{b} : {c}件 ({d}%)',\r\n },\r\n legend: {\r\n type: 'scroll',\r\n orient: 'vertical',\r\n right: -3,\r\n top: 5,\r\n bottom: 5,\r\n data: this.pieData,\r\n itemGap: 8,\r\n itemWidth: 16,\r\n itemHeight: 8,\r\n pageIconSize: 11,\r\n pageTextStyle: {\r\n color: '#ffffff',\r\n fontSize: 10,\r\n },\r\n textStyle: {\r\n color: '#ffffff',\r\n fontSize: 10,\r\n },\r\n pageIconColor: 'rgba(249, 248, 248, 1)',\r\n },\r\n series: [\r\n {\r\n name: '设备类型',\r\n type: 'pie',\r\n radius: ['77%', '94%'],\r\n center: ['32%', '50%'],\r\n data: this.pieData,\r\n label: {show: false},\r\n itemStyle: {\r\n borderColor: '#050B12',\r\n borderWidth: 2,\r\n },\r\n },\r\n ],\r\n }\r\n this.pieOption && this.pieChart.setOption(this.pieOption)\r\n window.addEventListener('resize', () => this.pieChart.resize())\r\n this.intervalPie()\r\n }\r\n this.pieChart.dispatchAction({\r\n type: 'highlight',\r\n seriesIndex: 0,\r\n dataIndex: this.curIndex,\r\n })\r\n },\r\n // 故障统计图\r\n drawfaultPieChart() {\r\n // chart 已存在则为更新数据\r\n if (this.faultPieChart) {\r\n this.faultPieOption.series[0].data = this.faultPieData\r\n this.faultPieChart.setOption(this.faultPieOption)\r\n } else {\r\n // chart 不存在则为初始化数据和图表\r\n this.faultPieChart = echarts.init(\r\n document.getElementById('section4-pie-chart')\r\n )\r\n this.faultPieOption = {\r\n title: {\r\n text: this.faultPieData[0].value + ' 个',\r\n subtext: this.faultPieData[0].name,\r\n x: 'center',\r\n y: '38%',\r\n textStyle: {\r\n color: '#fff',\r\n fontSize: '20px',\r\n lineHeight: 5,\r\n },\r\n subtextStyle: {\r\n color: '#fff',\r\n fontSize: '12px',\r\n },\r\n },\r\n color: ['#F35675', '#FF884D', '#F4DE79', '#699BFF'],\r\n tooltip: {\r\n trigger: 'item',\r\n backgroundColor: 'rgba(13, 79, 145, 0.9)',\r\n borderColor: '#3399FF',\r\n confine: true,\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n formatter: '{a}
{b} : {c}个 ({d}%)',\r\n },\r\n series: [\r\n {\r\n name: '故障统计',\r\n type: 'pie',\r\n radius: ['77%', '94%'],\r\n center: ['50%', '50%'],\r\n data: this.faultPieData,\r\n label: {show: false},\r\n itemStyle: {\r\n borderColor: '#0D1722',\r\n borderWidth: 4,\r\n },\r\n },\r\n ],\r\n }\r\n this.faultPieOption &&\r\n this.faultPieChart.setOption(this.faultPieOption)\r\n window.addEventListener('resize', () =>\r\n this.faultPieChart.resize()\r\n )\r\n this.intervalFaultPie()\r\n }\r\n this.faultPieChart.dispatchAction({\r\n type: 'highlight',\r\n seriesIndex: 0,\r\n dataIndex: this.faultPiecurIndex,\r\n })\r\n },\r\n intervalPie() {\r\n setInterval(() => {\r\n this.pieChart.dispatchAction({\r\n type: 'downplay',\r\n seriesIndex: 0,\r\n dataIndex: this.curIndex,\r\n })\r\n this.curIndex++\r\n if (this.curIndex >= this.pieData.length) {\r\n this.curIndex = 0\r\n }\r\n this.pieChart.dispatchAction({\r\n type: 'highlight',\r\n seriesIndex: 0,\r\n dataIndex: this.curIndex,\r\n })\r\n }, 3000)\r\n },\r\n intervalFaultPie() {\r\n setInterval(() => {\r\n this.faultPieChart.dispatchAction({\r\n type: 'downplay',\r\n seriesIndex: 0,\r\n dataIndex: this.faultPiecurIndex,\r\n })\r\n this.faultPiecurIndex++\r\n if (this.faultPiecurIndex >= this.faultPieData.length) {\r\n this.faultPiecurIndex = 0\r\n }\r\n this.faultPieChart.dispatchAction({\r\n type: 'highlight',\r\n seriesIndex: 0,\r\n dataIndex: this.faultPiecurIndex,\r\n })\r\n\r\n // 故障统计跟随变化统计数量已经名称\r\n this.faultPieOption.title.text =\r\n this.faultPieData[this.faultPiecurIndex].value + ' 个'\r\n this.faultPieOption.title.subtext =\r\n this.faultPieData[this.faultPiecurIndex].name\r\n this.faultPieOption &&\r\n this.faultPieChart.setOption(this.faultPieOption)\r\n\r\n this.pieOption.title.text =\r\n this.pieData[this.faultPiecurIndex].value + ' 个'\r\n this.pieOption.title.subtext =\r\n this.pieData[this.faultPiecurIndex].name.split('--')[0]\r\n this.pieOption && this.pieChart.setOption(this.pieOption)\r\n }, 3000)\r\n },\r\n // 故障分析折线图\r\n drawanalysisChartResource() {\r\n // chart 已存在则为更新数据\r\n if (this.analysisChartResource) {\r\n this.analysisChartOptionSource.series[0].data =\r\n this.analysis.data\r\n this.analysisChartResource.setOption(\r\n this.analysisChartOptionSource\r\n )\r\n } else {\r\n // chart 不存在则为初始化数据和图表\r\n this.analysisChartResource = echarts.init(\r\n document.getElementById('analysis-chart')\r\n )\r\n this.analysisChartOptionSource = {\r\n // dataset: {\r\n // source: this.analysisChartDataResource,\r\n // },\r\n color: ['#00FFFF'],\r\n tooltip: {\r\n trigger: 'axis',\r\n backgroundColor: 'rgba(13, 79, 145, 0.9)',\r\n borderColor: '#3399FF',\r\n confine: true,\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n confine: true,\r\n position: 'bottom',\r\n formatter: '故障分析
' + '{b} : {c}',\r\n },\r\n grid: [\r\n {\r\n top: '18%',\r\n left: '10%',\r\n right: '6%',\r\n bottom: '20%',\r\n },\r\n ],\r\n xAxis: {\r\n type: 'category',\r\n\r\n axisTick: {\r\n show: false,\r\n },\r\n axisLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#808080',\r\n },\r\n },\r\n axisLabel: {\r\n show: true,\r\n color: 'rgba(255,255,255,0.6)',\r\n fontSize: 12,\r\n padding: 2,\r\n },\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n type: 'dashed',\r\n color: 'rgba(255,255,255,0.05)',\r\n },\r\n },\r\n data: [\r\n '1月',\r\n '2月',\r\n '3月',\r\n '4月',\r\n '5月',\r\n '6月',\r\n '7月',\r\n '8月',\r\n '9月',\r\n '10月',\r\n '11月',\r\n '12月',\r\n ],\r\n },\r\n yAxis: {\r\n // max: 100,\r\n // min: 0,\r\n // interval: 25,\r\n nameTextStyle: {\r\n color: 'rgba(255,255,255,0.6)',\r\n padding: [0, 0, 0, 8],\r\n },\r\n type: 'value',\r\n axisLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#808080',\r\n },\r\n },\r\n axisLabel: {\r\n show: true,\r\n color: 'rgba(255,255,255,0.6)',\r\n fontSize: 12,\r\n formatter: (val) => {\r\n if (\r\n (val >= 1 && parseInt(val, 10) === val) ||\r\n val == 0\r\n ) {\r\n return val\r\n } else {\r\n return\r\n }\r\n },\r\n },\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n type: 'dashed',\r\n color: 'rgba(255,255,255,0.05)',\r\n },\r\n },\r\n },\r\n series: [\r\n {\r\n type: 'line',\r\n showBackground: true,\r\n smooth: true,\r\n symbol: 'none',\r\n data: this.analysis.data,\r\n },\r\n ],\r\n }\r\n\r\n this.analysisChartOptionSource &&\r\n this.analysisChartResource.setOption(\r\n this.analysisChartOptionSource\r\n )\r\n window.addEventListener('resize', () =>\r\n this.analysisChartResource.resize()\r\n )\r\n }\r\n },\r\n // 获取本月\r\n getDate() {\r\n var currentDate = new Date()\r\n var currentMonth = currentDate.getMonth() + 1\r\n for (let i = 0; i < this.analysis.value.length; i++) {\r\n if (this.analysis.value[i].month == currentMonth) {\r\n this.monthLogNum = this.analysis.value[i].amount\r\n }\r\n if (this.analysis.value[i].month == currentMonth - 1) {\r\n this.lastmonthLogNum = this.analysis.value[i].amount\r\n }\r\n }\r\n if (this.monthLogNum >= this.lastmonthLogNum) {\r\n this.qoq =\r\n ((this.monthLogNum - this.lastmonthLogNum) /\r\n this.lastmonthLogNum) *\r\n 100\r\n this.direction = true\r\n } else {\r\n this.qoq =\r\n ((this.lastmonthLogNum - this.monthLogNum) /\r\n this.lastmonthLogNum) *\r\n 100\r\n this.direction = false\r\n }\r\n },\r\n // 获取巡检状态\r\n formatStatus(status) {\r\n let label\r\n if (status == 1) {\r\n label = '正在巡检'\r\n } else if (status == 2) {\r\n label = '已完成'\r\n } else if (status == 3) {\r\n label = '发现故障'\r\n }\r\n return label\r\n },\r\n // 获取设备数据\r\n getAmonutData() {\r\n let params = {\r\n pageBean: {\r\n page: 1,\r\n pageSize: -1,\r\n },\r\n querys: [\r\n {\r\n group: 'main',\r\n operation: 'EQUAL',\r\n parentGroup: '',\r\n property: 'toll_station_id_',\r\n relation: 'AND',\r\n value: this.tollStationId,\r\n },\r\n ],\r\n }\r\n commonAPI.getDeviceAmonut(params).then((res) => {\r\n if (res.value) {\r\n res.value.forEach((item) => {\r\n if (item) {\r\n if (item.status && item.status !== undefined)\r\n for (\r\n let i = 0;\r\n i < this.EquipmentCountData.length;\r\n i++\r\n ) {\r\n if (\r\n this.EquipmentCountData[i].status ==\r\n item.status\r\n )\r\n this.EquipmentCountData[i].amount =\r\n item.amount\r\n }\r\n if (\r\n item.totalAmount &&\r\n item.totalAmount !== undefined\r\n ) {\r\n this.totalAmount = item.totalAmount\r\n }\r\n }\r\n })\r\n }\r\n })\r\n },\r\n // 获取系统分布\r\n getSystemData() {\r\n commonAPI\r\n .getDeviceBySystem(this.tollStationId, this.pageQuery)\r\n .then((res) => {\r\n if (res.value) {\r\n res.value.forEach((item) => {\r\n if (item) {\r\n if (\r\n item.systemType &&\r\n item.systemType !== undefined\r\n )\r\n for (\r\n let i = 0;\r\n i < this.SystemData.length;\r\n i++\r\n ) {\r\n if (\r\n this.SystemData[i].systemType ==\r\n item.systemType\r\n )\r\n this.SystemData[i].amount =\r\n item.amount\r\n }\r\n }\r\n })\r\n }\r\n })\r\n },\r\n // 获取设备类型\r\n getTypeData() {\r\n this.loadObj.pieData = true\r\n commonAPI\r\n .getDeviceByType(this.tollStationId, this.pageQuery)\r\n .then((res) => {\r\n if (res.value) {\r\n res.value.forEach((item) => {\r\n if (item) {\r\n if (\r\n item.deviceType &&\r\n item.deviceType !== undefined\r\n )\r\n for (\r\n let i = 0;\r\n i < this.pieData.length;\r\n i++\r\n ) {\r\n if (\r\n this.pieData[i].deviceType ==\r\n item.deviceType\r\n )\r\n this.pieData[i].value = item.amount\r\n }\r\n }\r\n })\r\n }\r\n })\r\n .finally(() => {\r\n this.loadObj.pieData = false\r\n this.drawPieChart()\r\n })\r\n },\r\n // 获取设备率\r\n getRateData() {\r\n commonAPI\r\n .getDeviceRate(this.tollStationId, this.pageQuery)\r\n .then((res) => {\r\n let reg = /^(.*\\..{2}).*$/\r\n if (res.value) {\r\n res.value.forEach((item) => {\r\n if (item) {\r\n if (\r\n item.offlineRate &&\r\n item.offlineRate !== undefined\r\n ) {\r\n let number = item.offlineRate * 100\r\n number = String(number).replace(reg, '$1')\r\n this.rateData[1].value = number\r\n }\r\n if (\r\n item.errorRate &&\r\n item.errorRate !== undefined\r\n ) {\r\n let number2 = item.errorRate * 100\r\n number2 = String(number2).replace(reg, '$1')\r\n this.rateData[2].value = number2\r\n }\r\n if (\r\n item.onlineRate &&\r\n item.onlineRate !== undefined\r\n ) {\r\n let number3 = item.onlineRate * 100\r\n number3 = String(number3).replace(reg, '$1')\r\n this.rateData[0].value = number3\r\n }\r\n if (\r\n item.disposeRate &&\r\n item.disposeRate !== undefined\r\n ) {\r\n let number4 = item.disposeRate * 100\r\n number4 = String(number4).replace(reg, '$1')\r\n this.rateData[3].value = number4\r\n }\r\n // if (\r\n // item.timeRate &&\r\n // item.timeRate !== undefined\r\n // ) {\r\n // let number5 = item.timeRate * 100\r\n // number5 = String(number5).replace(reg, '$1')\r\n // this.rateData[4].value = number5\r\n // }\r\n if (\r\n item.totalAmount &&\r\n item.totalAmount !== undefined\r\n ) {\r\n this.warnData.num = item.totalAmount\r\n }\r\n if (item.status !== undefined) {\r\n if (item.status == 1) {\r\n this.warnData.finished = item.amount\r\n } else {\r\n this.warnData.unfinished = item.amount\r\n }\r\n }\r\n }\r\n })\r\n }\r\n })\r\n },\r\n // 获取故障统计\r\n getStatisticsData() {\r\n this.loadObj.faultPieData = true\r\n commonAPI\r\n .gethitchStatistics(this.tollStationId, this.pageQuery)\r\n .then((res) => {\r\n if (res.value) {\r\n res.value.forEach((item) => {\r\n if (item) {\r\n if (item.level && item.level !== undefined) {\r\n for (\r\n let i = 0;\r\n i < this.faultPieData.length;\r\n i++\r\n ) {\r\n if (\r\n this.faultPieData[i].level ==\r\n item.level\r\n )\r\n this.faultPieData[i].value =\r\n item.amount\r\n }\r\n }\r\n }\r\n })\r\n }\r\n })\r\n .finally(() => {\r\n this.loadObj.faultPieData = false\r\n this.drawfaultPieChart()\r\n })\r\n },\r\n // 获取故障分析\r\n getAnalysisData() {\r\n commonAPI\r\n .gethitchAnalysis(this.tollStationId, this.pageQuery)\r\n .then((res) => {\r\n if (res.value) {\r\n this.analysis.value = res.value\r\n res.value.forEach((item) => {\r\n if (item) {\r\n for (\r\n let i = 0;\r\n i < this.analysis.data.length;\r\n i++\r\n ) {\r\n if (i == item.month - 1) {\r\n this.analysis.data[i] = item.amount\r\n }\r\n }\r\n }\r\n })\r\n this.drawanalysisChartResource()\r\n this.getDate()\r\n }\r\n })\r\n },\r\n // 获取维修情况\r\n getRepairData() {\r\n commonAPI\r\n .gethitchRepair(this.tollStationId, this.pageQuery)\r\n .then((res) => {\r\n if (res.value) {\r\n res.value.forEach((item) => {\r\n if (item) {\r\n if (item.state && item.state !== undefined)\r\n for (\r\n let i = 0;\r\n i < this.state.length;\r\n i++\r\n ) {\r\n if (\r\n this.ServiceData[i].state ==\r\n item.state\r\n )\r\n this.ServiceData[i].value =\r\n item.amount\r\n }\r\n }\r\n })\r\n }\r\n })\r\n },\r\n // 获取预警信息\r\n getWarnInfo() {\r\n this.loadObj.warnInfoData = true\r\n this.warnInfoData = []\r\n commonAPI\r\n .getWarnInfo(this.pageQuery)\r\n .then((res) => {\r\n if (res.value) {\r\n this.warnInfoData = res.value.rows\r\n this.warnInfoData.push([])\r\n }\r\n })\r\n .finally(() => {\r\n this.loadObj.warnInfoData = false\r\n })\r\n },\r\n // 获取巡检动态数据\r\n getInspectLog() {\r\n commonAPI\r\n .getInspectLog(this.tollStationId, this.pageQuery)\r\n .then((res) => {\r\n if (res.value) {\r\n for (let i = 0; i < res.value.rows.length; i++) {\r\n let obj = {}\r\n obj = {\r\n id: i + 1,\r\n name: res.value.rows[i].inspectUserName,\r\n work: res.value.rows[i].inspectContent,\r\n status: res.value.rows[i].state,\r\n time: res.value.rows[i].inspectDate,\r\n }\r\n this.scrollListData.push(obj)\r\n }\r\n }\r\n })\r\n },\r\n // 设备状态数据\r\n getDeviceStatusData() {\r\n this.loadObj.scrollHeaderDeviceStatusList = true\r\n this.scrollHeaderDeviceStatusList = []\r\n commonAPI\r\n .getDeviceStatus()\r\n .then((res) => {\r\n if (res.value && res.value.rows) {\r\n this.scrollHeaderDeviceStatusList = res.value.rows\r\n }\r\n })\r\n .finally(() => {\r\n this.loadObj.scrollHeaderDeviceStatusList = false\r\n })\r\n },\r\n // 获取故障排名数据\r\n getHitchLogData() {\r\n this.loadObj.barChartDeviceData = true\r\n let deviceType = utils.getDictItemsFromCache('sblx')\r\n let hitchData = []\r\n commonAPI\r\n .getHitchLog(this.tollStationId)\r\n .then((res) => {\r\n let resp = res.value\r\n deviceType.forEach((item) => {\r\n resp.forEach((i) => {\r\n if (i.type == item.value) {\r\n hitchData.push({\r\n name: item.name,\r\n value: i.amount,\r\n })\r\n }\r\n })\r\n })\r\n hitchData.sort((a, b) => {\r\n a.value - b.value\r\n })\r\n hitchData.forEach((i) => {\r\n this.barDeviceHitchYAxisData.push(i.name)\r\n this.barDeviceHitchSeriesData.push(i.value)\r\n })\r\n })\r\n .finally(() => {\r\n this.drawBarChartDevice()\r\n this.loadObj.barChartDeviceData = false\r\n })\r\n },\r\n // 图形设备故障排名\r\n drawBarChartDevice() {\r\n // chart 已存在则为更新数据\r\n if (this.barChartDevice) {\r\n this.barChartDeviceOption.series[0].data =\r\n this.barDeviceHitchSeriesData\r\n this.barChartDeviceOption.yAxis.data =\r\n this.barDeviceHitchYAxisData\r\n this.barChartDevice.setOption(this.barChartDeviceOption)\r\n } else {\r\n // chart 不存在则为初始化数据和图表\r\n this.barChartDevice = echarts.init(\r\n document.getElementById('bar-chart-Device')\r\n )\r\n this.barChartDeviceOption = {\r\n tooltip: {\r\n trigger: 'axis',\r\n backgroundColor: 'rgba(13, 79, 145, 0.9)',\r\n borderColor: '#3399FF',\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n confine: true,\r\n position: 'bottom',\r\n valueFormatter: (value) => value + '次',\r\n },\r\n grid: [\r\n {\r\n top: '3%',\r\n left: '22%',\r\n right: '8%',\r\n bottom: '3%',\r\n },\r\n ],\r\n xAxis: {\r\n type: 'value',\r\n show: false,\r\n },\r\n yAxis: {\r\n type: 'category',\r\n data: this.barDeviceHitchYAxisData,\r\n axisLabel: {\r\n show: true,\r\n color: 'rgba(255,255,255,0.8)',\r\n },\r\n axisLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#808080',\r\n },\r\n },\r\n splitLine: {\r\n show: false,\r\n },\r\n },\r\n series: [\r\n {\r\n type: 'bar',\r\n barWidth: 12,\r\n data: this.barDeviceHitchSeriesData,\r\n label: {\r\n normal: {\r\n show: true,\r\n position: 'right',\r\n formatter: '{c}',\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n },\r\n },\r\n itemStyle: {\r\n borderRadius: [0, 5, 5, 0],\r\n color: new echarts.graphic.LinearGradient(\r\n 1,\r\n 0,\r\n 0,\r\n 1,\r\n [\r\n {offset: 0, color: '#8AC4FF'},\r\n {offset: 0.6, color: '#135f88'},\r\n {\r\n offset: 1,\r\n color: 'rgba(19, 94, 134, 0.2)',\r\n },\r\n ]\r\n ),\r\n },\r\n },\r\n ],\r\n }\r\n\r\n this.barChartDeviceOption &&\r\n this.barChartDevice.setOption(this.barChartDeviceOption)\r\n window.addEventListener('resize', () =>\r\n this.barChartDevice.resize()\r\n )\r\n }\r\n },\r\n // 故障平均处理时间\r\n getHandleTime() {\r\n this.loadObj.raderChart = true\r\n let deviceType = utils.getDictItemsFromCache('sblx')\r\n commonAPI\r\n .getHandleTime(this.tollStationId)\r\n .then((res) => {\r\n let resp = res.value\r\n deviceType.forEach((item) => {\r\n resp.forEach((i) => {\r\n if (item.value == i.type) {\r\n this.raderIndicatorData.push({\r\n text: item.name,\r\n })\r\n this.raderSeriesData.push(i.handleHours)\r\n }\r\n })\r\n })\r\n })\r\n .finally(() => {\r\n this.loadObj.raderChart = false\r\n this.drawRaderChartTime()\r\n })\r\n },\r\n // 故障平均处理时间图形\r\n drawRaderChartTime() {\r\n // chart 已存在则为更新数据\r\n if (this.raderChart) {\r\n this.raderChartOptionSource.radar[0].indicator =\r\n this.raderIndicatorData\r\n this.raderChartOptionSource.series[0].data[0].value =\r\n this.raderSeriesData\r\n this.raderChart.setOption(this.raderChartOptionSource)\r\n } else {\r\n // chart 不存在则为初始化数据和图表\r\n this.raderChart = echarts.init(\r\n document.getElementById('rader-chart-time')\r\n )\r\n this.raderChartOptionSource = {\r\n color: ['#00FFFF'],\r\n tooltip: {\r\n trigger: 'axis',\r\n backgroundColor: 'rgba(13, 79, 145, 0.9)',\r\n borderColor: '#3399FF',\r\n confine: true,\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n confine: true,\r\n position: 'bottom',\r\n },\r\n radar: [\r\n {\r\n indicator: this.raderIndicatorData,\r\n center: ['50%', '50%'],\r\n radius: 70,\r\n axisLine: {\r\n lineStyle: {\r\n color: '#84bff9',\r\n },\r\n },\r\n splitLine: {\r\n lineStyle: {\r\n color: '#325d88',\r\n },\r\n },\r\n splitArea: {\r\n areaStyle: {\r\n color: ['rgba(0, 35, 67, 0.8)'],\r\n },\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n type: 'radar',\r\n tooltip: {\r\n trigger: 'item',\r\n },\r\n areaStyle: {\r\n color: 'rgba(77, 144, 194, 1)',\r\n },\r\n data: [\r\n {\r\n value: this.raderSeriesData,\r\n name: '故障平均处理时间(小时)',\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n\r\n this.raderChartOptionSource &&\r\n this.raderChart.setOption(this.raderChartOptionSource)\r\n window.addEventListener('resize', () =>\r\n this.raderChart.resize()\r\n )\r\n }\r\n },\r\n },\r\n}\r\n",null]}