quanyawei
2024-09-06 43bd29ccb06c689327edd88cf32be659c9abc0a5
src/views/toCarryOutLegislativeReforms/components/queryForm.vue
@@ -1,53 +1,146 @@
<template>
  <div>
    <div class="search-form">
      <el-form :inline="true" :model="formData" class="demo-form-inline">
      <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-input
            v-model="formData.allocationNum"
            placeholder="请输入单号"
            size="small"
            clearable
          />
        </el-form-item>
        <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-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-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="责任主体:" class="rddd">
          <el-select v-model="formData.unitId" size="small" clearable multiple collapse-tags placeholder="请选择">
            <el-option v-for="item in unitList" :key="item.unitId" :label="item.unitName" :value="item.unitId" />
          </el-select>
        <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 multiple collapse-tags placeholder="请选择">
            <el-option v-for="item in polluteList" :key="item.dataKey" :label="item.dataValue" :value="item.dataKey" />
          <el-select
            v-model="formData.polluteType"
            size="small"
            clearable
            multiple
            collapse-tags
            placeholder="请选择"
          >
            <el-option
              v-for="item in polluteList"
              :key="item.dataKey"
              :label="item.dataValue"
              :value="item.dataKey"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="排查方式:">
          <el-select v-model="formData.investigationType" size="small" clearable placeholder="请选择">
            <el-option v-for="item in Dic.investigationEnum" :key="item.value" :label="item.name" :value="item.value" />
          <el-select
            v-model="formData.investigationType"
            size="small"
            clearable
            placeholder="请选择"
          >
            <el-option
              v-for="item in Dic.investigationEnum"
              :key="item.value"
              :label="item.name"
              :value="item.value"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="整改类型:">
          <el-select v-model="formData.changeType" placeholder="请选择" clearable size="small">
            <el-option v-for="item in Dic.changeEnum" :key="item.value" :label="item.name" :value="item.value" />
          <el-select
            v-model="formData.changeType"
            placeholder="请选择"
            clearable
            size="small"
          >
            <el-option
              v-for="item in Dic.changeEnum"
              :key="item.value"
              :label="item.name"
              :value="item.value"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="流程状态:">
          <el-select v-model="formData.state" size="small" clearable 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
            v-model="formData.state"
            size="small"
            clearable
            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 label="是否作废:">
          <el-select v-model="formData.isInvalid " placeholder="请选择" clearable size="small" @change="replacePerChange($event)">
            <el-option v-for="item in Dic.yesOrNo" :key="item.value" :label="item.name" :value="item.value" />
          <el-select
            v-model="formData.isInvalid"
            placeholder="请选择"
            clearable
            size="small"
            @change="replaceIsInvalid($event)"
          >
            <el-option
              v-for="item in Dic.yesOrNo"
              :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 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>
@@ -59,10 +152,10 @@
  props: {
    searchType: { type: String, default: '' }
  },
  data() {
  data () {
    return {
      formData: {
        isInvalid: 0,
        isInvalid: null,
        state: [9, 20, 30]
      },
      unitList: [],
@@ -73,21 +166,45 @@
    }
  },
  created() {
  created () {
    this.getUnitList()
    this.formData.isInvalid = 0
    this.getContaminateList()
  },
  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
        this.unitList = this.removeEmptyArrays(res.data)
      })
    },
    getContaminateList() {
    getContaminateList () {
      this.$request({
        url: '/allocation/contaminate',
        method: 'get'
@@ -95,14 +212,18 @@
        this.polluteList = res.data
      })
    },
    replacePerChange(val) {
    replaceIsInvalid (val) {
      this.formData.isInvalid = val
      this.$forceUpdate()
    },
    onSubmit() {
    replacePerChange (val) {
      this.$forceUpdate()
    },
    onSubmit () {
      console.log('formData', this.formData)
      this.$emit('handleSearch', this.formData)
    },
    handleAdd() {
    handleAdd () {
      this.$emit('handleAdd', '12122')
    }
  }
@@ -117,7 +238,7 @@
    right: 20;
  }
  /deep/ .el-form-item__content {
    width: auto;
    width: 214px;
  }
}
/deep/.el-form-item__label {
@@ -126,4 +247,5 @@
/deep/.el-form-item {
  margin-bottom: 5px;
}
</style>