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