{"remainingRequest":"D:\\jenkins\\workspace\\reform-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\reform-fvue\\src\\views\\BigScreen\\components\\subComponents\\projectIndexLibrary.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\reform-fvue\\src\\views\\BigScreen\\components\\subComponents\\projectIndexLibrary.vue","mtime":1743469941138},{"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\r\nimport * as echarts from 'echarts'\r\nimport apiList from '@/api/bigScreen/districView.js'\r\nimport projectLineChartDialog from './projectLineChartDialog.vue'\r\nexport default {\r\n components: { projectLineChartDialog },\r\n props: {\r\n tableOptions: {\r\n type: Object,\r\n default: () => {\r\n return {}\r\n },\r\n },\r\n },\r\n data() {\r\n return {\r\n exportLoading: false,\r\n loadingColor: 'rgba(6, 46, 106, 0.4)',\r\n loading: false,\r\n params: {\r\n pageBean: {\r\n page: 1,\r\n pageSize: 10,\r\n total: 0,\r\n showTotal: true,\r\n },\r\n },\r\n tableData: [],\r\n chartLoading: false,\r\n projectId: '',\r\n projectOptions: [],\r\n lineChart: null,\r\n lineChartOptions: null,\r\n lineData: [],\r\n yearPieChart: null,\r\n yearPieChartOption: null,\r\n yearPieChartData: [\r\n { value: 0, name: '已完成' },\r\n { value: 0, name: '未完成' },\r\n ],\r\n indexNum: 0,\r\n tableArr: [],\r\n tablePos: 0,\r\n highlight_rows: [],\r\n routeProjectName: '',\r\n scrollIndex: 0,\r\n allNumber: 0,\r\n monthNum: 0,\r\n yearNum: 0,\r\n projectCategory: ''\r\n }\r\n },\r\n beforeDestroy() {\r\n this.$bus.$off('changeDate')\r\n },\r\n mounted() {\r\n this.enterGetData()\r\n this.getProjectAll()\r\n this.$bus.$on('changeDate', () => {\r\n this.getProjectAll()\r\n this.enterGetData()\r\n })\r\n },\r\n created() {\r\n this.routeProjectName = this.$route.query.projectName || ''\r\n this.$emit('searchDateChange')\r\n },\r\n methods: {\r\n projectLineChart(item) {\r\n let { projectName, projectId } = item\r\n this.$refs.projectLinechart.open({ projectName, projectId })\r\n // this.$router.push({\r\n // path: '/DetailComponent',\r\n // name: 'DetailComponent',\r\n // query: {\r\n // comp: 'projectLineChart',\r\n // title: projectName,\r\n // id: projectId,\r\n // },\r\n // })\r\n },\r\n initLine() {\r\n const chartDom = document.getElementById('target-line')\r\n this.lineChart = echarts.init(chartDom)\r\n this.lineChartOptions = {\r\n title: {\r\n text: '年度核心指标完成情况趋势图',\r\n left: 'center',\r\n bottom: '0%',\r\n textStyle: {\r\n color: '#ffffff',\r\n fontSize: 18,\r\n },\r\n },\r\n grid: {\r\n top: '4%',\r\n bottom: '9%',\r\n left: 0,\r\n right: '5%',\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 fontSize: 18,\r\n },\r\n // formatter: (parmas) => {\r\n // console.log(parmas);\r\n // }\r\n },\r\n xAxis: {\r\n type: 'category',\r\n boundaryGap: false,\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 fontSize: 14,\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 scale: true,\r\n min: 0,\r\n max: this.indexNum,\r\n splitNumber: 10,\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 fontSize: 14,\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: ['#00FFFF', '#CE01E0'],\r\n series: [\r\n {\r\n name: '截止本月已完成数量',\r\n data: this.lineData,\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(206, 1, 224, 1)',\r\n },\r\n {\r\n offset: 0.4,\r\n color: 'rgba(206, 1, 224, 0.2)',\r\n },\r\n {\r\n offset: 1,\r\n color: 'rgba(206, 1, 224, 0)',\r\n },\r\n ],\r\n global: false,\r\n },\r\n },\r\n },\r\n ],\r\n }\r\n this.lineChartOptions &&\r\n this.lineChart.setOption(this.lineChartOptions)\r\n },\r\n initPie() {\r\n const chartDom = document.getElementById('target-pie')\r\n this.yearPieChart = echarts.init(chartDom)\r\n this.yearPieChartOption = {\r\n title: {\r\n text: `年度目标核心指标完成情况\\n(已完成${this.yearPieChartData[0].value}项,未完成${this.yearPieChartData[1].value}项)`,\r\n bottom: '5%',\r\n left: 'center',\r\n textStyle: {\r\n fontSize: 18,\r\n color: '#fff',\r\n lineHeight: 26,\r\n },\r\n },\r\n color: ['#48b25a', '#1581e4', '#f38e03'],\r\n tooltip: {\r\n trigger: 'item',\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 series: [\r\n {\r\n name: '达成状态',\r\n type: 'pie',\r\n radius: '65%',\r\n center: ['50%', '45%'],\r\n labelLine: {\r\n normal: {\r\n length: 3,\r\n },\r\n },\r\n label: {\r\n textStyle: {\r\n color: '#B1E3FF', // 改变标示文字的颜色\r\n fontSize: 16, //文字大小\r\n },\r\n formatter: '{c}项',\r\n },\r\n data: this.yearPieChartData,\r\n itemStyle: {\r\n color: (list) => {\r\n var colorList = ['#19d632', '#f5350a']\r\n return colorList[list.dataIndex]\r\n },\r\n },\r\n },\r\n ],\r\n }\r\n this.yearPieChartOption &&\r\n this.yearPieChart.setOption(this.yearPieChartOption)\r\n window.addEventListener('resize', () => this.yearPieChart.resize())\r\n },\r\n\r\n getSpanArr(data) {\r\n // 把需要合并行的归类, data是表格数据\r\n this.tableArr = []\r\n this.tablePos = 0\r\n for (var i = 0; i < data.length; i++) {\r\n if (i === 0) {\r\n // 第一行必须存在\r\n this.tableArr.push(1)\r\n this.tablePos = 0\r\n } else {\r\n if (data[i].projectName === data[i - 1].projectName) {\r\n this.tableArr[this.tablePos] += 1\r\n this.tableArr.push(0)\r\n } else {\r\n this.tableArr.push(1)\r\n this.tablePos = i\r\n }\r\n }\r\n }\r\n\r\n // 表格序号\r\n let Nosort = 0\r\n for (let n in this.tableArr) {\r\n if (this.tableArr[n] > 0) {\r\n Nosort += 1\r\n this.$set(data[n], 'Nosort', Nosort)\r\n }\r\n }\r\n },\r\n\r\n objectSpanMethod({ row, column, rowIndex, columnIndex }) {\r\n if (columnIndex == 0 || columnIndex == 1 || columnIndex == 2 || columnIndex == 3) {\r\n // 第一列的合并方法,省\r\n const row1 = this.tableArr[rowIndex]\r\n const col1 = row1 > 0 ? 1 : 0 // 如果被合并了_row=0则它这个列需要取消\r\n return {\r\n rowspan: row1,\r\n colspan: col1\r\n }\r\n }\r\n },\r\n\r\n // 当单元格 hover 进入时会触发该事件\r\n handleCellMouseEnter(row, column, cell, event) {\r\n // 将所有user_id相同的行都放入高亮数组\r\n this.tableData.forEach((item, index) => {\r\n if (row.projectName == item.projectName) {\r\n this.highlight_rows.push(item);\r\n this.scrollIndex = index\r\n // $(event.target).css('background-color', '#f5f5f5');\r\n }\r\n })\r\n\r\n this.setTableRowHighlight();\r\n },\r\n\r\n // 当单元格 hover 退出时会触发该事件\r\n handleCellMouseLeave(row, column, cell, event) {\r\n this.highlight_rows.splice(0, this.highlight_rows.length);\r\n this.resetTableRowHighlight();\r\n },\r\n\r\n resetTableRowHighlight() {\r\n // 移除所有高亮行的高亮样式\r\n let rows = document.querySelectorAll('.mo-table__row')\r\n rows.forEach((row) => {\r\n if (row.projectName !== '深化全市机构改革') {\r\n row.classList.remove('mo-table__row--active')\r\n }\r\n })\r\n // $('.mo-table__row').removeClass('mo-table__row--active');\r\n },\r\n\r\n setTableRowHighlight() {\r\n // 重新添加高亮行的高亮样式\r\n for (let item of this.highlight_rows) {\r\n // 通过预先定义的行号来选中要高亮的行\r\n let selector = `.mo-table__row:nth-child(${item.row_index + 1})`\r\n let row = document.querySelector(selector)\r\n // 如果找到该元素,则添加类\r\n if (row) {\r\n if (item.projectName === this.routeProjectName) {\r\n row.classList.add('route-table__row--active')\r\n } else {\r\n row.classList.add('mo-table__row--active')\r\n }\r\n }\r\n // $(selector).addClass('mo-table__row--active');\r\n }\r\n },\r\n exportExcel() {\r\n this.exportLoading = true\r\n let data = JSON.parse(sessionStorage.getItem('searchDate'))\r\n data.projectId = this.projectId\r\n apiList.coreIndexDerivation(data, (res) => {\r\n this.exportLoading = false\r\n })\r\n },\r\n // 查询饼图数据以及列表数据\r\n enterGetData(val= '') {\r\n console.log(val);\r\n \r\n this.loading = true\r\n this.chartLoading = true\r\n let reqData = JSON.parse(sessionStorage.getItem('searchDate'))\r\n reqData.projectId = this.projectId\r\n reqData.projectCategory = this.projectCategory\r\n this.allNumber = 0\r\n this.monthNum = 0\r\n this.yearNum = 0\r\n apiList.enterGetData(reqData, (res) => {\r\n if (res && res.details.length) {\r\n // this.indexNum = res.totalNum\r\n // this.yearPieChartData[0].value = res.cake.finishNum\r\n // this.yearPieChartData[1].value = res.cake.unFinishNum\r\n // if (res.chart) {\r\n // this.lineData = res.chart.map((item) => item.finishNum)\r\n // } else {\r\n // this.lineData = []\r\n // }\r\n\r\n let data = JSON.parse(JSON.stringify(res.details))\r\n this.allNumber = res.details.length\r\n this.monthNum = res.details.filter(item => item.isUpToMonthOver === 1).length\r\n this.yearNum = res.details.filter(item => item.isYearOver === 1).length\r\n // isYearOver\r\n\r\n data.forEach((item, index) => {\r\n item.progressUnFinishRate += item.progressFinishRate\r\n item.row_index = index\r\n })\r\n let projectNameArr = {}\r\n const dataArr = []\r\n data.forEach((item) => {\r\n let names = Object.keys(projectNameArr)\r\n if (names.indexOf(item.projectName) === -1) {\r\n projectNameArr[item.projectName] = []\r\n }\r\n })\r\n let names = Object.keys(projectNameArr)\r\n names.forEach((name) => {\r\n data.forEach((item) => {\r\n if (name === item.projectName) {\r\n projectNameArr[name].push(item)\r\n }\r\n })\r\n })\r\n names.forEach((name, index) => {\r\n let len = projectNameArr[name].length\r\n projectNameArr[name].forEach((item) => {\r\n item.len = len\r\n item.Nosort = index\r\n })\r\n dataArr.push(...projectNameArr[name])\r\n })\r\n this.getSpanArr(dataArr)\r\n this.$set(this, 'tableData', dataArr)\r\n this.$nextTick(() => {\r\n this.handleCellMouseEnter({ projectName: this.routeProjectName })\r\n let highlightLines = this.$refs.expendTable.$el.querySelectorAll('.el-table__body tbody .el-table__row')\r\n let scrollTop = 0\r\n for (let i = 0; i < highlightLines.length; i++) {\r\n if (i === (this.scrollIndex - this.highlight_rows.length)) {\r\n break\r\n }\r\n scrollTop += highlightLines[i].offsetHeight\r\n }\r\n this.$refs.expendTable.bodyWrapper.scrollTop = scrollTop\r\n })\r\n } else {\r\n this.tableData = []\r\n }\r\n // this.initPie()\r\n // this.initLine()\r\n this.chartLoading = false\r\n this.loading = false\r\n })\r\n },\r\n //获取项目\r\n getProjectAll() {\r\n let { year } = JSON.parse(sessionStorage.getItem('searchDate'))\r\n let data = {\r\n pageBean: {\r\n page: 1,\r\n pageSize: -1,\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: 'year(create_time_)',\r\n relation: 'AND',\r\n value: year,\r\n },\r\n ],\r\n }\r\n apiList.getProjectAll(data, (res) => {\r\n this.projectOptions = res\r\n })\r\n },\r\n },\r\n}\r\n",null]}