DataList.html 49 KB

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