DataList.html 48 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225
  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="/static/favicon.ico">
  10. <link rel="bookmark" href="/static/favicon.ico">
  11. <link rel="stylesheet" href="/static/css/font.css">
  12. <link rel="stylesheet" href="/static/css/xadmin.css">
  13. <script src="/static/js/jquery.min.js"></script>
  14. <script src="/static/js/jquery.cookie.min.js"></script>
  15. <script src="/static/lib/layui/layui.js" charset="utf-8"></script>
  16. <script type="text/javascript" src="/static/js/xadmin.js"></script>
  17. </head>
  18. <body>
  19. <div class="x-nav">
  20. <span class="layui-breadcrumb">
  21. <a href="">首页</a>
  22. <a><cite>数据展示</cite></a>
  23. </span>
  24. <a class="layui-btn layui-btn-normal" style="line-height:1.6em;margin-top:3px;float:right"
  25. onclick="location.reload()" title="刷新">
  26. <i class="layui-icon layui-icon-refresh" style="line-height:30px"></i>
  27. </a>
  28. </div>
  29. <div class="layui-fluid">
  30. <div class="layui-row" style="display: flex;">
  31. <!-- 传感器 选择 start-->
  32. <div style="width: 340px">
  33. <div class="layui-card">
  34. <div class="layui-card-body ">
  35. <form class="layui-form layui-col-space5" οnsubmit="return false;">
  36. <div class="layui-input-inline layui-show-xs-block">
  37. <input value="" type="text" id="D_T_sn" name="D_T_sn" placeholder="请输入 SN"
  38. autocomplete="off"
  39. class="layui-input"></div>
  40. <div class="layui-input-inline layui-show-xs-block">
  41. <input value="" type="text" id="D_Name" name="D_Name" placeholder="请输入 传感器名称"
  42. autocomplete="off"
  43. class="layui-input"></div>
  44. <div class="layui-input-inline layui-show-xs-block" style="width: 168px">
  45. <select id="Class_1" name="Class_1">
  46. <option value=0>所有分类</option>
  47. {{range $index, $elem := .Class_List}}
  48. <option value={{$elem.Id}}>{{$elem.T_name}}</option>
  49. {{end}}
  50. </select>
  51. </div>
  52. <div class="layui-input-inline layui-show-xs-block">
  53. <div class="layui-btn layui-btn-normal"
  54. onclick="get_DeviceSensor_list(0)">
  55. <i class="layui-icon">&#xe615;</i></div>
  56. </div>
  57. </form>
  58. <hr>
  59. </div>
  60. <div class="layui-card-body " style="margin-top: -20px">
  61. <div id="DeviceSensor_list" style="width: 98%; overflow: hidden;max-height: 616px;overflow-y: auto">
  62. <div style="color: #1E9FFF;text-align: center;font-size: 15px;margin-top: 150px">加载中...</div>
  63. </div>
  64. </div>
  65. <div class="layui-card-body ">
  66. <div style="height: 70px">
  67. <div class="layui-card-body " style="text-align: center">
  68. <div class="layui-input-inline layui-show-xs-block">
  69. <div class="layui-btn layui-btn-normal"
  70. onclick="Checkboxs_All()">
  71. <i class="layui-icon">全选择</i>
  72. </div>
  73. </div>
  74. <div class="layui-input-inline layui-show-xs-block">
  75. <div class="layui-btn layui-btn-normal"
  76. onclick="Checkboxs_Allno()">
  77. <i class="layui-icon">全取消</i>
  78. </div>
  79. </div>
  80. <div class="layui-input-inline layui-show-xs-block">
  81. <div class="layui-btn layui-btn-normal"
  82. onclick="Checkboxs_Allto()">
  83. <i class="layui-icon">反选</i>
  84. </div>
  85. </div>
  86. <div style="color: #1E9FFF;text-align: center" id="DeviceSensor_list_Pages_x"></div>
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. <!-- 传感器 选择 end-->
  93. <div style="padding-left: 15px; height: 100%;flex:1;">
  94. <div class="layui-card">
  95. <!-- 传感器数据时间选择 选择 start-->
  96. <div class="layui-card-body ">
  97. <div class="layui-form layui-col-space5" οnsubmit="return false;">
  98. <div class="layui-input-inline layui-show-xs-block">
  99. <div class="layui-btn layui-btn-normal"
  100. onclick="quick_1()">
  101. <i class="layui-icon">今天</i>
  102. </div>
  103. </div>
  104. <div class="layui-input-inline layui-show-xs-block">
  105. <div class="layui-btn layui-btn-normal"
  106. onclick="quick_2()">
  107. <i class="layui-icon">近一周</i>
  108. </div>
  109. </div>
  110. <div class="layui-input-inline layui-show-xs-block">
  111. <div class="layui-btn layui-btn-normal"
  112. onclick="quick_3()">
  113. <i class="layui-icon">近一月</i>
  114. </div>
  115. </div>
  116. <div class="layui-input-inline layui-show-xs-block">
  117. <div class="layui-btn layui-btn-normal"
  118. onclick="quick_4()">
  119. <i class="layui-icon">近一季度</i>
  120. </div>
  121. </div>
  122. <div class="layui-input-inline layui-show-xs-block">
  123. 自定义时间:
  124. </div>
  125. <div class="layui-inline layui-show-xs-block">
  126. <input class="layui-input" autocomplete="off" placeholder="开始日" name="Time_start"
  127. id="Time_start" lay-key="1"></div>
  128. <div class="layui-inline layui-show-xs-block">
  129. <input class="layui-input" autocomplete="off" placeholder="截止日" name="Time_end"
  130. id="Time_end" lay-key="2"></div>
  131. <div class="layui-input-inline layui-show-xs-block">
  132. <div class="layui-btn layui-btn-normal"
  133. onclick="get_DeviceSensor_data(0)">
  134. <i class="layui-icon">&#xe615;</i></div>
  135. </div>
  136. <div class="layui-input-inline layui-show-xs-block" style="float: right">
  137. <button class="layui-btn layui-btn-normal" id="importData">导入数据</button>
  138. <button class="layui-btn layui-btn-normal" id="exportData" onclick="exportData()">导出数据
  139. </button>
  140. <button class="layui-btn layui-btn-normal" onclick="F_moban()">导入模板说明</button>
  141. </div>
  142. </div>
  143. <hr>
  144. <div>
  145. <button class="layui-btn layui-btn-normal" onclick="selectAll()">全选</button>
  146. <button class="layui-btn layui-btn-normal" onclick="reverseSelect()">反选</button>
  147. <button class="layui-btn layui-btn-normal" onclick="noSelect()">全不选</button>
  148. <button class="layui-btn layui-btn-danger" onclick="deleteSelect()">删除</button>
  149. <button class="layui-btn layui-btn-danger" onclick="deleteSelectTime()">删除选择时间范围
  150. </button>
  151. </div>
  152. </div>
  153. <!-- 传感器数据时间选择 选择 end-->
  154. <div class="layui-card-body">
  155. <table class="layui-table ">
  156. <colgroup>
  157. <col width="100">
  158. <col>
  159. <col>
  160. <col>
  161. <col>
  162. <col>
  163. <col>
  164. </colgroup>
  165. <thead>
  166. <tr>
  167. <th>选择</th>
  168. <th style="width: 120px;">采集时间
  169. <button type="button" class="layui-btn-primary layui-btn-xs layui-btn-radius sort" onclick="SortButton()">
  170. <i class="layui-icon layui-icon-up"></i>
  171. </button>
  172. <button type="button" class="layui-btn-primary layui-btn-xs layui-btn-radius sort" onclick="SortButton()">
  173. <i class="layui-icon layui-icon-down"></i>
  174. </button>
  175. </th>
  176. <th>温度℃</th>
  177. <th>湿度%</th>
  178. <th>温湿度上下限</th>
  179. <th>GPS</th>
  180. <th>录入时间</th>
  181. <th>操作</th>
  182. </tr>
  183. </thead>
  184. <tbody id="DeviceSensor_data">
  185. </tbody>
  186. </table>
  187. </div>
  188. <div class="layui-card-body " style="display: flex;justify-content: space-between">
  189. <!--按钮部分 start-->
  190. <div>
  191. <span>每页显示:</span>
  192. <select id="perPageSelect">
  193. <option value="10">10条/页</option>
  194. <option value="100">100条/页</option>
  195. <option value="300">300条/页</option>
  196. <option value="500">500条/页</option>
  197. <option value="800">800条/页</option>
  198. <option value="1000">1000条/页</option>
  199. <option value="2000">2000条/页</option>
  200. <option value="3000">3000条/页</option>
  201. <option value="4000">4000条/页</option>
  202. <option value="5000">5000条/页</option>
  203. </select>
  204. </div>
  205. <!--按钮部分 end-->
  206. <!--分页部分 start-->
  207. <div id="pageTool">
  208. </div>
  209. <!-- <input type="number" id="perPageInput" min="1" value="10">-->
  210. <!--分页部分 end-->
  211. </div>
  212. </div>
  213. </div>
  214. </div>
  215. <!--数据记录展示-->
  216. <div id="recordShow" style="display: none">
  217. <table class="layui-table">
  218. <colgroup>
  219. <col width="20px">
  220. <col width="20px">
  221. <col>
  222. <col>
  223. <col>
  224. <col>
  225. </colgroup>
  226. <thead>
  227. <tr>
  228. <th>温度</th>
  229. <th>湿度</th>
  230. <th>GPS</th>
  231. <th>操作人</th>
  232. <th>录入时间</th>
  233. <th>操作</th>
  234. </tr>
  235. </thead>
  236. <tbody id="recordTableBody"></tbody>
  237. </table>
  238. </div>
  239. </div>
  240. </body>
  241. <script>
  242. let uploadInst
  243. //获取GET
  244. function getPar(par) {
  245. //获取当前URL
  246. var local_url = document.location.href;
  247. //获取要取得的get参数位置
  248. var get = local_url.indexOf(par + "=")
  249. ;
  250. if (get == -1) {
  251. return false;
  252. }
  253. //截取字符串
  254. //截取字符串
  255. var get_par = local_url.slice(par.length + get + 1);
  256. //判断截取后的字符串是否还有其他get参数
  257. var nextPar = get_par.indexOf("&")
  258. ;
  259. if (nextPar != -1) {
  260. get_par = get_par.slice(0, nextPar);
  261. }
  262. return get_par;
  263. }
  264. function ChangeDiv(e) {
  265. // var divs = document.getElementsByClassName("ChangeDiv");
  266. // var len = divs.length;
  267. // for(var i=0;i<len;i++){
  268. // divs[i].style.border = "1px solid #ffffff";
  269. // }
  270. // e.style.border = "1px solid #ed0000";
  271. }
  272. // 今天
  273. function quick_1() {
  274. var myDate = new Date();
  275. y = myDate.getFullYear(); //获取当前年份(2位)
  276. m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  277. d = myDate.getDate(); //获取当前日(1-31)
  278. console.log(y + "-" + m + "-" + d)
  279. Time_start = y + "-" + m + "-" + d + " 00:00:00"
  280. Time_end = y + "-" + m + "-" + d + " 23:59:59"
  281. $("#Time_start").val(Time_start)
  282. $("#Time_end").val(Time_end)
  283. get_DeviceSensor_data(0)
  284. }
  285. // 近一周
  286. function quick_2() {
  287. var myDate = new Date();
  288. y = myDate.getFullYear(); //获取当前年份(2位)
  289. m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  290. d = myDate.getDate(); //获取当前日(1-31)
  291. console.log(y + "-" + m + "-" + d)
  292. Time_end = y + "-" + m + "-" + d + " 23:59:59"
  293. $("#Time_end").val(Time_end)
  294. myDate = myDate.setDate(myDate.getDay() - 6);
  295. myDate = new Date(myDate);
  296. y = myDate.getFullYear(); //获取当前年份(2位)
  297. m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  298. d = myDate.getDate(); //获取当前日(1-31)
  299. Time_start = y + "-" + m + "-" + d + " 00:00:00"
  300. $("#Time_start").val(Time_start)
  301. get_DeviceSensor_data(0)
  302. }
  303. // 近一月
  304. function quick_3() {
  305. var myDate = new Date();
  306. y = myDate.getFullYear(); //获取当前年份(2位)
  307. m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  308. d = myDate.getDate(); //获取当前日(1-31)
  309. console.log(y + "-" + m + "-" + d)
  310. Time_end = y + "-" + m + "-" + d + " 23:59:59"
  311. $("#Time_end").val(Time_end)
  312. myDate = myDate.setDate(myDate.getDate() - 30);
  313. myDate = new Date(myDate);
  314. y = myDate.getFullYear(); //获取当前年份(2位)
  315. m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  316. d = myDate.getDate(); //获取当前日(1-31)
  317. Time_start = y + "-" + m + "-" + d + " 00:00:00"
  318. $("#Time_start").val(Time_start)
  319. get_DeviceSensor_data(0)
  320. }
  321. // 近一季度
  322. function quick_4() {
  323. var myDate = new Date();
  324. y = myDate.getFullYear(); //获取当前年份(2位)
  325. m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  326. d = myDate.getDate(); //获取当前日(1-31)
  327. console.log(y + "-" + m + "-" + d)
  328. Time_end = y + "-" + m + "-" + d + " 23:59:59"
  329. $("#Time_end").val(Time_end)
  330. myDate = myDate.setDate(myDate.getDate() - 30 * 3);
  331. myDate = new Date(myDate);
  332. y = myDate.getFullYear(); //获取当前年份(2位)
  333. m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  334. d = myDate.getDate(); //获取当前日(1-31)
  335. Time_start = y + "-" + m + "-" + d + " 00:00:00"
  336. $("#Time_start").val(Time_start)
  337. get_DeviceSensor_data(0)
  338. }
  339. layui.use(['laydate', 'form', 'element'],
  340. function () {
  341. var laydate = layui.laydate;
  342. //执行一个laydate实例
  343. laydate.render({
  344. elem: '#Time_start' //指定元素
  345. , type: 'datetime'
  346. });
  347. //执行一个laydate实例
  348. laydate.render({
  349. elem: '#Time_end' //指定元素
  350. , type: 'datetime'
  351. });
  352. var element = layui.element;
  353. element.length = 30
  354. });
  355. var T_name = ""
  356. var T_sn = ""
  357. var T_class_id = 0
  358. var T_id = 0
  359. var T_sn_T_id = ""
  360. var Time_start = ""
  361. var Time_end = ""
  362. var sort = "DESC"
  363. var DeviceSensor_lite = []
  364. var DeviceSensor_data = []
  365. var DeviceSensor_snid_list = ""
  366. /// --------------- 传感器列表
  367. // 页面 加载完成后执行
  368. window.onload = function () {
  369. console.log("页面 加载完成后执行")
  370. quick_1()
  371. get_DeviceSensor_list(0)
  372. }
  373. //获取div中所有的复选框 .value
  374. var checkboxs = document.getElementsByClassName("checkboxxx");
  375. function Checkboxs_All() {
  376. for (var i = 0; i < checkboxs.length; i++) {
  377. checkboxs[i].checked = true
  378. }
  379. }
  380. function Checkboxs_Allno() {
  381. for (var i = 0; i < checkboxs.length; i++) {
  382. checkboxs[i].checked = false
  383. }
  384. }
  385. function Checkboxs_Allto() {
  386. for (var i = 0; i < checkboxs.length; i++) {
  387. if (checkboxs[i].checked) {
  388. checkboxs[i].checked = false
  389. } else {
  390. checkboxs[i].checked = true
  391. }
  392. }
  393. }
  394. function Checkboxs_GetAll() {
  395. DeviceSensor_snid_list = ""
  396. for (var i = 0; i < checkboxs.length; i++) {
  397. if (checkboxs[i].checked) {
  398. DeviceSensor_snid_list = DeviceSensor_snid_list + checkboxs[i].value + "|"
  399. }
  400. }
  401. }
  402. function SortButton(){
  403. sort = sort === "DESC"? "ASC" : "DESC"
  404. get_DeviceSensor_data(0, $('#perPageSelect').val())
  405. }
  406. function get_DeviceSensor_list(page) {
  407. T_sn = $("#D_T_sn").val();
  408. T_name = $("#D_Name").val();
  409. T_class_id = $("#Class_1").val();
  410. $.ajax({
  411. type: 'POST',
  412. url: '/Data/Device_Sensor_List',//发送请求
  413. data: {
  414. User_tokey: $.cookie("User_tokey"),
  415. T_sn: T_sn,
  416. T_name: T_name,
  417. T_class_id: parseInt(T_class_id),
  418. page: page,
  419. page_z: 1000,
  420. },
  421. success: function (result) {
  422. console.log(result)
  423. if (result.Code == 200) {
  424. if (page == 0)
  425. $('#DeviceSensor_list').html("")
  426. // $('#DeviceSensor_list_Pages').html("")
  427. // $('#DeviceSensor_list_Pages_x').html("")
  428. DeviceSensor_lite = result.Data.DeviceSensor_lite
  429. if (DeviceSensor_lite.length == 0) {
  430. $('#DeviceSensor_list').html("<div style=\"color: #1E9FFF;text-align: center;font-size: 15px;margin-top: 150px\">没有设备</div>")
  431. return
  432. }
  433. Add_DeviceSensor_list(result.Data.DeviceSensor_lite) // 列表
  434. // Add_DeviceSensor_list_Pages(result.Data.Pages) // 分页
  435. $('#DeviceSensor_list_Pages_x').html(" 传感器 总数:" + result.Data.Num);
  436. if (result.Data.Page_size > result.Data.Page) {
  437. get_DeviceSensor_list(result.Data.Page + 1)
  438. }
  439. } else {
  440. }
  441. }
  442. });
  443. return false
  444. }
  445. //选择所有选择框
  446. let sensors = []
  447. function selectAll() {
  448. sensors = []
  449. $('#DeviceSensor_data > tr > td > input[type="checkbox"]').each((i, e) => {
  450. $(e).prop('checked', true)
  451. })
  452. }
  453. //反选
  454. function reverseSelect() {
  455. sensors = []
  456. $('#DeviceSensor_data > tr > td > input[type="checkbox"]').each((i, e) => {
  457. $(e).prop('checked', !$(e).prop('checked'))
  458. })
  459. }
  460. //全不选
  461. function noSelect() {
  462. sensors = []
  463. $('#DeviceSensor_data > tr > td > input[type="checkbox"]').each((i, e) => {
  464. $(e).prop('checked', false)
  465. })
  466. }
  467. //删除所选择的内容
  468. function deleteSelect() {
  469. //获取选择的行
  470. sensors = []
  471. $('#DeviceSensor_data > tr > td > input[type="checkbox"]').each((i, e) => {
  472. if ($(e).prop('checked')) {
  473. let t = {
  474. t_sn: $(e).attr('data-sn'),
  475. t_id: Number.parseInt($(e).attr('data-id')),
  476. create_time: ($(e).attr('data-createtime')),
  477. t_t: Number.parseFloat($(e).attr('data-tt')),
  478. t_rh: Number.parseFloat($(e).attr('data-trh')),
  479. t_site: $(e).attr('data-site'),
  480. }
  481. sensors.push(t)
  482. }
  483. })
  484. console.log(sensors)
  485. if (sensors.length == 0) {
  486. layui.layer.msg('没有选中要删除的记录哦!')
  487. return
  488. }
  489. layui.layer.confirm(`是否删除选中${sensors.length}条记录`, {title: '删除记录'}, function (index) {
  490. $.ajax({
  491. type: "POST",
  492. url: '/Data/Device_Sensor_List_Delete',
  493. data: JSON.stringify(sensors),
  494. cookie: $.cookie("User_tokey"),
  495. contentType: 'application/json;charset=utf-8',
  496. success: function (rlt) {
  497. if (rlt.Code == 200) {
  498. layui.layer.msg(`删除${sensors.length}条数据成功!`)
  499. get_DeviceSensor_data(0)
  500. } else {
  501. layui.layer.msg(rlt.Msg)
  502. }
  503. }
  504. })
  505. layui.layer.close(index);
  506. });
  507. }
  508. //删除选择时间范围
  509. function deleteSelectTime() {
  510. // 获取选择的行
  511. console.log("删除选中事件范围")
  512. const Time_start = $("#Time_start").val();
  513. const Time_end = $("#Time_end").val();
  514. console.log("删除选中事件范围", Time_start, Time_end)
  515. let checkboxes = $('.checkboxxx');
  516. let querys = {
  517. t_sn: [],
  518. t_id: [],
  519. time_start:Time_start,
  520. time_end:Time_end,
  521. };
  522. checkboxes.each(function () {
  523. if ($(this).is(':checked')) {
  524. const checkboxValue = $(this).val();
  525. const values = checkboxValue.split(',');
  526. const sn = values[0];
  527. const id = values[1];
  528. console.log(sn, id);
  529. querys.t_sn.push(sn);
  530. querys.t_id.push(id);
  531. }
  532. });
  533. if (querys.length === 0) {
  534. layui.layer.msg('没有选中要删除的记录哦!')
  535. }else {
  536. layui.layer.confirm(`是否删除选中时间: ${Time_start}-------${Time_end} 的数据`, function (index) {
  537. $.ajax({
  538. type: "POST",
  539. url: `/Data/Device_Sensor_List_Delete_Time`,
  540. data: JSON.stringify(querys),
  541. contentType: 'application/json;charset=utf-8',
  542. success: function (res) {
  543. console.log(res.Code)
  544. if (res.Code === 200) {
  545. layui.layer.msg(`成功删除 ${res.Data} 条数据`);
  546. get_DeviceSensor_data(0);
  547. } else {
  548. layui.layer.msg(res.Msg);
  549. }
  550. }
  551. });
  552. layui.layer.close(index);
  553. });
  554. }
  555. }
  556. //删除当前行,当当前行按钮被点击后
  557. function deleteOne(e) {
  558. e = $(e).parent().prevAll()
  559. e = e[e.length - 1]
  560. e = $(e).children()[0]
  561. // console.log(e, "==============")
  562. let t = {
  563. t_sn: $(e).attr('data-sn'),
  564. t_id: Number.parseInt($(e).attr('data-id')),
  565. create_time: ($(e).attr('data-createtime')),
  566. t_t: Number.parseFloat($(e).attr('data-tt')),
  567. t_rh: Number.parseFloat($(e).attr('data-trh')),
  568. t_site: $(e).attr('data-site'),
  569. }
  570. layui.layer.confirm(`是否删除选中 sn: ${t.t_sn} 1 条记录`, {title: '删除记录'}, function (index) {
  571. $.ajax({
  572. type: "POST",
  573. url: '/Data/Device_Sensor_List_Delete',
  574. data: JSON.stringify([t]),
  575. contentType: 'application/json;charset=utf-8',
  576. success: function (rlt) {
  577. if (rlt.Code == 200) {
  578. layui.layer.msg(`删除1条数据成功!`)
  579. get_DeviceSensor_data(0)
  580. } else {
  581. layui.layer.msg(rlt.Msg)
  582. }
  583. }
  584. })
  585. layui.layer.close(index);
  586. });
  587. }
  588. function Add_DeviceSensor_list(DS_lite) {
  589. for (let i = 0; i < DS_lite.length; i++) {
  590. if (T_id == 0) {
  591. T_id = DS_lite[i].T_id;
  592. T_sn_T_id = DS_lite[i].T_sn;
  593. get_DeviceSensor_data(0)
  594. }
  595. $('#DeviceSensor_list').append("" +
  596. "<div class=\"layui-col ChangeDiv\" onclick=\"ChangeDiv(this);T_id = " + DS_lite[i].T_id + ";T_sn_T_id = '" + DS_lite[i].T_sn + "';\" \n" +
  597. " style=\"border: 1px solid #ffffff;height: 52px;background-color: #fafafa;border-radius:5px;padding-top: 2px;margin-top: 6px;\">\n" +
  598. " <input type=\"checkbox\" id='sn_id_" + DS_lite[i].T_sn + "_" + DS_lite[i].T_id + "' name='checkboxxx' class='checkboxxx' value='" + DS_lite[i].T_sn + "," + DS_lite[i].T_id + "' style='float: left;width: 18px;height: 18px;margin-top: 16px;margin-left: 10px;'/>" +
  599. "<img style=\"float: left;width: 50px;margin: 0px 10px\" src=\"/static/images/温湿度传感器-1.png\"\n" +
  600. " height=\"50\"\n" +
  601. " width=\"40\"/>\n" +
  602. " <div style=\"float: left;\">\n" +
  603. " <div style=\"margin-top: 4px;font-size: 14px;height: 24px;\">" + DS_lite[i].T_name + "</div>\n" +
  604. " <div style=\"margin-top: -3px;font-size: 12px\">SN:" + DS_lite[i].T_sn + " [" + DS_lite[i].T_id + "]</div>\n" +
  605. " </div>\n" +
  606. " <div class=\"layui-card-header\"\n" +
  607. " style=\"float: right;padding-left: 0px;padding-top: 6px;color: #1E9FFF\">\n" +
  608. " \n" +
  609. " </div>\n" +
  610. " </div>")
  611. }
  612. }
  613. $('#perPageSelect').on('change', function () {
  614. let itemsPerPage = $(this).val();
  615. get_DeviceSensor_data(0, itemsPerPage); // 调用获取数据函数,传入新的每页条数
  616. });
  617. // 如果是输入框,则可能需要验证用户输入并做相应的处理
  618. $('#perPageInput').on('input', function () {
  619. let itemsPerPage = parseInt($(this).val());
  620. if (!isNaN(itemsPerPage)) {
  621. get_DeviceSensor_data(0, itemsPerPage);
  622. } else {
  623. alert('请输入有效的数字!');
  624. $(this).val('10'); // 重置为默认值
  625. }
  626. });
  627. function get_DeviceSensor_data(page, itemsPerPage) {
  628. if ($("#Time_start").val().length > 0) {
  629. Time_start = $("#Time_start").val();
  630. } else {
  631. Time_start = ""
  632. }
  633. if ($("#Time_end").val().length > 0) {
  634. Time_end = $("#Time_end").val();
  635. } else {
  636. Time_end = ""
  637. }
  638. Checkboxs_GetAll()
  639. var loading = layer.load(0, {
  640. shade: false,
  641. time: 99 * 1000
  642. });
  643. $.ajax({
  644. type: 'POST',
  645. url: 'Device_Sensor_Data_More',//发送请求
  646. data: {
  647. User_tokey: $.cookie("User_token"),
  648. Time_start: Time_start,
  649. Time_end: Time_end,
  650. T_snid: DeviceSensor_snid_list,
  651. sort: sort,
  652. page: page,
  653. page_z: itemsPerPage,
  654. },
  655. success: function (result) {
  656. layer.close(loading)
  657. if (result.Code == 200) {
  658. $('#DeviceSensor_data').html("")
  659. $('#DeviceSensor_data_Pages').html("")
  660. $('#DeviceSensor_data_Pages_x').html("")
  661. if (result.Data != null) {
  662. DeviceSensor_data = result.Data.list
  663. }
  664. if (DeviceSensor_data.length == 0) {
  665. $('#DeviceSensor_data').html("<div style=\"color: #1E9FFF;text-align: center;font-size: 15px;margin-top: 150px\">没有数据</div>")
  666. return
  667. }
  668. addDeviceSensorData(result.Data.list)
  669. addDeviceSensorDataPage(result.Data, itemsPerPage)
  670. } else {
  671. }
  672. }
  673. });
  674. return false
  675. }
  676. function f_Device_Sensor_Data_Pu_data(Sn, tap, num, id) {
  677. $.ajax({
  678. type: 'POST',
  679. url: 'Device_Sensor_Data_Pu_data',//发送请求
  680. data: {
  681. Sn: Sn,
  682. tap: tap,
  683. num: num,
  684. id: id,
  685. },
  686. success: function (result) {
  687. if (result.Code != 200) {
  688. layer.msg(result.Msg);
  689. }
  690. }
  691. });
  692. }
  693. function f_Device_Sensor_Data_Del_data(Sn, id) {
  694. $.ajax({
  695. type: 'POST',
  696. url: 'Device_Sensor_Data_Del_data',//发送请求
  697. data: {
  698. Sn: Sn,
  699. id: id,
  700. },
  701. success: function (result) {
  702. if (result.Code != 200) {
  703. layer.msg(result.Msg);
  704. }
  705. get_DeviceSensor_data(0)
  706. }
  707. });
  708. }
  709. function ShowElement(element) {
  710. var oldhtml = element.innerHTML;
  711. var newobj = document.createElement('input');
  712. //创建新的input元素
  713. newobj.type = 'text';
  714. //为新增元素添加类型
  715. console.log(oldhtml)
  716. console.log(element.dataset.th)
  717. console.log(element.dataset.sn)
  718. console.log(element.dataset.id)
  719. newobj.value = oldhtml
  720. newobj.onblur = function () {
  721. console.log(this.value)
  722. element.innerHTML = this.value ? this.value : oldhtml;
  723. if (element.dataset.th == 1) {
  724. f_Device_Sensor_Data_Pu_data(element.dataset.sn, "t_t", this.value, element.dataset.id)
  725. } else {
  726. f_Device_Sensor_Data_Pu_data(element.dataset.sn, "t_rh", this.value, element.dataset.id)
  727. }
  728. //当触发时判断新增元素值是否为空,为空则不修改,并返回原有值
  729. }
  730. element.innerHTML = '';
  731. element.appendChild(newobj);
  732. newobj.focus();
  733. }
  734. //分页添加
  735. function addDeviceSensorDataPage(pageInfo, itemsPerPage) {
  736. let start, end
  737. start = pageInfo.currentPage - 5 < 1 ? 1 : pageInfo.currentPage - 5
  738. end = pageInfo.currentPage + 5 > pageInfo.totalPage ? pageInfo.totalPage : pageInfo.currentPage + 5
  739. end = end + Math.abs(end - start - 10) > pageInfo.totalPage ? pageInfo.totalPage : end + Math.abs(end - start - 10)
  740. $('#pageTool').html('')
  741. $('#pageTool').append(`<span style="padding: 0 10px;color: #0bace6">共${pageInfo.totalPage}页 / 当前${pageInfo.currentPage}页 共${pageInfo.totalCount}条数据</span>`)
  742. //上一页
  743. if (pageInfo.previousPage) {
  744. $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-sm" onclick="get_DeviceSensor_data(${pageInfo.currentPage - 1},${itemsPerPage})">上一页</button>`)
  745. } else {
  746. $('#pageTool').append(`<button class="layui-btn layui-btn-disabled layui-btn-primary layui-btn-sm">上一页</button>`)
  747. }
  748. //页码
  749. for (; start <= end; start++) {
  750. if (start == pageInfo.currentPage) {
  751. $('#pageTool').append(`<button class="layui-btn layui-btn-disabled layui-btn-primary layui-btn-sm">${start}</button>`)
  752. } else {
  753. $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-sm" onclick="get_DeviceSensor_data(${start},${itemsPerPage})">${start}</button>`)
  754. }
  755. }
  756. //下一页
  757. if (pageInfo.nextPage) {
  758. $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-sm" onclick="get_DeviceSensor_data(${pageInfo.currentPage + 1},${itemsPerPage})">下一页</button>`)
  759. } else {
  760. $('#pageTool').append(`<button class="layui-btn layui-btn-disabled layui-btn-primary layui-btn-sm">下一页</button>`)
  761. }
  762. }
  763. //添加设备数据
  764. function addDeviceSensorData(list) {
  765. let style
  766. for (let v of list) {
  767. if (v.t_t < v.t_tl || v.t_rh < v.t_rhl) {
  768. style = 'style="background-color: #a8f7ff'
  769. }
  770. if (v.t_t > v.t_tu || v.t_rh > v.t_rhu) {
  771. style = 'style="background-color: #ff8585'
  772. }
  773. $('#DeviceSensor_data').append(`
  774. <tr>
  775. <td><input type="checkbox" class="layui-form-checkbox" data-sn="${v.t_sn}" data-sp="${v.t_sp}" data-id="${v.t_id}" data-tt="${v.t_t}" data-trh="${v.t_rh}" data-site="${v.t_site}" data-createTime="${v.create_time}"/></td>
  776. <td ondblclick="changeData(this)" data-type="t_time">${v.t_time}</td>
  777. <td ondblclick="changeData(this)" data-type="t_t">${v.t_t}</td>
  778. <td ondblclick="changeData(this)" data-type="t_rh">${v.t_rh}</td>
  779. <td ondblclick="changeData(this)" data-type="t__tlower">${v.t_tl}~${v.t_tu}|${v.t_rhl}~${v.t_rhu}</td>
  780. <td ondblclick="changeData(this)" data-type="t_site">${v.t_site}</td>
  781. <td ondblclick="changeData(this)" data-type="create_time">${v.create_time}</td>
  782. <td>
  783. <button class="layui-btn layui-btn-danger layui-btn-sm" onclick="deleteOne(this)">删除</button>
  784. <button class="layui-btn layui-bg-blue layui-btn-sm" onclick="copyAndAdds(this, '${v.t_sn}', ${v.t_id}, ${v.t_t}, ${v.t_rh}, '${v.t_site}', '${v.create_time}')">复制添加</button>
  785. </td>
  786. </tr>
  787. `)
  788. /*
  789. <button class="layui-btn layui-btn-normal layui-btn-sm" onclick="showRecord(this)">记录</button>
  790. */
  791. }
  792. }
  793. // 新增copyAndAdd函数实现复制并添加新行
  794. function copyAndAdds(button, t_sn, t_id, t_t, t_rh, t_site, create_time) {
  795. // 准备发送给后端的数据对象
  796. let dataToSend = {
  797. t_sn: t_sn,
  798. t_id: t_id,
  799. t_t: t_t,
  800. t_rh: t_rh,
  801. t_site: t_site,
  802. createTime: create_time
  803. };
  804. // 提交数据到后端
  805. $.ajax({
  806. url: '/Device/Device_Copy', // 替换为你的后端接口地址
  807. type: 'POST',
  808. contentType: 'application/json',
  809. data: JSON.stringify(dataToSend),
  810. success: function (response) {
  811. console.log("数据提交成功,响应:", response.Data);
  812. // 假设后端返回了新行ID或者其他需要的数据,这里可以根据需要处理response
  813. let newRowId = response.id; // 假设后端返回了新行的唯一ID
  814. // 根据后端返回的数据(如果有的话)来构造新行的HTML
  815. let newRowHtml = `
  816. <tr class="new-row" data-id="${response.id}" style="background-color: #f0f8ff; border-left: 4px solid #007bff;">
  817. <td>
  818. <input
  819. type="checkbox"
  820. class="layui-form-checkbox"
  821. data-sn="${response.Data.t_sn}"
  822. data-id="${response.Data.t_id}"
  823. data-tt="${response.Data.t_t}"
  824. data-trh="${response.Data.t_rh}"
  825. data-site="${response.Data.t_site}"
  826. data-createTime="${response.Data.createTime}"
  827. />
  828. </td>
  829. <td ondblclick="changeData(this)" data-type="t_time" style="color: #007bff;">${response.Data.createTime}</td>
  830. <td ondblclick="changeData(this)" data-type="t_t" style="color: #007bff;">${response.Data.t_t}</td>
  831. <td ondblclick="changeData(this)" data-type="t_rh" style="color: #007bff;">${response.Data.t_rh}</td>
  832. <td ondblclick="changeData(this)" data-type="t_site" style="color: #007bff;">${response.Data.t_site}</td>
  833. <td ondblclick="changeData(this)" data-type="create_time" style="color: #007bff;">${response.Data.createTime}</td>
  834. <td>
  835. <button class="layui-btn layui-btn-danger layui-btn-sm" onclick="deleteOne(this)">删除</button>
  836. <button class="layui-btn layui-bg-blue layui-btn-sm" onclick="copyAndAdds(this, '${t_sn}', ${t_id}, ${t_t}, ${t_rh}, '${t_site}', '${create_time}')">复制添加</button>
  837. <!-- 注意:此处可能不需要再提供复制添加按钮,因为数据已持久化 -->
  838. </td>
  839. </tr>
  840. `;
  841. // 在当前行的下一行兄弟元素(下一行)之前插入新行
  842. $(button).closest('tr').after(newRowHtml);
  843. // window.location.reload()
  844. // 这里可以添加成功后的其他操作,如提示用户、更新界面等
  845. },
  846. error: function (jqXHR, textStatus, errorThrown) {
  847. console.error("数据提交失败:", textStatus, errorThrown);
  848. // 处理错误情况,比如提示用户
  849. alert("数据提交失败,请重试!");
  850. }
  851. });
  852. }
  853. function showRecord(e) {
  854. e = $(e).parent().prevAll()
  855. e = e[e.length - 1]
  856. e = $(e).children()[0]
  857. console.log(e)
  858. $.ajax({
  859. type: "post",
  860. url: "/Data/Device_Sensor_Record",
  861. data: {
  862. sn: $(e).attr('data-sn'),
  863. tId: $(e).attr('data-id'),
  864. createTime: $(e).attr('data-createTime')
  865. },
  866. success: function (rlt) {
  867. if (rlt.Code === 200) {
  868. if (rlt.Data == null) {
  869. layui.layer.msg("没有数据!")
  870. return
  871. }
  872. for (let v of rlt.Data) {
  873. $('#tableBody').append(`
  874. <tr>
  875. <td>${v.t_t}</td>
  876. <td>${v.t_rh}</td>
  877. <td>${v.t_site}</td>
  878. <td>${v.t_uuid}</tdj>
  879. <td>${v.create_time}</td>
  880. <td>
  881. <button class="layui-btn layui-btn-normal" onclick="">更新</button>
  882. </td>
  883. </tr>
  884. `)
  885. }
  886. layui.layer.open({
  887. type: 1,
  888. area: ['1200px', '800px'],
  889. content: $('#recordShow'),
  890. isOutAnim: true
  891. })
  892. }
  893. }
  894. })
  895. }
  896. //双击表格改变值
  897. function changeData(even) {
  898. let e = $(even).prevAll()
  899. console.log(e)
  900. e = $(e[e.length - 1]).children()[0]
  901. // console.log(e)
  902. let t = {
  903. t_sn: $(e).attr('data-sn'),
  904. t_sp: $(e).attr('data-sp'),
  905. t_id: Number.parseInt($(e).attr('data-id')),
  906. create_time: ($(e).attr('data-createtime')),
  907. t_t: Number.parseFloat($(e).attr('data-tt')),
  908. t_rh: Number.parseFloat($(e).attr('data-trh')),
  909. t_site: $(e).attr('data-site'),
  910. }
  911. // console.log(t)
  912. let type = $(even).attr('data-type')
  913. // console.log(t,"============修改值==================")
  914. let input = $(`<input class="layui-input" type="text" value="${even.innerText}">`)
  915. input[0].onblur = function () {
  916. t["type"] = type
  917. t["value"] = $(this).val()
  918. t["User_tokey"] = $.cookie("User_tokey")
  919. if (t[type] == t.value) {
  920. } else {
  921. $.ajax({
  922. type: "POST",
  923. url: "/Data/Device_Sensor_Update",
  924. data: t,
  925. cookie: $.cookie("User_token"),
  926. success: function (rlt) {
  927. console.log(rlt)
  928. if (rlt.Code===200){
  929. layui.layer.msg('修改成功')
  930. get_DeviceSensor_data(0)
  931. }else {
  932. layui.layer.msg(rlt.Msg)
  933. }
  934. }
  935. })
  936. }
  937. // console.log(t)
  938. even.innerHTML = this.value
  939. $(e).attr(`data-${type}`, $(this).val())
  940. }
  941. $(even).html('')
  942. $(even).append(input)
  943. input.focus()
  944. }
  945. //点击上传按钮
  946. layui.use('upload', function () {
  947. let upload = layui.upload;
  948. //执行实例
  949. let uploadInst = upload.render({
  950. elem: '#importData',
  951. url: '/Data/importData' //上传接口
  952. , accept: 'file',
  953. data: {
  954. User_tokey: $.cookie("User_tokey"),
  955. }
  956. , field: 'file'
  957. , done: function (res) {
  958. layui.layer.msg(res.Msg)
  959. // layui.layer.close(index)
  960. }
  961. , error: function () {
  962. //请求异常回调
  963. layui.layer.msg('上传错误!')
  964. }
  965. })
  966. })
  967. //导出数据
  968. function exportData() {
  969. if ($("#Time_start").val().length > 0) {
  970. Time_start = $("#Time_start").val();
  971. } else {
  972. Time_start = ""
  973. }
  974. if ($("#Time_end").val().length > 0) {
  975. Time_end = $("#Time_end").val();
  976. } else {
  977. Time_end = ""
  978. }
  979. let checkboxes = $('.checkboxxx');
  980. checkboxes.each(function () {
  981. if ($(this).is(':checked')) {
  982. var checkboxValue = $(this).val();
  983. var values = checkboxValue.split(',');
  984. var sn = values[0];
  985. var id = values[1];
  986. console.log(checkboxValue);
  987. if (checkboxValue) {
  988. $.ajax({
  989. type: "post",
  990. url: "/Data/EXportData",
  991. data: {
  992. T_snid: checkboxValue,
  993. Time_start: Time_start,
  994. Time_end: Time_end,
  995. },
  996. success: function (rlt) {
  997. console.log(rlt);
  998. if (rlt.Code === 200) {
  999. let link = document.createElement('a');
  1000. link.href = rlt.Data;
  1001. link.click(); // 触发点击事件以开始下载
  1002. link.remove();
  1003. }
  1004. }
  1005. });
  1006. }
  1007. }
  1008. });
  1009. if (!checkboxes.is(':checked')) {
  1010. layui.layer.msg("请选择导出项");
  1011. }
  1012. }
  1013. function Add_DeviceSensor_data(DS_lite) {
  1014. console.log(DS_lite)
  1015. for (let i = 0; i < DS_lite.length; i++) {
  1016. style_s = ""
  1017. if (DS_lite[i].T_t < DS_lite[i].T_Tlower || DS_lite[i].T_rh < DS_lite[i].T_RHlower) {
  1018. style_s = " style='background-color: #a8f7ff' "
  1019. }
  1020. if (DS_lite[i].T_t > DS_lite[i].T_Tupper || DS_lite[i].T_rh > DS_lite[i].T_RHupper) {
  1021. style_s = " style='background-color: #ff8585' "
  1022. }
  1023. $('#DeviceSensor_data').append("" +
  1024. "<tr " + style_s + ">\n" +
  1025. // " <td>"+DS_lite[i].T_sn+"</td>\n" +
  1026. " <td>" + DS_lite[i].T_name + " [" + DS_lite[i].T_id + "]</td>\n" +
  1027. " <td ondblclick=\"ShowElement(this)\" data-th=1 data-sn=\"" + DS_lite[i].T_sn + "\" data-id=" + DS_lite[i].T_id + " >" + DS_lite[i].T_t + "</td>\n" +
  1028. " <td ondblclick=\"ShowElement(this)\" data-th=2 data-sn=\"" + DS_lite[i].T_sn + "\" data-id=" + DS_lite[i].T_id + " >" + DS_lite[i].T_rh + "</td>\n" +
  1029. " <td>" + DS_lite[i].T_tl + "~" + DS_lite[i].T_tu + "</td>\n" +
  1030. " <td>" + DS_lite[i].T_rhl + "~" + DS_lite[i].T_rhu + "</td>\n" +
  1031. " <td>" + DS_lite[i].T_time + "</td>\n" +
  1032. " <td> <span class='layui-btn layui-btn-danger' onclick='f_Device_Sensor_Data_Del_data(\"" + DS_lite[i].T_sn + "\"," + DS_lite[i].ID + ")'>删除</span>" + `<span class='layui-btn layui-btn-normal'>记录</span>` + "</td>\n" +
  1033. "</tr>")
  1034. }
  1035. }
  1036. function Add_DeviceSensor_data_Pages(Pages) {
  1037. for (let i = 0; i < Pages.length; i++) {
  1038. elem = Pages[i]
  1039. switch (elem.A) {
  1040. case 1:
  1041. $('#DeviceSensor_data_Pages').append("<a class=\"prev\" onclick='get_DeviceSensor_data(" + elem.V + ")' >&lt;&lt;</a>\n");
  1042. break;
  1043. case 2:
  1044. $('#DeviceSensor_data_Pages').append("<a class=\"num\" onclick='get_DeviceSensor_data(" + elem.V + ")' >" + elem.V + "</a>\n");
  1045. break;
  1046. case 3:
  1047. $('#DeviceSensor_data_Pages').append("<span class=\"current\">" + elem.V + "</span>\n");
  1048. break;
  1049. case 4:
  1050. $('#DeviceSensor_data_Pages').append("<a class=\"num\" onclick='get_DeviceSensor_data(" + elem.V + ")' >" + elem.V + "</a>\n");
  1051. break;
  1052. case 5:
  1053. $('#DeviceSensor_data_Pages').append("<a class=\"next\" onclick='get_DeviceSensor_data(" + elem.V + ")' >&gt;&gt;</a>\n");
  1054. break;
  1055. }
  1056. }
  1057. }
  1058. function get_DeviceSensor_Excel() {
  1059. if ($("#Time_start").val().length > 0) {
  1060. Time_start = $("#Time_start").val();
  1061. } else {
  1062. Time_start = ""
  1063. }
  1064. if ($("#Time_end").val().length > 0) {
  1065. Time_end = $("#Time_end").val();
  1066. } else {
  1067. Time_end = ""
  1068. }
  1069. Checkboxs_GetAll()
  1070. var loading = layer.load(0, {
  1071. shade: false,
  1072. time: 99 * 1000
  1073. });
  1074. $.ajax({
  1075. type: 'POST',
  1076. url: 'Device_Sensor_Data_Excel',//发送请求
  1077. data: {
  1078. User_tokey: $.cookie("User_tokey"),
  1079. Time_start: Time_start,
  1080. Time_end: Time_end,
  1081. T_snid: DeviceSensor_snid_list,
  1082. },
  1083. success: function (result) {
  1084. console.log(result)
  1085. layer.close(loading)
  1086. if (result.Code != 200) {
  1087. layer.msg(result.Msg);
  1088. return
  1089. }
  1090. window.location.href = result.Data;
  1091. }
  1092. });
  1093. return false
  1094. }
  1095. function F_moban() {
  1096. layer.open({
  1097. title: '导入模版'
  1098. , content: '1、导入模板需先导出然后根据导出模板进行填写导入<hr>' +
  1099. '2、导入文件名为 SN编号,如 2024xxxxxxxxxx.xlsx <hr>'
  1100. });
  1101. }
  1102. </script>
  1103. </html>