Sfoglia il codice sorgente

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

付宇航 1 anno fa
parent
commit
618b157116

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

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-// 查询楼管理列表
+// 查询楼管理列表
 export function listBuilding(query) {
   return request({
     url: '/zdsz/building/list',
@@ -9,7 +9,7 @@ export function listBuilding(query) {
   })
 }
 
-// 查询楼管理详细
+// 查询楼管理详细
 export function getBuilding(id) {
   return request({
     url: '/zdsz/building/' + id,
@@ -17,7 +17,7 @@ export function getBuilding(id) {
   })
 }
 
-// 新增楼管理
+// 新增楼管理
 export function addBuilding(data) {
   return request({
     url: '/zdsz/building',
@@ -26,7 +26,7 @@ export function addBuilding(data) {
   })
 }
 
-// 修改楼管理
+// 修改楼管理
 export function updateBuilding(data) {
   return request({
     url: '/zdsz/building',
@@ -35,7 +35,7 @@ export function updateBuilding(data) {
   })
 }
 
-// 删除楼管理
+// 删除楼管理
 export function delBuilding(id) {
   return request({
     url: '/zdsz/building/' + id,

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

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

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

@@ -0,0 +1,44 @@
+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'
+  })
+}

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

@@ -0,0 +1,44 @@
+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'
+  })
+}

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

@@ -0,0 +1,44 @@
+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/engineeringMaterial.js

@@ -0,0 +1,44 @@
+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'
+  })
+}

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询工程用料预设列表
+export function listEngineeringMaterialsResets(query) {
+  return request({
+    url: '/zdsz/engineeringMaterialsResets/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工程用料预设详细
+export function getEngineeringMaterialsResets(id) {
+  return request({
+    url: '/zdsz/engineeringMaterialsResets/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工程用料预设
+export function addEngineeringMaterialsResets(data) {
+  return request({
+    url: '/zdsz/engineeringMaterialsResets',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工程用料预设
+export function updateEngineeringMaterialsResets(data) {
+  return request({
+    url: '/zdsz/engineeringMaterialsResets',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工程用料预设
+export function delEngineeringMaterialsResets(id) {
+  return request({
+    url: '/zdsz/engineeringMaterialsResets/' + id,
+    method: 'delete'
+  })
+}

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

@@ -0,0 +1,44 @@
+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'
+  })
+}

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

@@ -0,0 +1,44 @@
+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'
+  })
+}

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

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-// 查询房管理列表
+// 查询房管理列表
 export function listHouse(query) {
   return request({
     url: '/zdsz/house/list',
@@ -9,7 +9,7 @@ export function listHouse(query) {
   })
 }
 
-// 查询房管理详细
+// 查询房管理详细
 export function getHouse(id) {
   return request({
     url: '/zdsz/house/' + id,
@@ -17,7 +17,7 @@ export function getHouse(id) {
   })
 }
 
-// 新增房管理
+// 新增房管理
 export function addHouse(data) {
   return request({
     url: '/zdsz/house',
@@ -26,7 +26,7 @@ export function addHouse(data) {
   })
 }
 
-// 修改房管理
+// 修改房管理
 export function updateHouse(data) {
   return request({
     url: '/zdsz/house',
@@ -35,7 +35,7 @@ export function updateHouse(data) {
   })
 }
 
-// 删除房管理
+// 删除房管理
 export function delHouse(id) {
   return request({
     url: '/zdsz/house/' + id,

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

@@ -0,0 +1,44 @@
+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'
+  })
+}

+ 111 - 93
src/views/zdsz/area/index.vue

@@ -1,18 +1,18 @@
 <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-input
           v-model="queryParams.name"
-          placeholder="请输入小区名"
+          placeholder="请输入小区名"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="负责工长" prop="userId">
+      <el-form-item label="小区规模" prop="scale">
         <el-input
-          v-model="queryParams.userId"
-          placeholder="请输入负责工长"
+          v-model="queryParams.scale"
+          placeholder="请输入小区规模"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -34,44 +34,34 @@
         />
       </el-form-item>
       <el-form-item label="行政区" prop="district">
-        <el-input
-          v-model="queryParams.district"
-          placeholder="请输入行政区"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <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="calculateDistrictId">
-        <el-input
-          v-model="queryParams.calculateDistrictId"
-          placeholder="请输入"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="核算行政区" prop="calculateDistrict">
+        <el-select v-model="queryParams.calculateDistrict" 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="calculateDistrictName">
-        <el-input
-          v-model="queryParams.calculateDistrictName"
-          placeholder="请输入"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="" prop="areaSize">
-        <el-input
-          v-model="queryParams.areaSize"
-          placeholder="请输入"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="" prop="affiliatedPackage">
-        <el-input
-          v-model="queryParams.affiliatedPackage"
-          placeholder="请输入"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="所属包" prop="belongingPack">
+        <el-select v-model="queryParams.belongingPack" placeholder="请选择所属包" clearable>
+          <el-option
+            v-for="dict in dict.type.belonging_pack"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -127,16 +117,31 @@
 
     <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" v-if="true"/>
-      <el-table-column label="小区名" align="center" prop="name" />
-      <el-table-column label="负责工长" align="center" prop="userId" />
-      <el-table-column label="是否释放" align="center" prop="releaseIs" />
+      <el-table-column label="" align="center" prop="id" v-if="true"/>
+      <el-table-column label="小区名称" align="center" prop="name" />
+      <el-table-column label="小区规模" align="center" prop="scale" />
+      <el-table-column label="是否释放" align="center" prop="releaseIs">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.release_status" :value="scope.row.releaseIs"/>
+        </template>
+      </el-table-column>
       <el-table-column label="释放人" align="center" prop="releaseBy" />
-      <el-table-column label="行政区" align="center" prop="district" />
-      <el-table-column label="" align="center" prop="calculateDistrictId" />
-      <el-table-column label="" align="center" prop="calculateDistrictName" />
-      <el-table-column label="" align="center" prop="areaSize" />
-      <el-table-column label="" align="center" prop="affiliatedPackage" />
+      <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="核算行政区" align="center" prop="calculateDistrict">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.district" :value="scope.row.calculateDistrict"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="所属包" align="center" prop="belongingPack">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.belonging_pack" :value="scope.row.belongingPack"/>
+        </template>
+      </el-table-column>
+      <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
@@ -168,32 +173,50 @@
     <!-- 添加或修改小区管理对话框 -->
     <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-input v-model="form.name" placeholder="请输入小区名" />
         </el-form-item>
-        <el-form-item label="负责工长" prop="userId">
-          <el-input v-model="form.userId" placeholder="请输入负责工长" />
+        <el-form-item label="小区规模" prop="scale">
+          <el-input v-model="form.scale" placeholder="请输入小区规模" />
         </el-form-item>
         <el-form-item label="是否释放" prop="releaseIs">
-          <el-input v-model="form.releaseIs" placeholder="请输入是否释放" />
+          <el-input v-model="form.releaseIs" type="textarea" placeholder="请输入内容" />
         </el-form-item>
         <el-form-item label="释放人" prop="releaseBy">
           <el-input v-model="form.releaseBy" placeholder="请输入释放人" />
         </el-form-item>
         <el-form-item label="行政区" prop="district">
-          <el-input v-model="form.district" placeholder="请输入行政区" />
-        </el-form-item>
-        <el-form-item label="" prop="calculateDistrictId">
-          <el-input v-model="form.calculateDistrictId" placeholder="请输入" />
+          <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="calculateDistrictName">
-          <el-input v-model="form.calculateDistrictName" placeholder="请输入" />
+        <el-form-item label="核算行政区" prop="calculateDistrict">
+          <el-select v-model="form.calculateDistrict" 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="areaSize">
-          <el-input v-model="form.areaSize" placeholder="请输入" />
+        <el-form-item label="所属包" prop="belongingPack">
+          <el-select v-model="form.belongingPack" placeholder="请选择所属包">
+            <el-option
+              v-for="dict in dict.type.belonging_pack"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
         </el-form-item>
-        <el-form-item label="" prop="affiliatedPackage">
-          <el-input v-model="form.affiliatedPackage" placeholder="请输入" />
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -209,6 +232,7 @@ import { listArea, getArea, delArea, addArea, updateArea } from "@/api/zdsz/area
 
 export default {
   name: "Area",
+  dicts: ['belonging_pack', 'district'],
   data() {
     return {
       // 按钮loading
@@ -236,27 +260,25 @@ export default {
         pageNum: 1,
         pageSize: 10,
         name: undefined,
-        userId: undefined,
+        scale: undefined,
         releaseIs: undefined,
         releaseBy: undefined,
         district: undefined,
-        calculateDistrictId: undefined,
-        calculateDistrictName: undefined,
-        areaSize: undefined,
-        affiliatedPackage: undefined
+        calculateDistrict: undefined,
+        belongingPack: undefined,
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "主键id不能为空", trigger: "blur" }
+          { required: true, message: "不能为空", trigger: "blur" }
         ],
         name: [
-          { required: true, message: "小区名不能为空", trigger: "blur" }
+          { required: true, message: "小区名不能为空", trigger: "blur" }
         ],
-        userId: [
-          { required: true, message: "负责工长不能为空", trigger: "blur" }
+        scale: [
+          { required: true, message: "小区规模不能为空", trigger: "blur" }
         ],
         releaseIs: [
           { required: true, message: "是否释放不能为空", trigger: "blur" }
@@ -265,20 +287,17 @@ export default {
           { required: true, message: "释放人不能为空", trigger: "blur" }
         ],
         district: [
-          { required: true, message: "行政区不能为空", trigger: "blur" }
+          { required: true, message: "行政区不能为空", trigger: "change" }
         ],
-        calculateDistrictId: [
-          { required: true, message: "不能为空", trigger: "blur" }
+        calculateDistrict: [
+          { required: true, message: "核算行政区不能为空", trigger: "change" }
         ],
-        calculateDistrictName: [
-          { required: true, message: "不能为空", trigger: "blur" }
+        belongingPack: [
+          { required: true, message: "所属包不能为空", trigger: "change" }
         ],
-        areaSize: [
-          { required: true, message: "不能为空", trigger: "blur" }
+        remark: [
+          { required: true, message: "备注不能为空", trigger: "blur" }
         ],
-        affiliatedPackage: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        ]
       }
     };
   },
@@ -305,19 +324,18 @@ export default {
       this.form = {
         id: undefined,
         name: undefined,
-        userId: undefined,
+        scale: undefined,
+        releaseIs: undefined,
+        releaseBy: undefined,
+        district: undefined,
+        calculateDistrict: undefined,
+        belongingPack: undefined,
+        remark: undefined,
         delFlag: undefined,
         createBy: undefined,
         createTime: undefined,
         updateBy: undefined,
-        updateTime: undefined,
-        releaseIs: undefined,
-        releaseBy: undefined,
-        district: undefined,
-        calculateDistrictId: undefined,
-        calculateDistrictName: undefined,
-        areaSize: undefined,
-        affiliatedPackage: undefined
+        updateTime: undefined
       };
       this.resetForm("form");
     },

+ 26 - 29
src/views/zdsz/building/index.vue

@@ -1,18 +1,10 @@
 <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-input
           v-model="queryParams.name"
-          placeholder="请输入楼宇名"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="小区id" prop="areaId">
-        <el-input
-          v-model="queryParams.areaId"
-          placeholder="请输入小区id"
+          placeholder="请输入"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -71,9 +63,10 @@
 
     <el-table v-loading="loading" :data="buildingList" @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="name" />
-      <el-table-column label="小区id" align="center" prop="areaId" />
+      <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 label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -102,14 +95,14 @@
       @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="name">
-          <el-input v-model="form.name" placeholder="请输入楼宇名" />
+        <el-form-item label="" prop="name">
+          <el-input v-model="form.name" placeholder="请输入" />
         </el-form-item>
-        <el-form-item label="小区id" prop="areaId">
-          <el-input v-model="form.areaId" placeholder="请输入小区id" />
+        <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">
@@ -141,7 +134,7 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 楼管理表格数据
+      // 楼管理表格数据
       buildingList: [],
       // 弹出层标题
       title: "",
@@ -151,21 +144,24 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        name: undefined,
         areaId: undefined,
+        name: undefined,
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "主键id不能为空", trigger: "blur" }
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        areaId: [
+          { required: true, message: "不能为空", trigger: "change" }
         ],
         name: [
-          { required: true, message: "楼宇名不能为空", trigger: "blur" }
+          { required: true, message: "不能为空", trigger: "blur" }
         ],
-        areaId: [
-          { required: true, message: "小区id不能为空", trigger: "blur" }
+        remark: [
+          { required: true, message: "备注不能为空", trigger: "blur" }
         ],
       }
     };
@@ -174,7 +170,7 @@ export default {
     this.getList();
   },
   methods: {
-    /** 查询楼管理列表 */
+    /** 查询楼管理列表 */
     getList() {
       this.loading = true;
       listBuilding(this.queryParams).then(response => {
@@ -192,8 +188,9 @@ export default {
     reset() {
       this.form = {
         id: undefined,
-        name: undefined,
         areaId: undefined,
+        name: undefined,
+        remark: undefined,
         delFlag: undefined,
         createBy: undefined,
         createTime: undefined,
@@ -222,7 +219,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加楼管理";
+      this.title = "添加楼管理";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -233,7 +230,7 @@ export default {
         this.loading = false;
         this.form = response.data;
         this.open = true;
-        this.title = "修改楼管理";
+        this.title = "修改楼管理";
       });
     },
     /** 提交按钮 */
@@ -264,7 +261,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除楼管理编号为"' + ids + '"的数据项?').then(() => {
+      this.$modal.confirm('是否确认删除楼管理编号为"' + ids + '"的数据项?').then(() => {
         this.loading = true;
         return delBuilding(ids);
       }).then(() => {

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

@@ -0,0 +1,325 @@
+<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>

+ 295 - 0
src/views/zdsz/engiineeringPhoto/index.vue

@@ -0,0 +1,295 @@
+<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>
+      <el-form-item label="图片地址" prop="picUrl">
+        <el-input
+          v-model="queryParams.picUrl"
+          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:engiineeringPhoto: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:engiineeringPhoto: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:engiineeringPhoto: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:engiineeringPhoto: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-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:engiineeringPhoto:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['zdsz:engiineeringPhoto: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="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>
+        <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 { listEngiineeringPhoto, getEngiineeringPhoto, delEngiineeringPhoto, addEngiineeringPhoto, updateEngiineeringPhoto } from "@/api/zdsz/engiineeringPhoto";
+
+export default {
+  name: "EngiineeringPhoto",
+  data() {
+    return {
+      // 按钮loading
+      buttonLoading: false,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 照片表格数据
+      engiineeringPhotoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        parentId: undefined,
+        picUrl: undefined,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        id: [
+          { required: true, message: "主键不能为空", trigger: "blur" }
+        ],
+        parentId: [
+          { required: true, message: "上级id不能为空", trigger: "blur" }
+        ],
+        picUrl: [
+          { required: true, message: "图片地址不能为空", trigger: "blur" }
+        ],
+        remark: [
+          { required: true, message: "备注不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询照片列表 */
+    getList() {
+      this.loading = true;
+      listEngiineeringPhoto(this.queryParams).then(response => {
+        this.engiineeringPhotoList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        parentId: undefined,
+        picUrl: 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
+      getEngiineeringPhoto(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) {
+            updateEngiineeringPhoto(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          } else {
+            addEngiineeringPhoto(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 delEngiineeringPhoto(ids);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('zdsz/engiineeringPhoto/export', {
+        ...this.queryParams
+      }, `engiineeringPhoto_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

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

@@ -0,0 +1,358 @@
+<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>

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

@@ -0,0 +1,451 @@
+<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>

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

@@ -0,0 +1,320 @@
+<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>

+ 302 - 0
src/views/zdsz/engineeringMaterialsResets/index.vue

@@ -0,0 +1,302 @@
+<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>
+      <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:engineeringMaterialsResets: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:engineeringMaterialsResets: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:engineeringMaterialsResets: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:engineeringMaterialsResets:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <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="estimatedSize" />
+      <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:engineeringMaterialsResets:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['zdsz:engineeringMaterialsResets: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="estimatedSize">
+          <el-input v-model="form.estimatedSize" 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 { listEngineeringMaterialsResets, getEngineeringMaterialsResets, delEngineeringMaterialsResets, addEngineeringMaterialsResets, updateEngineeringMaterialsResets } from "@/api/zdsz/engineeringMaterialsResets";
+
+export default {
+  name: "EngineeringMaterialsResets",
+  data() {
+    return {
+      // 按钮loading
+      buttonLoading: false,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工程用料预设表格数据
+      engineeringMaterialsResetsList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        areaId: undefined,
+        materialQuality: undefined,
+        estimatedSpecifications: undefined,
+        estimatedSize: undefined,
+        enginCycle: undefined,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        id: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        areaId: [
+          { required: true, message: "不能为空", trigger: "change" }
+        ],
+        materialQuality: [
+          { required: true, message: "材质不能为空", trigger: "change" }
+        ],
+        estimatedSpecifications: [
+          { required: true, message: "规格不能为空", trigger: "change" }
+        ],
+        estimatedSize: [
+          { 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;
+      listEngineeringMaterialsResets(this.queryParams).then(response => {
+        this.engineeringMaterialsResetsList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        areaId: undefined,
+        materialQuality: undefined,
+        estimatedSpecifications: undefined,
+        estimatedSize: 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
+      getEngineeringMaterialsResets(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) {
+            updateEngineeringMaterialsResets(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          } else {
+            addEngineeringMaterialsResets(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 delEngineeringMaterialsResets(ids);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('zdsz/engineeringMaterialsResets/export', {
+        ...this.queryParams
+      }, `engineeringMaterialsResets_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 285 - 0
src/views/zdsz/engineeringNode/index.vue

@@ -0,0 +1,285 @@
+<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-input
+          v-model="queryParams.civliId"
+          placeholder="请输入民用工程id"
+          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:engineeringNode: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:engineeringNode: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:engineeringNode: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:engineeringNode: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-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:engineeringNode:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['zdsz:engineeringNode: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="civliId">
+          <el-input v-model="form.civliId" placeholder="请输入民用工程id" />
+        </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 { listEngineeringNode, getEngineeringNode, delEngineeringNode, addEngineeringNode, updateEngineeringNode } from "@/api/zdsz/engineeringNode";
+
+export default {
+  name: "EngineeringNode",
+  data() {
+    return {
+      // 按钮loading
+      buttonLoading: false,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工程节点表格数据
+      engineeringNodeList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        civliId: undefined,
+        type: undefined,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        id: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        civliId: [
+          { required: true, message: "民用工程id不能为空", trigger: "blur" }
+        ],
+        type: [
+          { required: true, message: "节点类型不能为空", trigger: "change" }
+        ],
+        remark: [
+          { required: true, message: "备注不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询工程节点列表 */
+    getList() {
+      this.loading = true;
+      listEngineeringNode(this.queryParams).then(response => {
+        this.engineeringNodeList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        civliId: undefined,
+        type: 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
+      getEngineeringNode(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) {
+            updateEngineeringNode(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          } else {
+            addEngineeringNode(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 delEngineeringNode(ids);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('zdsz/engineeringNode/export', {
+        ...this.queryParams
+      }, `engineeringNode_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 345 - 0
src/views/zdsz/engineeringReview/index.vue

@@ -0,0 +1,345 @@
+<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>
+      <el-form-item label="审核人" prop="reviewUser">
+        <el-input
+          v-model="queryParams.reviewUser"
+          placeholder="请输入审核人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="审核内容" prop="reviewContent">
+        <el-input
+          v-model="queryParams.reviewContent"
+          placeholder="请输入审核内容"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <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>
+        <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:engineeringReview: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:engineeringReview: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:engineeringReview: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:engineeringReview: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-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">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.reviewTime, '{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="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:engineeringReview:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['zdsz:engineeringReview: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="reviewTime">
+          <el-date-picker clearable
+            v-model="form.reviewTime"
+            type="datetime"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="请选择审核时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="审核人" prop="reviewUser">
+          <el-input v-model="form.reviewUser" placeholder="请输入审核人" />
+        </el-form-item>
+        <el-form-item label="审核内容" prop="reviewContent">
+          <el-input v-model="form.reviewContent" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="节点ID" prop="engInfoId">
+          <el-input v-model="form.engInfoId" placeholder="请输入节点ID" />
+        </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 { listEngineeringReview, getEngineeringReview, delEngineeringReview, addEngineeringReview, updateEngineeringReview } from "@/api/zdsz/engineeringReview";
+
+export default {
+  name: "EngineeringReview",
+  data() {
+    return {
+      // 按钮loading
+      buttonLoading: false,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工程审核表格数据
+      engineeringReviewList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        reviewTime: undefined,
+        reviewUser: undefined,
+        reviewStatus: undefined,
+        reviewContent: undefined,
+        engInfoId: undefined,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        id: [
+          { required: true, message: "主键不能为空", trigger: "blur" }
+        ],
+        reviewTime: [
+          { required: true, message: "审核时间不能为空", trigger: "blur" }
+        ],
+        reviewUser: [
+          { required: true, message: "审核人不能为空", trigger: "blur" }
+        ],
+        reviewStatus: [
+          { required: true, message: "审核状态不能为空", trigger: "change" }
+        ],
+        reviewContent: [
+          { required: true, message: "审核内容不能为空", trigger: "blur" }
+        ],
+        engInfoId: [
+          { required: true, message: "节点ID不能为空", trigger: "blur" }
+        ],
+        remark: [
+          { required: true, message: "备注不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询工程审核列表 */
+    getList() {
+      this.loading = true;
+      listEngineeringReview(this.queryParams).then(response => {
+        this.engineeringReviewList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        reviewTime: undefined,
+        reviewUser: undefined,
+        reviewStatus: undefined,
+        reviewContent: undefined,
+        engInfoId: 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
+      getEngineeringReview(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) {
+            updateEngineeringReview(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          } else {
+            addEngineeringReview(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 delEngineeringReview(ids);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('zdsz/engineeringReview/export', {
+        ...this.queryParams
+      }, `engineeringReview_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 38 - 29
src/views/zdsz/house/index.vue

@@ -1,18 +1,10 @@
 <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-input
           v-model="queryParams.name"
-          placeholder="请输入房屋名"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="单元id" prop="unitId">
-        <el-input
-          v-model="queryParams.unitId"
-          placeholder="请输入单元id"
+          placeholder="请输入"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -71,9 +63,12 @@
 
     <el-table v-loading="loading" :data="houseList" @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="name" />
-      <el-table-column label="单元id" align="center" prop="unitId" />
+      <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 label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -102,14 +97,14 @@
       @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="name">
-          <el-input v-model="form.name" placeholder="请输入房屋名" />
+        <el-form-item label="" prop="name">
+          <el-input v-model="form.name" placeholder="请输入" />
         </el-form-item>
-        <el-form-item label="单元id" prop="unitId">
-          <el-input v-model="form.unitId" placeholder="请输入单元id" />
+        <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">
@@ -141,7 +136,7 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 房管理表格数据
+      // 房管理表格数据
       houseList: [],
       // 弹出层标题
       title: "",
@@ -151,21 +146,32 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        name: undefined,
+        areaId: undefined,
+        buildingId: undefined,
         unitId: undefined,
+        name: undefined,
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "主键id不能为空", trigger: "blur" }
+          { required: true, message: "不能为空", trigger: "blur" }
         ],
-        name: [
-          { required: true, message: "房屋名不能为空", trigger: "blur" }
+        areaId: [
+          { required: true, message: "不能为空", trigger: "change" }
+        ],
+        buildingId: [
+          { required: true, message: "不能为空", trigger: "change" }
         ],
         unitId: [
-          { required: true, message: "单元id不能为空", trigger: "blur" }
+          { required: true, message: "不能为空", trigger: "change" }
+        ],
+        name: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        remark: [
+          { required: true, message: "备注不能为空", trigger: "blur" }
         ],
       }
     };
@@ -174,7 +180,7 @@ export default {
     this.getList();
   },
   methods: {
-    /** 查询房管理列表 */
+    /** 查询房管理列表 */
     getList() {
       this.loading = true;
       listHouse(this.queryParams).then(response => {
@@ -192,8 +198,11 @@ export default {
     reset() {
       this.form = {
         id: undefined,
-        name: undefined,
+        areaId: undefined,
+        buildingId: undefined,
         unitId: undefined,
+        name: undefined,
+        remark: undefined,
         delFlag: undefined,
         createBy: undefined,
         createTime: undefined,
@@ -222,7 +231,7 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加房管理";
+      this.title = "添加房管理";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -233,7 +242,7 @@ export default {
         this.loading = false;
         this.form = response.data;
         this.open = true;
-        this.title = "修改房管理";
+        this.title = "修改房管理";
       });
     },
     /** 提交按钮 */
@@ -264,7 +273,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除房管理编号为"' + ids + '"的数据项?').then(() => {
+      this.$modal.confirm('是否确认删除房管理编号为"' + ids + '"的数据项?').then(() => {
         this.loading = true;
         return delHouse(ids);
       }).then(() => {

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

@@ -0,0 +1,320 @@
+<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>

+ 26 - 23
src/views/zdsz/unit/index.vue

@@ -1,18 +1,10 @@
 <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-input
           v-model="queryParams.name"
-          placeholder="请输入单元名"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="楼宇id" prop="buildingId">
-        <el-input
-          v-model="queryParams.buildingId"
-          placeholder="请输入楼宇id"
+          placeholder="请输入"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -71,9 +63,11 @@
 
     <el-table v-loading="loading" :data="unitList" @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="name" />
-      <el-table-column label="楼宇id" align="center" prop="buildingId" />
+      <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 label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -105,11 +99,11 @@
     <!-- 添加或修改单元管理对话框 -->
     <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-input v-model="form.name" placeholder="请输入" />
         </el-form-item>
-        <el-form-item label="楼宇id" prop="buildingId">
-          <el-input v-model="form.buildingId" placeholder="请输入楼宇id" />
+        <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">
@@ -151,21 +145,28 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        name: undefined,
+        areaId: undefined,
         buildingId: undefined,
+        name: undefined,
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "主键id不能为空", trigger: "blur" }
+          { required: true, message: "不能为空", trigger: "blur" }
         ],
-        name: [
-          { required: true, message: "单元名不能为空", trigger: "blur" }
+        areaId: [
+          { required: true, message: "不能为空", trigger: "change" }
         ],
         buildingId: [
-          { required: true, message: "楼宇id不能为空", trigger: "blur" }
+          { required: true, message: "不能为空", trigger: "change" }
+        ],
+        name: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        remark: [
+          { required: true, message: "备注不能为空", trigger: "blur" }
         ],
       }
     };
@@ -192,8 +193,10 @@ export default {
     reset() {
       this.form = {
         id: undefined,
-        name: undefined,
+        areaId: undefined,
         buildingId: undefined,
+        name: undefined,
+        remark: undefined,
         delFlag: undefined,
         createBy: undefined,
         createTime: undefined,