Menupath.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579
  1. <template>
  2. <div class=" bou tablebk">
  3. <div class="common-layout" style="margin: 0">
  4. <el-aside
  5. width="357px"
  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="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="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 :data="tableData" style="width:480px" :max-height="tableHeight"
  23. :highlight-current-row="currentrow" :row-class-name="tableRowClassName"
  24. @row-click="handleDelete($event)"
  25. :header-cell-style="{ 'background': 'rgba(13, 22, 57, 0) ' }">
  26. <template v-slot:empty>
  27. <p>暂无数据</p>
  28. </template>
  29. <el-table-column prop="name" label="路径名称" />
  30. <!-- <el-table-column label="操作" width="70px">
  31. <template #default="scope">
  32. <el-button
  33. size="small"
  34. type="success"
  35. @click="handledetection(scope.$index, scope.row)"
  36. >查看</el-button
  37. >
  38. </template>
  39. </el-table-column> -->
  40. </el-table>
  41. </div>
  42. </div>
  43. <div class="dialog-footer footer_div l_btn">
  44. <div class="footerbtn flex1">
  45. <div class="borderimg"><el-button @click="addsg();">添加</el-button></div>
  46. </div>
  47. <div class="footerbtn flex1">
  48. <div class="borderimg"><el-button @click="shanchu('1')">
  49. 删除
  50. </el-button></div>
  51. </div>
  52. <div class="footerbtn flex1">
  53. <div class="borderimg"><el-button @click="amend()">
  54. 修改
  55. </el-button></div>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. <!-- 路劲预设节点 -->
  63. <div
  64. class="xian tablefocus"
  65. style="margin-top: 20px"
  66. v-show="pathshownode"
  67. >
  68. <div class="header_l header_z headerimg">
  69. <el-image :src="icon" fit="contain"></el-image>
  70. <h4 class="tianjia">预设路径节点</h4>
  71. <div class="closeimg" @click="pathshownode = false">
  72. </div>
  73. </div>
  74. <el-table
  75. :data="childtableData"
  76. style="width: 100%"
  77. :max-height="tableHeight"
  78. :row-class-name="tableRowClassName"
  79. :header-cell-style="{ background: 'rgba(13, 22, 57, 0) ' }"
  80. @row-click="handleDelete3($event)"
  81. :highlight-current-row="currentrow1"
  82. >
  83. <template v-slot:empty>
  84. <p>暂无数据</p>
  85. </template>
  86. <!-- <el-table-column prop="nid" label="节点编号" /> -->
  87. <el-table-column prop="nname" label="节点名称" />
  88. <el-table-column prop="seq" label="排序" />
  89. </el-table>
  90. <div class="dialog-footer footer_div l_btn">
  91. <div class="footerbtn flex1">
  92. <div class="borderimg"><el-button @click="cadd(); addVisiblenode=true">添加</el-button></div>
  93. </div>
  94. <div class="footerbtn flex1">
  95. <div class="borderimg"><el-button @click="childamend()">
  96. 修改
  97. </el-button></div>
  98. </div>
  99. <div class="footerbtn flex1">
  100. <div class="borderimg"><el-button @click="shanchu('2')">
  101. 删除
  102. </el-button></div>
  103. </div>
  104. <div class="footerbtn flex1">
  105. <div class="borderimg"><el-button @click="pathshownode=false">
  106. 关闭
  107. </el-button></div>
  108. </div>
  109. </div>
  110. </div>
  111. </el-collapse-item>
  112. </el-collapse>
  113. <!-- 添加 -->
  114. <el-dialog
  115. :append-to-body="true"
  116. align-center
  117. :z-index='1000'
  118. v-model="addVisible" width="400" class="dialog_class bgcolor tianjia foter_l tianjia">
  119. <template #header="{ titleId, titleClass }">
  120. <div class="my-header ">
  121. <el-image :src="icon" fit="contain"></el-image>
  122. <h4 :id="titleId" :class="titleClass">{{ add }}</h4>
  123. </div>
  124. </template>
  125. <el-form class="demo-form-inline" >
  126. <el-form-item label="编号" :label-width="formLabelWidth6">
  127. <el-input v-model="wuliobj.code" maxlength="10" oninput ="value=value.replace(/[^\w\\/]/ig,'')" class="w-50 m-2" placeholder="请输入" />
  128. </el-form-item>
  129. <el-form-item label="名称" :label-width="formLabelWidth6">
  130. <el-input v-model="wuliobj.name" maxlength="18" class="w-50 m-2" placeholder="请输入" />
  131. </el-form-item>
  132. </el-form>
  133. <div class="dialog-footer footer_div l_btn">
  134. <div class="footerbtn flex1">
  135. <div class="borderimg"><el-button @click="addVisible = false">取消</el-button></div>
  136. </div>
  137. <div class="footerbtn flex1">
  138. <div class="borderimg"><el-button @click="addEied();">
  139. 确定
  140. </el-button></div>
  141. </div>
  142. </div>
  143. </el-dialog>
  144. <!-- 添加节点 -->
  145. <el-dialog :append-to-body="true"
  146. align-center
  147. :modal="false"
  148. :lock-scroll="false"
  149. :close-on-click-modal="false"
  150. modal-class="summary-dlg"
  151. draggable
  152. :fullscreen="false"
  153. :modal-append-to-body="false"
  154. :z-index='1000' v-model="addVisiblenode" width="400" class="dialog_class bgcolor tianjia foter_l tianjia">
  155. <template #header="{ titleId, titleClass }">
  156. <div class="my-header ">
  157. <el-image :src="icon" fit="contain"></el-image>
  158. <h4 :id="titleId" :class="titleClass">{{ caddname }}</h4>
  159. </div>
  160. </template>
  161. <div class="demo-input-suffix firsttitle magintop">
  162. <el-form-item label="节点选择" :label-width="formLabelWidth6">
  163. <el-input
  164. v-model="selectstr"
  165. disabled
  166. class="w-50 m-2"
  167. placeholder="节点选择"
  168. />
  169. </el-form-item>
  170. <div class="btn2">
  171. <el-button
  172. type="primary"
  173. @click="
  174. nodeclick();
  175. "
  176. >选择节点</el-button
  177. >
  178. </div>
  179. <div class="btn2" style="padding-left: 10px">
  180. <el-button type="primary" @click="Dclick()">3D节点选择</el-button>
  181. </div>
  182. </div>
  183. <el-form-item label="排序" :label-width="formLabelWidth6">
  184. <el-input v-model="seq" oninput ="value=value.replace(/[^0-9]/g,'')" maxlength="10" class="w-50 m-2" placeholder="请输入" />
  185. </el-form-item>
  186. <div class="dialog-footer footer_div l_btn">
  187. <div class="footerbtn flex1">
  188. <div class="borderimg"><el-button @click="addVisiblenode = false">取消</el-button></div>
  189. </div>
  190. <div class="footerbtn flex1">
  191. <div class="borderimg"><el-button @click="addnode();">
  192. 确定
  193. </el-button></div>
  194. </div>
  195. </div>
  196. </el-dialog>
  197. <!-- 删除 -->
  198. <el-dialog v-model="dialogsgdelect" align-center :append-to-body="true" width="400" class="dialog_class bgcolor tianjia">
  199. <template #header="{ titleId, titleClass }">
  200. <div class="my-header ">
  201. <el-image :src="icon" fit="contain"></el-image>
  202. <h4 :id="titleId" :class="titleClass">删除框</h4>
  203. </div>
  204. </template>
  205. <h4 class="delecttitle"> 是否确认删除 <span class="spanclad">{{ zqname }}</span></h4>
  206. <div class="dialog-footer footer_div l_btn">
  207. <div class="footerbtn flex1">
  208. <div class="borderimg"><el-button @click="dialogsgdelect = false">取消</el-button></div>
  209. </div>
  210. <div class="footerbtn flex1">
  211. <div class="borderimg"><el-button @click="fundeledata();dialogsgdelect = false">
  212. 确定
  213. </el-button></div>
  214. </div>
  215. </div>
  216. </el-dialog>
  217. </div>
  218. <!--点击查看 -->
  219. </el-aside>
  220. </div>
  221. </div>
  222. <NodeSelect ref="NodeSelectref" @queding="queding"></NodeSelect>
  223. <selfdialogs ref="dialogtrue" @Dtext="Dtext"></selfdialogs>
  224. </template>
  225. <script setup>
  226. import { computed, ref, onMounted, reactive, toRef } from "vue";
  227. import { request, uploadFile } from "@/utils/request";
  228. import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
  229. import icon from "@/assets/img/icon.png";
  230. import selfdialogs from "./SetNode.vue";
  231. import NodeSelect from "./NodeLine.vue";
  232. import { vtkmodel } from "@/control/vtkModel.js";;
  233. import { timestampToTime } from '@/js/lindex.js'
  234. import emitter from "@/utils/emitter";
  235. let addVisiblenode=ref(false);
  236. let pipeline = ref();
  237. let dialogtrue = ref();
  238. let selectstr=ref('');
  239. let caddname=ref('');
  240. let seq=ref();
  241. let NodeSelectref=ref();
  242. let sendialogVisible = ref(false);
  243. let currentrow=ref(true);
  244. let currentrow1=ref(false);
  245. let tishi=ref();
  246. let addVisible = ref(false);
  247. let dialogsgdelect = ref(false)
  248. let pathshownode=ref(false)
  249. let nid=ref();
  250. let childnodeobj=ref();
  251. let classradio1 = ref('Fire');
  252. const formLabelWidth6 = ref(100);
  253. let add = ref("")
  254. let delt=ref();
  255. const resultactiveName = ref("first");
  256. let coolactiveName1 = ref(["1", "2"]);
  257. let tableHeight = ref(200);
  258. let tableData = ref([]);
  259. let tableobj = ref({});
  260. let wnid=ref();
  261. let zqname = ref();
  262. let rowobj=ref([]);
  263. let wuliobj = ref({
  264. wid:'',
  265. code: '',
  266. name:'',
  267. density: "",
  268. diffcoe: '',
  269. speheat: '',
  270. })
  271. let childtableData=ref([]);
  272. let source = ref({
  273. selectstr: '',
  274. site: ''
  275. })
  276. let firepid = ref("")
  277. const tableRowClassName = ({ row, rowIndex }) => {
  278. if (rowIndex % 2 != 0) {
  279. return 'evenRow';
  280. }
  281. return 'oddRow';
  282. }
  283. // 选中一行
  284. const handleDelete = (val) => {
  285. currentrow.value=true;
  286. tableobj.value = val;
  287. handledetection(val);
  288. }
  289. // 删除
  290. const shanchu = (val) => {
  291. delt.value=val;
  292. if(val=='1'){
  293. if (JSON.stringify( tableobj.value ) == '{}') {
  294. ElMessage.error("你还没有选中删除的项目")
  295. } else {
  296. dialogsgdelect.value = true;
  297. zqname.value = tableobj.value.name;
  298. }
  299. }else{
  300. if ( JSON.stringify(childnodeobj.value) == '{}') {
  301. ElMessage.error("你还没有选中删除的项目")
  302. } else {
  303. dialogsgdelect.value = true;
  304. zqname.value = childnodeobj.value.nname;
  305. }
  306. }
  307. }
  308. const fundeledata=()=>{
  309. if(delt.value=='1'){
  310. faterdelete();
  311. }else{
  312. childdelete();
  313. }
  314. }
  315. // 父的删除
  316. const faterdelete=()=>{
  317. const params = {
  318. transCode: 'D10032',
  319. wid: tableobj.value.wid,
  320. }
  321. request(params)
  322. .then((res) => {
  323. pathshownode.value=false;
  324. getsensor();
  325. ElMessage({
  326. message: '删除路径成功',
  327. type: 'success',
  328. })
  329. })
  330. .catch((err) => {
  331. ElMessage.error(err.returnMsg)
  332. })
  333. }
  334. // 子节点的删除
  335. const childdelete=()=>{
  336. const params = {
  337. transCode: 'D10035',
  338. wnid: childnodeobj.value.wnid,
  339. }
  340. request(params)
  341. .then((res) => {
  342. ElMessage({
  343. message: '预设路径节点删除成功',
  344. type: 'success',
  345. })
  346. childdata();
  347. })
  348. .catch((err) => {
  349. ElMessage.error(err.returnMsg)
  350. })
  351. }
  352. const handledetection=( row)=>{
  353. //wuliobj.value=row;
  354. rowobj.value=row;
  355. pathshownode.value=true;
  356. childdata();
  357. }
  358. const childdata = () => {
  359. vtkmodel.safetypathremove();
  360. const params = {
  361. transCode: 'D10033',
  362. wid: rowobj.value.wid
  363. }
  364. request(params)
  365. .then((res) => {
  366. childtableData.value=res.rows;
  367. childnodeobj.value={};
  368. if (res.rows.length == 0) {
  369. ElMessage({
  370. message: "无路径数据!",
  371. type: "error",
  372. });
  373. } else {
  374. // vtkmodel.clearAll();
  375. vtkmodel.safetypath(res.rows);
  376. }
  377. })
  378. .catch((err) => {
  379. })
  380. }
  381. emitter.on('handleSelect',(data)=>{
  382. vtkmodel.safetypathremove();
  383. });
  384. onUnmounted(() =>{
  385. emitter.off('handleSelect')
  386. })
  387. onMounted(() => {
  388. getsensor();
  389. });
  390. // 查询
  391. const getsensor = () => {
  392. const params = {
  393. transCode: 'D10030',
  394. }
  395. request(params)
  396. .then((res) => {
  397. tableData.value = res.rows;
  398. tableobj.value={};
  399. })
  400. .catch((err) => {
  401. ElMessage.error(err.returnMsg)
  402. })
  403. }
  404. //添加
  405. const addsg = () => {
  406. add.value = "添加";
  407. tishi.value= add.value;
  408. currentrow.value=false;
  409. addVisible.value = true;
  410. wuliobj.value.wid = '';
  411. wuliobj.value.code = '';
  412. wuliobj.value.name = '';
  413. tableobj.value={};
  414. }
  415. // 添加修改的接口
  416. const addEied = () => {
  417. const params = {
  418. transCode: 'D10031',
  419. wid: wuliobj.value.wid,
  420. code: wuliobj.value.code,
  421. name: wuliobj.value.name,
  422. }
  423. request(params)
  424. .then((res) => {
  425. tableData.value = res.rows;
  426. currentrow.value=false;
  427. addVisible.value=false;
  428. getsensor();
  429. ElMessage({
  430. message: tishi.value+'路径成功',
  431. type: 'success',
  432. })
  433. })
  434. .catch((err) => {
  435. ElMessage.error(err.returnMsg)
  436. })
  437. }
  438. //修改
  439. const amend = () => {
  440. add.value = "修改";
  441. tishi.value= add.value;
  442. if (JSON.stringify(tableobj.value) == '{}') {
  443. ElMessage.error("你还没有选中修改的项目")
  444. } else {
  445. addVisible.value = true;
  446. wuliobj.value.wid= tableobj.value.wid;
  447. wuliobj.value.code =tableobj.value.code;
  448. wuliobj.value.name = tableobj.value.name;
  449. }
  450. }
  451. const changeModel = () => {
  452. vtkmodel.clearJgAddMode();
  453. vtkmodel.renderWindow.render();
  454. };
  455. // 3D弹屏
  456. const Dclick = () => {
  457. dialogtrue.value.dialoglog = true;
  458. vtkmodel.clearJgAddMode() ;
  459. vtkmodel.selectNodes();
  460. dialogtrue.value.jgSelect();
  461. };
  462. // 节点选择
  463. const nodeclick = () => {
  464. // defineExpose({ dialogVisiblenode, pipelinedata,searchtaggd });
  465. NodeSelectref.value.dialogVisiblenode=true;
  466. NodeSelectref.value.pipelinedata();
  467. }
  468. const Dtext=(val)=>{
  469. nid.value = val.id;
  470. selectstr.value= val.name;
  471. }
  472. //
  473. const queding=(val)=>{
  474. // selectstr.value = NodeSelectref.value.
  475. console.log(val)
  476. console.log(223333)
  477. selectstr.value =val.name;
  478. nid.value=val.id;
  479. }
  480. const cadd=()=>{
  481. caddname.value='添加'
  482. tishi.value= caddname.value;
  483. nid.value=null;
  484. selectstr.value=null;
  485. wnid.value='';
  486. seq.value='';
  487. childnodeobj.value={};
  488. }
  489. // 添加路径节点
  490. const addnode=(val)=>{
  491. const params = {
  492. transCode: 'D10034',
  493. wid: rowobj.value.wid,
  494. wnid: wnid.value,
  495. nid:nid.value,
  496. seq:seq.value
  497. }
  498. console.log(seq.value)
  499. console.log(params);
  500. request(params)
  501. .then((res) => {
  502. addVisiblenode.value = false;
  503. ElMessage({
  504. message: '预设路径节点'+tishi.value+'成功',
  505. type: 'success',
  506. })
  507. childdata();
  508. currentrow1.value=false;
  509. })
  510. .catch((err) => {
  511. ElMessage.error(err.returnMsg)
  512. })
  513. }
  514. // 修改
  515. const childamend=()=>{
  516. if(JSON.stringify(childnodeobj.value) == '{}'){
  517. ElMessage.error("你还没有选中修改的项目")
  518. }else{
  519. caddname.value='修改'
  520. tishi.value=caddname.value;
  521. addVisiblenode.value=true;
  522. selectstr.value=childnodeobj.value.nname;
  523. nid.value= childnodeobj.value.nid;
  524. wnid.value=childnodeobj.value.wnid;
  525. wuliobj.value.wid=childnodeobj.value.wid;
  526. seq.value= childnodeobj.value.seq;
  527. }
  528. }
  529. const handleDelete3=(val)=>{
  530. childnodeobj.value=val;
  531. console.log(childnodeobj.value);
  532. currentrow1.value=true;
  533. }
  534. defineExpose({ sendialogVisible, });
  535. </script>
  536. <style scoped>
  537. .el-overlay-dialog,.summary-dlg,.el-dialog__wrapper {
  538. pointer-events: none
  539. }
  540. </style>