MenuCheck.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  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. <el-table-column type="index" label="编号" width="70" />
  27. <el-table-column prop="chcode" label="监测点编号" width="100" />
  28. <el-table-column prop="chname" label="名称" />
  29. <el-table-column prop="pname" label="所在巷道" />
  30. <el-table-column prop="site" label="位置" />
  31. </el-table>
  32. </div>
  33. </div>
  34. <div class="dialog-footer footer_div l_btn">
  35. <div class="footerbtn flex1">
  36. <div class="borderimg"><el-button @click="addsg();sdialog.dianadddialog=true">添加</el-button></div>
  37. </div>
  38. <div class="footerbtn flex1">
  39. <div class="borderimg"><el-button @click="shanchu()">
  40. 删除
  41. </el-button></div>
  42. </div>
  43. <div class="footerbtn flex1">
  44. <div class="borderimg"><el-button @click="amend()">
  45. 修改
  46. </el-button></div>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. </div>
  53. </el-collapse-item>
  54. </el-collapse>
  55. <!-- 删除 -->
  56. <el-dialog v-model="dialogsgdelect" align-center :append-to-body="true" width="400" class="dialog_class bgcolor tianjia">
  57. <template #header="{ titleId, titleClass }">
  58. <div class="my-header ">
  59. <el-image :src="icon" fit="contain"></el-image>
  60. <h4 :id="titleId" :class="titleClass">删除框</h4>
  61. </div>
  62. </template>
  63. <h4 class="delecttitle"> 是否确认删除 <span class="spanclad">巷道{{ zqname }}</span></h4>
  64. <div class="dialog-footer footer_div l_btn">
  65. <div class="footerbtn flex1">
  66. <div class="borderimg"><el-button @click="dialogsgdelect = false">取消</el-button></div>
  67. </div>
  68. <div class="footerbtn flex1">
  69. <div class="borderimg"><el-button @click="fundeledata(); dialogsgdelect = false">
  70. 确定
  71. </el-button></div>
  72. </div>
  73. </div>
  74. </el-dialog>
  75. <!-- 添加 -->
  76. <el-dialog v-model="sdialog.dianadddialog" align-center :append-to-body="true" width="500px" class="dialog_class bgcolor tianjia">
  77. <template #header="{titleId, titleClass }">
  78. <div class="my-header ">
  79. <el-image :src="icon" fit="contain" ></el-image>
  80. <h4 :id="titleId" :class="titleClass">{{add}}</h4>
  81. </div>
  82. </template>
  83. <el-form-item label="监测点编号:" :label-width="formLabelWidth5">
  84. <el-input v-model="source.chcode" oninput ="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')"
  85. class="w-50 m-2"
  86. placeholder="请输入" />
  87. </el-form-item>
  88. <el-form-item label="监测点名称:" :label-width="formLabelWidth5">
  89. <el-input v-model="source.chname"
  90. class="w-50 m-2"
  91. placeholder="请输入" />
  92. </el-form-item>
  93. <div class="demo-input-suffix firsttitle magintop guand_1">
  94. <el-form-item label="巷道名称" :label-width="formLabelWidth5">
  95. <el-input v-model="source.selectstr" disabled
  96. class="w-50 m-2 text-disabled"
  97. placeholder="请选择巷道" />
  98. </el-form-item>
  99. <div class="btn2">
  100. <el-button type="primary" @click="fireclick();sdialog.dialogVisiblenode=true">选择巷道</el-button></div>
  101. </div>
  102. <div class="input">
  103. <el-form-item label="位置" :label-width="formLabelWidth5">
  104. <el-input-number v-model="source.site" :min="0" :max="10"
  105. :precision="2" :step="0.1"
  106. controls-position="right"
  107. class="w-50 m-2"
  108. placeholder="位置"
  109. />
  110. </el-form-item>
  111. </div>
  112. <div class="dialog-footer footer_div l_btn">
  113. <div class="footerbtn flex1"><div class="borderimg"><el-button @click="sdialog.dianadddialog=false">取消</el-button></div></div>
  114. <div class="footerbtn flex1"><div class="borderimg"><el-button @click="addEditaip(); ">
  115. 确定
  116. </el-button></div></div>
  117. </div>
  118. </el-dialog>
  119. <!-- 选择管道 -->
  120. <el-dialog
  121. v-model="sdialog.dialogVisiblenode"
  122. align-center :append-to-body="true"
  123. width="600"
  124. class="dialog_class bgcolor tianjia asideg asidegbg leftbgimg"
  125. >
  126. <template #header="{titleId, titleClass }">
  127. <div class="my-header ">
  128. <el-image :src="icon" fit="contain" ></el-image>
  129. <h4 :id="titleId" :class="titleClass"> 选择巷道</h4>
  130. </div>
  131. </template>
  132. <div class="demo-input-suffix firsttitle leftbgimg2 my_content1">
  133. <div class="guand_1">
  134. <el-form-item label="节点选择" :label-width="formLabelWidth5">
  135. <el-input v-model="searchtaggd"
  136. class="w-50 m-2"
  137. placeholder="巷道"
  138. />
  139. </el-form-item>
  140. <div class="asdis_btn">
  141. <div class="flex_a"><div class="btns" @click="searchgd"><span class="spantext">搜索</span></div></div>
  142. </div>
  143. </div>
  144. <el-table
  145. :row-class-name="tableRowClassName"
  146. :max-height="tableHeight"
  147. ref="multipleTableRef"
  148. :data="tableData2"
  149. style="width: 100%"
  150. @select="projectsSelectionSelect"
  151. :header-cell-style="{'background':'rgba(13, 22, 57, 0.96) '}"
  152. >
  153. <el-table-column type="selection" width="55" />
  154. <el-table-column property="snId" label="开始节点"/>
  155. <el-table-column property="enId" label="结束节点"/>
  156. <el-table-column property="id" label="编号" width="70"/>
  157. <el-table-column property="name" label="名称" width="70"/>
  158. <el-table-column property="sectionType" label="截面类型" width="120"/>
  159. <el-table-column property="roughCoe" label="粗糙系数"/>
  160. <el-table-column property="sectionPara1" label="截面参数1" width="90"/>
  161. <el-table-column property="sectionPara2" label="截面参数2" width="90" />
  162. <el-table-column property="sectionPara3" label="截面参数3" width="90"/>
  163. <el-table-column property="sectionPara4" label="截面参数4" width="90"/>
  164. <el-table-column property="sectionPara5" label="截面参数5" width="90"/>
  165. </el-table>
  166. <div class="demo-pagination-block" style="margin-top: 20px;">
  167. <el-config-provider :locale="zhCn">
  168. <el-pagination
  169. v-model:current-page="currentPage4"
  170. v-model:page-size="pageSize4"
  171. small
  172. background
  173. layout="prev, total,pager, next, jumpe,"
  174. :total="parseInt(total)"
  175. class="mt-4"
  176. @current-change="handleCurrentChange"
  177. />
  178. </el-config-provider>
  179. </div>
  180. <div class="dialog-footer footer_div l_btn">
  181. <div class="footerbtn flex1"><div class="borderimg"><el-button @click="sdialog.dialogVisiblenode = false">取消</el-button></div></div>
  182. <div class="footerbtn flex1"><div class="borderimg"><el-button @click="queding();sdialog.dialogVisiblenode = false">
  183. 确定
  184. </el-button></div></div>
  185. </div>
  186. </div>
  187. </el-dialog>
  188. </div>
  189. </el-aside>
  190. </div>
  191. </div>
  192. </template>
  193. <script setup>
  194. import { computed, ref, onMounted, reactive, toRef } from "vue";
  195. import { request, uploadFile } from "@/utils/request";
  196. import { ElMessage, ElButton, ElDialog, ElSelect,ElConfigProvider } from 'element-plus'
  197. import zhCn from 'element-plus/es/locale/lang/zh-cn'
  198. import icon from "@/assets/img/icon.png";
  199. import { timestampToTime } from '@/js/lindex.js'
  200. let sendialogVisible = ref(false);
  201. let currentrow=ref(true);
  202. let addVisible = ref(false);
  203. let dialogsgdelect = ref(false)
  204. let classradio1 = ref('Fire');
  205. const formLabelWidth6 = ref(100);
  206. const formLabelWidth5=ref(90);
  207. const multipleTableRef = ref()
  208. const multipleSelection = ref([])
  209. let add = ref("");
  210. let tableData2=ref([]);
  211. let sdialog=ref({
  212. dianadddialog:false,
  213. dialogVisiblenode:false,
  214. })
  215. let coolactiveName1 = ref(["1", "2"]);
  216. let total = ref(1);
  217. let searchtaggd = ref("");
  218. const currentPage4 = ref(1);
  219. const pageSize4 = ref(5)
  220. let cid=ref("");
  221. let source=ref({
  222. selectstr:'',
  223. site:0,
  224. chname:'',
  225. chcode:''
  226. })
  227. let firepid=ref("")
  228. const resultactiveName = ref("first");
  229. let tableHeight = ref(160);
  230. let tableData = ref([]);
  231. let tableobj = ref({});
  232. let zqname = ref();
  233. let senobj = ref({
  234. pid: 0,
  235. seid: 0,
  236. site: 0,
  237. type: "温度传感器"
  238. })
  239. const tableRowClassName = ({ row, rowIndex }) => {
  240. if (rowIndex % 2 != 0) {
  241. return 'evenRow';
  242. }
  243. return 'oddRow';
  244. }
  245. // 选中一行
  246. const handleDelete = (val) => {
  247. currentrow.value=true;
  248. tableobj.value = val;
  249. cid.value=val.cid
  250. console.log( tableobj.value );
  251. }
  252. // 删除
  253. const shanchu = () => {
  254. if (JSON.stringify(tableobj.value) == '{}') {
  255. ElMessage.error("你还没有选中删除的项目")
  256. } else {
  257. zqname.value = tableobj.value.pname;
  258. dialogsgdelect.value = true;
  259. }
  260. }
  261. const fundeledata=()=>{
  262. const params = {
  263. transCode: 'D10006',
  264. cid: cid.value
  265. }
  266. request(params)
  267. .then((res) => {
  268. getsensor();
  269. })
  270. .catch((err) => {
  271. ElMessage.error(err.returnMsg)
  272. })
  273. }
  274. onMounted(() => {
  275. getsensor();
  276. });
  277. // 查询
  278. const getsensor = () => {
  279. const params = {
  280. transCode: 'D10004',
  281. }
  282. request(params)
  283. .then((res) => {
  284. tableData.value = res.rows;
  285. tableobj.value={};
  286. })
  287. .catch((err) => {
  288. ElMessage.error(err.returnMsg)
  289. })
  290. }
  291. //添加
  292. const addsg = () => {
  293. add.value = "添加";
  294. addVisible.value = true;
  295. currentrow.value=false;
  296. source.value.selectstr='';
  297. source.value.site=0;
  298. source.value.chname='';
  299. source.value.chcode='';
  300. firepid.value='';
  301. cid.value='';
  302. tableobj.value={};
  303. }
  304. // 添加修改的接口
  305. const addEditaip=()=>{
  306. const params = {
  307. transCode: 'D10005',
  308. cid:cid.value,
  309. pid:firepid.value,
  310. site:source.value.site,
  311. chname:source.value.chname,
  312. chcode:source.value.chcode
  313. }
  314. request(params)
  315. .then((res) => {
  316. sdialog.value.dianadddialog=false;
  317. ElMessage({
  318. message: res.returnMsg,
  319. type: 'success',
  320. })
  321. tableData.value = res.rows;
  322. getsensor();
  323. })
  324. .catch((err) => {
  325. ElMessage.error(err.returnMsg)
  326. })
  327. }
  328. //修改
  329. const amend = () => {
  330. add.value = "修改";
  331. if (JSON.stringify(tableobj.value) == '{}') {
  332. ElMessage.error("你还没有选中修改的项目")
  333. } else {
  334. sdialog.value.dianadddialog= true;
  335. cid.value = tableobj.value.cid;
  336. source.value.chname = tableobj.value.chname;
  337. source.value.chcode = tableobj.value.chcode;
  338. source.value.site = tableobj.value.site;
  339. source.value.selectstr=tableobj.value.pname;
  340. firepid.value=tableobj.value.pid;
  341. }
  342. }
  343. // 选择巷道
  344. const fireclick = () => {
  345. searchtaggd.value='';
  346. pipelinedata('');
  347. }
  348. // 节点搜索
  349. function searchgd() {
  350. pipelinedata(searchtaggd.value);
  351. }
  352. // 节点分页查询
  353. const handleCurrentChange = (val) => {
  354. pipelinedata(searchtaggd.value)
  355. }
  356. //节点数据查询
  357. const pipelinedata = (searchtag) => {
  358. const params = {
  359. transCode: 'D00001',
  360. count: pageSize4.value,
  361. page: currentPage4.value,
  362. searchtag: searchtag,
  363. }
  364. request(params)
  365. .then((res) => {
  366. tableData2.value = res.rows;
  367. total.value = res.total;
  368. })
  369. .catch((err) => {
  370. ElMessage.error(err.returnMsg)
  371. })
  372. }
  373. //选中项
  374. const projectsSelectionSelect=(selection, row)=>{
  375. if(selection.length>1){
  376. multipleTableRef.value.clearSelection();
  377. multipleTableRef.value.toggleRowSelection(row,true);
  378. let arrp=[];
  379. arrp.push(selection[1])
  380. multipleSelection.value = arrp;
  381. return;
  382. }
  383. if(selection.length==1){
  384. multipleSelection.value=selection;
  385. }else if(selection.length==0){
  386. }
  387. }
  388. const selectfun=()=>{
  389. source.value.selectstr='';
  390. currentPage4.value=1;
  391. console.log()
  392. if(multipleSelection.value.length!=0){
  393. firepid.value=multipleSelection.value[0].id;
  394. source.value.selectstr=multipleSelection.value[0].name;
  395. console.log(multipleSelection.value[0])
  396. }else{
  397. // selectstr.value='';
  398. }
  399. }
  400. // 确定
  401. const queding=()=>{
  402. selectfun();
  403. }
  404. defineExpose({ sendialogVisible, });
  405. </script>