{"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\\operationFees.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\sfz-lh-fvue\\src\\views\\BigScreen\\operationFees.vue","mtime":1715713737026},{"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\r\nimport moment from 'moment'\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 data() {\r\n return {\r\n activeSearchType: 'year',\r\n totalSearchType: [\r\n {label: '年', key: 'year'},\r\n {label: '月', key: 'month'},\r\n ],\r\n activeCarType: 1,\r\n totalCarType: [\r\n {label: '出口', key: 1},\r\n {label: '入口', key: 2},\r\n ],\r\n totalTransaction: 0, // 54505.33,\r\n totalCar: '00000000',\r\n totalCarDaily: '00000000',\r\n totalDayIncome: '00000000',\r\n totalIncome: '00000000',\r\n TransactionDaily: '00000000',\r\n ETC: 0,\r\n NonETC: 0,\r\n Cash: 0,\r\n NonCash: 0,\r\n reductionChart: null,\r\n reductionData: [],\r\n reductionOption: null,\r\n loadObj: {\r\n payTypeData: false,\r\n scrollListData: false,\r\n barChartBLData: false,\r\n barChartBRData: false,\r\n barChartTData: false,\r\n PieData: false,\r\n yujueChartData: false,\r\n },\r\n loadingColor: 'rgba(6, 46, 106, 0.01)',\r\n scrollheader: [\r\n {\r\n name: '序号',\r\n width: '26%',\r\n },\r\n {name: '门架', width: '48%'},\r\n {name: '状态', width: '26%'},\r\n ],\r\n scrollListData: [],\r\n // 图表\r\n barChartBL: null,\r\n barChartBLOption: null,\r\n barChartBLData: [\r\n // ['toll', '今年', '去年'],\r\n // ['1月', 21, 22],\r\n ],\r\n barChartBLData1: [],\r\n barChartBLData2: [],\r\n barChartBR: null,\r\n barChartBROption: null,\r\n barChartBRData: [\r\n // ['traffic', '今年', '去年'],\r\n // ['1月', 2542, 2962],\r\n ],\r\n lineChart: null,\r\n lineChartOption: null,\r\n lineChartData: [\r\n // ['type', '客车', '货车', '专项作业车', '其他'],\r\n // ['1月', 42, 62, 16, 3],\r\n ],\r\n barChartT: null,\r\n barChartTOption: null,\r\n barChartTData: [],\r\n yujueChart: null,\r\n yujueChartOption: null,\r\n yujueChartData: [\r\n {name: '车牌识别准确率', value: 0, color: '#66CCFF'},\r\n {name: 'OBU标签交易成功率', value: 0, color: '#F7C47D'},\r\n {name: 'CPC交易成功率', value: 0, color: '#699BFF'},\r\n ],\r\n year: moment().format('YYYY'),\r\n month: moment().format('MM'),\r\n tollStationId: '',\r\n PieChart: null,\r\n PieData: [],\r\n PieOption: null,\r\n PiecurIndex: 0,\r\n timer: '',\r\n data: '',\r\n test: [],\r\n }\r\n },\r\n computed: {\r\n optionSingleHeightTime() {\r\n return {\r\n step: 0.35,\r\n limitMoveNum: this.scrollListData.length, // 开始无缝滚动的数据量 this.dataList.length\r\n openWatch: true, // 开启数据实时监控刷新dom\r\n }\r\n },\r\n },\r\n mounted() {},\r\n activated() {\r\n this.getDate()\r\n },\r\n methods: {\r\n changeTotalSearchType(key) {\r\n this.activeSearchType = key\r\n this.getChargeTotal(key)\r\n this.getCarTypeList()\r\n if (key == 'year') {\r\n this.hide()\r\n } else {\r\n this.showTip()\r\n }\r\n },\r\n changeTotalCarType(key) {\r\n this.activeCarType = key\r\n this.getCarTypeList(key)\r\n this.clear()\r\n this.intervalFaultPie()\r\n },\r\n getData() {\r\n this.tollStationId = sessionStorage.getItem('tollStationId')\r\n this.getToll() // 获取通行费同比\r\n this.getCarFlow() // 获取车流量同比\r\n this.getReduction() // 获取减免通行费\r\n this.getChargeTotal('year') // 时间维度查询收费和通行数据\r\n this.getCarList() // 获取车辆记录\r\n this.getCarTypeList() // 获取车辆类型\r\n this.getPayType() // 支付方式\r\n this.getRecognitionRate() // 门架识别率\r\n this.showTip()\r\n },\r\n getDate(val) {\r\n if (val) {\r\n this.year = val.slice(0, 4)\r\n this.month = val.slice(5, 7)\r\n }\r\n\r\n this.getData()\r\n },\r\n\r\n getToll() {\r\n let data = this.qs.stringify({\r\n year: this.year,\r\n stationId: this.tollStationId,\r\n })\r\n this.loadObj.barChartBLData = true\r\n this.barChartBLData1 = []\r\n this.barChartBLData2 = []\r\n commonAPI.getToll(data).then((res) => {\r\n if (res.value) {\r\n for (let i = 0; i < 12; i++) {\r\n this.barChartBLData1.push(0)\r\n this.barChartBLData2.push(0)\r\n }\r\n let current = res.value.current ? res.value.current : []\r\n let last = res.value.last ? res.value.last : []\r\n current.forEach((jn) => {\r\n this.barChartBLData1[parseInt(jn.monthNumber) - 1] =\r\n jn.actualityMoney\r\n })\r\n last.forEach((jn) => {\r\n this.barChartBLData2[parseInt(jn.monthNumber) - 1] =\r\n jn.actualityMoney\r\n })\r\n }\r\n this.loadObj.barChartBLData = false\r\n this.drawBarChartBL()\r\n })\r\n },\r\n getCarFlow() {\r\n let data = this.qs.stringify({\r\n year: this.year,\r\n stationId: this.tollStationId,\r\n })\r\n this.loadObj.barChartBRData = true\r\n this.barChartBRData1 = []\r\n this.barChartBRData2 = []\r\n commonAPI.getCarFlow(data).then((res) => {\r\n if (res.value) {\r\n for (let i = 0; i < 12; i++) {\r\n this.barChartBRData1.push(0)\r\n this.barChartBRData2.push(0)\r\n }\r\n let current = res.value.current ? res.value.current : []\r\n let last = res.value.last ? res.value.last : []\r\n current.forEach((jn) => {\r\n this.barChartBRData1[parseInt(jn.monthNumber) - 1] =\r\n jn.amount\r\n })\r\n last.forEach((jn) => {\r\n this.barChartBRData2[parseInt(jn.monthNumber) - 1] =\r\n jn.amount\r\n })\r\n }\r\n this.loadObj.barChartBRData = false\r\n this.drawBarChartBR()\r\n })\r\n },\r\n getReduction() {\r\n let data = this.qs.stringify({\r\n year: this.year,\r\n stationId: this.tollStationId,\r\n })\r\n this.loadObj.barChartTData = true\r\n this.barChartTData = []\r\n commonAPI.getReduction(data).then((res) => {\r\n if (res.value) {\r\n for (let i = 0; i < 12; i++) {\r\n this.barChartTData.push(0)\r\n }\r\n let current = res.value.current ? res.value.current : []\r\n current.forEach((jn) => {\r\n this.barChartTData[parseInt(jn.monthNumber) - 1] =\r\n jn.reductionMoney\r\n })\r\n }\r\n this.loadObj.barChartTData = false\r\n this.drawBarChartT()\r\n })\r\n },\r\n getPayType() {\r\n this.loadObj.payTypeData = true\r\n let queryData = {\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 this.ETC = 0\r\n this.NonETC = 0\r\n this.Cash = 0\r\n this.NonCash = 0\r\n commonAPI.getPayType(queryData).then((res) => {\r\n if (res.value) {\r\n this.ETC = 0\r\n this.NonETC = 0\r\n this.Cash = 0\r\n this.NonCash = 0\r\n commonAPI.getPayType(queryData).then((res) => {\r\n if (res.value) {\r\n this.ETC = res.value.ETC\r\n ? this.formatNum(res.value.ETC)\r\n : 0\r\n this.NonETC = res.value.NonETC\r\n ? this.formatNum(res.value.NonETC)\r\n : 0\r\n this.Cash = res.value.Cash\r\n ? this.formatNum(res.value.Cash)\r\n : 0\r\n this.NonCash = res.value.NonCash\r\n ? this.formatNum(res.value.NonCash)\r\n : 0\r\n }\r\n this.loadObj.payTypeData = false\r\n })\r\n }\r\n\r\n this.loadObj.payTypeData = false\r\n })\r\n },\r\n formatNum(val) {\r\n let num = 0\r\n num = parseFloat((val * 100).toFixed(2))\r\n return num\r\n },\r\n getRecognitionRate() {\r\n let queryData = {\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 this.loadObj.yujueChartData = true\r\n this.yujueChartData[0].value = 0\r\n this.yujueChartData[1].value = 0\r\n this.yujueChartData[2].value = 0\r\n commonAPI.getRecognitionRate(queryData).then((res) => {\r\n if (res.value) {\r\n let {\r\n vehicleIdentifyRate = 0,\r\n obuIdentifyRate = 0,\r\n cpcIdentifyRate = 0,\r\n } = res.value\r\n this.yujueChartData[0].value = parseFloat(\r\n vehicleIdentifyRate.toFixed(2)\r\n )\r\n this.yujueChartData[1].value = parseFloat(\r\n obuIdentifyRate.toFixed(2)\r\n )\r\n this.yujueChartData[2].value = parseFloat(\r\n cpcIdentifyRate.toFixed(2)\r\n )\r\n }\r\n this.drawYujueChart()\r\n this.loadObj.yujueChartData = false\r\n })\r\n },\r\n getCarTypeList(key) {\r\n if (key) {\r\n this.activeCarType = key\r\n }\r\n if (this.activeSearchType == 'year') {\r\n this.data = this.qs.stringify({\r\n stationId: this.tollStationId,\r\n doorWay: this.activeCarType,\r\n })\r\n } else if (this.activeSearchType == 'month') {\r\n this.data = this.qs.stringify({\r\n stationId: this.tollStationId,\r\n month: this.month,\r\n doorWay: this.activeCarType,\r\n })\r\n }\r\n\r\n this.loadObj.PieData = true\r\n this.carType = utils.getDictItemsFromCache('cllx')\r\n this.PieData = []\r\n this.carType.forEach((item) => {\r\n let obj = {\r\n name: item.name,\r\n type: item.value,\r\n value: 0,\r\n }\r\n this.PieData.push(obj)\r\n })\r\n\r\n commonAPI.getCarTypeList(this.data).then((res) => {\r\n if (res.value) {\r\n let data = res.value\r\n data.forEach((item) => {\r\n for (let i = 0; i < this.PieData.length; i++) {\r\n if (\r\n item.carType == this.PieData[i].type &&\r\n item.year == this.year\r\n ) {\r\n this.PieData[i].value = item.carFlow\r\n }\r\n }\r\n })\r\n this.PiecurIndex = 0\r\n this.drawPieChart()\r\n this.loadObj.PieData = false\r\n }\r\n })\r\n },\r\n getCarList() {\r\n this.loadObj.scrollListData = true\r\n this.scrollListData = []\r\n let queryData = {\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 group: 'main',\r\n operation: 'EQUAL',\r\n parentGroup: '',\r\n property: 'type',\r\n relation: 'AND',\r\n value: 14,\r\n },\r\n ],\r\n }\r\n commonAPI.getDeviceList(queryData).then((res) => {\r\n if (res.value) {\r\n this.scrollListData = res.value.rows || []\r\n console.log(this.scrollListData)\r\n this.loadObj.scrollListData = false\r\n }\r\n })\r\n },\r\n getChargeTotal(type) {\r\n let startTime, endTime\r\n if (type == 'year') {\r\n startTime = this.year + '-01-01 00:00:00'\r\n endTime = this.year + '-12-31 23:59:59'\r\n } else if (type == 'month') {\r\n const date = new Date(this.year, this.month, 0)\r\n let endDay = date.format('dd')\r\n startTime = this.year + '-' + this.month + '-01 00:00:00'\r\n endTime =\r\n this.year + '-' + this.month + '-' + endDay + ' 23:59:59'\r\n }\r\n let queryData = {\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: 'BETWEEN',\r\n parentGroup: '',\r\n property: 'start_time_',\r\n relation: 'AND',\r\n value: [startTime, endTime],\r\n },\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\r\n commonAPI.getChargeTotal(queryData).then((res) => {\r\n if (res.value) {\r\n let data = res.value\r\n if (data) {\r\n if (data.transfficCarNum !== undefined) {\r\n this.totalCar = this.addZero(\r\n data.transfficCarNum + ''\r\n )\r\n } else {\r\n this.totalCar = '00000000'\r\n }\r\n\r\n if (data.augTransfficCarNum !== undefined) {\r\n this.totalCarDaily = this.addZero(\r\n Math.round(data.augTransfficCarNum) + ''\r\n )\r\n } else {\r\n this.totalCarDaily = '00000000'\r\n }\r\n\r\n if (data.incomeCostPlan !== undefined) {\r\n this.totalIncome = this.addZero(\r\n data.incomeCostPlan + ''\r\n )\r\n } else {\r\n this.totalIncome = '00000000'\r\n }\r\n if (data.augTotalMoney !== undefined) {\r\n this.TransactionDaily = this.addZero(\r\n data.augTotalMoney + ''\r\n )\r\n } else {\r\n this.TransactionDaily = '00000000'\r\n }\r\n if (data.totalMoney !== undefined) {\r\n this.totalTransaction = data.totalMoney\r\n } else {\r\n this.totalTransaction = 0\r\n }\r\n }\r\n }\r\n })\r\n },\r\n addZero(data) {\r\n let str = data\r\n let temp = str.replace(',', '0')\r\n let gap = 8 - temp.length\r\n for (let i = 0; i <= gap; i++) {\r\n str = '0' + str\r\n }\r\n return str\r\n },\r\n drawYujueChart() {\r\n // chart 已存在则为更新数据\r\n if (this.yujueChart) {\r\n // this.yujueChartOption.dataset.source = this.yujueChartData\r\n this.yujueChart.setOption(this.yujueChartOption)\r\n } else {\r\n // chart 不存在则为初始化数据和图表\r\n this.yujueChart = echarts.init(\r\n document.getElementById('yujue-chart')\r\n )\r\n\r\n const color = [\r\n '102, 204, 255',\r\n '255, 218, 129',\r\n '66, 229, 164',\r\n '105, 155, 255',\r\n ]\r\n\r\n this.yujueChartOption = {\r\n polar: {\r\n radius: ['10%', '96%'],\r\n },\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 formatter: '{b0}: {c0}%',\r\n // valueFormatter: (value) => value + '%',\r\n },\r\n angleAxis: {\r\n show: false,\r\n startAngle: 90,\r\n // 最小值是0°处的数值,最大值是360°处的数值,避免出现弧度为0和2PI的数据\r\n min: 0,\r\n max: (value) => value.max * 1.5,\r\n },\r\n color: color,\r\n radiusAxis: {\r\n type: 'category',\r\n axisLabel: {\r\n interval: 0,\r\n color: '#fff',\r\n fontSize: 12,\r\n },\r\n axisLine: {\r\n show: false,\r\n },\r\n axisTick: {\r\n show: false,\r\n alignWithLabel: true,\r\n },\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: 'rgba(17, 51, 68, 0.8)',\r\n },\r\n },\r\n data: this.yujueChartData.map((item) => item.name),\r\n },\r\n series: [\r\n {\r\n type: 'bar',\r\n coordinateSystem: 'polar',\r\n barWidth: 10,\r\n itemStyle: {\r\n barBorderRadius: 10,\r\n color: (params) => {\r\n return {\r\n type: 'linear',\r\n x: 0.5,\r\n y: 0,\r\n x2: 0.5,\r\n y2: 1,\r\n colorStops: [\r\n {\r\n offset: 1,\r\n color: `rgb(${\r\n color[params.dataIndex]\r\n })`,\r\n },\r\n {\r\n offset: 0.2,\r\n color: `rgba(${\r\n color[params.dataIndex]\r\n }, 0.3)`,\r\n },\r\n {\r\n offset: 0,\r\n color: `rgba(${\r\n color[params.dataIndex]\r\n }, 0.1)`,\r\n },\r\n ],\r\n }\r\n },\r\n },\r\n emphasis: {\r\n itemStyle: {\r\n shadowBlur: 4,\r\n shadowColor: 'rgba(255, 255, 255, 0.6)',\r\n },\r\n },\r\n data: this.yujueChartData,\r\n },\r\n {\r\n type: 'custom',\r\n coordinateSystem: 'polar',\r\n silent: true,\r\n renderItem: (params, api) => {\r\n // 给定维度上的值。\r\n let values = [\r\n api.value(0),\r\n api.value(1),\r\n api.value(2),\r\n ]\r\n // 对于polar坐标系,还会包含其他信息:polar: [x, y, radius, angle]\r\n let coord = api.coord(values)\r\n return {\r\n type: 'text',\r\n position: [\r\n 3 * Math.sin(coord[3]),\r\n 3 * Math.cos(coord[3]),\r\n ],\r\n silent: true,\r\n rotation: coord[3] + Math.PI / 2,\r\n origin: [coord[0], coord[1]],\r\n style: {\r\n text: api.value(1) + '%',\r\n fill: `rgb(${color[params.dataIndex]})`,\r\n fontSize: 12,\r\n textAlign: 'right',\r\n textVerticalAlign: 'middle',\r\n x: coord[0],\r\n y: coord[1],\r\n },\r\n }\r\n },\r\n data: this.yujueChartData,\r\n },\r\n ],\r\n }\r\n this.yujueChartOption &&\r\n this.yujueChart.setOption(this.yujueChartOption)\r\n window.addEventListener('resize', () =>\r\n this.yujueChart.resize()\r\n )\r\n }\r\n },\r\n drawBarChartT() {\r\n // chart 已存在则为更新数据\r\n if (this.barChartT) {\r\n this.barChartTOption.series[0].data = this.barChartTData\r\n this.barChartT.setOption(this.barChartTOption)\r\n } else {\r\n // chart 不存在则为初始化数据和图表\r\n this.barChartT = echarts.init(\r\n document.getElementById('reduction-bar')\r\n )\r\n this.barChartTOption = {\r\n legend: {\r\n show: true,\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n },\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: '18%',\r\n left: '12%',\r\n right: '6%',\r\n bottom: '12%',\r\n },\r\n ],\r\n xAxis: {\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 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: false,\r\n },\r\n },\r\n yAxis: {\r\n name: '单位(元)',\r\n nameTextStyle: {\r\n color: 'rgba(255,255,255,0.6)',\r\n padding: [0, 0, 0, 20],\r\n },\r\n type: 'category',\r\n axisTick: {\r\n show: false,\r\n alignWithLabel: true,\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 },\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 series: [\r\n {\r\n type: 'bar',\r\n barWidth: 6,\r\n label: {\r\n show: true,\r\n position: 'right',\r\n color: '#fff',\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 0,\r\n [\r\n {offset: 0, color: '#8AC4FF'},\r\n {offset: 0.8, color: '#2d547f'},\r\n {\r\n offset: 1,\r\n color: 'rgba(46, 85, 128,0.3)',\r\n },\r\n ]\r\n ),\r\n },\r\n data: this.barChartTData,\r\n },\r\n ],\r\n }\r\n\r\n this.barChartTOption &&\r\n this.barChartT.setOption(this.barChartTOption)\r\n window.addEventListener('resize', () => this.barChartT.resize())\r\n }\r\n },\r\n drawBarChartBL() {\r\n // chart 已存在则为更新数据\r\n if (this.barChartBL) {\r\n this.barChartBLOption.series[0].data = this.barChartBLData1\r\n this.barChartBLOption.series[1].data = this.barChartBLData2\r\n this.barChartBL.setOption(this.barChartBLOption)\r\n } else {\r\n // chart 不存在则为初始化数据和图表\r\n this.barChartBL = echarts.init(\r\n document.getElementById('bar-chart-bl')\r\n )\r\n this.barChartBLOption = {\r\n legend: {\r\n show: true,\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n itemHeight: 6,\r\n data: [\r\n {\r\n name: '今年通行费',\r\n itemStyle: {\r\n color: '#55EDB0',\r\n },\r\n },\r\n {\r\n name: '去年通行费',\r\n itemStyle: {\r\n color: '#FFDA81',\r\n },\r\n },\r\n ],\r\n },\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\r\n confine: true,\r\n position: 'bottom',\r\n valueFormatter: (value) => value + '元',\r\n },\r\n grid: [\r\n {\r\n top: '18%',\r\n left: '5%',\r\n right: '0',\r\n bottom: '12%',\r\n },\r\n ],\r\n xAxis: {\r\n type: 'category',\r\n axisTick: {\r\n show: false,\r\n alignWithLabel: true,\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 },\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 name: '单位(元)',\r\n nameTextStyle: {\r\n color: 'rgba(255,255,255,0.6)',\r\n padding: [0, 0, 0, 20],\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 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: false,\r\n },\r\n },\r\n series: [\r\n {\r\n type: 'line',\r\n name: '今年通行费',\r\n showSymbol: true,\r\n color: '#55EDB0',\r\n smooth: true,\r\n data: this.barChartBLData1,\r\n areaStyle: {\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: 'rgba(85, 237, 176,0.3)',\r\n },\r\n {\r\n offset: 1,\r\n color: 'rgba(85, 237, 176,0)',\r\n },\r\n ]\r\n ),\r\n },\r\n },\r\n {\r\n type: 'line',\r\n name: '去年通行费',\r\n showSymbol: true,\r\n color: '#FFDA81',\r\n smooth: true,\r\n data: this.barChartBLData2,\r\n areaStyle: {\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: 'rgba(255, 218, 129,0.3)',\r\n },\r\n {\r\n offset: 1,\r\n color: 'rgba(255, 218, 129,0)',\r\n },\r\n ]\r\n ),\r\n },\r\n },\r\n ],\r\n }\r\n\r\n this.barChartBLOption &&\r\n this.barChartBL.setOption(this.barChartBLOption)\r\n window.addEventListener('resize', () =>\r\n this.barChartBL.resize()\r\n )\r\n }\r\n },\r\n drawBarChartBR() {\r\n // chart 已存在则为更新数据\r\n if (this.barChartBR) {\r\n this.barChartBROption.series[0].data = this.barChartBRData1\r\n this.barChartBROption.series[1].data = this.barChartBRData2\r\n this.barChartBR.setOption(this.barChartBROption)\r\n } else {\r\n // chart 不存在则为初始化数据和图表\r\n this.barChartBR = echarts.init(\r\n document.getElementById('bar-chart-br')\r\n )\r\n this.barChartBROption = {\r\n dataset: {\r\n source: this.barChartBRData,\r\n },\r\n legend: {\r\n show: true,\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n itemHeight: 6,\r\n data: [\r\n {\r\n name: '今年',\r\n itemStyle: {\r\n color: '#FFDA81',\r\n },\r\n },\r\n {\r\n name: '去年',\r\n itemStyle: {\r\n opacity: 0,\r\n },\r\n },\r\n ],\r\n },\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: '18%',\r\n left: '8%',\r\n right: '0',\r\n bottom: '12%',\r\n },\r\n ],\r\n xAxis: {\r\n type: 'category',\r\n axisTick: {\r\n show: false,\r\n alignWithLabel: true,\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 },\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 name: '单位(辆)',\r\n nameTextStyle: {\r\n color: 'rgba(255,255,255,0.6)',\r\n padding: [0, 0, 0, 20],\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 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: false,\r\n },\r\n },\r\n series: [\r\n {\r\n type: 'bar',\r\n barWidth: 12,\r\n name: '今年',\r\n data: this.barChartBRData1,\r\n itemStyle: {\r\n borderRadius: [5, 5, 0, 0],\r\n color: new echarts.graphic.LinearGradient(\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n [\r\n {offset: 0, color: '#FFDA81'},\r\n {offset: 0.6, color: '#6e6549'},\r\n {\r\n offset: 1,\r\n color: 'rgba(110, 101, 73, 0.2)',\r\n },\r\n ]\r\n ),\r\n },\r\n },\r\n {\r\n type: 'line',\r\n name: '去年',\r\n showSymbol: false,\r\n color: '#FD9854',\r\n smooth: true,\r\n data: this.barChartBRData2,\r\n },\r\n ],\r\n }\r\n\r\n this.barChartBROption &&\r\n this.barChartBR.setOption(this.barChartBROption)\r\n window.addEventListener('resize', () =>\r\n this.barChartBR.resize()\r\n )\r\n }\r\n },\r\n\r\n // 统计图\r\n drawPieChart() {\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('line-chart-right')\r\n )\r\n this.PieOption = {\r\n color: ['#198CFF', '#00D4FF', '#55EDB0', '#C9AC66'],\r\n title: {\r\n text: this.PieData[0].value + ' 辆',\r\n subtext: this.PieData[0].name,\r\n left: '36%',\r\n // top: '35%',\r\n textAlign: 'center',\r\n x: 'center',\r\n y: '33%',\r\n textStyle: {\r\n color: '#fff',\r\n fontSize: '18px',\r\n // lineHeight: 3,\r\n },\r\n subtextStyle: {\r\n color: '#fff',\r\n fontSize: '12px',\r\n align: 'center',\r\n },\r\n },\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 selectedMode: false,\r\n type: 'scroll',\r\n orient: 'vertical',\r\n right: 5,\r\n top: 18,\r\n bottom: 18,\r\n data: this.PieData,\r\n itemGap: 8,\r\n itemHeight: 9,\r\n itemWidth: 16,\r\n pageIconSize: 11,\r\n pageTextStyle: {\r\n color: '#ffffff',\r\n fontSize: 9,\r\n },\r\n textStyle: {\r\n color: '#ffffff',\r\n fontSize: 9,\r\n },\r\n pageIconColor: 'rgba(249, 248, 248, 1)',\r\n },\r\n\r\n series: [\r\n {\r\n name: '各类车辆通行统计',\r\n type: 'pie',\r\n radius: ['60%', '70%'],\r\n center: ['38%', '50%'],\r\n data: this.PieData,\r\n label: {show: false},\r\n\r\n itemStyle: {\r\n borderColor: '#0D1722',\r\n borderWidth: 4,\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.intervalFaultPie()\r\n }\r\n this.PieChart.dispatchAction({\r\n type: 'highlight',\r\n seriesIndex: 0,\r\n dataIndex: this.PiecurIndex,\r\n })\r\n },\r\n clear() {\r\n clearInterval(this.timer)\r\n },\r\n intervalFaultPie() {\r\n this.timer = setInterval(() => {\r\n this.PieChart.dispatchAction({\r\n type: 'downplay',\r\n seriesIndex: 0,\r\n dataIndex: this.PiecurIndex,\r\n })\r\n this.PiecurIndex++\r\n if (this.PiecurIndex >= this.PieData.length) {\r\n this.PiecurIndex = 0\r\n }\r\n this.PieChart.dispatchAction({\r\n type: 'highlight',\r\n seriesIndex: 0,\r\n dataIndex: this.PiecurIndex,\r\n })\r\n // 故障统计跟随变化统计数量已经名称\r\n ;(this.PieOption.title.text =\r\n this.PieData[this.PiecurIndex].value + ' 辆'),\r\n (this.PieOption.title.subtext =\r\n this.PieData[this.PiecurIndex].name),\r\n this.PieOption && this.PieChart.setOption(this.PieOption)\r\n }, 3000)\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 showTip() {\r\n let a = this.month.replace(/\\b(0+)/gi, '') + '月'\r\n let b = this.month.replace(/\\b(0+)/gi, '')\r\n this.barChartBL &&\r\n this.barChartBL.dispatchAction({\r\n type: 'showTip',\r\n seriesIndex: 0,\r\n dataIndex: b - 1,\r\n name: a,\r\n })\r\n this.barChartBR &&\r\n this.barChartBR.dispatchAction({\r\n type: 'showTip',\r\n seriesIndex: 0,\r\n dataIndex: b - 1,\r\n name: a,\r\n })\r\n this.barChartT &&\r\n this.barChartT.dispatchAction({\r\n type: 'showTip',\r\n seriesIndex: 0,\r\n dataIndex: b - 1,\r\n name: a,\r\n })\r\n },\r\n // 重新渲染后隐藏 tooltip 和 axisPointer\r\n hide() {\r\n // 隐藏 tooltip\r\n this.barChartBL.dispatchAction({type: 'hideTip'})\r\n this.barChartBR.dispatchAction({type: 'hideTip'})\r\n this.barChartT.dispatchAction({type: 'hideTip'})\r\n },\r\n },\r\n}\r\n",null]}