MenuSensor.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  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="imgneon">
  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="type" label="类型" />
  32. <el-table-column prop="pname" label="所在巷道" />
  33. <el-table-column prop="site" label="位置" />
  34. </el-table>
  35. </div>
  36. </div>
  37. <div class="dialog-footer footer_div l_btn">
  38. <div class="footerbtn flex1">
  39. <div class="borderimg"><el-button @click="addsg();">添加</el-button></div>
  40. </div>
  41. <!-- <div class="footerbtn flex1"><div class="borderimg"><el-button @click="addsg('2')">
  42. 修改
  43. </el-button></div></div> -->
  44. <div class="footerbtn flex1">
  45. <div class="borderimg"><el-button @click="amend()">
  46. 修改
  47. </el-button></div>
  48. </div>
  49. <div class="footerbtn flex1">
  50. <div class="borderimg"><el-button @click="shanchu()">
  51. 删除
  52. </el-button></div>
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. </el-collapse-item>
  60. </el-collapse>
  61. <!-- 添加 -->
  62. <el-dialog v-model="addVisible" align-center :append-to-body="true" width="400" class="dialog_class bgcolor tianjia foter_l tianjia">
  63. <template #header="{ titleId, titleClass }">
  64. <div class="my-header ">
  65. <el-image :src="icon" fit="contain"></el-image>
  66. <h4 :id="titleId" :class="titleClass">{{ add }}</h4>
  67. </div>
  68. </template>
  69. <el-form class="demo-form-inline" :inline="true" :model="senobj">
  70. <el-form-item label="类型" :label-width="formLabelWidth6">
  71. <el-input v-model="senobj.type" maxlength="15" class="w-50 m-2" placeholder="请输入" />
  72. </el-form-item>
  73. <div class="demo-input-suffix firsttitle magintop guand_1">
  74. <el-form-item label="巷道名称" :label-width="formLabelWidth6">
  75. <el-input v-model="source.selectstr" disabled class="w-50 m-2" placeholder="巷道名称" />
  76. </el-form-item>
  77. <div class="btn2">
  78. <el-button type="primary" @click="fireclick();">选择巷道</el-button>
  79. </div>
  80. </div>
  81. <div class="input">
  82. <el-form-item label="位置" :label-width="formLabelWidth6">
  83. <el-input-number v-model="senobj.site" :min="0" :max="1" :precision="2" :step="0.1"
  84. controls-position="right" class="w-50 m-2" placeholder="位置" />
  85. </el-form-item>
  86. </div>
  87. </el-form>
  88. <div class="dialog-footer footer_div l_btn">
  89. <div class="footerbtn flex1">
  90. <div class="borderimg"><el-button @click="addVisible = false">取消</el-button></div>
  91. </div>
  92. <div class="footerbtn flex1">
  93. <div class="borderimg"><el-button @click="addEied(); ">
  94. 确定
  95. </el-button></div>
  96. </div>
  97. </div>
  98. </el-dialog>
  99. <!-- 删除 -->
  100. <el-dialog v-model="dialogsgdelect" align-center :append-to-body="true" width="400" class="dialog_class bgcolor tianjia">
  101. <template #header="{ titleId, titleClass }">
  102. <div class="my-header ">
  103. <el-image :src="icon" fit="contain"></el-image>
  104. <h4 :id="titleId" :class="titleClass">删除框</h4>
  105. </div>
  106. </template>
  107. <h4 class="delecttitle"> 是否确认删除: <span class="spanclad">{{ zqname }}</span></h4>
  108. <div class="dialog-footer footer_div l_btn">
  109. <div class="footerbtn flex1">
  110. <div class="borderimg"><el-button @click="dialogsgdelect = false">取消</el-button></div>
  111. </div>
  112. <div class="footerbtn flex1">
  113. <div class="borderimg"><el-button @click="fundeledata(); dialogsgdelect = false">
  114. 确定
  115. </el-button></div>
  116. </div>
  117. </div>
  118. </el-dialog>
  119. <!-- 选择管道 -->
  120. <pipelines ref="pipeline" :selectstr="source.selectstr" @pipelineapi="pipelineapi" />
  121. </div>
  122. </el-aside>
  123. </div>
  124. </div>
  125. </template>
  126. <script setup>
  127. import { computed, ref, onMounted, reactive, toRef } from "vue";
  128. import { request, uploadFile } from "@/utils/request";
  129. import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
  130. import { message } from '@/utils/message';
  131. import icon from "@/assets/img/icon.png";
  132. import pipelines from "./PipeIine.vue"
  133. import { vtkmodel } from "@/control/vtkModel.js";
  134. import { timestampToTime } from '@/js/lindex.js'
  135. import emitter from "@/utils/emitter";
  136. let pipeline = ref();
  137. let currentrow=ref(true);
  138. let sendialogVisible = ref(false);
  139. let addVisible = ref(false);
  140. let dialogsgdelect = ref(false)
  141. let classradio1 = ref('Fire');
  142. const formLabelWidth6 = ref(100);
  143. let coolactiveName1 = ref(["1", "2"]);
  144. let add = ref("")
  145. const resultactiveName = ref("first");
  146. let tableHeight = ref(200);
  147. let tableData = ref([]);
  148. let tableobj = ref({});
  149. let zqname = ref();
  150. let tishi=ref();
  151. let senobj = ref({
  152. pid: 0,
  153. seid: 0,
  154. site: 0,
  155. type: "温度传感器",
  156. senobj: ''
  157. })
  158. let source = ref({
  159. selectstr: '',
  160. site: ''
  161. })
  162. let firepid = ref("")
  163. const tableRowClassName = ({ row, rowIndex }) => {
  164. if (rowIndex % 2 != 0) {
  165. return 'evenRow';
  166. }
  167. return 'oddRow';
  168. }
  169. // 选中一行
  170. const handleDelete = (val) => {
  171. tableobj.value = val;
  172. currentrow.value=true;
  173. console.log(val);
  174. // console.log(tableobj.value)
  175. }
  176. // 删除
  177. const shanchu = () => {
  178. if (JSON.stringify(tableobj.value) == '{}') {
  179. message.error("你还没有选中删除的项目")
  180. } else {
  181. dialogsgdelect.value = true
  182. zqname.value = tableobj.value.pname;
  183. }
  184. }
  185. const fundeledata = () => {
  186. const params = {
  187. transCode: 'D10012',
  188. seid: tableobj.value.seid
  189. }
  190. request(params)
  191. .then((res) => {
  192. message({
  193. message: '传感器信息删除成功',
  194. type: 'success',
  195. })
  196. getsensor();
  197. })
  198. .catch((err) => {
  199. message.error(err.returnMsg)
  200. })
  201. }
  202. onMounted(() => {
  203. getsensor1();
  204. });
  205. // 查询
  206. const getsensor1 = () => {
  207. const params = {
  208. transCode: 'D10010',
  209. type: 'Fire'
  210. }
  211. request(params)
  212. .then((res) => {
  213. tableData.value = res.rows;
  214. tableobj.value={};
  215. })
  216. .catch((err) => {
  217. message.error(err.returnMsg)
  218. })
  219. }
  220. const getsensor = () => {
  221. vtkmodel.delSensor();
  222. const params = {
  223. transCode: 'D10010',
  224. type: 'Fire'
  225. }
  226. request(params)
  227. .then((res) => {
  228. tableData.value = res.rows;
  229. tableobj.value={};
  230. console.log( res.rows)
  231. res.rows.forEach(element => {
  232. console.log(1111)
  233. vtkmodel.addSensor(element.pid,element.site)
  234. });
  235. vtkmodel.showSensor();
  236. })
  237. .catch((err) => {
  238. message.error(err.returnMsg)
  239. })
  240. }
  241. //添加
  242. const addsg = () => {
  243. add.value = "添加";
  244. tishi.value= add.value;
  245. currentrow.value=false;
  246. addVisible.value = true;
  247. senobj.value.seid = '';
  248. senobj.value.pid = '';
  249. senobj.value.type = '';
  250. senobj.value.site = 0.0;
  251. source.value.selectstr = '';
  252. tableobj.value={};
  253. // vtkmodel.showSensor();
  254. emitter.emit('myaddsg',(true));
  255. //console.log(4455667788899)
  256. // emitter.on('changecheckbox4',(data)=>{
  257. // console.log(22222)
  258. // // changecheckbox4();
  259. // });
  260. }
  261. // 添加修改的接口
  262. const addEied = () => {
  263. const params = {
  264. transCode: 'D10011',
  265. seid: senobj.value.seid,
  266. pid: senobj.value.pid,
  267. site: senobj.value.site,
  268. type: senobj.value.type
  269. }
  270. request(params)
  271. .then((res) => {
  272. message({
  273. message:'传感器信息'+tishi.value+'成功',
  274. type: 'success',
  275. })
  276. // tableData.value = res.rows;
  277. addVisible.value = false;
  278. getsensor();
  279. })
  280. .catch((err) => {
  281. const regex = /字段\d*/g;
  282. let Msg=err.returnMsg.replace(regex, '');
  283. message.error(Msg)
  284. })
  285. }
  286. //修改
  287. const amend = () => {
  288. add.value = "修改";
  289. tishi.value= add.value;
  290. if (JSON.stringify(tableobj.value) == '{}') {
  291. message.error("你还没有选中修改的项目")
  292. } else {
  293. senobj.value.seid = tableobj.value.seid
  294. senobj.value.pid = tableobj.value.pid
  295. senobj.value.site = tableobj.value.site
  296. senobj.value.type = tableobj.value.type
  297. source.value.selectstr = tableobj.value.pname
  298. addVisible.value = true;
  299. emitter.emit('myaddsg',(true));
  300. }
  301. }
  302. // 巷道方法
  303. // 选择巷道
  304. const fireclick = () => {
  305. pipeline.value.searchtaggd='';
  306. pipeline.value.dialogVisiblenode = true;
  307. pipeline.value.pipelinedata('');
  308. }
  309. //点击确定
  310. const pipelineapi = (row) => {
  311. senobj.value.pid = row.id;
  312. source.value.selectstr = row.name;
  313. tableobj.value.pid = row.id;
  314. }
  315. // onUnmounted(() =>{
  316. // emitter.off('changecheckbox4')
  317. // })
  318. defineExpose({ sendialogVisible, });
  319. </script>