DeviceWarning.html 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640
  1. <!DOCTYPE html>
  2. <html class="x-admin-sm">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="renderer" content="webkit">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  7. <meta name="viewport"
  8. content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>
  9. <link rel="shortcut icon" href="https://osscold.baozhida.cn/favicon.ico">
  10. <link rel="bookmark" href="https://osscold.baozhida.cn/favicon.ico">
  11. <link rel="stylesheet" href="https://osscold.baozhida.cn/css/font.css">
  12. <link rel="stylesheet" href="https://osscold.baozhida.cn/css/xadmin.css">
  13. <script src="https://osscold.baozhida.cn/lib/layui/layui.js" charset="utf-8"></script>
  14. <script type="text/javascript" src="https://osscold.baozhida.cn/js/xadmin.js"></script>
  15. </head>
  16. <body>
  17. <div class="x-nav">
  18. <span class="layui-breadcrumb">
  19. <a href="">首页</a>
  20. <a><cite>宝智达</cite></a>
  21. </span>
  22. <a class="layui-btn layui-btn-normal" style="line-height:1.6em;margin-top:3px;float:right"
  23. onclick="location.reload()" title="刷新">
  24. <i class="layui-icon layui-icon-refresh" style="line-height:30px"></i>
  25. </a>
  26. </div>
  27. <div class="layui-fluid">
  28. <div class="layui-row layui-col-space15">
  29. <div class="layui-col-md12">
  30. <div class="layui-card">
  31. <div class="layui-card-body ">
  32. <form class="layui-form layui-col-space5">
  33. <div class="layui-inline layui-show-xs-block">
  34. <input class="layui-input" autocomplete="off" placeholder="开始日" name="Time_start"
  35. id="Time_start" lay-key="1"></div>
  36. <div class="layui-inline layui-show-xs-block">
  37. <input class="layui-input" autocomplete="off" placeholder="截止日" name="Time_end"
  38. id="Time_end" lay-key="2"></div>
  39. <div class="layui-input-inline layui-show-xs-block">
  40. <input value="{{.T_sn}}" type="text" name="T_sn" style="width: 200px"
  41. placeholder="请输入 Sn (支持模糊搜索)" autocomplete="off" class="layui-input"></div>
  42. <div class="layui-input-inline layui-show-xs-block">
  43. <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="sreach">
  44. <i class="layui-icon">&#xe615;</i></button>
  45. </div>
  46. <button type="button" style="float: right" class="layui-btn layui-btn-normal layui-btn-xs"
  47. onclick="xadmin.open('添加','/Device/DeviceWarning_',400,450)"><i class="layui-icon">&#xe61f;</i>添加报警
  48. </button>
  49. </form>
  50. </div>
  51. <div class="layui-card-body ">
  52. <table class="layui-table layui-form">
  53. <thead>
  54. <tr>
  55. <th style="width: 20px;">选择</th>
  56. <th style="width: 70px;">报警类型</th>
  57. <th style="width: 80px;">主机</th>
  58. <th style="width: 50px;">设备</th>
  59. <th style="width: 150px;">采集内容</th>
  60. <th style="width: 70px;">状态</th>
  61. <th style="width: 130px;">采集时间</th>
  62. <th style="width: 120px;">操作</th>
  63. </tr>
  64. </thead>
  65. <tbody>
  66. {{range $index, $elem := .List}}
  67. <tr {{if eq $elem.T_State 0 }} style="background-color: rgba(0,0,0,0.26)" {{end}}>
  68. <td style="width: 5px"><input style="width: 5px" type="checkbox" class="layui-checkbox" name="checkbox"
  69. lay-skin="primary"
  70. value="{{$elem.Id}}"></td>
  71. <td type="text" name="T_tp_name">{{$elem.T_tp_name}}
  72. </td>
  73. <td name="t_sn" sn="{{$elem.T_sn}}">{{$elem.T_sn}}</td>
  74. <td name="t_id" t_id="{{$elem.T_id}}">{{$elem.T_id}}</td>
  75. <td name="t__remark">{{$elem.T_Remark}}</td>
  76. <td name="t__state">
  77. {{if eq $elem.T_State 1}}
  78. 不处理
  79. {{else if eq $elem.T_State 2}}
  80. 已处理
  81. {{else if eq $elem.T_State 3}}
  82. 未处理
  83. {{else}}
  84. 删除
  85. {{end}}
  86. </td>
  87. <td name="t__ut">{{$elem.T_Ut}}</td>
  88. <td>
  89. <button class="layui-btn-danger layui-btn layui-btn-xs"
  90. onclick="member_del(this,'{{$elem.Id}}','{{$elem.T_Ut}}')" href="javascript:;">
  91. <i class="layui-icon">&#xe640;</i>删除
  92. </button>
  93. <button class="layui-btn-normal layui-btn layui-btn-xs copy-add-btn" id="copy-add-btn"
  94. data-id="{{$elem.Id}},{{$elem.T_Ut}}">复制添加
  95. </button>
  96. </td>
  97. </tr>
  98. {{end}}
  99. </tbody>
  100. <div class="layui-form layui-border-box layui-row layui-col-space10 layui-form-item">
  101. <button class="layui-btn layui-btn-sm" id="selectAll">全选</button>
  102. <button class="layui-btn layui-btn-sm" id="unselectAll">全不选</button>
  103. <button class="layui-btn layui-btn-sm" id="invertSelect">反选</button>
  104. <button class="layui-btn layui-btn-sm layui-btn-danger" id="batchDelete">批量删除</button>
  105. </div>
  106. <div>
  107. <div class="siftWarning" style="width: 100px; margin-left: 260px; margin-top: -45px;">
  108. <select>
  109. <option value="">类型筛选</option>
  110. </select>
  111. </div>
  112. </div>
  113. </table>
  114. </div>
  115. <div class="layui-card-body ">
  116. <select id="pageSizeSelector">
  117. <option value="100">100 条/页</option>
  118. <option value="200">200 条/页</option>
  119. <option value="500">500 条/页</option>
  120. <option value="1000">1000 条/页</option>
  121. </select>
  122. <div class="page">
  123. <div>
  124. {{range $index, $elem := .Pages}}
  125. {{if eq $elem.A 1}}
  126. <a class="prev"
  127. href="?page={{$elem.V}}&T_sn={{$.T_sn}}&Time_start={{$.Time_start}}&Time_end={{$.Time_end}}">&lt;&lt;</a>
  128. {{end}}
  129. {{if eq $elem.A 2}}
  130. <a class="num"
  131. href="?page={{$elem.V}}&T_sn={{$.T_sn}}&Time_start={{$.Time_start}}&Time_end={{$.Time_end}}">{{$elem.V}}</a>
  132. {{end}}
  133. {{if eq $elem.A 3}}
  134. <span class="current">{{$elem.V}}</span>
  135. {{end}}
  136. {{if eq $elem.A 4}}
  137. <a class="num"
  138. href="?page={{$elem.V}}&T_sn={{$.T_sn}}&Time_start={{$.Time_start}}&Time_end={{$.Time_end}}">{{$elem.V}}</a>
  139. {{end}}
  140. {{if eq $elem.A 5}}
  141. <a class="next"
  142. href="?page={{$elem.V}}&T_sn={{$.T_sn}}&Time_start={{$.Time_start}}&Time_end={{$.Time_end}}">&gt;&gt;</a>
  143. {{end}}
  144. {{end}}
  145. </div>
  146. 当前页:{{.Page}}-
  147. 总页数:{{.Page_size}}-
  148. 总条数:{{.cnt}}
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. </body>
  156. <script>
  157. document.addEventListener('DOMContentLoaded', function () {
  158. // 初始化pageSize,先从localStorage读取,如果没有则使用默认值
  159. var pageSize = localStorage.getItem('pageSize') || 100;
  160. document.getElementById('pageSizeSelector').value = pageSize; // 设置选择框的默认选中项
  161. // 监听选择框变化
  162. document.getElementById('pageSizeSelector').addEventListener('change', function (event) {
  163. var newPageSize = event.target.value;
  164. localStorage.setItem('pageSize', newPageSize); // 更新localStorage中的pageSize
  165. // 调用函数更新分页链接
  166. updatePageLinks(newPageSize);
  167. sendPageSizeToBackend(newPageSize);
  168. });
  169. // 页面加载时执行一次,确保初始状态正确
  170. updatePageLinks(pageSize);
  171. });
  172. document.getElementById('pageSizeSelector').addEventListener('change', function (event) {
  173. var newPageSize = event.target.value;
  174. localStorage.setItem('pageSize', newPageSize); // 更新localStorage中的pageSize
  175. console.log("更改:", newPageSize);
  176. // 调用函数更新分页链接
  177. sendPageSizeToBackend(newPageSize);
  178. updatePageLinks(newPageSize);
  179. });
  180. // 更新所有分页链接的函数
  181. function updatePageLinks(pageSize) {
  182. var links = document.querySelectorAll('.num');
  183. for (var i = 0; i < links.length; i++) {
  184. var href = links[i].getAttribute('href');
  185. href = href.replace(/pageSize\s*=\s*\d+/, 'pageSize=' + encodeURIComponent(pageSize)); // 替换pageSize参数
  186. links[i].setAttribute('href', href + "&pageSize=" + pageSize);
  187. // window.location.href = links[0].href;
  188. }
  189. }
  190. // 新增函数:向后端发送pageSize
  191. function sendPageSizeToBackend(pageSize) {
  192. // 获取开始日的值
  193. var startTime = document.getElementById('Time_start').value;
  194. // 获取截止日的值
  195. var endTime = document.getElementById('Time_end').value;
  196. // 获取Sn的值
  197. var snValue = document.getElementsByName('T_sn')[0].value;
  198. const url = `?page=1&T_sn=${encodeURIComponent(snValue)}&Time_start=${encodeURIComponent(startTime)}&Time_end=${encodeURIComponent(endTime)}&pageSize=${encodeURIComponent(pageSize)}`; // 将pageSize作为查询参数添加到URL
  199. window.location.href = url;
  200. }
  201. layui.use(['layer', 'laydate', 'form'],
  202. function () {
  203. var laydate = layui.laydate;
  204. var $ = layui.jquery,
  205. layer = layui.layer; //独立版的layer无需执行这一句
  206. $("#selectAll").on("click", function () {
  207. $(":checkbox[name='checkbox']").prop("checked", true);
  208. $(".layui-form-checkbox").addClass("layui-form-checked"); // 通过类名设置全选
  209. // form.render('checkbox'); // 渲染以显示变化
  210. });
  211. $("#unselectAll").on("click", function () {
  212. $(":checkbox[name='checkbox']").prop("checked", false);
  213. $(".layui-form-checkbox").removeClass("layui-form-checked"); // 通过类名设置全不选
  214. // form.render('checkbox');
  215. });
  216. $("#invertSelect").on("click", function () {
  217. $(":checkbox[name='checkbox']").each(function () {
  218. this.checked = !this.checked; // 切换每个复选框的选中状态
  219. });
  220. $(".layui-form-checkbox").each(function () {
  221. if ($(this).hasClass("layui-form-checked")) {
  222. $(this).removeClass("layui-form-checked");
  223. } else {
  224. $(this).addClass("layui-form-checked");
  225. }
  226. });
  227. // form.render('checkbox'); // 渲染以显示变化
  228. });
  229. $("#batchDelete").on("click", function () {
  230. var selectedIds = [];
  231. $("input[name='checkbox']:checked").each(function () {
  232. var checkbox = $(this);
  233. // selectedIds.push(this.value); // 'this.value'直接获取当前选中复选框的值
  234. var row = checkbox.closest('tr');
  235. var seventhColumnValue = row.find('td:eq(6)').text();
  236. console.log(seventhColumnValue);
  237. selectedIds.push({
  238. id: this.value,
  239. ut: seventhColumnValue.trim() // 去除前后空白
  240. });
  241. });
  242. if (selectedIds.length === 0) {
  243. layer.msg('请至少选择一项进行删除!', {icon: 5, time: 2000});
  244. return;
  245. }
  246. layer.confirm('您确定要删除选定的 ' + selectedIds.length + ' 条数据吗?', {
  247. icon: 3,
  248. title: '确认删除',
  249. btn: ['确定', '取消']
  250. }, function (index) {
  251. layer.close(index);
  252. $.ajax({
  253. type: "POST",
  254. url: "/Device/DeviceWarning_dels",
  255. data: JSON.stringify({selectedIds}),
  256. contentType: "application/json;charset=utf-8",
  257. dataType: "json",
  258. success: function (response) {
  259. if (response.Code === 200) {
  260. layer.msg('删除成功! 已删除 ' + selectedIds.length + ' 条数据', {icon: 1, time: 2000});
  261. location.reload();
  262. } else {
  263. layer.msg('删除失败,请重试!', {icon: 5, time: 2000});
  264. }
  265. },
  266. error: function (xhr, status, error) {
  267. console.error("Error occurred: " + error);
  268. layer.msg('请求错误,请检查网络连接!', {icon: 5, time: 2000});
  269. }
  270. });
  271. }, function () {
  272. layer.msg('已取消删除操作', {icon: 1, time: 1000});
  273. });
  274. });
  275. // 绑定复制添加按钮的点击事件
  276. $('body').on('click', '.copy-add-btn', function () {
  277. var btn = $(this);
  278. var row = btn.parents('tr'); // 获取当前按钮所在行
  279. var checkbox = row.find('input[type="checkbox"]'); // 找到本行的复选框
  280. var rowId = checkbox.val(); // 获取当前行的ID(即复选框的value)
  281. var sn = row.find('td[sn]');
  282. var attr = sn.attr('sn');
  283. var t_id = row.find('td[t_id]');
  284. var t_idV = t_id.attr('t_id');
  285. // console.log(attr);
  286. // 复制当前行并在其下方插入
  287. var newRow = row.clone(true);
  288. newRow.insertAfter(row);
  289. // 改变复制行的背景色
  290. newRow.css("background-color", "#07c5ea"); // 示例颜色,您可以自定义
  291. // 提取数据并准备发送到后端的逻辑,排除第一列(ID列)和最后一列的按钮
  292. var rowData = {
  293. rowId: rowId,
  294. sn: attr,
  295. t_id: t_idV
  296. };
  297. newRow.find("td:not(:first):not(:last)").each(function (index, cell) {
  298. // 假设除了第一列和最后一列外,其他列的数据都需要提交
  299. rowData[`column${index + 1}`] = $(cell).text().trim(); // 动态生成键名以避免覆盖
  300. });
  301. // 发送POST请求到后端
  302. $.ajax({
  303. type: "POST",
  304. url: "/Device/DeviceWarningAdd",
  305. data: JSON.stringify(rowData),
  306. contentType: "application/json;charset=utf-8",
  307. dataType: "json",
  308. success: function (response) {
  309. if (response.Code === 200) {
  310. layer.msg('复制并添加成功!', {icon: 1, time: 2000});
  311. } else {
  312. layer.msg('添加失败,请重试!', {icon: 5, time: 2000});
  313. newRow.remove(); // 如果后端返回失败,移除新行
  314. }
  315. },
  316. error: function (xhr, status, error) {
  317. layer.msg('请求错误,请检查网络连接!', {icon: 5, time: 2000});
  318. newRow.remove(); // 发生错误时移除新行
  319. }
  320. });
  321. });
  322. // 绑定所有可编辑列的双击事件
  323. $('tbody').on('dblclick', 'td:not(:last-child)', function (e) { // 排除最后一列的按钮
  324. var cell = $(this);
  325. var row = cell.closest('tr'); // 获取当前行
  326. var checkbox = row.find('input[type="checkbox"]'); // 找到本行的复选框
  327. var rowId = checkbox.val(); // 获取当前行的ID(即复选框的value)
  328. var columnName = cell.attr('name'); // 获取当前列的名称
  329. var originalText = cell.text().trim(); // 保存原始文本内容
  330. var T_Ut_cell = row.find('td[name="t__ut"]');
  331. var T_Ut_value = T_Ut_cell.text().trim();
  332. var sn = row.find('td[sn]');
  333. var attr = sn.attr('sn');
  334. // 检查是否是第一列或第五列
  335. if (columnName === 'T_tp_name' || columnName === 't__state' || columnName === 't_sn'|| columnName === 't_id') {
  336. cell.html('<select style="display:block;"></select>');
  337. cell.append('<button class="confirm-btn">确认</button>');
  338. var selectBox = cell.find('select');
  339. console.log(selectBox);
  340. // 调用方法动态填充下拉选项
  341. populateSelectOptions(selectBox, columnName,attr);
  342. selectBox.val(originalText);
  343. selectBox.focus();
  344. selectBox.change(function () {
  345. var newValue = $(this).val();
  346. if (newValue !== '') {
  347. cell.html(newValue);
  348. submitUpdate(rowId, columnName, newValue, T_Ut_value,attr);
  349. selectBox.off('change'); // 清理事件监听
  350. } else {
  351. cell.text(originalText);
  352. }
  353. });
  354. // 给确认按钮绑定点击事件
  355. cell.find('.confirm-btn').on('click', function() {
  356. var newValue = selectBox.val();
  357. if (newValue !== '') {
  358. cell.html(newValue);
  359. submitUpdate(rowId, columnName, newValue, T_Ut_value, attr);
  360. // 清理,比如移除确认按钮和selectBox
  361. $(this).remove();
  362. selectBox.off('change').remove();
  363. } else {
  364. cell.text(originalText);
  365. }
  366. });
  367. } else {
  368. // 将当前单元格内容替换为<input>元素
  369. cell.html('<input type="text" class="layui-input inline-edit-input" value="' + originalText + '">');
  370. // 自动聚焦到新创建的输入框
  371. cell.find('.inline-edit-input').focus();
  372. // 监听输入框的失焦事件,以便在用户完成编辑后保存更改
  373. cell.find('.inline-edit-input').blur(function () {
  374. var newValue = $(this).val().trim();
  375. if (newValue !== '') { // 确保输入不为空
  376. cell.html(newValue); // 用新值替换输入框
  377. // 提交更改到后端,包含列名
  378. submitUpdate(rowId, columnName, newValue, T_Ut_value,attr);
  379. } else {
  380. // 如果用户清空了输入框,则恢复原始内容
  381. cell.text(originalText);
  382. }
  383. });
  384. }
  385. });
  386. $('.siftWarning').on('click', function () {
  387. $.ajax({
  388. type: "GET",
  389. url: "/Device/DeviceWarning_waraning",
  390. contentType: "application/json;charset=utf-8",
  391. dataType: "json",
  392. success: function (response) {
  393. if (response.Code === 200) {
  394. const data = response.Data;
  395. // 获取select元素
  396. const selectElement = document.querySelector('select');
  397. // 清空原有的选项(除了第一个默认选项)
  398. for (let i = selectElement.options.length - 1; i >= 1; i--) {
  399. selectElement.remove(i);
  400. }
  401. // 遍历数据并添加新的选项
  402. data.forEach(item => {
  403. const option = document.createElement('option');
  404. option.value = item.Key;
  405. option.textContent = item.Value;
  406. selectElement.appendChild(option);
  407. });
  408. } else {
  409. layer.msg('获取类型失败', {icon: 5, time: 2000});
  410. }
  411. },
  412. error: function (xhr, status, error) {
  413. layer.msg('请求错误,请检查网络连接!', {icon: 5, time: 2000});
  414. }
  415. });
  416. const selectElement = document.querySelector('select');
  417. // 添加change事件监听器
  418. selectElement.addEventListener('change', function() {
  419. // 在这里写你需要执行的方法或逻辑
  420. console.log('选中的值:', this.value); // 打印选中的值
  421. // 可以在这里调用其他方法或执行其他操作
  422. const t_tp=this.value;
  423. getWarningType(t_tp)
  424. });
  425. })
  426. function getWarningType (t_tp) {
  427. var pageSize = localStorage.getItem('pageSize') || 100;
  428. // 获取输入框的值
  429. const startTime = document.getElementById('Time_start').value;
  430. const endTime = document.getElementById('Time_end').value;
  431. const sn = document.querySelector('input[name="T_sn"]').value;
  432. // 在这里处理这些值,例如发送到服务器或进行其他操作
  433. console.log('开始时间:', startTime);
  434. console.log('结束时间:', endTime);
  435. console.log('SN:', sn);
  436. console.log('page:', pageSize);
  437. console.log('t_tp:', t_tp);
  438. const url = `?page=1&T_sn=${encodeURIComponent(sn)}&Time_start=${encodeURIComponent(startTime)}&Time_end=${encodeURIComponent(endTime)}&pageSize=${encodeURIComponent(pageSize)}&t_tp=${encodeURIComponent(t_tp)}`;
  439. window.location.href = url;
  440. }
  441. // 定义提交更新到后端的函数
  442. function submitUpdate(rowId, columnName, newValue, T_Ut_value,attr) {
  443. var dataToSubmit = {
  444. rowId: rowId,
  445. columnName: columnName,
  446. newValue: newValue,
  447. T_Ut: T_Ut_value,
  448. sn: attr,
  449. };
  450. // 发起POST请求到后端
  451. $.ajax({
  452. type: "POST",
  453. url: "/Device/DeviceWarningUpdate", // 替换为您的后端更新接口地址
  454. data: JSON.stringify(dataToSubmit),
  455. contentType: "application/json;charset=utf-8",
  456. dataType: "json",
  457. success: function (response) {
  458. console.log(response);
  459. if (response.Code === 200) {
  460. layer.msg('更新成功!', {icon: 1, time: 2000});
  461. location.reload()
  462. } else {
  463. layer.msg('更新失败,请重试!', {icon: 5, time: 2000});
  464. }
  465. },
  466. error: function (xhr, status, error) {
  467. layer.msg('请求错误,请检查网络连接!', {icon: 5, time: 2000});
  468. }
  469. });
  470. }
  471. function populateSelectOptions(selectBox, columnName,attr) {
  472. switch (columnName) {
  473. case 'T_tp_name':
  474. fetch("/Device/DeviceWarning_waraning")
  475. .then(response => {
  476. if (!response.ok) {
  477. throw new Error('网络连接失败');
  478. }
  479. return response.json();
  480. })
  481. .then(data => {
  482. data.Data.forEach(item => {
  483. console.log(item.Key);
  484. selectBox.append(`<option value='${item.Key}'>${item.Value}</option>`);
  485. });
  486. })
  487. .catch(error => {
  488. console.error( error);
  489. });
  490. break;
  491. case 't__state':
  492. selectBox.append('<option value=0>删除</option>');
  493. selectBox.append('<option value=1>不处理</option>');
  494. selectBox.append('<option value=2>已处理</option>');
  495. selectBox.append('<option value=3>未处理</option>');
  496. break;
  497. case 't_sn':
  498. fetch("/Device/DeviceWarning_ALL_SN")
  499. .then(response => {
  500. if (!response.ok) {
  501. throw new Error('网络连接失败');
  502. }
  503. return response.json();
  504. })
  505. .then(data => {
  506. data.Data.forEach(item => {
  507. selectBox.append(`<option value='${item.T_sn}'>${item.T_sn}</option>`);
  508. });
  509. })
  510. .catch(error => {
  511. console.error(error);
  512. });
  513. break;
  514. case 't_id':
  515. console.log(attr);
  516. const url = `/Device/DeviceWarning_ALL_TID?sn=${encodeURIComponent(attr)}`;
  517. fetch(url)
  518. .then(response => {
  519. if (!response.ok) {
  520. throw new Error('连接失败');
  521. }
  522. return response.json();
  523. })
  524. .then(data => {
  525. data.Data.forEach(item => {
  526. console.log(data.Data);
  527. selectBox.append(`<option value='${item.T_id}'>${item.T_id}</option>`);
  528. });
  529. })
  530. .catch(error => {
  531. console.error(error);
  532. });
  533. break;
  534. default:
  535. // 万一其他列也需要处理,可以在这里扩展
  536. break;
  537. }
  538. }
  539. //执行一个laydate实例
  540. laydate.render({
  541. elem: '#Time_start', //指定元素
  542. value:{{.Time_start}}
  543. ,type: 'datetime'
  544. });
  545. //执行一个laydate实例
  546. laydate.render({
  547. elem: '#Time_end', //指定元素
  548. value:{{.Time_end}}
  549. ,type: 'datetime'
  550. });
  551. });
  552. /*用户-删除*/
  553. function member_del(obj, id, t_ut) {
  554. layer.confirm('确认要删除吗?',
  555. function (index) {
  556. //发异步删除数据
  557. $(obj).parents("tr").remove();
  558. $.ajax({
  559. type: 'POST',
  560. url: 'DeviceWarning_Del',//发送请求
  561. data: {Id: id, Ut: t_ut},
  562. success: function (result) {
  563. console.log(result)
  564. if (result.Code == 200) {
  565. layer.msg('已删除!', {
  566. icon: 1,
  567. time: 2000
  568. });
  569. window.location.reload();
  570. } else {
  571. layer.msg('删除失败!', {
  572. time: 2000
  573. });
  574. }
  575. }
  576. });
  577. });
  578. }
  579. </script>
  580. </html>