Menupump.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. <template>
  2. <div class="l_Dialog bou tablebk">
  3. <div class="common-layout" style="margin: 0">
  4. <el-aside
  5. width="480px"
  6. class="L_aside L_aside1 asideg asidegbg leftbgimg1"
  7. v-show="sendialogVisible"
  8. >
  9. <div class="demo-collapse">
  10. <el-collapse v-model="coolactiveName1" accordion>
  11. <el-collapse-item name="1" class="btnicon">
  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="l_Dialog">
  17. <div class="classtab">
  18. <div class="asides_content">
  19. <div class="jc_content tablecolor jc_content">
  20. <div class="font12 my_content1">
  21. <div class="btncolor tablefocus bmar">
  22. <el-table
  23. :data="tableData"
  24. style="width: 480px"
  25. :max-height="tableHeight"
  26. :highlight-current-row="currentrow"
  27. :row-class-name="tableRowClassName"
  28. @row-click="handleDelete($event)"
  29. :header-cell-style="{
  30. background: 'rgba(13, 22, 57, 0) '
  31. }"
  32. >
  33. <template v-slot:empty>
  34. <p>暂无数据</p>
  35. </template>
  36. <el-table-column
  37. type="index"
  38. label="编号"
  39. width="70"
  40. />
  41. <el-table-column prop="pumpname" label="水泵名称" />
  42. <el-table-column prop="pname" label="巷道名称" />
  43. <el-table-column prop="site" label="相对位置" />
  44. <el-table-column prop="onoff" label="开启状态">
  45. <template #default="scope">
  46. {{
  47. scope.row.onoff == "0"
  48. ? "否"
  49. : scope.row.onoff == "1"
  50. ? "是"
  51. : "是"
  52. }}
  53. </template>
  54. </el-table-column>
  55. <el-table-column prop="openhig">
  56. <template v-slot:header>
  57. <span>开起高度</span><br />
  58. <span>(m)</span>
  59. </template>
  60. </el-table-column>
  61. <el-table-column prop="closehig">
  62. <template v-slot:header>
  63. <span>关闭高度</span><br />
  64. <span>(m)</span>
  65. </template>
  66. </el-table-column>
  67. </el-table>
  68. </div>
  69. </div>
  70. <div class="dialog-footer footer_div l_btn">
  71. <div class="footerbtn flex1">
  72. <div class="borderimg">
  73. <el-button @click="addsg()">添加</el-button>
  74. </div>
  75. </div>
  76. <div class="footerbtn flex1">
  77. <div class="borderimg">
  78. <el-button @click="amend()"> 修改 </el-button>
  79. </div>
  80. </div>
  81. <div class="footerbtn flex1">
  82. <div class="borderimg">
  83. <el-button @click="shanchu()"> 删除 </el-button>
  84. </div>
  85. </div>
  86. </div>
  87. <div
  88. class="xian tablefocus"
  89. style="margin-top: 20px"
  90. v-show="hfShow"
  91. >
  92. <div class="header_l header_z headerimg">
  93. <el-image :src="icon" fit="contain"></el-image>
  94. <h4 class="tianjia">性能曲线</h4>
  95. <div
  96. class="closeimg"
  97. @click="hfShow = false"
  98. >
  99. <el-image :src="closeimg" fit="contain"></el-image>
  100. </div>
  101. </div>
  102. <el-table
  103. :data="hfObjs"
  104. style="width: 100%"
  105. :max-height="tableHeight"
  106. :row-class-name="tableRowClassName"
  107. :header-cell-style="{
  108. background: 'rgba(13, 22, 57, 0) '
  109. }"
  110. @row-click="checkhfObjTable($event)"
  111. :highlight-current-row="currentrow1"
  112. >
  113. <template v-slot:empty>
  114. <p>暂无数据</p>
  115. </template>
  116. <el-table-column prop="hight">
  117. <template v-slot:header>
  118. <span>水位高度</span>
  119. <span>(m)</span>
  120. </template>
  121. </el-table-column>
  122. <el-table-column prop="flow">
  123. <template v-slot:header>
  124. <span>流量</span>
  125. <span> (m³/s)</span>
  126. </template>
  127. </el-table-column>
  128. </el-table>
  129. <div class="dialog-footer footer_div l_btn">
  130. <div class="footerbtn flex1">
  131. <div class="borderimg"><el-button @click="addhf();">添加</el-button></div>
  132. </div>
  133. <div class="footerbtn flex1">
  134. <div class="borderimg"><el-button @click="updatehf();"> 修改 </el-button></div>
  135. </div>
  136. <div class="footerbtn flex1">
  137. <div class="borderimg"><el-button @click="shanchu2();"> 删除 </el-button></div>
  138. </div>
  139. <div class="footerbtn flex1">
  140. <div class="borderimg"><el-button @click="hfShow = false"> 确定 </el-button></div>
  141. </div>
  142. </div>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. </el-collapse-item>
  149. </el-collapse>
  150. <!--性能曲线的添加 -->
  151. <el-dialog
  152. v-model="hfDShow"
  153. :append-to-body="true"
  154. width="400"
  155. align-center
  156. class="dialog_class bgcolor tianjia"
  157. >
  158. <template #header="{ titleId, titleClass }">
  159. <div class="my-header">
  160. <el-image :src="icon" fit="contain"></el-image>
  161. <h4 :id="titleId" :class="titleClass">{{ tishi2 }}</h4>
  162. </div>
  163. </template>
  164. <div>
  165. <el-form class="demo-form-inline inputnuber">
  166. <el-form-item label="水位高度(m)" :label-width="formLabelWidth6">
  167. <el-input v-model="hfObj.hight" maxlength="10" oninput ="value=value.replace(/[^0-9.]/g,'')" class="w-50 m-2" placeholder="请输入" />
  168. </el-form-item>
  169. <el-form-item label="流量(m³/s)" :label-width="formLabelWidth6">
  170. <el-input v-model="hfObj.flow" maxlength="10" oninput ="value=value.replace(/[^0-9.]/g,'')" class="w-50 m-2" placeholder="请输入" />
  171. </el-form-item>
  172. </el-form>
  173. </div>
  174. <div class="dialog-footer footer_div l_btn">
  175. <div class="footerbtn flex1">
  176. <div class="borderimg">
  177. <el-button @click="hfDShow = false">取消</el-button>
  178. </div>
  179. </div>
  180. <div class="footerbtn flex1">
  181. <div class="borderimg">
  182. <el-button
  183. @click="savehf()"
  184. >
  185. 确定
  186. </el-button>
  187. </div>
  188. </div>
  189. </div>
  190. </el-dialog>
  191. <!-- 添加 -->
  192. <el-dialog
  193. v-model="addVisible"
  194. draggable :modal="false" modal-class="summary-dlg"
  195. align-center
  196. :append-to-body="true"
  197. width="400"
  198. class="dialog_class bgcolor tianjia foter_l tianjia"
  199. @close="clearvtk"
  200. >
  201. <template #header="{ titleId, titleClass }">
  202. <div class="my-header">
  203. <el-image :src="icon" fit="contain"></el-image>
  204. <h4 :id="titleId" :class="titleClass">{{ add }}</h4>
  205. </div>
  206. </template>
  207. <el-form class="demo-form-inline" :inline="true" :model="senobj">
  208. <el-form-item label="编码" :label-width="formLabelWidth6">
  209. <el-input
  210. v-model="senobj.pumpcode"
  211. maxlength="15"
  212. @input="senobj.pumpcode = senobj.pumpcode.replace(/[\u4e00-\u9fa5\s]/g, '')"
  213. class="w-50 m-2"
  214. placeholder="请输入"
  215. />
  216. </el-form-item>
  217. <el-form-item label="水泵名称" :label-width="formLabelWidth6">
  218. <el-input
  219. v-model="senobj.pumpname"
  220. maxlength="18"
  221. oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')"
  222. class="w-50 m-2"
  223. placeholder="请输入"
  224. />
  225. </el-form-item>
  226. <div class="demo-input-suffix firsttitle magintop guand_1">
  227. <el-form-item label="巷道名称" :label-width="formLabelWidth6">
  228. <el-input
  229. v-model="senobj.pname"
  230. disabled
  231. class="w-50 m-2"
  232. placeholder="巷道名称"
  233. />
  234. </el-form-item>
  235. <div class="btn2">
  236. <el-button type="primary" @click="fireclick()"
  237. >选择巷道</el-button
  238. >
  239. </div>
  240. </div>
  241. <div class="input">
  242. <el-form-item label="相对位置" :label-width="formLabelWidth6">
  243. <el-input-number
  244. v-model="senobj.site"
  245. :min="0"
  246. :max="1"
  247. :precision="2"
  248. :step="0.1"
  249. controls-position="right"
  250. class="w-50 m-2"
  251. placeholder="相对位置"
  252. @change="inputnumberChange"
  253. />
  254. </el-form-item>
  255. </div>
  256. <div style="display: flex">
  257. <span class="switchppm">开启状态</span>
  258. <el-switch
  259. v-model="senobj.onoff"
  260. inline-prompt
  261. active-text="是"
  262. inactive-text="否"
  263. :active-value="1"
  264. :inactive-value="0"
  265. />
  266. </div>
  267. <el-form-item label="开启高度(m)" :label-width="formLabelWidth6">
  268. <el-input
  269. v-model="senobj.openhig"
  270. maxlength="10"
  271. oninput="value=value.replace(/[^0-9.]/g,'')"
  272. class="w-50 m-2"
  273. placeholder="请输入"
  274. />
  275. </el-form-item>
  276. <el-form-item label="关闭高度(m)" :label-width="formLabelWidth6">
  277. <el-input
  278. v-model="senobj.closehig"
  279. maxlength="10"
  280. oninput="value=value.replace(/[^0-9.]/g,'')"
  281. class="w-50 m-2"
  282. placeholder="请输入"
  283. />
  284. </el-form-item>
  285. </el-form>
  286. <div class="dialog-footer footer_div l_btn">
  287. <div class="footerbtn flex1">
  288. <div class="borderimg">
  289. <el-button @click="clearvtk();addVisible = false">取消</el-button>
  290. </div>
  291. </div>
  292. <div class="footerbtn flex1">
  293. <div class="borderimg">
  294. <el-button @click="addEied()"> 确定 </el-button>
  295. </div>
  296. </div>
  297. </div>
  298. </el-dialog>
  299. <!-- 删除 -->
  300. <el-dialog
  301. v-model="dialogsgdelect"
  302. draggable :modal="false" modal-class="summary-dlg"
  303. align-center
  304. :append-to-body="true"
  305. width="400"
  306. class="dialog_class bgcolor tianjia"
  307. >
  308. <template #header="{ titleId, titleClass }">
  309. <div class="my-header">
  310. <el-image :src="icon" fit="contain"></el-image>
  311. <h4 :id="titleId" :class="titleClass">删除框</h4>
  312. </div>
  313. </template>
  314. <h4 class="delecttitle">
  315. 是否确认删除: <span class="spanclad">{{ zqname }}</span>
  316. </h4>
  317. <div class="dialog-footer footer_div l_btn">
  318. <div class="footerbtn flex1">
  319. <div class="borderimg">
  320. <el-button @click="dialogsgdelect = false">取消</el-button>
  321. </div>
  322. </div>
  323. <div class="footerbtn flex1">
  324. <div class="borderimg">
  325. <el-button
  326. @click="fundeledata();dialogsgdelect = false"
  327. >
  328. 确定
  329. </el-button>
  330. </div>
  331. </div>
  332. </div>
  333. </el-dialog>
  334. <!-- 水位 -->
  335. <el-dialog
  336. v-model="dialogsgdelect2"
  337. align-center
  338. :append-to-body="true"
  339. width="400"
  340. class="dialog_class bgcolor tianjia"
  341. >
  342. <template #header="{ titleId, titleClass }">
  343. <div class="my-header">
  344. <el-image :src="icon" fit="contain"></el-image>
  345. <h4 :id="titleId" :class="titleClass">删除框</h4>
  346. </div>
  347. </template>
  348. <h4 class="delecttitle">
  349. 是否确认删除: <span class="spanclad">水位高度:{{ zqname2.hight }} 流速:{{ zqname2.flow }}</span>
  350. </h4>
  351. <div class="dialog-footer footer_div l_btn">
  352. <div class="footerbtn flex1">
  353. <div class="borderimg">
  354. <el-button @click="dialogsgdelect2 = false">取消</el-button>
  355. </div>
  356. </div>
  357. <div class="footerbtn flex1">
  358. <div class="borderimg">
  359. <el-button
  360. @click="delhf();dialogsgdelect2 = false"
  361. >
  362. 确定
  363. </el-button>
  364. </div>
  365. </div>
  366. </div>
  367. </el-dialog>
  368. <!-- 选择管道 -->
  369. <pipelines
  370. ref="pipeline"
  371. :pname="senobj.pname"
  372. @pipelineapi="pipelineapi"
  373. />
  374. </div>
  375. </el-aside>
  376. </div>
  377. </div>
  378. </template>
  379. <script setup>
  380. import { computed, ref, onMounted, reactive, toRef } from "vue"
  381. import { request, uploadFile } from "@/utils/request"
  382. import { ElMessage, ElButton, ElDialog, ElSelect } from "element-plus"
  383. import { message } from '@/utils/message';
  384. import zhCn from "element-plus/es/locale/lang/zh-cn"
  385. import icon from "@/assets/img/icon.png"
  386. import pipelines from "./PipeIine.vue"
  387. import { vtkmodel } from "@/control/vtkModel.js"
  388. import { timestampToTime } from "@/js/lindex.js"
  389. import closeimg from "@/assets/img/colse.png";
  390. let pipeline = ref()
  391. let currentrow = ref(true) //水泵
  392. let currentrow1 = ref(true) //水位
  393. let sendialogVisible = ref(false)
  394. let addVisible = ref(false)
  395. let dialogsgdelect = ref(false)
  396. let dialogsgdelect2 = ref(false)
  397. let classradio1 = ref("Fire")
  398. const formLabelWidth6 = ref(100)
  399. let coolactiveName1 = ref(["1", "2"])
  400. let add = ref("")
  401. const resultactiveName = ref("first")
  402. let tableHeight = ref(200)
  403. let tableData = ref([])
  404. let tableobj = ref({})
  405. let zqname = ref()
  406. let zqname2 = ref({})
  407. let tishi = ref()
  408. let tishi2 = ref()
  409. let senobj = ref({})
  410. //水泵曲线数据
  411. let hfObjs = ref([])
  412. let hfObj = ref({})
  413. let hfShow= ref(false);
  414. let hfDShow= ref(false);
  415. const tableRowClassName = ({ row, rowIndex }) => {
  416. if (rowIndex % 2 != 0) {
  417. return "evenRow"
  418. }
  419. return "oddRow"
  420. }
  421. // 选中一行
  422. const handleDelete = (val) => {
  423. tableobj.value = val
  424. currentrow.value = true
  425. findhfObjs();
  426. hfShow.value = true;
  427. }
  428. //选中曲线
  429. const checkhfObjTable=(val)=>{
  430. hfObj.value =val;
  431. currentrow1.value = true
  432. }
  433. const updatehf=()=>{
  434. if (JSON.stringify(hfObj.value) == "{}") {
  435. message.error("你还没有选中修改的项目")
  436. }else{
  437. tishi2.value = "修改"
  438. hfDShow.value = true;
  439. }
  440. }
  441. const addhf=()=>{
  442. tishi2.value = "添加";
  443. hfObj.value ={};
  444. currentrow1.value = false;
  445. hfDShow.value = true;
  446. }
  447. const savehf=()=>{
  448. const params = {
  449. transCode: "D50005",
  450. pumphfbaseid:hfObj.value.pumphfbaseid,
  451. pumpbaseid:tableobj.value.pumpbaseid,
  452. hight:parseFloat(hfObj.value.hight),
  453. flow:parseFloat(hfObj.value.flow)
  454. }
  455. request(params)
  456. .then((res) => {
  457. findhfObjs();
  458. hfDShow.value = false;
  459. message.success("水位"+ tishi2.value + "成功");
  460. })
  461. .catch((err) => {
  462. message.error(err.returnMsg)
  463. })
  464. }
  465. // 水位
  466. const shanchu2 = () => {
  467. if (JSON.stringify(hfObj.value) == "{}") {
  468. message.error("你还没有选中删除的项目")
  469. } else {
  470. dialogsgdelect2.value = true
  471. zqname2.value.hight = hfObj.value.hight
  472. zqname2.value.flow = hfObj.value.flow
  473. }
  474. }
  475. const delhf=()=>{
  476. if (JSON.stringify(hfObj.value) == "{}") {
  477. message.error("你还没有选中删除的项目")
  478. } else {
  479. const params = {
  480. transCode: "D50006",
  481. pumphfbaseid:hfObj.value.pumphfbaseid
  482. }
  483. request(params)
  484. .then((res) => {
  485. findhfObjs();
  486. message.success("水位删除成功");
  487. })
  488. .catch((err) => {
  489. message.error(err.returnMsg)
  490. })
  491. }
  492. }
  493. const hfObjTable=(val)=>{
  494. hfObj.val =val;
  495. currentrow.value = true
  496. }
  497. const findhfObjs=()=>{
  498. const params = {
  499. transCode: "D50004",
  500. pumpbaseid:tableobj.value.pumpbaseid
  501. }
  502. request(params)
  503. .then((res) => {
  504. hfObjs.value = res.rows
  505. })
  506. .catch((err) => {
  507. message.error(err.returnMsg)
  508. })
  509. }
  510. // 删除
  511. const shanchu = () => {
  512. if (JSON.stringify(tableobj.value) == "{}") {
  513. message.error("你还没有选中删除的项目")
  514. } else {
  515. dialogsgdelect.value = true
  516. zqname.value = tableobj.value.pumpname
  517. }
  518. }
  519. const fundeledata = () => {
  520. const params = {
  521. transCode: "D50003",
  522. pumpbaseid: tableobj.value.pumpbaseid
  523. }
  524. request(params)
  525. .then((res) => {
  526. message.success("水泵删除成功");
  527. getsensor()
  528. })
  529. .catch((err) => {
  530. message.error(err.returnMsg)
  531. })
  532. }
  533. onMounted(() => {
  534. getsensor()
  535. })
  536. // 查询
  537. const getsensor = () => {
  538. const params = {
  539. transCode: "D50001"
  540. }
  541. request(params)
  542. .then((res) => {
  543. tableData.value = res.rows
  544. tableobj.value = {}
  545. })
  546. .catch((err) => {
  547. message.error(err.returnMsg)
  548. })
  549. }
  550. //添加
  551. const addsg = () => {
  552. add.value = "添加"
  553. tishi.value = add.value
  554. currentrow.value = false
  555. addVisible.value = true
  556. tableobj.value = {}
  557. }
  558. // 添加修改的接口
  559. const addEied = () => {
  560. const params = {
  561. transCode: "D50002",
  562. pumpbaseid: senobj.value.pumpbaseid,
  563. pumpcode: senobj.value.pumpcode,
  564. pumpname: senobj.value.pumpname,
  565. openhig: parseFloat(senobj.value.openhig),
  566. closehig: parseFloat(senobj.value.closehig),
  567. pid: senobj.value.pid,
  568. site: senobj.value.site,
  569. onoff: senobj.value.onoff
  570. }
  571. console.log(params)
  572. request(params)
  573. .then((res) => {
  574. message.success("水泵" + tishi.value + "成功");
  575. // tableData.value = res.rows;
  576. addVisible.value = false
  577. senobj.value = {}
  578. getsensor()
  579. clearvtk()
  580. })
  581. .catch((err) => {
  582. const regex = /字段\d*/g
  583. let Msg = err.returnMsg.replace(regex, "")
  584. message.error(Msg)
  585. })
  586. }
  587. //修改
  588. const amend = () => {
  589. add.value = "修改"
  590. tishi.value = add.value
  591. if (JSON.stringify(tableobj.value) == "{}") {
  592. message.error("你还没有选中修改的项目")
  593. } else {
  594. senobj.value = tableobj.value
  595. addVisible.value = true
  596. }
  597. }
  598. // 巷道方法
  599. // 选择巷道
  600. const fireclick = () => {
  601. pipeline.value.searchtaggd = ""
  602. pipeline.value.dialogVisiblenode = true
  603. pipeline.value.pipelinedata("")
  604. }
  605. //点击确定
  606. const pipelineapi = (row) => {
  607. senobj.value.pid = row.id
  608. senobj.value.pcode = row.code
  609. senobj.value.pname = row.name
  610. tableobj.value.pid = row.id
  611. vtkmodel.clearJgAddMode();
  612. //选中指定管道
  613. vtkmodel.selectByPipeId(row.id);
  614. vtkmodel.addpipsite(row.id, 0.0);
  615. }
  616. const inputnumberChange = (val) => {
  617. console.log("tableobj.value",tableobj.value)
  618. vtkmodel.addpipsite(tableobj.value.pid, val);
  619. }
  620. const clearvtk = () => {
  621. vtkmodel.clearpipsite();
  622. vtkmodel.selectNoting();
  623. }
  624. defineExpose({ sendialogVisible })
  625. </script>