{"remainingRequest":"D:\\jenkins\\workspace\\reform-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\reform-fvue\\src\\views\\BigScreen\\DistrictReformSubView.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\reform-fvue\\src\\views\\BigScreen\\DistrictReformSubView.vue","mtime":1687922570904},{"path":"D:\\jenkins\\workspace\\reform-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\reform-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\reform-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//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 {BigNumber} from 'bignumber.js'\r\nimport req from '@/request.js'\r\nconst portal = window.context.portal\r\nimport VueSeamlessScroll from 'vue-seamless-scroll'\r\nimport screenHeader from '@/views/BigScreen/components/screenHeader.vue'\r\nimport EasyDialog from '@/views/BigScreen/components/easy-dialog/index.vue'\r\nimport dialogComponents from '@/views/BigScreen/js/district_reform_sub_dialog_component.js'\r\nimport dialogConfig from '@/views/BigScreen/js/DistrictReformSubDialogConfig.js'\r\nimport {center} from '@antv/g2plot/lib/plots/sankey/sankey'\r\nexport default {\r\n name: 'DistrictReformSubView',\r\n components: {\r\n screenHeader,\r\n VueSeamlessScroll,\r\n EasyDialog,\r\n ...dialogComponents,\r\n },\r\n data() {\r\n return {\r\n currentKey: 'DistrictReformView',\r\n activeBtn: 1, // 控制‘国家级和市级’的切换\r\n titleActive: 2, // 控制‘领导关注(1)和工作部署(2)’切换\r\n title: '',\r\n showEasy: false,\r\n querysParams: '',\r\n coreIndexData: {}, // 核心指数数据\r\n IndexRankingData: {}, // 指数排行榜数据\r\n pilotResultsData: [], // 试点结果数据\r\n brandCreationData: {}, // 品牌创建数据\r\n brandCreationList: [], // 品牌创建详情列表\r\n problemSolvingData: {}, // 问题破解数据\r\n problemSolvingList: [], // 问题破解中典型案例列表\r\n leadAttentionList: [], // 领导关注列表\r\n workDeploymentList: [], // 工作部署列表\r\n reformNeedData: {fulfill: {}, demand: {}}, // 改革需求数据\r\n pieChart1: null, // 指数排行榜内饼图\r\n pieChart2: null, // 改革需求内饼图\r\n reformBrandChart: null,\r\n loading: {\r\n coreIndexLoading: false, // 核心指数loading\r\n indexRankingLoading: false, // 指数排行榜loading\r\n pilotResultsLoading: false, // 试点结果loading\r\n brandCreationLoading: false, // 品牌创建loading\r\n problemSolvingLoading: false, // 问题破解loading\r\n leadAttentionLoading: false, // 领导关注loading\r\n reformNeedLoading: false, // 改革需求loading\r\n },\r\n loadingColor: 'rgba(6, 46, 106, 0.4)',\r\n dialogOption: {\r\n dialogTitle: '',\r\n width: '50%',\r\n },\r\n tableOptions: {},\r\n currentTabComponent: null,\r\n params: {\r\n pageBean: {\r\n page: 1,\r\n pageSize: 20,\r\n showTotal: true,\r\n },\r\n querys: [\r\n {\r\n group: 'main',\r\n operation: 'EQUAL',\r\n parentGroup: '',\r\n property: 'n.OPERATE_TYPE_',\r\n relation: 'AND',\r\n value: '2',\r\n },\r\n {\r\n group: 'main',\r\n operation: 'EQUAL',\r\n parentGroup: '',\r\n property: 'n.EXCELLENT_',\r\n relation: 'AND',\r\n value: '2',\r\n },\r\n {\r\n group: 'main',\r\n operation: 'EQUAL',\r\n parentGroup: '',\r\n property: 'o.CODE_',\r\n relation: 'AND',\r\n value: '',\r\n },\r\n ],\r\n },\r\n scrollBoradData: [],\r\n coreData: {},\r\n reformBrokenLine: null,\r\n brokenLineData: [\r\n {\r\n product: '第一季度',\r\n 民主政治: 0,\r\n 文化: 0,\r\n 经济社会发展: 0,\r\n 平安法治: 0,\r\n 党建统筹: 0,\r\n },\r\n {\r\n product: '第二季度',\r\n 民主政治: 0,\r\n 文化: 0,\r\n 经济社会发展: 0,\r\n 平安法治: 0,\r\n 党建统筹: 0,\r\n },\r\n {\r\n product: '第三季度',\r\n 民主政治: 0,\r\n 文化: 0,\r\n 经济社会发展: 0,\r\n 平安法治: 0,\r\n 党建统筹: 0,\r\n },\r\n {\r\n product: '第四季度',\r\n 民主政治: 0,\r\n 文化: 0,\r\n 经济社会发展: 0,\r\n 平安法治: 0,\r\n 党建统筹: 0,\r\n },\r\n ],\r\n }\r\n },\r\n mounted() {\r\n this.initBrokenLine()\r\n this.initPieChart1()\r\n this.initCloumnCharts()\r\n // 监听屏幕大小变化\r\n window.addEventListener('resize', this.screenAdatper)\r\n // 获取地址栏参数\r\n this.querysParams = this.$route.query\r\n let {code} = this.querysParams\r\n // 监听年度变化和季度变化\r\n this.$bus.$on('changeDate', (searchDate) => {\r\n let quarter = searchDate.quarter\r\n let year = searchDate.year\r\n this.tableOptions.quarter = quarter\r\n this.tableOptions.year = year\r\n if (this.$route.path == '/DistrictReformSubView') {\r\n this.loadData(code, quarter, year)\r\n }\r\n })\r\n },\r\n created() {\r\n this.querysParams = this.$route.query\r\n let {code} = this.querysParams\r\n\r\n let searchDate = sessionStorage.getItem('searchDate')\r\n if (searchDate) {\r\n searchDate = JSON.parse(searchDate)\r\n this.year = searchDate.year\r\n this.quarter = searchDate.quarter\r\n this.tableOptions.quarter = this.quarter\r\n this.tableOptions.year = this.year\r\n this.loadData(code, this.quarter, this.year)\r\n } else {\r\n let {quarter, year} = this.checkQuarter()\r\n this.tableOptions.quarter = quarter\r\n this.tableOptions.year = year\r\n this.loadData(code, quarter, year)\r\n }\r\n },\r\n computed: {\r\n optionSingleHeightTime() {\r\n return {\r\n step: 0.1,\r\n }\r\n },\r\n },\r\n methods: {\r\n handleDetail(comp, type, title) {\r\n let {code} = this.$route.query\r\n this.$router.push({\r\n path: '/DetailComponent',\r\n name: 'DetailComponent',\r\n query: {\r\n comp,\r\n code,\r\n type,\r\n title,\r\n },\r\n })\r\n },\r\n // 异步请求所有接口\r\n loadData(code, quarter, year) {\r\n // 异步请求【核心指数】数据\r\n this.getCoreIndexData(code, quarter, year)\r\n // 异步请求【指数排行榜】数据\r\n this.getIndexRankingData(code, quarter, year)\r\n // 异步请求【试点结果】数据\r\n this.getPilotResultsData(code, quarter, year)\r\n // 异步请求【品牌创建】数据\r\n this.getBrandCreationData(code, year)\r\n // 异步请求【问题破解】数据\r\n // this.getProblemSolvingData(code, quarter, year)\r\n // 异步请求【改革需求】数据\r\n // this.getReformNeedData(code, quarter, year)\r\n // 异步请求【领导关注】数据\r\n this.getWorkDeployment(code, quarter, year)\r\n // 获取5个领域满意度数据\r\n this.satisfactionData(code, quarter, year)\r\n },\r\n // 默认获取当前年份以及季度\r\n checkQuarter() {\r\n let year = new Date().getFullYear()\r\n let quarter = null\r\n let month = new Date().getMonth() + 1\r\n if (month <= 3) {\r\n quarter = 1\r\n } else if (month <= 6) {\r\n quarter = 2\r\n } else if (month <= 9) {\r\n quarter = 3\r\n } else if (month <= 12) {\r\n quarter = 4\r\n }\r\n return {\r\n quarter,\r\n year,\r\n }\r\n },\r\n // 指数排行榜切换tabs\r\n handleChangeTabs(event) {\r\n let name = event.target.innerText\r\n if (name == '国家级') {\r\n this.activeBtn = 1\r\n // 更新饼图 国家级已验收和推进中数据\r\n this.refreshData('nationalPassNum', 'nationalProjectNum')\r\n }\r\n if (name == '市级') {\r\n this.activeBtn = 2\r\n // 更新饼图 市级已验收和推进中数据\r\n this.refreshData('cityPassNum', 'cityProjectNum')\r\n }\r\n },\r\n // ’领导关注‘和’工作部署‘的切换\r\n handleChangeTitle(event) {\r\n let {code} = this.querysParams\r\n let name = event.target.innerText\r\n if (name == '领导关注') {\r\n this.titleActive = 1\r\n // 异步请求【领导关注】数据\r\n this.getLeadAttentionList(code)\r\n }\r\n if (name == '工作部署') {\r\n this.titleActive = 2\r\n // 异步请求【工作部署】数据\r\n this.getWorkDeployment(code)\r\n }\r\n },\r\n // 根据不同的屏幕宽度换算字体大小\r\n transformFontSize(fontsize) {\r\n // 获取屏幕宽度\r\n const width = window.screen.width\r\n const ratio = width / 1920\r\n // 取下整\r\n return parseInt(fontsize * ratio)\r\n },\r\n screenAdatper() {\r\n this.myChart && this.myChart.resize()\r\n },\r\n // Pie Chart 1\r\n initPieChart1() {\r\n let colorList = [\r\n {\r\n colorStart: '#307BA2',\r\n colorEnd: '#6DD5F5',\r\n },\r\n {\r\n colorStart: '#1E6ACE',\r\n colorEnd: '#1B39C1',\r\n },\r\n ]\r\n let option = {\r\n title: {\r\n text: 0, //主标题文本\r\n subtext: '任务总额', //副标题文本\r\n left: 'center',\r\n top: '42%',\r\n textStyle: {\r\n fontSize: this.transformFontSize(32),\r\n color: '#fff',\r\n align: 'center',\r\n },\r\n subtextStyle: {\r\n fontFamily: 'Source Han Sans CN',\r\n fontSize: this.transformFontSize(14),\r\n color: '#fff',\r\n },\r\n },\r\n\r\n // 调整图例位置\r\n legend: {\r\n top: 0,\r\n orient: 'vertical',\r\n x: 'left',\r\n itemWidth: 12, // 设置图例图形的宽\r\n itemHeight: 8, // 设置图例图形的高\r\n icon: 'roundRect',\r\n itemGap: 10,\r\n textStyle: {\r\n //图例字体样式\r\n fontSize: 13,\r\n fontFamily: 'PingFang SC',\r\n color: '#B1E3FF',\r\n },\r\n },\r\n series: [\r\n {\r\n name: '改革试点',\r\n type: 'pie',\r\n radius: ['55%', '80%'],\r\n center: ['50%', '50%'],\r\n labelLine: {\r\n show: false,\r\n },\r\n startAngle: 0, //起始角度\r\n itemStyle: {\r\n color: (list) => {\r\n // 注意 !!!!! 这里的数组一定要和实际的类目长度相等或大于,不然会缺少颜色报错\r\n return new echarts.graphic.LinearGradient(\r\n 1,\r\n 0,\r\n 0,\r\n 0,\r\n [\r\n {\r\n //左、下、右、上\r\n offset: 0,\r\n color: colorList[list.dataIndex][\r\n 'colorStart'\r\n ],\r\n },\r\n {\r\n offset: 1,\r\n color: colorList[list.dataIndex][\r\n 'colorEnd'\r\n ],\r\n },\r\n ]\r\n )\r\n },\r\n },\r\n data: [0, 0],\r\n },\r\n ],\r\n }\r\n this.pieChart1 = echarts.init(document.getElementById('pieChart1'))\r\n option && this.pieChart1.setOption(option)\r\n window.addEventListener('resize', () => this.pieChart1.resize())\r\n },\r\n // cloumn chart\r\n initCloumnCharts() {\r\n const chartDom = document.getElementById('cloumn-charts')\r\n this.reformBrandChart = echarts.init(chartDom)\r\n let reformBrandOption = {\r\n grid: {\r\n //图表离外层盒子的距离\r\n top: '30%',\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n containLabel: true,\r\n },\r\n tooltip: {\r\n trigger: 'axis',\r\n backgroundColor: 'rgba(6, 47, 107, 1)',\r\n borderColor: 'rgba(2, 115, 233, 1)',\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n formatter: function (params) {\r\n let tipString = params[0].axisValue + '
'\r\n console.log(params)\r\n let seriesName = [\r\n '获全国性肯定评价',\r\n '获全市推广',\r\n '获中央媒体深度专题报道',\r\n ]\r\n for (\r\n let i = 0, length = params.length;\r\n i < length;\r\n i++\r\n ) {\r\n tipString += `
\r\n \r\n \r\n ${seriesName[i]}\r\n \r\n ${params[i].value}\r\n
\r\n `\r\n }\r\n return tipString\r\n },\r\n },\r\n legend: {\r\n top: '0',\r\n left: 'center',\r\n data: ['全国肯定', '全市推广', '央媒报道'],\r\n inactiveColor: '#333333',\r\n borderRadius: 6,\r\n itemWidth: 20,\r\n itemHeight: 6,\r\n textStyle: {\r\n color: '#B1E3FF',\r\n },\r\n },\r\n xAxis: {\r\n type: 'category',\r\n boundaryGap: true,\r\n axisTick: false,\r\n axisLine: {\r\n lineStyle: {\r\n color: 'rgba(154,199,220, 0.2)',\r\n },\r\n },\r\n axisLabel: {\r\n color: '#D7F1FF',\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 type: 'value',\r\n // interval: 1, // 步长\r\n min: 0,\r\n splitNumber: 5,\r\n axisLabel: {\r\n color: '#D7F1FF',\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 axisLine: {\r\n lineStyle: {\r\n color: 'rgba(154,199,220, 0.2)',\r\n },\r\n },\r\n splitLine: {\r\n lineStyle: {\r\n color: 'rgba(154,199,220, 0.2)',\r\n },\r\n },\r\n },\r\n color: ['#59C06C', '#1790ff', '#FFB51F'],\r\n series: [\r\n {\r\n name: '全国肯定',\r\n data: [],\r\n type: 'bar',\r\n barWidth: 6,\r\n itemStyle: {\r\n borderRadius: 5,\r\n },\r\n },\r\n {\r\n name: '全市推广',\r\n data: [],\r\n type: 'bar',\r\n barWidth: 6,\r\n itemStyle: {\r\n borderRadius: 5,\r\n },\r\n },\r\n {\r\n name: '央媒报道',\r\n data: [],\r\n type: 'line',\r\n symbol: 'emptyCircle',\r\n symbolSize: 4,\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 offset: 0,\r\n color: 'rgba(255, 181, 31, 1)', // 0% 处的颜色\r\n },\r\n {\r\n offset: 0.4,\r\n color: 'rgba(255, 181, 31, 0.2)', // 0% 处的颜色\r\n },\r\n {\r\n offset: 1,\r\n color: 'rgba(255, 181, 31, 0)', // 100% 处的颜色\r\n },\r\n ],\r\n global: false, // 缺省为 false\r\n },\r\n },\r\n },\r\n ],\r\n }\r\n reformBrandOption &&\r\n this.reformBrandChart.setOption(reformBrandOption)\r\n window.addEventListener('resize', () =>\r\n this.reformBrandChart.resize()\r\n )\r\n },\r\n initBrokenLine() {\r\n const brokenLine = document.getElementById('broken-line')\r\n this.reformBrokenLine = echarts.init(brokenLine)\r\n let option = {\r\n tooltip: {\r\n trigger: 'axis',\r\n backgroundColor: 'rgba(6, 47, 107, 1)',\r\n borderColor: 'rgba(2, 115, 233, 1)',\r\n textStyle: {\r\n color: '#fff',\r\n },\r\n },\r\n legend: {\r\n top: '0',\r\n left: 'center',\r\n type: 'plain',\r\n icon: 'rect',\r\n inactiveColor: '#333333',\r\n itemWidth: 20,\r\n itemHeight: 6,\r\n textStyle: {\r\n color: '#B1E3FF',\r\n },\r\n },\r\n grid: {\r\n left: '2%',\r\n right: '4%',\r\n bottom: '2%',\r\n containLabel: true,\r\n },\r\n nameLocation: 'middle',\r\n xAxis: {\r\n type: 'category',\r\n boundaryGap: ['0%', '0%'],\r\n axisLine: {\r\n lineStyle: {\r\n color: 'rgba(154,199,220, 0.2)',\r\n },\r\n },\r\n axisLabel: {\r\n color: '#D7F1FF',\r\n align: 'center',\r\n // padding: [0, 0, 0, -40]\r\n },\r\n // data: ['第一季度', '第二季度', '第三季度', '第四季度']\r\n },\r\n yAxis: {\r\n type: 'value',\r\n min: 0,\r\n max: 100,\r\n interval: 25,\r\n axisLabel: {\r\n color: '#D7F1FF',\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 splitArea: {\r\n show: false, // 是否显示分隔区域\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: 'rgba(154,199,220, 0.2)',\r\n },\r\n },\r\n splitLine: {\r\n lineStyle: {\r\n color: 'rgba(154,199,220, 0.2)',\r\n },\r\n },\r\n },\r\n color: ['#9FA055', '#68AC81', '#98745B', '#1970C2', '#824555'],\r\n dataset: {\r\n // 提供一份数据。\r\n source: this.brokenLineData,\r\n },\r\n series: [\r\n {\r\n type: 'line',\r\n },\r\n {\r\n type: 'line',\r\n },\r\n {\r\n type: 'line',\r\n },\r\n {\r\n type: 'line',\r\n },\r\n {\r\n type: 'line',\r\n },\r\n ],\r\n }\r\n var myChart = echarts.init(brokenLine)\r\n option && myChart.setOption(option)\r\n window.addEventListener('resize', () =>\r\n this.reformBrokenLine.resize()\r\n )\r\n },\r\n openSubDialog(componentName, type, column) {\r\n this.currentTabComponent = dialogConfig.dialogOption[componentName]\r\n .componentName\r\n ? dialogConfig.dialogOption[componentName].componentName\r\n : componentName // 动态组件名称\r\n if (column) {\r\n dialogConfig.dialogOption[componentName].option.dialogTitle =\r\n column.title\r\n this.tableOptions.id = column.id\r\n }\r\n this.tableOptions = {\r\n ...dialogConfig.dialogOption[componentName].dataOptions,\r\n ...this.tableOptions,\r\n type,\r\n name: this.querysParams.name || undefined,\r\n code: this.querysParams.code || undefined,\r\n } //table的查询参数\r\n this.dialogOption = dialogConfig.dialogOption[componentName].option //弹窗配置参数\r\n this.showEasy = true\r\n },\r\n // 获取核心指数数据\r\n getCoreIndexData(unitCode, quarter, year) {\r\n this.loading.coreIndexLoading = true\r\n const api = `/county/largeScreen/v1/queryCoreIndex?unitCode=${unitCode}&quarter=${quarter}&year=${year}`\r\n req.post(portal + api)\r\n .then((res) => {\r\n // res.data.nationalProjectNum = this.numToArray(\r\n // res.data.nationalProjectNum\r\n // )\r\n // res.data.cityProjectNum = this.numToArray(res.data.cityProjectNum)\r\n // res.data.passRate = this.numToArray(res.data.passRate)\r\n // res.data.addNum = this.numToArray(res.data.addNum)\r\n // res.data.nationwideNum = this.numToArray(res.data.nationwideNum)\r\n // res.data.cityNum = this.numToArray(res.data.cityNum)\r\n // res.data.mediaNum = this.numToArray(res.data.mediaNum)\r\n // res.data.satisfied = this.numToArray(res.data.satisfied)\r\n this.coreData = res.data\r\n // this.coreIndexData = (res && res.data) || {}\r\n this.loading.coreIndexLoading = false\r\n })\r\n .catch(() => {\r\n // this.loading.coreIndexLoading = false\r\n })\r\n },\r\n // 格式化数据\r\n numToArray(num) {\r\n let valueArr = []\r\n if (parseInt(num) === parseFloat(num)) {\r\n if (num > 9) {\r\n valueArr[0] = Math.floor(num / 10)\r\n valueArr[1] = num % 10\r\n } else {\r\n valueArr[0] = num\r\n }\r\n } else {\r\n let arr = num.toString().split('.')\r\n if (arr[0].length > 1) {\r\n valueArr[0] = Math.floor((arr[0] - 0) / 10)\r\n valueArr[1] = (arr[0] - 0) % 10\r\n } else {\r\n valueArr[0] = arr[0] - 0\r\n }\r\n valueArr.push('.' + arr[1])\r\n }\r\n return valueArr\r\n },\r\n // 格式化数值便于显示在‘核心指数’区域,idnex为需要的索引值\r\n formatInteger(prop, index) {\r\n let num = this.coreIndexData[prop]\r\n if (typeof num == 'undefined') return 0\r\n // 转换为整数\r\n let int = parseInt(num)\r\n if (int >= 10) {\r\n int = int.toString()\r\n } else {\r\n int = '0' + int\r\n }\r\n // 整数拆分获取每一位数\r\n let ints = int.split('')\r\n return ints.length != 0 && ints[index]\r\n },\r\n // 根据查找字符串中是否存在‘-’返回数值\r\n indexOf(prop) {\r\n let num = this.coreIndexData[prop]\r\n if (typeof num == 'undefined') return -1\r\n num = num.toString()\r\n return num.indexOf('-')\r\n },\r\n // 将字符串转换为整数\r\n parseIntByProp(prop) {\r\n let num = this.coreIndexData[prop]\r\n if (typeof num == 'undefined') return 0\r\n if (prop == 'score') {\r\n num = parseInt(num) / 2\r\n }\r\n return parseInt(num)\r\n },\r\n // 获取指数排行榜数据\r\n getIndexRankingData(unitCode, quarter, year) {\r\n this.loading.indexRankingLoading = true\r\n const api = `/county/largeScreen/v1/queryIndexSn?unitCode=${unitCode}&quarter=${quarter}&year=${year}`\r\n req.post(portal + api)\r\n .then((res) => {\r\n console.log(res.data)\r\n this.IndexRankingData = (res && res.data) || {}\r\n this.loading.indexRankingLoading = false\r\n // 更新饼图 国家级已验收和推进中数据\r\n if (this.activeBtn == 1) {\r\n this.refreshData(\r\n 'nationalPassNum',\r\n 'nationalProjectNum'\r\n )\r\n } else {\r\n this.refreshData('cityPassNum', 'cityProjectNum')\r\n }\r\n })\r\n .catch(() => {\r\n this.loading.indexRankingLoading = false\r\n })\r\n },\r\n // 获取5个领域满意度数据\r\n satisfactionData(unitCode, quarter, year) {\r\n this.loading.reformNeedLoading = true\r\n const api = `/county/largeScreen/v1/queryFieldSatisfaction?unitCode=${unitCode}&quarter=${quarter}&year=${year}`\r\n req.post(portal + api)\r\n .then((res) => {\r\n if (res.status == 200) {\r\n res.data.forEach((item) => {\r\n let i = item.scoringQuarter - 1\r\n this.brokenLineData[i] = {\r\n product:\r\n i === 1\r\n ? '第二季度'\r\n : i === 2\r\n ? '第三季度'\r\n : i === 3\r\n ? '第四季度'\r\n : '第一季度',\r\n 民主政治: item.demField || 0,\r\n 文化: item.culField || 0,\r\n 经济社会发展: item.ecoField || 0,\r\n 平安法治: item.peaceField || 0,\r\n 党建统筹: item.partyField || 0,\r\n }\r\n })\r\n this.initBrokenLine()\r\n }\r\n this.loading.reformNeedLoading = false\r\n })\r\n .catch(() => {\r\n this.loading.reformNeedLoading = false\r\n })\r\n },\r\n // 更新指数排行榜内饼图数据\r\n refreshData(prop1, prop2) {\r\n let num1 = this.IndexRankingData[prop1]\r\n let sum = this.IndexRankingData[prop2]\r\n let num2\r\n if (typeof num1 == 'undefined' && typeof sum == 'undefined') {\r\n num1 = 0\r\n num2 = 0\r\n } else if (typeof num1 == 'undefined') {\r\n num1 = 0\r\n num2 = sum\r\n } else {\r\n num2 = sum - num1\r\n }\r\n let arr = [num1, num2]\r\n //刷新数据\r\n let option = this.pieChart1.getOption()\r\n option.title[0].text = sum\r\n option.series[0].data = arr\r\n this.pieChart1.setOption(option)\r\n },\r\n // 格式化指数排行榜数据\r\n formatIndexRank(prop) {\r\n let num = this.IndexRankingData[prop]\r\n if (typeof num == 'undefined') return '-'\r\n return num\r\n },\r\n // 格式化指数排行榜数据\r\n formatIndexRankPlus(prop1, prop2) {\r\n let num1 = this.IndexRankingData[prop1]\r\n let num2 = this.IndexRankingData[prop2]\r\n if (typeof num1 == 'undefined' && typeof num2 == 'undefined')\r\n return '-'\r\n if (typeof num2 == 'undefined') return num1\r\n if (num2 == 0) return 0\r\n return num2 - num1\r\n },\r\n // 计算指数排行榜已验收和推进中占比百分数\r\n // calculatePer(prop1, prop2) {\r\n // let num1 = this.IndexRankingData[prop1]\r\n // let num2 = this.IndexRankingData[prop2]\r\n // if (typeof num1 == 'undefined') num1 = 0\r\n // if (typeof num2 == 'undefined') num2 = 0\r\n // let num1Origin = num1\r\n // let num2Origin = num2\r\n // // 具体语法解析请搜索https://www.npmjs.com/package/bignumber.js/v/9.0.1\r\n // num1 = new BigNumber(num1)\r\n // num2 = new BigNumber(num2)\r\n // let sum = parseInt(num1.plus(num2))\r\n // if (sum == 0) {\r\n // return [0, 0]\r\n // } else {\r\n // let num1Per, num2Per\r\n // if (num1Origin == 0) {\r\n // num1Per = 0\r\n // } else {\r\n // num1Per = (num1.div(sum) * 100).toFixed(2) || 0\r\n // }\r\n // if (num2Origin == 0) {\r\n // num2Per = 0\r\n // } else {\r\n // num2Per = (num2.div(sum) * 100).toFixed(2) || 0\r\n // }\r\n // return [num1Per, num2Per]\r\n // }\r\n // },\r\n // 计算指数排行榜已验收和推进中占比百分数\r\n calculatePer(prop1, prop2sum) {\r\n let num1 = this.IndexRankingData[prop1]\r\n let sum = this.IndexRankingData[prop2sum]\r\n let num2\r\n if (typeof num1 == 'undefined' && typeof sum == 'undefined') {\r\n num1 = 0\r\n sum = 0\r\n num2 = 0\r\n } else if (typeof num1 == 'undefined') {\r\n num1 = 0\r\n num2 = sum\r\n } else {\r\n num2 = sum - num1\r\n }\r\n let num1Origin = num1\r\n let num2Origin = num2\r\n let sumOrigin = sum\r\n // 具体语法解析请搜索https://www.npmjs.com/package/bignumber.js/v/9.0.1\r\n // num1 = new BigNumber(num1)\r\n // num2 = new BigNumber(num2)\r\n\r\n if (sumOrigin == 0) {\r\n return [0, 0]\r\n } else {\r\n let num1Per, num2Per\r\n if (num1Origin == 0) {\r\n num1Per = 0\r\n } else {\r\n num1Per = ((num1 / sum) * 100).toFixed(2) || 0\r\n }\r\n if (num2Origin == 0) {\r\n num2Per = 0\r\n } else {\r\n num2Per = ((num2 / sum) * 100).toFixed(2) || 0\r\n }\r\n return [num1Per, num2Per]\r\n }\r\n },\r\n // 获取试点结果数据\r\n getPilotResultsData(unitCode, quarter, year) {\r\n this.loading.pilotResultsLoading = true\r\n const api = `/county/largeScreen/v1/pilotReform?unitCode=${unitCode}&quarter=${quarter}&year=${year}`\r\n req.post(portal + api)\r\n .then((res) => {\r\n const data =\r\n (res &&\r\n res.data &&\r\n res.data.value &&\r\n res.data.value.achievement) ||\r\n []\r\n this.pilotResultsData = data\r\n this.loading.pilotResultsLoading = false\r\n })\r\n .catch(() => {\r\n this.loading.pilotResultsLoading = false\r\n })\r\n },\r\n // 根据试点结果数据返回相应的版块数据\r\n getByTypeGetData(type, prop) {\r\n let orignData = this.pilotResultsData\r\n if (orignData.length == 0) return 0\r\n let data = orignData.filter((item) => item.achievementType == type)\r\n let val = 0\r\n if (data.length != 0) {\r\n val = data[0][prop]\r\n }\r\n return val\r\n },\r\n // 获取品牌创建数据\r\n getBrandCreationData(unitCode, year) {\r\n this.loading.brandCreationLoading = true\r\n const api = `/county/largeScreen/v1/brandBuild_sec?unitCode=${unitCode}&year=${year}`\r\n req.post(portal + api)\r\n .then((res) => {\r\n this.brandCreationData = (res && res.data) || {}\r\n this.brandCreationList = this.brandCreationData.details\r\n this.loading.brandCreationLoading = false\r\n // 更新图标数据\r\n this.refreshBrandList()\r\n })\r\n .catch(() => {\r\n this.loading.brandCreationLoading = false\r\n })\r\n },\r\n // 更新品牌创建柱形图\r\n refreshBrandList() {\r\n let data1 = this.brandCreationData.count['1']\r\n let data3 = this.brandCreationData.count['3']\r\n let data2 = this.brandCreationData.count['2']\r\n let arr1 = [],\r\n arr2 = [],\r\n arr3 = []\r\n if (data1) {\r\n data1.forEach((item) => {\r\n arr1.push(item.effectCount)\r\n })\r\n }\r\n if (data2) {\r\n data2.forEach((item) => {\r\n arr2.push(item.effectCount)\r\n })\r\n }\r\n if (data3) {\r\n data3.forEach((item) => {\r\n arr3.push(item.effectCount)\r\n })\r\n }\r\n let option = this.reformBrandChart.getOption()\r\n option.series[0].data = arr1 || []\r\n option.series[1].data = arr2 || []\r\n option.series[2].data = arr3 || []\r\n this.reformBrandChart.setOption(option)\r\n },\r\n // 获取问题破解模块数据\r\n getProblemSolvingData(unitCode, quarter, year) {\r\n this.loading.problemSolvingLoading = true\r\n const api = `/county/largeScreen/v1/problemSolving_sec?unitCode=${unitCode}&quarter=${quarter}&year=${year}`\r\n req.post(portal + api)\r\n .then((res) => {\r\n const data = (res && res.data) || {}\r\n this.problemSolvingData = data.count || {}\r\n this.problemSolvingList = data.detail || []\r\n this.loading.problemSolvingLoading = false\r\n })\r\n .catch(() => {\r\n this.loading.problemSolvingLoading = false\r\n })\r\n },\r\n // 获取改革需求模块数据\r\n getReformNeedData(unitCode, quarter, year) {\r\n this.loading.reformNeedLoading = true\r\n const api = `/county/largeScreen/v1/reformDemand_sec?unitCode=${unitCode}&quarter=${quarter}&year=${year}`\r\n req.post(portal + api)\r\n .then((res) => {\r\n const data = (res && res.data) || {}\r\n this.reformNeedData.fulfill = data.fulfill || {}\r\n this.reformNeedData.demand = data.demand || {}\r\n this.loading.reformNeedLoading = false\r\n // 更新饼图 落实力已验收和推进中数据\r\n this.refreshReformData()\r\n })\r\n .catch(() => {\r\n this.loading.reformNeedLoading = false\r\n })\r\n },\r\n // 更新改革需求模块饼图数据\r\n refreshReformData() {\r\n let num1 = this.reformNeedData.fulfill.unStartNum || 0\r\n let num2 = this.reformNeedData.fulfill.pushNum || 0\r\n let total = this.reformNeedData.fulfill.totlal || 0\r\n let endNum = this.reformNeedData.fulfill.endNum || 0\r\n num1 = new BigNumber(num1)\r\n let sum = num1.plus(num2)\r\n let arr = [\r\n {\r\n value: parseInt(endNum),\r\n name: '已验证',\r\n },\r\n {\r\n value: parseInt(sum),\r\n name: '推进中',\r\n },\r\n ]\r\n //刷新数据\r\n let option = this.pieChart2.getOption()\r\n option.title[0].subtext = parseInt(total) + '项'\r\n option.series[0].data = arr\r\n this.pieChart2.setOption(option)\r\n },\r\n // 获取领导关注模块数据\r\n getLeadAttentionList(unitCode) {\r\n this.params.querys[1].value = unitCode\r\n this.params.querys[0].value = 1\r\n this.loading.leadAttentionLoading = true\r\n const api = `/fill/bizWorkNews/v1/queryCode`\r\n req.post(portal + api, this.params)\r\n .then((res) => {\r\n this.leadAttentionList =\r\n (res && res.data && res.data.rows) || []\r\n this.loading.leadAttentionLoading = false\r\n // 更新饼图 落实力已验收和推进中数据\r\n this.refreshReformData()\r\n })\r\n .catch(() => {\r\n this.loading.leadAttentionLoading = false\r\n })\r\n },\r\n // 获取工作部署模块数据\r\n getWorkDeployment(unitCode) {\r\n this.params.querys[2].value = unitCode\r\n this.loading.leadAttentionLoading = true\r\n const api = `/fill/bizWorkNews/v1/queryCode`\r\n req.post(portal + api, this.params)\r\n .then((res) => {\r\n this.workDeploymentList =\r\n (res && res.data && res.data.rows) || []\r\n this.loading.leadAttentionLoading = false\r\n // 更新饼图 落实力已验收和推进中数据\r\n this.refreshReformData()\r\n })\r\n .catch(() => {\r\n this.loading.leadAttentionLoading = false\r\n })\r\n },\r\n countColor(type) {\r\n let className = ''\r\n let sn = this.coreIndexData[type]\r\n if (sn <= 5) {\r\n className = 'level1'\r\n } else if (sn <= 13) {\r\n className = 'level2'\r\n } else if (sn <= 28) {\r\n className = 'level3'\r\n } else if (sn <= 36) {\r\n className = 'level4'\r\n } else if (sn <= 41) {\r\n className = 'level5'\r\n }\r\n return className\r\n },\r\n },\r\n beforeDestroy() {\r\n // 组件销毁前移除监听,防止内存泄露\r\n // window.removeEventListener('resize')\r\n },\r\n}\r\n",null]}