index.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847
  1. <!--
  2. *@description: 工程历史详情
  3. *@author: yh Fu
  4. *@date: 2024-1-8 10:04:23
  5. *@version: V1.0.5
  6. -->
  7. <template>
  8. <div style="width: 100%;height: 100%;">
  9. <el-dialog
  10. :visible.sync="dialogVisible"
  11. :title="titleName"
  12. width="60%"
  13. append-to-body
  14. custom-class="ConstructionDetailsDialog">
  15. <el-tabs type="card" v-model="activeNames" @tab-click="viewSource" class="projectTabs">
  16. <el-tab-pane
  17. :label="e.label"
  18. :name="e.value"
  19. v-for="(e,idx) in currentDicts"
  20. :key="idx"
  21. >
  22. <el-collapse
  23. class="rmOldPie"
  24. v-for="(e,idx) in currentCollapses"
  25. :key="idx"
  26. >
  27. <el-collapse-item :name="idx">
  28. <template slot="title">
  29. <div style="display: flex;width: 100%;height: 100%;">
  30. <div
  31. style="width: 15px;height: 15px;margin: auto 10px;border-radius: 73%;background-color: #a3d3ff;box-shadow: 1px 1px rgb(131 131 131 / 62%);">
  32. </div>
  33. <h2 style="margin-left: 1%;font-weight: 700;">{{ e.updateTime }}</h2>
  34. </div>
  35. </template>
  36. <!-- 人员信息 -->
  37. <div class="personInfo">
  38. <span>负责人:{{ e.headName }} </span>
  39. <span>负责人电话:{{
  40. e.headPhone === undefined || e.headPhone === null || e.headPhone === '' ? '无' : e.headPhone
  41. }}</span>
  42. <!-- <span>施工人:{{ e.constructUser }}</span>-->
  43. <!-- <span>施工人电话:{{-->
  44. <!-- e.constructPhone === undefined || e.constructPhone === null || e.constructPhone === '' ? '无' : e.constructPhone-->
  45. <!-- }}</span>-->
  46. </div>
  47. <hr>
  48. <!-- 用料明细 -->
  49. <div
  50. v-for="(i,index) in e.zEngineeringMaterialBo || [] "
  51. :key="index"
  52. >
  53. <el-form :model="nodeInfo" class="nodeForm materialForm">
  54. <el-form-item
  55. :prop="i.materialQuality"
  56. :class="enginType != '基建工程' && enginType != '民用工程' ? 'labelWidth' : '' "
  57. :label="activeNames == '阀管' ? '灶具管厂家': '材质'"
  58. v-show="i.materialQuality != null"
  59. label-width="95px"
  60. >
  61. <!-- :rules="{required: true, message: '请输入材质', trigger: 'blur'}"-->
  62. <!-- <el-input v-model="item.materialQuality" placeholder="请输入材质" style="width: 100%"/>-->
  63. <el-select v-model="i.materialQuality" placeholder="请选择材质" style="width: 100%" @change="getEnginSpecificationsList(i, index,idx)" :disabled="status == 'read-only' ">
  64. <el-option
  65. v-for="e in (activeNames == '阀管' ?materialQualityList_zjg:materialQualityList)"
  66. :key="e.id"
  67. :label="e.name"
  68. :value="e.id"
  69. ></el-option>
  70. </el-select>
  71. </el-form-item>
  72. <el-form-item
  73. :prop="i.specifications"
  74. :class="enginType != '基建工程' && enginType != '民用工程' ? 'labelWidth' : '' "
  75. label="规格"
  76. v-show="i.specifications != null"
  77. label-width="95px"
  78. >
  79. <el-select v-model="i.specifications" placeholder="请选择规格" style="width: 100%" :disabled="status == 'read-only' ">
  80. <!-- <el-option
  81. v-for="e in specificationsList"
  82. :key="e.id"
  83. :label="e.name"
  84. :value="e.id"
  85. ></el-option> -->
  86. <el-option
  87. v-for="e in corrosionLevelListAll.filter(e => e.materId == i.materialQuality)"
  88. :key="e.id"
  89. :label="e.name"
  90. :value="e.id"
  91. ></el-option>
  92. </el-select>
  93. </el-form-item>
  94. <el-form-item
  95. v-if="currentDicts.some(item=>item.label==='底腿')"
  96. :prop="i.number + ''"
  97. :class="enginType != '基建工程' && enginType != '民用工程' ? 'labelWidth' : '' "
  98. label="管径"
  99. v-show="i.number != null"
  100. label-width="95px"
  101. >
  102. <div class="block" style="display: inline-block; margin-right: 20px;">
  103. <el-input v-model="i.number" placeholder="请输入管径" style="width: 100%" type="number" oninput="value = value.replace(/[^\d]/g, '');if(value.length>9); value=value.slice(0,9)" max="999999999" :disabled="status == 'read-only'"></el-input>
  104. </div>
  105. </el-form-item>
  106. <el-form-item
  107. v-else
  108. :prop="i.number + ''"
  109. :class="enginType != '基建工程' && enginType != '民用工程' ? 'labelWidth' : '' "
  110. label="米数"
  111. v-show="i.number != null"
  112. label-width="95px"
  113. >
  114. <div class="block" style="display: inline-block; margin-right: 20px;">
  115. <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="status == 'read-only'"> <template slot="append">米</template></el-input>
  116. </div>
  117. </el-form-item>
  118. <el-form-item
  119. :prop="i.remark + ''"
  120. :class="enginType != '基建工程' && enginType != '民用工程' ? 'labelWidth' : '' "
  121. label="描述"
  122. v-show="i.remark != null"
  123. >
  124. <div class="block" style="display: inline-block; margin-right: 20px;">
  125. <el-input v-model="i.remark" placeholder="请输入" style="width: 100%" maxlength="100" :disabled="status == 'read-only'"></el-input>
  126. </div>
  127. </el-form-item>
  128. <el-form-item
  129. :prop="i.corrosionLevel"
  130. label="腐蚀等级"
  131. v-show="i.corrosionLevel != null"
  132. label-width="95px"
  133. >
  134. <!-- :rules="{required: true, message: '请输入材质', trigger: 'blur'}"-->
  135. <!-- <el-input v-model="item.materialQuality" placeholder="请输入材质" style="width: 100%"/>-->
  136. <el-select v-model="i.corrosionLevel" placeholder="请选择腐蚀等级" style="width: 100%" :disabled="status == 'read-only' ">
  137. <el-option
  138. v-for="e in materialQualityList"
  139. :key="e.id"
  140. :label="e.name"
  141. :value="e.id"
  142. ></el-option>
  143. </el-select>
  144. </el-form-item>
  145. <el-form-item
  146. :prop="i.visitType"
  147. label="上门类型"
  148. v-show="i.visitType != null"
  149. label-width="95px"
  150. >
  151. <!-- :rules="{required: true, message: '请输入材质', trigger: 'blur'}"-->
  152. <!-- <el-input v-model="item.materialQuality" placeholder="请输入材质" style="width: 100%"/>-->
  153. <el-select v-model="i.visitType" placeholder="请选择上门类型" style="width: 100%" :disabled="status == 'read-only' ">
  154. <el-option
  155. v-for="e in dict.type.visit_type"
  156. :key="e.value"
  157. :label="e.label"
  158. :value="e.value"
  159. ></el-option>
  160. </el-select>
  161. </el-form-item>
  162. <el-form-item
  163. :prop="i.selfClosingValveType"
  164. label="自闭阀类型"
  165. v-show="i.selfClosingValveType != null"
  166. label-width="95px"
  167. >
  168. <!-- :rules="{required: true, message: '请输入材质', trigger: 'blur'}"-->
  169. <!-- <el-input v-model="item.materialQuality" placeholder="请输入材质" style="width: 100%"/>-->
  170. <el-select v-model="i.selfClosingValveType" placeholder="请选择自闭阀类型" style="width: 100%" :disabled="status == 'read-only' ">
  171. <el-option
  172. v-for="e in materialQualityList_zjg"
  173. :key="e.id"
  174. :label="e.name"
  175. :value="e.id"
  176. ></el-option>
  177. </el-select>
  178. </el-form-item>
  179. <el-form-item
  180. :prop="i.brand"
  181. label="品牌"
  182. v-show="i.brand != null"
  183. label-width="95px"
  184. >
  185. <!-- :rules="{required: true, message: '请输入材质', trigger: 'blur'}"-->
  186. <!-- <el-input v-model="item.materialQuality" placeholder="请输入材质" style="width: 100%"/>-->
  187. <el-select v-model="i.brand" placeholder="请选择品牌" style="width: 100%" :disabled="status == 'read-only' ">
  188. <el-option
  189. v-for="e in materialQualityList"
  190. :key="e.id"
  191. :label="e.name"
  192. :value="e.id"
  193. ></el-option>
  194. </el-select>
  195. </el-form-item>
  196. </el-form>
  197. <!-- <el-input size="mini" v-if="i.brand" style="width: 80%" v-model="i.brand" placeholder="请输入品牌">
  198. <template slot="prepend">品牌</template>
  199. </el-input>
  200. <el-input v-if="i.visitType" size="mini" v-model="i.visitType" placeholder="请输入品牌">
  201. <template slot="prepend">上门类型</template>
  202. </el-input>
  203. <el-input size="mini" v-if="i.corrosionLevel" v-model="i.corrosionLevel" placeholder="请输入品牌">
  204. <template slot="prepend">腐蚀等级</template>
  205. </el-input>
  206. <el-input size="mini" v-if="i.selfClosingValveType" v-model="i.selfClosingValveType"
  207. placeholder="请输入品牌">
  208. <template slot="prepend">自闭阀类型</template>
  209. </el-input> -->
  210. </div>
  211. <!-- <el-form-item label="照片" prop="zEngiineeringPhotoBoList" class="obsImage"> -->
  212. <div style="display: flex;width: 100%;height: 100%;" v-if="!(currentDicts.some(item=>item.label==='底腿'))&&!(node==='下沟')&&!(node=='回填')">
  213. <h3 style="width: 95px;font-weight: 600;text-align: center;text-indent: 41px;">图片</h3>
  214. <ObsImageUpload
  215. :class=" status == 'read-only' ? 'obsImageUploads' : '' "
  216. ref="obsImageUpload"
  217. :limit="11"
  218. :fileType="['png', 'jpg', 'jpeg']"
  219. @input="getUrl(arguments,idx)"
  220. :value="e.zEngiineeringPhotoBoList"
  221. :disabled="status == 'read-only' "
  222. ></ObsImageUpload>
  223. </div>
  224. <div style="display: flex;width: 100%;height: 100%;" v-if="node==='下沟'">
  225. <h3 style="width: 95px;font-weight: 600;text-align: center;text-indent: 41px;">管上皮深度测量照片</h3>
  226. <ObsImageUpload
  227. :class=" status == 'read-only' ? 'obsImageUploads' : '' "
  228. ref="obsImageUpload"
  229. :limit="11"
  230. :fileType="['png', 'jpg', 'jpeg']"
  231. @input="getductalEpitheliumUrl(arguments,idx)"
  232. :value="e.ductalEpithelium"
  233. :disabled="status == 'read-only' "
  234. ></ObsImageUpload>
  235. </div>
  236. <div style="display: flex;width: 100%;height: 100%;" v-if="node==='下沟'">
  237. <h3 style="width: 95px;font-weight: 600;text-align: center;text-indent: 41px;">管沟远景照片</h3>
  238. <ObsImageUpload
  239. :class=" status == 'read-only' ? 'obsImageUploads' : '' "
  240. ref="obsImageUpload"
  241. :limit="11"
  242. :fileType="['png', 'jpg', 'jpeg']"
  243. @input="gettrenchProspectUrl(arguments,idx)"
  244. :value="e.trenchProspect"
  245. :disabled="status == 'read-only' "
  246. ></ObsImageUpload>
  247. </div>
  248. <div style="display: flex;width: 100%;height: 100%;" v-if="node==='下沟'">
  249. <h3 style="width: 95px;font-weight: 600;text-align: center;text-indent: 41px;">视频</h3>
  250. <ObsVideoUpload
  251. :class=" status == 'read-only' ? 'obsImageUploads' : '' "
  252. ref="obsImageUpload"
  253. :limit="11"
  254. :fileType="['mp4']"
  255. @input="getVideoUrl(arguments,idx)"
  256. :value="e.video"
  257. :disabled="status == 'read-only' "
  258. ></ObsVideoUpload>
  259. </div>
  260. <div style="display: flex;width: 100%;height: 100%;" v-if="node==='回填'">
  261. <h3 style="width: 95px;font-weight: 600;text-align: center;text-indent: 41px;">石粉回填照片</h3>
  262. <ObsImageUpload
  263. :class=" status == 'read-only' ? 'obsImageUploads' : '' "
  264. ref="obsImageUpload"
  265. :limit="11"
  266. :fileType="['png', 'jpg', 'jpeg']"
  267. @input="getstonePowderUrl(arguments,idx)"
  268. :value="e.stonePowder"
  269. :disabled="status == 'read-only' "
  270. ></ObsImageUpload>
  271. </div>
  272. <div style="display: flex;width: 100%;height: 100%;" v-if="node==='回填'">
  273. <h3 style="width: 95px;font-weight: 600;text-align: center;text-indent: 41px;">警示带铺设</h3>
  274. <ObsImageUpload
  275. :class=" status == 'read-only' ? 'obsImageUploads' : '' "
  276. ref="obsImageUpload"
  277. :limit="11"
  278. :fileType="['png', 'jpg', 'jpeg']"
  279. @input="getwarningtTapeUrl(arguments,idx)"
  280. :value="e.warningtTape"
  281. :disabled="status == 'read-only' "
  282. ></ObsImageUpload>
  283. </div>
  284. <div style="display: flex;width: 100%;height: 100%;" v-if="node==='回填'">
  285. <h3 style="width: 95px;font-weight: 600;text-align: center;text-indent: 41px;">回填后</h3>
  286. <ObsImageUpload
  287. :class=" status == 'read-only' ? 'obsImageUploads' : '' "
  288. ref="obsImageUpload"
  289. :limit="11"
  290. :fileType="['png', 'jpg', 'jpeg']"
  291. @input="getphotosAfterUrl(arguments,idx)"
  292. :value="e.photosAfter"
  293. :disabled="status == 'read-only' "
  294. ></ObsImageUpload>
  295. </div>
  296. <div style="display: flex;width: 100%;height: 100%;" v-if="currentDicts.some(item=>item.label==='底腿')">
  297. <h3 style="width: 95px;font-weight: 600;text-align: center;text-indent: 41px;">开挖前</h3>
  298. <ObsImageUpload
  299. :class=" status == 'read-only' ? 'obsImageUploads' : '' "
  300. ref="obsImageUpload"
  301. :limit="11"
  302. :fileType="['png', 'jpg', 'jpeg']"
  303. @input="getbeforeBottomUrl(arguments,idx)"
  304. :value="e.beforeBottom"
  305. :disabled="status == 'read-only' "
  306. ></ObsImageUpload>
  307. </div>
  308. <div style="display: flex;width: 100%;height: 100%;" v-if="currentDicts.some(item=>item.label==='底腿')">
  309. <h3 style="width: 95px;font-weight: 600;text-align: center;text-indent: 41px;">回填</h3>
  310. <ObsImageUpload
  311. :class=" status == 'read-only' ? 'obsImageUploads' : '' "
  312. ref="obsImageUpload"
  313. :limit="11"
  314. :fileType="['png', 'jpg', 'jpeg']"
  315. @input="getlegBackfillingUrl(arguments,idx)"
  316. :value="e.legBackfilling"
  317. :disabled="status == 'read-only' "
  318. ></ObsImageUpload>
  319. </div>
  320. <div style="display: flex;width: 100%;height: 100%;" v-if="currentDicts.some(item=>item.label==='底腿')">
  321. <h3 style="width: 95px;font-weight: 600;text-align: center;text-indent: 41px;">下沟</h3>
  322. <ObsImageUpload
  323. :class=" status == 'read-only' ? 'obsImageUploads' : '' "
  324. ref="obsImageUpload"
  325. :limit="11"
  326. :fileType="['png', 'jpg', 'jpeg']"
  327. @input="getinferiorSulcusUrl(arguments,idx)"
  328. :value="e.inferiorSulcus"
  329. :disabled="status == 'read-only' "
  330. ></ObsImageUpload>
  331. </div>
  332. <!-- </el-form-item> -->
  333. <div style="display: flex; justify-content: flex-end; width: 100%;height: 100%;">
  334. <el-button plain type="danger" @click=" handleDelete(e)" v-hasPermi="['zdsz:engineeringCivilNode:remove']" style="width: 94px;">删除</el-button>
  335. <!-- <hr>-->
  336. </div>
  337. </el-collapse-item>
  338. </el-collapse>
  339. </el-tab-pane>
  340. <el-button class="check" plain type="danger" @click="checkWorking" v-show="currentStatus == 'check' && isChecking " style="width: 80px;" :disabled="currentCollapses.length == 0">审核</el-button>
  341. <el-button class="check" plain type="danger" @click="updateNodeOption" style="width: 94px;cursor: pointer;" v-if="currentStatus != 'check' && status != 'read-only' ">修改</el-button>
  342. </el-tabs>
  343. </el-dialog>
  344. <!-- 审核 -->
  345. <el-dialog
  346. title="审核"
  347. :visible.sync="checkingVisible"
  348. :title="titleName"
  349. width="30%"
  350. class="checkingDialog"
  351. :before-close="handleChecking">
  352. <el-form :model="checkingInfo" ref="checking" :rules="checkingRule" class="nodeForm">
  353. <el-form-item
  354. label-width="85px"
  355. label="审核状态"
  356. prop="reviewStatus"
  357. >
  358. <el-select v-model="checkingInfo.reviewStatus" placeholder="请选择审核状态" style="width: 100%" label="审核状态" @change="validateCHanged">
  359. <el-option
  360. v-for="e in reviewStatusList"
  361. :key="e.label"
  362. :label="e.label"
  363. :value="e.value"
  364. ></el-option>
  365. </el-select>
  366. </el-form-item>
  367. <el-form-item
  368. label-width="85px"
  369. label="审核内容"
  370. prop="reviewContent"
  371. >
  372. <div class="block" style="display: inline-block; margin-right: 20px;">
  373. <el-input
  374. v-model="checkingInfo.reviewContent"
  375. placeholder="请输入审核内容"
  376. type="textarea"
  377. style="width: 97%"/>
  378. </div>
  379. </el-form-item>
  380. </el-form>
  381. <span slot="footer" class="dialog-footer">
  382. <el-button @click="handleChecking">取 消</el-button>
  383. <el-button type="primary" @click=checkingSubmit>确 定</el-button>
  384. </span>
  385. </el-dialog>
  386. </div>
  387. </template>
  388. <script>
  389. import {
  390. getEnginMaterialQualityList, // 材质
  391. getEnginSpecificationsList, // 规格
  392. getDictType, deleteinfoById, // 腐蚀程度
  393. } from '@/api/zdsz/enginee'
  394. import ObsVideoUpload from "@/components/ObsVideoUpload/index.vue";
  395. import {delEngineeringCivil} from "@/api/zdsz/engineeringCivil";
  396. export default {
  397. name: 'ConstructionDetails',
  398. dicts:[
  399. 'visit_type',
  400. 'self_closing_valve_type',
  401. 'brand'
  402. ],
  403. components:{ObsVideoUpload},
  404. props: ['currentCollapses','nodeDetailType','enginType','status','zEngineeringNodeBo'],
  405. data() {
  406. return {
  407. enginSort:'',
  408. enginNode:'',
  409. currentDicts: [], // 当前类型工程节点项
  410. dialogVisible: false,
  411. activeNames: '',
  412. titleName: '',
  413. reviewStatusList:[
  414. {
  415. value:'1',
  416. label:'通过'
  417. },
  418. {
  419. value:'0',
  420. label:'不通过'
  421. }
  422. ],
  423. nodesource:'',// 审核状态option
  424. materialQualityList_zbf:[], // 自闭阀option
  425. materialQualityList_zjg:[], // 灶具管option
  426. materialQualityList:[], // 材质
  427. specificationsList:[], // 规格
  428. materialComponList:[],
  429. nodeInfo:{
  430. backfillTime:'', // 回填时间
  431. constructTime:'',
  432. constructAccordingDrawings:'',
  433. segmentedCompressionQualified:'',
  434. zEngiineeringPhotoBoList:[], // 照片集合
  435. zEngineeringMaterialBo:[], // 用料集合
  436. remark:'',
  437. },
  438. checkingInfo:{
  439. reviewStatus:'', // 审核状态
  440. reviewContent:'', // 审核内容
  441. engInfoId:'', // 节点Id
  442. createTime:'', // 工程创建时间
  443. },
  444. currentStatus:null,
  445. checkingVisible:null,
  446. isChecking:true,
  447. currentEnginId:null,
  448. reviewStatus:null,
  449. corrosionLevelListAll:[],
  450. checkingRule:{
  451. reviewStatus: [
  452. {required: true, message: "审核状态不能为空", trigger: "blur"}
  453. ],
  454. reviewContent: [
  455. {required: true, message: "审核内容不能为空", trigger: "change"}
  456. ],
  457. },node:null
  458. }
  459. },
  460. created(){
  461. // 获取材质
  462. getEnginMaterialQualityList({enginType:this.enginType,enginStep:this.activeNames}).then(res => {
  463. console.log('材质',res)
  464. this.materialQualityList = res.data
  465. })
  466. getEnginSpecificationsList().then(res => {
  467. console.log('规格',res.data)
  468. this.corrosionLevelListAll = res.data
  469. })
  470. },
  471. mounted() {
  472. },
  473. computed:{
  474. },
  475. watch: {
  476. // 此处监听variable变量,当期有变化时执行
  477. currentDicts(item1, item2) {
  478. // item1为新值,item2为旧值
  479. console.log('item1为新值,item2为旧值', item1[0].value)
  480. this.activeNames = item1[0].value
  481. this.$parent.viewNodeSource(item1[0].value)
  482. },
  483. currentCollapses(){
  484. try {
  485. this.currentCollapses[0].zEngineeringReviewBo.reviewStatus != 1 ? this.isChecking = true : false
  486. } catch (error) {
  487. this.isChecking = true
  488. }
  489. console.log('isChecking',this.isChecking)
  490. let materialQuality = []
  491. try {
  492. materialQuality = this.currentCollapses[0].zEngineeringMaterialBo[0].materialQuality
  493. } catch (error) {
  494. materialQuality = []
  495. }
  496. try {
  497. this.reviewStatus = this.currentCollapses[0].zEngineeringReviewBo.reviewStatus != '1' ? true : false
  498. } catch (error) {
  499. this.reviewStatus = true
  500. }
  501. if(materialQuality){
  502. getEnginSpecificationsList({materId:materialQuality}).then(res => {
  503. console.log('规格',res.data)
  504. this.specificationsList = res.data
  505. })
  506. }
  507. }
  508. },
  509. methods: {
  510. validateCHanged(e){
  511. this.reviewStatusList[e].label == '通过' ? this.checkingRule.reviewContent[0].required = true : this.checkingRule.reviewContent[0].required = false
  512. },
  513. handleChecking(){
  514. this.checkingVisible = false
  515. this.checkingInfo = {
  516. reviewStatus:'', // 审核状态
  517. reviewContent:'', // 审核内容
  518. engInfoId:'', // 节点Id
  519. createTime:'', // 工程创建时间
  520. },
  521. this.$refs.checking.resetFields()
  522. },
  523. getSpecificationsList(id){
  524. getEnginSpecificationsList({materId:id}).then(res => {
  525. console.log('________a',res.data)
  526. return res.data
  527. })
  528. },
  529. // 保存节点Id
  530. setEngineId(e){
  531. this.currentEnginId = e
  532. },
  533. // 提交审核
  534. checkingSubmit(){
  535. this.$refs.checking.validate(valid => {
  536. if(valid){
  537. try {
  538. this.checkingInfo.engInfoId = this.currentEnginId
  539. this.$emit('checkWorking',this.checkingInfo)
  540. } catch (error) {
  541. this.checkingInfo.engInfoId = null
  542. }
  543. // this.dialogVisible = false
  544. this.checkingVisible = false
  545. this.checkingInfo = {
  546. reviewStatus:'', // 审核状态
  547. reviewContent:'', // 审核内容
  548. engInfoId:'', // 节点Id
  549. createTime:'', // 工程创建时间
  550. }
  551. } else {
  552. this.$message({
  553. message: '请完善信息',
  554. type: 'error'
  555. });
  556. throw 'valid Failed'
  557. }
  558. })
  559. },
  560. // 查看单节点历史
  561. viewSource(e) {
  562. console.log('节点',e)
  563. this.node=e.name
  564. this.nodesource=e
  565. console.log('data',this.zEngineeringNodeBo)
  566. let data = {enginSort:this.zEngineeringNodeBo.enginType}
  567. console.log(this.node)
  568. data.enginStep = this.node
  569. data.enginNode = this.zEngineeringNodeBo.enginClassification
  570. getEnginMaterialQualityList(data).then(res => {
  571. this.materialQualityList = res.data
  572. })
  573. this.$parent.viewNodeSource(e.name)
  574. },
  575. // 单项审核
  576. checkWorking() {
  577. if(this.currentStatus == 'check'){
  578. this.checkingVisible = true
  579. }
  580. },
  581. updateNodeOption(){
  582. console.log(this.activeNames)
  583. console.log('最新面板',this.currentCollapses)
  584. this.$emit('updateNodeOption',this.currentCollapses)
  585. },
  586. deleteById(e)
  587. {
  588. console.log(e)
  589. deleteinfoById(e).then(res=>{
  590. this.viewSource(this.nodesource)
  591. })
  592. },
  593. handleDelete(row) {
  594. this.$modal.confirm('是否确认删除所选数据项?').then(() => {
  595. this.loading = true;
  596. return this.deleteById(row)
  597. }).then(() => {
  598. this.loading = false;
  599. this.getList();
  600. this.$modal.msgSuccess("删除成功");
  601. }).catch(() => {
  602. }).finally(() => {
  603. this.loading = false;
  604. });
  605. },
  606. // 查看历史
  607. open(dicts, type = null,currentStatus = null,kind = null,title= null,zEngineeringNodeBo) {
  608. console.log(zEngineeringNodeBo)
  609. let data = {enginSort:zEngineeringNodeBo.enginType}
  610. // if (this.node !== ''){
  611. // }
  612. // 腐蚀等级
  613. data.enginStep = dicts[0].value;
  614. if(this.activeNames == '阀管'){
  615. data.nameType = "自闭阀厂家";
  616. getEnginMaterialQualityList(data).then(res => {
  617. this.materialQualityList_zbf = res.data
  618. })
  619. data.nameType = "灶具管厂家";
  620. getEnginMaterialQualityList(data).then(res => {
  621. this.materialQualityList_zjg = res.data
  622. })
  623. }
  624. //data.enginStep = this.node
  625. data.enginNode = zEngineeringNodeBo.enginClassification
  626. getEnginMaterialQualityList(data).then(res => {
  627. this.materialQualityList = res.data
  628. })
  629. this.currentStatus = currentStatus
  630. this.titleName = title
  631. this.checkingVisible = false
  632. console.log(this.reviewStatus,this.currentStatus,this.isChecking)
  633. if (type == '1' || type == '2') {
  634. // 工业 市政
  635. this.$parent.viewNodeSource()
  636. this.currentDicts = [
  637. {
  638. value: "历史数据",
  639. label: "历史数据"
  640. }
  641. ]
  642. } else if (type === '危险作业工程') {
  643. this.$parent.viewNodeSource()
  644. this.currentDicts = [
  645. {
  646. value: "历史数据",
  647. label: "历史数据"
  648. }
  649. ]
  650. } else {
  651. console.log(dicts)
  652. this.dialogVisible = true
  653. if (type=='check'&&kind=='基建'){
  654. dicts=dicts.filter(item=>['水电施工','防水'].includes(item.value))
  655. }
  656. this.currentDicts = dicts
  657. }
  658. //this.currentDicts = dicts
  659. console.log("this.currentDicts",this.currentDicts)
  660. this.dialogVisible = true
  661. this.$forceUpdate()
  662. },
  663. // 获取材质规格
  664. getEnginSpecificationsList(e,idx,parentIndex){
  665. // 重置规格
  666. this.currentCollapses[parentIndex].zEngineeringMaterialBo[idx].specifications = ''
  667. getEnginSpecificationsList({materId:e.materialQuality}).then(res => {
  668. console.log('规格',res.data)
  669. this.specificationsList = res.data
  670. })
  671. },
  672. getUrl(_,idx) {
  673. this.currentCollapses[idx].zEngiineeringPhotoBoList = [...arguments][0][0].map(e=>e.url) || [];
  674. },
  675. getductalEpitheliumUrl(_,idx) {
  676. this.currentCollapses[idx].ductalEpithelium = [...arguments][0][0].map(e=>e.url) || [];
  677. },
  678. gettrenchProspectUrl(_,idx) {
  679. this.currentCollapses[idx].trenchProspect = [...arguments][0][0].map(e=>e.url) || [];
  680. },
  681. getstonePowderUrl(_,idx) {
  682. this.currentCollapses[idx].stonePowder = [...arguments][0][0].map(e=>e.url) || [];
  683. },
  684. getwarningtTapeUrl(_,idx) {
  685. this.currentCollapses[idx].warningtTape = [...arguments][0][0].map(e=>e.url) || [];
  686. },
  687. getbeforeBottomUrl(_,idx) {
  688. this.currentCollapses[idx].beforeBottom = [...arguments][0][0].map(e=>e.url) || [];
  689. },
  690. getlegBackfillingUrl(_,idx) {
  691. this.currentCollapses[idx].legBackfilling = [...arguments][0][0].map(e=>e.url) || [];
  692. },
  693. getinferiorSulcusUrl(_,idx) {
  694. this.currentCollapses[idx].inferiorSulcus = [...arguments][0][0].map(e=>e.url) || [];
  695. },
  696. getphotosAfterUrl(_,idx) {
  697. this.currentCollapses[idx].photosAfter = [...arguments][0][0].map(e=>e.url) || [];
  698. },
  699. getVideoUrl(_,idx) {
  700. this.currentCollapses[idx].video = [...arguments][0][0].map(e=>e.url) || [];
  701. console.log(this.currentCollapses[idx].video)
  702. }
  703. }
  704. }
  705. </script>
  706. <style lang="scss" scoped>
  707. ::v-deep .nodeForm{
  708. .el-form-item__content{
  709. display: flex;
  710. }
  711. }
  712. ::v-deep .materialForm{
  713. display: flex !important;
  714. flex-wrap: wrap;
  715. .el-form-item{
  716. width: 320px;
  717. }
  718. }
  719. ::v-deep .obsImageUpload{
  720. .el-upload--picture-card{
  721. display: block !important;
  722. }
  723. }
  724. ::v-deep .obsImageUpload >div{
  725. display: flex;
  726. }
  727. ::v-deep .el-dialog {
  728. height: 85%;
  729. .el-dialog__body {
  730. overflow: hidden;
  731. height: 94%;
  732. }
  733. }
  734. ::v-deep .el-upload-notShow{
  735. .el-upload--picture-card {
  736. display: none;
  737. }
  738. }
  739. ::v-deep .labelWidth{
  740. .el-form-item__label{
  741. width: 100px;
  742. }
  743. }
  744. ::v-deep .obsImageUploads{
  745. .el-upload--picture-card{
  746. display: none;
  747. }
  748. }
  749. .ConstructionDetailsDialog {
  750. position: absolute;
  751. .projectTabs {
  752. height: 100%;
  753. overflow: hidden;
  754. overflow-y: scroll;
  755. margin-top: 4%;
  756. ::v-deep .el-tabs__content {
  757. margin-top: 1%;
  758. }
  759. ::v-deep .el-tabs__nav {
  760. border: none;
  761. overflow: hidden;
  762. overflow-x: scroll;
  763. }
  764. ::v-deep .el-tabs__item {
  765. // width: 47%;
  766. border: 1px solid #a3d3ff;
  767. border-radius: 5px;
  768. }
  769. ::v-deep .el-tabs__item.is-active {
  770. background-color: #e8f4ff;
  771. color: #1890ff;
  772. }
  773. ::v-deep .el-tabs__header {
  774. position: fixed;
  775. width: 53%;
  776. border: none;
  777. top: 13%;
  778. }
  779. ::v-deep .el-collapse-item__wrap {
  780. padding: 0 4%;
  781. }
  782. .check {
  783. position: fixed;
  784. right: 22.1%;
  785. top: 13.1%;
  786. height: 4.6%;
  787. //background-color: #CC9900;
  788. //color: #fff;
  789. }
  790. }
  791. .projectTabs::-webkit-scrollbar {
  792. display: none;
  793. }
  794. ::v-deep .rmOldPie {
  795. .el-collapse-item {
  796. border: none;
  797. }
  798. }
  799. }
  800. .personInfo >span:not(:nth-child(1)){
  801. margin-left: 50px;
  802. }
  803. ::v-deep .checkingDialog{
  804. height: 50%;
  805. margin-top: 6%;
  806. .el-dialog__body{
  807. height: 72%;
  808. }
  809. .el-textarea__inner{
  810. width: 246%;
  811. height: 140px;
  812. }
  813. }
  814. </style>