Fengmen.vue 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253
  1. <template>
  2. <!-- 风机风门-->
  3. <div class="l_Dialog bou tablebk">
  4. <div class="common-layout" style="margin: 0">
  5. <el-aside
  6. width="2.125rem"
  7. class="L_aside L_aside1 asideg asidegbg leftbgimg1"
  8. >
  9. <div class="demo-collapse">
  10. <el-collapse v-model="coolactiveName1">
  11. <el-collapse-item name="1" class="imgneon">
  12. <template #title>
  13. <el-icon class="iconimg Frame3" fit="contain"></el-icon>
  14. 风机<el-icon class="header-icon"> </el-icon>
  15. </template>
  16. <div class="asides_content">
  17. <div class="jc_content tablecolor">
  18. <div class="jc_padding font12">
  19. <div class="xian btncolor tablefocus bmar">
  20. <el-table
  21. :data="fjtableData"
  22. style="width: 100%"
  23. :max-height="tableHeight"
  24. :highlight-current-row="currentrow"
  25. :row-class-name="tableRowClassName"
  26. @row-click="handlerow($event)"
  27. :header-cell-style="{ background: 'rgba(13, 22, 57, 0) ' }"
  28. >
  29. <template v-slot:empty>
  30. <p>暂无数据</p>
  31. </template>
  32. <el-table-column prop="fanname" label="风机名称" />
  33. <el-table-column prop="pname" label="选择巷道" />
  34. <!-- <el-table-column prop="site" label="相对位置" /> -->
  35. <el-table-column property="siteremark" label="位置"/>
  36. <el-table-column prop="pa" >
  37. <template v-slot:header>
  38. <span >增压</span><br>
  39. <span >(kpa)</span>
  40. </template>
  41. </el-table-column>
  42. <el-table-column prop="onoff" label="开启状态">
  43. <template #default="scope">
  44. {{
  45. scope.row.onoff == "0"
  46. ? "否"
  47. : scope.row.onoff == "1"
  48. ? "是"
  49. : "是"
  50. }}
  51. </template>
  52. </el-table-column>
  53. </el-table>
  54. <div class="asdis_btn">
  55. <div class="flex_a" >
  56. <div
  57. class="btns"
  58. @click="fjloadclick();sdialog.fjloaddialog = true;"
  59. >
  60. <span class="spantext">加载</span>
  61. </div>
  62. </div>
  63. <div class="flex_a" >
  64. <div
  65. class="btns"
  66. @click="fjclick();sdialog.fjdialog = true;"
  67. >
  68. <span class="spantext">添加</span>
  69. </div>
  70. </div>
  71. <div class="flex_a" >
  72. <div class="btns" @click="xiugaiclick()">
  73. <span class="spantext">修改</span>
  74. </div>
  75. </div>
  76. <div class="flex_a">
  77. <div class="btns" @click="delonclock('风机')" >
  78. <span class="spantext">删除</span>
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. </div>
  86. </el-collapse-item>
  87. </el-collapse>
  88. <el-collapse v-model="coolactiveName1" style="margin-top: 10px;">
  89. <el-collapse-item name="2" class="imgneon">
  90. <template #title>
  91. <el-icon class="iconimg Frame3" fit="contain"></el-icon>
  92. 风门<el-icon class="header-icon"> </el-icon>
  93. </template>
  94. <div class="asides_content">
  95. <div class="jc_content tablecolor">
  96. <div class="jc_padding font12">
  97. <div class="xian btncolor tablefocus bmar">
  98. <el-table
  99. :data="fmtableData"
  100. style="width: 100%"
  101. :max-height="tableHeight"
  102. :highlight-current-row="currentrow"
  103. :row-class-name="tableRowClassName"
  104. @row-click="handlerow2($event)"
  105. :header-cell-style="{ background: 'rgba(13, 22, 57, 0) ' }"
  106. >
  107. <template v-slot:empty>
  108. <p>暂无数据</p>
  109. </template>
  110. <el-table-column prop="doorname" label="风门名称" />
  111. <el-table-column prop="pname" label="选择巷道" />
  112. <!-- <el-table-column prop="site" label="相对位置" /> -->
  113. <el-table-column property="siteremark" label="位置"/>
  114. <el-table-column prop="dragcoe" label="阻力系数" />
  115. <el-table-column prop="onoff" label="开启状态">
  116. <template #default="scope">
  117. {{
  118. scope.row.onoff == 0
  119. ? "否"
  120. : scope.row.onoff == 1
  121. ? "是"
  122. : "是"
  123. }}
  124. </template>
  125. </el-table-column>
  126. </el-table>
  127. <div class="asdis_btn">
  128. <div class="flex_a" >
  129. <div
  130. class="btns" @click="fmload();sdialog.fmloaddialog=true"
  131. >
  132. <span class="spantext">加载</span>
  133. </div>
  134. </div>
  135. <div class="flex_a" >
  136. <div
  137. class="btns" @click="fmadd();sdialog.fmdialog=true"
  138. >
  139. <span class="spantext">添加</span>
  140. </div>
  141. </div>
  142. <div class="flex_a" >
  143. <div class="btns" @click="fmxiugai()">
  144. <span class="spantext">修改</span>
  145. </div>
  146. </div>
  147. <div class="flex_a">
  148. <div class="btns" @click="fmdel('风门')" >
  149. <span class="spantext">删除</span>
  150. </div>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. </div>
  156. </div>
  157. </el-collapse-item>
  158. </el-collapse>
  159. </div>
  160. </el-aside>
  161. </div>
  162. <!-- 风机的加载 -->
  163. <el-dialog
  164. v-model="sdialog.fjloaddialog"
  165. width="400"
  166. align-center
  167. :modal="false"
  168. :append-to-body="true"
  169. :z-index='1000'
  170. :close-on-click-modal="false"
  171. :fullscreen="false"
  172. :modal-append-to-body="false"
  173. modal-class="summary-dlg"
  174. class="dialog_class bgcolor tianjia"
  175. draggable
  176. >
  177. <template #header="{ titleId, titleClass }">
  178. <div class="my-header">
  179. <el-image :src="icon" fit="contain"></el-image>
  180. <h4 :id="titleId" :class="titleClass">加载</h4>
  181. </div>
  182. </template>
  183. <div class="demo-input-suffix firsttitle leftbgimg2">
  184. <el-table
  185. :row-class-name="tableRowClassName"
  186. :max-height="tableHeight"
  187. ref="tabledatafjjzref"
  188. type="selection"
  189. :data="tableDatafjjz"
  190. style="width: 100%"
  191. :header-cell-style="{ background: 'rgba(13, 22, 57, 0) ' }"
  192. >
  193. <template v-slot:empty>
  194. <p>暂无数据</p>
  195. </template>
  196. <el-table-column type="selection" width="55" />
  197. <!-- <el-table-column property="snId" label="开始节点" />
  198. <el-table-column property="enId" label="结束节点" /> -->
  199. <el-table-column type="index" label="编号" width="70" />
  200. <el-table-column property="fanname" label="风机名称" />
  201. <el-table-column property="pname" label="巷道名称" />
  202. <!-- <el-table-column property="site" label="相对位置" /> -->
  203. <el-table-column property="siteremark" label="位置"/>
  204. <el-table-column prop="pa" >
  205. <template v-slot:header>
  206. <span >增压</span><br>
  207. <span >(kpa)</span>
  208. </template>
  209. </el-table-column>
  210. <el-table-column prop="onoff" label="开启状态">
  211. <template #default="scope">
  212. {{
  213. scope.row.onoff == "0"
  214. ? "否"
  215. : scope.row.onoff == "1"
  216. ? "是"
  217. : "是"
  218. }}
  219. </template>
  220. </el-table-column>
  221. </el-table>
  222. <div class="dialog-footer footer_div l_btn">
  223. <div class="footerbtn flex1">
  224. <div class="borderimg">
  225. <el-button @click="sdialog.fjloaddialog = false">取消</el-button>
  226. </div>
  227. </div>
  228. <div class="footerbtn flex1">
  229. <div class="borderimg">
  230. <el-button
  231. @click="
  232. fjloadsave();
  233. sdialog.fjloaddialog = false;
  234. "
  235. >
  236. 确定
  237. </el-button>
  238. </div>
  239. </div>
  240. </div>
  241. </div>
  242. </el-dialog>
  243. <!-- 风机的添加 -->
  244. <el-dialog
  245. v-model="sdialog.fjdialog"
  246. width="400"
  247. align-center
  248. :modal="false"
  249. :append-to-body="true"
  250. :z-index='1000'
  251. :close-on-click-modal="false"
  252. :fullscreen="false"
  253. :modal-append-to-body="false"
  254. modal-class="summary-dlg"
  255. class="dialog_class bgcolor tianjia"
  256. draggable
  257. @close='closeDialog'
  258. >
  259. <template #header="{ titleId, titleClass }">
  260. <div class="my-header">
  261. <el-image :src="icon" fit="contain"></el-image>
  262. <h4 :id="titleId" :class="titleClass">{{ zhtext }}</h4>
  263. </div>
  264. </template>
  265. <el-form >
  266. <el-form-item label="编码" :label-width="formLabelWidth6">
  267. <el-input v-model="fjobj.fancode" maxlength="18" @input="fjobj.fancode = fjobj.fancode.replace(/[\u4e00-\u9fa5\s]/g, '')" class="w-50 m-2" placeholder="请输入" />
  268. </el-form-item>
  269. <el-form-item label="风机名称" :label-width="formLabelWidth6">
  270. <el-input v-model="fjobj.fanname" maxlength="18" oninput ="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2" placeholder="请输入" />
  271. </el-form-item>
  272. <div class="demo-input-suffix firsttitle magintop">
  273. <el-form-item label="巷道名称" :label-width="formLabelWidth6">
  274. <el-input
  275. v-model="source.selectstr"
  276. disabled
  277. class="w-50 m-2"
  278. placeholder="巷道名称"
  279. />
  280. </el-form-item>
  281. <div class="btn2">
  282. <el-button
  283. type="primary"
  284. @click="
  285. fireclick('fj');
  286. sdialog.dialogVisiblenode = true;
  287. "
  288. >选择巷道</el-button
  289. >
  290. </div>
  291. <div class="btn2" style="padding-left: 10px">
  292. <el-button type="primary" @click="Dclick('fj')">3D巷道选择</el-button>
  293. </div>
  294. </div>
  295. <!-- <div class="input">
  296. <el-form-item label="相对位置" :label-width="formLabelWidth6">
  297. <el-input-number
  298. v-model="source.site"
  299. :min="0"
  300. :max="1"
  301. :precision="2"
  302. :step="0.1"
  303. controls-position="right"
  304. class="w-50 m-2"
  305. placeholder="相对位置"
  306. @change="inputnuberChange"
  307. />
  308. </el-form-item>
  309. </div> -->
  310. <el-form-item label="位置" :label-width="formLabelWidth6">
  311. <el-input
  312. v-model="fjobj.siteremark"
  313. class="w-50 m-2"
  314. placeholder="请输入位置说明"
  315. />
  316. </el-form-item>
  317. <div style="display: flex;" >
  318. <span class="switchppm">开启状态</span>
  319. <el-switch
  320. v-model="fjobj.onoff"
  321. inline-prompt
  322. active-text="是"
  323. inactive-text="否"
  324. :active-value="1"
  325. :inactive-value="0"
  326. @change="handleSwitchChange"
  327. />
  328. </div>
  329. <el-form-item label="增压(kpa)" :label-width="formLabelWidth6">
  330. <el-input v-model="fjobj.pa" maxlength="10" oninput ="value=value.replace(/[^0-9.]/g,'')" class="w-50 m-2" placeholder="请输入" />
  331. </el-form-item>
  332. </el-form>
  333. <div class="dialog-footer footer_div l_btn">
  334. <div class="footerbtn flex1">
  335. <div class="borderimg">
  336. <el-button @click="closeDialog(); sdialog.fjdialog=false">取消</el-button>
  337. </div>
  338. </div>
  339. <div class="footerbtn flex1">
  340. <div class="borderimg">
  341. <el-button
  342. :disabled="isSubmitting"
  343. @click="addrequest(); "
  344. >
  345. 确定
  346. </el-button>
  347. </div>
  348. </div>
  349. </div>
  350. </el-dialog>
  351. <!-- 风门的加载 -->
  352. <el-dialog
  353. v-model="sdialog.fmloaddialog"
  354. width="400"
  355. align-center
  356. :modal="false"
  357. :append-to-body="true"
  358. :z-index='1000'
  359. :close-on-click-modal="false"
  360. :fullscreen="false"
  361. :modal-append-to-body="false"
  362. modal-class="summary-dlg"
  363. class="dialog_class bgcolor tianjia"
  364. draggable
  365. >
  366. <template #header="{ titleId, titleClass }">
  367. <div class="my-header">
  368. <el-image :src="icon" fit="contain"></el-image>
  369. <h4 :id="titleId" :class="titleClass">加载</h4>
  370. </div>
  371. </template>
  372. <div class="demo-input-suffix firsttitle leftbgimg2">
  373. <el-table
  374. :row-class-name="tableRowClassName"
  375. :max-height="tableHeight"
  376. ref="tabledatafmjzref"
  377. type="selection"
  378. :data="tableDatafmjz"
  379. style="width: 100%"
  380. :header-cell-style="{ background: 'rgba(13, 22, 57, 0) ' }"
  381. >
  382. <template v-slot:empty>
  383. <p>暂无数据</p>
  384. </template>
  385. <el-table-column type="selection" width="55" />
  386. <!-- <el-table-column property="snId" label="开始节点" />
  387. <el-table-column property="enId" label="结束节点" /> -->
  388. <el-table-column type="index" label="编号" width="70" />
  389. <el-table-column property="doorname" label="风门名称" />
  390. <el-table-column property="pname" label="巷道名称" />
  391. <!-- <el-table-column property="site" label="相对位置" /> -->
  392. <el-table-column property="siteremark" label="位置"/>
  393. <el-table-column prop="dragcoe" label="阻力系数" />
  394. <el-table-column prop="onoff" label="开启状态">
  395. <template #default="scope">
  396. {{
  397. scope.row.onoff == "0"
  398. ? "否"
  399. : scope.row.onoff == "1"
  400. ? "是"
  401. : "是"
  402. }}
  403. </template>
  404. </el-table-column>
  405. </el-table>
  406. <div class="dialog-footer footer_div l_btn">
  407. <div class="footerbtn flex1">
  408. <div class="borderimg">
  409. <el-button @click="sdialog.fmloaddialog = false">取消</el-button>
  410. </div>
  411. </div>
  412. <div class="footerbtn flex1">
  413. <div class="borderimg">
  414. <el-button
  415. @click="
  416. fmloadsave();
  417. sdialog.fmloaddialog = false;
  418. "
  419. >
  420. 确定
  421. </el-button>
  422. </div>
  423. </div>
  424. </div>
  425. </div>
  426. </el-dialog>
  427. <!-- 风门的添加 -->
  428. <el-dialog
  429. v-model="sdialog.fmdialog"
  430. width="400"
  431. align-center
  432. :modal="false"
  433. :append-to-body="true"
  434. :z-index='1000'
  435. :close-on-click-modal="false"
  436. :fullscreen="false"
  437. :modal-append-to-body="false"
  438. modal-class="summary-dlg"
  439. class="dialog_class bgcolor tianjia"
  440. draggable
  441. @close='closeDialog'
  442. >
  443. <template #header="{ titleId, titleClass }">
  444. <div class="my-header">
  445. <el-image :src="icon" fit="contain"></el-image>
  446. <h4 :id="titleId" :class="titleClass">{{ zhtext }}</h4>
  447. </div>
  448. </template>
  449. <el-form >
  450. <!-- 只能输入引文oninput ="value=value.replace(/[^a-zA-Z]/g, '');" -->
  451. <el-form-item label="编码" :label-width="formLabelWidth6">
  452. <el-input v-model="fmobj.doorcode" maxlength="18" @input="fmobj.doorcode = fmobj.doorcode.replace(/[\u4e00-\u9fa5\s]/g, '')" class="w-50 m-2" placeholder="请输入" />
  453. </el-form-item>
  454. <el-form-item label="风门名称" :label-width="formLabelWidth6">
  455. <el-input v-model="fmobj.doorname" maxlength="18" oninput ="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2" placeholder="请输入" />
  456. </el-form-item>
  457. <div class="demo-input-suffix firsttitle magintop">
  458. <el-form-item label="巷道名称" :label-width="formLabelWidth6">
  459. <el-input
  460. v-model="source.selectstr"
  461. disabled
  462. class="w-50 m-2"
  463. placeholder="巷道名称"
  464. />
  465. </el-form-item>
  466. <div class="btn2">
  467. <el-button
  468. type="primary"
  469. @click="
  470. fireclick('fm');
  471. sdialog.dialogVisiblenode = true;
  472. "
  473. >选择巷道</el-button
  474. >
  475. </div>
  476. <div class="btn2" style="padding-left: 10px">
  477. <el-button type="primary" @click="Dclick('fm')">3D巷道选择</el-button>
  478. </div>
  479. </div>
  480. <!-- <div class="input">
  481. <el-form-item label="相对位置" :label-width="formLabelWidth6">
  482. <el-input-number
  483. v-model="source.site"
  484. :min="0"
  485. :max="1"
  486. :precision="2"
  487. :step="0.1"
  488. controls-position="right"
  489. class="w-50 m-2"
  490. placeholder="相对位置"
  491. @change="inputnuberChange1"
  492. />
  493. </el-form-item>
  494. </div> -->
  495. <el-form-item label="位置" :label-width="formLabelWidth6">
  496. <el-input
  497. v-model="fmobj.siteremark"
  498. class="w-50 m-2"
  499. placeholder="请输入位置说明"
  500. />
  501. </el-form-item>
  502. <div style="display: flex;" >
  503. <span class="switchppm">开启状态</span>
  504. <el-switch
  505. v-model="fmobj.onoff"
  506. inline-prompt
  507. active-text="是"
  508. inactive-text="否"
  509. :active-value="1"
  510. :inactive-value="0"
  511. @change="handleSwitchChange"
  512. />
  513. </div>
  514. <el-form-item label="阻力系数" :label-width="formLabelWidth6">
  515. <el-input v-model="fmobj.dragcoe" maxlength="10" oninput ="value=value.replace(/[^0-9.]/g,'')" class="w-50 m-2" placeholder="请输入" />
  516. </el-form-item>
  517. </el-form>
  518. <div class="dialog-footer footer_div l_btn">
  519. <div class="footerbtn flex1">
  520. <div class="borderimg">
  521. <el-button @click="closeDialog(); sdialog.fmdialog=false">取消</el-button>
  522. </div>
  523. </div>
  524. <div class="footerbtn flex1">
  525. <div class="borderimg">
  526. <el-button
  527. :disabled="isSubmitting"
  528. @click="addxiufm(); "
  529. >
  530. 确定
  531. </el-button>
  532. </div>
  533. </div>
  534. </div>
  535. </el-dialog>
  536. <!-- 选择巷道 -->
  537. <pipelines ref="pipeline" :selectstr="source.selectstr" @pipelineapi="pipelineapi" />
  538. <!-- 删除 -->
  539. <el-dialog
  540. v-model="sdialog.dialogsgdelect"
  541. width="400"
  542. class="dialog_class bgcolor tianjia"
  543. >
  544. <template #header="{ titleId, titleClass }">
  545. <div class="my-header">
  546. <el-image :src="icon" fit="contain"></el-image>
  547. <h4 :id="titleId" :class="titleClass">删除框</h4>
  548. </div>
  549. </template>
  550. <h4 class="delecttitle">
  551. 是否确认删除 <span class="spanclad">{{ zqname }}</span>
  552. </h4>
  553. <div class="dialog-footer footer_div l_btn">
  554. <div class="footerbtn flex1">
  555. <div class="borderimg">
  556. <el-button @click="sdialog.dialogsgdelect=false">取消</el-button>
  557. </div>
  558. </div>
  559. <div class="footerbtn flex1">
  560. <div class="borderimg">
  561. <el-button
  562. @click="deletefun(); "
  563. >
  564. 确定
  565. </el-button>
  566. </div>
  567. </div>
  568. </div>
  569. <!-- <div class="dialog-footer footer_div l_btn">
  570. <div class="footerbtn flex1">
  571. <div class="borderimg">
  572. <el-button @click="sdialog.dialogsgdelect=false">取消</el-button>
  573. <el-button @click="deletefun()">确定</el-button>
  574. </div>
  575. </div>
  576. </div> -->
  577. </el-dialog>
  578. <selfdialogs ref="dialogtrue" :site="dsite" @Dtext="Dtext"></selfdialogs>
  579. </div>
  580. </template>
  581. <script setup>
  582. import { computed, ref, onMounted, reactive } from "vue";
  583. import { request, uploadFile } from "@/utils/request";
  584. import icon from "@/assets/img/icon.png";
  585. import closeimg from "@/assets/img/colse.png";
  586. import { ElMessage, ElButton, ElDialog,ElConfigProvider } from "element-plus";
  587. import { message } from '@/utils/message';
  588. import zhCn from 'element-plus/es/locale/lang/zh-cn'
  589. import { Calendar, Search } from "@element-plus/icons-vue";
  590. // import selfdialogs from "./SetNode.vue";
  591. import selfdialogs from "./SetPipe.vue";
  592. import pipelines from "./PipeIine.vue"
  593. import { vtkmodel } from "@/control/vtkModel.js";
  594. let zqname=ref();
  595. let tableHeight=ref(200);
  596. let dsite=ref();
  597. let currentrow=ref();
  598. let pipeline = ref();
  599. let dialogtrue = ref();
  600. let isSubmitting = false;
  601. let sdialog=ref({
  602. dialogsgdelect:false,
  603. dialogVisiblenode:false,
  604. fjdialog:false,
  605. fjloaddialog:false,
  606. fmdialog:false,
  607. fmloaddialog:false
  608. })
  609. let delte=ref();
  610. let state=ref();
  611. let formLabelWidth6=ref(120)
  612. let source = ref({
  613. selectstr: '',
  614. site:null
  615. })
  616. // let selectstr=ref();
  617. // let firepid=ref();
  618. let aid=ref()//事故id
  619. let pid=ref();// 巷道id
  620. let site=ref();
  621. let fjobj=ref({
  622. fanid:null,
  623. fanname:"",
  624. fancode:'',
  625. pa:null,
  626. onoff:0
  627. })
  628. let handobj=ref({});
  629. let fmobj=ref({
  630. doorid:null,
  631. doorname:"",
  632. dragcoe:null,
  633. doorcode:'',
  634. onoff:0
  635. })
  636. let handobjfm=ref({});
  637. const props = defineProps({
  638. aid: {
  639. type: String,
  640. },
  641. });
  642. let zhtext=ref('');
  643. let tishi=ref('');
  644. let fjtableData=ref([]);
  645. let tableDatafjjz=ref([]);
  646. let tabledatafjjzref = ref();
  647. let fmtableData=ref([]);
  648. let tableDatafmjz=ref([]);
  649. let tabledatafmjzref = ref();
  650. let opendialogname = '';//用于区分风机风门打开的弹窗
  651. const handlerow = (val) => {
  652. vtkmodel.delfan();
  653. currentrow.value=true;
  654. handobj.value=val;
  655. console.log(val);
  656. vtkmodel.delAll();
  657. vtkmodel.addfan(val.pid,val.site);
  658. };
  659. const handlerow2 = (val) => {
  660. vtkmodel.deldoor();
  661. currentrow.value=true;
  662. handobjfm.value=val;
  663. vtkmodel.delAll();
  664. vtkmodel.adddoor(val.pid,val.site);
  665. };
  666. let coolactiveName1 = ref(["1", "2"]);
  667. let coolactiveName2 = ref( "2");
  668. // 表格变色
  669. const tableRowClassName = ({ row, rowIndex }) => {
  670. if (rowIndex % 2 != 0) {
  671. return "evenRow";
  672. }
  673. return "oddRow";
  674. };
  675. //
  676. const initisshow=()=>{
  677. sdialog.value.dialogsgdelect=false;
  678. sdialog.value.dialogVisiblenode=false;
  679. sdialog.value.fjdialog=false;
  680. sdialog.value.fjloaddialog=false;
  681. sdialog.value.fmdialog=false;
  682. dialogtrue.value.dialoglog = false;
  683. pipeline.value.dialogVisiblenode = false;
  684. closeDialog();
  685. }
  686. // 3D弹屏
  687. const Dclick = (val) => {
  688. opendialogname = val;
  689. dialogtrue.value.dialoglog = true;
  690. vtkmodel.clearJgAddMode();
  691. vtkmodel.clearpipfan();
  692. vtkmodel.clearpipdoor();
  693. vtkmodel.selectPipes();
  694. dialogtrue.value.jgSelect();
  695. console.log(dialogtrue.value.dialoglog);
  696. };
  697. // 选择巷道
  698. const fireclick = (val) => {
  699. opendialogname = val;
  700. pipeline.value.searchtaggd='';
  701. pipeline.value.dialogVisiblenode = true;
  702. pipeline.value.pipelinedata('');
  703. }
  704. const closeDialog=()=>{
  705. state.value=sessionStorage.getItem("state");
  706. if(state.value=='1'){
  707. vtkmodel.clearModeAddJg();
  708. }
  709. //节点图形
  710. vtkmodel.clearpipfan();//清除选择巷道的位置
  711. vtkmodel.clearpipdoor();
  712. vtkmodel.selectNoting();
  713. dialogtrue.value.timintclaer();
  714. sdialog.value.fjdialog=false
  715. }
  716. //点击确定
  717. const pipelineapi = (row) => {
  718. console.log(row);
  719. pid.value = row.id;
  720. source.value.selectstr = row.name;
  721. vtkmodel.selectByPipeId(row.id);
  722. if(opendialogname === "fj"){
  723. vtkmodel.addpipfan(row.id, source.value.site|| 0.0);
  724. }else {
  725. vtkmodel.addpipdoor(row.id, source.value.site|| 0.0);
  726. }
  727. }
  728. //风机加载
  729. const fjloadclick = () => {
  730. console.log("目标:",fjtableData.value)
  731. tableDatafjjz.value = [];
  732. let temptable = [];
  733. fjtableData.value.forEach(row => {
  734. if (row.fanbaseid !== 0) {
  735. temptable.push(row);
  736. }
  737. });
  738. const params = {
  739. transCode: "D50007",
  740. // aid: aid.value,
  741. };
  742. request(params)
  743. .then((res) => {
  744. // 使用 concat() 将新数据添加到现有数据后面
  745. res.rows.forEach(newRow => {
  746. const exists = temptable.some(existingRow => existingRow.fanbaseid === newRow.fanbaseid);
  747. if (!exists) {
  748. temptable.push(newRow); // 只有在不存在时才追加
  749. }
  750. });
  751. tableDatafjjz.value = temptable;
  752. nextTick(() => {
  753. fjtableData.value.forEach(row => {
  754. if (row.fanbaseid !== 0) { // 确保只选中符合条件的行
  755. // 在 tableData3 中查找与 tableDatpump 中对应的行
  756. const rowIndex = tableDatafjjz.value.findIndex(item => item.fanbaseid === row.fanbaseid);
  757. if (rowIndex !== -1) {
  758. // 找到对应的行后,选中该行
  759. tabledatafjjzref.value.toggleRowSelection(tableDatafjjz.value[rowIndex], true); // 选中该行
  760. console.log("选中的行:", tableDatafjjz.value[rowIndex]);
  761. }
  762. }
  763. });
  764. });
  765. })
  766. .catch((err) => {
  767. message.error(err.returnMsg);
  768. });
  769. }
  770. //风机加载保存
  771. const fjloadsave = () => {
  772. let values = [];
  773. const selectedRows = tabledatafjjzref.value.getSelectionRows();
  774. console.log( '选中行:',selectedRows);
  775. if (selectedRows.length === 0) {
  776. return;
  777. }
  778. selectedRows.forEach(row => {
  779. // 获取每一行的 fanbaseid
  780. if (row.fanbaseid) {
  781. values.push(row.fanbaseid);
  782. }
  783. });
  784. const params = {
  785. transCode: "D50014",
  786. aid: aid.value,
  787. fanbaseids:values.join(',')
  788. };
  789. request(params)
  790. .then((res) => {
  791. message.success({
  792. message: "加载成功"
  793. });
  794. getrequest();
  795. })
  796. .catch((err) => {
  797. message.error(err.returnMsg);
  798. });
  799. }
  800. //风机的添加
  801. const fjclick=()=>{
  802. zhtext.value='添加';
  803. currentrow.value=false;
  804. tishi.value= zhtext.value;
  805. handobj.value={};
  806. fjobj.value.fanid='';
  807. fjobj.value.fancode='';
  808. fjobj.value.fanname='';
  809. fjobj.value.onoff='';
  810. fjobj.value.pa='';
  811. fjobj.value.siteremark='';
  812. source.value.site='';
  813. source.value.selectstr='';
  814. pid.value='';
  815. source.value.site=='';
  816. vtkmodel.clearJgAddMode();
  817. vtkmodel.delAll();
  818. }
  819. // 风机的修改
  820. const xiugaiclick=()=>{
  821. zhtext.value='修改';
  822. if (JSON.stringify(handobj.value) == "{}"|| currentrow.value==false) {
  823. message.error("你还没有选中修改的项目");
  824. } else {
  825. sdialog.value.fjdialog = true;
  826. aid.value=handobj.value.aid;
  827. fjobj.value.fanid=handobj.value.fanid;
  828. fjobj.value.fancode=handobj.value.fancode;
  829. fjobj.value.fanname=handobj.value.fanname;
  830. fjobj.value.onoff=handobj.value.onoff;
  831. fjobj.value.pa=handobj.value.pa;
  832. fjobj.value.siteremark=handobj.value.siteremark;
  833. source.value.selectstr=handobj.value.pname;
  834. source.value.site=handobj.value.site;
  835. pid.value=handobj.value.pid;
  836. source.value.site==handobj.value.site;
  837. vtkmodel.clearJgAddMode();
  838. vtkmodel.delAll();
  839. vtkmodel.selectByPipeId(pid.value);
  840. vtkmodel.addpipfan(pid.value, source.value.site|| 0.0);
  841. }
  842. }
  843. //风机删除
  844. const delonclock=(val)=>{
  845. if (JSON.stringify(handobj.value) == "{}"|| currentrow.value==false) {
  846. message.error("你还没有选中删除的项目");
  847. } else {
  848. delte.value=val;
  849. sdialog.value.dialogsgdelect=true;
  850. zqname.value=handobj.value.pname;
  851. }
  852. }
  853. const deletefun=()=>{
  854. console.log(delte.value);
  855. if(delte.value=="风机"){
  856. const params = {
  857. transCode: "D20009",
  858. fanid: handobj.value.fanid,
  859. };
  860. request(params)
  861. .then((res) => {
  862. message.success({
  863. message:"删除风机成功",
  864. });
  865. sdialog.value.dialogsgdelect = false;
  866. getrequest();
  867. })
  868. .catch((err) => {
  869. message.error('删除风机失败');
  870. });
  871. }else if(delte.value=="风门"){
  872. const params = {
  873. transCode: "D20012",
  874. doorid:handobjfm.value.doorid,
  875. };
  876. request(params)
  877. .then((res) => {
  878. message.success({
  879. message:"删除风门成功",
  880. });
  881. sdialog.value.dialogsgdelect = false;
  882. fmrequest();
  883. })
  884. .catch((err) => {
  885. message.error('删除风门失败');
  886. });
  887. }else{
  888. }
  889. }
  890. const inputnuberChange = (number) => {
  891. source.value.site=number;
  892. dsite.value=number;
  893. dialogtrue.value.jgSelenum();
  894. vtkmodel.addpipfan(pid.value,number)
  895. }
  896. const inputnuberChange1 = (number) => {
  897. source.value.site=number;
  898. dsite.value=number;
  899. dialogtrue.value.jgSelenum();
  900. vtkmodel.addpipdoor(pid.value,number)
  901. }
  902. const handleSwitchChange=(value)=> {
  903. fjobj.value.onoff=value;
  904. }
  905. //初始化
  906. const getquery=(id)=>{
  907. aid.value=id;
  908. getrequest();
  909. fmrequest();
  910. }
  911. // 风机查询
  912. const getrequest=()=>{
  913. const params = {
  914. transCode: "D20007",
  915. aid: aid.value,
  916. };
  917. request(params)
  918. .then((res) => {
  919. console.log(res)
  920. vtkmodel.delfan();
  921. fjtableData.value=res.rows;
  922. currentrow.value=false;
  923. console.log( currentrow.value);
  924. })
  925. .catch((err) => {
  926. message.error(err.returnMsg);
  927. });
  928. }
  929. // 确定添加
  930. const addrequest=()=>{
  931. if (isSubmitting) return;
  932. if(fjobj.value.fancode==null||fjobj.value.fancode==''){
  933. message.error("风机编码不能为空")
  934. return
  935. }
  936. if(fjobj.value.fanname==null||fjobj.value.fanname==''){
  937. message.error("风机名称不能为空")
  938. return
  939. }
  940. if(pid.value==null||pid.value==""){
  941. message.error("巷道不能为空")
  942. }else{
  943. isSubmitting = true; // 开始提交
  944. const params = {
  945. transCode: "D20008",
  946. fanid:fjobj.value.fanid,
  947. fancode:fjobj.value.fancode,
  948. pid:pid.value,
  949. fanname:fjobj.value.fanname,
  950. site:source.value.site,
  951. pa:parseFloat(fjobj.value.pa),
  952. onoff:fjobj.value.onoff,
  953. aid:aid.value,
  954. siteremark: fjobj.value.siteremark || ""
  955. };
  956. request(params)
  957. .then((res) => {
  958. message.success({
  959. message: zhtext.value+"风机成功",
  960. });
  961. sdialog.value.fjdialog = false;
  962. getrequest();
  963. // getrequest();
  964. fun3D();
  965. })
  966. .catch((err) => {
  967. const regex = /字段\d*/g;
  968. let Msg=err.returnMsg.replace(regex, '');
  969. message.error(Msg)
  970. })
  971. .finally(() => {
  972. isSubmitting = false; // 提交结束
  973. });
  974. }
  975. }
  976. //风门查询
  977. const fmrequest=()=>{
  978. console.log(aid.value)
  979. const params = {
  980. transCode: "D20010",
  981. aid: aid.value,
  982. };
  983. request(params)
  984. .then((res) => {
  985. vtkmodel.deldoor();
  986. fmtableData.value=res.rows;
  987. currentrow.value=false;
  988. })
  989. .catch((err) => {
  990. message.error(err.returnMsg);
  991. });
  992. }
  993. //风门加载
  994. const fmload = () => {
  995. console.log("目标:",fmtableData.value)
  996. tableDatafmjz.value = [];
  997. let temptable = [];
  998. fmtableData.value.forEach(row => {
  999. if (row.doorbaseid !== 0) {
  1000. temptable.push(row);
  1001. }
  1002. });
  1003. const params = {
  1004. transCode: "D50010",
  1005. // aid: aid.value,
  1006. };
  1007. request(params)
  1008. .then((res) => {
  1009. // 使用 concat() 将新数据添加到现有数据后面
  1010. res.rows.forEach(newRow => {
  1011. const exists = temptable.some(existingRow => existingRow.doorbaseid === newRow.doorbaseid);
  1012. if (!exists) {
  1013. temptable.push(newRow); // 只有在不存在时才追加
  1014. }
  1015. });
  1016. tableDatafmjz.value = temptable;
  1017. nextTick(() => {
  1018. fmtableData.value.forEach(row => {
  1019. if (row.doorbaseid !== 0) { // 确保只选中符合条件的行
  1020. // 在 tableData3 中查找与 tableDatpump 中对应的行
  1021. const rowIndex = tableDatafmjz.value.findIndex(item => item.doorbaseid === row.doorbaseid);
  1022. if (rowIndex !== -1) {
  1023. // 找到对应的行后,选中该行
  1024. tabledatafmjzref.value.toggleRowSelection(tableDatafmjz.value[rowIndex], true); // 选中该行
  1025. console.log("选中的行:", tableDatafmjz.value[rowIndex]);
  1026. }
  1027. }
  1028. });
  1029. });
  1030. })
  1031. .catch((err) => {
  1032. message.error(err.returnMsg);
  1033. });
  1034. }
  1035. const fmloadsave = () => {
  1036. let values = [];
  1037. const selectedRows = tabledatafmjzref.value.getSelectionRows();
  1038. console.log( '选中行:',selectedRows);
  1039. if (selectedRows.length === 0) {
  1040. return;
  1041. }
  1042. selectedRows.forEach(row => {
  1043. // 获取每一行的 doorbaseid
  1044. if (row.doorbaseid) {
  1045. values.push(row.doorbaseid);
  1046. }
  1047. });
  1048. const params = {
  1049. transCode: "D50015",
  1050. aid: aid.value,
  1051. doorbaseids:values.join(',')
  1052. };
  1053. request(params)
  1054. .then((res) => {
  1055. message.success({
  1056. message: "加载成功"
  1057. });
  1058. fmrequest();
  1059. })
  1060. .catch((err) => {
  1061. message.error(err.returnMsg);
  1062. });
  1063. }
  1064. //风门的添加
  1065. const fmadd=()=>{
  1066. zhtext.value='添加';
  1067. currentrow.value=false;
  1068. tishi.value= zhtext.value;
  1069. handobj.value={};
  1070. fmobj.value.doorid=null;
  1071. fmobj.value.doorcode='';
  1072. fmobj.value.doorname='';
  1073. fmobj.value.onoff=0;
  1074. fmobj.value.dragcoe=null;
  1075. source.value.site=null;
  1076. source.value.selectstr='';
  1077. pid.value=null;
  1078. vtkmodel.clearJgAddMode();
  1079. vtkmodel.delAll();
  1080. }
  1081. //风门的修改
  1082. const fmxiugai=()=>{
  1083. zhtext.value='修改';
  1084. if (JSON.stringify(handobjfm.value) == "{}"|| currentrow.value==false) {
  1085. message.error("你还没有选中修改的项目");
  1086. } else {
  1087. sdialog.value.fmdialog = true;
  1088. aid.value=handobjfm.value.aid;
  1089. fmobj.value.doorid=handobjfm.value.doorid;
  1090. fmobj.value.doorcode=handobjfm.value.doorcode;
  1091. fmobj.value.doorname=handobjfm.value.doorname;
  1092. fmobj.value.onoff=handobjfm.value.onoff;
  1093. fmobj.value.dragcoe=handobjfm.value.dragcoe;
  1094. fmobj.value.siteremark=handobjfm.value.siteremark;
  1095. source.value.selectstr=handobjfm.value.pname;
  1096. source.value.site=handobjfm.value.site;
  1097. pid.value=handobjfm.value.pid;
  1098. source.value.site==handobjfm.value.site;
  1099. vtkmodel.clearJgAddMode();
  1100. vtkmodel.delAll();
  1101. vtkmodel.selectByPipeId(pid.value);
  1102. vtkmodel.addpipdoor(pid.value, source.value.site|| 0.0);
  1103. }
  1104. }
  1105. // 删除
  1106. const fmdel=(val)=>{
  1107. if (JSON.stringify(handobjfm.value) == "{}"|| currentrow.value==false) {
  1108. message.error("你还没有选中删除的项目");
  1109. } else {
  1110. delte.value=val;
  1111. sdialog.value.dialogsgdelect=true;
  1112. zqname.value=handobjfm.value.pname;
  1113. }
  1114. }
  1115. //添加接口
  1116. const addxiufm = () => {
  1117. if (isSubmitting) return; // 如果正在提交,则不再继续
  1118. if (fmobj.value.doorcode == null || fmobj.value.doorcode == "") {
  1119. message.error("风门编码不能为空");
  1120. return;
  1121. }
  1122. if (fmobj.value.doorname == null || fmobj.value.doorname == "") {
  1123. message.error("风门名称不能为空");
  1124. return;
  1125. }
  1126. if (pid.value == null || pid.value == "") {
  1127. message.error("巷道不能为空");
  1128. return;
  1129. }
  1130. isSubmitting = true; // 开始提交
  1131. const params = {
  1132. transCode: "D20011",
  1133. doorid: fmobj.value.doorid,
  1134. doorcode: fmobj.value.doorcode,
  1135. pid: pid.value,
  1136. doorname: fmobj.value.doorname,
  1137. site: source.value.site,
  1138. dragcoe: parseFloat(fmobj.value.dragcoe),
  1139. onoff: fmobj.value.onoff,
  1140. aid: aid.value,
  1141. siteremark: fmobj.value.siteremark || ""
  1142. };
  1143. request(params)
  1144. .then((res) => {
  1145. message.success({
  1146. message: zhtext.value + "风门成功"
  1147. });
  1148. sdialog.value.fmdialog = false;
  1149. fmrequest();
  1150. fun3D();
  1151. })
  1152. .catch((err) => {
  1153. const regex = /字段\d*/g;
  1154. let Msg = err.returnMsg.replace(regex, "");
  1155. message.error(Msg);
  1156. })
  1157. .finally(() => {
  1158. isSubmitting = false; // 提交结束
  1159. });
  1160. };
  1161. // 3D关闭弹窗
  1162. const fun3D = () => {
  1163. state.value=sessionStorage.getItem("state");
  1164. //console.log(state.value);
  1165. if(state.value=='1'){
  1166. vtkmodel.clearModeAddJg();
  1167. }else{
  1168. vtkmodel.selectNoting();
  1169. }
  1170. dialogtrue.value.timintclaer();
  1171. vtkmodel.clearpipdoor();//清除选择巷道的位置
  1172. vtkmodel.clearpipfan();
  1173. }
  1174. const Dtext=(val)=>{
  1175. console.log('dayin',val);
  1176. console.log('opendialogname',opendialogname);
  1177. source.value.selectstr=val.name;
  1178. pid.value=val.id;
  1179. if(opendialogname === "fj"){
  1180. vtkmodel.addpipfan(pid.value, source.value.site|| 0.0);
  1181. }else {
  1182. vtkmodel.addpipdoor(pid.value, source.value.site|| 0.0);
  1183. }
  1184. }
  1185. defineExpose({getquery,initisshow});
  1186. </script>