{"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\\projectStatementDetail.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\reform-fvue\\src\\views\\BigScreen\\components\\subComponents\\projectStatementDetail.vue","mtime":1741679454700},{"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\r\nimport apiList from '@/api/bigScreen/majorView.js'\r\nimport monthlyProgressDialog from './monthlyProgressDialog.vue'\r\nimport ExcelJS from 'exceljs';\r\nexport default {\r\n projectName: 'reportOverview',\r\n components: {\r\n monthlyProgressDialog\r\n },\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 loading: false,\r\n loadingColor: 'rgba(7, 45, 98,.4)',\r\n dataReady: false,\r\n tableData: [],\r\n planTypeDetails: [],\r\n workbook: null,\r\n projectName: '',\r\n projectCategory: ''\r\n }\r\n },\r\n mounted() {\r\n this.getData()\r\n this.$bus.$on('changeDate', (searchDate) => {\r\n this.getData()\r\n })\r\n this.$bus.$on('monthExportExcel', (comp) => {\r\n if (comp === 'projectStatementDetail') {\r\n this.clickExport()\r\n }\r\n })\r\n },\r\n created() {\r\n this.projectName = this.$route.query.projectName || ''\r\n this.$emit('searchDateChange')\r\n },\r\n methods: {\r\n openDetails(item, index) {\r\n let { statusText } = item[`target${index}`]\r\n if (statusText === '不涉及') {\r\n this.$message.warning('暂无涉及数据')\r\n } else {\r\n this.$refs.monthlyProgressDialog.open(item, index)\r\n }\r\n },\r\n getData() {\r\n this.loading = true\r\n this.tableData = []\r\n let data = JSON.parse(sessionStorage.getItem('searchDate'))\r\n data.projectCategory = this.projectCategory\r\n apiList.getAccelerateImplementationDetails(data, (res) => {\r\n if (res.data) {\r\n let data = JSON.parse(JSON.stringify(res.data))\r\n data.forEach(item => {\r\n item.unitName = item.statusVoList[0].unitName\r\n item.progressFinishRate = item.progressFinishRate ? item.progressFinishRate : 0\r\n item.progressUnFinishRate = (item.progressUnFinishRate ? item.progressUnFinishRate : 0) + item.progressFinishRate\r\n if (item.statusVoList) {\r\n item.statusVoList.forEach(eml => {\r\n eml.planType === 1 ? item.target1 = eml :\r\n eml.planType === 2 ? item.target2 = eml :\r\n eml.planType === 4 ? item.target3 = eml :\r\n eml.planType === 5 ? item.target4 = eml :\r\n eml.planType === 3 ? item.target5 = eml :\r\n eml.planType === 12 ? item.target6 = eml :\r\n eml.planType === 7 ? item.target7 = eml :\r\n eml.planType === 8 ? item.target8 = eml :\r\n eml.planType === 10 ? item.target9 = eml : ''\r\n })\r\n }\r\n });\r\n this.tableData = data\r\n this.$nextTick(() => {\r\n this.tableData.forEach((item, index) => {\r\n if (item.projectName === this.projectName) {\r\n this.$refs.myTable.setCurrentRow(item)\r\n let highlightLines = this.$refs.myTable.$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 === (index)) {\r\n break\r\n }\r\n scrollTop += highlightLines[i].offsetHeight\r\n }\r\n this.$refs.myTable.bodyWrapper.scrollTop = scrollTop\r\n }\r\n })\r\n })\r\n this.exportToExcel()\r\n }\r\n this.loading = false\r\n })\r\n },\r\n\r\n setStyle(value, row) {\r\n\r\n // 'background:#a0a0a0;color:#333;font-weight:900;font-size: 24px;' : 'display: none;'\r\n let style = (value.indexOf('已完成') !== -1 || value.indexOf('年实施') !== -1)\r\n ? 'background :#38a846;font-weight: bold;'\r\n : value.indexOf('推进中') !== -1\r\n ? 'background:#00b0f0;font-weight: bold;'\r\n : value.indexOf('未启动') !== -1\r\n ? 'background:rgba(232, 232, 232, .85);font-weight: bold;'\r\n : value.indexOf('未完成') !== -1\r\n ? 'background:#f43308;font-weight: bold;'\r\n : value.indexOf('不涉及') !== -1 ?\r\n 'background:#a0a0a0;font-weight: bold;color:#fff' : ''\r\n\r\n return style + 'user-select:none;color:#383838;'\r\n },\r\n exportToExcel() {\r\n let columns = [\r\n { title: '项目名称', dataIndex: 'projectName' },\r\n { title: '主责单位', dataIndex: 'unitName' },\r\n { title: '专项小组', dataIndex: 'groupName' },\r\n { title: '项目进度', dataIndex: 'progressFinishRate' },\r\n { title: '组建\\n工作专班', dataIndex: \"target1\" },\r\n { title: '开展\\n调查研究', dataIndex: \"target2\" },\r\n { title: '制定\\n改革方案', dataIndex: \"target3\" },\r\n { title: '出台\\n配套政策', dataIndex: \"target4\" },\r\n { title: '向上\\n争取支持', dataIndex: \"target5\" },\r\n { title: '开展\\n试点示范', dataIndex: \"target6\" },\r\n { title: '上线\\n重大应用', dataIndex: \"target7\" },\r\n { title: '开展\\n督导指导', dataIndex: \"target8\" },\r\n { title: '总结\\n推广经验', dataIndex: \"target9\" },\r\n ]\r\n\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('Sheet1');\r\n\r\n const data = JSON.parse(JSON.stringify(this.tableData))\r\n\r\n const headerRow = worksheet.addRow(columns.map(column => column.title));\r\n headerRow.eachCell((cell) => {\r\n cell.font = { bold: true, size: 14 };\r\n cell.alignment = {\r\n horizontal: \"center\",// 水平居中\r\n vertical: 'middle', // 垂直居中\r\n };\r\n cell.border = {\r\n top: { style: 'thin' },\r\n left: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n cell.alignment = {\r\n wrapText: true,\r\n vertical: 'middle',\r\n horizontal: 'center'\r\n }\r\n });\r\n\r\n data.forEach((rowData) => {\r\n const newRow = worksheet.addRow(columns.map((column) => {\r\n if (column.title === '项目进度') {\r\n console.log(rowData);\r\n\r\n return rowData[column.dataIndex] + '%' || \"\"\r\n }\r\n if (column.dataIndex.indexOf('target') !== -1) {\r\n return rowData[column.dataIndex].statusText || \"\"\r\n } else {\r\n return rowData[column.dataIndex] || \"\"\r\n }\r\n }));\r\n newRow.eachCell((cell, rowNum) => {\r\n cell.border = {\r\n top: { style: 'thin' },\r\n left: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n cell.alignment = {\r\n wrapText: true\r\n }\r\n if (rowNum > 3) {\r\n cell.fill = returnColor(cell.value)\r\n }\r\n cell.alignment.vertical = 'middle'\r\n cell.alignment.horizontal = 'center'\r\n })\r\n });\r\n\r\n const columnWidths = {\r\n A: 32,\r\n B: 13,\r\n C: 15,\r\n D: 15,\r\n E: 15,\r\n F: 15,\r\n G: 15,\r\n H: 15,\r\n I: 15,\r\n J: 15,\r\n K: 15,\r\n L: 15,\r\n M: 15,\r\n };\r\n Object.keys(columnWidths).forEach((columnLetter) => {\r\n worksheet.getColumn(columnLetter).width = columnWidths[columnLetter];\r\n });\r\n\r\n function returnColor(value) {\r\n let argb = (value.indexOf('已完成') !== -1 || value.indexOf('年实施') !== -1)\r\n ? '38a846'\r\n : value.indexOf('推进中') !== -1 ? '00b0f0'\r\n : value.indexOf('未启动') !== -1 ? 'e8e8e8'\r\n : value.indexOf('未完成') !== -1 ? 'f43308'\r\n : value.indexOf('不涉及') !== -1 ? 'a0a0a0' : ''\r\n return {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb }\r\n }\r\n }\r\n\r\n this.workbook = workbook\r\n },\r\n clickExport() {\r\n this.workbook.xlsx.writeBuffer().then((buffer) => {\r\n const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = '月度计划进展.xlsx';\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n });\r\n }\r\n },\r\n}\r\n",null]}