1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225 |
- <!DOCTYPE html>
- <html class="x-admin-sm">
- <head>
- <meta charset="UTF-8">
- <meta name="renderer" content="webkit">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <meta name="viewport"
- content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>
- <link rel="shortcut icon" href="/static/favicon.ico">
- <link rel="bookmark" href="/static/favicon.ico">
- <link rel="stylesheet" href="/static/css/font.css">
- <link rel="stylesheet" href="/static/css/xadmin.css">
- <script src="/static/js/jquery.min.js"></script>
- <script src="/static/js/jquery.cookie.min.js"></script>
- <script src="/static/lib/layui/layui.js" charset="utf-8"></script>
- <script type="text/javascript" src="/static/js/xadmin.js"></script>
- </head>
- <body>
- <div class="x-nav">
- <span class="layui-breadcrumb">
- <a href="">首页</a>
- <a><cite>数据展示</cite></a>
- </span>
- <a class="layui-btn layui-btn-normal" style="line-height:1.6em;margin-top:3px;float:right"
- onclick="location.reload()" title="刷新">
- <i class="layui-icon layui-icon-refresh" style="line-height:30px"></i>
- </a>
- </div>
- <div class="layui-fluid">
- <div class="layui-row" style="display: flex;">
- <!-- 传感器 选择 start-->
- <div style="width: 340px">
- <div class="layui-card">
- <div class="layui-card-body ">
- <form class="layui-form layui-col-space5" οnsubmit="return false;">
- <div class="layui-input-inline layui-show-xs-block">
- <input value="" type="text" id="D_T_sn" name="D_T_sn" placeholder="请输入 SN"
- autocomplete="off"
- class="layui-input"></div>
- <div class="layui-input-inline layui-show-xs-block">
- <input value="" type="text" id="D_Name" name="D_Name" placeholder="请输入 传感器名称"
- autocomplete="off"
- class="layui-input"></div>
- <div class="layui-input-inline layui-show-xs-block" style="width: 168px">
- <select id="Class_1" name="Class_1">
- <option value=0>所有分类</option>
- {{range $index, $elem := .Class_List}}
- <option value={{$elem.Id}}>{{$elem.T_name}}</option>
- {{end}}
- </select>
- </div>
- <div class="layui-input-inline layui-show-xs-block">
- <div class="layui-btn layui-btn-normal"
- onclick="get_DeviceSensor_list(0)">
- <i class="layui-icon"></i></div>
- </div>
- </form>
- <hr>
- </div>
- <div class="layui-card-body " style="margin-top: -20px">
- <div id="DeviceSensor_list" style="width: 98%; overflow: hidden;max-height: 616px;overflow-y: auto">
- <div style="color: #1E9FFF;text-align: center;font-size: 15px;margin-top: 150px">加载中...</div>
- </div>
- </div>
- <div class="layui-card-body ">
- <div style="height: 70px">
- <div class="layui-card-body " style="text-align: center">
- <div class="layui-input-inline layui-show-xs-block">
- <div class="layui-btn layui-btn-normal"
- onclick="Checkboxs_All()">
- <i class="layui-icon">全选择</i>
- </div>
- </div>
- <div class="layui-input-inline layui-show-xs-block">
- <div class="layui-btn layui-btn-normal"
- onclick="Checkboxs_Allno()">
- <i class="layui-icon">全取消</i>
- </div>
- </div>
- <div class="layui-input-inline layui-show-xs-block">
- <div class="layui-btn layui-btn-normal"
- onclick="Checkboxs_Allto()">
- <i class="layui-icon">反选</i>
- </div>
- </div>
- <div style="color: #1E9FFF;text-align: center" id="DeviceSensor_list_Pages_x"></div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <!-- 传感器 选择 end-->
- <div style="padding-left: 15px; height: 100%;flex:1;">
- <div class="layui-card">
- <!-- 传感器数据时间选择 选择 start-->
- <div class="layui-card-body ">
- <div class="layui-form layui-col-space5" οnsubmit="return false;">
- <div class="layui-input-inline layui-show-xs-block">
- <div class="layui-btn layui-btn-normal"
- onclick="quick_1()">
- <i class="layui-icon">今天</i>
- </div>
- </div>
- <div class="layui-input-inline layui-show-xs-block">
- <div class="layui-btn layui-btn-normal"
- onclick="quick_2()">
- <i class="layui-icon">近一周</i>
- </div>
- </div>
- <div class="layui-input-inline layui-show-xs-block">
- <div class="layui-btn layui-btn-normal"
- onclick="quick_3()">
- <i class="layui-icon">近一月</i>
- </div>
- </div>
- <div class="layui-input-inline layui-show-xs-block">
- <div class="layui-btn layui-btn-normal"
- onclick="quick_4()">
- <i class="layui-icon">近一季度</i>
- </div>
- </div>
- <div class="layui-input-inline layui-show-xs-block">
- 自定义时间:
- </div>
- <div class="layui-inline layui-show-xs-block">
- <input class="layui-input" autocomplete="off" placeholder="开始日" name="Time_start"
- id="Time_start" lay-key="1"></div>
- <div class="layui-inline layui-show-xs-block">
- <input class="layui-input" autocomplete="off" placeholder="截止日" name="Time_end"
- id="Time_end" lay-key="2"></div>
- <div class="layui-input-inline layui-show-xs-block">
- <div class="layui-btn layui-btn-normal"
- onclick="get_DeviceSensor_data(0)">
- <i class="layui-icon"></i></div>
- </div>
- <div class="layui-input-inline layui-show-xs-block" style="float: right">
- <button class="layui-btn layui-btn-normal" id="importData">导入数据</button>
- <button class="layui-btn layui-btn-normal" id="exportData" onclick="exportData()">导出数据
- </button>
- <button class="layui-btn layui-btn-normal" onclick="F_moban()">导入模板说明</button>
- </div>
- </div>
- <hr>
- <div>
- <button class="layui-btn layui-btn-normal" onclick="selectAll()">全选</button>
- <button class="layui-btn layui-btn-normal" onclick="reverseSelect()">反选</button>
- <button class="layui-btn layui-btn-normal" onclick="noSelect()">全不选</button>
- <button class="layui-btn layui-btn-danger" onclick="deleteSelect()">删除</button>
- <button class="layui-btn layui-btn-danger" onclick="deleteSelectTime()">删除选择时间范围
- </button>
- </div>
- </div>
- <!-- 传感器数据时间选择 选择 end-->
- <div class="layui-card-body">
- <table class="layui-table ">
- <colgroup>
- <col width="100">
- <col>
- <col>
- <col>
- <col>
- <col>
- <col>
- </colgroup>
- <thead>
- <tr>
- <th>选择</th>
- <th style="width: 120px;">采集时间
- <button type="button" class="layui-btn-primary layui-btn-xs layui-btn-radius sort" onclick="SortButton()">
- <i class="layui-icon layui-icon-up"></i>
- </button>
- <button type="button" class="layui-btn-primary layui-btn-xs layui-btn-radius sort" onclick="SortButton()">
- <i class="layui-icon layui-icon-down"></i>
- </button>
- </th>
- <th>温度℃</th>
- <th>湿度%</th>
- <th>温湿度上下限</th>
- <th>GPS</th>
- <th>录入时间</th>
- <th>操作</th>
- </tr>
- </thead>
- <tbody id="DeviceSensor_data">
- </tbody>
- </table>
- </div>
- <div class="layui-card-body " style="display: flex;justify-content: space-between">
- <!--按钮部分 start-->
- <div>
- <span>每页显示:</span>
- <select id="perPageSelect">
- <option value="10">10条/页</option>
- <option value="100">100条/页</option>
- <option value="300">300条/页</option>
- <option value="500">500条/页</option>
- <option value="800">800条/页</option>
- <option value="1000">1000条/页</option>
- <option value="2000">2000条/页</option>
- <option value="3000">3000条/页</option>
- <option value="4000">4000条/页</option>
- <option value="5000">5000条/页</option>
- </select>
- </div>
- <!--按钮部分 end-->
- <!--分页部分 start-->
- <div id="pageTool">
- </div>
- <!-- <input type="number" id="perPageInput" min="1" value="10">-->
- <!--分页部分 end-->
- </div>
- </div>
- </div>
- </div>
- <!--数据记录展示-->
- <div id="recordShow" style="display: none">
- <table class="layui-table">
- <colgroup>
- <col width="20px">
- <col width="20px">
- <col>
- <col>
- <col>
- <col>
- </colgroup>
- <thead>
- <tr>
- <th>温度</th>
- <th>湿度</th>
- <th>GPS</th>
- <th>操作人</th>
- <th>录入时间</th>
- <th>操作</th>
- </tr>
- </thead>
- <tbody id="recordTableBody"></tbody>
- </table>
- </div>
- </div>
- </body>
- <script>
- let uploadInst
- //获取GET
- function getPar(par) {
- //获取当前URL
- var local_url = document.location.href;
- //获取要取得的get参数位置
- var get = local_url.indexOf(par + "=")
- ;
- if (get == -1) {
- return false;
- }
- //截取字符串
- //截取字符串
- var get_par = local_url.slice(par.length + get + 1);
- //判断截取后的字符串是否还有其他get参数
- var nextPar = get_par.indexOf("&")
- ;
- if (nextPar != -1) {
- get_par = get_par.slice(0, nextPar);
- }
- return get_par;
- }
- function ChangeDiv(e) {
- // var divs = document.getElementsByClassName("ChangeDiv");
- // var len = divs.length;
- // for(var i=0;i<len;i++){
- // divs[i].style.border = "1px solid #ffffff";
- // }
- // e.style.border = "1px solid #ed0000";
- }
- // 今天
- function quick_1() {
- var myDate = new Date();
- y = myDate.getFullYear(); //获取当前年份(2位)
- m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
- d = myDate.getDate(); //获取当前日(1-31)
- console.log(y + "-" + m + "-" + d)
- Time_start = y + "-" + m + "-" + d + " 00:00:00"
- Time_end = y + "-" + m + "-" + d + " 23:59:59"
- $("#Time_start").val(Time_start)
- $("#Time_end").val(Time_end)
- get_DeviceSensor_data(0)
- }
- // 近一周
- function quick_2() {
- var myDate = new Date();
- y = myDate.getFullYear(); //获取当前年份(2位)
- m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
- d = myDate.getDate(); //获取当前日(1-31)
- console.log(y + "-" + m + "-" + d)
- Time_end = y + "-" + m + "-" + d + " 23:59:59"
- $("#Time_end").val(Time_end)
- myDate = myDate.setDate(myDate.getDay() - 6);
- myDate = new Date(myDate);
- y = myDate.getFullYear(); //获取当前年份(2位)
- m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
- d = myDate.getDate(); //获取当前日(1-31)
- Time_start = y + "-" + m + "-" + d + " 00:00:00"
- $("#Time_start").val(Time_start)
- get_DeviceSensor_data(0)
- }
- // 近一月
- function quick_3() {
- var myDate = new Date();
- y = myDate.getFullYear(); //获取当前年份(2位)
- m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
- d = myDate.getDate(); //获取当前日(1-31)
- console.log(y + "-" + m + "-" + d)
- Time_end = y + "-" + m + "-" + d + " 23:59:59"
- $("#Time_end").val(Time_end)
- myDate = myDate.setDate(myDate.getDate() - 30);
- myDate = new Date(myDate);
- y = myDate.getFullYear(); //获取当前年份(2位)
- m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
- d = myDate.getDate(); //获取当前日(1-31)
- Time_start = y + "-" + m + "-" + d + " 00:00:00"
- $("#Time_start").val(Time_start)
- get_DeviceSensor_data(0)
- }
- // 近一季度
- function quick_4() {
- var myDate = new Date();
- y = myDate.getFullYear(); //获取当前年份(2位)
- m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
- d = myDate.getDate(); //获取当前日(1-31)
- console.log(y + "-" + m + "-" + d)
- Time_end = y + "-" + m + "-" + d + " 23:59:59"
- $("#Time_end").val(Time_end)
- myDate = myDate.setDate(myDate.getDate() - 30 * 3);
- myDate = new Date(myDate);
- y = myDate.getFullYear(); //获取当前年份(2位)
- m = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
- d = myDate.getDate(); //获取当前日(1-31)
- Time_start = y + "-" + m + "-" + d + " 00:00:00"
- $("#Time_start").val(Time_start)
- get_DeviceSensor_data(0)
- }
- layui.use(['laydate', 'form', 'element'],
- function () {
- var laydate = layui.laydate;
- //执行一个laydate实例
- laydate.render({
- elem: '#Time_start' //指定元素
- , type: 'datetime'
- });
- //执行一个laydate实例
- laydate.render({
- elem: '#Time_end' //指定元素
- , type: 'datetime'
- });
- var element = layui.element;
- element.length = 30
- });
- var T_name = ""
- var T_sn = ""
- var T_class_id = 0
- var T_id = 0
- var T_sn_T_id = ""
- var Time_start = ""
- var Time_end = ""
- var sort = "DESC"
- var DeviceSensor_lite = []
- var DeviceSensor_data = []
- var DeviceSensor_snid_list = ""
- /// --------------- 传感器列表
- // 页面 加载完成后执行
- window.onload = function () {
- console.log("页面 加载完成后执行")
- quick_1()
- get_DeviceSensor_list(0)
- }
- //获取div中所有的复选框 .value
- var checkboxs = document.getElementsByClassName("checkboxxx");
- function Checkboxs_All() {
- for (var i = 0; i < checkboxs.length; i++) {
- checkboxs[i].checked = true
- }
- }
- function Checkboxs_Allno() {
- for (var i = 0; i < checkboxs.length; i++) {
- checkboxs[i].checked = false
- }
- }
- function Checkboxs_Allto() {
- for (var i = 0; i < checkboxs.length; i++) {
- if (checkboxs[i].checked) {
- checkboxs[i].checked = false
- } else {
- checkboxs[i].checked = true
- }
- }
- }
- function Checkboxs_GetAll() {
- DeviceSensor_snid_list = ""
- for (var i = 0; i < checkboxs.length; i++) {
- if (checkboxs[i].checked) {
- DeviceSensor_snid_list = DeviceSensor_snid_list + checkboxs[i].value + "|"
- }
- }
- }
- function SortButton(){
- sort = sort === "DESC"? "ASC" : "DESC"
- get_DeviceSensor_data(0, $('#perPageSelect').val())
- }
- function get_DeviceSensor_list(page) {
- T_sn = $("#D_T_sn").val();
- T_name = $("#D_Name").val();
- T_class_id = $("#Class_1").val();
- $.ajax({
- type: 'POST',
- url: '/Data/Device_Sensor_List',//发送请求
- data: {
- User_tokey: $.cookie("User_tokey"),
- T_sn: T_sn,
- T_name: T_name,
- T_class_id: parseInt(T_class_id),
- page: page,
- page_z: 1000,
- },
- success: function (result) {
- console.log(result)
- if (result.Code == 200) {
- if (page == 0)
- $('#DeviceSensor_list').html("")
- // $('#DeviceSensor_list_Pages').html("")
- // $('#DeviceSensor_list_Pages_x').html("")
- DeviceSensor_lite = result.Data.DeviceSensor_lite
- if (DeviceSensor_lite.length == 0) {
- $('#DeviceSensor_list').html("<div style=\"color: #1E9FFF;text-align: center;font-size: 15px;margin-top: 150px\">没有设备</div>")
- return
- }
- Add_DeviceSensor_list(result.Data.DeviceSensor_lite) // 列表
- // Add_DeviceSensor_list_Pages(result.Data.Pages) // 分页
- $('#DeviceSensor_list_Pages_x').html(" 传感器 总数:" + result.Data.Num);
- if (result.Data.Page_size > result.Data.Page) {
- get_DeviceSensor_list(result.Data.Page + 1)
- }
- } else {
- }
- }
- });
- return false
- }
- //选择所有选择框
- let sensors = []
- function selectAll() {
- sensors = []
- $('#DeviceSensor_data > tr > td > input[type="checkbox"]').each((i, e) => {
- $(e).prop('checked', true)
- })
- }
- //反选
- function reverseSelect() {
- sensors = []
- $('#DeviceSensor_data > tr > td > input[type="checkbox"]').each((i, e) => {
- $(e).prop('checked', !$(e).prop('checked'))
- })
- }
- //全不选
- function noSelect() {
- sensors = []
- $('#DeviceSensor_data > tr > td > input[type="checkbox"]').each((i, e) => {
- $(e).prop('checked', false)
- })
- }
- //删除所选择的内容
- function deleteSelect() {
- //获取选择的行
- sensors = []
- $('#DeviceSensor_data > tr > td > input[type="checkbox"]').each((i, e) => {
- if ($(e).prop('checked')) {
- let t = {
- t_sn: $(e).attr('data-sn'),
- t_id: Number.parseInt($(e).attr('data-id')),
- create_time: ($(e).attr('data-createtime')),
- t_t: Number.parseFloat($(e).attr('data-tt')),
- t_rh: Number.parseFloat($(e).attr('data-trh')),
- t_site: $(e).attr('data-site'),
- }
- sensors.push(t)
- }
- })
- console.log(sensors)
- if (sensors.length == 0) {
- layui.layer.msg('没有选中要删除的记录哦!')
- return
- }
- layui.layer.confirm(`是否删除选中${sensors.length}条记录`, {title: '删除记录'}, function (index) {
- $.ajax({
- type: "POST",
- url: '/Data/Device_Sensor_List_Delete',
- data: JSON.stringify(sensors),
- cookie: $.cookie("User_tokey"),
- contentType: 'application/json;charset=utf-8',
- success: function (rlt) {
- if (rlt.Code == 200) {
- layui.layer.msg(`删除${sensors.length}条数据成功!`)
- get_DeviceSensor_data(0)
- } else {
- layui.layer.msg(rlt.Msg)
- }
- }
- })
- layui.layer.close(index);
- });
- }
- //删除选择时间范围
- function deleteSelectTime() {
- // 获取选择的行
- console.log("删除选中事件范围")
- const Time_start = $("#Time_start").val();
- const Time_end = $("#Time_end").val();
- console.log("删除选中事件范围", Time_start, Time_end)
- let checkboxes = $('.checkboxxx');
- let querys = {
- t_sn: [],
- t_id: [],
- time_start:Time_start,
- time_end:Time_end,
- };
- checkboxes.each(function () {
- if ($(this).is(':checked')) {
- const checkboxValue = $(this).val();
- const values = checkboxValue.split(',');
- const sn = values[0];
- const id = values[1];
- console.log(sn, id);
- querys.t_sn.push(sn);
- querys.t_id.push(id);
- }
- });
- if (querys.length === 0) {
- layui.layer.msg('没有选中要删除的记录哦!')
- }else {
- layui.layer.confirm(`是否删除选中时间: ${Time_start}-------${Time_end} 的数据`, function (index) {
- $.ajax({
- type: "POST",
- url: `/Data/Device_Sensor_List_Delete_Time`,
- data: JSON.stringify(querys),
- contentType: 'application/json;charset=utf-8',
- success: function (res) {
- console.log(res.Code)
- if (res.Code === 200) {
- layui.layer.msg(`成功删除 ${res.Data} 条数据`);
- get_DeviceSensor_data(0);
- } else {
- layui.layer.msg(res.Msg);
- }
- }
- });
- layui.layer.close(index);
- });
- }
- }
- //删除当前行,当当前行按钮被点击后
- function deleteOne(e) {
- e = $(e).parent().prevAll()
- e = e[e.length - 1]
- e = $(e).children()[0]
- // console.log(e, "==============")
- let t = {
- t_sn: $(e).attr('data-sn'),
- t_id: Number.parseInt($(e).attr('data-id')),
- create_time: ($(e).attr('data-createtime')),
- t_t: Number.parseFloat($(e).attr('data-tt')),
- t_rh: Number.parseFloat($(e).attr('data-trh')),
- t_site: $(e).attr('data-site'),
- }
- layui.layer.confirm(`是否删除选中 sn: ${t.t_sn} 1 条记录`, {title: '删除记录'}, function (index) {
- $.ajax({
- type: "POST",
- url: '/Data/Device_Sensor_List_Delete',
- data: JSON.stringify([t]),
- contentType: 'application/json;charset=utf-8',
- success: function (rlt) {
- if (rlt.Code == 200) {
- layui.layer.msg(`删除1条数据成功!`)
- get_DeviceSensor_data(0)
- } else {
- layui.layer.msg(rlt.Msg)
- }
- }
- })
- layui.layer.close(index);
- });
- }
- function Add_DeviceSensor_list(DS_lite) {
- for (let i = 0; i < DS_lite.length; i++) {
- if (T_id == 0) {
- T_id = DS_lite[i].T_id;
- T_sn_T_id = DS_lite[i].T_sn;
- get_DeviceSensor_data(0)
- }
- $('#DeviceSensor_list').append("" +
- "<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" +
- " style=\"border: 1px solid #ffffff;height: 52px;background-color: #fafafa;border-radius:5px;padding-top: 2px;margin-top: 6px;\">\n" +
- " <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;'/>" +
- "<img style=\"float: left;width: 50px;margin: 0px 10px\" src=\"/static/images/温湿度传感器-1.png\"\n" +
- " height=\"50\"\n" +
- " width=\"40\"/>\n" +
- " <div style=\"float: left;\">\n" +
- " <div style=\"margin-top: 4px;font-size: 14px;height: 24px;\">" + DS_lite[i].T_name + "</div>\n" +
- " <div style=\"margin-top: -3px;font-size: 12px\">SN:" + DS_lite[i].T_sn + " [" + DS_lite[i].T_id + "]</div>\n" +
- " </div>\n" +
- " <div class=\"layui-card-header\"\n" +
- " style=\"float: right;padding-left: 0px;padding-top: 6px;color: #1E9FFF\">\n" +
- " \n" +
- " </div>\n" +
- " </div>")
- }
- }
- $('#perPageSelect').on('change', function () {
- let itemsPerPage = $(this).val();
- get_DeviceSensor_data(0, itemsPerPage); // 调用获取数据函数,传入新的每页条数
- });
- // 如果是输入框,则可能需要验证用户输入并做相应的处理
- $('#perPageInput').on('input', function () {
- let itemsPerPage = parseInt($(this).val());
- if (!isNaN(itemsPerPage)) {
- get_DeviceSensor_data(0, itemsPerPage);
- } else {
- alert('请输入有效的数字!');
- $(this).val('10'); // 重置为默认值
- }
- });
- function get_DeviceSensor_data(page, itemsPerPage) {
- if ($("#Time_start").val().length > 0) {
- Time_start = $("#Time_start").val();
- } else {
- Time_start = ""
- }
- if ($("#Time_end").val().length > 0) {
- Time_end = $("#Time_end").val();
- } else {
- Time_end = ""
- }
- Checkboxs_GetAll()
- var loading = layer.load(0, {
- shade: false,
- time: 99 * 1000
- });
- $.ajax({
- type: 'POST',
- url: 'Device_Sensor_Data_More',//发送请求
- data: {
- User_tokey: $.cookie("User_token"),
- Time_start: Time_start,
- Time_end: Time_end,
- T_snid: DeviceSensor_snid_list,
- sort: sort,
- page: page,
- page_z: itemsPerPage,
- },
- success: function (result) {
- layer.close(loading)
- if (result.Code == 200) {
- $('#DeviceSensor_data').html("")
- $('#DeviceSensor_data_Pages').html("")
- $('#DeviceSensor_data_Pages_x').html("")
- if (result.Data != null) {
- DeviceSensor_data = result.Data.list
- }
- if (DeviceSensor_data.length == 0) {
- $('#DeviceSensor_data').html("<div style=\"color: #1E9FFF;text-align: center;font-size: 15px;margin-top: 150px\">没有数据</div>")
- return
- }
- addDeviceSensorData(result.Data.list)
- addDeviceSensorDataPage(result.Data, itemsPerPage)
- } else {
- }
- }
- });
- return false
- }
- function f_Device_Sensor_Data_Pu_data(Sn, tap, num, id) {
- $.ajax({
- type: 'POST',
- url: 'Device_Sensor_Data_Pu_data',//发送请求
- data: {
- Sn: Sn,
- tap: tap,
- num: num,
- id: id,
- },
- success: function (result) {
- if (result.Code != 200) {
- layer.msg(result.Msg);
- }
- }
- });
- }
- function f_Device_Sensor_Data_Del_data(Sn, id) {
- $.ajax({
- type: 'POST',
- url: 'Device_Sensor_Data_Del_data',//发送请求
- data: {
- Sn: Sn,
- id: id,
- },
- success: function (result) {
- if (result.Code != 200) {
- layer.msg(result.Msg);
- }
- get_DeviceSensor_data(0)
- }
- });
- }
- function ShowElement(element) {
- var oldhtml = element.innerHTML;
- var newobj = document.createElement('input');
- //创建新的input元素
- newobj.type = 'text';
- //为新增元素添加类型
- console.log(oldhtml)
- console.log(element.dataset.th)
- console.log(element.dataset.sn)
- console.log(element.dataset.id)
- newobj.value = oldhtml
- newobj.onblur = function () {
- console.log(this.value)
- element.innerHTML = this.value ? this.value : oldhtml;
- if (element.dataset.th == 1) {
- f_Device_Sensor_Data_Pu_data(element.dataset.sn, "t_t", this.value, element.dataset.id)
- } else {
- f_Device_Sensor_Data_Pu_data(element.dataset.sn, "t_rh", this.value, element.dataset.id)
- }
- //当触发时判断新增元素值是否为空,为空则不修改,并返回原有值
- }
- element.innerHTML = '';
- element.appendChild(newobj);
- newobj.focus();
- }
- //分页添加
- function addDeviceSensorDataPage(pageInfo, itemsPerPage) {
- let start, end
- start = pageInfo.currentPage - 5 < 1 ? 1 : pageInfo.currentPage - 5
- end = pageInfo.currentPage + 5 > pageInfo.totalPage ? pageInfo.totalPage : pageInfo.currentPage + 5
- end = end + Math.abs(end - start - 10) > pageInfo.totalPage ? pageInfo.totalPage : end + Math.abs(end - start - 10)
- $('#pageTool').html('')
- $('#pageTool').append(`<span style="padding: 0 10px;color: #0bace6">共${pageInfo.totalPage}页 / 当前${pageInfo.currentPage}页 共${pageInfo.totalCount}条数据</span>`)
- //上一页
- if (pageInfo.previousPage) {
- $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-sm" onclick="get_DeviceSensor_data(${pageInfo.currentPage - 1},${itemsPerPage})">上一页</button>`)
- } else {
- $('#pageTool').append(`<button class="layui-btn layui-btn-disabled layui-btn-primary layui-btn-sm">上一页</button>`)
- }
- //页码
- for (; start <= end; start++) {
- if (start == pageInfo.currentPage) {
- $('#pageTool').append(`<button class="layui-btn layui-btn-disabled layui-btn-primary layui-btn-sm">${start}</button>`)
- } else {
- $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-sm" onclick="get_DeviceSensor_data(${start},${itemsPerPage})">${start}</button>`)
- }
- }
- //下一页
- if (pageInfo.nextPage) {
- $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-sm" onclick="get_DeviceSensor_data(${pageInfo.currentPage + 1},${itemsPerPage})">下一页</button>`)
- } else {
- $('#pageTool').append(`<button class="layui-btn layui-btn-disabled layui-btn-primary layui-btn-sm">下一页</button>`)
- }
- }
- //添加设备数据
- function addDeviceSensorData(list) {
- let style
- for (let v of list) {
- if (v.t_t < v.t_tl || v.t_rh < v.t_rhl) {
- style = 'style="background-color: #a8f7ff'
- }
- if (v.t_t > v.t_tu || v.t_rh > v.t_rhu) {
- style = 'style="background-color: #ff8585'
- }
- $('#DeviceSensor_data').append(`
- <tr>
- <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>
- <td ondblclick="changeData(this)" data-type="t_time">${v.t_time}</td>
- <td ondblclick="changeData(this)" data-type="t_t">${v.t_t}</td>
- <td ondblclick="changeData(this)" data-type="t_rh">${v.t_rh}</td>
- <td ondblclick="changeData(this)" data-type="t__tlower">${v.t_tl}~${v.t_tu}|${v.t_rhl}~${v.t_rhu}</td>
- <td ondblclick="changeData(this)" data-type="t_site">${v.t_site}</td>
- <td ondblclick="changeData(this)" data-type="create_time">${v.create_time}</td>
- <td>
- <button class="layui-btn layui-btn-danger layui-btn-sm" onclick="deleteOne(this)">删除</button>
- <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>
- </td>
- </tr>
- `)
- /*
- <button class="layui-btn layui-btn-normal layui-btn-sm" onclick="showRecord(this)">记录</button>
- */
- }
- }
- // 新增copyAndAdd函数实现复制并添加新行
- function copyAndAdds(button, t_sn, t_id, t_t, t_rh, t_site, create_time) {
- // 准备发送给后端的数据对象
- let dataToSend = {
- t_sn: t_sn,
- t_id: t_id,
- t_t: t_t,
- t_rh: t_rh,
- t_site: t_site,
- createTime: create_time
- };
- // 提交数据到后端
- $.ajax({
- url: '/Device/Device_Copy', // 替换为你的后端接口地址
- type: 'POST',
- contentType: 'application/json',
- data: JSON.stringify(dataToSend),
- success: function (response) {
- console.log("数据提交成功,响应:", response.Data);
- // 假设后端返回了新行ID或者其他需要的数据,这里可以根据需要处理response
- let newRowId = response.id; // 假设后端返回了新行的唯一ID
- // 根据后端返回的数据(如果有的话)来构造新行的HTML
- let newRowHtml = `
- <tr class="new-row" data-id="${response.id}" style="background-color: #f0f8ff; border-left: 4px solid #007bff;">
- <td>
- <input
- type="checkbox"
- class="layui-form-checkbox"
- data-sn="${response.Data.t_sn}"
- data-id="${response.Data.t_id}"
- data-tt="${response.Data.t_t}"
- data-trh="${response.Data.t_rh}"
- data-site="${response.Data.t_site}"
- data-createTime="${response.Data.createTime}"
- />
- </td>
- <td ondblclick="changeData(this)" data-type="t_time" style="color: #007bff;">${response.Data.createTime}</td>
- <td ondblclick="changeData(this)" data-type="t_t" style="color: #007bff;">${response.Data.t_t}</td>
- <td ondblclick="changeData(this)" data-type="t_rh" style="color: #007bff;">${response.Data.t_rh}</td>
- <td ondblclick="changeData(this)" data-type="t_site" style="color: #007bff;">${response.Data.t_site}</td>
- <td ondblclick="changeData(this)" data-type="create_time" style="color: #007bff;">${response.Data.createTime}</td>
- <td>
- <button class="layui-btn layui-btn-danger layui-btn-sm" onclick="deleteOne(this)">删除</button>
- <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>
- <!-- 注意:此处可能不需要再提供复制添加按钮,因为数据已持久化 -->
- </td>
- </tr>
- `;
- // 在当前行的下一行兄弟元素(下一行)之前插入新行
- $(button).closest('tr').after(newRowHtml);
- // window.location.reload()
- // 这里可以添加成功后的其他操作,如提示用户、更新界面等
- },
- error: function (jqXHR, textStatus, errorThrown) {
- console.error("数据提交失败:", textStatus, errorThrown);
- // 处理错误情况,比如提示用户
- alert("数据提交失败,请重试!");
- }
- });
- }
- function showRecord(e) {
- e = $(e).parent().prevAll()
- e = e[e.length - 1]
- e = $(e).children()[0]
- console.log(e)
- $.ajax({
- type: "post",
- url: "/Data/Device_Sensor_Record",
- data: {
- sn: $(e).attr('data-sn'),
- tId: $(e).attr('data-id'),
- createTime: $(e).attr('data-createTime')
- },
- success: function (rlt) {
- if (rlt.Code === 200) {
- if (rlt.Data == null) {
- layui.layer.msg("没有数据!")
- return
- }
- for (let v of rlt.Data) {
- $('#tableBody').append(`
- <tr>
- <td>${v.t_t}</td>
- <td>${v.t_rh}</td>
- <td>${v.t_site}</td>
- <td>${v.t_uuid}</tdj>
- <td>${v.create_time}</td>
- <td>
- <button class="layui-btn layui-btn-normal" onclick="">更新</button>
- </td>
- </tr>
- `)
- }
- layui.layer.open({
- type: 1,
- area: ['1200px', '800px'],
- content: $('#recordShow'),
- isOutAnim: true
- })
- }
- }
- })
- }
- //双击表格改变值
- function changeData(even) {
- let e = $(even).prevAll()
- console.log(e)
- e = $(e[e.length - 1]).children()[0]
- // console.log(e)
- let t = {
- t_sn: $(e).attr('data-sn'),
- t_sp: $(e).attr('data-sp'),
- t_id: Number.parseInt($(e).attr('data-id')),
- create_time: ($(e).attr('data-createtime')),
- t_t: Number.parseFloat($(e).attr('data-tt')),
- t_rh: Number.parseFloat($(e).attr('data-trh')),
- t_site: $(e).attr('data-site'),
- }
- // console.log(t)
- let type = $(even).attr('data-type')
- // console.log(t,"============修改值==================")
- let input = $(`<input class="layui-input" type="text" value="${even.innerText}">`)
- input[0].onblur = function () {
- t["type"] = type
- t["value"] = $(this).val()
- t["User_tokey"] = $.cookie("User_tokey")
- if (t[type] == t.value) {
- } else {
- $.ajax({
- type: "POST",
- url: "/Data/Device_Sensor_Update",
- data: t,
- cookie: $.cookie("User_token"),
- success: function (rlt) {
- console.log(rlt)
- if (rlt.Code===200){
- layui.layer.msg('修改成功')
- get_DeviceSensor_data(0)
- }else {
- layui.layer.msg(rlt.Msg)
- }
- }
- })
- }
- // console.log(t)
- even.innerHTML = this.value
- $(e).attr(`data-${type}`, $(this).val())
- }
- $(even).html('')
- $(even).append(input)
- input.focus()
- }
- //点击上传按钮
- layui.use('upload', function () {
- let upload = layui.upload;
- //执行实例
- let uploadInst = upload.render({
- elem: '#importData',
- url: '/Data/importData' //上传接口
- , accept: 'file',
- data: {
- User_tokey: $.cookie("User_tokey"),
- }
- , field: 'file'
- , done: function (res) {
- layui.layer.msg(res.Msg)
- // layui.layer.close(index)
- }
- , error: function () {
- //请求异常回调
- layui.layer.msg('上传错误!')
- }
- })
- })
- //导出数据
- function exportData() {
- if ($("#Time_start").val().length > 0) {
- Time_start = $("#Time_start").val();
- } else {
- Time_start = ""
- }
- if ($("#Time_end").val().length > 0) {
- Time_end = $("#Time_end").val();
- } else {
- Time_end = ""
- }
- let checkboxes = $('.checkboxxx');
- checkboxes.each(function () {
- if ($(this).is(':checked')) {
- var checkboxValue = $(this).val();
- var values = checkboxValue.split(',');
- var sn = values[0];
- var id = values[1];
- console.log(checkboxValue);
- if (checkboxValue) {
- $.ajax({
- type: "post",
- url: "/Data/EXportData",
- data: {
- T_snid: checkboxValue,
- Time_start: Time_start,
- Time_end: Time_end,
- },
- success: function (rlt) {
- console.log(rlt);
- if (rlt.Code === 200) {
- let link = document.createElement('a');
- link.href = rlt.Data;
- link.click(); // 触发点击事件以开始下载
- link.remove();
- }
- }
- });
- }
- }
- });
- if (!checkboxes.is(':checked')) {
- layui.layer.msg("请选择导出项");
- }
- }
- function Add_DeviceSensor_data(DS_lite) {
- console.log(DS_lite)
- for (let i = 0; i < DS_lite.length; i++) {
- style_s = ""
- if (DS_lite[i].T_t < DS_lite[i].T_Tlower || DS_lite[i].T_rh < DS_lite[i].T_RHlower) {
- style_s = " style='background-color: #a8f7ff' "
- }
- if (DS_lite[i].T_t > DS_lite[i].T_Tupper || DS_lite[i].T_rh > DS_lite[i].T_RHupper) {
- style_s = " style='background-color: #ff8585' "
- }
- $('#DeviceSensor_data').append("" +
- "<tr " + style_s + ">\n" +
- // " <td>"+DS_lite[i].T_sn+"</td>\n" +
- " <td>" + DS_lite[i].T_name + " [" + DS_lite[i].T_id + "]</td>\n" +
- " <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" +
- " <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" +
- " <td>" + DS_lite[i].T_tl + "~" + DS_lite[i].T_tu + "</td>\n" +
- " <td>" + DS_lite[i].T_rhl + "~" + DS_lite[i].T_rhu + "</td>\n" +
- " <td>" + DS_lite[i].T_time + "</td>\n" +
- " <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" +
- "</tr>")
- }
- }
- function Add_DeviceSensor_data_Pages(Pages) {
- for (let i = 0; i < Pages.length; i++) {
- elem = Pages[i]
- switch (elem.A) {
- case 1:
- $('#DeviceSensor_data_Pages').append("<a class=\"prev\" onclick='get_DeviceSensor_data(" + elem.V + ")' ><<</a>\n");
- break;
- case 2:
- $('#DeviceSensor_data_Pages').append("<a class=\"num\" onclick='get_DeviceSensor_data(" + elem.V + ")' >" + elem.V + "</a>\n");
- break;
- case 3:
- $('#DeviceSensor_data_Pages').append("<span class=\"current\">" + elem.V + "</span>\n");
- break;
- case 4:
- $('#DeviceSensor_data_Pages').append("<a class=\"num\" onclick='get_DeviceSensor_data(" + elem.V + ")' >" + elem.V + "</a>\n");
- break;
- case 5:
- $('#DeviceSensor_data_Pages').append("<a class=\"next\" onclick='get_DeviceSensor_data(" + elem.V + ")' >>></a>\n");
- break;
- }
- }
- }
- function get_DeviceSensor_Excel() {
- if ($("#Time_start").val().length > 0) {
- Time_start = $("#Time_start").val();
- } else {
- Time_start = ""
- }
- if ($("#Time_end").val().length > 0) {
- Time_end = $("#Time_end").val();
- } else {
- Time_end = ""
- }
- Checkboxs_GetAll()
- var loading = layer.load(0, {
- shade: false,
- time: 99 * 1000
- });
- $.ajax({
- type: 'POST',
- url: 'Device_Sensor_Data_Excel',//发送请求
- data: {
- User_tokey: $.cookie("User_tokey"),
- Time_start: Time_start,
- Time_end: Time_end,
- T_snid: DeviceSensor_snid_list,
- },
- success: function (result) {
- console.log(result)
- layer.close(loading)
- if (result.Code != 200) {
- layer.msg(result.Msg);
- return
- }
- window.location.href = result.Data;
- }
- });
- return false
- }
- function F_moban() {
- layer.open({
- title: '导入模版'
- , content: '1、导入模板需先导出然后根据导出模板进行填写导入<hr>' +
- '2、导入文件名为 SN编号,如 2024xxxxxxxxxx.xlsx <hr>'
- });
- }
- </script>
- </html>
|