Browse Source

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

JX.Li 1 year ago
parent
commit
06a6751e46

+ 65 - 0
src/api/zdsz/engineeringGY.js

@@ -0,0 +1,65 @@
+import request from '@/utils/request'
+
+
+export function getEngineeIndustryList(sata) {
+  return request({
+    url: `/zdsz/engineeringGY/list`,
+    method: 'get',
+    params:sata
+  })
+}
+
+export function addEngineeEngineeIndustry(data) {
+  return request({
+    url: '/zdsz/engineeringGY',
+    method: 'post',
+    data
+  })
+}
+
+export function putEngineeEngineeIndustry(id) {
+  return request({
+    url: `/zdsz/engineeringGY/${id}`,
+    method: 'get',
+
+  })
+}
+
+export function EditEngineeEngineeIndustry(data) {
+  return request({
+    url: '/zdsz/engineeringGY',
+    method: 'put',
+    data
+  })
+}
+
+export function DelEngineeEngineeIndustry(id) {
+  return request({
+    url: `/zdsz/engineeringGY/${id}`,
+    method: 'delete',
+  })
+}
+
+export function QueryEngineeIndustry({id, type}) {
+  return request({
+    url: `/zdsz/engineeringGY/${id}/${type}`,
+    method: 'get',
+  })
+}
+
+export function QueryEngineeIndustrys({id, type}) {
+  return request({
+    url: `/zdsz/engineeringGY/query/${id}/${type}`,
+    method: 'get',
+  })
+}
+
+export function UpdateEngineeIndustry(data) {
+  return request({
+    url: '/zdsz/engineeringGY/updateNodeByBo',
+    method: 'put',
+    data
+  })
+}
+
+

+ 858 - 0
src/components/ConstructionDetails/indexGY.vue

@@ -0,0 +1,858 @@
+<!--
+   *@description: 工程历史详情
+   *@author: yh Fu
+   *@date: 2024-1-8 10:04:23
+   *@version: V1.0.5
+-->
+
+<template>
+  <div style="width: 100%;height: 100%;">
+    <el-dialog
+      :visible.sync="dialogVisible"
+      :title="titleName"
+      width="60%"
+      append-to-body
+      custom-class="ConstructionDetailsDialog">
+      <div style="font-weight: bold; font-size: 20px">{{enginClassification}}</div>
+      <div>
+        <el-tabs type="card" v-model="activeNames" @tab-click="viewSource" class="projectTabs">
+          <el-tab-pane
+            :label="e.label"
+            :name="e.value"
+            v-for="(e,idx) in currentDicts"
+            :key="idx"
+          >
+            <el-checkbox-group v-if="enginClassification=='调压柜'" v-model="checkList">
+              <el-collapse
+                class="rmOldPie"
+                v-for="(e,idx) in currentCollapses"
+                :key="idx"
+              >
+                <el-collapse-item :name="idx">
+                  <template slot="title">
+                    <div style="display: flex;width: 100%;height: 100%;">
+                      <el-checkbox :label="e.id" @change="handleCheckedCitiesChange">
+                        <h2 style="margin-left: 1%;font-weight: 700;">{{ e.updateTime }}</h2>
+                      </el-checkbox>
+                      <h2 style="margin-left: 20%;font-weight: 700;" v-if="['review','put'].includes(status)">
+                        {{ e.state == '0' ? "该施工信息审核未通过" : "" }}</h2>
+                      <h2 style="margin-left: 20%;font-weight: 700; color: #1ab394" v-if="['review','put'].includes(status)">
+                        {{ e.state == 1 ? "该施工信息审核通过" : "" }}</h2>
+                    </div>
+                  </template>
+                  <div class="personInfo">
+                    <span>施工人:{{ userNames[idx].nickName }}</span>
+                    <span>施工人电话:{{ userNames[idx].phonenumber }}</span>
+                  </div>
+                  <hr>
+                  <el-form :model="e">
+                    <el-form-item
+                      :prop="e.remark"
+                      :class="'labelWidth'"
+                      label="施工内容"
+                      label-width="95px"
+                    >
+                      <div class="block" style="display: inline-block; margin-right: 20px;">
+                        <el-input v-model="e.remark" placeholder="请输入施工内容" style="width: 100%" maxlength="100"
+                                  type="textarea" :readonly="['review','read-only'].includes(status)"></el-input>
+                      </div>
+                    </el-form-item>
+                  </el-form>
+                  <div style="display: flex;width: 100%;height: 100%;">
+                    <h3 style="width: 95px;font-weight: 600;text-align: left;text-indent: 25px;">图片</h3>
+                    <ObsImageUpload
+                      :class=" (status == 'read-only' || status == 'review' )? 'obsImageUploads' : '' "
+                      ref="obsImageUpload"
+                      :limit="11"
+                      :fileType="['png', 'jpg', 'jpeg']"
+                      @input="getUrl(arguments,idx)"
+                      :value="e.zEngiineeringPhotoBoList"
+                      :disabled="['review','read-only'].includes(status)"
+                    ></ObsImageUpload>
+                  </div>
+                  <div style="display: flex;  justify-content: flex-end; width: 100%;height: 100%;"
+                       v-if="status == 'put'">
+                    <el-button plain type="danger" @click=" handleDelete(e)"
+                               v-hasPermi="['zdsz:engineeringCivilNode:remove']" style="width: 94px;">删除
+                    </el-button>
+                  </div>
+                </el-collapse-item>
+              </el-collapse>
+            </el-checkbox-group>
+            <el-checkbox-group v-if="enginClassification=='室内管线'" v-model="checkList">
+              <el-collapse
+                class="rmOldPie"
+                v-for="(e,idx) in currentCollapses"
+                :key="idx"
+              >
+                <el-collapse-item :name="idx">
+                  <template slot="title">
+                    <div style="display: flex;width: 100%;height: 100%;">
+                      <el-checkbox :label="e.id" @change="handleCheckedCitiesChange">
+                        <h2 style="margin-left: 1%;font-weight: 700;">{{ e.updateTime }}</h2>
+                      </el-checkbox>
+                      <h2 style="margin-left: 20%;font-weight: 700;" v-if="['review','put'].includes(status)">
+                        {{ e.state == '0' ? "该施工信息审核未通过" : "" }}</h2>
+                      <h2 style="margin-left: 20%;font-weight: 700; color: #1ab394" v-if="['review','put'].includes(status)">
+                        {{ e.state == 1 ? "该施工信息审核通过" : "" }}</h2>
+                    </div>
+                  </template>
+                  <div class="personInfo">
+                    <span>施工人:{{ userNames[idx].nickName }}</span>
+                    <span>施工人电话:{{ userNames[idx].phonenumber }}</span>
+                  </div>
+                  <hr>
+                  <!--  用料明细 -->
+                  <div v-if="['焊接'].includes(activeNames)"
+                       v-for="(i,index) in e.zEngineeringMaterialBo || [] "
+                       :key="index"
+                  >
+                    <el-form :model="nodeInfo" class="nodeForm materialForm">
+                      <el-form-item
+                        :prop="i.materialQuality"
+                        :class="'labelWidth'"
+                        :label="'材质'"
+                        label-width="95px"
+                      >
+                        <el-select v-model="i.materialQuality" placeholder="请选择材质" style="width: 100%"
+                                   @change="getEnginSpecificationsList(i, index,idx)" :disabled="['review','read-only'].includes(status)">
+                          <el-option
+                            v-for="e in materialQualityList"
+                            :key="e.id"
+                            :label="e.name"
+                            :value="e.id"
+                          ></el-option>
+                        </el-select>
+                      </el-form-item>
+                      <el-form-item
+                        :prop="i.specifications"
+                        :class="'labelWidth'"
+                        label="规格"
+                        label-width="95px"
+
+                      >
+                        <el-select v-model="i.specifications" placeholder="请选择规格" style="width: 100%"
+                                   :disabled="['review','read-only'].includes(status)">
+                          <el-option
+                            v-for="e in corrosionLevelListAll.filter(o => o.materId == i.materialQuality)"
+                            :key="e.id"
+                            :label="e.name"
+                            :value="e.id"
+                          ></el-option>
+                        </el-select>
+                      </el-form-item>
+                      <!--                    <el-form-item-->
+                      <!--                      :prop="i.remark + ''"-->
+                      <!--                      :class="'labelWidth'"-->
+                      <!--                      label="施工内容"-->
+                      <!--                      label-width="95px"-->
+                      <!--                    >-->
+                      <!--                      <div class="block" style="display: inline-block; margin-right: 20px;">-->
+                      <!--                        <el-input v-model="i.remark" placeholder="请输入施工内容" style="width: 100%" maxlength="100"-->
+                      <!--                                  type="textarea" :disabled="status == 'read-only'"></el-input>-->
+                      <!--                      </div>-->
+                      <!--                    </el-form-item>-->
+
+                      <el-form-item
+                        :prop="i.number + ''"
+                        :class="'labelWidth'"
+                        label="米数"
+                        label-width="95px"
+                      >
+                        <div class="block" style="display: inline-block; margin-right: 20px;">
+                          <el-input v-model="i.number" placeholder="请输入米数" style="width: 100%"
+                                    oninput="value=value.match(/\d+(\.\d{0,1})?/) ? value.match(/\d+(\.\d{0,1})?/)[0] : ''"
+                                    max="999999999" :disabled="['review','read-only'].includes(status)"></el-input>
+                        </div>
+                      </el-form-item>
+                      <!--                    <el-form-item-->
+                      <!--                      :prop="i.remark + ''"-->
+                      <!--                      label="描述"-->
+                      <!--                    >-->
+                      <!--                      <div class="block" style="display: inline-block; margin-right: 20px;">-->
+                      <!--                        <el-input v-model="i.remark" placeholder="请输入描述" style="width: 100%" maxlength="100"-->
+                      <!--                                  :disabled="status == 'read-only'"></el-input>-->
+                      <!--                      </div>-->
+                      <!--                    </el-form-item>-->
+                    </el-form>
+                  </div>
+                  <div style="display: flex;width: 100%;height: 100%;">
+                    <h3 style="width: 95px;font-weight: 600;text-align: left;text-indent: 25px;">图片</h3>
+                    <ObsImageUpload
+                      :class=" (status == 'read-only' || status == 'review' )? 'obsImageUploads' : '' "
+                      ref="obsImageUpload"
+                      :limit="11"
+                      :fileType="['png', 'jpg', 'jpeg']"
+                      @input="getUrl(arguments,idx)"
+                      :value="e.zEngiineeringPhotoBoList"
+                      :disabled="['review','read-only'].includes(status)"
+                    ></ObsImageUpload>
+                  </div>
+                  <div style="display: flex;  justify-content: flex-end; width: 100%;height: 100%;"
+                       v-if="status == 'put'">
+                    <el-button plain type="danger" @click=" handleDelete(e)"
+                               v-hasPermi="['zdsz:engineeringCivilNode:remove']" style="width: 94px;">删除
+                    </el-button>
+                  </div>
+                </el-collapse-item>
+              </el-collapse>
+            </el-checkbox-group>
+            <el-checkbox-group v-if="enginClassification=='室外管线'" v-model="checkList">
+              <el-collapse
+                class="rmOldPie"
+                v-for="(e,idx) in currentCollapses"
+                :key="idx"
+              >
+                <el-collapse-item :name="idx">
+                  <template slot="title">
+                    <div style="display: flex;width: 100%;height: 100%;">
+                      <el-checkbox :label="e.id" @change="handleCheckedCitiesChange">
+                        <h2 style="margin-left: 1%;font-weight: 700;">{{ e.updateTime }}</h2>
+                      </el-checkbox>
+                      <h2 style="margin-left: 20%;font-weight: 700;" v-if="['review','put'].includes(status)">
+                        {{ e.state == '0' ? "该施工信息审核未通过" : "" }}</h2>
+                      <h2 style="margin-left: 20%;font-weight: 700; color: #1ab394" v-if="['review','put'].includes(status)">
+                        {{ e.state == 1 ? "该施工信息审核通过" : "" }}</h2>
+                    </div>
+                  </template>
+                  <div class="personInfo">
+                    <span>施工人:{{ userNames[idx].nickName }}</span>
+                    <span>施工人电话:{{ userNames[idx].phonenumber }}</span>
+                  </div>
+                  <hr>
+                  <el-form :model="e">
+                    <el-form-item
+                      v-if="activeNames=='隐蔽工程'"
+                      :prop="e.remark"
+                      :class="'labelWidth'"
+                      label="施工内容"
+                      label-width="95px"
+                    >
+                      <div class="block" style="display: inline-block; margin-right: 20px;">
+                        <el-input v-model="e.remark" placeholder="请输入施工内容" style="width: 100%" maxlength="100"
+                                  type="textarea" :readonly="['review','read-only'].includes(status)"></el-input>
+                      </div>
+                    </el-form-item>
+                  </el-form>
+                  <!--  用料明细 -->
+                  <div v-if="['焊接、防腐','架空管线','下管','沟下连头'].includes(activeNames)"
+                       v-for="(i,index) in e.zEngineeringMaterialBo || [] "
+                       :key="index"
+                  >
+                    <el-form :model="nodeInfo" class="nodeForm materialForm">
+                      <el-form-item
+                        :prop="i.materialQuality"
+                        :class="'labelWidth'"
+                        :label="'材质'"
+                        label-width="95px"
+                      >
+                        <el-select v-model="i.materialQuality" placeholder="请选择材质" style="width: 100%"
+                                   @change="getEnginSpecificationsList(i, index,idx)" :disabled="['review','read-only'].includes(status)">
+                          <el-option
+                            v-for="e in materialQualityList"
+                            :key="e.id"
+                            :label="e.name"
+                            :value="e.id"
+                          ></el-option>
+                        </el-select>
+                      </el-form-item>
+                      <el-form-item
+                        :prop="i.specifications"
+                        :class="'labelWidth'"
+                        label="规格"
+                        label-width="95px"
+
+                      >
+                        <el-select v-model="i.specifications" placeholder="请选择规格" style="width: 100%"
+                                   :disabled="['review','read-only'].includes(status)">
+                          <el-option
+                            v-for="e in corrosionLevelListAll.filter(o => o.materId == i.materialQuality)"
+                            :key="e.id"
+                            :label="e.name"
+                            :value="e.id"
+                          ></el-option>
+                        </el-select>
+                      </el-form-item>
+                      <!--                    <el-form-item-->
+                      <!--                      :prop="i.remark + ''"-->
+                      <!--                      :class="'labelWidth'"-->
+                      <!--                      label="施工内容"-->
+                      <!--                      label-width="95px"-->
+                      <!--                    >-->
+                      <!--                      <div class="block" style="display: inline-block; margin-right: 20px;">-->
+                      <!--                        <el-input v-model="i.remark" placeholder="请输入施工内容" style="width: 100%" maxlength="100"-->
+                      <!--                                  type="textarea" :disabled="status == 'read-only'"></el-input>-->
+                      <!--                      </div>-->
+                      <!--                    </el-form-item>-->
+
+                      <el-form-item
+                        :prop="i.number + ''"
+                        :class="'labelWidth'"
+                        label="米数"
+                        label-width="95px"
+                      >
+                        <div class="block" style="display: inline-block; margin-right: 20px;">
+                          <el-input v-model="i.number" placeholder="请输入米数" style="width: 100%"
+                                    oninput="value=value.match(/\d+(\.\d{0,1})?/) ? value.match(/\d+(\.\d{0,1})?/)[0] : ''"
+                                    max="999999999" :disabled="['review','read-only'].includes(status)"></el-input>
+                        </div>
+                      </el-form-item>
+                      <!--                    <el-form-item-->
+                      <!--                      :prop="i.remark + ''"-->
+                      <!--                      label="描述"-->
+                      <!--                    >-->
+                      <!--                      <div class="block" style="display: inline-block; margin-right: 20px;">-->
+                      <!--                        <el-input v-model="i.remark" placeholder="请输入描述" style="width: 100%" maxlength="100"-->
+                      <!--                                  :disabled="status == 'read-only'"></el-input>-->
+                      <!--                      </div>-->
+                      <!--                    </el-form-item>-->
+                    </el-form>
+                  </div>
+                  <div style="display: flex;width: 100%;height: 100%;" v-if="activeNames != '回填、撤场'">
+                    <h3 style="width: 95px;font-weight: 600;text-align: left;text-indent: 25px;">图片</h3>
+                    <ObsImageUpload
+                      :class=" (status == 'read-only' || status == 'review' )? 'obsImageUploads' : '' "
+                      ref="obsImageUpload"
+                      :limit="11"
+                      :fileType="['png', 'jpg', 'jpeg']"
+                      @input="getUrl(arguments,idx)"
+                      :value="e.zEngiineeringPhotoBoList"
+                      :disabled="['review','read-only'].includes(status)"
+                    ></ObsImageUpload>
+                  </div>
+                  <div style="display: flex;width: 100%;height: 100%;" v-if="activeNames == '回填、撤场'">
+                    <h3 style="width: 95px;font-weight: 600;text-align: left;text-indent: 25px;">回填前</h3>
+                    <ObsImageUpload
+                      :class=" (status == 'read-only' || status == 'review' )? 'obsImageUploads' : '' "
+                      ref="obsImageUpload1"
+                      :limit="11"
+                      :fileType="['png', 'jpg', 'jpeg']"
+                      @input="getUrl1(arguments,idx)"
+                      :value="e.zEngiineeringPhotoBoListOne"
+                      :disabled="['review','read-only'].includes(status)"
+                    ></ObsImageUpload>
+                  </div>
+                  <div style="display: flex;width: 100%;height: 100%;" v-if="activeNames == '回填、撤场'">
+                    <h3 style="width: 95px;font-weight: 600;text-align: left;text-indent: 25px;">铺设警示带</h3>
+                    <ObsImageUpload
+                      :class=" (status == 'read-only' || status == 'review' )? 'obsImageUploads' : '' "
+                      ref="obsImageUpload2"
+                      :limit="11"
+                      :fileType="['png', 'jpg', 'jpeg']"
+                      @input="getUrl2(arguments,idx)"
+                      :value="e.zEngiineeringPhotoBoListTwo"
+                      :disabled="['review','read-only'].includes(status)"
+                    ></ObsImageUpload>
+                  </div>
+                  <div style="display: flex;width: 100%;height: 100%;" v-if="activeNames == '回填、撤场'">
+                    <h3 style="width: 95px;font-weight: 600;text-align: left;text-indent: 25px;">回填后</h3>
+                    <ObsImageUpload
+                      :class=" (status == 'read-only' || status == 'review' )? 'obsImageUploads' : '' "
+                      ref="obsImageUpload3"
+                      :limit="11"
+                      :fileType="['png', 'jpg', 'jpeg']"
+                      @input="getUrl3(arguments,idx)"
+                      :value="e.zEngiineeringPhotoBoListThree"
+                      :disabled="['review','read-only'].includes(status)"
+                    ></ObsImageUpload>
+                  </div>
+                  <div style="display: flex;  justify-content: flex-end; width: 100%;height: 100%;"
+                       v-if="status == 'put'">
+                    <el-button plain type="danger" @click=" handleDelete(e)"
+                               v-hasPermi="['zdsz:engineeringCivilNode:remove']" style="width: 94px;">删除
+                    </el-button>
+                  </div>
+                </el-collapse-item>
+              </el-collapse>
+            </el-checkbox-group>
+          </el-tab-pane>
+          <el-button class="check" plain type="danger" @click="checkWorking"
+                     v-if="status == 'review' " style="width: 80px;"
+                     :disabled="currentCollapses.length == 0">审核
+          </el-button>
+          <el-button class="check" plain type="danger" @click="updateNodeOption" style="width: 94px;cursor: pointer;"
+                     v-if="status == 'put' ">修改
+          </el-button>
+        </el-tabs>
+      </div>
+    </el-dialog>
+    <!-- 审核 -->
+    <el-dialog
+      title="审核"
+      :visible.sync="checkingVisible"
+      :title="titleName"
+      width="30%"
+      class="checkingDialog"
+      :before-close="handleChecking">
+      <el-form :model="checkingInfo" ref="checking" :rules="checkingRule" class="nodeForm">
+        <el-form-item
+          label-width="85px"
+          label="审核状态"
+          prop="reviewStatus"
+        >
+          <el-select v-model="checkingInfo.reviewStatus" placeholder="请选择审核状态" style="width: 100%"
+                     label="审核状态" @change="validateCHanged">
+            <el-option
+              v-for="e in reviewStatusList"
+              :key="e.label"
+              :label="e.label"
+              :value="e.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item
+          label-width="85px"
+          label="审核内容"
+          prop="reviewContent"
+        >
+          <div class="block" style="display: inline-block; margin-right: 20px;">
+            <el-input
+              v-model="checkingInfo.reviewContent"
+              placeholder="请输入审核内容"
+              type="textarea"
+              style="width: 97%"/>
+          </div>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="handleChecking">取 消</el-button>
+        <el-button type="primary" @click=checkingSubmit>确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+
+</template>
+
+<script>
+import {
+  deleteinfoById,
+  getEnginMaterialQualityList,                    // 材质
+  getEnginSpecificationsList,                     // 规格
+
+} from '@/api/zdsz/enginee'
+import {selectUserByUserName} from '@/api/system/user'
+import ObsVideoUpload from "@/components/ObsVideoUpload/index.vue";
+import {getDicts} from "@/api/system/dict/data";
+
+export default {
+  name: '工业info',
+  dicts: [],
+  components: {ObsVideoUpload},
+  props: ['currentCollapses', 'nodeDetailType', 'enginType', 'status', 'zEngineeringNodeBo'],
+  data() {
+    return {
+      kind: null,
+      userNames: [],
+      checkList: [],
+      enginNode: '',
+      currentDicts: [],              // 当前类型工程节点项
+      dialogVisible: false,
+      activeNames: '',
+      titleName: '',
+      reviewStatusList: [
+        {
+          value: '1',
+          label: '通过'
+        },
+        {
+          value: '0',
+          label: '不通过'
+        }
+      ],
+      nodesource: '',// 审核状态option
+      materialQualityList: [],                     // 材质
+      specificationsList: [],                      // 规格
+      materialComponList: [],
+      engineType: null,
+      enginClassification: null,
+      nodeInfo: {
+        backfillTime: '',                       // 回填时间
+        constructTime: '',
+        constructAccordingDrawings: '',
+        segmentedCompressionQualified: '',
+        zEngiineeringPhotoBoList: [],            // 照片集合
+        zEngiineeringPhotoBoListOne: [],            // 照片集合
+        zEngiineeringPhotoBoListTwo: [],            // 照片集合
+        zEngiineeringPhotoBoListThree: [],            // 照片集合
+        zEngineeringMaterialBo: [],              // 用料集合
+        remark: '',
+        constructAddre: ''
+      },
+      checkingInfo: {
+        reviewStatus: '',               // 审核状态
+        reviewContent: '',              // 审核内容
+        engInfoId: '',                  // 节点Id
+        createTime: '',                 // 工程创建时间
+      },
+      currentStatus: null,
+      checkingVisible: null,
+      isChecking: true,
+      currentEnginId: null,
+      reviewStatus: null,
+      corrosionLevelListAll: [],
+      infoIdList: [],
+      delinfoidList: [],
+      checkingRule: {
+        reviewStatus: [
+          {required: true, message: "审核状态不能为空", trigger: "blur"}
+        ],
+        reviewContent: [
+          {required: true, message: "审核内容不能为空", trigger: "change"}
+        ],
+      },
+      node: null
+    }
+  },
+  created() {
+
+  },
+  mounted() {
+    this.getGoods()
+  },
+  watch: {
+    // 此处监听variable变量,当期有变化时执行
+    currentDicts(item1, item2) {
+      this.activeNames = item1[0].value
+      this.$parent.viewNodeSource(item1[0].value)
+    },
+    currentCollapses() {
+      console.log('currentCollapses', this.currentCollapses)
+      this.userNames = [];
+      for (let i in this.currentCollapses) {
+        selectUserByUserName(this.currentCollapses[i].createBy).then(res => {
+          this.userNames.push(res);
+        })
+      }
+      try {
+        this.currentCollapses[0].zEngineeringReviewBo.reviewStatus != 1 ? this.isChecking = true : false
+      } catch (error) {
+        this.isChecking = true
+      }
+      console.log('isChecking', this.isChecking)
+      let materialQuality = []
+      try {
+        materialQuality = this.currentCollapses[0].zEngineeringMaterialBo[0].materialQuality
+      } catch (error) {
+        materialQuality = []
+      }
+      try {
+        this.reviewStatus = this.currentCollapses[0].zEngineeringReviewBo.reviewStatus != '1' ? true : false
+      } catch (error) {
+        this.reviewStatus = true
+      }
+      if (materialQuality) {
+        getEnginSpecificationsList({materId: materialQuality}).then(res => {
+          this.specificationsList = res.data
+        })
+      }
+    }
+  },
+  methods: {
+    getGoods() {
+      // 获取材质
+      let enginType = '工业工程'
+      getEnginMaterialQualityList({enginType: enginType}).then(res => {
+        this.materialQualityList = res.data
+      })
+      // 获取规格
+      getEnginSpecificationsList().then(res => {
+        this.corrosionLevelListAll = res.data
+      })
+    },
+    handleCheckedCitiesChange(e) {
+      this.infoIdList = this.currentCollapses.filter(item => this.checkList.indexOf(item.id) > -1)
+      this.delinfoidList = this.currentCollapses.map(item => item.id).filter(item => this.checkList.indexOf(item) == -1)
+    },
+    validateCHanged(e) {
+      this.reviewStatusList[e].label == '通过' ? this.checkingRule.reviewContent[0].required = true : this.checkingRule.reviewContent[0].required = false
+    },
+    handleChecking() {
+      this.checkingVisible = false
+      this.checkingInfo = {
+        reviewStatus: '',               // 审核状态
+        reviewContent: '',              // 审核内容
+        engInfoId: '',                  // 节点Id
+        createTime: '',                 // 工程创建时间
+      }
+      this.$refs.checking.resetFields()
+    },
+    // 保存节点Id
+    setEngineId(e) {
+      this.currentEnginId = e
+    },
+    // 提交审核
+    checkingSubmit() {
+      this.$confirm('此操作将删除其他施工信息, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.shenhe()
+      }).catch(() => {
+      });
+    },
+    shenhe() {
+      this.$refs.checking.validate(valid => {
+        if (valid) {
+          try {
+            this.checkingInfo.engInfoId = this.currentEnginId
+            this.checkingInfo.delInfoIdList = this.delinfoidList
+            this.checkingInfo.infoIdList = this.infoIdList
+            this.$emit('checkWorking', this.checkingInfo,this.activeNames=='回填、撤场'?1:0)
+            this.checkList = []
+          } catch (error) {
+            this.checkingInfo.engInfoId = null
+          }
+          this.checkingVisible = false
+          this.checkingInfo = {
+            reviewStatus: '',               // 审核状态
+            reviewContent: '',              // 审核内容
+            engInfoId: '',                  // 节点Id
+            createTime: '',                 // 工程创建时间
+          }
+        } else {
+          this.$message({
+            message: '请完善信息',
+            type: 'error'
+          });
+          throw 'valid Failed'
+        }
+      })
+    },
+    // 查看单节点历史
+    viewSource(e) {
+      console.log('节点', e)
+      this.node = e.name
+      this.nodesource = e
+      let data = {enginType: this.enginType}
+      getEnginMaterialQualityList(data).then(res => {
+        this.materialQualityList = res.data
+      })
+      this.$parent.viewNodeSource(e.name)
+    },
+    // 单项审核
+    checkWorking() {
+      if (this.checkList.length == 0) {
+        this.$message.warning("请选择需要审核通过的施工信息")
+        return
+      }
+      if (this.status == 'review') {
+        this.checkingVisible = true
+      }
+    },
+    updateNodeOption() {
+      if (this.checkList.length == 0) {
+        this.$message.warning("请选择需要修改的施工信息")
+        return
+      }
+      const intersection = this.currentCollapses.filter(value => this.checkList.includes(value.id));
+      this.$emit('updateNodeOption', intersection)
+    },
+    deleteById(e) {
+      deleteinfoById(e).then(res => {
+        this.viewSource(this.nodesource)
+      })
+
+    },
+    handleDelete(row) {
+      this.$modal.confirm('是否确认删除所选数据项?').then(() => {
+        this.loading = true;
+        return this.deleteById(row)
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /**
+     * 查看历史
+     * @param dicts 节点集合
+     * @param currentStatus
+     * @param title 标题
+     * @param enginType 工程分类
+     * @param status 页面状态
+     * @param enginClassification 工程类型
+     */
+    open(dicts, currentStatus = null, title = null, enginType, status, enginClassification) {
+      this.enginClassification = enginClassification
+      this.status = status;
+      if (dicts && dicts[0]) {
+        this.node = dicts[0].value
+      }
+      this.engineType = enginType
+      let data = {enginType: enginType}
+      getEnginMaterialQualityList(data).then(res => {
+        this.materialQualityList = res.data
+      })
+      this.currentStatus = currentStatus
+      this.titleName = title
+      this.checkingVisible = false
+
+      this.currentDicts = dicts
+      this.$parent.viewNodeSource()
+      this.dialogVisible = true
+      this.$forceUpdate()
+    },
+    // 获取材质规格
+    getEnginSpecificationsList(e, idx, parentIndex) {
+      // 重置规格
+      this.currentCollapses[parentIndex].zEngineeringMaterialBo[idx].specifications = ''
+      getEnginSpecificationsList({materId: e.materialQuality}).then(res => {
+        console.log('规格', res.data)
+        this.specificationsList = res.data
+      })
+    },
+    getUrl(_, idx) {
+      this.currentCollapses[idx].zEngiineeringPhotoBoList = [...arguments][0][0].map(e => e.url) || [];
+    },
+    getUrl1(_, idx) {
+      this.currentCollapses[idx].zEngiineeringPhotoBoListOne = [...arguments][0][0].map(e => e.url) || [];
+    },
+    getUrl2(_, idx) {
+      this.currentCollapses[idx].zEngiineeringPhotoBoListTwo = [...arguments][0][0].map(e => e.url) || [];
+    },
+    getUrl3(_, idx) {
+      this.currentCollapses[idx].zEngiineeringPhotoBoListThree = [...arguments][0][0].map(e => e.url) || [];
+    },
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .nodeForm {
+  .el-form-item__content {
+    display: flex;
+  }
+}
+
+::v-deep .materialForm {
+  display: flex !important;
+  flex-wrap: wrap;
+
+  .el-form-item {
+    width: 320px;
+  }
+}
+
+::v-deep .obsImageUpload {
+  .el-upload--picture-card {
+    display: block !important;
+  }
+}
+
+::v-deep .obsImageUpload > div {
+  display: flex;
+}
+
+::v-deep .el-dialog {
+  height: 85%;
+
+  .el-dialog__body {
+    padding: 10px 20px;
+    color: #606266;
+    font-size: 14px;
+    word-break: break-all;
+  }
+}
+
+::v-deep .el-upload-notShow {
+  .el-upload--picture-card {
+    display: none;
+  }
+}
+
+::v-deep .labelWidth {
+  .el-form-item__label {
+    width: 100px;
+  }
+}
+
+::v-deep .obsImageUploads {
+  .el-upload--picture-card {
+    display: none;
+  }
+}
+
+.ConstructionDetailsDialog {
+  position: absolute;
+
+  .projectTabs {
+    height: 100%;
+    overflow: hidden;
+    overflow-y: scroll;
+    margin-top: 4%;
+
+    ::v-deep .el-tabs__content {
+      margin-top: 1%;
+    }
+
+    ::v-deep .el-tabs__nav {
+      border: none;
+      overflow: hidden;
+      overflow-x: scroll;
+    }
+
+    ::v-deep .el-tabs__item {
+      // width: 47%;
+      border: 1px solid #a3d3ff;
+      border-radius: 5px;
+    }
+
+    ::v-deep .el-tabs__item.is-active {
+      background-color: #e8f4ff;
+      color: #1890ff;
+    }
+
+    ::v-deep .el-tabs__header {
+      position: fixed;
+      width: 53%;
+      border: none;
+      top: 13%;
+    }
+
+    ::v-deep .el-collapse-item__wrap {
+      padding: 0 4%;
+    }
+
+    .check {
+      position: fixed;
+      right: 22.1%;
+      top: 13.1%;
+      height: 4.6%;
+      //background-color: #CC9900;
+      //color: #fff;
+    }
+  }
+
+  .projectTabs::-webkit-scrollbar {
+    display: none;
+  }
+
+  ::v-deep .rmOldPie {
+
+    .el-collapse-item {
+      border: none;
+    }
+  }
+}
+
+.personInfo > span:not(:nth-child(1)) {
+  margin-left: 50px;
+}
+
+::v-deep .checkingDialog {
+  height: 50%;
+  margin-top: 6%;
+
+
+
+  .el-textarea__inner {
+    width: 246%;
+    height: 140px;
+  }
+}
+</style>

+ 1 - 1
src/components/ConstructionDetails/indexSZ.vue

@@ -435,7 +435,7 @@ export default {
             this.checkingInfo.engInfoId = this.currentEnginId
             this.checkingInfo.delInfoIdList = this.delinfoidList
             this.checkingInfo.infoIdList = this.infoIdList
-            this.$emit('checkWorking', this.checkingInfo)
+            this.$emit('checkWorking', this.checkingInfo,this.activeNames=='回填、撤场'?1:0)
             this.checkList = []
           } catch (error) {
             this.checkingInfo.engInfoId = null

+ 491 - 0
src/components/EnginNodeInfo/indexGY.vue

@@ -0,0 +1,491 @@
+<!--
+ *@description: 节点信息form(新)
+ *@author: yh Fu
+ *@date: 2024-01-10 14:44:14
+ *@version: V1.0.5
+ -->
+<template>
+  <div style="width: 100%; height: 100%;">
+    <!-- 节点表单 -->
+    <el-form ref="fangxianForm" v-if="flag=='gy_out'" :model="nodeInfo" :rules="nodeRules" label-width="200px">
+      <h2 style="margin-left: 16%;font-weight: 800;">{{ name }}</h2>
+      <el-form-item label="施工时间" prop="constructTime" :style=" 'margin-left: -27px' ">
+        <el-date-picker
+          :disabled="formType"
+          v-model="nodeInfo.constructTime"
+          value-format="yyyy-MM-dd hh:mm:ss"
+          type="datetime"
+          placeholder="请选择施工时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="照片" prop="zEngiineeringPhotoBoList" class="obsImage" v-if="'回填、撤场' != name">
+        <ObsImageUpload ref="obsImageUpload" :limit="9999" :fileType="['png', 'jpg', 'jpeg']" :value="nodeInfo.zEngiineeringPhotoBoList"
+                        @input="getUrl"></ObsImageUpload>
+      </el-form-item>
+      <el-form-item label="回填前" prop="zEngiineeringPhotoBoListOne" class="obsImage" v-if="'回填、撤场' == name">
+        <ObsImageUpload ref="obsImageUpload1" :limit="9999" :fileType="['png', 'jpg', 'jpeg']" :value="nodeInfo.zEngiineeringPhotoBoListOne"
+                        @input="getUrl1"></ObsImageUpload>
+      </el-form-item>
+      <el-form-item label="铺设警示带" prop="zEngiineeringPhotoBoListTwo" class="obsImage" v-if="'回填、撤场' == name">
+        <ObsImageUpload ref="obsImageUpload2" :limit="9999" :fileType="['png', 'jpg', 'jpeg']" :value="nodeInfo.zEngiineeringPhotoBoListTwo"
+                        @input="getUrl2"></ObsImageUpload>
+      </el-form-item>
+      <el-form-item label="回填后" prop="zEngiineeringPhotoBoListThree" class="obsImage" v-if="'回填、撤场' == name">
+        <ObsImageUpload ref="obsImageUpload3" :limit="9999" :fileType="['png', 'jpg', 'jpeg']" :value="nodeInfo.zEngiineeringPhotoBoListThree"
+                        @input="getUrl3"></ObsImageUpload>
+      </el-form-item>
+      <el-form-item label="文字说明" prop="remark" v-if="'隐蔽工程'== name">
+        <el-input
+          v-model="nodeInfo.remark"
+          type="textarea"
+          placeholder="请输入"
+          maxlength="255"
+        />
+      </el-form-item>
+      <div style="width: 25%;position: relative;left: 20.5%;top: -8px;" v-if="['焊接、防腐','架空管线','下管','沟下连头'].includes(name)">
+        <el-button @click="addMaterial()">新增用料信息</el-button>
+      </div>
+      <el-row v-for="(item, index) in zEngineeringMaterialBo" v-if="['焊接、防腐','架空管线','下管','沟下连头'].includes(name)" :key="index" style="left: 13.5%;" :class="'rowStructure'">
+        <el-col :span="7">
+          <el-form-item
+            :prop="'zEngineeringMaterialBo.' + index + '.materialQuality'"
+            label-width="50px"
+            label="材质"
+
+          >
+            <el-select v-model="item.materialQuality" placeholder="请选择材质" style="width: 100%" @change="getEnginSpecificationsList(item, index)" filterable @blur="selectBlur(arguments,index,'materialQuality')">
+              <el-option
+                v-for="e in materialQualityList"
+                :key="e.id"
+                :label="e.name"
+                :value="e.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="7">
+          <el-form-item
+            :prop="'zEngineeringMaterialBo.' + index + '.specifications'"
+            label-width="50px"
+            label="规格"
+
+          >
+            <el-select v-model="item.specifications" placeholder="请选择规格" style="width: 100%" filterable @blur="selectBlur(arguments,index,'specifications')">
+              <el-option
+                v-for="e in specificationsList"
+                :key="e.id"
+                :label="e.name"
+                :value="e.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="7">
+          <el-form-item
+            :prop="'zEngineeringMaterialBo.' + index + '.number'"
+            label-width="50px"
+            label="米数"
+          >
+            <div class="block" style="display: inline-block; margin-right: 20px;">
+              <el-input v-model="item.number" placeholder="请输入米数" style="width: 100%" oninput="value=value.match(/\d+(\.\d{0,1})?/) ? value.match(/\d+(\.\d{0,1})?/)[0] : ''" :disabled="status == 'read-only'"><template slot="append">米</template></el-input>
+            </div>
+          </el-form-item>
+        </el-col>
+        <el-col :span="7">
+          <el-form-item
+            :prop="'zEngineeringMaterialBo.' + index + '.number'"
+            label-width="50px"
+          ><div class="block" style="display: inline-block; margin-right: 20px;"></div></el-form-item>
+        </el-col>
+
+        <el-button v-if="zEngineeringMaterialBo.length > 0" @click="removezEngineeringMaterialBo(index)">
+            删除
+        </el-button>
+      </el-row>
+      <el-row v-for="(item, index) in zEngineeringMaterialBo" v-if="['阀井'].includes(name)" :key="index" style="left: 13.5%;" :class="'rowStructure'">
+        <el-col :span="7">
+          <el-form-item
+            :prop="'zEngineeringMaterialBo.' + index + '.remark'"
+            label-width="50px"
+            label="型号"
+          >
+            <div class="block" style="display: inline-block; margin-right: 20px;">
+              <el-input v-model="item.remark" placeholder="请输入型号" style="width: 100%" :disabled="status == 'read-only'"/>
+            </div>
+          </el-form-item>
+        </el-col>
+        <el-col :span="7">
+          <el-form-item
+            :prop="'zEngineeringMaterialBo.' + index + '.number'"
+            label-width="50px"
+          ><div class="block" style="display: inline-block; margin-right: 20px;"></div></el-form-item>
+        </el-col>
+
+        <el-button v-if="zEngineeringMaterialBo.length > 0" @click="removezEngineeringMaterialBo(index)">
+            删除
+        </el-button>
+      </el-row>
+      <hr style="position: relative;left: 10%;">
+    </el-form>
+    <el-form ref="fangxianForm" v-if="flag=='gy_inner'" :model="nodeInfo" :rules="nodeRules" label-width="200px">
+      <h2 style="margin-left: 16%;font-weight: 800;">{{ name }}</h2>
+      <el-form-item label="施工时间" prop="constructTime" :style=" 'margin-left: -27px' ">
+        <el-date-picker
+          :disabled="formType"
+          v-model="nodeInfo.constructTime"
+          value-format="yyyy-MM-dd hh:mm:ss"
+          type="datetime"
+          placeholder="请选择施工时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="照片" prop="zEngiineeringPhotoBoList" class="obsImage">
+        <ObsImageUpload ref="obsImageUpload" :limit="9999" :fileType="['png', 'jpg', 'jpeg']" :value="nodeInfo.zEngiineeringPhotoBoList"
+                        @input="getUrl"></ObsImageUpload>
+      </el-form-item>
+      <div style="width: 25%;position: relative;left: 20.5%;top: -8px;" v-if="['焊接'].includes(name)">
+        <el-button @click="addMaterial()">新增用料信息</el-button>
+      </div>
+      <el-row v-for="(item, index) in zEngineeringMaterialBo" v-if="['焊接'].includes(name)" :key="index" style="left: 13.5%;" :class="'rowStructure'">
+        <el-col :span="7">
+          <el-form-item
+            :prop="'zEngineeringMaterialBo.' + index + '.materialQuality'"
+            label-width="50px"
+            label="材质"
+          >
+            <el-select v-model="item.materialQuality" placeholder="请选择材质" style="width: 100%" @change="getEnginSpecificationsList(item, index)" filterable @blur="selectBlur(arguments,index,'materialQuality')">
+              <el-option
+                v-for="e in materialQualityList"
+                :key="e.id"
+                :label="e.name"
+                :value="e.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="7">
+          <el-form-item
+            :prop="'zEngineeringMaterialBo.' + index + '.specifications'"
+            label-width="50px"
+            label="规格"
+          >
+            <el-select v-model="item.specifications" placeholder="请选择规格" style="width: 100%" filterable @blur="selectBlur(arguments,index,'specifications')">
+              <el-option
+                v-for="e in specificationsList"
+                :key="e.id"
+                :label="e.name"
+                :value="e.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="7">
+          <el-form-item
+            :prop="'zEngineeringMaterialBo.' + index + '.number'"
+            label-width="50px"
+            label="米数"
+          >
+            <div class="block" style="display: inline-block; margin-right: 20px;">
+              <el-input v-model="item.number" placeholder="请输入米数" style="width: 100%" oninput="value=value.match(/\d+(\.\d{0,1})?/) ? value.match(/\d+(\.\d{0,1})?/)[0] : ''" :disabled="status == 'read-only'"><template slot="append">米</template></el-input>
+            </div>
+          </el-form-item>
+        </el-col>
+        <el-col :span="7">
+          <el-form-item
+            :prop="'zEngineeringMaterialBo.' + index + '.number'"
+            label-width="50px"
+          ><div class="block" style="display: inline-block; margin-right: 20px;"></div></el-form-item>
+        </el-col>
+
+        <el-button v-if="zEngineeringMaterialBo.length > 0" @click="removezEngineeringMaterialBo(index)">
+            删除
+        </el-button>
+      </el-row>
+      <hr style="position: relative;left: 10%;">
+    </el-form>
+    <el-form ref="fangxianForm" v-if="flag=='gy_tyg'" :model="nodeInfo" :rules="nodeRules" label-width="200px">
+      <h2 style="margin-left: 16%;font-weight: 800;">{{ name }}</h2>
+      <el-form-item label="施工时间" prop="constructTime" :style=" 'margin-left: -27px' ">
+        <el-date-picker
+          :disabled="formType"
+          v-model="nodeInfo.constructTime"
+          value-format="yyyy-MM-dd hh:mm:ss"
+          type="datetime"
+          placeholder="请选择施工时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item
+        :prop="nodeInfo.remark"
+        :class="'labelWidth'"
+        label="施工内容"
+        label-width="95px"
+      >
+        <div class="block" style="display: inline-block; margin-right: 20px;">
+          <el-input v-model="nodeInfo.remark" placeholder="请输入施工内容" style="width: 100%" maxlength="100"
+                    type="textarea" ></el-input>
+        </div>
+      </el-form-item>
+      <el-form-item label="照片" prop="zEngiineeringPhotoBoList" class="obsImage">
+        <ObsImageUpload ref="obsImageUpload" :limit="9999" :fileType="['png', 'jpg', 'jpeg']" :value="nodeInfo.zEngiineeringPhotoBoList"
+                        @input="getUrl"></ObsImageUpload>
+      </el-form-item>
+      <hr style="position: relative;left: 10%;">
+    </el-form>
+
+  </div>
+</template>
+
+<script>
+import {
+  getEnginMaterialQualityList,                    // 材质
+  getEnginSpecificationsList,                     // 规格
+  getDictType,                                    // 腐蚀程度
+
+} from '@/api/zdsz/enginee'
+import ObsVideoUpload from "@/components/ObsVideoUpload/index.vue";
+export default {
+  name:'EnginNodeInfoGY',
+  props:['types','enginType','enginSort','enginNode','name','currentContain','updateOption','status','flag'],
+  components:{ObsVideoUpload},
+  data(){
+    return {
+      constructAccordingDrawingsOption:[
+        {
+          value:'Y',
+          label:'是'
+        },
+        {
+          value:'N',
+          label:'否'
+        }
+      ],
+      segmentedCompressionQualifiedOption:[
+        {
+          value:'1',
+          label:'合格'
+        },
+        {
+          value:'0',
+          label:'不合格'
+        }
+      ],
+      materialQualityList_zbf:[],                      // 自闭阀option
+      materialQualityList_zjg:[],                      // 灶具管option
+      materialQualityList:[],                     // 材质
+      specificationsList:[],                      // 规格
+      materialComponList:[],
+      nodeInfo:{
+        backfillTime:'',                        // 回填时间
+        constructTime:'',
+        constructAccordingDrawings:'',
+        segmentedCompressionQualified:'',
+        zEngiineeringPhotoBoList:[],            // 照片集合
+        zEngiineeringPhotoBoListOne:[],            // 照片集合
+        zEngiineeringPhotoBoListTwo:[],            // 照片集合
+        zEngiineeringPhotoBoListThree:[],            // 照片集合
+        zEngineeringMaterialBo:[],              // 用料集合
+        remark:'',
+        constructAddre:''
+      },
+      nodeInfoBo:{
+        zEngineeringInfoBo:{
+
+        }
+      },                                         //  节点信息
+      zEngineeringMaterialBo:[
+
+      ],                                         //  用料信息
+      nodeRules:{
+        zEngiineeringPhotoBoList: [
+          {required: true, message: "至少上传一张图片", trigger: "change"}
+        ],
+        constructTime: [
+          {required: true, message: "请选择施工时间", trigger: "change"}
+        ]
+      }
+    }
+  },
+  created(){
+      // 获取材质
+      let enginType = '工业工程'
+      getEnginMaterialQualityList({enginType:enginType}).then(res => {
+        this.materialQualityList = res.data
+      })
+  },
+  mounted(){
+    console.log('当前节点name',this.name)
+    console.log('update',this.updateOption)
+    console.log('当前节点currentContain',this.types)
+    this.materialComponList = this.currentContain.find(e => {
+      if( e instanceof Array){
+        return e
+      }
+
+    })
+
+    if(this.status == '修改'){
+      this.currentContain.find(e => {
+        console.log(this.updateOption)
+        if( e instanceof Array){
+          this.zEngineeringMaterialBo = this.updateOption.zEngineeringInfoBoList[0].zEngineeringMaterialBo
+        }
+        this.nodeInfo[e] = this.updateOption[e]
+      })
+      this.nodeInfo.zEngiineeringPhotoBoList = this.updateOption.zEngineeringInfoBoList[0].zEngiineeringPhotoBoList
+      this.nodeInfo.zEngiineeringPhotoBoListOne = this.updateOption.zEngineeringInfoBoList[0].zEngiineeringPhotoBoListOne
+      this.nodeInfo.zEngiineeringPhotoBoListTwo = this.updateOption.zEngineeringInfoBoList[0].zEngiineeringPhotoBoListTwo
+    }
+
+    setTimeout(() => {
+      // 至少存在一条物料
+      this.addMaterial()
+    },1500)
+    console.log('用料组件',this.materialComponList)
+    console.log('用料信息',this.zEngineeringMaterialBo)
+    console.log('节点信息',this.nodeInfo)
+    // 添加用料对象
+    // this.addMaterial()
+  },
+  methods:{
+    selectBlur(_,index,name) {
+      this.zEngineeringMaterialBo[index][name] = [...arguments][0][0].target.value
+    },
+    // 收集节点信息
+    infoCollection(){
+      let result = null
+      console.log(this.$refs.fangxianForm)
+      this.$refs.fangxianForm.validate(valid => {
+        if(valid){
+          // 收集主节点信息
+          this.currentContain.forEach(e => {
+            if( e instanceof Array){
+              // 包含用料 特殊处理
+              return
+            }
+            this.nodeInfoBo[e] = this.nodeInfo[e]
+          })
+          this.nodeInfoBo.type = this.name
+          if (this.name!='回填、撤场'){
+            this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoList = []
+            this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoList = this.nodeInfo.zEngiineeringPhotoBoList
+          }
+          if (this.name=='回填、撤场'){
+            this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoListOne = []
+            this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoListTwo = []
+            this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoListThree = []
+            this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoListOne = this.nodeInfo.zEngiineeringPhotoBoListOne
+            this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoListTwo = this.nodeInfo.zEngiineeringPhotoBoListTwo
+            this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoListThree = this.nodeInfo.zEngiineeringPhotoBoListThree
+          }          this.nodeInfoBo.zEngineeringInfoBo.zEngineeringMaterialBo = this.zEngineeringMaterialBo
+          this.nodeInfoBo.zEngineeringInfoBo.constructAddre=this.nodeInfo.constructAddre
+          this.nodeInfoBo.zEngineeringInfoBo.constructTime=this.nodeInfo.constructTime
+          this.nodeInfoBo.zEngineeringInfoBo.remark=this.nodeInfo.remark
+          // delete this.nodeInfo.zEngiineeringPhotoBoList
+          console.log('即将返回的节点Info',this.nodeInfoBo)
+          result = this.nodeInfoBo
+        } else {
+          this.$message({
+            message: '请完善信息',
+            type: 'error'
+          });
+          throw 'valid Failed'
+        }
+      })
+      return result
+    },
+    addMaterial(){
+      let materialBo = {}
+      // this.materialComponList.forEach(e => {
+      //   materialBo[e] = null
+      // })
+      this.zEngineeringMaterialBo.push(materialBo)
+      this.nodeInfo.zEngineeringMaterialBo.push(materialBo)
+      // console.log('节点用料参数对象',this.zEngineeringMaterialBo)
+    },
+    addzEngineeringMaterialBo(option,params){
+      let material = {}
+      params.forEach(e => {
+        material[e] = ""
+      })
+      this[option].zEngineeringMaterialBo.push(
+        material
+      )
+    },
+    removezEngineeringMaterialBo(index){
+      this.zEngineeringMaterialBo.splice(index, 1);
+    },
+    // 填充已有数据
+    updateInfo(e){
+      console.log('填充',e)
+    },
+    getUrl(url) {
+      this.nodeInfo.zEngiineeringPhotoBoList = this.$refs.obsImageUpload.fileList ? this.$refs.obsImageUpload.fileList.map(e=>e.url):[];
+    },
+    getUrl1(url) {
+      this.nodeInfo.zEngiineeringPhotoBoListOne = this.$refs.obsImageUpload1.fileList ? this.$refs.obsImageUpload1.fileList.map(e=>e.url):[];
+    },
+    getUrl2(url) {
+      this.nodeInfo.zEngiineeringPhotoBoListTwo = this.$refs.obsImageUpload2.fileList ? this.$refs.obsImageUpload2.fileList.map(e=>e.url):[];
+    },
+    getUrl3(url) {
+      this.nodeInfo.zEngiineeringPhotoBoListThree = this.$refs.obsImageUpload3.fileList ? this.$refs.obsImageUpload3.fileList.map(e=>e.url):[];
+    },
+    // 获取材质规格
+    getEnginSpecificationsList(e,idx){
+      this.zEngineeringMaterialBo[idx].specifications = null;
+      getEnginSpecificationsList({materId:e.materialQuality}).then(res => {
+        this.specificationsList = res.data
+      })
+    },
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+
+::v-deep .material_desc{
+  .el-form-item__content{
+    margin-left: 50px !important;
+  }
+}
+::v-deep .el-form{
+  position: relative;
+  left: -10%;
+  .el-form-item{
+    display: inline-block;
+  }
+  .obsImage{
+    width: 100%;
+    display: block;
+    margin-left: 8%;
+    .el-form-item__label{
+      width: 113px !important;
+    }
+    .el-form-item__error{
+      position: relative;
+      left: -10%;
+    }
+  }
+
+  .obsActiveImage{
+    .el-form{
+        left:-14% !important
+    }
+    .el-form-item__label{
+      width: 97px !important;
+    }
+  }
+
+  .obsActiveImageStructure{
+    .el-form-item__label{
+      width:161px !important;
+    }
+  }
+
+  .rowStructure{
+    padding-left: 3.6%;
+    .el-col .el-form-item{
+      width:73%
+    }
+  }
+}
+</style>

+ 3 - 2
src/components/EnginNodeInfo/indexSZ.vue

@@ -268,11 +268,11 @@ export default {
           })
           this.nodeInfoBo.type = this.name
           // 接口数据格式修改 图片和用料放到nodeInfoBo节点详情对象中
-          if (this.name=='回填、撤场'){
+          if (this.name!='回填、撤场'){
             this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoList = []
             this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoList = this.nodeInfo.zEngiineeringPhotoBoList
           }
-          if (this.name!='回填、撤场'){
+          if (this.name=='回填、撤场'){
             this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoListOne = []
             this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoListTwo = []
             this.nodeInfoBo.zEngineeringInfoBo.zEngiineeringPhotoBoListThree = []
@@ -283,6 +283,7 @@ export default {
           this.nodeInfoBo.zEngineeringInfoBo.zEngineeringMaterialBo = this.zEngineeringMaterialBo
           this.nodeInfoBo.zEngineeringInfoBo.constructAddre=this.nodeInfo.constructAddre
           this.nodeInfoBo.zEngineeringInfoBo.constructTime=this.nodeInfo.constructTime
+          this.nodeInfoBo.zEngineeringInfoBo.remark=this.nodeInfo.remark
           // delete this.nodeInfo.zEngiineeringPhotoBoList
           console.log('即将返回的节点Info',this.nodeInfoBo)
           result = this.nodeInfoBo

File diff suppressed because it is too large
+ 1103 - 0
src/views/zdsz/engineeringGY/index.vue


+ 22 - 5
src/views/zdsz/engineeringIndustry/index.vue

@@ -557,9 +557,28 @@ export default {
       this.$download.zip(`/zdsz/engineeringPipeJacking/downloadZip/${'市政工程'}/${name}`, name);
     },
     // 节点审核
-    checkWorking(checkingInfo) {
+    checkWorking(checkingInfo,flag) {
       let params = checkingInfo
       params.createTime = this.createTime
+      if (flag === 1){
+        params.infoIdList.forEach(item=>{
+          if (item.zEngiineeringPhotoBoListOne.length>0){
+            item.zEngiineeringPhotoBoListOne.forEach(o=>{
+              item.zEngiineeringPhotoBoList.push(o)
+            })
+          }
+          if (item.zEngiineeringPhotoBoListTwo.length>0){
+            item.zEngiineeringPhotoBoListTwo.forEach(o=>{
+              item.zEngiineeringPhotoBoList.push(o)
+            })
+          }
+          if (item.zEngiineeringPhotoBoListThree.length>0){
+            item.zEngiineeringPhotoBoListThree.forEach(o=>{
+              item.zEngiineeringPhotoBoList.push(o)
+            })
+          }
+        })
+      }
       console.log('节点审核 checkingInfo===', params)
       insertReview(params).then(res => {
         if (res.code == 200) {
@@ -783,7 +802,7 @@ export default {
     getUrl(url) {
       this.zEngineeringNodeBo.zEngineeringInfoBo.zEngiineeringPhotoBoList = this.$refs.obsImageUpload.fileList ? this.$refs.obsImageUpload.fileList.map(e => e.url) : [];
     },
-    /** 查询市政工程|工业工程列表 */
+    /** 查询市政工程 */
     getList(val) {
       this.loading = true;
       getEngineeIndustryList(this.searchParams).then(res => {
@@ -832,13 +851,11 @@ export default {
     handleAdd() {
       this.reset();
       this.gc = true
-      this.title = (this.form.type === '1' ? "新增工业工程" : "新增市政工程");
+      this.title = "新增市政工程";
       this.currentType = 'add'
       this.open = true;
     },
     removeFile(val) {
-      console.log(val)
-      console.log("我是文件")
       this.form.files = val
     },
     /** 修改按钮操作 */