From 9251f709dc2a0d278ef2c0cdd76a244bfefc5784 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Thu, 12 Sep 2024 13:15:53 +0800
Subject: [PATCH] fix: 责任单位修改

---
 src/views/toCarryOutLegislativeReforms/reform/index.vue | 1053 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 844 insertions(+), 209 deletions(-)

diff --git a/src/views/toCarryOutLegislativeReforms/reform/index.vue b/src/views/toCarryOutLegislativeReforms/reform/index.vue
index df6afda..2c2257c 100644
--- a/src/views/toCarryOutLegislativeReforms/reform/index.vue
+++ b/src/views/toCarryOutLegislativeReforms/reform/index.vue
@@ -1,176 +1,297 @@
 <template>
-  <div class="main">
+  <div
+    v-loading="loading"
+    class="main"
+  >
     <div>
-      <searchBar v-if="searchType" :search-type="'reform'" @handleSearch="handleSearch" @handleAdd="handleOpenDialog(null,'add')" />
+      <searchBar
+        v-if="searchType"
+        :search-type="'reform'"
+        :initialization-data="initializationData"
+        @handleSearch="handleSearchBut"
+        @handleAdd="handleOpenDialog(null, 'add')"
+      />
       <newWorkOrder
         v-if="centerDialogVisible"
         ref="newWorkOrder"
+        :is-to-map.sync="isToMap"
         :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="{
-            color: '#101111', fontSize: '16px'
-          }"
-        >
-          <el-table-column
-            type="index"
-            label="������"
-            width="60px"
-            align="center"
-          />
-          <el-table-column
-            align="center"
-          >
-            <template slot="header">
-              <div>������</div>
-              <div>������������</div>
-            </template>
-            <template slot-scope="scope">
-              <div> {{ scope.row.allocationNum }}</div>
-              <div> {{ scope.row.escalationTime }}</div>
+        <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="isNowDonw"
+            >
+              ������
+            </el-button>
+          </div>
+        </div>
 
-            </template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="unitId"
-            label="������������"
-            :formatter="unitIdFormatter"
-          />
-          <el-table-column
-            align="center"
-            prop="polluteType"
-            label="������������"
-            width="120px"
-            :formatter="polluteTypeFormatter"
-          />
-          <el-table-column
-            align="center"
-          >
-            <template slot="header">
-              <div>������������</div>
-              <div>������������</div>
-            </template>
-            <template slot-scope="scope">
-              <div>  {{ dictObj.changeEnum[scope.row.changeType] }}</div>
-              <div v-show="scope.row.changeType && scope.row.changeType===2" :class="[Number(scope.row.residueDay) < 0 ? errorClass : '']">
-                <span v-if="Number(scope.row.residueDay) < 0">
-                  ������ {{ Math.abs(scope.row.residueDay) }}���
-                </span>
-                <span v-else>
-                  {{ scope.row.residueDay }}���
-                </span>
-
+        <div style="position: relative;">
+          <div>
+            <div v-if="sealList.length>0">
+              <div
+                v-for="(item,index) in sealList"
+                :key="index"
+                :style="{'height':item.styleHeight}"
+              >
+                <div
+                  v-if="item.isInvalid===1"
+                  class="yingzhang"
+                >
+                  <div class="seal-red">
+                    ���������
+                  </div>
+                </div>
               </div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="investigationType"
-            label="������������"
-            width="100px"
-            :formatter="investigationTypeFormatter"
-          />
-          <el-table-column
-            align="center"
-            prop="state"
-            width="100px"
-            label="������������"
-          >
-            <template slot-scope="scope">
-              <el-tag v-if="scope.row.state===40" type="success">
-                {{ stateFormatter(scope.row) }}
-              </el-tag>
-              <el-tag v-if="scope.row.state===50" type="danger">
-                {{ stateFormatter(scope.row) }}
-              </el-tag>
-              <el-tag v-if="scope.row.state===9" type="info">
-                {{ stateFormatter(scope.row) }}
-              </el-tag>
-              <el-tag v-if="scope.row.state===20" type="warning">
-                {{ stateFormatter(scope.row) }}
-              </el-tag>
-              <el-tag v-if="scope.row.state===10" type="warning">
-                {{ stateFormatter(scope.row) }}
-              </el-tag>
-              <el-tag v-if="scope.row.state===30" type="warning">
-                {{ stateFormatter(scope.row) }}
-              </el-tag>
-            </template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="isInvalid"
-            label="������������"
-            width="60px"
-            :formatter="isInvalidFormatter"
-          />
-          <el-table-column
-            align="center"
-          >
-            <template slot="header">
-              <div>������������</div>
-              <div>���������</div>
-            </template>
-            <template slot-scope="scope">
-              <div> {{ scope.row.escalationName }}</div>
-              <div> {{ updatUnitIdFormatter(scope.row) }}</div>
-
-            </template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-          >
-            <template slot="header">
-              <div>���������</div>
-              <div>������������</div>
-            </template>
-            <template slot-scope="scope">
-              <div>{{ scope.row.updateName }}</div>
-              <div>{{ scope.row.updateTime }}</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="createTime"
-            width="100px"
-            label="������"
-          >
-            <template slot-scope="scope">
-              <el-button type="text" size="medium" @click="openWorkOrdinDialog(scope.row,'detail')">������</el-button>
-              <el-button v-if="scope.row.state===9" type="text" size="medium" @click="handleOpenDialog(scope.row,'edit')">������</el-button>
-              <el-button v-if="scope.row.state>30&&scope.row.isInvalid===0" type="text" size="medium" @click="handleCancel(scope.row)">������</el-button>
-              <el-button v-if="scope.row.state===20" type="text" size="medium" @click="openWorkOrdinDialog(scope.row,'work')">������</el-button>
-              <el-button v-if="scope.row.state===30" 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>
-            </template>
-          </el-table-column>
-        </el-table>
+            </div>
+          </div>
+          <div style="position: absolute;top:0;width: 100%;">
+            <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">
+                  <div>������</div>
+                  <div>������������</div>
+                </template>
+                <template slot-scope="scope">
+                  <div>{{ scope.row.allocationNum }}</div>
+                  <div>{{ scope.row.escalationTime }}</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                align="center"
+                prop="unitId"
+                label="������������"
+                width="150px"
+                :formatter="unitIdFormatter"
+              />
+              <el-table-column
+                align="center"
+                prop="polluteType"
+                label="������������"
+                width="120px"
+                :formatter="polluteTypeFormatter"
+              />
+              <el-table-column align="center">
+                <template slot="header">
+                  <div>������������</div>
+                  <div>������������</div>
+                </template>
+                <template slot-scope="scope">
+                  <div>{{ dictObj.changeEnum[scope.row.changeType] }}</div>
+                  <div
+                    v-show="scope.row.changeType && scope.row.changeType === 2"
+                    :class="[Number(scope.row.residueDay) < 0 ? errorClass : '']"
+                  >
+                    <span v-if="Number(scope.row.residueDay) < 0">
+                      ������ {{ Math.abs(scope.row.residueDay) }}���
+                    </span>
+                    <span v-else> {{ scope.row.residueDay }}��� </span>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                align="center"
+                prop="investigationType"
+                label="������������"
+                width="100px"
+                :formatter="investigationTypeFormatter"
+              />
+              <el-table-column
+                align="center"
+                prop="state"
+                width="100px"
+                label="������������"
+              >
+                <template slot-scope="scope">
+                  <el-tag
+                    v-if="scope.row.state === 40"
+                    type="success"
+                  >
+                    {{ stateFormatter(scope.row) }}
+                  </el-tag>
+                  <el-tag
+                    v-if="scope.row.state === 50"
+                    type="danger"
+                  >
+                    {{ stateFormatter(scope.row) }}
+                  </el-tag>
+                  <el-tag
+                    v-if="scope.row.state === 9"
+                    type="info"
+                  >
+                    {{ stateFormatter(scope.row) }}
+                  </el-tag>
+                  <el-tag
+                    v-if="scope.row.state === 20"
+                    type="warning"
+                  >
+                    {{ stateFormatter(scope.row) }}
+                  </el-tag>
+                  <el-tag
+                    v-if="scope.row.state === 10"
+                    type="warning"
+                  >
+                    {{ stateFormatter(scope.row) }}
+                  </el-tag>
+                  <el-tag
+                    v-if="scope.row.state === 30"
+                    type="warning"
+                  >
+                    {{ stateFormatter(scope.row) }}
+                  </el-tag>
+                </template>
+              </el-table-column>
+              <!-- <el-table-column align="center" prop="isInvalid" label="������������" width="60px" :formatter="isInvalidFormatter" /> -->
+              <el-table-column
+                align="center"
+                width="150px"
+              >
+                <template slot="header">
+                  <div>������������</div>
+                  <div>���������</div>
+                </template>
+                <template slot-scope="scope">
+                  <div>{{ scope.row.escalationName }}</div>
+                  <div>{{ updatUnitIdFormatter(scope.row) }}</div>
+                </template>
+              </el-table-column>
+              <el-table-column align="center">
+                <template slot="header">
+                  <div>���������</div>
+                  <div>������������</div>
+                </template>
+                <template slot-scope="scope">
+                  <div>{{ scope.row.updateName }}</div>
+                  <div>{{ scope.row.updateTime }}</div>
+                </template>
+              </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
+                    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')"
+                  >
+                    ������
+                  </el-button>
+                  <el-button
+                    v-if="scope.row.state > 30 && scope.row.isInvalid === 0"
+                    type="text"
+                    size="medium"
+                    @click="handleCancel(scope.row)"
+                  >
+                    ������
+                  </el-button>
+                  <el-button
+                    v-if="scope.row.state === 20"
+                    type="text"
+                    size="medium"
+                    @click="openWorkOrdinDialog(scope.row, 'work')"
+                  >
+                    ������
+                  </el-button>
+                  <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>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+        </div>
       </div>
       <div class="pagina">
         <el-pagination
           background
           :current-page="pagination.currentPage"
           :page-sizes="pagination.pageSizes"
-          :page-size="pagination.PageSize"
+          :page-size="pagination.pageSize"
           :total="pagination.totalCount"
-          layout="sizes,prev, pager, next, jumper"
+          layout="total, sizes, prev, pager, next, jumper"
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
         />
       </div>
     </div>
-    <workOrderInformation v-if="workOrdinDialogVisible" :dialog-data="dialogData" :visible.sync="workOrdinDialogVisible" @handeleSumit="handeleSumit" />
+    <workOrderInformation
+      v-if="workOrdinDialogVisible"
+      :dialog-data="dialogData"
+      :is-to-map.sync="isToMap"
+      :visible.sync="workOrdinDialogVisible"
+      @handeleSumit="handeleSumit"
+    />
     <el-dialog
       title="������"
       :visible.sync="dialogVisible"
@@ -180,36 +301,205 @@
     >
       <div>
         <el-form label-width="100px">
-          <el-form-item label="���������������" style="margin-right: 30px;">
+          <el-form-item
+            label="���������������"
+            style="margin-right: 30px"
+          >
             <el-input
               v-model="invalidReason"
               type="textarea"
-              :autosize="{ minRows: 2, maxRows: 10}"
+              :autosize="{ minRows: 2, maxRows: 10 }"
               placeholder="���������������"
             />
           </el-form-item>
         </el-form>
       </div>
-      <span slot="footer" class="dialog-footer">
+      <span
+        slot="footer"
+        class="dialog-footer"
+      >
         <el-button @click="handleClose">��� ���</el-button>
-        <el-button type="primary" @click="handleInvalid">��� ���</el-button>
+        <el-button
+          type="primary"
+          @click="handleInvalid"
+        >��� ���</el-button>
       </span>
     </el-dialog>
+    <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 }}
+          </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>
+      <el-divider />
+      <div>
+        <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="���������"
+            >
+              <el-option
+                v-for="item in unitList"
+                :key="item.unitId"
+                :label="item.unitName"
+                :value="item.unitId"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="������������:">
+            <el-select
+              v-model="formInEdit.polluteType"
+              size="small"
+              clearable
+              placeholder="���������"
+            >
+              <el-option
+                v-for="item in polluteList"
+                :key="item.dataKey"
+                :label="item.dataValue"
+                :value="item.dataKey"
+              />
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-collapse>
+        <el-collapse-item
+          title="������������"
+          name="1"
+        >
+          <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>
+              </el-timeline-item>
+            </el-timeline>
+          </div>
+        </el-collapse-item>
+      </el-collapse>
+
+      <span
+        slot="footer"
+        class="dialog-footer"
+      >
+        <el-button @click="handleClose">��� ���</el-button>
+        <el-button
+          type="primary"
+          @click="handleEditChange"
+        >��� ���</el-button>
+      </span>
+    </el-dialog>
+    <mapContainer
+      v-if="isToMap"
+      :visible.sync="isToMap"
+      @addressAndLnt="getaddressAndLnt"
+    />
   </div>
 </template>
 
 <script>
+// import { mixins } from './downLoadNotice'
+import axios from 'axios'
+import _ from 'lodash'
+import qs from 'qs'
 import searchBar from '@/views/toCarryOutLegislativeReforms/components/queryForm'
+import mapContainer from '@/views/toCarryOutLegislativeReforms/components/locationMap'
 import newWorkOrder from '@/views/toCarryOutLegislativeReforms/components/newWorkOrder'
 import workOrderInformation from '@/views/toCarryOutLegislativeReforms/components/workOrderInformation'
 export default {
   components: {
     searchBar,
     newWorkOrder,
+    mapContainer,
     workOrderInformation
   },
-  data() {
+  // mixins: [mixins],
+  data () {
     return {
+      loading: false,
+      isToMap: false,
+      selectionRows: [],
+      position: [],
       errorClass: 'errorClass',
       searchType: 'reform',
       pagination: {
@@ -217,13 +507,12 @@
         // ������������������������������������������(���������������������������)
         totalCount: 0,
         // ������������������������������
-        pageSizes: [10, 20, 30, 40],
+        pageSizes: [10, 50, 100, 200],
         // ������������������������������������������
         pageSize: 10
       },
       formData: {},
-      tableData: [
-      ],
+      tableData: [],
       dialogData: {
         title: '������',
         parentFormData: {},
@@ -233,32 +522,278 @@
       workOrdinDialogVisible: false,
       centerDialogVisible: false,
       dialogVisible: false,
+      dialogEditVisible: false,
       unitList: [],
       polluteList: [],
       Dic: JSON.parse(localStorage.getItem('dict')),
       dictObj: JSON.parse(localStorage.getItem('dictObj')),
       parentFormData: {},
       pageState: 'add',
+      mapType: 'edit',
       invalidReason: '',
+      address: '',
       slectRow: {},
-      title: ''
+      title: '',
+      searchData: {
+        isInvalid: 0
+      },
+      editEscalationUnitData: {},
+      formInEdit: {
+        polluteType: '',
+        unitId: ''
+      },
+      operatingLog: [],
+      sealList: []
     }
   },
-
-  created() {
-    this.handleSearch()
+  computed: {
+    updataEscalationUnitIdFormatter: function () {
+      const data = this.unitList.find(
+        item =>
+          item && item.unitId === this.editEscalationUnitData.escalationUnitId
+      )
+      return data ? data.unitName : ''
+    },
+    updataUnitIdFormatter: function () {
+      const data = this.unitList.find(
+        item => item && item.unitId === this.editEscalationUnitData.unitId
+      )
+      return data ? data.unitName : ''
+    },
+    polluteTypeeDITFormatter: function () {
+      const data = this.polluteList.find(
+        item =>
+          item &&
+          parseInt(item.dataKey) === this.editEscalationUnitData.polluteType
+      )
+      return data ? data.dataValue : ''
+    },
+    initializationData () {
+      return this.$route.query
+    }
+  },
+  watch: {
+    isToMap (newVal, oldVal) {
+      this.isToMap = newVal
+    }
+  },
+  created () {
+    if (Object.entries(this.$route.query).length === 0) {
+      this.handleSearch({ isInvalid: 0, state: [9, 20, 30] })
+    } else {
+      let state = []
+      let changeType = null
+      let startTime = this.initializationData.startTime
+      let endTime = this.initializationData.endTime
+      if (this.initializationData.type === 'total') {
+        state = []
+      } else if (this.initializationData.type === 'unComplete') {
+        state = [9, 20, 30]
+      } else if (this.initializationData.type === 'complete') {
+        state = [40]
+      } else if (this.initializationData.type === 'overdue') {
+        state = []
+        changeType = 2
+      }
+      this.handleSearch({ isInvalid: 0, state: state, changeType: changeType, startTime: startTime, endTime: endTime })
+    }
     this.getUnitList()
     this.getContaminateList()
   },
+  // mounted () {
+  //   console.log('this.$route.query', this.$route.query)
+  //   this.initializationData = this.$route.query
+  // },
   methods: {
-    handleCancel(row) {
+    getaddressAndLnt (position, address) {
+      if (this.mapType === 'edit') {
+        this.$refs.newWorkOrder.formData.pollutePosition = address
+        this.position = position
+      }
+    },
+    handleSelectionChange (rows) {
+      console.log(rows)
+      this.selectionRows = rows
+    },
+    isNowDonw () {
+      this.$confirm('������������������������������?', '������', {
+        confirmButtonText: '������������',
+        cancelButtonText: '������������',
+        distinguishCancelAndClose: true,
+        type: 'warning'
+      })
+        .then(() => {
+          this.loading = true
+          this.exportData()
+        })
+        .catch(action => {
+          if (action === 'cancel') {
+            this.loading = false
+            this.exportData()
+          } else {
+            this.loading = false
+          }
+        })
+    },
+    exportData () {
+      // this.dowOrgFile('���������������.xlsx')
+      let that = this
+      const CancelToken = axios.CancelToken
+      let cancel
+      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',
+        responseType: 'blob',
+        params: {
+          id: this.selectionRows.map(item => item.allocationId)
+        },
+        cancelToken: new CancelToken(function executor (c) {
+          cancel = c
+        }),
+        onDownloadProgress (progress) {
+          console.log('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
+          })
+        }
+      })
+        .then(res => {
+          clearTimeout(timer)
+          console.log('������������', res)
+          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)
+          }
+        })
+        .catch(err => {
+          clearTimeout(timer)
+          console.log('������������', err)
+          this.loading = false
+        })
+    },
+    getOutExcel (fileName, res) {
+      const blob = new Blob([res], { type: 'application/x-xls' })
+      if (window.navigator.msSaveOrOpenBlob) {
+        // ������ IE & EDGE
+        this.loading = false
+        navigator.msSaveBlob(blob, fileName)
+      } else {
+        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({
+          showClose: true,
+          duration: 0,
+          message: '���������������',
+          type: 'success'
+        })
+        this.loading = false
+      }
+    },
+    openEditDialog (row) {
+      this.editEscalationUnitData = row
+      this.dialogEditVisible = true
+      this.$request({
+        url: '/allocation/getLog',
+        method: 'get',
+        params: {
+          allocationNum: this.editEscalationUnitData.allocationNum
+        }
+      })
+        .then(res => {
+          this.operatingLog = res.data
+        })
+        .catch(err => {
+          this.$message.error(err.message)
+          console.log('������Region������')
+          console.log(err)
+        })
+    },
+    handleCancel (row) {
       this.dialogVisible = true
       this.slectRow = row
     },
-    handleClose() {
+    handleClose () {
       this.dialogVisible = false
+      this.dialogEditVisible = false
     },
-    handleInvalid() {
+    handleEditChange () {
+      if (this.formInEdit.polluteType === '' && this.formInEdit.unitId === '') {
+        this.$message({
+          message: '���������������������',
+          type: 'error'
+        })
+        return
+      }
+      this.$request({
+        url: '/allocation/updataUnit',
+        method: 'get',
+        params: {
+          id: this.editEscalationUnitData.allocationId,
+          ...this.formInEdit
+        }
+      })
+        .then(res => {
+          if (res.code === 0) {
+            this.$message({
+              message: '������������',
+              type: 'success'
+            })
+            this.dialogEditVisible = false
+            this.formInEdit = {
+              polluteType: '',
+              unitId: ''
+            }
+            this.handleSearch()
+          }
+        })
+        .catch(err => {
+          this.$message.error(err.message)
+          console.log('������Region������')
+          console.log(err)
+        })
+    },
+    handleInvalid () {
       this.$request({
         url: '/allocation/invalid',
         method: 'get',
@@ -266,7 +801,7 @@
           id: this.slectRow.allocationId,
           invalidReason: this.invalidReason
         }
-      }).then((res) => {
+      }).then(res => {
         if (res.code === 0) {
           this.$message({
             message: '������������',
@@ -279,12 +814,13 @@
       })
     },
     // ������
-    handleOpenDialog(row, type) {
+    handleOpenDialog (row, type) {
       this.pageState = type
       this.parentFormData = {}
       if (type === 'add') {
         this.title = '���������������'
         this.centerDialogVisible = true
+        this.mapType = 'edit'
       } else {
         this.title = '���������������'
         this.$request({
@@ -293,41 +829,46 @@
           params: {
             id: row.allocationId
           }
-        }).then((res) => {
+        }).then(res => {
           this.parentFormData = res.data
           console.log(this.parentFormData)
           this.centerDialogVisible = true
         })
       }
     },
-    updatUnitIdFormatter(val) {
-      const data = this.unitList.find(item => item && item.unitId === val.escalationUnitId)
+    updatUnitIdFormatter (val) {
+      const data = this.unitList.find(
+        item => item && item.unitId === val.escalationUnitId
+      )
       return data ? data.unitName : ''
     },
-    unitIdFormatter(val) {
-      const data = this.unitList.find(item => item && item.unitId === val.unitId)
+    unitIdFormatter (val) {
+      const data = this.unitList.find(
+        item => item && item.unitId === val.unitId
+      )
       return data ? data.unitName : ''
     },
-    polluteTypeFormatter(val) {
-      const data = this.polluteList.find(item => item && parseInt(item.dataKey) === val.polluteType)
+    polluteTypeFormatter (val) {
+      const data = this.polluteList.find(
+        item => item && parseInt(item.dataKey) === val.polluteType
+      )
       return data ? data.dataValue : ''
     },
-    investigationTypeFormatter(val) {
+    investigationTypeFormatter (val) {
       return this.dictObj.investigationEnum[val.investigationType]
     },
-    stateFormatter(val) {
-      console.log('valval', val)
+    stateFormatter (val) {
       return this.dictObj.allocationApproveEnum[val.state]
     },
-    isInvalidFormatter(val) {
+    isInvalidFormatter (val) {
       return this.dictObj.yesOrNo[val.isInvalid]
     },
     // ������������������list
-    getUnitList() {
+    getUnitList () {
       this.$request({
         url: '/allocation/unit',
         method: 'get'
-      }).then((res) => {
+      }).then(res => {
         if (res.code === 0) {
           this.unitList = res.data
         } else {
@@ -335,11 +876,11 @@
         }
       })
     },
-    getContaminateList() {
+    getContaminateList () {
       this.$request({
         url: '/allocation/contaminate',
         method: 'get'
-      }).then((res) => {
+      }).then(res => {
         if (res.code === 0) {
           this.polluteList = res.data
         } else {
@@ -347,11 +888,11 @@
         }
       })
     },
-    handeleSumit() {
+    handeleSumit () {
       this.handleSearch()
     },
     // ������
-    newHandleSubmit(obj) {
+    newHandleSubmit (obj) {
       console.log(obj)
       console.log(this.parentFormData)
       let api = '/allocation/insert'
@@ -359,13 +900,21 @@
         api = '/allocation/update'
         // obj.fileBaseList = [...this.parentFormData.fileBaseList, ... obj.fileBaseList]
       }
+      let latitude = ''
+      let longitude = ''
+      if (this.position.length > 0) {
+        latitude = this.position[1]
+        longitude = this.position[0]
+      }
       this.$request({
         url: api,
         method: 'post',
         data: {
+          'latitude': latitude,
+          'longitude': longitude,
           ...obj
         }
-      }).then((res) => {
+      }).then(res => {
         if (res.code === 0) {
           this.centerDialogVisible = false
 
@@ -375,18 +924,49 @@
         }
       })
     },
-    handleSearch(obj) {
+    handleSearchBut (obj) {
+      const pageSize = this.pagination.pageSize
+      this.pagination = {
+        currentPage: 1,
+        // ������������������������������������������(���������������������������)
+        totalCount: 0,
+        // ������������������������������
+        pageSizes: [10, 50, 100, 200],
+        // ������������������������������������������
+        pageSize: pageSize
+      }
+      this.handleSearch(obj)
+    },
+    handleSearch (obj) {
+      this.selectionRows = []
+      if (obj) {
+        this.searchData = obj
+      }
       this.$request({
         url: '/allocation/page',
         method: 'post',
         data: {
-          ...obj,
-          'page': this.pagination
+          ...this.searchData,
+          page: this.pagination
         }
-      }).then((res) => {
+      }).then(res => {
         if (res.code === 0) {
           this.tableData = res.data.list
+          this.sealList = _.cloneDeep(res.data.list) || []
+          this.sealList.unshift({ isInvalid: 0 })
+          this.sealList.forEach(item => {
+            item.styleHeight = null
+          })
           this.pagination.totalCount = res.data.page.totalNum
+          this.$nextTick(() => {
+            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()
+          })
         } else {
           this.$message.error(res.message)
         }
@@ -394,26 +974,30 @@
     },
     // ������
     // ���������������������
-    handleSizeChange(val) {
+    handleSizeChange (val) {
       // ���������������������������
-      this.pagination.PageSize = val
+      console.log('345')
+      this.pagination.pageSize = val
       // ���������������������������������������������������������������������������
       this.pagination.currentPage = 1
+      this.handleSearch()
     },
     // ���������������
-    handleCurrentChange(val) {
+    handleCurrentChange (val) {
       // ���������������������
+      console.log('123')
       this.pagination.currentPage = val
+      this.handleSearch()
       // console.log(val)
     },
-    openWorkOrdinDialog(row, type) {
+    openWorkOrdinDialog (row, type) {
       this.$request({
         url: '/allocation/detail',
         method: 'get',
         params: {
           id: row.allocationId
         }
-      }).then((res) => {
+      }).then(res => {
         this.parentFormData = res.data
         this.workOrdinDialogVisible = true
         if (type === 'work') {
@@ -433,8 +1017,11 @@
             sysCode: '1010203'
           }
         } else if (type === 'detail') {
+          this.mapType = 'view'
+          this.position = [res.data.longitude, res.data.latitude]
+          this.address = res.data.pollutePosition
           this.dialogData = {
-            title: '���������',
+            title: '���������������',
             parentFormData: res.data,
             pageType: 'detail'
           }
@@ -454,17 +1041,18 @@
 </script>
 
 <style scoped lang="scss">
-.main{
-    padding: 20px;
-    padding-top: 0px;
-    height: 100%;
-    overflow: overlay;
+.main {
+  padding: 20px;
+  padding-top: 0px;
+  height: 100%;
+  overflow: overlay;
 }
 .tab {
-    margin-top: 0px;
-   /deep/ .el-tag{
-      font-size: 16px;
-    }
+  min-height: 160px;
+  margin-top: 0px;
+  /deep/ .el-tag {
+    font-size: 16px;
+  }
 }
 // /deep/ .el-table__body-wrapper {
 //     overflow: scroll;
@@ -472,22 +1060,69 @@
 //     overflow-x: hidden;
 //     max-height: 400px;
 // }
-.pagina{
-    margin-top: 10px;
+.pagina {
+  margin-top: 10px;
 }
-/deep/ .el-table__row{
+/deep/ .el-table__row {
   font-size: 18px;
 }
 .el-pagination {
   padding: 0;
-  .el-select{
-    /deep/.el-input{
-      margin:0;
+  .el-select {
+    /deep/.el-input {
+      margin: 0;
     }
   }
-
 }
-.errorClass{
+.errorClass {
   color: red;
 }
+.editTile {
+  color: #303133;
+  font-size: 16px;
+  font-weight: 700;
+}
+/deep/.el-collapse-item__header {
+  color: #303133;
+  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;
+}
+.yingzhang {
+  position: relative;
+
+  .seal-red {
+    position: absolute;
+    left: 85px;
+    top: 18px;
+    z-index: 999;
+    // top: -85px;
+    display: inline-block;
+    border: solid 2px #e93e00;
+    border-radius: 0.2em;
+    color: #e24c06;
+    font-size: 19px;
+    line-height: 1;
+    opacity: 0;
+    padding: 0.1em 0.5em;
+    text-transform: uppercase;
+    opacity: 0;
+    transform: rotate(-2deg) scale(5);
+    animation: seal 0.3s cubic-bezier(0.6, 0.04, 0.98, 0.335) forwards;
+  }
+
+  @keyframes seal {
+    100% {
+      opacity: 0.75;
+      transform: rotate(-15deg) scale(1);
+    }
+  }
+}
 </style>

--
Gitblit v1.8.0