From 740f7af7e3a5a669fd97b26102bf7bccfde00899 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Wed, 15 Nov 2023 17:01:02 +0800
Subject: [PATCH] fix:立行立改导出
---
src/views/toCarryOutLegislativeReforms/components/queryForm.vue | 2
package-lock.json | 25 +++--
package.json | 1
src/views/toCarryOutLegislativeReforms/reform/index.vue | 92 +++++++++++++++++
src/views/toCarryOutLegislativeReforms/components/workOrderInformation.vue | 6
src/views/toCarryOutLegislativeReforms/summaryPage/index.vue | 145 ++++++----------------------
6 files changed, 143 insertions(+), 128 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 75b4342..afc1401 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4563,7 +4563,6 @@
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.2.tgz?cache=0&sync_timestamp=1610403007655&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcall-bind%2Fdownload%2Fcall-bind-1.0.2.tgz",
"integrity": "sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=",
- "dev": true,
"requires": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
@@ -8573,7 +8572,6 @@
"version": "1.1.1",
"resolved": "https://registry.npm.taobao.org/get-intrinsic/download/get-intrinsic-1.1.1.tgz",
"integrity": "sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=",
- "dev": true,
"requires": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
@@ -8897,8 +8895,7 @@
"has-symbols": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.2.tgz?cache=0&sync_timestamp=1614443577352&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.2.tgz",
- "integrity": "sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=",
- "dev": true
+ "integrity": "sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM="
},
"has-tostringtag": {
"version": "1.0.0",
@@ -14664,8 +14661,7 @@
"object-inspect": {
"version": "1.9.0",
"resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.9.0.tgz?cache=0&sync_timestamp=1606804265193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.9.0.tgz",
- "integrity": "sha1-yQUh104RJ7ZyZt7TOUrWEWmGUzo=",
- "dev": true
+ "integrity": "sha1-yQUh104RJ7ZyZt7TOUrWEWmGUzo="
},
"object-is": {
"version": "1.1.5",
@@ -16558,9 +16554,12 @@
"dev": true
},
"qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
- "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY="
+ "version": "6.11.2",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz",
+ "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
},
"query-string": {
"version": "5.1.1",
@@ -16957,6 +16956,13 @@
"tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "qs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA=="
+ }
}
},
"request-promise-core": {
@@ -17810,7 +17816,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
"requires": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
diff --git a/package.json b/package.json
index 693d277..5628a09 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"open-docxtemplater-image-module": "^1.0.3",
"path-to-regexp": "2.4.0",
"pizzip": "^3.1.3",
+ "qs": "^6.11.2",
"tasksfile": "^5.1.1",
"three": "^0.132.2",
"vue": "2.6.10",
diff --git a/src/views/toCarryOutLegislativeReforms/components/queryForm.vue b/src/views/toCarryOutLegislativeReforms/components/queryForm.vue
index 7dbca98..0b5c744 100644
--- a/src/views/toCarryOutLegislativeReforms/components/queryForm.vue
+++ b/src/views/toCarryOutLegislativeReforms/components/queryForm.vue
@@ -47,7 +47,7 @@
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" @click="onSubmit">������</el-button>
- <el-button type="primary" size="small" @click="handleAdd">������</el-button>
+ <!-- <el-button type="primary" size="small" @click="handleAdd">������</el-button> -->
</el-form-item>
</el-form>
</div>
diff --git a/src/views/toCarryOutLegislativeReforms/components/workOrderInformation.vue b/src/views/toCarryOutLegislativeReforms/components/workOrderInformation.vue
index 8dcd8b8..dbc6a35 100644
--- a/src/views/toCarryOutLegislativeReforms/components/workOrderInformation.vue
+++ b/src/views/toCarryOutLegislativeReforms/components/workOrderInformation.vue
@@ -46,8 +46,8 @@
<div style="display: flex;">
<el-form-item label="������������:">
<el-radio-group v-model="workForme.isChange">
- <el-radio :label="0">���</el-radio>
- <el-radio :label="1">���</el-radio>
+ <el-radio :label="1">���</el-radio>
+ <el-radio :label="0">���</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="���������:">
@@ -72,7 +72,7 @@
<el-col :span="12">
<div class="grid-content bg-purple" />
<el-descriptions title="������������" :column="parseInt('2')">
- <el-descriptions-item label="������������" label-class-name="itemSpan">{{ parentFormData.changeType }}</el-descriptions-item>
+ <el-descriptions-item label="������������" label-class-name="itemSpan">{{ dictObj.yesOrNo[parentFormData.isChange] }}</el-descriptions-item>
<el-descriptions-item label="���������" label-class-name="itemSpan">{{ parentFormData.changeName }}</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="parseInt('1')">
diff --git a/src/views/toCarryOutLegislativeReforms/reform/index.vue b/src/views/toCarryOutLegislativeReforms/reform/index.vue
index 9bb34ab..2ba975d 100644
--- a/src/views/toCarryOutLegislativeReforms/reform/index.vue
+++ b/src/views/toCarryOutLegislativeReforms/reform/index.vue
@@ -1,13 +1,23 @@
<template>
- <div class="main">
+ <div class="main" v-loading="loading">
<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" />
+ <!-- <el-divider></el-divider> -->
<div class="tab">
- <el-table size="mini" :data="tableData" border max-height="680" style="width: 100%" :header-cell-style="{
+ <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>
+ </div>
+ </div>
+ <el-table size="mini" :data="tableData" border max-height="680" 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-column type="index" label="������" width="60px" align="center" />
<el-table-column align="center">
<template slot="header">
@@ -80,7 +90,7 @@
<div>{{ scope.row.updateTime }}</div>
</template>
</el-table-column>
- <el-table-column align="center" prop="createTime" width="100px" label="������">
+ <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')">
@@ -185,6 +195,8 @@
</template>
<script>
+import axios from 'axios'
+import qs from 'qs'
import searchBar from '@/views/toCarryOutLegislativeReforms/components/queryForm'
import newWorkOrder from '@/views/toCarryOutLegislativeReforms/components/newWorkOrder'
import workOrderInformation from '@/views/toCarryOutLegislativeReforms/components/workOrderInformation'
@@ -196,6 +208,8 @@
},
data() {
return {
+ loading: false,
+ selectionRows: [],
errorClass: 'errorClass',
searchType: 'reform',
pagination: {
@@ -268,6 +282,69 @@
this.getContaminateList()
},
methods: {
+ handleSelectionChange(rows) {
+ console.log(rows)
+ this.selectionRows = rows
+ },
+ exportData() {
+ const CancelToken = axios.CancelToken
+ let cancel
+ let timer = setTimeout(() => {
+ cancel()
+ this.loading = false
+ this.$message.error('���������������������������������������������')
+ }, 30000)
+ this.loading = true
+ this.$request({
+ url: '/allocation/listExcel',
+ method: 'get',
+ params: {
+ id: this.selectionRows.map(item => item.allocationId)
+ },
+ cancelToken: new CancelToken(function executor(c) {
+ cancel = c
+ }),
+ paramsSerializer: params => {
+ return qs.stringify(params, {
+ indices: false
+ })
+ }
+ })
+ .then(res => {
+ clearTimeout(timer)
+ console.log('������������', res)
+ if (res.code === -1) {
+ this.$message.error(res.message)
+ } else {
+ this.getOutExcel('���������������.xlsx', res)
+ }
+ })
+ .catch(err => {
+ clearTimeout(timer)
+ this.loading = false
+ })
+ },
+ getOutExcel(fileName, res) {
+ let blob = new Blob([res], { type: 'application/x-xls' })
+ if (window.navigator.msSaveOrOpenBlob) {
+ //������ IE & EDGE
+ this.loading = false
+ navigator.msSaveBlob(blob, fileName)
+ } else {
+ var 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.loading = false
+ }
+ },
openEditDialog(row) {
this.editEscalationUnitData = row
this.dialogEditVisible = true
@@ -466,6 +543,7 @@
this.handleSearch(obj)
},
handleSearch(obj) {
+ this.selectionRows = []
if (obj) {
this.searchData = obj
}
@@ -596,4 +674,12 @@
font-size: 16px;
font-weight: 700;
}
+.exportBox {
+ font-weight: 700;
+ font-size: 18px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 10px;
+}
</style>
diff --git a/src/views/toCarryOutLegislativeReforms/summaryPage/index.vue b/src/views/toCarryOutLegislativeReforms/summaryPage/index.vue
index cb5917f..c1f050c 100644
--- a/src/views/toCarryOutLegislativeReforms/summaryPage/index.vue
+++ b/src/views/toCarryOutLegislativeReforms/summaryPage/index.vue
@@ -1,27 +1,14 @@
<template>
<div class="main">
<div class="timeSelect">
- <el-radio-group
- v-model="searchForm.number"
- style="margin-left:20px"
- @input="changeNumber"
- >
+ <el-radio-group v-model="searchForm.number" style="margin-left:20px" @input="changeNumber">
<el-radio-button label="1">���1������</el-radio-button>
<el-radio-button label="2">���2������</el-radio-button>
<el-radio-button label="3">���3������</el-radio-button>
<el-radio-button label="6">���6������</el-radio-button>
<el-radio-button label="12">���12������</el-radio-button>
</el-radio-group>
- <el-date-picker
- v-model="timeInterval"
- el-time-picker
- type="daterange"
- value-format="yyyy-MM-dd"
- range-separator="���"
- start-placeholder="������������"
- end-placeholder="������������"
- @change="changeNumber"
- />
+ <el-date-picker v-model="timeInterval" el-time-picker type="daterange" value-format="yyyy-MM-dd" range-separator="���" start-placeholder="������������" end-placeholder="������������" @change="changeNumber" />
</div>
<div class="agentSummary">
<div class="circle">
@@ -42,98 +29,40 @@
</div>
</div>
<div class="overviewAndDetails">
- <el-tabs
- v-model="activeName"
- @tab-click="handleClick"
- >
- <el-tab-pane
- label="������"
- name="first"
- >
+ <el-tabs v-model="activeName" @tab-click="handleClick">
+ <el-tab-pane label="������" name="first">
<div>
<div class="tit">
<span>
���������������������������
</span>
- <el-button
- type="primary"
- plain
- size="small"
- style="float: right;"
- @click="ecxport"
- >
+ <el-button type="primary" plain size="small" style="float: right;" @click="ecxport">
������
</el-button>
</div>
<div class="tab">
- <el-table
- :data="tableData"
- border
- max-height="400"
- style="width: 100%"
- :header-cell-style="{
+ <el-table :data="tableData" border max-height="400" style="width: 100%" :header-cell-style="{
background: '#99D4FF', color: '#101111', fontSize: '16px'
- }"
- >
- <el-table-column
- align="center"
- prop="unitName"
- label="������������"
- />
- <el-table-column
- align="center"
- prop="total"
- label="���������"
- />
- <el-table-column
- align="center"
- prop="number"
- label="���������"
- />
- <el-table-column
- align="center"
- prop="unNumber"
- label="���������"
- />
- <el-table-column
- align="center"
- prop="rate"
- label="���������"
- />
- <el-table-column
- align="center"
- prop="deduction"
- label="������"
- />
- <el-table-column
- align="center"
- prop="marks"
- label="������"
- />
- <el-table-column
- align="center"
- prop="totalPoints"
- label="���������"
- />
+ }">
+ <el-table-column align="center" prop="unitName" label="������������" />
+ <el-table-column align="center" prop="total" label="���������" />
+ <el-table-column align="center" prop="number" label="���������" />
+ <el-table-column align="center" prop="unNumber" label="���������" />
+ <el-table-column align="center" prop="rate" label="���������" />
+ <el-table-column align="center" prop="deduction" label="������" />
+ <el-table-column align="center" prop="marks" label="������" />
+ <el-table-column align="center" prop="totalPoints" label="���������" />
</el-table>
</div>
</div>
</el-tab-pane>
- <el-tab-pane
- label="������"
- name="second"
- >
+ <el-tab-pane label="������" name="second">
<div>
<div>
<p style="text-align: center;">
���������������
<el-select v-model="unitId" size="small" placeholder="���������" @change="changeUnitId">
- <el-option
- v-for="item in unitList"
- :key="item.unitId"
- :label="item.unitName"
- :value="item.unitId"
- />
+ <el-option v-for="item in unitList" :key="item.unitId" :label="item.unitName" :value="item.unitId" />
</el-select>
</p>
</div>
@@ -143,18 +72,10 @@
</div>
<div class="caets">
<div>
- <pollutionClassificationEcharts
- v-if="activeName === 'second'"
- ref="leftEcharts"
- :chart-data="chartData"
- />
+ <pollutionClassificationEcharts v-if="activeName === 'second'" ref="leftEcharts" :chart-data="chartData" />
</div>
<div>
- <reportTypeEcharts
- v-if="activeName === 'second'"
- ref="rightEcharts"
- :cylindricality-data="cylindricalityData"
- />
+ <reportTypeEcharts v-if="activeName === 'second'" ref="rightEcharts" :cylindricality-data="cylindricalityData" />
</div>
</div>
</div>
@@ -213,7 +134,7 @@
endTime: this.timeInterval[1],
number: Number(this.searchForm.number)
}
- }).then((res) => {
+ }).then(res => {
this.getOutExcel('������������������.xlsx', res)
})
},
@@ -237,7 +158,9 @@
}
},
unitIdFormatter(val) {
- const data = this.unitList.find(item => item && item.unitId === val.unitId)
+ const data = this.unitList.find(
+ item => item && item.unitId === val.unitId
+ )
return data ? data.unitName : ''
},
changeNumber(val) {
@@ -256,7 +179,7 @@
number: Number(this.searchForm.number),
unitId: this.unitId
}
- }).then((res) => {
+ }).then(res => {
if (res.code === 0) {
this.chartData = []
this.chartData = this.cylindricalityData
@@ -276,7 +199,7 @@
endTime: this.timeInterval[1],
number: Number(this.searchForm.number)
}
- }).then((res) => {
+ }).then(res => {
if (res.code === 0) {
this.responeForm = res.data
this.tableData = res.data.unitView
@@ -292,7 +215,7 @@
this.$request({
url: '/allocation/unit',
method: 'get'
- }).then((res) => {
+ }).then(res => {
this.unitList = res.data
console.log(' JSON.stringify(this.unitList)', this.unitList)
})
@@ -301,7 +224,7 @@
this.$request({
url: '/allocation/contaminate',
method: 'get'
- }).then((res) => {
+ }).then(res => {
this.polluteList = res.data
})
}
@@ -310,16 +233,16 @@
</script>
<style scoped lang="scss">
-$red: url('~@/assets/images/1.jpg') ;
-$orange:url('~@/assets/images/2.png');
-$yellow:url('~@/assets/images/3.jpg');
-$green:url('~@/assets/images/4.png');
+$red: url('~@/assets/images/1.jpg');
+$orange: url('~@/assets/images/2.png');
+$yellow: url('~@/assets/images/3.jpg');
+$green: url('~@/assets/images/4.png');
$bgcolorlist: $red $orange $yellow $green;
.main {
- /deep/ .el-table__row{
- font-size: 18px;
-}
+ /deep/ .el-table__row {
+ font-size: 18px;
+ }
background: #bbbbbb;
min-height: 800px;
padding: 15px 10px;
--
Gitblit v1.8.0