浏览代码

Merge branch 'zdsz3.0' of http://192.168.10.18:3000/sunwei/zdsz_vue into zdsz3.0

付宇航 1 年之前
父节点
当前提交
721f40cd1e
共有 39 个文件被更改,包括 2684 次插入2669 次删除
  1. 15 0
      src/api/zdsz/area.js
  2. 17 0
      src/api/zdsz/building.js
  3. 5 5
      src/api/zdsz/comprehensive.js
  4. 0 44
      src/api/zdsz/engiineeringPhoto.js
  5. 50 0
      src/api/zdsz/enginMaterialQuality.js
  6. 53 0
      src/api/zdsz/enginSpecifications.js
  7. 0 44
      src/api/zdsz/engineeringCivil.js
  8. 0 44
      src/api/zdsz/engineeringInfo.js
  9. 44 0
      src/api/zdsz/engineeringInfrastructure.js
  10. 0 44
      src/api/zdsz/engineeringMaterial.js
  11. 0 44
      src/api/zdsz/engineeringNode.js
  12. 0 44
      src/api/zdsz/engineeringReview.js
  13. 10 0
      src/api/zdsz/house.js
  14. 0 44
      src/api/zdsz/materialStatistics.js
  15. 11 0
      src/api/zdsz/unit.js
  16. 1 1
      src/components/HeaderSearch/index.vue
  17. 224 0
      src/components/ObsImageUpload/index.vue
  18. 10 10
      src/layout/components/Navbar.vue
  19. 2 0
      src/main.js
  20. 0 104
      src/views/index.vue
  21. 27 29
      src/views/zdsz/area/index.vue
  22. 55 32
      src/views/zdsz/building/index.vue
  23. 0 325
      src/views/zdsz/comprehensive/index.vue
  24. 94 57
      src/views/zdsz/engineeringNode/index.vue
  25. 93 67
      src/views/zdsz/engiineeringPhoto/index.vue
  26. 0 5
      src/views/zdsz/enginee/index.vue
  27. 0 68
      src/views/zdsz/enginee/material/index.vue
  28. 0 32
      src/views/zdsz/enginee/visual_house/index.vue
  29. 0 358
      src/views/zdsz/engineeringCivil/index.vue
  30. 0 451
      src/views/zdsz/engineeringInfo/index.vue
  31. 123 77
      src/views/zdsz/engineeringReview/index.vue
  32. 0 320
      src/views/zdsz/engineeringMaterial/index.vue
  33. 90 19
      src/views/zdsz/engineeringMaterialsResets/index.vue
  34. 175 47
      src/views/zdsz/house/index.vue
  35. 0 320
      src/views/zdsz/materialStatistics/index.vue
  36. 501 0
      src/views/zdsz/openbolt/index.vue
  37. 496 0
      src/views/zdsz/opencheck/index.vue
  38. 496 0
      src/views/zdsz/openrepair/index.vue
  39. 92 34
      src/views/zdsz/unit/index.vue

+ 15 - 0
src/api/zdsz/area.js

@@ -1,5 +1,13 @@
 import request from '@/utils/request'
 
+// 小区下拉
+export function getAreaList(query) {
+  return request({
+    url: '/zdsz/area/getAreaList',
+    method: 'get',
+    params: query
+  })
+}
 // 查询小区管理列表
 export function listArea(query) {
   return request({
@@ -42,3 +50,10 @@ export function delArea(id) {
     method: 'delete'
   })
 }
+export function getAreas() {
+  return request({
+    url: '/zdsz/area/getAreaList/',
+    method: 'get',
+    params:{district:''}
+  })
+}

+ 17 - 0
src/api/zdsz/building.js

@@ -1,5 +1,13 @@
 import request from '@/utils/request'
 
+// 楼宇下拉
+export function getBuildingList(query) {
+  return request({
+    url: '/zdsz/building/getBuildingList',
+    method: 'get',
+    params: query
+  })
+}
 // 查询楼栋管理列表
 export function listBuilding(query) {
   return request({
@@ -42,3 +50,12 @@ export function delBuilding(id) {
     method: 'delete'
   })
 }
+export function getBuildings(areaId) {
+  return request({
+    url: '/zdsz/building/getBuildingList',
+    method: 'GET',
+    params:{
+      areaId:areaId
+    }
+  })
+}

+ 5 - 5
src/api/zdsz/comprehensive.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 查询开栓|安检|维修列表
 export function listComprehensive(query) {
   return request({
-    url: '/zdsz/comprehensive/list',
+    url: '/zdsz/openbolt/list',
     method: 'get',
     params: query
   })
@@ -12,7 +12,7 @@ export function listComprehensive(query) {
 // 查询开栓|安检|维修详细
 export function getComprehensive(id) {
   return request({
-    url: '/zdsz/comprehensive/' + id,
+    url: '/zdsz/openbolt/' + id,
     method: 'get'
   })
 }
@@ -20,7 +20,7 @@ export function getComprehensive(id) {
 // 新增开栓|安检|维修
 export function addComprehensive(data) {
   return request({
-    url: '/zdsz/comprehensive',
+    url: '/zdsz/openbolt',
     method: 'post',
     data: data
   })
@@ -29,7 +29,7 @@ export function addComprehensive(data) {
 // 修改开栓|安检|维修
 export function updateComprehensive(data) {
   return request({
-    url: '/zdsz/comprehensive',
+    url: '/zdsz/openbolt',
     method: 'put',
     data: data
   })
@@ -38,7 +38,7 @@ export function updateComprehensive(data) {
 // 删除开栓|安检|维修
 export function delComprehensive(id) {
   return request({
-    url: '/zdsz/comprehensive/' + id,
+    url: '/zdsz/openbolt/' + id,
     method: 'delete'
   })
 }

+ 0 - 44
src/api/zdsz/engiineeringPhoto.js

@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询照片列表
-export function listEngiineeringPhoto(query) {
-  return request({
-    url: '/zdsz/engiineeringPhoto/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询照片详细
-export function getEngiineeringPhoto(id) {
-  return request({
-    url: '/zdsz/engiineeringPhoto/' + id,
-    method: 'get'
-  })
-}
-
-// 新增照片
-export function addEngiineeringPhoto(data) {
-  return request({
-    url: '/zdsz/engiineeringPhoto',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改照片
-export function updateEngiineeringPhoto(data) {
-  return request({
-    url: '/zdsz/engiineeringPhoto',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除照片
-export function delEngiineeringPhoto(id) {
-  return request({
-    url: '/zdsz/engiineeringPhoto/' + id,
-    method: 'delete'
-  })
-}

+ 50 - 0
src/api/zdsz/enginMaterialQuality.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+
+// 查询工程材质列表
+export function listEnginMaterialQuality(query) {
+  return request({
+    url: '/zdsz/enginMaterialQuality/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工程材质详细
+export function getEnginMaterialQuality(id) {
+  return request({
+    url: '/zdsz/enginMaterialQuality/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工程材质
+export function addEnginMaterialQuality(data) {
+  return request({
+    url: '/zdsz/enginMaterialQuality',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工程材质
+export function updateEnginMaterialQuality(data) {
+  return request({
+    url: '/zdsz/enginMaterialQuality',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工程材质
+export function delEnginMaterialQuality(id) {
+  return request({
+    url: '/zdsz/enginMaterialQuality/' + id,
+    method: 'delete'
+  })
+}
+export function getEnginMaterialQualityList() {
+  return request({
+    url: '/zdsz/enginMaterialQuality/getEnginMaterialQualityList',
+    method: 'get',
+  })
+}

+ 53 - 0
src/api/zdsz/enginSpecifications.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询工程材质规格列表
+export function listEnginSpecifications(query) {
+  return request({
+    url: '/zdsz/enginSpecifications/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工程材质规格详细
+export function getEnginSpecifications(id) {
+  return request({
+    url: '/zdsz/enginSpecifications/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工程材质规格
+export function addEnginSpecifications(data) {
+  return request({
+    url: '/zdsz/enginSpecifications',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工程材质规格
+export function updateEnginSpecifications(data) {
+  return request({
+    url: '/zdsz/enginSpecifications',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工程材质规格
+export function delEnginSpecifications(id) {
+  return request({
+    url: '/zdsz/enginSpecifications/' + id,
+    method: 'delete'
+  })
+}
+export function getEnginSpecificationsList(materId) {
+  return request({
+    url: '/zdsz/enginSpecifications/getEnginSpecificationsList',
+    method: 'get',
+    params:{
+      materId:materId
+    }
+  })
+}

+ 0 - 44
src/api/zdsz/engineeringCivil.js

@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询民用工程列表
-export function listEngineeringCivil(query) {
-  return request({
-    url: '/zdsz/engineeringCivil/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询民用工程详细
-export function getEngineeringCivil(id) {
-  return request({
-    url: '/zdsz/engineeringCivil/' + id,
-    method: 'get'
-  })
-}
-
-// 新增民用工程
-export function addEngineeringCivil(data) {
-  return request({
-    url: '/zdsz/engineeringCivil',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改民用工程
-export function updateEngineeringCivil(data) {
-  return request({
-    url: '/zdsz/engineeringCivil',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除民用工程
-export function delEngineeringCivil(id) {
-  return request({
-    url: '/zdsz/engineeringCivil/' + id,
-    method: 'delete'
-  })
-}

+ 0 - 44
src/api/zdsz/engineeringInfo.js

@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询工程详情列表
-export function listEngineeringInfo(query) {
-  return request({
-    url: '/zdsz/engineeringInfo/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询工程详情详细
-export function getEngineeringInfo(id) {
-  return request({
-    url: '/zdsz/engineeringInfo/' + id,
-    method: 'get'
-  })
-}
-
-// 新增工程详情
-export function addEngineeringInfo(data) {
-  return request({
-    url: '/zdsz/engineeringInfo',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改工程详情
-export function updateEngineeringInfo(data) {
-  return request({
-    url: '/zdsz/engineeringInfo',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除工程详情
-export function delEngineeringInfo(id) {
-  return request({
-    url: '/zdsz/engineeringInfo/' + id,
-    method: 'delete'
-  })
-}

+ 44 - 0
src/api/zdsz/engineeringInfrastructure.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询基建工程列表
+export function listEngineeringInfrastructure(query) {
+  return request({
+    url: '/system/engineeringInfrastructure/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询基建工程详细
+export function getEngineeringInfrastructure(id) {
+  return request({
+    url: '/system/engineeringInfrastructure/' + id,
+    method: 'get'
+  })
+}
+
+// 新增基建工程
+export function addEngineeringInfrastructure(data) {
+  return request({
+    url: '/system/engineeringInfrastructure',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改基建工程
+export function updateEngineeringInfrastructure(data) {
+  return request({
+    url: '/system/engineeringInfrastructure',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除基建工程
+export function delEngineeringInfrastructure(id) {
+  return request({
+    url: '/system/engineeringInfrastructure/' + id,
+    method: 'delete'
+  })
+}

+ 0 - 44
src/api/zdsz/engineeringMaterial.js

@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询工程用料列表
-export function listEngineeringMaterial(query) {
-  return request({
-    url: '/zdsz/engineeringMaterial/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询工程用料详细
-export function getEngineeringMaterial(id) {
-  return request({
-    url: '/zdsz/engineeringMaterial/' + id,
-    method: 'get'
-  })
-}
-
-// 新增工程用料
-export function addEngineeringMaterial(data) {
-  return request({
-    url: '/zdsz/engineeringMaterial',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改工程用料
-export function updateEngineeringMaterial(data) {
-  return request({
-    url: '/zdsz/engineeringMaterial',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除工程用料
-export function delEngineeringMaterial(id) {
-  return request({
-    url: '/zdsz/engineeringMaterial/' + id,
-    method: 'delete'
-  })
-}

+ 0 - 44
src/api/zdsz/engineeringNode.js

@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询工程节点列表
-export function listEngineeringNode(query) {
-  return request({
-    url: '/zdsz/engineeringNode/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询工程节点详细
-export function getEngineeringNode(id) {
-  return request({
-    url: '/zdsz/engineeringNode/' + id,
-    method: 'get'
-  })
-}
-
-// 新增工程节点
-export function addEngineeringNode(data) {
-  return request({
-    url: '/zdsz/engineeringNode',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改工程节点
-export function updateEngineeringNode(data) {
-  return request({
-    url: '/zdsz/engineeringNode',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除工程节点
-export function delEngineeringNode(id) {
-  return request({
-    url: '/zdsz/engineeringNode/' + id,
-    method: 'delete'
-  })
-}

+ 0 - 44
src/api/zdsz/engineeringReview.js

@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询工程审核列表
-export function listEngineeringReview(query) {
-  return request({
-    url: '/zdsz/engineeringReview/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询工程审核详细
-export function getEngineeringReview(id) {
-  return request({
-    url: '/zdsz/engineeringReview/' + id,
-    method: 'get'
-  })
-}
-
-// 新增工程审核
-export function addEngineeringReview(data) {
-  return request({
-    url: '/zdsz/engineeringReview',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改工程审核
-export function updateEngineeringReview(data) {
-  return request({
-    url: '/zdsz/engineeringReview',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除工程审核
-export function delEngineeringReview(id) {
-  return request({
-    url: '/zdsz/engineeringReview/' + id,
-    method: 'delete'
-  })
-}

+ 10 - 0
src/api/zdsz/house.js

@@ -42,3 +42,13 @@ export function delHouse(id) {
     method: 'delete'
   })
 }
+
+export function getHouses(unitId) {
+  return request({
+    url: '/zdsz/house/getHouses/',
+    method: 'GET',
+    params:{
+      unitId:unitId
+    }
+  })
+}

+ 0 - 44
src/api/zdsz/materialStatistics.js

@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询用料统计列表
-export function listMaterialStatistics(query) {
-  return request({
-    url: '/zdsz/materialStatistics/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询用料统计详细
-export function getMaterialStatistics(id) {
-  return request({
-    url: '/zdsz/materialStatistics/' + id,
-    method: 'get'
-  })
-}
-
-// 新增用料统计
-export function addMaterialStatistics(data) {
-  return request({
-    url: '/zdsz/materialStatistics',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改用料统计
-export function updateMaterialStatistics(data) {
-  return request({
-    url: '/zdsz/materialStatistics',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除用料统计
-export function delMaterialStatistics(id) {
-  return request({
-    url: '/zdsz/materialStatistics/' + id,
-    method: 'delete'
-  })
-}

+ 11 - 0
src/api/zdsz/unit.js

@@ -42,3 +42,14 @@ export function delUnit(id) {
     method: 'delete'
   })
 }
+
+export function getUnits(areaId,buildingId) {
+  return request({
+    url: '/zdsz/unit/getUnitList',
+    method: 'GET',
+    params:{
+      areaId:areaId,
+      buildingId:buildingId
+    }
+  })
+}

+ 1 - 1
src/components/HeaderSearch/index.vue

@@ -8,7 +8,7 @@
       filterable
       default-first-option
       remote
-      placeholder="Search"
+      placeholder="搜索菜单"
       class="header-search-select"
       @change="change"
     >

+ 224 - 0
src/components/ObsImageUpload/index.vue

@@ -0,0 +1,224 @@
+<template>
+  <el-form>
+    <el-upload ref="fileList"
+      :disabled="disabled"
+      :action="uploadImgUrl"
+      list-type="picture-card"
+      :on-success="handleUploadSuccess"
+      :before-upload="handleBeforeUpload"
+      :limit="limit"
+      :on-error="handleUploadError"
+      :on-exceed="handleExceed"
+      name="file"
+      :on-remove="handleRemove"
+      :show-file-list="true"
+      :headers="headers"
+      :file-list="fileList"
+      :on-preview="handlePictureCardPreview"
+      :class="{hide: this.fileList.length >= this.limit}"
+    >
+      <i class="el-icon-plus abs"></i>
+    </el-upload>
+
+    <!-- 上传提示 -->
+    <div class="el-upload__tip" slot="tip" v-if="showTip">
+      请上传
+      <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
+      <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
+      的文件
+    </div>
+
+    <el-dialog
+      :visible.sync="dialogVisible"
+      title="预览"
+      width="800"
+      append-to-body
+    >
+      <video v-if="type==='mp4'"
+             :src="dialogImageUrl"
+             style="display: block; max-width: 100%; margin: 0 auto" controls="controls"/>
+      <img v-else
+           :src="dialogImageUrl"
+           style="display: block; max-width: 100%; margin: 0 auto"
+      />
+    </el-dialog>
+  </el-form>
+</template>
+
+<script>
+  import { getToken } from "@/utils/auth";
+
+  export default {
+    props: {
+      value: [String, Object, Array],
+      // 图片数量限制
+      limit: {
+        type: Number,
+        default: 5,
+      },
+      // 大小限制(MB)
+      fileSize: {
+        type: Number,
+        default: 5,
+      },
+      disabled:{
+        type:Boolean,
+        default: false
+      },
+      // 文件类型, 例如['png', 'jpg', 'jpeg']
+      fileType: {
+        type: Array,
+        default: () => ["png", "jpg", "jpeg","mp4"],
+      },
+      // 是否显示提示
+      isShowTip: {
+        type: Boolean,
+        default: true
+      }
+    },
+    data() {
+      return {
+        dialogImageUrl: "",
+        dialogVisible: false,
+        hideUpload: false,
+        type:"",
+        baseUrl: process.env.VUE_APP_BASE_API,
+        uploadImgUrl: process.env.VUE_APP_BASE_API + "/obs", // 上传的图片服务器地址
+        headers: {
+          Authorization: "Bearer " + getToken(),
+        },
+        fileList: []
+      };
+    },
+    watch: {
+      value: {
+        handler(val) {
+          if (val) {
+            // 首先将值转为数组
+            const list = Array.isArray(val) ? val : this.value.split(',');
+            // 然后将数组转为对象数组
+            this.fileList = list.map(item => {
+              if (typeof item === "string") {
+                item = { name: item, url: item ,suffix:item.substring(item.lastIndexOf('.')+1)};
+              }
+              return item;
+            });
+          } else {
+            this.fileList = [];
+            return [];
+          }
+        },
+        deep: true,
+        immediate: true
+      }
+    },
+    computed: {
+      // 是否显示提示
+      showTip() {
+        return this.isShowTip && (this.fileType || this.fileSize);
+      },
+    },
+    methods: {
+      // 删除图片
+      handleRemove(file, fileList) {
+        const findex = this.fileList.map(f => f.name).indexOf(file.name);
+        if(findex > -1) {
+          this.fileList.splice(findex, 1);
+          this.$emit("input", this.listToString(this.fileList));
+        }
+      },
+      // 上传成功回调
+      handleUploadSuccess(res) {
+        if (res.code == 200) {
+          this.fileList.push({ name: res.data.fileName, url: res.data.url });
+          this.$emit("input", this.listToString(this.fileList));
+          this.loading.close();
+        } else {
+          this.$message.error(res.msg);
+          this.loading.close();
+        }
+      },
+      // 上传前loading加载
+      handleBeforeUpload(file) {
+        let isImg = false;
+        if (this.fileType.length) {
+          let fileExtension = "";
+          if (file.name.lastIndexOf(".") > -1) {
+            fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
+          }
+          isImg = this.fileType.some((type) => {
+            if (file.type.indexOf(type) > -1) return true;
+            if (fileExtension && fileExtension.indexOf(type) > -1) return true;
+            return false;
+          });
+        } else {
+          isImg = file.type.indexOf("image") > -1;
+        }
+
+        if (!isImg) {
+          this.$message.error(
+            `文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`
+          );
+          return false;
+        }
+        if (this.fileSize) {
+          const isLt = file.size / 1024 / 1024 < this.fileSize;
+          if (!isLt) {
+            this.$message.error(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
+            return false;
+          }
+        }
+        this.loading = this.$loading({
+          lock: true,
+          text: "上传中",
+          background: "rgba(0, 0, 0, 0.7)",
+        });
+      },
+      // 文件个数超出
+      handleExceed() {
+        this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`);
+      },
+      // 上传失败
+      handleUploadError(res) {
+        this.$message({
+          type: "error",
+          message: "上传失败",
+        });
+        this.loading.close();
+      },
+      // 预览
+      handlePictureCardPreview(file) {
+        this.dialogImageUrl = file.url;
+        this.dialogVisible = true;
+        this.type=file.name.slice(file.name.lastIndexOf(".")+1);
+        console.log(this.type)
+      },
+      // 对象转成指定字符串分隔
+      listToString(list, separator) {
+        let strs = "";
+        separator = separator || ",";
+        for (let i in list) {
+          strs += list[i].url + separator;
+        }
+        return strs != '' ? strs.substr(0, strs.length - 1) : '';
+      }
+    }
+  };
+</script>
+<style scoped lang="scss">
+  // .el-upload--picture-card 控制加号部分
+  ::v-deep.hide .el-upload--picture-card {
+    display: none;
+  }
+  // 去掉动画效果
+  ::v-deep .el-list-enter-active,
+  ::v-deep .el-list-leave-active {
+    transition: all 0s;
+  }
+
+  ::v-deep .el-list-enter, .el-list-leave-active {
+    opacity: 0;
+    transform: translateY(0);
+  }
+</style>
+

+ 10 - 10
src/layout/components/Navbar.vue

@@ -9,19 +9,19 @@
       <template v-if="device!=='mobile'">
         <search id="header-search" class="right-menu-item" />
 
-        <el-tooltip content="源码地址" effect="dark" placement="bottom">
-          <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
-        </el-tooltip>
+<!--        <el-tooltip content="源码地址" effect="dark" placement="bottom">-->
+<!--          <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />-->
+<!--        </el-tooltip>-->
 
-        <el-tooltip content="文档地址" effect="dark" placement="bottom">
-          <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
-        </el-tooltip>
+<!--        <el-tooltip content="文档地址" effect="dark" placement="bottom">-->
+<!--          <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
+<!--        </el-tooltip>-->
 
-        <screenfull id="screenfull" class="right-menu-item hover-effect" />
+<!--        <screenfull id="screenfull" class="right-menu-item hover-effect" />-->
 
-        <el-tooltip content="布局大小" effect="dark" placement="bottom">
-          <size-select id="size-select" class="right-menu-item hover-effect" />
-        </el-tooltip>
+<!--        <el-tooltip content="布局大小" effect="dark" placement="bottom">-->
+<!--          <size-select id="size-select" class="right-menu-item hover-effect" />-->
+<!--        </el-tooltip>-->
 
       </template>
 

+ 2 - 0
src/main.js

@@ -29,6 +29,7 @@ import Editor from "@/components/Editor"
 import FileUpload from "@/components/FileUpload"
 // 图片上传组件
 import ImageUpload from "@/components/ImageUpload"
+import ObsImageUpload from "@/components/ObsImageUpload"
 // 图片预览组件
 import ImagePreview from "@/components/ImagePreview"
 // 字典标签组件
@@ -57,6 +58,7 @@ Vue.component('RightToolbar', RightToolbar)
 Vue.component('Editor', Editor)
 Vue.component('FileUpload', FileUpload)
 Vue.component('ImageUpload', ImageUpload)
+Vue.component('ObsImageUpload', ObsImageUpload)
 Vue.component('ImagePreview', ImagePreview)
 
 Vue.use(directive)

+ 0 - 104
src/views/index.vue

@@ -1,110 +1,6 @@
 <template>
   <div class="app-container home">
-    <el-row :gutter="20">
-      <el-col :sm="24" :lg="12" style="padding-left: 20px">
-        <h2>RuoYi-Vue-Plus后台管理框架</h2>
-        <p>
-          RuoYi-Vue-Plus 是基于 RuoYi-Vue 针对 分布式集群 场景升级(不兼容原框架)
-          <br/>
-          * 前端开发框架 Vue、Element UI<br/>
-          * 后端开发框架 Spring Boot<br/>
-          * 容器框架 Undertow 基于 XNIO 的高性能容器<br/>
-          * 权限认证框架 Sa-Token、Jwt 支持多终端认证系统<br/>
-          * 关系数据库 MySQL 适配 8.X 最低 5.7<br/>
-          * 关系数据库 Oracle 适配 11g 12c<br/>
-          * 关系数据库 PostgreSQL 适配 13 14<br/>
-          * 关系数据库 SQLServer 适配 2017 2019<br/>
-          * 缓存数据库 Redis 适配 6.X 最低 4.X<br/>
-          * 数据库框架 Mybatis-Plus 快速 CRUD 增加开发效率<br/>
-          * 数据库框架 p6spy 更强劲的 SQL 分析<br/>
-          * 多数据源框架 dynamic-datasource 支持主从与多种类数据库异构<br/>
-          * 序列化框架 Jackson 统一使用 jackson 高效可靠<br/>
-          * Redis客户端 Redisson 性能强劲、API丰富<br/>
-          * 分布式限流 Redisson 全局、请求IP、集群ID 多种限流<br/>
-          * 分布式锁 Lock4j 注解锁、工具锁 多种多样<br/>
-          * 分布式幂等 Redisson 拦截重复提交<br/>
-          * 分布式链路追踪 SkyWalking 支持链路追踪、网格分析、度量聚合、可视化<br/>
-          * 分布式任务调度 Xxl-Job 高性能 高可靠 易扩展<br/>
-          * 分布式文件存储 Minio 本地存储<br/>
-          * 分布式云存储 七牛、阿里、腾讯 云存储<br/>
-          * 监控框架 SpringBoot-Admin 全方位服务监控<br/>
-          * 校验框架 Validation 增强接口安全性 严谨性<br/>
-          * Excel框架 Alibaba EasyExcel 性能优异 扩展性强<br/>
-          * 文档框架 SpringDoc、javadoc 无注解零入侵基于java注释<br/>
-          * 工具类框架 Hutool、Lombok 减少代码冗余 增加安全性<br/>
-          * 代码生成器 适配MP、SpringDoc规范化代码 一键生成前后端代码<br/>
-          * 部署方式 Docker 容器编排 一键部署业务集群<br/>
-          * 国际化 SpringMessage Spring标准国际化方案<br/>
-        </p>
-        <p>
-          <b>当前版本:</b> <span>v{{ version }}</span>
-        </p>
-        <p>
-          <el-tag type="danger">&yen;免费开源</el-tag>
-        </p>
-        <p>
-          <el-button
-            type="primary"
-            size="mini"
-            icon="el-icon-cloudy"
-            plain
-            @click="goTarget('https://gitee.com/dromara/RuoYi-Vue-Plus')"
-            >访问码云</el-button
-          >
-          <el-button
-            type="primary"
-            size="mini"
-            icon="el-icon-cloudy"
-            plain
-            @click="goTarget('https://github.com/dromara/RuoYi-Vue-Plus')"
-          >访问GitHub</el-button
-          >
-          <el-button
-            type="primary"
-            size="mini"
-            icon="el-icon-cloudy"
-            plain
-            @click="goTarget('https://gitee.com/dromara/RuoYi-Vue-Plus/wikis/pages?sort_id=4106467&doc_id=1469725')"
-          >更新日志</el-button
-          >
-        </p>
-      </el-col>
 
-      <el-col :sm="24" :lg="12" style="padding-left: 50px">
-        <el-row>
-          <el-col :span="12">
-            <h2>技术选型</h2>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="6">
-            <h4>后端技术</h4>
-            <ul>
-              <li>SpringBoot</li>
-              <li>Sa-Token</li>
-              <li>JWT</li>
-              <li>MyBatis</li>
-              <li>Druid</li>
-              <li>Jackson</li>
-              <li>...</li>
-            </ul>
-          </el-col>
-          <el-col :span="6">
-            <h4>前端技术</h4>
-            <ul>
-              <li>Vue</li>
-              <li>Vuex</li>
-              <li>Element-ui</li>
-              <li>Axios</li>
-              <li>Sass</li>
-              <li>Quill</li>
-              <li>...</li>
-            </ul>
-          </el-col>
-        </el-row>
-      </el-col>
-    </el-row>
-    <el-divider />
   </div>
 </template>
 

+ 27 - 29
src/views/zdsz/area/index.vue

@@ -123,7 +123,7 @@
 
     <el-table v-loading="loading" :data="areaList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="id" align="center" prop="id"/>
+<!--      <el-table-column label="id" align="center" prop="id"/>-->
       <el-table-column label="小区名称" align="center" prop="name"/>
       <el-table-column label="小区规模" align="center" prop="scale"/>
       <el-table-column label="是否释放" align="center" prop="releaseIs">
@@ -194,25 +194,18 @@
           </el-col>
         </el-row>
         <el-row :gutter="20">
-          <el-col :span="12">
-            <el-form-item label="是否释放" prop="releaseIs">
-              <el-select v-model="form.releaseIs" placeholder="请选择是否释放">
-                <el-option
-                  v-for="dict in dict.type.release_status"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="释放人" prop="releaseBy">
-              <el-input v-model="form.releaseBy" placeholder="请输入释放人"/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="是否释放" prop="releaseIs">-->
+<!--              <el-select v-model="form.releaseIs" placeholder="请选择是否释放">-->
+<!--                <el-option-->
+<!--                  v-for="dict in dict.type.release_status"-->
+<!--                  :key="dict.value"-->
+<!--                  :label="dict.label"-->
+<!--                  :value="dict.value"-->
+<!--                ></el-option>-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
           <el-col :span="12">
             <el-form-item label="行政区" prop="district">
               <el-select v-model="form.district" placeholder="请选择行政区">
@@ -226,10 +219,10 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="核算行政区" prop="calculateDistrict">
-              <el-select v-model="form.calculateDistrict" placeholder="请选择核算行政区">
+            <el-form-item label="所属包" prop="belongingPack">
+              <el-select v-model="form.belongingPack" placeholder="请选择所属包">
                 <el-option
-                  v-for="dict in dict.type.district"
+                  v-for="dict in dict.type.belonging_pack"
                   :key="dict.value"
                   :label="dict.label"
                   :value="dict.value"
@@ -237,13 +230,18 @@
               </el-select>
             </el-form-item>
           </el-col>
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="释放人" prop="releaseBy">-->
+<!--              <el-input v-model="form.releaseBy" placeholder="请输入释放人"/>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="所属包" prop="belongingPack">
-              <el-select v-model="form.belongingPack" placeholder="请选择所属包">
+            <el-form-item label="核算行政区" prop="calculateDistrict">
+              <el-select v-model="form.calculateDistrict" placeholder="请选择核算行政区">
                 <el-option
-                  v-for="dict in dict.type.belonging_pack"
+                  v-for="dict in dict.type.district"
                   :key="dict.value"
                   :label="dict.label"
                   :value="dict.value"
@@ -320,10 +318,10 @@ export default {
           {required: true, message: "小区规模不能为空", trigger: "blur"}
         ],
         releaseIs: [
-          {required: true, message: "是否释放不能为空", trigger: "blur"}
+          {required: false, message: "是否释放不能为空", trigger: "change"}
         ],
         releaseBy: [
-          {required: true, message: "释放人不能为空", trigger: "blur"}
+          {required: false, message: "释放人不能为空", trigger: "change"}
         ],
         district: [
           {required: true, message: "行政区不能为空", trigger: "change"}
@@ -335,7 +333,7 @@ export default {
           {required: true, message: "所属包不能为空", trigger: "change"}
         ],
         remark: [
-          {required: true, message: "备注不能为空", trigger: "blur"}
+          {required: false, message: "备注不能为空", trigger: "blur"}
         ],
       }
     };

+ 55 - 32
src/views/zdsz/building/index.vue

@@ -1,10 +1,20 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="" prop="name">
+      <el-form-item label="小区名称" prop="name">
+        <el-select v-model="queryParams.areaId" filterable clearable placeholder="请选择小区">
+          <el-option
+            v-for="item in areaList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="楼宇名称" prop="name">
         <el-input
           v-model="queryParams.name"
-          placeholder="请输入"
+          placeholder="请输入名称"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -24,7 +34,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['zdsz:building:add']"
-        >新增</el-button>
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -35,7 +46,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['zdsz:building:edit']"
-        >修改</el-button>
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -46,27 +58,18 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['zdsz:building:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['zdsz:building:export']"
-        >导出</el-button>
+        >删除
+        </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="buildingList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="" align="center" prop="areaId" />
-      <el-table-column label="" align="center" prop="name" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="id" align="center" prop="id" v-if="false"/>
+      <el-table-column label="小区名称" align="center" prop="areaName"/>
+      <el-table-column label="楼宇名称" align="center" prop="name"/>
+      <el-table-column label="备注" align="center" prop="remark"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -75,14 +78,16 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['zdsz:building:edit']"
-          >修改</el-button>
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['zdsz:building:remove']"
-          >删除</el-button>
+          >删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -98,11 +103,21 @@
     <!-- 添加或修改楼栋管理对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="" prop="name">
-          <el-input v-model="form.name" placeholder="请输入" />
+        <el-form-item label="小区名称" prop="name">
+          <el-select v-model="form.areaId" filterable clearable placeholder="请选择小区">
+            <el-option
+              v-for="item in areaList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="楼宇名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入楼宇名称"/>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -114,7 +129,8 @@
 </template>
 
 <script>
-import { listBuilding, getBuilding, delBuilding, addBuilding, updateBuilding } from "@/api/zdsz/building";
+import {listBuilding, getBuilding, delBuilding, addBuilding, updateBuilding} from "@/api/zdsz/building";
+import {getAreaList} from "@/api/zdsz/area";
 
 export default {
   name: "Building",
@@ -152,24 +168,31 @@ export default {
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "不能为空", trigger: "blur" }
+          {required: true, message: "不能为空", trigger: "blur"}
         ],
         areaId: [
-          { required: true, message: "不能为空", trigger: "change" }
+          {required: true, message: "不能为空", trigger: "change"}
         ],
         name: [
-          { required: true, message: "不能为空", trigger: "blur" }
+          {required: true, message: "不能为空", trigger: "blur"}
         ],
         remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
+          {required: false, message: "备注不能为空", trigger: "blur"}
         ],
-      }
+      },
+      areaList: []
     };
   },
   created() {
     this.getList();
   },
+  mounted() {
+    this.getAreaList();
+  },
   methods: {
+    getAreaList() {
+      getAreaList().then(res => this.areaList = res.data)
+    },
     /** 查询楼栋管理列表 */
     getList() {
       this.loading = true;
@@ -212,7 +235,7 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */

+ 0 - 325
src/views/zdsz/comprehensive/index.vue

@@ -1,325 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="安检是否合格" prop="isQualified">
-        <el-input
-          v-model="queryParams.isQualified"
-          placeholder="请输入安检是否合格"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="是否维修" prop="isMaintenance">
-        <el-input
-          v-model="queryParams.isMaintenance"
-          placeholder="请输入是否维修"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['zdsz:comprehensive:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['zdsz:comprehensive:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['zdsz:comprehensive:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['zdsz:comprehensive:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="comprehensiveList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="小区id" align="center" prop="areaId" />
-      <el-table-column label="楼栋id" align="center" prop="buildingId" />
-      <el-table-column label="单元id" align="center" prop="unitId" />
-      <el-table-column label="房间id" align="center" prop="houseId" />
-      <el-table-column label="类型" align="center" prop="type" />
-      <el-table-column label="安检是否合格" align="center" prop="isQualified" />
-      <el-table-column label="是否维修" align="center" prop="isMaintenance" />
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['zdsz:comprehensive:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['zdsz:comprehensive:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改开栓|安检|维修对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="安检是否合格" prop="isQualified">
-          <el-input v-model="form.isQualified" placeholder="请输入安检是否合格" />
-        </el-form-item>
-        <el-form-item label="是否维修" prop="isMaintenance">
-          <el-input v-model="form.isMaintenance" placeholder="请输入是否维修" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { listComprehensive, getComprehensive, delComprehensive, addComprehensive, updateComprehensive } from "@/api/zdsz/comprehensive";
-
-export default {
-  name: "Comprehensive",
-  data() {
-    return {
-      // 按钮loading
-      buttonLoading: false,
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 开栓|安检|维修表格数据
-      comprehensiveList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        areaId: undefined,
-        buildingId: undefined,
-        unitId: undefined,
-        houseId: undefined,
-        type: undefined,
-        isQualified: undefined,
-        isMaintenance: undefined,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        id: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ],
-        areaId: [
-          { required: true, message: "小区id不能为空", trigger: "change" }
-        ],
-        buildingId: [
-          { required: true, message: "楼栋id不能为空", trigger: "change" }
-        ],
-        unitId: [
-          { required: true, message: "单元id不能为空", trigger: "change" }
-        ],
-        houseId: [
-          { required: true, message: "房间id不能为空", trigger: "change" }
-        ],
-        type: [
-          { required: true, message: "类型不能为空", trigger: "change" }
-        ],
-        isQualified: [
-          { required: true, message: "安检是否合格不能为空", trigger: "blur" }
-        ],
-        isMaintenance: [
-          { required: true, message: "是否维修不能为空", trigger: "blur" }
-        ],
-        remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
-        ],
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询开栓|安检|维修列表 */
-    getList() {
-      this.loading = true;
-      listComprehensive(this.queryParams).then(response => {
-        this.comprehensiveList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: undefined,
-        areaId: undefined,
-        buildingId: undefined,
-        unitId: undefined,
-        houseId: undefined,
-        type: undefined,
-        isQualified: undefined,
-        isMaintenance: undefined,
-        remark: undefined,
-        delFlag: undefined,
-        createBy: undefined,
-        createTime: undefined,
-        updateBy: undefined,
-        updateTime: undefined
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加开栓|安检|维修";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.loading = true;
-      this.reset();
-      const id = row.id || this.ids
-      getComprehensive(id).then(response => {
-        this.loading = false;
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改开栓|安检|维修";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          this.buttonLoading = true;
-          if (this.form.id != null) {
-            updateComprehensive(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          } else {
-            addComprehensive(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除开栓|安检|维修编号为"' + ids + '"的数据项?').then(() => {
-        this.loading = true;
-        return delComprehensive(ids);
-      }).then(() => {
-        this.loading = false;
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {
-      }).finally(() => {
-        this.loading = false;
-      });
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('zdsz/comprehensive/export', {
-        ...this.queryParams
-      }, `comprehensive_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
-</script>

+ 94 - 57
src/views/zdsz/engineeringNode/index.vue

@@ -1,10 +1,20 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="民用工程id" prop="civliId">
+      <el-form-item label="所属工程" prop="engin_type">
+        <el-select v-model="queryParams.enginType" placeholder="请选择所属工程">
+          <el-option
+            v-for="dict in dict.type.engin_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="材质名称" prop="name">
         <el-input
-          v-model="queryParams.civliId"
-          placeholder="请输入民用工程id"
+          v-model="queryParams.name"
+          placeholder="请输入材质名称"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -23,8 +33,9 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-          v-hasPermi="['zdsz:engineeringNode:add']"
-        >新增</el-button>
+          v-hasPermi="['zdsz:enginMaterialQuality:add']"
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -34,8 +45,9 @@
           size="mini"
           :disabled="single"
           @click="handleUpdate"
-          v-hasPermi="['zdsz:engineeringNode:edit']"
-        >修改</el-button>
+          v-hasPermi="['zdsz:enginMaterialQuality:edit']"
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -45,8 +57,9 @@
           size="mini"
           :disabled="multiple"
           @click="handleDelete"
-          v-hasPermi="['zdsz:engineeringNode:remove']"
-        >删除</el-button>
+          v-hasPermi="['zdsz:enginMaterialQuality:remove']"
+        >删除
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -55,18 +68,22 @@
           icon="el-icon-download"
           size="mini"
           @click="handleExport"
-          v-hasPermi="['zdsz:engineeringNode:export']"
-        >导出</el-button>
+          v-hasPermi="['zdsz:enginMaterialQuality:export']"
+        >导出
+        </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="engineeringNodeList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="民用工程id" align="center" prop="civliId" />
-      <el-table-column label="节点类型" align="center" prop="type" />
-      <el-table-column label="备注" align="center" prop="remark" />
+    <el-table v-loading="loading" :data="enginMaterialQualityList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="id" align="center" prop="id" v-if="true"/>
+      <el-table-column label="工程类型" align="center" prop="enginType">
+        <template slot-scope="scope">
+          <dict-tag v-for="item in scope.row.enginType.split(',')" :options="dict.type.engin_type" :value="item"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="材质名称" align="center" prop="name"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -74,15 +91,17 @@
             type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
-            v-hasPermi="['zdsz:engineeringNode:edit']"
-          >修改</el-button>
+            v-hasPermi="['zdsz:enginMaterialQuality:edit']"
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
-            v-hasPermi="['zdsz:engineeringNode:remove']"
-          >删除</el-button>
+            v-hasPermi="['zdsz:enginMaterialQuality:remove']"
+          >删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -95,14 +114,22 @@
       @pagination="getList"
     />
 
-    <!-- 添加或修改工程节点对话框 -->
+    <!-- 添加或修改工程材质对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="民用工程id" prop="civliId">
-          <el-input v-model="form.civliId" placeholder="请输入民用工程id" />
+        <el-form-item label="所属工程" prop="enginType">
+          <el-select v-model="form.enginType" placeholder="请选择所属工程" filterable clearable multiple
+                     style="width: 100%">
+            <el-option
+              v-for="dict in dict.type.engin_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
+        <el-form-item label="材质名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入材质名称"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -114,10 +141,17 @@
 </template>
 
 <script>
-import { listEngineeringNode, getEngineeringNode, delEngineeringNode, addEngineeringNode, updateEngineeringNode } from "@/api/zdsz/engineeringNode";
+import {
+  listEnginMaterialQuality,
+  getEnginMaterialQuality,
+  delEnginMaterialQuality,
+  addEnginMaterialQuality,
+  updateEnginMaterialQuality
+} from "@/api/zdsz/enginMaterialQuality";
 
 export default {
-  name: "EngineeringNode",
+  name: "EnginMaterialQuality",
+  dicts: ['engin_type'],
   data() {
     return {
       // 按钮loading
@@ -134,8 +168,8 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 工程节点表格数据
-      engineeringNodeList: [],
+      // 工程材质表格数据
+      enginMaterialQualityList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -144,24 +178,21 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        civliId: undefined,
-        type: undefined,
+        enginType: undefined,
+        name: undefined,
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ],
-        civliId: [
-          { required: true, message: "民用工程id不能为空", trigger: "blur" }
+          {required: true, message: "不能为空", trigger: "blur"}
         ],
-        type: [
-          { required: true, message: "节点类型不能为空", trigger: "change" }
+        enginType: [
+          {required: true, message: "工程类型不能为空", trigger: "change"}
         ],
-        remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
+        name: [
+          {required: true, message: "材质名称不能为空", trigger: "blur"}
         ],
       }
     };
@@ -170,11 +201,11 @@ export default {
     this.getList();
   },
   methods: {
-    /** 查询工程节点列表 */
+    /** 查询工程材质列表 */
     getList() {
       this.loading = true;
-      listEngineeringNode(this.queryParams).then(response => {
-        this.engineeringNodeList = response.rows;
+      listEnginMaterialQuality(this.queryParams).then(response => {
+        this.enginMaterialQualityList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
@@ -188,10 +219,8 @@ export default {
     reset() {
       this.form = {
         id: undefined,
-        civliId: undefined,
-        type: undefined,
-        version: undefined,
-        remark: undefined,
+        enginType: undefined,
+        name: undefined,
         delFlag: undefined,
         createBy: undefined,
         createTime: undefined,
@@ -213,25 +242,26 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加工程节点";
+      this.title = "添加工程材质";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.loading = true;
       this.reset();
       const id = row.id || this.ids
-      getEngineeringNode(id).then(response => {
+      getEnginMaterialQuality(id).then(response => {
         this.loading = false;
         this.form = response.data;
+        this.form.enginType = this.form.enginType.split(",")
         this.open = true;
-        this.title = "修改工程节点";
+        this.title = "修改工程材质";
       });
     },
     /** 提交按钮 */
@@ -239,21 +269,28 @@ export default {
       this.$refs["form"].validate(valid => {
         if (valid) {
           this.buttonLoading = true;
+          let eng = this.form.enginType
           if (this.form.id != null) {
-            updateEngineeringNode(this.form).then(response => {
+            this.form.enginType = this.form.enginType.join()
+            updateEnginMaterialQuality(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             }).finally(() => {
               this.buttonLoading = false;
+            }).catch(e => {
+              this.form.enginType = eng
             });
           } else {
-            addEngineeringNode(this.form).then(response => {
+            this.form.enginType = this.form.enginType.join()
+            addEnginMaterialQuality(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
             }).finally(() => {
               this.buttonLoading = false;
+            }).catch(e => {
+              this.form.enginType = eng
             });
           }
         }
@@ -262,9 +299,9 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除工程节点编号为"' + ids + '"的数据项?').then(() => {
+      this.$modal.confirm('是否确认删除工程材质编号为"' + ids + '"的数据项?').then(() => {
         this.loading = true;
-        return delEngineeringNode(ids);
+        return delEnginMaterialQuality(ids);
       }).then(() => {
         this.loading = false;
         this.getList();
@@ -276,9 +313,9 @@ export default {
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('zdsz/engineeringNode/export', {
+      this.download('zdsz/enginMaterialQuality/export', {
         ...this.queryParams
-      }, `engineeringNode_${new Date().getTime()}.xlsx`)
+      }, `enginMaterialQuality_${new Date().getTime()}.xlsx`)
     }
   }
 };

+ 93 - 67
src/views/zdsz/engiineeringPhoto/index.vue

@@ -1,18 +1,20 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="上级id" prop="parentId">
-        <el-input
-          v-model="queryParams.parentId"
-          placeholder="请输入上级id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="材质" prop="materId">
+        <el-select v-model="queryParams.materId" placeholder="请选择所属工程">
+          <el-option
+            v-for="dict in enginMaterialQualityList"
+            :key="dict.id"
+            :label="dict.name"
+            :value="dict.id"
+          ></el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="图片地址" prop="picUrl">
+      <el-form-item label="材质名称" prop="name">
         <el-input
-          v-model="queryParams.picUrl"
-          placeholder="请输入图片地址"
+          v-model="queryParams.name"
+          placeholder="请输入材质名称"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -31,8 +33,9 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-          v-hasPermi="['zdsz:engiineeringPhoto:add']"
-        >新增</el-button>
+          v-hasPermi="['zdsz:enginSpecifications:add']"
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -42,8 +45,9 @@
           size="mini"
           :disabled="single"
           @click="handleUpdate"
-          v-hasPermi="['zdsz:engiineeringPhoto:edit']"
-        >修改</el-button>
+          v-hasPermi="['zdsz:enginSpecifications:edit']"
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -53,8 +57,9 @@
           size="mini"
           :disabled="multiple"
           @click="handleDelete"
-          v-hasPermi="['zdsz:engiineeringPhoto:remove']"
-        >删除</el-button>
+          v-hasPermi="['zdsz:enginSpecifications:remove']"
+        >删除
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -63,18 +68,18 @@
           icon="el-icon-download"
           size="mini"
           @click="handleExport"
-          v-hasPermi="['zdsz:engiineeringPhoto:export']"
-        >导出</el-button>
+          v-hasPermi="['zdsz:enginSpecifications:export']"
+        >导出
+        </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="engiineeringPhotoList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="主键" align="center" prop="id" v-if="true"/>
-      <el-table-column label="上级id" align="center" prop="parentId" />
-      <el-table-column label="图片地址" align="center" prop="picUrl" />
-      <el-table-column label="备注" align="center" prop="remark" />
+    <el-table v-loading="loading" :data="enginSpecificationsList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="id" align="center" prop="id" v-if="true"/>
+      <el-table-column label="材质名称" align="center" prop="materName"/>
+      <el-table-column label="材质名称" align="center" prop="name"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -82,15 +87,17 @@
             type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
-            v-hasPermi="['zdsz:engiineeringPhoto:edit']"
-          >修改</el-button>
+            v-hasPermi="['zdsz:enginSpecifications:edit']"
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
-            v-hasPermi="['zdsz:engiineeringPhoto:remove']"
-          >删除</el-button>
+            v-hasPermi="['zdsz:enginSpecifications:remove']"
+          >删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -103,17 +110,21 @@
       @pagination="getList"
     />
 
-    <!-- 添加或修改照片对话框 -->
+    <!-- 添加或修改工程材质规格对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="上级id" prop="parentId">
-          <el-input v-model="form.parentId" placeholder="请输入上级id" />
-        </el-form-item>
-        <el-form-item label="图片地址" prop="picUrl">
-          <el-input v-model="form.picUrl" placeholder="请输入图片地址" />
+        <el-form-item label="材质" prop="materId">
+          <el-select v-model="form.materId" placeholder="请选择所属工程" style="width: 100%">
+            <el-option
+              v-for="dict in enginMaterialQualityList"
+              :key="dict.id"
+              :label="dict.name"
+              :value="dict.id"
+            ></el-option>
+          </el-select>
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
+        <el-form-item label="材质名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入材质名称"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -125,10 +136,18 @@
 </template>
 
 <script>
-import { listEngiineeringPhoto, getEngiineeringPhoto, delEngiineeringPhoto, addEngiineeringPhoto, updateEngiineeringPhoto } from "@/api/zdsz/engiineeringPhoto";
+import {
+  listEnginSpecifications,
+  getEnginSpecifications,
+  delEnginSpecifications,
+  addEnginSpecifications,
+  updateEnginSpecifications
+} from "@/api/zdsz/enginSpecifications";
+import {listEnginMaterialQuality} from "@/api/zdsz/enginMaterialQuality";
 
 export default {
-  name: "EngiineeringPhoto",
+  name: "EnginSpecifications",
+  dicts: ['engin_type'],
   data() {
     return {
       // 按钮loading
@@ -145,8 +164,8 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 照片表格数据
-      engiineeringPhotoList: [],
+      // 工程材质规格表格数据
+      enginSpecificationsList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -155,37 +174,43 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        parentId: undefined,
-        picUrl: undefined,
+        materId: undefined,
+        name: undefined,
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "主键不能为空", trigger: "blur" }
+          {required: true, message: "不能为空", trigger: "blur"}
         ],
-        parentId: [
-          { required: true, message: "上级id不能为空", trigger: "blur" }
+        materId: [
+          {required: true, message: "材质id不能为空", trigger: "blur"}
         ],
-        picUrl: [
-          { required: true, message: "图片地址不能为空", trigger: "blur" }
+        name: [
+          {required: true, message: "材质名称不能为空", trigger: "blur"}
         ],
-        remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
-        ],
-      }
+      },
+      enginMaterialQualityList: []
     };
   },
   created() {
     this.getList();
   },
+  mounted() {
+    this.getMaterList()
+  },
   methods: {
-    /** 查询照片列表 */
+    getMaterList() {
+      listEnginMaterialQuality().then(response => {
+        this.enginMaterialQualityList = response.rows;
+      });
+    },
+    /** 查询工程材质规格列表 */
     getList() {
       this.loading = true;
-      listEngiineeringPhoto(this.queryParams).then(response => {
-        this.engiineeringPhotoList = response.rows;
+      listEnginSpecifications(this.queryParams).then(response => {
+        this.enginSpecificationsList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
@@ -199,9 +224,8 @@ export default {
     reset() {
       this.form = {
         id: undefined,
-        parentId: undefined,
-        picUrl: undefined,
-        remark: undefined,
+        materId: undefined,
+        name: undefined,
         delFlag: undefined,
         createBy: undefined,
         createTime: undefined,
@@ -223,25 +247,27 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加照片";
+      this.title = "添加工程材质规格";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.loading = true;
       this.reset();
       const id = row.id || this.ids
-      getEngiineeringPhoto(id).then(response => {
+      getEnginSpecifications(id).then(response => {
         this.loading = false;
         this.form = response.data;
+        this.form.enginType = (this.form.enginType.split(",")).map(Number);
+        console.log(this.form.enginType)
         this.open = true;
-        this.title = "修改照片";
+        this.title = "修改工程材质规格";
       });
     },
     /** 提交按钮 */
@@ -250,7 +276,7 @@ export default {
         if (valid) {
           this.buttonLoading = true;
           if (this.form.id != null) {
-            updateEngiineeringPhoto(this.form).then(response => {
+            updateEnginSpecifications(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
@@ -258,7 +284,7 @@ export default {
               this.buttonLoading = false;
             });
           } else {
-            addEngiineeringPhoto(this.form).then(response => {
+            addEnginSpecifications(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -272,9 +298,9 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除照片编号为"' + ids + '"的数据项?').then(() => {
+      this.$modal.confirm('是否确认删除工程材质规格编号为"' + ids + '"的数据项?').then(() => {
         this.loading = true;
-        return delEngiineeringPhoto(ids);
+        return delEnginSpecifications(ids);
       }).then(() => {
         this.loading = false;
         this.getList();
@@ -286,9 +312,9 @@ export default {
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('zdsz/engiineeringPhoto/export', {
+      this.download('zdsz/enginSpecifications/export', {
         ...this.queryParams
-      }, `engiineeringPhoto_${new Date().getTime()}.xlsx`)
+      }, `enginSpecifications_${new Date().getTime()}.xlsx`)
     }
   }
 };

+ 0 - 5
src/views/zdsz/enginee/index.vue

@@ -1,5 +0,0 @@
-<template>
-    <div>
-        工程管理
-    </div>
-</template>

+ 0 - 68
src/views/zdsz/enginee/material/index.vue

@@ -1,68 +0,0 @@
-
- <!-- 
-    *@description:用料管理
-    *@author: yh Fu
-    *@date: 2023-12-25 10:13:29
-    *@version: V1.0.5 
-    -->
-
-  <template>
-    <div class="materialContainer">
-        <el-radio-group v-model="currentMenu" style="margin-bottom: 20px;" @input="toModule">
-            <el-radio-button label="0">用料统计</el-radio-button>
-            <el-radio-button label="1">进度统计</el-radio-button>
-            <el-radio-button label="2">可视化进度</el-radio-button>
-        </el-radio-group>
-        <router-view class="component_contain">
-
-        </router-view>
-    </div>
-  </template>
-
-  <script>
-
-export default {
-    components:{
-    },
-    data(){
-        return {
-            currentMenu:null,   // 0:用料管理 1:进度统计 2:可视化进度
-        }   
-    },
-    methods:{ 
-        toModule(){
-            console.log(this.$router)
-            const currentPage = this.currentMenu == 0 ? 'material_statistics' : this.currentMenu == 1 ? 'progres_statistics' : 'progres_visual'
-            this.$router.push({
-                path:`/${currentPage}`
-            })
-        }
-    },
-
-}
-</script>
-
-<style lang="scss" scoped>
-.materialContainer{
-    width: 100%;
-    height:928px;
-    .component_contain{
-        width: 100%;
-        height: 93%;
-        border: 1px solid skyblue;
-    }
-}
-</style>
-
-<style lang="scss" scoped>
-.el-radio-group{
-    width: 24%;
-    margin: 1% 0 0 1% !important;
-    .el-radio-button{
-        width: 33%;
-        .el-radio-button__inner{
-            width: 100%;
-        }
-    }
-}
-</style>

+ 0 - 32
src/views/zdsz/enginee/visual_house/index.vue

@@ -1,32 +0,0 @@
-
- <!-- 
-    *@description:可视化房屋
-    *@author: yh Fu
-    *@date: 2023-12-25 11:29:13
-    *@version: V1.0.5 
-    -->
-
-    <template>
-        <div>
-            可视化房屋
-            <div></div>
-        </div>
-      </template>
-    
-      <script>
-    
-    export default {
-        data(){
-            return {
-            }
-        },
-        methods:{
-    
-        },
-        
-    }
-    </script>
-    
-    <style lang="scss" scoped>
-    
-    </style>

+ 0 - 358
src/views/zdsz/engineeringCivil/index.vue

@@ -1,358 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="行政区" prop="district">
-        <el-select v-model="queryParams.district" placeholder="请选择行政区" clearable>
-          <el-option
-            v-for="dict in dict.type.district"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="默认图片地址" prop="imgUrl">
-        <el-input
-          v-model="queryParams.imgUrl"
-          placeholder="请输入默认图片地址"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['zdsz:engineeringCivil:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['zdsz:engineeringCivil:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['zdsz:engineeringCivil:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['zdsz:engineeringCivil:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="engineeringCivilList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="主键" align="center" prop="id" v-if="true"/>
-      <el-table-column label="行政区" align="center" prop="district">
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.district" :value="scope.row.district"/>
-        </template>
-      </el-table-column>
-      <el-table-column label="小区id" align="center" prop="areaId" />
-      <el-table-column label="楼宇id" align="center" prop="buildingId" />
-      <el-table-column label="单元id" align="center" prop="unitId" />
-      <el-table-column label="房间id" align="center" prop="houseId" />
-      <el-table-column label="工程类型" align="center" prop="enginType" />
-      <el-table-column label="工程分类" align="center" prop="enginClassification" />
-      <el-table-column label="工程周期" align="center" prop="enginCycle" />
-      <el-table-column label="完工状态" align="center" prop="completionStatus" />
-      <el-table-column label="默认图片地址" align="center" prop="imgUrl" />
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['zdsz:engineeringCivil:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['zdsz:engineeringCivil:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改民用工程对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="行政区" prop="district">
-          <el-select v-model="form.district" placeholder="请选择行政区">
-            <el-option
-              v-for="dict in dict.type.district"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="默认图片地址" prop="imgUrl">
-          <el-input v-model="form.imgUrl" placeholder="请输入默认图片地址" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { listEngineeringCivil, getEngineeringCivil, delEngineeringCivil, addEngineeringCivil, updateEngineeringCivil } from "@/api/zdsz/engineeringCivil";
-
-export default {
-  name: "EngineeringCivil",
-  dicts: ['district'],
-  data() {
-    return {
-      // 按钮loading
-      buttonLoading: false,
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 民用工程表格数据
-      engineeringCivilList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        district: undefined,
-        areaId: undefined,
-        buildingId: undefined,
-        unitId: undefined,
-        houseId: undefined,
-        enginType: undefined,
-        enginClassification: undefined,
-        enginCycle: undefined,
-        completionStatus: undefined,
-        imgUrl: undefined,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        id: [
-          { required: true, message: "主键不能为空", trigger: "blur" }
-        ],
-        district: [
-          { required: true, message: "行政区不能为空", trigger: "change" }
-        ],
-        areaId: [
-          { required: true, message: "小区id不能为空", trigger: "change" }
-        ],
-        buildingId: [
-          { required: true, message: "楼宇id不能为空", trigger: "change" }
-        ],
-        unitId: [
-          { required: true, message: "单元id不能为空", trigger: "change" }
-        ],
-        houseId: [
-          { required: true, message: "房间id不能为空", trigger: "change" }
-        ],
-        enginType: [
-          { required: true, message: "工程类型不能为空", trigger: "change" }
-        ],
-        enginClassification: [
-          { required: true, message: "工程分类不能为空", trigger: "change" }
-        ],
-        enginCycle: [
-          { required: true, message: "工程周期不能为空", trigger: "change" }
-        ],
-        completionStatus: [
-          { required: true, message: "完工状态不能为空", trigger: "change" }
-        ],
-        imgUrl: [
-          { required: true, message: "默认图片地址不能为空", trigger: "blur" }
-        ],
-        remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
-        ],
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询民用工程列表 */
-    getList() {
-      this.loading = true;
-      listEngineeringCivil(this.queryParams).then(response => {
-        this.engineeringCivilList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: undefined,
-        district: undefined,
-        areaId: undefined,
-        buildingId: undefined,
-        unitId: undefined,
-        houseId: undefined,
-        enginType: undefined,
-        enginClassification: undefined,
-        enginCycle: undefined,
-        completionStatus: undefined,
-        version: undefined,
-        imgUrl: undefined,
-        remark: undefined,
-        delFlag: undefined,
-        createBy: undefined,
-        createTime: undefined,
-        updateBy: undefined,
-        updateTime: undefined
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加民用工程";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.loading = true;
-      this.reset();
-      const id = row.id || this.ids
-      getEngineeringCivil(id).then(response => {
-        this.loading = false;
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改民用工程";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          this.buttonLoading = true;
-          if (this.form.id != null) {
-            updateEngineeringCivil(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          } else {
-            addEngineeringCivil(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除民用工程编号为"' + ids + '"的数据项?').then(() => {
-        this.loading = true;
-        return delEngineeringCivil(ids);
-      }).then(() => {
-        this.loading = false;
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {
-      }).finally(() => {
-        this.loading = false;
-      });
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('zdsz/engineeringCivil/export', {
-        ...this.queryParams
-      }, `engineeringCivil_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
-</script>

+ 0 - 451
src/views/zdsz/engineeringInfo/index.vue

@@ -1,451 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="民用工程id" prop="engInfoId">
-        <el-input
-          v-model="queryParams.engInfoId"
-          placeholder="请输入民用工程id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="施工地址" prop="constructAddre">
-        <el-input
-          v-model="queryParams.constructAddre"
-          placeholder="请输入施工地址"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="是否按图纸施工" prop="constructAccordingDrawings">
-        <el-input
-          v-model="queryParams.constructAccordingDrawings"
-          placeholder="请输入是否按图纸施工"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="回填时间" prop="backfillTime">
-        <el-date-picker clearable
-          v-model="queryParams.backfillTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择回填时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="施工人电话" prop="constructPhone">
-        <el-input
-          v-model="queryParams.constructPhone"
-          placeholder="请输入施工人电话"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="施工人" prop="constructUser">
-        <el-input
-          v-model="queryParams.constructUser"
-          placeholder="请输入施工人"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="施工时间" prop="constructTime">
-        <el-date-picker clearable
-          v-model="queryParams.constructTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择施工时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="负责人名称" prop="headName">
-        <el-input
-          v-model="queryParams.headName"
-          placeholder="请输入负责人名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="负责人电话" prop="headPhone">
-        <el-input
-          v-model="queryParams.headPhone"
-          placeholder="请输入负责人电话"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['zdsz:engineeringInfo:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['zdsz:engineeringInfo:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['zdsz:engineeringInfo:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['zdsz:engineeringInfo:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="engineeringInfoList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="民用工程id" align="center" prop="engInfoId" />
-      <el-table-column label="施工地址" align="center" prop="constructAddre" />
-      <el-table-column label="是否按图纸施工" align="center" prop="constructAccordingDrawings" />
-      <el-table-column label="分段打压是否合格" align="center" prop="segmentedCompressionQualified" />
-      <el-table-column label="回填时间" align="center" prop="backfillTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.backfillTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="施工人电话" align="center" prop="constructPhone" />
-      <el-table-column label="施工人" align="center" prop="constructUser" />
-      <el-table-column label="施工时间" align="center" prop="constructTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.constructTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="负责人名称" align="center" prop="headName" />
-      <el-table-column label="负责人电话" align="center" prop="headPhone" />
-      <el-table-column label="上门类型" align="center" prop="visitType" />
-      <el-table-column label="自闭阀类型" align="center" prop="selfClosingValveType" />
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['zdsz:engineeringInfo:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['zdsz:engineeringInfo:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改工程详情对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="民用工程id" prop="engInfoId">
-          <el-input v-model="form.engInfoId" placeholder="请输入民用工程id" />
-        </el-form-item>
-        <el-form-item label="施工地址" prop="constructAddre">
-          <el-input v-model="form.constructAddre" placeholder="请输入施工地址" />
-        </el-form-item>
-        <el-form-item label="是否按图纸施工" prop="constructAccordingDrawings">
-          <el-input v-model="form.constructAccordingDrawings" placeholder="请输入是否按图纸施工" />
-        </el-form-item>
-        <el-form-item label="回填时间" prop="backfillTime">
-          <el-date-picker clearable
-            v-model="form.backfillTime"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择回填时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="施工人电话" prop="constructPhone">
-          <el-input v-model="form.constructPhone" placeholder="请输入施工人电话" />
-        </el-form-item>
-        <el-form-item label="施工人" prop="constructUser">
-          <el-input v-model="form.constructUser" placeholder="请输入施工人" />
-        </el-form-item>
-        <el-form-item label="施工时间" prop="constructTime">
-          <el-date-picker clearable
-            v-model="form.constructTime"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择施工时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="负责人名称" prop="headName">
-          <el-input v-model="form.headName" placeholder="请输入负责人名称" />
-        </el-form-item>
-        <el-form-item label="负责人电话" prop="headPhone">
-          <el-input v-model="form.headPhone" placeholder="请输入负责人电话" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { listEngineeringInfo, getEngineeringInfo, delEngineeringInfo, addEngineeringInfo, updateEngineeringInfo } from "@/api/zdsz/engineeringInfo";
-
-export default {
-  name: "EngineeringInfo",
-  data() {
-    return {
-      // 按钮loading
-      buttonLoading: false,
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 工程详情表格数据
-      engineeringInfoList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        engInfoId: undefined,
-        constructAddre: undefined,
-        constructAccordingDrawings: undefined,
-        segmentedCompressionQualified: undefined,
-        backfillTime: undefined,
-        constructPhone: undefined,
-        constructUser: undefined,
-        constructTime: undefined,
-        headName: undefined,
-        headPhone: undefined,
-        visitType: undefined,
-        selfClosingValveType: undefined,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        id: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ],
-        engInfoId: [
-          { required: true, message: "民用工程id不能为空", trigger: "blur" }
-        ],
-        constructAddre: [
-          { required: true, message: "施工地址不能为空", trigger: "blur" }
-        ],
-        constructAccordingDrawings: [
-          { required: true, message: "是否按图纸施工不能为空", trigger: "blur" }
-        ],
-        segmentedCompressionQualified: [
-          { required: true, message: "分段打压是否合格不能为空", trigger: "change" }
-        ],
-        backfillTime: [
-          { required: true, message: "回填时间不能为空", trigger: "blur" }
-        ],
-        constructPhone: [
-          { required: true, message: "施工人电话不能为空", trigger: "blur" }
-        ],
-        constructUser: [
-          { required: true, message: "施工人不能为空", trigger: "blur" }
-        ],
-        constructTime: [
-          { required: true, message: "施工时间不能为空", trigger: "blur" }
-        ],
-        headName: [
-          { required: true, message: "负责人名称不能为空", trigger: "blur" }
-        ],
-        headPhone: [
-          { required: true, message: "负责人电话不能为空", trigger: "blur" }
-        ],
-        visitType: [
-          { required: true, message: "上门类型不能为空", trigger: "change" }
-        ],
-        selfClosingValveType: [
-          { required: true, message: "自闭阀类型不能为空", trigger: "change" }
-        ],
-        remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
-        ],
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询工程详情列表 */
-    getList() {
-      this.loading = true;
-      listEngineeringInfo(this.queryParams).then(response => {
-        this.engineeringInfoList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: undefined,
-        engInfoId: undefined,
-        constructAddre: undefined,
-        constructAccordingDrawings: undefined,
-        segmentedCompressionQualified: undefined,
-        backfillTime: undefined,
-        constructPhone: undefined,
-        constructUser: undefined,
-        constructTime: undefined,
-        headName: undefined,
-        headPhone: undefined,
-        visitType: undefined,
-        selfClosingValveType: undefined,
-        version: undefined,
-        remark: undefined,
-        delFlag: undefined,
-        createBy: undefined,
-        createTime: undefined,
-        updateBy: undefined,
-        updateTime: undefined
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加工程详情";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.loading = true;
-      this.reset();
-      const id = row.id || this.ids
-      getEngineeringInfo(id).then(response => {
-        this.loading = false;
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改工程详情";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          this.buttonLoading = true;
-          if (this.form.id != null) {
-            updateEngineeringInfo(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          } else {
-            addEngineeringInfo(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除工程详情编号为"' + ids + '"的数据项?').then(() => {
-        this.loading = true;
-        return delEngineeringInfo(ids);
-      }).then(() => {
-        this.loading = false;
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {
-      }).finally(() => {
-        this.loading = false;
-      });
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('zdsz/engineeringInfo/export', {
-        ...this.queryParams
-      }, `engineeringInfo_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
-</script>

+ 123 - 77
src/views/zdsz/engineeringReview/index.vue

@@ -1,38 +1,54 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="审核时间" prop="reviewTime">
-        <el-date-picker clearable
-          v-model="queryParams.reviewTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择审核时间">
-        </el-date-picker>
+      <el-form-item label="工程名称" prop="enginName">
+        <el-input
+          v-model="queryParams.enginName"
+          placeholder="请输入工程名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
       </el-form-item>
-      <el-form-item label="审核人" prop="reviewUser">
+      <el-form-item label="工程地址" prop="enginAddre">
         <el-input
-          v-model="queryParams.reviewUser"
-          placeholder="请输入审核人"
+          v-model="queryParams.enginAddre"
+          placeholder="请输入工程地址"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="审核内容" prop="reviewContent">
+      <el-form-item label="建设单位" prop="constructUnit">
         <el-input
-          v-model="queryParams.reviewContent"
-          placeholder="请输入审核内容"
+          v-model="queryParams.constructUnit"
+          placeholder="请输入建设单位"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="节点ID" prop="engInfoId">
+      <el-form-item label="开工时间" prop="startTime">
+        <el-date-picker clearable
+          v-model="queryParams.startTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择开工时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="计划工期" prop="plannedDuration">
         <el-input
-          v-model="queryParams.engInfoId"
-          placeholder="请输入节点ID"
+          v-model="queryParams.plannedDuration"
+          placeholder="请输入计划工期"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="竣工时间" prop="completedTime">
+        <el-date-picker clearable
+          v-model="queryParams.completedTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择竣工时间">
+        </el-date-picker>
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -47,7 +63,7 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-          v-hasPermi="['zdsz:engineeringReview:add']"
+          v-hasPermi="['system:engineeringInfrastructure:add']"
         >新增</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -58,7 +74,7 @@
           size="mini"
           :disabled="single"
           @click="handleUpdate"
-          v-hasPermi="['zdsz:engineeringReview:edit']"
+          v-hasPermi="['system:engineeringInfrastructure:edit']"
         >修改</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -69,7 +85,7 @@
           size="mini"
           :disabled="multiple"
           @click="handleDelete"
-          v-hasPermi="['zdsz:engineeringReview:remove']"
+          v-hasPermi="['system:engineeringInfrastructure:remove']"
         >删除</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -79,24 +95,30 @@
           icon="el-icon-download"
           size="mini"
           @click="handleExport"
-          v-hasPermi="['zdsz:engineeringReview:export']"
+          v-hasPermi="['system:engineeringInfrastructure:export']"
         >导出</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="engineeringReviewList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="engineeringInfrastructureList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="主键" align="center" prop="id" v-if="true"/>
-      <el-table-column label="审核时间" align="center" prop="reviewTime" width="180">
+      <el-table-column label="" align="center" prop="id" v-if="true"/>
+      <el-table-column label="工程名称" align="center" prop="enginName" />
+      <el-table-column label="工程地址" align="center" prop="enginAddre" />
+      <el-table-column label="建设单位" align="center" prop="constructUnit" />
+      <el-table-column label="开工时间" align="center" prop="startTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="计划工期" align="center" prop="plannedDuration" />
+      <el-table-column label="竣工时间" align="center" prop="completedTime" width="180">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.reviewTime, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.completedTime, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="审核人" align="center" prop="reviewUser" />
-      <el-table-column label="审核状态" align="center" prop="reviewStatus" />
-      <el-table-column label="审核内容" align="center" prop="reviewContent" />
-      <el-table-column label="节点ID" align="center" prop="engInfoId" />
+      <el-table-column label="工程内容" align="center" prop="enginContent" />
       <el-table-column label="备注" align="center" prop="remark" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -105,14 +127,14 @@
             type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
-            v-hasPermi="['zdsz:engineeringReview:edit']"
+            v-hasPermi="['system:engineeringInfrastructure:edit']"
           >修改</el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
-            v-hasPermi="['zdsz:engineeringReview:remove']"
+            v-hasPermi="['system:engineeringInfrastructure:remove']"
           >删除</el-button>
         </template>
       </el-table-column>
@@ -126,25 +148,39 @@
       @pagination="getList"
     />
 
-    <!-- 添加或修改工程审核对话框 -->
+    <!-- 添加或修改基建工程对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="审核时间" prop="reviewTime">
+        <el-form-item label="工程名称" prop="enginName">
+          <el-input v-model="form.enginName" placeholder="请输入工程名称" />
+        </el-form-item>
+        <el-form-item label="工程地址" prop="enginAddre">
+          <el-input v-model="form.enginAddre" placeholder="请输入工程地址" />
+        </el-form-item>
+        <el-form-item label="建设单位" prop="constructUnit">
+          <el-input v-model="form.constructUnit" placeholder="请输入建设单位" />
+        </el-form-item>
+        <el-form-item label="开工时间" prop="startTime">
           <el-date-picker clearable
-            v-model="form.reviewTime"
+            v-model="form.startTime"
             type="datetime"
             value-format="yyyy-MM-dd HH:mm:ss"
-            placeholder="请选择审核时间">
+            placeholder="请选择开工时间">
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="审核人" prop="reviewUser">
-          <el-input v-model="form.reviewUser" placeholder="请输入审核人" />
+        <el-form-item label="计划工期" prop="plannedDuration">
+          <el-input v-model="form.plannedDuration" placeholder="请输入计划工期" />
         </el-form-item>
-        <el-form-item label="审核内容" prop="reviewContent">
-          <el-input v-model="form.reviewContent" type="textarea" placeholder="请输入内容" />
+        <el-form-item label="竣工时间" prop="completedTime">
+          <el-date-picker clearable
+            v-model="form.completedTime"
+            type="datetime"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="请选择竣工时间">
+          </el-date-picker>
         </el-form-item>
-        <el-form-item label="节点ID" prop="engInfoId">
-          <el-input v-model="form.engInfoId" placeholder="请输入节点ID" />
+        <el-form-item label="工程内容">
+          <editor v-model="form.enginContent" :min-height="192"/>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" placeholder="请输入备注" />
@@ -159,10 +195,10 @@
 </template>
 
 <script>
-import { listEngineeringReview, getEngineeringReview, delEngineeringReview, addEngineeringReview, updateEngineeringReview } from "@/api/zdsz/engineeringReview";
+import { listEngineeringInfrastructure, getEngineeringInfrastructure, delEngineeringInfrastructure, addEngineeringInfrastructure, updateEngineeringInfrastructure } from "@/api/zdsz/engineeringInfrastructure";
 
 export default {
-  name: "EngineeringReview",
+  name: "EngineeringInfrastructure",
   data() {
     return {
       // 按钮loading
@@ -179,8 +215,8 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 工程审核表格数据
-      engineeringReviewList: [],
+      // 基建工程表格数据
+      engineeringInfrastructureList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -189,33 +225,41 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        reviewTime: undefined,
-        reviewUser: undefined,
-        reviewStatus: undefined,
-        reviewContent: undefined,
-        engInfoId: undefined,
+        enginName: undefined,
+        enginAddre: undefined,
+        constructUnit: undefined,
+        startTime: undefined,
+        plannedDuration: undefined,
+        completedTime: undefined,
+        enginContent: undefined,
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "主键不能为空", trigger: "blur" }
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        enginName: [
+          { required: true, message: "工程名称不能为空", trigger: "blur" }
+        ],
+        enginAddre: [
+          { required: true, message: "工程地址不能为空", trigger: "blur" }
         ],
-        reviewTime: [
-          { required: true, message: "审核时间不能为空", trigger: "blur" }
+        constructUnit: [
+          { required: true, message: "建设单位不能为空", trigger: "blur" }
         ],
-        reviewUser: [
-          { required: true, message: "审核人不能为空", trigger: "blur" }
+        startTime: [
+          { required: true, message: "开工时间不能为空", trigger: "blur" }
         ],
-        reviewStatus: [
-          { required: true, message: "审核状态不能为空", trigger: "change" }
+        plannedDuration: [
+          { required: true, message: "计划工期不能为空", trigger: "blur" }
         ],
-        reviewContent: [
-          { required: true, message: "审核内容不能为空", trigger: "blur" }
+        completedTime: [
+          { required: true, message: "竣工时间不能为空", trigger: "blur" }
         ],
-        engInfoId: [
-          { required: true, message: "节点ID不能为空", trigger: "blur" }
+        enginContent: [
+          { required: true, message: "工程内容不能为空", trigger: "blur" }
         ],
         remark: [
           { required: true, message: "备注不能为空", trigger: "blur" }
@@ -227,11 +271,11 @@ export default {
     this.getList();
   },
   methods: {
-    /** 查询工程审核列表 */
+    /** 查询基建工程列表 */
     getList() {
       this.loading = true;
-      listEngineeringReview(this.queryParams).then(response => {
-        this.engineeringReviewList = response.rows;
+      listEngineeringInfrastructure(this.queryParams).then(response => {
+        this.engineeringInfrastructureList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
@@ -245,11 +289,13 @@ export default {
     reset() {
       this.form = {
         id: undefined,
-        reviewTime: undefined,
-        reviewUser: undefined,
-        reviewStatus: undefined,
-        reviewContent: undefined,
-        engInfoId: undefined,
+        enginName: undefined,
+        enginAddre: undefined,
+        constructUnit: undefined,
+        startTime: undefined,
+        plannedDuration: undefined,
+        completedTime: undefined,
+        enginContent: undefined,
         version: undefined,
         remark: undefined,
         delFlag: undefined,
@@ -280,18 +326,18 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加工程审核";
+      this.title = "添加基建工程";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.loading = true;
       this.reset();
       const id = row.id || this.ids
-      getEngineeringReview(id).then(response => {
+      getEngineeringInfrastructure(id).then(response => {
         this.loading = false;
         this.form = response.data;
         this.open = true;
-        this.title = "修改工程审核";
+        this.title = "修改基建工程";
       });
     },
     /** 提交按钮 */
@@ -300,7 +346,7 @@ export default {
         if (valid) {
           this.buttonLoading = true;
           if (this.form.id != null) {
-            updateEngineeringReview(this.form).then(response => {
+            updateEngineeringInfrastructure(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
@@ -308,7 +354,7 @@ export default {
               this.buttonLoading = false;
             });
           } else {
-            addEngineeringReview(this.form).then(response => {
+            addEngineeringInfrastructure(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -322,9 +368,9 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除工程审核编号为"' + ids + '"的数据项?').then(() => {
+      this.$modal.confirm('是否确认删除基建工程编号为"' + ids + '"的数据项?').then(() => {
         this.loading = true;
-        return delEngineeringReview(ids);
+        return delEngineeringInfrastructure(ids);
       }).then(() => {
         this.loading = false;
         this.getList();
@@ -336,9 +382,9 @@ export default {
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('zdsz/engineeringReview/export', {
+      this.download('system/engineeringInfrastructure/export', {
         ...this.queryParams
-      }, `engineeringReview_${new Date().getTime()}.xlsx`)
+      }, `engineeringInfrastructure_${new Date().getTime()}.xlsx`)
     }
   }
 };

+ 0 - 320
src/views/zdsz/engineeringMaterial/index.vue

@@ -1,320 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="详情id" prop="detailsId">
-        <el-input
-          v-model="queryParams.detailsId"
-          placeholder="请输入详情id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="数量" prop="number">
-        <el-input
-          v-model="queryParams.number"
-          placeholder="请输入数量"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['zdsz:engineeringMaterial:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['zdsz:engineeringMaterial:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['zdsz:engineeringMaterial:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['zdsz:engineeringMaterial:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="engineeringMaterialList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="详情id" align="center" prop="detailsId" />
-      <el-table-column label="腐蚀等级" align="center" prop="corrosionLevel" />
-      <el-table-column label="品牌" align="center" prop="brand" />
-      <el-table-column label="材质" align="center" prop="materialQuality" />
-      <el-table-column label="规格" align="center" prop="specifications" />
-      <el-table-column label="数量" align="center" prop="number" />
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['zdsz:engineeringMaterial:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['zdsz:engineeringMaterial:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改工程用料对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="详情id" prop="detailsId">
-          <el-input v-model="form.detailsId" placeholder="请输入详情id" />
-        </el-form-item>
-        <el-form-item label="数量" prop="number">
-          <el-input v-model="form.number" placeholder="请输入数量" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { listEngineeringMaterial, getEngineeringMaterial, delEngineeringMaterial, addEngineeringMaterial, updateEngineeringMaterial } from "@/api/zdsz/engineeringMaterial";
-
-export default {
-  name: "EngineeringMaterial",
-  data() {
-    return {
-      // 按钮loading
-      buttonLoading: false,
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 工程用料表格数据
-      engineeringMaterialList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        detailsId: undefined,
-        corrosionLevel: undefined,
-        brand: undefined,
-        materialQuality: undefined,
-        specifications: undefined,
-        number: undefined,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        id: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ],
-        detailsId: [
-          { required: true, message: "详情id不能为空", trigger: "blur" }
-        ],
-        corrosionLevel: [
-          { required: true, message: "腐蚀等级不能为空", trigger: "change" }
-        ],
-        brand: [
-          { required: true, message: "品牌不能为空", trigger: "change" }
-        ],
-        materialQuality: [
-          { required: true, message: "材质不能为空", trigger: "change" }
-        ],
-        specifications: [
-          { required: true, message: "规格不能为空", trigger: "change" }
-        ],
-        number: [
-          { required: true, message: "数量不能为空", trigger: "blur" }
-        ],
-        remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
-        ],
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询工程用料列表 */
-    getList() {
-      this.loading = true;
-      listEngineeringMaterial(this.queryParams).then(response => {
-        this.engineeringMaterialList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: undefined,
-        detailsId: undefined,
-        corrosionLevel: undefined,
-        brand: undefined,
-        materialQuality: undefined,
-        specifications: undefined,
-        number: undefined,
-        version: undefined,
-        remark: undefined,
-        delFlag: undefined,
-        createBy: undefined,
-        createTime: undefined,
-        updateBy: undefined,
-        updateTime: undefined
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加工程用料";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.loading = true;
-      this.reset();
-      const id = row.id || this.ids
-      getEngineeringMaterial(id).then(response => {
-        this.loading = false;
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改工程用料";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          this.buttonLoading = true;
-          if (this.form.id != null) {
-            updateEngineeringMaterial(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          } else {
-            addEngineeringMaterial(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除工程用料编号为"' + ids + '"的数据项?').then(() => {
-        this.loading = true;
-        return delEngineeringMaterial(ids);
-      }).then(() => {
-        this.loading = false;
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {
-      }).finally(() => {
-        this.loading = false;
-      });
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('zdsz/engineeringMaterial/export', {
-        ...this.queryParams
-      }, `engineeringMaterial_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
-</script>

+ 90 - 19
src/views/zdsz/engineeringMaterialsResets/index.vue

@@ -1,14 +1,24 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="预估尺寸" prop="estimatedSize">
-        <el-input
-          v-model="queryParams.estimatedSize"
-          placeholder="请输入预估尺寸"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="小区名称" prop="name">
+        <el-select v-model="queryParams.areaId" filterable  placeholder="请选择小区">
+          <el-option
+            v-for="item in areaList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id">
+          </el-option>
+        </el-select>
       </el-form-item>
+<!--      <el-form-item label="预估尺寸" prop="estimatedSize">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.estimatedSize"-->
+<!--          placeholder="请输入预估尺寸"-->
+<!--          clearable-->
+<!--          @keyup.enter.native="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -63,13 +73,12 @@
 
     <el-table v-loading="loading" :data="engineeringMaterialsResetsList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="" align="center" prop="areaId" />
-      <el-table-column label="材质" align="center" prop="materialQuality" />
-      <el-table-column label="规格" align="center" prop="estimatedSpecifications" />
+<!--      <el-table-column label="小区" align="center" prop="areaName" />-->
+      <el-table-column label="材质" align="center" prop="materialQualityName" />
+      <el-table-column label="规格" align="center" prop="estimatedSpecificationsName" />
       <el-table-column label="预估尺寸" align="center" prop="estimatedSize" />
       <el-table-column label="工程周期" align="center" prop="enginCycle" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -99,10 +108,46 @@
     />
 
     <!-- 添加或修改工程用料预设对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="小区名称" prop="areaId">
+          <el-select v-model="form.areaId" filterable clearable multiple placeholder="请选择小区"  style="width: 100%">
+            <el-option
+              v-for="item in areaList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="预估尺寸" prop="estimatedSize">
-          <el-input v-model="form.estimatedSize" placeholder="请输入预估尺寸" />
+          <el-input-number  v-model="form.estimatedSize" controls-position="right" placeholder="请输入预估尺寸" style="width: 100%" />
+        </el-form-item>
+        <el-form-item label="工程周期" prop="enginCycle">
+          <el-input-number  v-model="form.enginCycle" controls-position="right" placeholder="请输入工程周期" style="width: 100%" />
+        </el-form-item>
+        <el-form-item label="材质" prop="materialQuality">
+<!--          <el-input-number  v-model="form.materialQuality" controls-position="right" placeholder="请选择材质" style="width: 100%" />-->
+          <el-select v-model="form.materialQuality" placeholder="请选择材质" style="width: 100%" @change="selectEstimated">
+            <el-option
+              v-for="dict in enginMaterialQualityList"
+              :key="dict.id"
+              :label="dict.name"
+              :value="dict.id"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="规格" prop="estimatedSpecifications">
+<!--          <el-input-number  v-model="form.estimatedSpecifications" controls-position="right" placeholder="请选择规格" style="width: 100%" />-->
+          <el-select v-model="form.estimatedSpecifications" placeholder="请选择规格" style="width: 100%">
+            <el-option
+              v-for="dict in enginSpecificationsList"
+              :key="dict.id"
+              :label="dict.name"
+              :value="dict.id"
+            ></el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
@@ -118,6 +163,9 @@
 
 <script>
 import { listEngineeringMaterialsResets, getEngineeringMaterialsResets, delEngineeringMaterialsResets, addEngineeringMaterialsResets, updateEngineeringMaterialsResets } from "@/api/zdsz/engineeringMaterialsResets";
+import {getAreaList} from "@/api/zdsz/area";
+import {getEnginMaterialQualityList} from "@/api/zdsz/enginMaterialQuality";
+import {getEnginSpecificationsList} from "@/api/zdsz/enginSpecifications";
 
 export default {
   name: "EngineeringMaterialsResets",
@@ -139,6 +187,8 @@ export default {
       total: 0,
       // 工程用料预设表格数据
       engineeringMaterialsResetsList: [],
+      enginMaterialQualityList: [],
+      enginSpecificationsList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -158,7 +208,7 @@ export default {
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "不能为空", trigger: "blur" }
+          { required: false, message: "不能为空", trigger: "blur" }
         ],
         areaId: [
           { required: true, message: "不能为空", trigger: "change" }
@@ -176,15 +226,30 @@ export default {
           { required: true, message: "工程周期不能为空", trigger: "change" }
         ],
         remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
+          { required: false, message: "备注不能为空", trigger: "blur" }
         ],
-      }
+      },
+      areaList: []
     };
   },
   created() {
     this.getList();
   },
+  mounted() {
+    this.getAreaList();
+    this.getEnginMaterialQualityList();
+  },
   methods: {
+    getAreaList() {
+      getAreaList().then(res => this.areaList = res.data)
+    },
+    getEnginMaterialQualityList() {
+      getEnginMaterialQualityList().then(res => this.enginMaterialQualityList = res.data)
+    },
+    selectEstimated(materId) {
+      this.form.estimatedSpecifications = undefined
+      getEnginSpecificationsList(materId).then(res => this.enginSpecificationsList = res.data)
+    },
     /** 查询工程用料预设列表 */
     getList() {
       this.loading = true;
@@ -209,7 +274,7 @@ export default {
         estimatedSize: undefined,
         enginCycle: undefined,
         remark: undefined,
-        delFlag: undefined,
+        delFlag: 0,
         createBy: undefined,
         createTime: undefined,
         updateBy: undefined,
@@ -224,6 +289,7 @@ export default {
     },
     /** 重置按钮操作 */
     resetQuery() {
+      this.queryParams.areaId = undefined
       this.resetForm("queryForm");
       this.handleQuery();
     },
@@ -247,9 +313,12 @@ export default {
       getEngineeringMaterialsResets(id).then(response => {
         this.loading = false;
         this.form = response.data;
+        getEnginSpecificationsList(response.data.materId).then(res => this.enginSpecificationsList = res.data)
+        this.form.areaId = this.form.areaId.split(",")
         this.open = true;
         this.title = "修改工程用料预设";
       });
+
     },
     /** 提交按钮 */
     submitForm() {
@@ -257,6 +326,7 @@ export default {
         if (valid) {
           this.buttonLoading = true;
           if (this.form.id != null) {
+            this.form.areaId = this.form.areaId.join()
             updateEngineeringMaterialsResets(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
@@ -265,6 +335,7 @@ export default {
               this.buttonLoading = false;
             });
           } else {
+            this.form.areaId = this.form.areaId.join()
             addEngineeringMaterialsResets(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;

+ 175 - 47
src/views/zdsz/house/index.vue

@@ -1,13 +1,35 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="" prop="name">
-        <el-input
-          v-model="queryParams.name"
-          placeholder="请输入"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="小区" prop="areaId">
+        <el-select v-model="queryParams.areaId" placeholder="请选择小区" filterable @change="getBuildings">
+          <el-option
+            v-for="obj in areas"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="楼栋" prop="buildingId">
+        <el-select v-model="queryParams.buildingId" placeholder="请选择楼栋" filterable @change="getUnits">
+          <el-option
+            v-for="obj in builds"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="单元" prop="unitId">
+        <el-select v-model="queryParams.unitId" placeholder="请选择单元" filterable>
+          <el-option
+            v-for="obj in units"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -24,7 +46,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['zdsz:house:add']"
-        >新增</el-button>
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -35,7 +58,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['zdsz:house:edit']"
-        >修改</el-button>
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -46,29 +70,30 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['zdsz:house:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['zdsz:house:export']"
-        >导出</el-button>
+        >删除
+        </el-button>
       </el-col>
+      <!--      <el-col :span="1.5">-->
+      <!--        <el-button-->
+      <!--          type="warning"-->
+      <!--          plain-->
+      <!--          icon="el-icon-download"-->
+      <!--          size="mini"-->
+      <!--          @click="handleExport"-->
+      <!--          v-hasPermi="['zdsz:house:export']"-->
+      <!--        >导出</el-button>-->
+      <!--      </el-col>-->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="houseList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="" align="center" prop="areaId" />
-      <el-table-column label="" align="center" prop="buildingId" />
-      <el-table-column label="" align="center" prop="unitId" />
-      <el-table-column label="" align="center" prop="name" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column type="selection" width="55" align="center"/>
+      <!--      <el-table-column label="" align="center" prop="id" v-if="true"/>-->
+      <el-table-column label="小区" align="center" prop="areaName"/>
+      <el-table-column label="楼栋" align="center" prop="buildingName"/>
+      <el-table-column label="单元" align="center" prop="unitName"/>
+      <el-table-column label="房间号" align="center" prop="name"/>
+      <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -77,14 +102,16 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['zdsz:house:edit']"
-          >修改</el-button>
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['zdsz:house:remove']"
-          >删除</el-button>
+          >删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -98,14 +125,60 @@
     />
 
     <!-- 添加或修改房间管理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="" prop="name">
-          <el-input v-model="form.name" placeholder="请输入" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
-        </el-form-item>
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="小区" prop="areaId">
+              <el-select v-model="form.areaId" placeholder="请选择小区" filterable @change="getBuildings1">
+                <el-option
+                  v-for="obj in areas"
+                  :key="obj.id"
+                  :label="obj.name"
+                  :value="obj.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="楼栋" prop="buildingId">
+              <el-select v-model="form.buildingId" placeholder="请选择楼栋" filterable @change="getUnits1">
+                <el-option
+                  v-for="obj in builds"
+                  :key="obj.id"
+                  :label="obj.name"
+                  :value="obj.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="单元" prop="unitId">
+              <el-select v-model="form.unitId" placeholder="请选择单元" filterable>
+                <el-option
+                  v-for="obj in units"
+                  :key="obj.id"
+                  :label="obj.name"
+                  :value="obj.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="房间号" prop="name">
+              <el-input v-model="form.name" placeholder="请输入"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
@@ -116,7 +189,10 @@
 </template>
 
 <script>
-import { listHouse, getHouse, delHouse, addHouse, updateHouse } from "@/api/zdsz/house";
+import {listHouse, getHouse, delHouse, addHouse, updateHouse} from "@/api/zdsz/house";
+import {getAreas} from "@/api/zdsz/area";
+import {getBuildings} from "@/api/zdsz/building";
+import {getUnits} from "@/api/zdsz/unit";
 
 export default {
   name: "House",
@@ -156,30 +232,68 @@ export default {
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "不能为空", trigger: "blur" }
+          {required: true, message: "不能为空", trigger: "blur"}
         ],
         areaId: [
-          { required: true, message: "不能为空", trigger: "change" }
+          {required: true, message: "不能为空", trigger: "change"}
         ],
         buildingId: [
-          { required: true, message: "不能为空", trigger: "change" }
+          {required: true, message: "不能为空", trigger: "change"}
         ],
         unitId: [
-          { required: true, message: "不能为空", trigger: "change" }
+          {required: true, message: "不能为空", trigger: "change"}
         ],
         name: [
-          { required: true, message: "不能为空", trigger: "blur" }
+          {required: true, message: "不能为空", trigger: "blur"}
         ],
         remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
+          {required: false, message: "备注不能为空", trigger: "blur"}
         ],
-      }
+      },
+      areas: [],
+      builds: [],
+      units: [],
     };
   },
   created() {
     this.getList();
+    this.getAreas();
   },
   methods: {
+    /** 查询楼栋下拉 */
+    getBuildings(id) {
+      this.builds = []
+      this.units = []
+      this.queryParams.buildingId = undefined
+      this.queryParams.unitId = undefined
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    getBuildings1(id) {
+      this.builds = []
+      this.units = []
+      this.form.buildingId = undefined
+      this.form.unitId = undefined
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    /** 查询单元下拉 */
+    getUnits(id) {
+      this.units = []
+      this.queryParams.unitId = undefined
+      getUnits(this.queryParams.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
+    getUnits1(id) {
+      this.units = []
+      this.form.unitId = undefined
+      getUnits(this.form.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
     /** 查询房间管理列表 */
     getList() {
       this.loading = true;
@@ -189,9 +303,19 @@ export default {
         this.loading = false;
       });
     },
+    /** 查询小区下拉 */
+    getAreas() {
+      this.builds = []
+      this.units = []
+      getAreas().then(res => {
+        this.areas = res.data;
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;
+      this.builds = []
+      this.units = []
       this.reset();
     },
     // 表单重置
@@ -203,7 +327,7 @@ export default {
         unitId: undefined,
         name: undefined,
         remark: undefined,
-        delFlag: undefined,
+        delFlag: 0,
         createBy: undefined,
         createTime: undefined,
         updateBy: undefined,
@@ -224,7 +348,7 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
@@ -257,6 +381,8 @@ export default {
               this.getList();
             }).finally(() => {
               this.buttonLoading = false;
+              this.builds = []
+              this.units = []
             });
           } else {
             addHouse(this.form).then(response => {
@@ -265,6 +391,8 @@ export default {
               this.getList();
             }).finally(() => {
               this.buttonLoading = false;
+              this.builds = []
+              this.units = []
             });
           }
         }

+ 0 - 320
src/views/zdsz/materialStatistics/index.vue

@@ -1,320 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="预估尺寸" prop="realitySize">
-        <el-input
-          v-model="queryParams.realitySize"
-          placeholder="请输入预估尺寸"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['zdsz:materialStatistics:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['zdsz:materialStatistics:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['zdsz:materialStatistics:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['zdsz:materialStatistics:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="materialStatisticsList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="小区id" align="center" prop="areaId" />
-      <el-table-column label="楼栋id" align="center" prop="buildingId" />
-      <el-table-column label="单元id" align="center" prop="unitId" />
-      <el-table-column label="房间id" align="center" prop="houseId" />
-      <el-table-column label="材质" align="center" prop="realityQuality" />
-      <el-table-column label="规格" align="center" prop="realitySpecifications" />
-      <el-table-column label="预估尺寸" align="center" prop="realitySize" />
-      <el-table-column label="工程周期" align="center" prop="enginCycle" />
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['zdsz:materialStatistics:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['zdsz:materialStatistics:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改用料统计对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="预估尺寸" prop="realitySize">
-          <el-input v-model="form.realitySize" placeholder="请输入预估尺寸" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { listMaterialStatistics, getMaterialStatistics, delMaterialStatistics, addMaterialStatistics, updateMaterialStatistics } from "@/api/zdsz/materialStatistics";
-
-export default {
-  name: "MaterialStatistics",
-  data() {
-    return {
-      // 按钮loading
-      buttonLoading: false,
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 用料统计表格数据
-      materialStatisticsList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        areaId: undefined,
-        buildingId: undefined,
-        unitId: undefined,
-        houseId: undefined,
-        realityQuality: undefined,
-        realitySpecifications: undefined,
-        realitySize: undefined,
-        enginCycle: undefined,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        id: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ],
-        areaId: [
-          { required: true, message: "小区id不能为空", trigger: "change" }
-        ],
-        buildingId: [
-          { required: true, message: "楼栋id不能为空", trigger: "change" }
-        ],
-        unitId: [
-          { required: true, message: "单元id不能为空", trigger: "change" }
-        ],
-        houseId: [
-          { required: true, message: "房间id不能为空", trigger: "change" }
-        ],
-        realityQuality: [
-          { required: true, message: "材质不能为空", trigger: "change" }
-        ],
-        realitySpecifications: [
-          { required: true, message: "规格不能为空", trigger: "change" }
-        ],
-        realitySize: [
-          { required: true, message: "预估尺寸不能为空", trigger: "blur" }
-        ],
-        enginCycle: [
-          { required: true, message: "工程周期不能为空", trigger: "change" }
-        ],
-        remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
-        ],
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询用料统计列表 */
-    getList() {
-      this.loading = true;
-      listMaterialStatistics(this.queryParams).then(response => {
-        this.materialStatisticsList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: undefined,
-        areaId: undefined,
-        buildingId: undefined,
-        unitId: undefined,
-        houseId: undefined,
-        realityQuality: undefined,
-        realitySpecifications: undefined,
-        realitySize: undefined,
-        enginCycle: undefined,
-        remark: undefined,
-        delFlag: undefined,
-        createBy: undefined,
-        createTime: undefined,
-        updateBy: undefined,
-        updateTime: undefined
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加用料统计";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.loading = true;
-      this.reset();
-      const id = row.id || this.ids
-      getMaterialStatistics(id).then(response => {
-        this.loading = false;
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改用料统计";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          this.buttonLoading = true;
-          if (this.form.id != null) {
-            updateMaterialStatistics(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          } else {
-            addMaterialStatistics(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除用料统计编号为"' + ids + '"的数据项?').then(() => {
-        this.loading = true;
-        return delMaterialStatistics(ids);
-      }).then(() => {
-        this.loading = false;
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {
-      }).finally(() => {
-        this.loading = false;
-      });
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('zdsz/materialStatistics/export', {
-        ...this.queryParams
-      }, `materialStatistics_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
-</script>

+ 501 - 0
src/views/zdsz/openbolt/index.vue

@@ -0,0 +1,501 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="110px">
+      <el-form-item label="小区名称" prop="areaId">
+        <el-select v-model="queryParams.areaId" placeholder="请选择小区" filterable @change="getBuildings">
+          <el-option
+            v-for="obj in areas"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="楼栋名称" prop="buildingId">
+        <el-select v-model="queryParams.buildingId" placeholder="请选择楼栋" filterable @change="getUnits">
+          <el-option
+            v-for="obj in builds"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="单元名称" prop="unitId">
+        <el-select v-model="queryParams.unitId" placeholder="请选择单元" filterable @change="getHouses">
+          <el-option
+            v-for="obj in units"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="房间名称" prop="houseId">
+        <el-select v-model="queryParams.houseId" placeholder="请选择房间号" filterable>
+          <el-option
+            v-for="obj in houses"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['zdsz:openbolt:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['zdsz:openbolt:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['zdsz:openbolt:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--      <el-col :span="1.5">-->
+      <!--        <el-button-->
+      <!--          type="warning"-->
+      <!--          plain-->
+      <!--          icon="el-icon-download"-->
+      <!--          size="mini"-->
+      <!--          @click="handleExport"-->
+      <!--          v-hasPermi="['zdsz:openbolt:export']"-->
+      <!--        >导出</el-button>-->
+      <!--      </el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="comprehensiveList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <!--      <el-table-column label="" align="center" prop="id" v-if="true"/>-->
+      <el-table-column label="小区" align="center" prop="areaName" />
+      <el-table-column label="楼栋" align="center" prop="buildingName" />
+      <el-table-column label="单元" align="center" prop="unitName" />
+      <el-table-column label="房间" align="center" prop="houseName" />
+      <el-table-column label="安检是否合格" align="center" prop="isQualified">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.pass_check" :value="scope.row.isQualified"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="是否维修" align="center" prop="isMaintenance">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.is_repair" :value="scope.row.isMaintenance"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['zdsz:comprehensive:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['zdsz:comprehensive:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改开栓|安检|维修对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="110px">
+        <el-form-item label="小区" prop="areaId">
+          <el-select v-model="form.areaId" placeholder="请选择小区" filterable @change="getBuildings1" style="width: 100%">
+            <el-option
+              v-for="obj in areas"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="楼栋" prop="buildingId">
+          <el-select v-model="form.buildingId" placeholder="请选择楼栋" filterable @change="getUnits1" style="width: 100%">
+            <el-option
+              v-for="obj in builds"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="单元" prop="unitId">
+          <el-select v-model="form.unitId" placeholder="请选择单元" filterable @change="getHouses1" style="width: 100%">
+            <el-option
+              v-for="obj in units"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="房间号" prop="houseId">
+          <el-select v-model="form.houseId" placeholder="请选择房间号" filterable style="width: 100%">
+            <el-option
+              v-for="obj in houses"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="安检是否合格" prop="isQualified">
+          <el-select v-model="form.isQualified" placeholder="请选择安检是否合格" filterable style="width: 100%">
+            <el-option
+              v-for="obj in dict.type.pass_check"
+              :key="obj.value"
+              :label="obj.label"
+              :value="obj.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否维修" prop="isMaintenance">
+          <el-select v-model="form.isMaintenance" placeholder="请选择是否维修" filterable style="width: 100%">
+            <el-option
+              v-for="obj in dict.type.is_repair"
+              :key="obj.value"
+              :label="obj.label"
+              :value="obj.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="照片" prop="photo">
+          <obs-image-upload v-model="form.photo"/>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listComprehensive, getComprehensive, delComprehensive, addComprehensive, updateComprehensive } from "@/api/zdsz/comprehensive";
+import {getBuildings} from "@/api/zdsz/building";
+import {getUnits} from "@/api/zdsz/unit";
+import {getAreas} from "@/api/zdsz/area";
+import {getHouses, listHouse} from "@/api/zdsz/house";
+
+export default {
+  name: "openbolt",
+  dicts:['pass_check','is_repair'],
+  data() {
+    return {
+      // 按钮loading
+      buttonLoading: false,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 开栓|安检|维修表格数据
+      comprehensiveList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        areaId: undefined,
+        buildingId: undefined,
+        unitId: undefined,
+        houseId: undefined,
+        type: 1,
+        isQualified: undefined,
+        isMaintenance: undefined,
+      },
+      // 表单参数
+      form: {},
+      areas: [],
+      builds: [],
+      units: [],
+      rooms: [],
+      houses: [],
+      // 表单校验
+      rules: {
+        areaId: [
+          { required: true, message: "小区不能为空", trigger: "change" }
+        ],
+        buildingId: [
+          { required: true, message: "楼栋不能为空", trigger: "change" }
+        ],
+        unitId: [
+          { required: true, message: "单元不能为空", trigger: "change" }
+        ],
+        houseId: [
+          { required: true, message: "房间不能为空", trigger: "change" }
+        ],
+        type: [
+          { required: false, message: "类型不能为空", trigger: "change" }
+        ],
+        isQualified: [
+          { required: true, message: "安检是否合格不能为空", trigger: "blur" }
+        ],
+        isMaintenance: [
+          { required: true, message: "是否维修不能为空", trigger: "blur" }
+        ],
+        photo: [
+          { required: true, message: "照片不能为空", trigger: "blur" }
+        ],
+        remark: [
+          { required: false, message: "备注不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getAreas();
+  },
+  methods: {
+    getBuildings(id) {
+      this.units = []
+      this.houses = []
+      this.queryParams.buildingId = undefined
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    getUnits(id) {
+      this.houses = []
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      getUnits(this.queryParams.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
+    getAreas() {
+      this.builds = []
+      this.units = []
+      this.houses = []
+      this.queryParams.buildingId = undefined
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      this.form.buildingId = undefined
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getAreas().then(res => {
+        this.areas = res.data;
+      });
+    },
+    getHouses() {
+      this.houses = []
+      this.queryParams.houseId = undefined
+      getHouses(this.queryParams.unitId).then(res => {
+        this.houses = res.data;
+      });
+    },
+    getBuildings1(id) {
+      this.units = []
+      this.houses = []
+      this.form.buildingId = undefined
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    getUnits1(id) {
+      this.houses = []
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getUnits(this.form.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
+    getHouses1() {
+      this.houses = []
+      this.form.houseId = undefined
+      getHouses(this.form.unitId).then(res => {
+        this.houses = res.data;
+      });
+    },
+    /** 查询开栓|安检|维修列表 */
+    getList() {
+      this.loading = true;
+      listComprehensive(this.queryParams).then(response => {
+        this.comprehensiveList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+      this.houses = []
+      this.units = []
+      this.builds = []
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        areaId: undefined,
+        buildingId: undefined,
+        unitId: undefined,
+        houseId: undefined,
+        type: 1,
+        isQualified: undefined,
+        isMaintenance: undefined,
+        photo: undefined,
+        remark: undefined,
+        delFlag: 0,
+        createBy: undefined,
+        createTime: undefined,
+        updateBy: undefined,
+        updateTime: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加开栓";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      getBuildings(row.areaId).then(res => {
+        this.builds = res.data
+      });
+      getUnits(row.areaId,row.buildingId).then(res => {
+        this.units = res.data
+      })
+      getHouses(row.unitId).then(res => {
+        this.houses = res.data;
+      });
+      this.loading = true;
+      this.reset();
+      const id = row.id || this.ids
+      getComprehensive(id).then(response => {
+        this.loading = false;
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改开栓";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.buttonLoading = true;
+          if (this.form.id != null) {
+            updateComprehensive(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          } else {
+            addComprehensive(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除开栓为"' + ids + '"的数据项?').then(() => {
+        this.loading = true;
+        return delComprehensive(ids);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('zdsz/openbolt/export', {
+        ...this.queryParams
+      }, `comprehensive_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 496 - 0
src/views/zdsz/opencheck/index.vue

@@ -0,0 +1,496 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="110px">
+      <el-form-item label="小区" prop="areaId">
+        <el-select v-model="queryParams.areaId" placeholder="请选择小区" filterable @change="getBuildings">
+          <el-option
+            v-for="obj in areas"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="楼栋" prop="buildingId">
+        <el-select v-model="queryParams.buildingId" placeholder="请选择楼栋" filterable @change="getUnits">
+          <el-option
+            v-for="obj in builds"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="单元" prop="unitId">
+        <el-select v-model="queryParams.unitId" placeholder="请选择单元" filterable @change="getHouses">
+          <el-option
+            v-for="obj in units"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="房间号" prop="houseId">
+        <el-select v-model="queryParams.houseId" placeholder="请选择房间号" filterable>
+          <el-option
+            v-for="obj in houses"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['zdsz:openbolt:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['zdsz:openbolt:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['zdsz:openbolt:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--      <el-col :span="1.5">-->
+      <!--        <el-button-->
+      <!--          type="warning"-->
+      <!--          plain-->
+      <!--          icon="el-icon-download"-->
+      <!--          size="mini"-->
+      <!--          @click="handleExport"-->
+      <!--          v-hasPermi="['zdsz:openbolt:export']"-->
+      <!--        >导出</el-button>-->
+      <!--      </el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="comprehensiveList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <!--      <el-table-column label="" align="center" prop="id" v-if="true"/>-->
+      <el-table-column label="小区" align="center" prop="areaName" />
+      <el-table-column label="楼栋" align="center" prop="buildingName" />
+      <el-table-column label="单元" align="center" prop="unitName" />
+      <el-table-column label="房间" align="center" prop="houseName" />
+      <el-table-column label="安检是否合格" align="center" prop="isQualified">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.pass_check" :value="scope.row.isQualified"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="是否维修" align="center" prop="isMaintenance">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.is_repair" :value="scope.row.isMaintenance"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['zdsz:comprehensive:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['zdsz:comprehensive:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改开栓|安检|维修对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="110px">
+        <el-form-item label="小区" prop="areaId">
+          <el-select v-model="form.areaId" placeholder="请选择小区" filterable @change="getBuildings1">
+            <el-option
+              v-for="obj in areas"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="楼栋" prop="buildingId">
+          <el-select v-model="form.buildingId" placeholder="请选择楼栋" filterable @change="getUnits1">
+            <el-option
+              v-for="obj in builds"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="单元" prop="unitId">
+          <el-select v-model="form.unitId" placeholder="请选择单元" filterable @change="getHouses1">
+            <el-option
+              v-for="obj in units"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="房间号" prop="houseId">
+          <el-select v-model="form.houseId" placeholder="请选择房间号" filterable>
+            <el-option
+              v-for="obj in houses"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="安检是否合格" prop="isQualified">
+          <!--          <el-input v-model="form.isQualified" placeholder="请输入安检是否合格" />-->
+          <el-select v-model="form.isQualified" placeholder="请选择安检是否合格" filterable>
+            <el-option
+              v-for="obj in dict.type.pass_check"
+              :key="obj.value"
+              :label="obj.label"
+              :value="obj.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否维修" prop="isMaintenance">
+          <!--          <el-input v-model="form.isMaintenance" placeholder="请输入是否维修" />-->
+          <el-select v-model="form.isMaintenance" placeholder="请选择是否维修" filterable>
+            <el-option
+              v-for="obj in dict.type.is_repair"
+              :key="obj.value"
+              :label="obj.label"
+              :value="obj.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listComprehensive, getComprehensive, delComprehensive, addComprehensive, updateComprehensive } from "@/api/zdsz/comprehensive";
+import {getBuildings} from "@/api/zdsz/building";
+import {getUnits} from "@/api/zdsz/unit";
+import {getAreas} from "@/api/zdsz/area";
+import {getHouses, listHouse} from "@/api/zdsz/house";
+
+export default {
+  name: "opencheck",
+  dicts:['pass_check','is_repair'],
+  data() {
+    return {
+      // 按钮loading
+      buttonLoading: false,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 开栓|安检|维修表格数据
+      comprehensiveList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        areaId: undefined,
+        buildingId: undefined,
+        unitId: undefined,
+        houseId: undefined,
+        type: 2,
+        isQualified: undefined,
+        isMaintenance: undefined,
+      },
+      // 表单参数
+      form: {},
+      areas: [],
+      builds: [],
+      units: [],
+      rooms: [],
+      houses: [],
+      // 表单校验
+      rules: {
+        areaId: [
+          { required: true, message: "小区不能为空", trigger: "change" }
+        ],
+        buildingId: [
+          { required: true, message: "楼栋不能为空", trigger: "change" }
+        ],
+        unitId: [
+          { required: true, message: "单元不能为空", trigger: "change" }
+        ],
+        houseId: [
+          { required: true, message: "房间不能为空", trigger: "change" }
+        ],
+        type: [
+          { required: false, message: "类型不能为空", trigger: "change" }
+        ],
+        isQualified: [
+          { required: true, message: "安检是否合格不能为空", trigger: "blur" }
+        ],
+        isMaintenance: [
+          { required: true, message: "是否维修不能为空", trigger: "blur" }
+        ],
+        remark: [
+          { required: false, message: "备注不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getAreas();
+  },
+  methods: {
+    getBuildings(id) {
+      this.units = []
+      this.houses = []
+      this.queryParams.buildingId = undefined
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    getUnits(id) {
+      this.houses = []
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      getUnits(this.queryParams.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
+    getAreas() {
+      this.builds = []
+      this.units = []
+      this.houses = []
+      this.queryParams.buildingId = undefined
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      this.form.buildingId = undefined
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getAreas().then(res => {
+        this.areas = res.data;
+      });
+    },
+    getHouses() {
+      this.houses = []
+      this.queryParams.houseId = undefined
+      getHouses(this.queryParams.unitId).then(res => {
+        this.houses = res.data;
+      });
+    },
+    getBuildings1(id) {
+      this.units = []
+      this.houses = []
+      this.form.buildingId = undefined
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    getUnits1(id) {
+      this.houses = []
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getUnits(this.form.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
+    getHouses1() {
+      this.houses = []
+      this.form.houseId = undefined
+      getHouses(this.form.unitId).then(res => {
+        this.houses = res.data;
+      });
+    },
+    /** 查询开栓|安检|维修列表 */
+    getList() {
+      this.loading = true;
+      listComprehensive(this.queryParams).then(response => {
+        this.comprehensiveList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+      this.houses = []
+      this.units = []
+      this.builds = []
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        areaId: undefined,
+        buildingId: undefined,
+        unitId: undefined,
+        houseId: undefined,
+        type: 2,
+        isQualified: undefined,
+        isMaintenance: undefined,
+        remark: undefined,
+        delFlag: 0,
+        createBy: undefined,
+        createTime: undefined,
+        updateBy: undefined,
+        updateTime: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加安检";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      getBuildings(row.areaId).then(res => {
+        this.builds = res.data
+      });
+      getUnits(row.areaId,row.buildingId).then(res => {
+        this.units = res.data
+      })
+      getHouses(row.unitId).then(res => {
+        this.houses = res.data;
+      });
+      this.loading = true;
+      this.reset();
+      const id = row.id || this.ids
+      getComprehensive(id).then(response => {
+        this.loading = false;
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改安检";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.buttonLoading = true;
+          if (this.form.id != null) {
+            updateComprehensive(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          } else {
+            addComprehensive(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除安检为"' + ids + '"的数据项?').then(() => {
+        this.loading = true;
+        return delComprehensive(ids);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('zdsz/openbolt/export', {
+        ...this.queryParams
+      }, `comprehensive_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 496 - 0
src/views/zdsz/openrepair/index.vue

@@ -0,0 +1,496 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="110px">
+      <el-form-item label="小区" prop="areaId">
+        <el-select v-model="queryParams.areaId" placeholder="请选择小区" filterable @change="getBuildings">
+          <el-option
+            v-for="obj in areas"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="楼栋" prop="buildingId">
+        <el-select v-model="queryParams.buildingId" placeholder="请选择楼栋" filterable @change="getUnits">
+          <el-option
+            v-for="obj in builds"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="单元" prop="unitId">
+        <el-select v-model="queryParams.unitId" placeholder="请选择单元" filterable @change="getHouses">
+          <el-option
+            v-for="obj in units"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="房间号" prop="houseId">
+        <el-select v-model="queryParams.houseId" placeholder="请选择房间号" filterable>
+          <el-option
+            v-for="obj in houses"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['zdsz:openbolt:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['zdsz:openbolt:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['zdsz:openbolt:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--      <el-col :span="1.5">-->
+      <!--        <el-button-->
+      <!--          type="warning"-->
+      <!--          plain-->
+      <!--          icon="el-icon-download"-->
+      <!--          size="mini"-->
+      <!--          @click="handleExport"-->
+      <!--          v-hasPermi="['zdsz:openbolt:export']"-->
+      <!--        >导出</el-button>-->
+      <!--      </el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="comprehensiveList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <!--      <el-table-column label="" align="center" prop="id" v-if="true"/>-->
+      <el-table-column label="小区" align="center" prop="areaName" />
+      <el-table-column label="楼栋" align="center" prop="buildingName" />
+      <el-table-column label="单元" align="center" prop="unitName" />
+      <el-table-column label="房间" align="center" prop="houseName" />
+      <el-table-column label="安检是否合格" align="center" prop="isQualified">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.pass_check" :value="scope.row.isQualified"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="是否维修" align="center" prop="isMaintenance">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.is_repair" :value="scope.row.isMaintenance"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['zdsz:comprehensive:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['zdsz:comprehensive:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改开栓|安检|维修对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="110px">
+        <el-form-item label="小区" prop="areaId">
+          <el-select v-model="form.areaId" placeholder="请选择小区" filterable @change="getBuildings1">
+            <el-option
+              v-for="obj in areas"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="楼栋" prop="buildingId">
+          <el-select v-model="form.buildingId" placeholder="请选择楼栋" filterable @change="getUnits1">
+            <el-option
+              v-for="obj in builds"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="单元" prop="unitId">
+          <el-select v-model="form.unitId" placeholder="请选择单元" filterable @change="getHouses1">
+            <el-option
+              v-for="obj in units"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="房间号" prop="houseId">
+          <el-select v-model="form.houseId" placeholder="请选择房间号" filterable>
+            <el-option
+              v-for="obj in houses"
+              :key="obj.id"
+              :label="obj.name"
+              :value="obj.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="安检是否合格" prop="isQualified">
+          <!--          <el-input v-model="form.isQualified" placeholder="请输入安检是否合格" />-->
+          <el-select v-model="form.isQualified" placeholder="请选择安检是否合格" filterable>
+            <el-option
+              v-for="obj in dict.type.pass_check"
+              :key="obj.value"
+              :label="obj.label"
+              :value="obj.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否维修" prop="isMaintenance">
+          <!--          <el-input v-model="form.isMaintenance" placeholder="请输入是否维修" />-->
+          <el-select v-model="form.isMaintenance" placeholder="请选择是否维修" filterable>
+            <el-option
+              v-for="obj in dict.type.is_repair"
+              :key="obj.value"
+              :label="obj.label"
+              :value="obj.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listComprehensive, getComprehensive, delComprehensive, addComprehensive, updateComprehensive } from "@/api/zdsz/comprehensive";
+import {getBuildings} from "@/api/zdsz/building";
+import {getUnits} from "@/api/zdsz/unit";
+import {getAreas} from "@/api/zdsz/area";
+import {getHouses, listHouse} from "@/api/zdsz/house";
+
+export default {
+  name: "openrepair",
+  dicts:['pass_check','is_repair'],
+  data() {
+    return {
+      // 按钮loading
+      buttonLoading: false,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 开栓|安检|维修表格数据
+      comprehensiveList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        areaId: undefined,
+        buildingId: undefined,
+        unitId: undefined,
+        houseId: undefined,
+        type: 3,
+        isQualified: undefined,
+        isMaintenance: undefined,
+      },
+      // 表单参数
+      form: {},
+      areas: [],
+      builds: [],
+      units: [],
+      rooms: [],
+      houses: [],
+      // 表单校验
+      rules: {
+        areaId: [
+          { required: true, message: "小区不能为空", trigger: "change" }
+        ],
+        buildingId: [
+          { required: true, message: "楼栋不能为空", trigger: "change" }
+        ],
+        unitId: [
+          { required: true, message: "单元不能为空", trigger: "change" }
+        ],
+        houseId: [
+          { required: true, message: "房间不能为空", trigger: "change" }
+        ],
+        type: [
+          { required: false, message: "类型不能为空", trigger: "change" }
+        ],
+        isQualified: [
+          { required: true, message: "安检是否合格不能为空", trigger: "blur" }
+        ],
+        isMaintenance: [
+          { required: true, message: "是否维修不能为空", trigger: "blur" }
+        ],
+        remark: [
+          { required: false, message: "备注不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getAreas();
+  },
+  methods: {
+    getBuildings(id) {
+      this.units = []
+      this.houses = []
+      this.queryParams.buildingId = undefined
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    getUnits(id) {
+      this.houses = []
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      getUnits(this.queryParams.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
+    getAreas() {
+      this.builds = []
+      this.units = []
+      this.houses = []
+      this.queryParams.buildingId = undefined
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      this.form.buildingId = undefined
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getAreas().then(res => {
+        this.areas = res.data;
+      });
+    },
+    getHouses() {
+      this.houses = []
+      this.queryParams.houseId = undefined
+      getHouses(this.queryParams.unitId).then(res => {
+        this.houses = res.data;
+      });
+    },
+    getBuildings1(id) {
+      this.units = []
+      this.houses = []
+      this.form.buildingId = undefined
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    getUnits1(id) {
+      this.houses = []
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getUnits(this.form.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
+    getHouses1() {
+      this.houses = []
+      this.form.houseId = undefined
+      getHouses(this.form.unitId).then(res => {
+        this.houses = res.data;
+      });
+    },
+    /** 查询开栓|安检|维修列表 */
+    getList() {
+      this.loading = true;
+      listComprehensive(this.queryParams).then(response => {
+        this.comprehensiveList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+      this.houses = []
+      this.units = []
+      this.builds = []
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        areaId: undefined,
+        buildingId: undefined,
+        unitId: undefined,
+        houseId: undefined,
+        type: 3,
+        isQualified: undefined,
+        isMaintenance: undefined,
+        remark: undefined,
+        delFlag: 0,
+        createBy: undefined,
+        createTime: undefined,
+        updateBy: undefined,
+        updateTime: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加维修";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      getBuildings(row.areaId).then(res => {
+        this.builds = res.data
+      });
+      getUnits(row.areaId,row.buildingId).then(res => {
+        this.units = res.data
+      })
+      getHouses(row.unitId).then(res => {
+        this.houses = res.data;
+      });
+      this.loading = true;
+      this.reset();
+      const id = row.id || this.ids
+      getComprehensive(id).then(response => {
+        this.loading = false;
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改维修";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.buttonLoading = true;
+          if (this.form.id != null) {
+            updateComprehensive(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          } else {
+            addComprehensive(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除维修为"' + ids + '"的数据项?').then(() => {
+        this.loading = true;
+        return delComprehensive(ids);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('zdsz/openbolt/export', {
+        ...this.queryParams
+      }, `comprehensive_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 92 - 34
src/views/zdsz/unit/index.vue

@@ -1,10 +1,32 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="" prop="name">
+      <el-form-item label="小区名称" prop="areaId">
+        <el-select v-model="queryParams.areaId" filterable clearable placeholder="请选择小区"
+                   @change="queryParams.buildingId = undefined;getBuildingList(queryParams.areaId)"
+                   @clear="queryParams.buildingId = undefined;buildingList=[]">
+          <el-option
+            v-for="item in areaList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="楼宇名称" prop="buildingId">
+        <el-select v-model="queryParams.buildingId" filterable clearable placeholder="请选择楼宇">
+          <el-option
+            v-for="item in buildingList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="单元名称" prop="name">
         <el-input
           v-model="queryParams.name"
-          placeholder="请输入"
+          placeholder="请输入单元名称"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -24,7 +46,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['zdsz:unit:add']"
-        >新增</el-button>
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -35,7 +58,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['zdsz:unit:edit']"
-        >修改</el-button>
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -46,28 +70,19 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['zdsz:unit:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['zdsz:unit:export']"
-        >导出</el-button>
+        >删除
+        </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="unitList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="" align="center" prop="areaId" />
-      <el-table-column label="" align="center" prop="buildingId" />
-      <el-table-column label="" align="center" prop="name" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="" align="center" prop="id" v-if="false"/>
+      <el-table-column label="小区名称" align="center" prop="areaName"/>
+      <el-table-column label="楼宇名称" align="center" prop="buildingName"/>
+      <el-table-column label="单元名称" align="center" prop="name"/>
+      <el-table-column label="备注" align="center" prop="remark"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -76,14 +91,16 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['zdsz:unit:edit']"
-          >修改</el-button>
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['zdsz:unit:remove']"
-          >删除</el-button>
+          >删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -99,11 +116,33 @@
     <!-- 添加或修改单元管理对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="" prop="name">
-          <el-input v-model="form.name" placeholder="请输入" />
+        <el-form-item label="小区名称" prop="areaId">
+          <el-select v-model="form.areaId" filterable clearable placeholder="请选择小区"
+                     @change="getBuildingList(form.areaId);form.buildingId = undefined"
+                     @clear="form.buildingId = undefined;buildingList=[]">
+            <el-option
+              v-for="item in areaList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="楼宇名称" prop="buildingId">
+          <el-select v-model="form.buildingId" filterable clearable placeholder="请选择楼宇">
+            <el-option
+              v-for="item in buildingList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="单元名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入"/>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -115,7 +154,9 @@
 </template>
 
 <script>
-import { listUnit, getUnit, delUnit, addUnit, updateUnit } from "@/api/zdsz/unit";
+import {listUnit, getUnit, delUnit, addUnit, updateUnit} from "@/api/zdsz/unit";
+import {getAreaList} from "@/api/zdsz/area";
+import {getBuildingList} from "@/api/zdsz/building";
 
 export default {
   name: "Unit",
@@ -154,27 +195,41 @@ export default {
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "不能为空", trigger: "blur" }
+          {required: true, message: "不能为空", trigger: "blur"}
         ],
         areaId: [
-          { required: true, message: "不能为空", trigger: "change" }
+          {required: true, message: "不能为空", trigger: "change"}
         ],
         buildingId: [
-          { required: true, message: "不能为空", trigger: "change" }
+          {required: true, message: "不能为空", trigger: "change"}
         ],
         name: [
-          { required: true, message: "不能为空", trigger: "blur" }
+          {required: true, message: "不能为空", trigger: "blur"}
         ],
         remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
+          {required: false, message: "备注不能为空", trigger: "blur"}
         ],
-      }
+      },
+      areaList: [],
+      buildingList: []
     };
   },
   created() {
     this.getList();
   },
+  mounted() {
+    this.getAreaList();
+  },
   methods: {
+    getAreaList() {
+      getAreaList().then(res => this.areaList = res.data)
+    },
+    getBuildingList(areaId) {
+      if (areaId === undefined || areaId == null || areaId === '')
+        return
+      this.queryParams.buildingId = undefined
+      getBuildingList({areaId: areaId}).then(res => this.buildingList = res.data)
+    },
     /** 查询单元管理列表 */
     getList() {
       this.loading = true;
@@ -212,13 +267,14 @@ export default {
     },
     /** 重置按钮操作 */
     resetQuery() {
+      this.buildingList = []
       this.resetForm("queryForm");
       this.handleQuery();
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
@@ -235,6 +291,8 @@ export default {
       getUnit(id).then(response => {
         this.loading = false;
         this.form = response.data;
+        this.queryParams.buildingId = undefined
+        this.getBuildingList(response.data.areaId)
         this.open = true;
         this.title = "修改单元管理";
       });