Menumap.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. <template>
  2. <div class="l_Dialog bou tablebk">
  3. <!--火灾左侧栏-->
  4. <div class="common-layout" style="margin: 0">
  5. <el-aside
  6. width="480px"
  7. class="L_aside L_aside1 asideg asidegbg leftbgimg1"
  8. v-show="sendialogVisible"
  9. >
  10. <div class="demo-collapse">
  11. <el-collapse v-model="coolactiveName1" accordion>
  12. <el-collapse-item name="1" class="btnicon">
  13. <template #title>
  14. <el-icon class="iconimg Frame3" fit="contain"></el-icon>
  15. 平台巷道映射<el-icon class="header-icon"> </el-icon>
  16. </template>
  17. <div class="l_Dialog">
  18. <div class="classtab">
  19. <div class="asides_content">
  20. <div class="jc_content tablecolor jc_content">
  21. <div class="font12 my_content1">
  22. <div class="btncolor tablefocus bmar">
  23. <el-table :data="tableData" style="width:480px" :max-height="tableHeight"
  24. :highlight-current-row="currentrow" :row-class-name="tableRowClassName"
  25. @row-click="handleDelete($event)"
  26. :header-cell-style="{ 'background': 'rgba(13, 22, 57, 0) ' }">
  27. <template v-slot:empty>
  28. <p>暂无数据</p>
  29. </template>
  30. <el-table-column type="index" label="编号" width="70"/>
  31. <el-table-column prop="ptcode" label="平台code" />
  32. <el-table-column prop="ptid" label="映射编号" />
  33. <el-table-column prop="pname" label="所在巷道" />
  34. </el-table>
  35. <div class="demo-pagination-block pagination" style="margin-top: 20px;">
  36. <el-config-provider :locale="zhCn">
  37. <el-pagination v-model:current-page="currentPage4"
  38. v-model:page-size="pageSize4" small background
  39. layout="prev, total,pager, next, jumpe," :total="parseInt(total)"
  40. class="mt-4" @current-change="handleCurrentChange" />
  41. </el-config-provider>
  42. </div>
  43. </div>
  44. </div>
  45. <div class="dialog-footer footer_div l_btn">
  46. <div class="footerbtn flex1">
  47. <div class="borderimg"><el-button @click="addsg();">添加</el-button></div>
  48. </div>
  49. <!-- <div class="footerbtn flex1"><div class="borderimg"><el-button @click="addsg('2')">
  50. 修改
  51. </el-button></div></div> -->
  52. <div class="footerbtn flex1">
  53. <div class="borderimg"><el-button @click="amend()">
  54. 修改
  55. </el-button></div>
  56. </div>
  57. <div class="footerbtn flex1">
  58. <div class="borderimg"><el-button @click="shanchu()">
  59. 删除
  60. </el-button></div>
  61. </div>
  62. </div>
  63. </div>
  64. </div>
  65. </div>
  66. </div>
  67. </el-collapse-item>
  68. </el-collapse>
  69. <!-- 添加 -->
  70. <el-dialog v-model="addVisible" draggable :modal="false"
  71. modal-class="summary-dlg" align-center :append-to-body="true"
  72. @close="clearvtk"
  73. width="400" class="dialog_class bgcolor tianjia foter_l tianjia">
  74. <template #header="{ titleId, titleClass }">
  75. <div class="my-header ">
  76. <el-image :src="icon" fit="contain"></el-image>
  77. <h4 :id="titleId" :class="titleClass">{{ add }}</h4>
  78. </div>
  79. </template>
  80. <el-form class="demo-form-inline" :inline="true" :model="senobj">
  81. <el-form-item label="平台编号" :label-width="formLabelWidth6">
  82. <el-input v-model="senobj.ptcode" maxlength="15" @input="senobj.ptcode = senobj.ptcode.replace(/[\u4e00-\u9fa5\s]/g, '')" class="w-50 m-2" placeholder="请输入" />
  83. </el-form-item>
  84. <div class="demo-input-suffix firsttitle magintop guand_1">
  85. <el-form-item label="巷道名称" :label-width="formLabelWidth6">
  86. <el-input v-model="source.selectstr" disabled class="w-50 m-2" placeholder="巷道名称" />
  87. </el-form-item>
  88. <div class="btn2">
  89. <el-button type="primary" @click="fireclick();">选择巷道</el-button>
  90. </div>
  91. </div>
  92. </el-form>
  93. <div class="dialog-footer footer_div l_btn">
  94. <div class="footerbtn flex1">
  95. <div class="borderimg"><el-button @click="clearvtk();addVisible = false">取消</el-button></div>
  96. </div>
  97. <div class="footerbtn flex1">
  98. <div class="borderimg"><el-button @click="addEied(); ">
  99. 确定
  100. </el-button></div>
  101. </div>
  102. </div>
  103. </el-dialog>
  104. <!-- 删除 -->
  105. <el-dialog v-model="dialogsgdelect" draggable :modal="false" modal-class="summary-dlg" align-center :append-to-body="true" width="400" class="dialog_class bgcolor tianjia">
  106. <template #header="{ titleId, titleClass }">
  107. <div class="my-header ">
  108. <el-image :src="icon" fit="contain"></el-image>
  109. <h4 :id="titleId" :class="titleClass">删除框</h4>
  110. </div>
  111. </template>
  112. <h4 class="delecttitle"> 是否确认删除: <span class="spanclad">{{ zqname }}</span></h4>
  113. <div class="dialog-footer footer_div l_btn">
  114. <div class="footerbtn flex1">
  115. <div class="borderimg"><el-button @click="dialogsgdelect = false">取消</el-button></div>
  116. </div>
  117. <div class="footerbtn flex1">
  118. <div class="borderimg"><el-button @click="fundeledata(); dialogsgdelect = false">
  119. 确定
  120. </el-button></div>
  121. </div>
  122. </div>
  123. </el-dialog>
  124. <!-- 选择管道 -->
  125. <pipelines ref="pipeline" :selectstr="source.selectstr" @pipelineapi="pipelineapi" />
  126. </div>
  127. </el-aside>
  128. </div>
  129. </div>
  130. </template>
  131. <script setup>
  132. import { computed, ref, onMounted, reactive, toRef } from "vue";
  133. import { request, uploadFile } from "@/utils/request";
  134. import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
  135. import { message } from '@/utils/message';
  136. import zhCn from 'element-plus/es/locale/lang/zh-cn'
  137. import icon from "@/assets/img/icon.png";
  138. import pipelines from "./PipeIine.vue"
  139. import { vtkmodel } from "@/control/vtkModel.js";
  140. import { timestampToTime } from '@/js/lindex.js'
  141. const currentPage4 = ref(1);
  142. const pageSize4 = ref(4)
  143. let total = ref(1);
  144. let pipeline = ref();
  145. let currentrow=ref(true);
  146. let sendialogVisible = ref(false);
  147. let addVisible = ref(false);
  148. let dialogsgdelect = ref(false)
  149. let classradio1 = ref('Fire');
  150. const formLabelWidth6 = ref(100);
  151. let coolactiveName1 = ref(["1", "2"]);
  152. let add = ref("")
  153. const resultactiveName = ref("first");
  154. let tableHeight = ref(200);
  155. let tableData = ref([]);
  156. let tableobj = ref({});
  157. let zqname = ref();
  158. let tishi=ref();
  159. let senobj = ref({
  160. ptcode:'',
  161. ptid:null,
  162. pid:null,
  163. pcode:'',
  164. pname:''
  165. })
  166. let source = ref({
  167. selectstr: '',
  168. })
  169. let firepid = ref("")
  170. const tableRowClassName = ({ row, rowIndex }) => {
  171. if (rowIndex % 2 != 0) {
  172. return 'evenRow';
  173. }
  174. return 'oddRow';
  175. }
  176. // 节点分页查询
  177. const handleCurrentChange = (val) => {
  178. getsensor();
  179. }
  180. // 选中一行
  181. const handleDelete = (val) => {
  182. tableobj.value = val;
  183. currentrow.value=true;
  184. console.log(val);
  185. // console.log(tableobj.value)
  186. }
  187. // 删除
  188. const shanchu = () => {
  189. if (JSON.stringify(tableobj.value) == '{}') {
  190. message.error("你还没有选中删除的项目")
  191. } else {
  192. dialogsgdelect.value = true
  193. zqname.value = tableobj.value.ptcode;
  194. }
  195. }
  196. const fundeledata = () => {
  197. const params = {
  198. transCode: 'M00008',
  199. ptid: tableobj.value.ptid
  200. }
  201. request(params)
  202. .then((res) => {
  203. message.success({
  204. message: '平台巷道映射删除成功'
  205. })
  206. getsensor();
  207. })
  208. .catch((err) => {
  209. message.error(err.returnMsg)
  210. })
  211. }
  212. onMounted(() => {
  213. getsensor();
  214. });
  215. // 查询
  216. const getsensor = () => {
  217. const params = {
  218. transCode: 'M00006',
  219. count: pageSize4.value,
  220. page: currentPage4.value,
  221. }
  222. request(params)
  223. .then((res) => {
  224. tableData.value = res.rows;
  225. total.value = res.total;
  226. tableobj.value={};
  227. })
  228. .catch((err) => {
  229. message.error(err.returnMsg)
  230. })
  231. }
  232. //添加
  233. const addsg = () => {
  234. add.value = "添加";
  235. tishi.value= add.value;
  236. currentrow.value=false;
  237. addVisible.value = true;
  238. senobj.value.ptid = null;
  239. senobj.value.ptcode = '';
  240. senobj.value.pid =null;
  241. senobj.value.pcode = null;
  242. source.value.selectstr = '';
  243. tableobj.value={};
  244. }
  245. // 添加修改的接口
  246. const addEied = () => {
  247. if (senobj.value.ptcode == '') {
  248. message.error("平台编号不能为空")
  249. return;
  250. }
  251. if (source.value.selectstr == '') {
  252. message.error("请选择巷道")
  253. return;
  254. }
  255. const params = {
  256. transCode: 'M00007',
  257. ptid: senobj.value.ptid ,
  258. ptcode:senobj.value.ptcode,
  259. pid: senobj.value.pid,
  260. pcode: senobj.value.pcode,
  261. pname:source.value.selectstr
  262. }
  263. console.log(params)
  264. request(params)
  265. .then((res) => {
  266. message.success({
  267. message:'平台巷道映射'+tishi.value+'成功'
  268. })
  269. // tableData.value = res.rows;
  270. addVisible.value = false;
  271. getsensor();
  272. clearvtk();
  273. })
  274. .catch((err) => {
  275. const regex = /字段\d*/g;
  276. let Msg=err.returnMsg.replace(regex, '');
  277. message.error(Msg)
  278. })
  279. }
  280. //修改
  281. const amend = () => {
  282. add.value = "修改";
  283. tishi.value= add.value;
  284. if (JSON.stringify(tableobj.value) == '{}') {
  285. message.error("你还没有选中修改的项目")
  286. } else {
  287. senobj.value.ptid = tableobj.value.ptid;
  288. senobj.value.ptcode = tableobj.value.ptcode;
  289. senobj.value.pid =tableobj.value.pid;
  290. senobj.value.pcode = tableobj.value.pcode;
  291. source.value.selectstr =tableobj.value.pname;
  292. addVisible.value = true;
  293. }
  294. }
  295. // 巷道方法
  296. // 选择巷道
  297. const fireclick = () => {
  298. pipeline.value.searchtaggd='';
  299. pipeline.value.dialogVisiblenode = true;
  300. pipeline.value.pipelinedata('');
  301. }
  302. //点击确定
  303. const pipelineapi = (row) => {
  304. senobj.value.pid = row.id;
  305. senobj.value.pcode= row.code;
  306. source.value.selectstr = row.name;
  307. tableobj.value.pid = row.id;
  308. vtkmodel.clearJgAddMode();
  309. //选中指定管道
  310. vtkmodel.selectByPipeId(row.id);
  311. }
  312. const clearvtk = () => {
  313. vtkmodel.selectNoting();
  314. }
  315. defineExpose({ sendialogVisible, });
  316. </script>