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/components/queryForm.vue |  245 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 178 insertions(+), 67 deletions(-)

diff --git a/src/views/toCarryOutLegislativeReforms/components/queryForm.vue b/src/views/toCarryOutLegislativeReforms/components/queryForm.vue
index 2e8e7df..3b2e88e 100644
--- a/src/views/toCarryOutLegislativeReforms/components/queryForm.vue
+++ b/src/views/toCarryOutLegislativeReforms/components/queryForm.vue
@@ -1,29 +1,63 @@
 <template>
   <div>
     <div class="search-form">
-      <el-form :inline="true" :model="formData" class="demo-form-inline">
-        <el-form-item label="���������������">
-          <el-select v-model="formData.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
+        :inline="true"
+        :model="formData"
+        class="demo-form-inline"
+      >
+        <el-form-item label="���������������">
+          <el-input
+            v-model="formData.allocationNum"
+            placeholder="���������������"
+            size="small"
+            clearable
+          />
         </el-form-item>
-        <el-form-item v-if="searchType==='reform'" label="���������������">
-          <el-select v-model="formData.state" size="small" clearable placeholder="���������">
-            <el-option
-              v-for="item in Dic.allocationApproveEnum"
-              :key="item.value"
-              :label="item.name"
-              :value="item.value"
-            />
-          </el-select>
+
+        <el-form-item label="���������������">
+          <el-date-picker
+            v-model="formData.startTime"
+            style="width:92%"
+            size="small"
+            value-format="yyyy-MM-dd"
+            type="date"
+            placeholder="������������"
+          />
+        </el-form-item>
+        <el-form-item label="���������������">
+          <el-date-picker
+            v-model="formData.endTime"
+            style="width:92%"
+            size="small"
+            value-format="yyyy-MM-dd"
+            type="date"
+            placeholder="������������"
+          />
+        </el-form-item>
+
+        <el-form-item
+          label="���������������"
+        >
+          <el-cascader
+            size="small"
+            collapse-tags
+            class="searchUid"
+            :show-all-levels="false"
+            :options="unitList"
+            :props="{ multiple: true, value:'unitId',label:'unitName',children:'children'}"
+            @change="changeUid"
+          />
         </el-form-item>
         <el-form-item label="���������������">
-          <el-select v-model="formData.polluteType" size="small" clearable placeholder="���������">
+          <el-select
+            v-model="formData.polluteType"
+            size="small"
+            clearable
+            multiple
+            collapse-tags
+            placeholder="���������"
+          >
             <el-option
               v-for="item in polluteList"
               :key="item.dataKey"
@@ -33,7 +67,12 @@
           </el-select>
         </el-form-item>
         <el-form-item label="���������������">
-          <el-select v-model="formData.investigationType" size="small" clearable placeholder="���������">
+          <el-select
+            v-model="formData.investigationType"
+            size="small"
+            clearable
+            placeholder="���������"
+          >
             <el-option
               v-for="item in Dic.investigationEnum"
               :key="item.value"
@@ -42,8 +81,14 @@
             />
           </el-select>
         </el-form-item>
+
         <el-form-item label="���������������">
-          <el-select v-model="formData.changeType" placeholder="���������" clearable size="small">
+          <el-select
+            v-model="formData.changeType"
+            placeholder="���������"
+            clearable
+            size="small"
+          >
             <el-option
               v-for="item in Dic.changeEnum"
               :key="item.value"
@@ -52,19 +97,33 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="���������������">
-          <el-date-picker
-            v-model="valueTime"
+        <el-form-item label="���������������">
+          <el-select
+            v-model="formData.state"
+            size="small"
             clearable
-            type="daterange"
-            value-format="yyyy-MM-dd"
-            range-separator="���"
-            start-placeholder="������������"
-            end-placeholder="������������"
-          />
+            multiple
+            collapse-tags
+            placeholder="���������"
+            @change="replacePerChange($event)"
+          >
+            <el-option
+              v-for="item in Dic.allocationApproveEnum"
+              :key="item.value"
+              :label="item.name"
+              :value="item.value"
+            />
+          </el-select>
         </el-form-item>
-        <el-form-item v-if="searchType==='reform'" label="���������������">
-          <el-select v-model="formData.isInvalid " placeholder="���������" clearable size="small">
+
+        <el-form-item label="���������������">
+          <el-select
+            v-model="formData.isInvalid"
+            placeholder="���������"
+            clearable
+            size="small"
+            @change="replaceIsInvalid($event)"
+          >
             <el-option
               v-for="item in Dic.yesOrNo"
               :key="item.value"
@@ -73,19 +132,15 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item v-if="searchType==='delay'" label="���������������">
-          <el-select v-model="formData.state" placeholder="���������" clearable size="small">
-            <el-option
-              v-for="item in Dic.allocationExtensionApproveEnum"
-              :key="item.value"
-              :label="item.name"
-              :value="item.value"
-            />
-          </el-select>
-        </el-form-item>
         <el-form-item>
-          <el-button type="primary" size="small" @click="onSubmit">������</el-button>
-          <el-button v-if="searchType==='reform'" type="primary" size="small" @click="handleAdd">������</el-button>
+          <el-button
+            type="primary"
+            size="small"
+            @click="onSubmit"
+          >
+            ������
+          </el-button>
+          <!-- <el-button type="primary" size="small" @click="handleAdd">������</el-button> -->
         </el-form-item>
       </el-form>
     </div>
@@ -95,11 +150,15 @@
 <script>
 export default {
   props: {
-    searchType: { type: String, default: '' }
+    searchType: { type: String, default: '' },
+    initializationData: { type: Object, default: () => {} }
   },
-  data() {
+  data () {
     return {
-      formData: {},
+      formData: {
+        isInvalid: null,
+        state: [9, 20, 30]
+      },
       unitList: [],
       Dic: JSON.parse(localStorage.getItem('dict')),
       polluteList: [],
@@ -108,37 +167,79 @@
     }
   },
 
-  created() {
+  created () {
     this.getUnitList()
+    this.formData.isInvalid = 0
     this.getContaminateList()
-    console.log('searchType', this.searchType)
+    if (Object.entries(this.initializationData).length !== 0) {
+      this.formData.startTime = this.initializationData.startTime
+      this.formData.endTime = this.initializationData.endTime
+      // total ������������ unComplete ��������� complete ��������� overdue ������
+      if (this.initializationData.type === 'total') {
+        this.formData.state = []
+      } else if (this.initializationData.type === 'unComplete') {
+        this.formData.state = [9, 20, 30]
+      } else if (this.initializationData.type === 'complete') {
+        this.formData.state = [40]
+      } else if (this.initializationData.type === 'overdue') {
+        this.formData.state = []
+        this.formData.changeType = 2
+      }
+    }
   },
   methods: {
+    changeUid (val) {
+      this.formData.unitId = this.uniqueArrayReduce(val)
+    },
+    uniqueArrayReduce (arrays) {
+      return arrays.reduce((acc, curr) => {
+        return acc.concat(curr.filter(item => !acc.includes(item)))
+      }, [])
+    },
+    removeEmptyArrays (obj) {
+      if (Array.isArray(obj)) {
+        return obj
+          .map(item => this.removeEmptyArrays(item)) // ������������������������
+          .filter(item => !Array.isArray(item) || item.length > 0) // ���������������
+      } else if (typeof obj === 'object' && obj !== null) {
+        Object.keys(obj).forEach(key => {
+          obj[key] = this.removeEmptyArrays(obj[key]) // ������������������������
+          if (Array.isArray(obj[key]) && obj[key].length === 0) {
+            delete obj[key] // ���������������������
+          }
+        })
+      }
+      return obj
+    },
     // ������������������list
-    getUnitList() {
+    getUnitList () {
       this.$request({
-        url: '/allocation/unit',
+        url: '/allocation/unitQuery',
         method: 'get'
-      }).then((res) => {
-        this.unitList = res.data
+      }).then(res => {
+        this.unitList = this.removeEmptyArrays(res.data)
       })
     },
-    getContaminateList() {
+    getContaminateList () {
       this.$request({
         url: '/allocation/contaminate',
         method: 'get'
-      }).then((res) => {
+      }).then(res => {
         this.polluteList = res.data
       })
     },
-    onSubmit() {
-      if (this.valueTime.length > 0) {
-        this.formData.endTime = this.valueTime[1]
-        this.formData.startTime = this.valueTime[0]
-      }
+    replaceIsInvalid (val) {
+      this.formData.isInvalid = val
+      this.$forceUpdate()
+    },
+    replacePerChange (val) {
+      this.$forceUpdate()
+    },
+    onSubmit () {
+      console.log('formData', this.formData)
       this.$emit('handleSearch', this.formData)
     },
-    handleAdd() {
+    handleAdd () {
       this.$emit('handleAdd', '12122')
     }
   }
@@ -147,10 +248,20 @@
 
 <style scoped lang="scss">
 .search-form {
-    margin: 20px;
-
-    /deep/.el-select {
-        width: 120px;
-    }
+  margin: 20px;
+  margin-bottom: 0px;
+  /deep/ .el-input__suffix {
+    right: 20;
+  }
+  /deep/ .el-form-item__content {
+    width: 214px;
+  }
 }
+/deep/.el-form-item__label {
+  font-size: 16px;
+}
+/deep/.el-form-item {
+  margin-bottom: 5px;
+}
+
 </style>

--
Gitblit v1.8.0