DeviceWarning.html 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589
  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. </table>
  107. </div>
  108. <div class="layui-card-body ">
  109. <select id="pageSizeSelector">
  110. <option value="100">100 条/页</option>
  111. <option value="200">200 条/页</option>
  112. <option value="500">500 条/页</option>
  113. <option value="1000">1000 条/页</option>
  114. </select>
  115. <div class="page">
  116. <div>
  117. {{range $index, $elem := .Pages}}
  118. {{if eq $elem.A 1}}
  119. <a class="prev"
  120. href="?page={{$elem.V}}&T_sn={{$.T_sn}}&Time_start={{$.Time_start}}&Time_end={{$.Time_end}}">&lt;&lt;</a>
  121. {{end}}
  122. {{if eq $elem.A 2}}
  123. <a class="num"
  124. href="?page={{$elem.V}}&T_sn={{$.T_sn}}&Time_start={{$.Time_start}}&Time_end={{$.Time_end}}">{{$elem.V}}</a>
  125. {{end}}
  126. {{if eq $elem.A 3}}
  127. <span class="current">{{$elem.V}}</span>
  128. {{end}}
  129. {{if eq $elem.A 4}}
  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 5}}
  134. <a class="next"
  135. href="?page={{$elem.V}}&T_sn={{$.T_sn}}&Time_start={{$.Time_start}}&Time_end={{$.Time_end}}">&gt;&gt;</a>
  136. {{end}}
  137. {{end}}
  138. </div>
  139. 当前页:{{.Page}}-
  140. 总页数:{{.Page_size}}-
  141. 总条数:{{.cnt}}
  142. </div>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. </body>
  149. <script>
  150. document.addEventListener('DOMContentLoaded', function () {
  151. // 初始化pageSize,先从localStorage读取,如果没有则使用默认值
  152. var pageSize = localStorage.getItem('pageSize') || 100;
  153. document.getElementById('pageSizeSelector').value = pageSize; // 设置选择框的默认选中项
  154. // 监听选择框变化
  155. document.getElementById('pageSizeSelector').addEventListener('change', function (event) {
  156. var newPageSize = event.target.value;
  157. localStorage.setItem('pageSize', newPageSize); // 更新localStorage中的pageSize
  158. // 调用函数更新分页链接
  159. updatePageLinks(newPageSize);
  160. sendPageSizeToBackend(newPageSize);
  161. });
  162. // 页面加载时执行一次,确保初始状态正确
  163. updatePageLinks(pageSize);
  164. });
  165. document.getElementById('pageSizeSelector').addEventListener('change', function (event) {
  166. var newPageSize = event.target.value;
  167. localStorage.setItem('pageSize', newPageSize); // 更新localStorage中的pageSize
  168. console.log("更改:", newPageSize);
  169. // 调用函数更新分页链接
  170. sendPageSizeToBackend(newPageSize);
  171. updatePageLinks(newPageSize);
  172. });
  173. // 更新所有分页链接的函数
  174. function updatePageLinks(pageSize) {
  175. var links = document.querySelectorAll('.num');
  176. for (var i = 0; i < links.length; i++) {
  177. var href = links[i].getAttribute('href');
  178. href = href.replace(/pageSize\s*=\s*\d+/, 'pageSize=' + encodeURIComponent(pageSize)); // 替换pageSize参数
  179. links[i].setAttribute('href', href + "&pageSize=" + pageSize);
  180. // window.location.href = links[0].href;
  181. }
  182. }
  183. // 新增函数:向后端发送pageSize
  184. function sendPageSizeToBackend(pageSize) {
  185. // 获取开始日的值
  186. var startTime = document.getElementById('Time_start').value;
  187. // 获取截止日的值
  188. var endTime = document.getElementById('Time_end').value;
  189. // 获取Sn的值
  190. var snValue = document.getElementsByName('T_sn')[0].value;
  191. const url = `?page=1&T_sn=${encodeURIComponent(snValue)}&Time_start=${encodeURIComponent(startTime)}&Time_end=${encodeURIComponent(endTime)}&pageSize=${encodeURIComponent(pageSize)}`; // 将pageSize作为查询参数添加到URL
  192. // console.log("发送的URL:", url);
  193. window.location.href = url;
  194. // fetch(url, { // 使用调整后的URL
  195. // method: 'GET', // 保持GET方法,既然这是根据需求设定的
  196. // })
  197. // .then(response => {
  198. // if (!response.ok) {
  199. // throw new Error(`网络响应异常: ${response.statusText}`);
  200. // }
  201. // // 可能需要处理响应数据,这里假设不需要返回数据处理
  202. // })
  203. // .catch(error => {
  204. // console.error('发送pageSize至后端时发生错误:', error);
  205. // // 可能还需要通知用户发生了错误
  206. // });
  207. }
  208. layui.use(['layer', 'laydate', 'form'],
  209. function () {
  210. var laydate = layui.laydate;
  211. var $ = layui.jquery,
  212. layer = layui.layer; //独立版的layer无需执行这一句
  213. $("#selectAll").on("click", function () {
  214. $(":checkbox[name='checkbox']").prop("checked", true);
  215. $(".layui-form-checkbox").addClass("layui-form-checked"); // 通过类名设置全选
  216. // form.render('checkbox'); // 渲染以显示变化
  217. });
  218. $("#unselectAll").on("click", function () {
  219. $(":checkbox[name='checkbox']").prop("checked", false);
  220. $(".layui-form-checkbox").removeClass("layui-form-checked"); // 通过类名设置全不选
  221. // form.render('checkbox');
  222. });
  223. $("#invertSelect").on("click", function () {
  224. $(":checkbox[name='checkbox']").each(function () {
  225. this.checked = !this.checked; // 切换每个复选框的选中状态
  226. });
  227. $(".layui-form-checkbox").each(function () {
  228. if ($(this).hasClass("layui-form-checked")) {
  229. $(this).removeClass("layui-form-checked");
  230. } else {
  231. $(this).addClass("layui-form-checked");
  232. }
  233. });
  234. // form.render('checkbox'); // 渲染以显示变化
  235. });
  236. $("#batchDelete").on("click", function () {
  237. var selectedIds = [];
  238. $("input[name='checkbox']:checked").each(function () {
  239. var checkbox = $(this);
  240. // selectedIds.push(this.value); // 'this.value'直接获取当前选中复选框的值
  241. var row = checkbox.closest('tr');
  242. var seventhColumnValue = row.find('td:eq(6)').text();
  243. console.log(seventhColumnValue);
  244. // 现在您可以根据需要使用 seventhColumnValue,例如将其与ID一起存储
  245. selectedIds.push({
  246. id: this.value,
  247. ut: seventhColumnValue.trim() // 去除前后空白
  248. });
  249. });
  250. if (selectedIds.length === 0) {
  251. layer.msg('请至少选择一项进行删除!', {icon: 5, time: 2000});
  252. return;
  253. }
  254. layer.confirm('您确定要删除选定的 ' + selectedIds.length + ' 条数据吗?', {
  255. icon: 3,
  256. title: '确认删除',
  257. btn: ['确定', '取消']
  258. }, function (index) {
  259. layer.close(index);
  260. $.ajax({
  261. type: "POST",
  262. url: "/Device/DeviceWarning_dels",
  263. data: JSON.stringify({selectedIds}),
  264. contentType: "application/json;charset=utf-8",
  265. dataType: "json",
  266. success: function (response) {
  267. if (response.Code === 200) {
  268. layer.msg('删除成功! 已删除 ' + selectedIds.length + ' 条数据', {icon: 1, time: 2000});
  269. location.reload();
  270. } else {
  271. layer.msg('删除失败,请重试!', {icon: 5, time: 2000});
  272. }
  273. },
  274. error: function (xhr, status, error) {
  275. console.error("Error occurred: " + error);
  276. layer.msg('请求错误,请检查网络连接!', {icon: 5, time: 2000});
  277. }
  278. });
  279. }, function () {
  280. layer.msg('已取消删除操作', {icon: 1, time: 1000});
  281. });
  282. });
  283. // 绑定复制添加按钮的点击事件
  284. $('body').on('click', '.copy-add-btn', function () {
  285. var btn = $(this);
  286. var row = btn.parents('tr'); // 获取当前按钮所在行
  287. var checkbox = row.find('input[type="checkbox"]'); // 找到本行的复选框
  288. var rowId = checkbox.val(); // 获取当前行的ID(即复选框的value)
  289. var sn = row.find('td[sn]');
  290. var attr = sn.attr('sn');
  291. var t_id = row.find('td[t_id]');
  292. var t_idV = t_id.attr('t_id');
  293. // console.log(attr);
  294. // 复制当前行并在其下方插入
  295. var newRow = row.clone(true);
  296. newRow.insertAfter(row);
  297. // 改变复制行的背景色
  298. newRow.css("background-color", "#07c5ea"); // 示例颜色,您可以自定义
  299. // 提取数据并准备发送到后端的逻辑,排除第一列(ID列)和最后一列的按钮
  300. var rowData = {
  301. rowId: rowId,
  302. sn: attr,
  303. t_id: t_idV
  304. };
  305. newRow.find("td:not(:first):not(:last)").each(function (index, cell) {
  306. // 假设除了第一列和最后一列外,其他列的数据都需要提交
  307. rowData[`column${index + 1}`] = $(cell).text().trim(); // 动态生成键名以避免覆盖
  308. });
  309. // 发送POST请求到后端
  310. $.ajax({
  311. type: "POST",
  312. url: "/Device/DeviceWarningAdd", // 替换为您的后端接口地址
  313. data: JSON.stringify(rowData),
  314. contentType: "application/json;charset=utf-8",
  315. dataType: "json",
  316. success: function (response) {
  317. if (response.Code === 200) {
  318. layer.msg('复制并添加成功!', {icon: 1, time: 2000});
  319. } else {
  320. layer.msg('添加失败,请重试!', {icon: 5, time: 2000});
  321. newRow.remove(); // 如果后端返回失败,移除新行
  322. }
  323. },
  324. error: function (xhr, status, error) {
  325. layer.msg('请求错误,请检查网络连接!', {icon: 5, time: 2000});
  326. newRow.remove(); // 发生错误时移除新行
  327. }
  328. });
  329. });
  330. // 绑定所有可编辑列的双击事件
  331. $('tbody').on('dblclick', 'td:not(:last-child)', function (e) { // 排除最后一列的按钮
  332. var cell = $(this);
  333. var row = cell.closest('tr'); // 获取当前行
  334. var checkbox = row.find('input[type="checkbox"]'); // 找到本行的复选框
  335. var rowId = checkbox.val(); // 获取当前行的ID(即复选框的value)
  336. var columnName = cell.attr('name'); // 获取当前列的名称
  337. var originalText = cell.text().trim(); // 保存原始文本内容
  338. var T_Ut_cell = row.find('td[name="t__ut"]');
  339. var T_Ut_value = T_Ut_cell.text().trim();
  340. var sn = row.find('td[sn]');
  341. var attr = sn.attr('sn');
  342. // 检查是否是第一列或第五列
  343. if (columnName === 'T_tp_name' || columnName === 't__state' || columnName === 't_sn'|| columnName === 't_id') {
  344. cell.html('<select style="display:block;"></select>');
  345. cell.append('<button class="confirm-btn">确认</button>');
  346. var selectBox = cell.find('select');
  347. console.log(selectBox);
  348. // 调用方法动态填充下拉选项
  349. populateSelectOptions(selectBox, columnName,attr);
  350. selectBox.val(originalText);
  351. selectBox.focus();
  352. selectBox.change(function () {
  353. var newValue = $(this).val();
  354. if (newValue !== '') {
  355. cell.html(newValue);
  356. submitUpdate(rowId, columnName, newValue, T_Ut_value,attr);
  357. selectBox.off('change'); // 清理事件监听
  358. } else {
  359. cell.text(originalText);
  360. }
  361. });
  362. // 给确认按钮绑定点击事件
  363. cell.find('.confirm-btn').on('click', function() {
  364. var newValue = selectBox.val();
  365. if (newValue !== '') {
  366. cell.html(newValue);
  367. submitUpdate(rowId, columnName, newValue, T_Ut_value, attr);
  368. // 清理,比如移除确认按钮和selectBox
  369. $(this).remove();
  370. selectBox.off('change').remove();
  371. } else {
  372. cell.text(originalText);
  373. }
  374. });
  375. } else {
  376. // 将当前单元格内容替换为<input>元素
  377. cell.html('<input type="text" class="layui-input inline-edit-input" value="' + originalText + '">');
  378. // 自动聚焦到新创建的输入框
  379. cell.find('.inline-edit-input').focus();
  380. // 监听输入框的失焦事件,以便在用户完成编辑后保存更改
  381. cell.find('.inline-edit-input').blur(function () {
  382. var newValue = $(this).val().trim();
  383. if (newValue !== '') { // 确保输入不为空
  384. cell.html(newValue); // 用新值替换输入框
  385. // 提交更改到后端,包含列名
  386. submitUpdate(rowId, columnName, newValue, T_Ut_value,attr);
  387. } else {
  388. // 如果用户清空了输入框,则恢复原始内容
  389. cell.text(originalText);
  390. }
  391. });
  392. }
  393. });
  394. // 定义提交更新到后端的函数
  395. function submitUpdate(rowId, columnName, newValue, T_Ut_value,attr) {
  396. var dataToSubmit = {
  397. rowId: rowId,
  398. columnName: columnName,
  399. newValue: newValue,
  400. T_Ut: T_Ut_value,
  401. sn: attr,
  402. };
  403. // 发起POST请求到后端
  404. $.ajax({
  405. type: "POST",
  406. url: "/Device/DeviceWarningUpdate", // 替换为您的后端更新接口地址
  407. data: JSON.stringify(dataToSubmit),
  408. contentType: "application/json;charset=utf-8",
  409. dataType: "json",
  410. success: function (response) {
  411. console.log(response);
  412. if (response.Code === 200) {
  413. layer.msg('更新成功!', {icon: 1, time: 2000});
  414. location.reload()
  415. } else {
  416. layer.msg('更新失败,请重试!', {icon: 5, time: 2000});
  417. }
  418. },
  419. error: function (xhr, status, error) {
  420. layer.msg('请求错误,请检查网络连接!', {icon: 5, time: 2000});
  421. }
  422. });
  423. }
  424. function populateSelectOptions(selectBox, columnName,attr) {
  425. switch (columnName) {
  426. case 'T_tp_name':
  427. fetch("/Device/DeviceWarning_waraning")
  428. .then(response => {
  429. if (!response.ok) {
  430. throw new Error('Network response was not ok');
  431. }
  432. return response.json();
  433. })
  434. .then(data => {
  435. data.Data.forEach(item => {
  436. console.log(item.Key);
  437. selectBox.append(`<option value='${item.Key}'>${item.Value}</option>`);
  438. });
  439. })
  440. .catch(error => {
  441. console.error('There has been a problem with your fetch operation:', error);
  442. });
  443. break;
  444. case 't__state':
  445. selectBox.append('<option value=0>删除</option>');
  446. selectBox.append('<option value=1>不处理</option>');
  447. selectBox.append('<option value=2>已处理</option>');
  448. selectBox.append('<option value=3>未处理</option>');
  449. break;
  450. case 't_sn':
  451. fetch("/Device/DeviceWarning_ALL_SN")
  452. .then(response => {
  453. if (!response.ok) {
  454. throw new Error('Network response was not ok');
  455. }
  456. return response.json();
  457. })
  458. .then(data => {
  459. data.Data.forEach(item => {
  460. selectBox.append(`<option value='${item.T_sn}'>${item.T_sn}</option>`);
  461. });
  462. })
  463. .catch(error => {
  464. console.error('There has been a problem with your fetch operation:', error);
  465. });
  466. break;
  467. case 't_id':
  468. console.log(attr);
  469. const url = `/Device/DeviceWarning_ALL_TID?sn=${encodeURIComponent(attr)}`;
  470. fetch(url)
  471. .then(response => {
  472. if (!response.ok) {
  473. throw new Error('Network response was not ok');
  474. }
  475. return response.json();
  476. })
  477. .then(data => {
  478. data.Data.forEach(item => {
  479. console.log(data.Data);
  480. selectBox.append(`<option value='${item.T_id}'>${item.T_id}</option>`);
  481. });
  482. })
  483. .catch(error => {
  484. console.error('There has been a problem with your fetch operation:', error);
  485. });
  486. break;
  487. default:
  488. // 万一其他列也需要处理,可以在这里扩展
  489. break;
  490. }
  491. }
  492. //执行一个laydate实例
  493. laydate.render({
  494. elem: '#Time_start', //指定元素
  495. value:{{.Time_start}}
  496. ,type: 'datetime'
  497. });
  498. //执行一个laydate实例
  499. laydate.render({
  500. elem: '#Time_end', //指定元素
  501. value:{{.Time_end}}
  502. ,type: 'datetime'
  503. });
  504. });
  505. /*用户-删除*/
  506. function member_del(obj, id, t_ut) {
  507. layer.confirm('确认要删除吗?',
  508. function (index) {
  509. //发异步删除数据
  510. $(obj).parents("tr").remove();
  511. $.ajax({
  512. type: 'POST',
  513. url: 'DeviceWarning_Del',//发送请求
  514. data: {Id: id, Ut: t_ut},
  515. success: function (result) {
  516. console.log(result)
  517. if (result.Code == 200) {
  518. layer.msg('已删除!', {
  519. icon: 1,
  520. time: 2000
  521. });
  522. window.location.reload();
  523. } else {
  524. layer.msg('删除失败!', {
  525. time: 2000
  526. });
  527. }
  528. }
  529. });
  530. });
  531. }
  532. </script>
  533. </html>