浏览代码

Merge remote-tracking branch 'origin/zdsz3.0' into zdsz3.0

qinhouyu 1 年之前
父节点
当前提交
2769093bfd

+ 44 - 1
src/api/zdsz/enginee.js

@@ -179,4 +179,47 @@ export function deleteEngineeringPipeJacking(id) {
       url: `/zdsz/engineeringPipeJacking/${id}`,
       url: `/zdsz/engineeringPipeJacking/${id}`,
       method: 'delete',
       method: 'delete',
     })
     })
-}
+}
+
+
+// 新增基建工程
+export function addEngineeringInfrastructure(data) {
+    return request({
+      url: '/zdsz/engineeringInfrastructure',
+      method: 'post',
+      data
+    })
+}
+
+// 修改基建工程
+export function putEngineeringInfrastructure(data) {
+    return request({
+      url: '/zdsz/engineeringInfrastructure',
+      method: 'put',
+      data
+    })
+}
+
+// 查询基建工程列表
+export function getEngineeringInfrastructure({enginName = ''}) {
+    return request({
+        url: `/zdsz/engineeringInfrastructure/list?enginName=${enginName}`,
+        method: 'get',
+    })
+}
+
+// 查询基建工程详情
+export function viewEngineeringInfrastructure(id) {
+    return request({
+        url: `/zdsz/engineeringInfrastructure/${id}`,
+        method: 'get',
+    })
+}
+
+// 删除基建工程
+export function deleteEngineeringInfrastructure(id) {
+    return request({
+        url: `/zdsz/engineeringInfrastructure/${id}`,
+        method: 'delete',
+    })
+}

+ 106 - 13
src/components/EngineeNode/index.vue

@@ -9,10 +9,28 @@
 
 
 <template>
 <template>
   <div style="width: 100%; height: 100%;">
   <div style="width: 100%; height: 100%;">
-    <el-dialog :visible="nodeDetailVisible" :rules="nodeRules" title="节点信息" append-to-body customClass="appendElNodeDialog">
-        <el-form ref="nodeForm" :model="zEngineeringInfoBo" :rules="nodeRules" label-width="110px">
+    <el-dialog :visible="nodeDetailVisible" :rules="nodeRules" title="节点信息" append-to-body customClass="appendElNodeDialog" width="70% !important"> 
+      <!-- 节点选项卡 -->
+      <el-tabs type="border-card" class="engineNodeTypes">
+        <el-tab-pane label="基本信息"></el-tab-pane>
+        <el-tab-pane 
+          :label="e"
+          v-for="e in currentNode"
+          :key="e"
+          >
+        </el-tab-pane>
+      </el-tabs>
+      <!-- 节点表单 -->
+        <el-form ref="nodeForm" :model="zEngineeringInfoBo" :rules="nodeRules" label-width="200px">
             <el-form-item label="节点类型" prop="type">
             <el-form-item label="节点类型" prop="type">
-            <el-input v-model="nodeType" placeholder="顶管" disabled></el-input>
+             <el-select v-model="nodeType" placeholder="请选择节点类型">
+                  <el-option
+                    v-for="e in dict.type.engineering_infrastructure"
+                    :key="e.value"
+                    :label="e.label"
+                    :value="e.value"
+                    ></el-option>
+              </el-select>
             </el-form-item>
             </el-form-item>
             <el-form-item label="施工地址" prop="constructAddre">
             <el-form-item label="施工地址" prop="constructAddre">
             <el-input v-model="zEngineeringInfoBo.constructAddre" placeholder="请填写施工地址"></el-input>
             <el-input v-model="zEngineeringInfoBo.constructAddre" placeholder="请填写施工地址"></el-input>
@@ -69,9 +87,20 @@
             <ObsImageUpload ref="obsImageUpload" :limit="9999" :fileType="['png', 'jpg', 'jpeg']" :value="zEngineeringInfoBo.zEngiineeringPhotoBoList"
             <ObsImageUpload ref="obsImageUpload" :limit="9999" :fileType="['png', 'jpg', 'jpeg']" :value="zEngineeringInfoBo.zEngiineeringPhotoBoList"
                             @input="getUrl"></ObsImageUpload>
                             @input="getUrl"></ObsImageUpload>
             </el-form-item>
             </el-form-item>
-            <el-button :loading="buttonLoading" type="primary" @click="submitForm">提交</el-button>
-            <el-button type="primary" @click="addMaterial">添加用料单</el-button>
-            <el-button @click="nodeCancel">取 消</el-button>
+            <!-- 节点复选框 -->
+            <el-checkbox-group v-model="currentNode" @change="currentNodeHasChanged">
+              <el-checkbox 
+                :label="e"
+                v-for="e in nodeList"
+                :key="e"
+              ></el-checkbox>
+            </el-checkbox-group>
+            <div style="display: flex;margin-top: 3%;">
+              <div style="width: 80%;"></div>
+              <el-button :loading="buttonLoading" type="primary" @click="submitForm">提交</el-button>
+              <el-button type="primary" @click="addMaterial">添加用料单</el-button>
+              <el-button @click="nodeCancel">取 消</el-button>
+            </div>
         </el-form>
         </el-form>
     </el-dialog>
     </el-dialog>
 
 
@@ -135,14 +164,17 @@ import {
     addEngineeringPipeJacking,                 // 新增顶管工程
     addEngineeringPipeJacking,                 // 新增顶管工程
     putEngineeringPipeJacking,                 // 修改顶管工程
     putEngineeringPipeJacking,                 // 修改顶管工程
     getEnginMaterialQualityList,               // 获取工程材质
     getEnginMaterialQualityList,               // 获取工程材质
-    addEngineeringCivil,               // 新增民用工程
-    putEngineeringCivil,                 // 民用修改
+    addEngineeringCivil,                       // 新增民用工程
+    addEngineeringInfrastructure,              // 新增基建工程
+    putEngineeringCivil,                       // 民用修改
+    putEngineeringInfrastructure,              // 基建修改
 } from "@/api/zdsz/enginee"
 } from "@/api/zdsz/enginee"
 export default {
 export default {
     name:'EngineeNode',
     name:'EngineeNode',
-    dicts:['pass_check','is_repair','engin_type','self_closing_valve_type','visit_type','corrosion_level','brand'],
+    dicts:['pass_check','is_repair','engin_type','self_closing_valve_type','visit_type','corrosion_level','brand','engineering_infrastructure'],
     data(){
     data(){
         return {
         return {
+            nodeType:null,              // 节点类型
             params:{},                  // 所有参数集合
             params:{},                  // 所有参数集合
             nodeDetailVisible:false,
             nodeDetailVisible:false,
             // 节点规则校验
             // 节点规则校验
@@ -194,11 +226,11 @@ export default {
             segmentedCompressionQualifiedOption:[
             segmentedCompressionQualifiedOption:[
               {
               {
                 value:'1',
                 value:'1',
-                label:''
+                label:'合格'
               },
               },
               {
               {
                 value:'0',
                 value:'0',
-                label:''
+                label:'不合格'
               }
               }
             ],
             ],
             currentType:null ,          // 民用工程 0 ,市政工程 1,工业工程 2 ,顶管工程 3,危险作业工程 4,基建工程 5
             currentType:null ,          // 民用工程 0 ,市政工程 1,工业工程 2 ,顶管工程 3,危险作业工程 4,基建工程 5
@@ -210,10 +242,15 @@ export default {
               brand:null,                     // 品牌
               brand:null,                     // 品牌
               visitType:'',                   // 上门类型
               visitType:'',                   // 上门类型
               selfClosingValveType:'',        // 自闭阀类型
               selfClosingValveType:'',        // 自闭阀类型
-            }
+            },
+            currentNode:[],
+            nodeList:[],
           }
           }
     },
     },
     methods:{
     methods:{
+        // 当前所选节点发生改变 
+        currentNodeHasChanged(e){
+        },
         // 添加用料
         // 添加用料
         addMaterial(){
         addMaterial(){
           this.drawer = true
           this.drawer = true
@@ -229,6 +266,7 @@ export default {
         },
         },
         // 提交表单 创建新工程
         // 提交表单 创建新工程
         submitForm() {
         submitForm() {
+          console.log(this.currentType)
             // this.$refs["nodeForm"].validate(valid => {
             // this.$refs["nodeForm"].validate(valid => {
                 // if (valid) {
                 // if (valid) {
                   this.zEngineeringInfoBo.zEngineeringMaterialBo.push(this.zEngineeringMaterialBoIO)
                   this.zEngineeringInfoBo.zEngineeringMaterialBo.push(this.zEngineeringMaterialBoIO)
@@ -247,14 +285,31 @@ export default {
                               }
                               }
                             })
                             })
                         break;
                         break;
-                        case 4 :
+                        case 3 :
                             // 危险作业工程
                             // 危险作业工程
                             this.params.zEngineeringNodeBo.zEngineeringInfoBo = this.zEngineeringInfoBo
                             this.params.zEngineeringNodeBo.zEngineeringInfoBo = this.zEngineeringInfoBo
+                            this.params.zEngineeringNodeBo.zEngineeringInfoBo.zEngineeringMaterialBo = []
                             console.log(this.params)
                             console.log(this.params)
                             addEngineeringDangerous(this.params).then(res => {
                             addEngineeringDangerous(this.params).then(res => {
                                 console.log(res)
                                 console.log(res)
                             })
                             })
                         break;
                         break;
+                        case 4 :
+                            // 基建工程新增
+                            this.params.zEngineeringNodeBo.zEngineeringInfoBo = this.zEngineeringInfoBo
+                            this.params.zEngineeringNodeBo.type = this.nodeType
+                            this.params.zEngineeringNodeBo.zEngineeringInfoBo.zEngineeringMaterialBo = []
+                            addEngineeringInfrastructure(this.params).then(res => {
+                              if(res.code == 200){
+                                this.$message({
+                                  message: '新增成功',
+                                  type: 'success'
+                                });
+                                this.$emit('closeToSucceed')
+                                this.nodeDetailVisible = false
+                              }
+                            })
+                        break;
                         case 10 :
                         case 10 :
                             // 顶管新增
                             // 顶管新增
                             this.params.zEngineeringNodeBo.zEngineeringInfoBo = this.zEngineeringInfoBo
                             this.params.zEngineeringNodeBo.zEngineeringInfoBo = this.zEngineeringInfoBo
@@ -270,6 +325,21 @@ export default {
                               }
                               }
                             })
                             })
                         break;
                         break;
+                        case 14 :
+                            // 基建修改
+                            this.params.zEngineeringNodeBo.zEngineeringInfoBo = this.zEngineeringInfoBo
+                            putEngineeringInfrastructure(this.params).then(res => {
+                              console.log('________',res)
+                              if(res.code == 200){
+                                this.$message({
+                                  message: '修改成功',
+                                  type: 'success'
+                                });
+                                this.$emit('closeToSucceed')
+                                this.nodeDetailVisible = false
+                              }
+                            })
+                        break;
                         case 15 :
                         case 15 :
                             // 顶管修改
                             // 顶管修改
                             this.params.zEngineeringNodeBo.zEngineeringInfoBo = this.zEngineeringInfoBo
                             this.params.zEngineeringNodeBo.zEngineeringInfoBo = this.zEngineeringInfoBo
@@ -310,12 +380,21 @@ export default {
             // });
             // });
         },
         },
         open(queryParams,type){
         open(queryParams,type){
+            this.nodeList = []  // 节点初始化
+            // 初始化工程节点
+            this.dict.type.engineering_infrastructure.forEach(e => {
+              this.nodeList.push(e.label)
+            })
+            console.log('当前工程所有节点',this.nodeList)
+            // end
             this.currentType = type
             this.currentType = type
             console.log(this.queryParams)
             console.log(this.queryParams)
+            console.log(this.currentType)
             getEnginMaterialQualityList(this.currentType).then(res => {
             getEnginMaterialQualityList(this.currentType).then(res => {
               console.log(res)
               console.log(res)
             })
             })
             this.params = queryParams
             this.params = queryParams
+            console.log('111',this.params)
             this.nodeDetailVisible = true
             this.nodeDetailVisible = true
             if(type == 15){
             if(type == 15){
               this.zEngineeringInfoBo = this.params.zEngineeringNodeBo.zEngineeringInfoBo
               this.zEngineeringInfoBo = this.params.zEngineeringNodeBo.zEngineeringInfoBo
@@ -323,6 +402,9 @@ export default {
             if(type == 16){
             if(type == 16){
               this.zEngineeringInfoBo = this.params.zEngineeringNodeBo.zEngineeringInfoBo
               this.zEngineeringInfoBo = this.params.zEngineeringNodeBo.zEngineeringInfoBo
             }
             }
+            if(type == 14){
+              this.zEngineeringInfoBo = this.params.zEngineeringNodeBoList[0].zEngineeringInfoBoList[0]
+            }
         },
         },
         reset(){
         reset(){
             this.$refs['nodeForm'].resetFields()
             this.$refs['nodeForm'].resetFields()
@@ -333,6 +415,17 @@ export default {
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
+
+::v-deep .engineNodeTypes{
+    position: relative;
+    top: -4%;
+    left: -1.5%;
+    width: 103%;
+    box-shadow: none;
+    .el-tabs__content{
+      display: none;
+    }
+}
 ::v-deep .appendElNodeDialog{
 ::v-deep .appendElNodeDialog{
   // width: 70%;
   // width: 70%;
   height: 80%;
   height: 80%;

+ 1 - 1
src/views/zdsz/engineeringDangerous/index.vue

@@ -535,7 +535,7 @@
           },
           },
           toNodeDetail(){
           toNodeDetail(){
             console.log(this.$refs.childNode)
             console.log(this.$refs.childNode)
-            this.$refs.childNode.open(this.queryParams,4)
+            this.$refs.childNode.open(this.queryParams,3)
             this.nodeDetailVisible = true
             this.nodeDetailVisible = true
             return
             return
             this.$refs['form'].validate(e => {
             this.$refs['form'].validate(e => {

+ 591 - 196
src/views/zdsz/engineeringInfrastructure/index.vue

@@ -1,53 +1,16 @@
+
+ <!-- 
+ *@description: 基建工程
+ *@author: yh Fu
+ *@date: 2024-01-04 13:05:28
+ *@version: V1.0.5 
+-->
+
 <template>
 <template>
   <div class="app-container">
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="searchParams" ref="searchForm" size="small" :inline="true" label-width="110px">
       <el-form-item label="工程名称" prop="enginName">
       <el-form-item label="工程名称" prop="enginName">
-        <el-input
-          v-model="queryParams.enginName"
-          placeholder="请输入工程名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="工程地址" prop="enginAddre">
-        <el-input
-          v-model="queryParams.enginAddre"
-          placeholder="请输入工程地址"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="建设单位" prop="constructUnit">
-        <el-input
-          v-model="queryParams.constructUnit"
-          placeholder="请输入建设单位"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="开工时间" prop="startTime">
-        <el-date-picker clearable
-          v-model="queryParams.startTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择开工时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="计划工期" prop="plannedDuration">
-        <el-input
-          v-model="queryParams.plannedDuration"
-          placeholder="请输入计划工期"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="竣工时间" prop="completedTime">
-        <el-date-picker clearable
-          v-model="queryParams.completedTime"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择竣工时间">
-        </el-date-picker>
+        <el-input v-model="searchParams.enginName" placeholder="请输入工程名称"></el-input>
       </el-form-item>
       </el-form-item>
       <el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -63,7 +26,7 @@
           icon="el-icon-plus"
           icon="el-icon-plus"
           size="mini"
           size="mini"
           @click="handleAdd"
           @click="handleAdd"
-          v-hasPermi="['system:engineeringInfrastructure:add']"
+          v-hasPermi="['zdsz:openbolt:add']"
         >新增</el-button>
         >新增</el-button>
       </el-col>
       </el-col>
       <el-col :span="1.5">
       <el-col :span="1.5">
@@ -74,7 +37,7 @@
           size="mini"
           size="mini"
           :disabled="single"
           :disabled="single"
           @click="handleUpdate"
           @click="handleUpdate"
-          v-hasPermi="['system:engineeringInfrastructure:edit']"
+          v-hasPermi="['zdsz:openbolt:edit']"
         >修改</el-button>
         >修改</el-button>
       </el-col>
       </el-col>
       <el-col :span="1.5">
       <el-col :span="1.5">
@@ -85,41 +48,30 @@
           size="mini"
           size="mini"
           :disabled="multiple"
           :disabled="multiple"
           @click="handleDelete"
           @click="handleDelete"
-          v-hasPermi="['system:engineeringInfrastructure:remove']"
+          v-hasPermi="['zdsz:openbolt:remove']"
         >删除</el-button>
         >删除</el-button>
       </el-col>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:engineeringInfrastructure:export']"
-        >导出</el-button>
-      </el-col>
+      <!--      <el-col :span="1.5">-->
+      <!--        <el-button-->
+      <!--          type="warning"-->
+      <!--          plain-->
+      <!--          icon="el-icon-download"-->
+      <!--          size="mini"-->
+      <!--          @click="handleExport"-->
+      <!--          v-hasPermi="['zdsz:openbolt:export']"-->
+      <!--        >导出</el-button>-->
+      <!--      </el-col>-->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
     </el-row>
 
 
-    <el-table v-loading="loading" :data="engineeringInfrastructureList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="comprehensiveList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <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="id" v-if="true"/>-->
       <el-table-column label="工程名称" align="center" prop="enginName" />
       <el-table-column label="工程名称" align="center" prop="enginName" />
       <el-table-column label="工程地址" align="center" prop="enginAddre" />
       <el-table-column label="工程地址" align="center" prop="enginAddre" />
       <el-table-column label="建设单位" align="center" prop="constructUnit" />
       <el-table-column label="建设单位" align="center" prop="constructUnit" />
-      <el-table-column label="开工时间" align="center" prop="startTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="计划工期" align="center" prop="plannedDuration" />
-      <el-table-column label="竣工时间" align="center" prop="completedTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.completedTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="工程内容" align="center" prop="enginContent" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="开工时间" align="center" prop="startTime" />
+      <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
         <template slot-scope="scope">
           <el-button
           <el-button
@@ -127,15 +79,21 @@
             type="text"
             type="text"
             icon="el-icon-edit"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:engineeringInfrastructure:edit']"
+            v-hasPermi="['zdsz:comprehensive:edit']"
           >修改</el-button>
           >修改</el-button>
           <el-button
           <el-button
             size="mini"
             size="mini"
             type="text"
             type="text"
             icon="el-icon-delete"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             @click="handleDelete(scope.row)"
-            v-hasPermi="['system:engineeringInfrastructure:remove']"
+            v-hasPermi="['zdsz:comprehensive:remove']"
           >删除</el-button>
           >删除</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="addNewPipe(scope.row)"
+          >新增顶管工程</el-button>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
     </el-table>
     </el-table>
@@ -147,60 +105,118 @@
       :limit.sync="queryParams.pageSize"
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
       @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">
+    <!-- 顶管工程新增 -->
+    <EngineePipe ref="enginPipe"/>
+    <!-- 添加或修改开栓|安检|维修对话框 -->
+    <el-dialog :title="title" :visible.sync="open" append-to-body customClass="appendElDialog">
+      <el-form ref="form" :model="queryParams" :rules="rules" label-width="110px">
         <el-form-item label="工程名称" prop="enginName">
         <el-form-item label="工程名称" prop="enginName">
-          <el-input v-model="form.enginName" placeholder="请输入工程名称" />
+          <el-input v-model="queryParams.enginName" placeholder="请输入工程名称"></el-input>
         </el-form-item>
         </el-form-item>
         <el-form-item label="工程地址" prop="enginAddre">
         <el-form-item label="工程地址" prop="enginAddre">
-          <el-input v-model="form.enginAddre" placeholder="请输入工程地址" />
+          <el-input v-model="queryParams.enginAddre" placeholder="请输入工程地址"></el-input>
         </el-form-item>
         </el-form-item>
         <el-form-item label="建设单位" prop="constructUnit">
         <el-form-item label="建设单位" prop="constructUnit">
-          <el-input v-model="form.constructUnit" placeholder="请输入建设单位" />
+          <el-input v-model="queryParams.constructUnit" placeholder="请输入建设单位"></el-input>
         </el-form-item>
         </el-form-item>
         <el-form-item label="开工时间" prop="startTime">
         <el-form-item label="开工时间" prop="startTime">
-          <el-date-picker clearable
-            v-model="form.startTime"
+          <el-date-picker
+            v-model="queryParams.startTime"
+            value-format="yyyy-MM-dd hh:mm:ss"
             type="datetime"
             type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
             placeholder="请选择开工时间">
             placeholder="请选择开工时间">
           </el-date-picker>
           </el-date-picker>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="计划工期" prop="plannedDuration">
-          <el-input v-model="form.plannedDuration" placeholder="请输入计划工期" />
-        </el-form-item>
         <el-form-item label="竣工时间" prop="completedTime">
         <el-form-item label="竣工时间" prop="completedTime">
-          <el-date-picker clearable
-            v-model="form.completedTime"
+          <el-date-picker
+            v-model="queryParams.completedTime"
+            value-format="yyyy-MM-dd hh:mm:ss"
             type="datetime"
             type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss"
             placeholder="请选择竣工时间">
             placeholder="请选择竣工时间">
           </el-date-picker>
           </el-date-picker>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="工程内容">
-          <editor v-model="form.enginContent" :min-height="192"/>
-        </el-form-item>
+        <el-form-item label="计划工期" prop="plannedDuration">
+          <el-input v-model="queryParams.plannedDuration" placeholder="请输入计划工期"></el-input>
+        </el-form-item>     
         <el-form-item label="备注" prop="remark">
         <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
+          <el-input 
+            v-model="queryParams.remark" 
+            type="textarea" 
+            placeholder="请输入内容"
+            class="remark_input"
+            />
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
-        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
+        <!-- <el-button :loading="buttonLoading" type="primary" @click="submitForm">确定</el-button> -->
+        <el-button :loading="buttonLoading" type="primary" @click="toNodeDetail">填写节点信息</el-button>
         <el-button @click="cancel">取 消</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
       </div>
     </el-dialog>
     </el-dialog>
+    <!-- 节点信息dialog -->
+    <enginee-node 
+      ref="childNode"
+      @closeToSucceed="closeToSucceed"
+      />
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
-import { listEngineeringInfrastructure, getEngineeringInfrastructure, delEngineeringInfrastructure, addEngineeringInfrastructure, updateEngineeringInfrastructure } from "@/api/zdsz/engineeringInfrastructure";
+import { listComprehensive, getComprehensive, delComprehensive, addComprehensive, updateComprehensive } from "@/api/zdsz/comprehensive";
+import {getBuildings} from "@/api/zdsz/building";
+import {getUnits} from "@/api/zdsz/unit";
+import {getAreas} from "@/api/zdsz/area";
+import {getHouses, listHouse} from "@/api/zdsz/house";
+import EngineeNode from '@/components/EngineeNode/index'
+import { 
+  getEngineeringInfrastructure,              // 查询基建工程列表
+  addEngineeringInfrastructure,              // 新增基建工程
+  getAreaList,                               // 获取当前小区集合
+  getBuildingList,                           // 获取当前楼栋集合
+  getUnitList,                               // 获取当前单元集合
+  getHousesList,                             // 获取当前房间集合
+  putEngineeringCivil,                       // 民用工程修改
+  viewEngineeringInfrastructure,                      // 基建工程查看详情
+  deleteEngineeringInfrastructure,                    // 删除民用工程
+} from "@/api/zdsz/enginee"
+import EngineePipe from "@/components/EngineePipe"
 
 
 export default {
 export default {
-  name: "EngineeringInfrastructure",
+  name: "openrepair",
+  dicts:['pass_check',
+         'is_repair',
+         'engin_type',
+         'self_closing_valve_type',
+         'visit_type','district',
+         'new_built_indoor_engin',
+         "old_renovation_indoor_engin",
+         "old_renovation_courtyard_engin",
+         "old_renovation_overhead",
+         "new_built_indoor_engin",
+         "new_built_courtyard_engin",
+         "new_built_overhead",
+         "engin_cycle"
+      ],
+  components:{
+    EngineePipe,
+    EngineeNode
+  },
   data() {
   data() {
+      var validatePass = (rule, value, callback) => {
+          console.log('校验值', value)
+          if (value === '') {
+              callback(new Error('请输入密码'));
+          } else {
+          if (this.ruleForm.checkPass !== '') {
+              this.$refs.ruleForm.validateField('checkPass');
+          }
+              callback();
+          }
+      };
     return {
     return {
+      searchParams:{
+        enginName:''
+      },
       // 按钮loading
       // 按钮loading
       buttonLoading: false,
       buttonLoading: false,
       // 遮罩层
       // 遮罩层
@@ -215,68 +231,415 @@ export default {
       showSearch: true,
       showSearch: true,
       // 总条数
       // 总条数
       total: 0,
       total: 0,
-      // 基建工程表格数据
-      engineeringInfrastructureList: [],
+      // 开栓|安检|维修表格数据
+      comprehensiveList: [],
       // 弹出层标题
       // 弹出层标题
       title: "",
       title: "",
       // 是否显示弹出层
       // 是否显示弹出层
       open: false,
       open: false,
+      enginTypeOption:[
+        {
+          value:'old_renovation',
+          label:'旧改'
+        },
+        {
+          value:'new_built',
+          label:'新建'
+        }
+      ],
+      nodeType:'1',               // 节点类型
+      enginClassification:'',
       // 查询参数
       // 查询参数
       queryParams: {
       queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        enginName: undefined,
-        enginAddre: undefined,
-        constructUnit: undefined,
-        startTime: undefined,
-        plannedDuration: undefined,
-        completedTime: undefined,
-        enginContent: undefined,
+        district:null,           // 行政区
+        enginAddre:'',            // 工程地址
+        enginType:'',             // 工程类型
+        constructUnit:null,       // 建设单位
+        startTime:null,           // 开工时间
+        completedTime:null,       // 竣工时间
+        plannedDuration:null,     // 计划工期
+        remark:null,
+        zEngineeringNodeBo:{
+          type:'',
+          zEngineeringInfoBo:{},    //节点信息
+        }
       },
       },
+      zEngineeringInfoBo:{
+        constructAddre:'',        // 施工地址
+        constructPhone:'',        // 施工人电话
+        constructUser:'',         // 施工人
+        headName:'',              // 负责人
+        headPhone:'',             // 负责人电话
+        constructAccordingDrawings:'', // 是否按图纸施工
+        segmentedCompressionQualified:'', // 分段打压是否合格
+        selfClosingValveType:'',          // 自闭阀类型
+        visitType:'',                     // 上门类型
+        backfillTime:'',                  // 回填时间
+        constructTime:'',                  // 施工时间
+        zEngiineeringPhotoBoList:[],              // 图片列表
+        zEngineeringMaterialBo:[],// 用料对象
+
+      },                          // 节点信息
+      constructAccordingDrawingsOption:[
+        {
+          value:'1',
+          label:'是'
+        },
+        {
+          value:'0',
+          label:'否'
+        }
+      ],                          
+      segmentedCompressionQualifiedOption:[
+        {
+          value:'1',
+          label:'是'
+        },
+        {
+          value:'0',
+          label:'否'
+        }
+      ],                          
+      nodeDetailVisible:false,
       // 表单参数
       // 表单参数
       form: {},
       form: {},
+      areas: [],
+      builds: [],
+      units: [],
+      rooms: [],
+      houses: [],
       // 表单校验
       // 表单校验
       rules: {
       rules: {
-        id: [
-          { required: true, message: "不能为空", trigger: "blur" }
+        enginAddre: [
+          { required: true, message: "工程地址不能为空", trigger: "blur" }
         ],
         ],
         enginName: [
         enginName: [
-          { required: true, message: "工程名称不能为空", trigger: "blur" }
+          { required: true, message: "工程名称不能为空" ,trigger: 'blur'}
         ],
         ],
-        enginAddre: [
-          { required: true, message: "工程地址不能为空", trigger: "blur" }
+        supervisionUnit: [
+          { required: true, message: "监理单位不能为空" ,trigger: 'blur'}
+        ],
+        district: [
+          { required: true, message: "现场负责人不能为空" ,trigger: 'blur'}
+        ],
+        supervisionPhone: [
+          { required: true, message: "建立联系电话不能为空" ,trigger: 'blur'}
         ],
         ],
         constructUnit: [
         constructUnit: [
-          { required: true, message: "建设单位不能为空", trigger: "blur" }
+          { required: true, message: "建筑单位不能为空" ,trigger: 'blur'}
         ],
         ],
-        startTime: [
-          { required: true, message: "开工时间不能为空", trigger: "blur" }
+        areaId: [
+          { required: true, message: "设计负责人不能为空" ,trigger: 'blur'}
         ],
         ],
         plannedDuration: [
         plannedDuration: [
-          { required: true, message: "计划工期不能为空", trigger: "blur" }
+          { required: true, message: "设计单位不能为空" ,trigger: 'blur'}
         ],
         ],
-        completedTime: [
-          { required: true, message: "竣工时间不能为空", trigger: "blur" }
+        designPhone: [
+          { required: true, message: "联系方式不能为空" ,trigger: 'blur'}
         ],
         ],
-        enginContent: [
-          { required: true, message: "工程内容不能为空", trigger: "blur" }
+        supervisionHead: [
+          { required: true, message: "监理负责人不能为空" ,trigger: 'blur'}
         ],
         ],
-        remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
+        constructUnit: [
+          { required: true, message: "建设单位不能为空", trigger: "blur" }
         ],
         ],
-      }
+        unitId: [
+          { required: true, message: "单元不能为空", trigger: "change" }
+        ],
+        houseId: [
+          { required: true, message: "房间不能为空", trigger: "change" }
+        ],
+        type: [
+          { required: false, message: "类型不能为空", trigger: "change" }
+        ],
+        isQualified: [
+          { required: true, message: "安检是否合格不能为空", trigger: "blur" }
+        ],
+      //  remark: [
+      //     { required: false, message: "备注不能为空", trigger: "blur" }
+      //   ], 
+      },
+      // 节点规则校验
+      nodeRules:{
+        type: [
+          { required: true, message: "施工地址不能为空" ,trigger: 'blur'}
+        ],
+        constructAddre: [
+          { required: true, message: "施工地址不能为空" ,trigger: 'blur'}
+        ],
+        constructPhone: [
+          { required: true, message: "施工人电话不能为空" ,trigger: 'blur'}
+        ],
+        constructUser: [
+          { required: true, message: "施工人不能为空" ,trigger: 'blur'}
+        ],
+        headName: [
+          { required: true, message: "负责人不能为空" ,trigger: 'blur'}
+        ],
+        headPhone: [
+          { required: true, message: "负责人电话不能为空" ,trigger: 'blur'}
+        ],
+
+      },
+      currentDistrict:null,       // 当前行政区
+      currentCommunity:null,      // 当前小区
+      currentBuilding:null,       // 当前楼宇
+      currentUnit:null,           // 当前单元
+      communityOptions:[
+      ],
+      buildingOptions:[],         // 楼栋集合
+      unitOptions:[],             // 单元集合
+      houseOptions:[],            // 房间集合
+      enginClassification_list:[],// 室内节点
+      new_built_list:[
+          {
+              label:'旧改',
+              value:'old'
+          },
+          {
+              label:'新建',
+              value:'new'
+          },
+      ],
+      currentEnginType:[],
+      enginTypeOptions:[
+          {
+              value:'old_renovation',
+              label:'旧改',
+              children:[
+                  {
+                      value:'inside',
+                      lable:'室内',
+                  },
+                  {
+                      value:'yard',
+                      lable:'庭院',
+                  },
+                  {
+                      value:'float',
+                      lable:'架空',
+                  },
+              ]
+          },
+          {
+              value:'new_built',
+              label:'新建',
+              children:[
+                  {
+                      value:'inside',
+                      lable:'室内',
+                  },
+                  {
+                      value:'yard',
+                      lable:'庭院',
+                  },
+                  {
+                      value:'float',
+                      lable:'架空',
+                  },
+              ]
+          },
+      ],
+      value: [],
+  options: [
+      {
+    value: 'old_renovation',
+    label: '旧改',
+    children: [
+          {
+              value: 'old_renovation_indoor_engin',
+              label: '室内',
+          
+          }, 
+          {
+              value: 'old_renovation_courtyard_engin',
+              label: '庭院',
+          },
+          {
+              value: 'old_renovation_overhead',
+              label: '架空',
+          }
+      ]
+  }, 
+  {
+    value: 'new_built',
+    label: '新建',
+    children: [
+          {
+              value: 'new_built_indoor_engin',
+              label: '室内',
+          
+          }, 
+          {
+              value: 'new_built_courtyard_engin',
+              label: '庭院',
+          },
+          {
+              value: 'new_built_overhead',
+              label: '架空',
+          }
+      ]
+  }, 
+  ],
+  enginClassificationOption:[],          // 工程节点集合
+  currentType:null,
     };
     };
   },
   },
   created() {
   created() {
     this.getList();
     this.getList();
+    // this.getAreas();
   },
   },
   methods: {
   methods: {
-    /** 查询基建工程列表 */
-    getList() {
+  closeToSucceed(){
+    this.open = false;
+    this.getList()
+  },
+  currentEnginTypeChange(val){
+      const enginDict = val[1]
+      const enginType = val[0]    
+      this.queryParams.enginType = enginType
+      this.enginClassificationOption = this.dict.type[enginDict]
+  },
+  // 当前所选行政区发生改变 查询当前小区集合
+  districtHasChanged(district){
+      this.queryParams.areaId = null
+      this.queryParams.buildingId = null
+      this.queryParams.unitId = null
+      getAreaList({district}).then(res => {
+          this.communityOptions = res.data
+      })
+  },
+  // 当前所选小区发生改变 查询当前楼栋集合
+  communityHasChanged(areaId){
+      this.queryParams.buildingId = null
+      this.queryParams.unitId = null
+      getBuildingList({areaId}).then(res => {
+          this.buildingOptions = res.data
+      })
+  },
+  buildingHasChanged(buildingId){
+      this.queryParams.unitId = null
+      getUnitList({buildingId}).then(res => {
+          this.unitOptions = res.data
+      })
+  },
+  unitHasChanged(unitId){
+      getHousesList({unitId}).then(res => {
+          console.log(res)
+          this.houseOptions = res.data
+      })
+  },
+  enginTypeHasChanged(val){
+      if(val == 'old_renovation'){
+          
+      }else if(val == 'new_built'){
+
+      }
+  },
+    // 新增顶管工程
+    addNewPipe(data){
+      this.$refs.enginPipe.openDialog({
+        id:data.id
+      },'add')
+    },
+    nodeCancel(){
+      this.nodeDetailVisible = false
+    },
+    toNodeDetail(){   
+      if(this.currentType == 'put'){
+          this.$refs.childNode.open(this.queryParams,14)
+          this.currentType = null
+          return
+      }
+      // 加工 enginClassification 工程节点
+      // const parts = this.value[1].split('_');
+      // let result = parts.slice(2).join('_');
+      // this.queryParams.zEngineeringNodeBo.type = this.enginClassification
+      // this.queryParams.enginClassification = result
+      // console.log(this.queryParams)
+      this.$refs.childNode.open(this.queryParams,4)
+      return
+      this.$refs['form'].validate(e => {
+        if(e){
+          this.nodeDetailVisible = true
+        }
+      })
+      
+    },
+    getUrl(url) {
+      this.zEngineeringInfoBo.zEngiineeringPhotoBoList = this.$refs.obsImageUpload.fileList?this.$refs.obsImageUpload.fileList.map(e=>e.url):[];
+    },
+    getBuildings(id) {
+      this.units = []
+      this.houses = []
+      this.queryParams.buildingId = undefined
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    getUnits(id) {
+      this.houses = []
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      getUnits(this.queryParams.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
+    getAreas() {
+      this.builds = []
+      this.units = []
+      this.houses = []
+      this.queryParams.buildingId = undefined
+      this.queryParams.unitId = undefined
+      this.queryParams.houseId = undefined
+      this.form.buildingId = undefined
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getAreas().then(res => {
+        this.areas = res.data;
+      });
+    },
+    getHouses() {
+      this.houses = []
+      this.queryParams.houseId = undefined
+      getHouses(this.queryParams.unitId).then(res => {
+        this.houses = res.data;
+      });
+    },
+    getBuildings1(id) {
+      this.units = []
+      this.houses = []
+      this.form.buildingId = undefined
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    getUnits1(id) {
+      this.houses = []
+      this.form.unitId = undefined
+      this.form.houseId = undefined
+      getUnits(this.form.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
+    getHouses1() {
+      this.houses = []
+      this.form.houseId = undefined
+      getHouses(this.form.unitId).then(res => {
+        this.houses = res.data;
+      });
+    },
+    /** 查询民用工程列表 */
+    getList(params = {}) {
       this.loading = true;
       this.loading = true;
-      listEngineeringInfrastructure(this.queryParams).then(response => {
-        this.engineeringInfrastructureList = response.rows;
-        this.total = response.total;
+      getEngineeringInfrastructure(params).then(res => {
+        console.log(res)
+        this.comprehensiveList = res.rows;
+        this.total = res.total;
         this.loading = false;
         this.loading = false;
       });
       });
     },
     },
@@ -284,32 +647,23 @@ export default {
     cancel() {
     cancel() {
       this.open = false;
       this.open = false;
       this.reset();
       this.reset();
+      this.houses = []
+      this.units = []
+      this.builds = []
     },
     },
     // 表单重置
     // 表单重置
     reset() {
     reset() {
-      this.form = {
-        id: undefined,
-        enginName: undefined,
-        enginAddre: undefined,
-        constructUnit: undefined,
-        startTime: undefined,
-        plannedDuration: undefined,
-        completedTime: undefined,
-        enginContent: undefined,
-        version: undefined,
-        remark: undefined,
-        delFlag: undefined,
-        createBy: undefined,
-        createTime: undefined,
-        updateBy: undefined,
-        updateTime: undefined
-      };
+      this.$nextTick(() => {
+        this.$refs['form'].resetFields()
+        this.$refs['nodeForm'].resetFields()
+      })
       this.resetForm("form");
       this.resetForm("form");
+      this.resetForm("nodeForm");
     },
     },
     /** 搜索按钮操作 */
     /** 搜索按钮操作 */
     handleQuery() {
     handleQuery() {
       this.queryParams.pageNum = 1;
       this.queryParams.pageNum = 1;
-      this.getList();
+      this.getList(this.searchParams);
     },
     },
     /** 重置按钮操作 */
     /** 重置按钮操作 */
     resetQuery() {
     resetQuery() {
@@ -326,66 +680,107 @@ export default {
     handleAdd() {
     handleAdd() {
       this.reset();
       this.reset();
       this.open = true;
       this.open = true;
-      this.title = "添加基建工程";
+      this.title = "新增工程";
     },
     },
     /** 修改按钮操作 */
     /** 修改按钮操作 */
     handleUpdate(row) {
     handleUpdate(row) {
-      this.loading = true;
-      this.reset();
-      const id = row.id || this.ids
-      getEngineeringInfrastructure(id).then(response => {
-        this.loading = false;
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改基建工程";
-      });
+      viewEngineeringInfrastructure(row.id).then(res => {
+        console.log(res)
+        let newData = res.data
+        console.log(newData)
+        console.log(res.data.zEngineeringNodeBoList[0].type)
+        let zEngineeringNodeBo = {
+            type:res.data.zEngineeringNodeBoList[0].type,
+            zEngineeringInfoBo:res.data.zEngineeringNodeBoList[0].zEngineeringInfoBo
+        }
+        newData.zEngineeringNodeBo = zEngineeringNodeBo
+        this.currentType = 'put'
+        this.queryParams = newData
+        console.log(this.queryParams)
+        this.zEngineeringInfoBo = newData.zEngineeringNodeBo.zEngineeringInfoBo
+        this.open = true
+      })
     },
     },
     /** 提交按钮 */
     /** 提交按钮 */
     submitForm() {
     submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          this.buttonLoading = true;
-          if (this.form.id != null) {
-            updateEngineeringInfrastructure(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          } else {
-            addEngineeringInfrastructure(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            }).finally(() => {
-              this.buttonLoading = false;
-            });
-          }
-        }
-      });
+      // this.$refs["nodeForm"].validate(valid => {
+        // if (valid) {
+          this.queryParams.zEngineeringNodeBo.zEngineeringInfoBo = this.zEngineeringInfoBo
+          console.log(this.queryParams)
+          addEngineeringInfrastructure(this.queryParams).then(res => {
+            console.log(res)
+          })
+        // }
+      // });
     },
     },
     /** 删除按钮操作 */
     /** 删除按钮操作 */
     handleDelete(row) {
     handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除基建工程编号为"' + ids + '"的数据项?').then(() => {
-        this.loading = true;
-        return delEngineeringInfrastructure(ids);
-      }).then(() => {
-        this.loading = false;
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {
-      }).finally(() => {
-        this.loading = false;
-      });
+      deleteEngineeringInfrastructure(row.id).then(res => {
+        if(res.code == 200){
+          this.$modal.msgSuccess("删除成功");
+          this.getList()
+        }
+      })
     },
     },
     /** 导出按钮操作 */
     /** 导出按钮操作 */
     handleExport() {
     handleExport() {
-      this.download('system/engineeringInfrastructure/export', {
+      this.download('zdsz/openbolt/export', {
         ...this.queryParams
         ...this.queryParams
-      }, `engineeringInfrastructure_${new Date().getTime()}.xlsx`)
+      }, `comprehensive_${new Date().getTime()}.xlsx`)
     }
     }
   }
   }
 };
 };
 </script>
 </script>
+
+
+<style lang="scss" scoped>
+::v-deep .appendElDialog{
+width: 70%;
+height: 80%;
+
+
+.el-dialog__body{
+height: 85%;
+}
+
+.el-form-item{
+margin-bottom: 22px;
+width: 44%;
+display: inline-block;
+}
+.el-form-item:nth-child(2n+2){
+margin-left: 5%;
+}
+.el-form-item:not(:nth-child(1):nth-child(2)){
+margin-top: 0.5%;
+}
+.remark_input{
+.el-textarea__inner{
+  width: 238%;
+  height: 190px;
+}
+}
+}
+
+::v-deep .appendElNodeDialog{
+// width: 70%;
+height: 80%;
+
+
+.el-dialog__body{
+height: 85%;
+}
+
+.el-form-item{
+margin-bottom: 22px;
+width: 44%;
+display: inline-block;
+}
+.el-form-item:nth-child(2n+2){
+margin-left: 5%;
+}
+.el-form-item:not(:nth-child(1):nth-child(2)){
+margin-top: 0.5%;
+}
+}
+</style>