From 4bced4c45dac14f20953b6f3b0326e535a99729b Mon Sep 17 00:00:00 2001 From: quanyawei <401863037@qq.com> Date: Thu, 23 Nov 2023 09:48:03 +0800 Subject: [PATCH] fix:导出修改 --- src/views/toCarryOutLegislativeReforms/reform/index.vue | 173 ++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 121 insertions(+), 52 deletions(-) diff --git a/src/views/toCarryOutLegislativeReforms/reform/index.vue b/src/views/toCarryOutLegislativeReforms/reform/index.vue index 4c5e0b6..cdeb5b5 100644 --- a/src/views/toCarryOutLegislativeReforms/reform/index.vue +++ b/src/views/toCarryOutLegislativeReforms/reform/index.vue @@ -1,5 +1,5 @@ <template> - <div class="main" v-loading="loading"> + <div v-loading="loading" class="main"> <div> <searchBar v-if="searchType" :search-type="'reform'" @handleSearch="handleSearchBut" @handleAdd="handleOpenDialog(null, 'add')" /> <newWorkOrder v-if="centerDialogVisible" ref="newWorkOrder" :parent-form-data="parentFormData" :title="title" :page-state="pageState" :visible.sync="centerDialogVisible" @handleSubmit="newHandleSubmit" /> @@ -8,8 +8,12 @@ <div class="exportBox"> <div>������������</div> <div> - <el-button type="primary" size="mini" @click="handleOpenDialog(null, 'add')">������</el-button> - <el-button :disabled="!(selectionRows.length>0)" type="info" size="mini" @click="exportData">������</el-button> + <el-button type="primary" size="mini" @click="handleOpenDialog(null, 'add')"> + ������ + </el-button> + <el-button :disabled="!(selectionRows.length>0)" type="info" size="mini" @click="isNowDonw"> + ������ + </el-button> </div> </div> @@ -17,19 +21,20 @@ <div> <div v-if="sealList.length>0"> <div v-for="(item,index) in sealList" :key="index" :style="{'height':item.styleHeight}"> - <div class="yingzhang" v-if="item.isInvalid===1"> - <div class="seal-red"> ��������� </div> + <div v-if="item.isInvalid===1" class="yingzhang"> + <div class="seal-red"> + ��������� + </div> </div> </div> </div> </div> <div style="position: absolute;top:0;width: 100%;"> - <el-table size="mini" :data="tableData" border style="width: 100%" @selection-change="handleSelectionChange" :header-cell-style="{ - color: '#101111', - fontSize: '16px' - }"> - <el-table-column type="selection" width="40" align="center"> - </el-table-column> + <el-table size="mini" :data="tableData" border style="width: 100%" :header-cell-style="{ + color: '#101111', + fontSize: '16px' + }" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="40" align="center" /> <el-table-column type="index" label="������" width="60px" align="center" /> <el-table-column align="center"> <template slot="header"> @@ -104,11 +109,10 @@ </el-table-column> <el-table-column align="center" prop="createTime" min-width="100px" label="������"> <template slot-scope="scope"> - <el-button type="text" size="medium" @click="openWorkOrdinDialog(scope.row, 'detail')"> ������ </el-button> - <el-button type="text" v-if="scope.row.isCode==='1'" size="medium" @click="openEditDialog(scope.row)"> + <el-button v-if="scope.row.isCode==='1'" type="text" size="medium" @click="openEditDialog(scope.row)"> ������������ </el-button> <el-button v-if="scope.row.state === 9" type="text" size="medium" @click="handleOpenDialog(scope.row, 'edit')"> @@ -123,11 +127,7 @@ <el-button v-if="scope.row.state === 30 && scope.row.isApprove === 1" type="text" size="medium" @click="openWorkOrdinDialog(scope.row, 'approve')"> ������ </el-button> - <el-button v-if=" - scope.row.state === 20 && - scope.row.changeType === 2 && - scope.row.applyState === 0 - " type="text" size="medium" @click="openWorkOrdinDialog(scope.row, 'delay')"> + <el-button v-if="scope.row.state === 20 && scope.row.changeType === 2 &&scope.row.applyState === 0" type="text" size="medium" @click="openWorkOrdinDialog(scope.row, 'delay')"> ������������ </el-button> </template> @@ -154,25 +154,43 @@ <el-button type="primary" @click="handleInvalid">��� ���</el-button> </span> </el-dialog> - <el-dialog title="������" v-if="dialogEditVisible" :visible.sync="dialogEditVisible" width="800px" top='5vh' :before-close="handleClose" center> + <el-dialog v-if="dialogEditVisible" title="������" :visible.sync="dialogEditVisible" width="800px" top="5vh" :before-close="handleClose" center> <el-descriptions title="������������"> <template slot="extra"> <div> - {{ editEscalationUnitData.allocationNum}} + {{ editEscalationUnitData.allocationNum }} </div> </template> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ editEscalationUnitData.escalationTime }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ updataUnitIdFormatter }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ polluteTypeeDITFormatter }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ dictObj.changeEnum[editEscalationUnitData.changeType] }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ editEscalationUnitData.changeDay || 0}} ���</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ updataEscalationUnitIdFormatter }}</el-descriptions-item> - <el-descriptions-item label="���������" label-class-name="itemSpan">{{ editEscalationUnitData.escalationName }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ editEscalationUnitData.pollutePosition }}</el-descriptions-item> + <el-descriptions-item label="������������" label-class-name="itemSpan"> + {{ editEscalationUnitData.escalationTime }} + </el-descriptions-item> + <el-descriptions-item label="������������" label-class-name="itemSpan"> + {{ updataUnitIdFormatter }} + </el-descriptions-item> + <el-descriptions-item label="������������" label-class-name="itemSpan"> + {{ polluteTypeeDITFormatter }} + </el-descriptions-item> + <el-descriptions-item label="������������" label-class-name="itemSpan"> + {{ dictObj.changeEnum[editEscalationUnitData.changeType] }} + </el-descriptions-item> + <el-descriptions-item label="������������" label-class-name="itemSpan"> + {{ editEscalationUnitData.changeDay || 0 }} ��� + </el-descriptions-item> + <el-descriptions-item label="������������" label-class-name="itemSpan"> + {{ updataEscalationUnitIdFormatter }} + </el-descriptions-item> + <el-descriptions-item label="���������" label-class-name="itemSpan"> + {{ editEscalationUnitData.escalationName }} + </el-descriptions-item> + <el-descriptions-item label="������������" label-class-name="itemSpan"> + {{ editEscalationUnitData.pollutePosition }} + </el-descriptions-item> </el-descriptions> - <el-divider></el-divider> + <el-divider /> <div> - <p class="editTile">������������</p> + <p class="editTile"> + ������������ + </p> <el-form :inline="true" class="demo-form-inline"> <el-form-item label="������������:"> <el-select v-model="formInEdit.unitId" size="small" clearable placeholder="���������"> @@ -191,9 +209,15 @@ <div class="block"> <el-timeline> <el-timeline-item v-for="(activity, index) in operatingLog" :key="index" :color="'#0bbd87'" :timestamp="activity.createTime"> - <div v-if="activity.content"> ���������: {{activity.userName}}</div> - <div v-if="activity.content"> ������������: {{activity.content}}</div> - <div v-if="activity.polluteType"> ������������: {{activity.polluteType}}</div> + <div v-if="activity.content"> + ���������: {{ activity.userName }} + </div> + <div v-if="activity.content"> + ������������: {{ activity.content }} + </div> + <div v-if="activity.polluteType"> + ������������: {{ activity.polluteType }} + </div> </el-timeline-item> </el-timeline> </div> @@ -209,6 +233,7 @@ </template> <script> +// import { mixins } from './downLoadNotice' import axios from 'axios' import _ from 'lodash' import qs from 'qs' @@ -221,6 +246,7 @@ newWorkOrder, workOrderInformation }, + // mixins: [mixins], data() { return { loading: false, @@ -302,15 +328,38 @@ console.log(rows) this.selectionRows = rows }, + isNowDonw() { + this.$confirm('������������������������������?', '������', { + confirmButtonText: '������������', + cancelButtonText: '������������', + type: 'warning' + }) + .then(() => { + this.loading = true + this.exportData() + }) + .catch(() => { + this.loading = false + this.exportData() + }) + }, exportData() { + // this.dowOrgFile('���������������.xlsx') + let that = this const CancelToken = axios.CancelToken let cancel - let timer = setTimeout(() => { - cancel() - this.loading = false - this.$message.error('���������������������������������������������') - }, 300000) - this.loading = true + let timer + const totalSize = this.selectionRows.length * 1024 * 1024 + const uniSign = new Date().getTime() + '' // ��������������������������������������������������������������������������������������������� + if (this.loading) { + timer = setTimeout(() => { + cancel() + this.loading = false + this.$message.error('���������������������������������������������') + }, 300000) + } + + // this.loading = true this.$request({ url: '/allocation/listExcel', method: 'get', @@ -321,6 +370,19 @@ cancelToken: new CancelToken(function executor(c) { cancel = c }), + onDownloadProgress(progress) { + const loaded = progress.loaded + // progress������������loaded������������������������������total������������������������������������������ + let downProgress = Math.round((loaded / totalSize) * 100) + console.log('downProgress', downProgress) + // ������������������������������������������������������������vuex������������ + if (!that.loading) { + that.$store.commit('downLoadProgress/SET_PROGRESS', { + path: uniSign, + progress: downProgress + }) + } + }, paramsSerializer: params => { return qs.stringify(params, { indices: false @@ -333,6 +395,12 @@ if (res.code === -1) { this.$message.error(res.message) } else { + if (!that.loading) { + that.$store.commit('downLoadProgress/SET_PROGRESS', { + path: uniSign, + progress: 100 + }) + } this.getOutExcel('���������������.xlsx', res) } }) @@ -342,23 +410,24 @@ }) }, getOutExcel(fileName, res) { - let blob = new Blob([res], { type: 'application/x-xls' }) + const blob = new Blob([res], { type: 'application/x-xls' }) if (window.navigator.msSaveOrOpenBlob) { - //������ IE & EDGE + // ������ IE & EDGE this.loading = false navigator.msSaveBlob(blob, fileName) } else { - var link = document.createElement('a') + const link = document.createElement('a') // ������������������������URL������ const url = window.URL || window.webkitURL || window.moxURL // ������������������ link.href = url.createObjectURL(blob) - //������������������ + // ������������������ link.download = fileName - //������������������ + // ������������������ link.click() - //������������������������ + // ������������������������ url.revokeObjectURL(link.href) + this.$message.success('���������������') this.loading = false } }, @@ -376,7 +445,7 @@ this.operatingLog = res.data }) .catch(err => { - this.$message.error(res.message) + this.$message.error(err.message) console.log('������Region������') console.log(err) }) @@ -420,7 +489,7 @@ } }) .catch(err => { - this.$message.error(res.message) + this.$message.error(err.message) console.log('������Region������') console.log(err) }) @@ -548,7 +617,7 @@ }) }, handleSearchBut(obj) { - let pageSize = this.pagination.pageSize + const pageSize = this.pagination.pageSize this.pagination = { currentPage: 1, // ������������������������������������������(���������������������������) @@ -582,10 +651,10 @@ }) this.pagination.totalCount = res.data.page.totalNum this.$nextTick(() => { - var rows = this.$el.querySelectorAll('table tr') - for (var i = 0; i < rows.length; i++) { - var row = rows[i] - var height = row.getBoundingClientRect().height + const rows = this.$el.querySelectorAll('table tr') + for (let i = 0; i < rows.length; i++) { + const row = rows[i] + const height = row.getBoundingClientRect().height this.sealList[i]['styleHeight'] = height + 'px' } this.$forceUpdate() -- Gitblit v1.8.0