123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580 |
- <!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">
- <link rel="stylesheet" href="/static/layui/css/modules/layer/default/layer.css">
- <link rel="stylesheet" href="/static/layui/css/modules/laydate/default/laydate.css">
- <script src="/static/js/jquery.min.js"></script>
- <script src="/static/lib/layui/layui.js" charset="utf-8"></script>
- <script src="/static/lib/layui/lay/modules/laydate.js"/>
- <script src="/static/lib/layui/lay/modules/layer.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 layui-col-space15">
- <div class="layui-col-md12">
- <div class="layui-card">
- <div class="layui-card-body ">
- <div class="layui-form layui-col-space5">
- <div class="layui-input-inline layui-show-xs-block">
- <input id="deviceName" type="text" name="Name"
- placeholder="设备名称/sn"
- autocomplete="off" class="layui-input"></div>
- <div class="layui-input-inline layui-show-xs-block">
- <select id="searchClass" value="0" class="layui-select">
- <option value="">所有分类</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">
- <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="search"
- onclick="getDeviceDataList(1)">
- <i class="layui-icon"></i></button>
- </div>
- </div>
- </div>
- <!--数据列表部分-->
- <div class="layui-card-body " style="height: 663px">
- <table class="layui-table" lay-size="lg">
- <colgroup>
- <!-- <col width="20">-->
- <col>
- <col>
- <col>
- <col>
- </colgroup>
- <thead>
- <!-- <th>选择</th>-->
- <th>SN</th>
- <th>编号</th>
- <th>传感器名称</th>
- <th>操作</th>
- </thead>
- <tbody id="tableBody">
- </tbody>
- </table>
- </div>
- <div class="layui-card-body ">
- <div class="page">
- <div id="pageTool">
- <!--上一页-->
- </div>
- </div>
- </div>
- <!--设别列表部分end-->
- <div class="layui-card-body" style="justify-content: space-between;align-items: center;color: #ed3f35;height: 110px;">
- <h2 class="layui-col-md12">注意:</h2>
- <h3 class="layui-col-md12">1、修改参数 提示成功后,为了确保设备修改成功,请再次读取确定!!!</h3>
- <h3 class="layui-col-md12">2、此页面功能项目都属于敏感参数,没有修改记录!!!</h3>
- <h3 class="layui-col-md12">3、没有多选操作功能,因为修改以上参数必须设备在线与真实成功,为了可靠性,所以取消了多选操作功能!!!</h3>
- </div>
- <!--分页、选择区域 start-->
- <!-- <div class="layui-card-body" style="display: flex;justify-content: space-between;align-items: center">-->
- <!-- <div>-->
- <!-- <button class="layui-btn layui-btn-sm layui-btn-normal" id="selectAllBtn" onclick="selectAll()">-->
- <!-- 全选-->
- <!-- </button>-->
- <!-- <button class="layui-btn layui-btn-sm layui-btn-normal" onclick="reverseSelect()">反选</button>-->
- <!-- <button class="layui-btn layui-btn-sm layui-btn-normal" id="noSelectAllBtn"-->
- <!-- onclick="noSelect()">全不选-->
- <!-- </button>-->
- <!-- <button class="layui-btn layui-btn-sm layui-btn-normal" onclick="dataRepeat()">数据重传-->
- <!-- </button>-->
- <!-- <button class="layui-btn layui-btn-sm layui-btn-normal" onclick="deviation()">偏差值-->
- <!-- </button>-->
- <!-- </div>-->
- <!-- <div id="pageTool">-->
- <!-- <!–上一页–>-->
- <!-- </div>-->
- <!-- </div>-->
- <!-- 分页、选择区域 end -->
- </div>
- </div>
- </div>
- </div>
- <div id="deviation" style="display: none;margin-top: 20px;text-align: center">
- <form class="layui-form" lay-filter="dataRepeat" style="text-align: center">
- <div class="layui-form-item">
- <label class="layui-form-label">温度补偿:</label>
- <input type="text" id="wdbc" class="layui-input layui-input-inline"/>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">湿度补偿: </label>
- <input type="text" id="sdbc" class="layui-input layui-input-inline"/>
- </div>
- </form>
- </div>
- <div id="Sensor" style="display: none;margin-top: 20px;text-align: center">
- <form class="layui-form" lay-filter="dataRepeat" style="text-align: center">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">传感器采样率:</label>
- <input type="text" id="speed" class="layui-input layui-input-inline"/>
- <label class="layui-form-label" style="width: 120px;">s(1~240) 默认:15</label>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label" style="width: 120px;">传感器灵敏度:</label>
- <input type="text" id="sense" class="layui-input layui-input-inline"/>
- <label class="layui-form-label" style="width: 120px;">s(0~600) 默认:60 </label>
- </div>
- </form>
- </div>
- <div id="dataRepeat" style="display: none;margin-top: 20px;text-align: center">
- <form class="layui-form" lay-filter="dataRepeat">
- <div class="layui-form-item">
- <label class="layui-form-label">开始时间:</label>
- <input id="startTime" class="layui-input layui-input-inline" lay-key="1"/>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">结束时间: </label>
- <input id="endTime" name="humidity" class="layui-input layui-input-inline" lay-key="2"/>
- </div>
- </form>
- </div>
- <script>
- //数据表格
- let pageInfo = null
- let currentPage = 1
- function getDeviceDataList(currentPage) {
- let searchDeviceName = $('#deviceName').val()
- let searchDeviceClass = $('#searchClass').val()
- console.log(searchDeviceName, searchDeviceClass)
- let formData = new FormData();
- formData.set('deviceName', searchDeviceName)
- formData.set('deviceClass', searchDeviceClass)
- formData.set('currentPage', currentPage)
- $.ajax({
- type: "POST",
- data: formData,
- contentType: false,
- processData: false,
- url: "/Device/DeviceList",
- success: function (result) {
- pageInfo = result
- let b = $('#tableBody')
- b.html("")
- if (result.list != null) {
- for (let v of result.list) {
- b.append(`
- <tr>
- <!-- <td><input type="checkbox" class="layui-form-checkbox" data-sn="${v.T_sn}" data-id="${v.T_id}"/></td>-->
- <td>${v.T_sn}</td>
- <td>${v.T_id}</td>
- <td>${v.T_name}</td>
- <td>
- <button onclick="deviation('${v.T_sn}','${v.T_id}')" class="layui-btn layui-btn-normal layui-btn-sm">偏差值</button>
- <button onclick="Sensor('${v.T_sn}','${v.T_id}')" class="layui-btn layui-btn-normal layui-btn-sm">传感器参数</button>
- <button onclick="dataRepeat('${v.T_sn}','${v.T_id}')" class="layui-btn layui-btn-normal layui-btn-sm">数据重传</button>
- </td>
- </tr>
- `)
- }
- } else {
- b.append(`<tr>
- <td colspan="5" rowspan="10" style="height: 590px;text-align: center">没有设备数据!</td>
- </tr>`)
- }
- //渲染分页
- $('#pageTool').html('')
- if (!pageInfo.previousPage) {
- $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-sm " onclick="getDeviceDataList(${pageInfo.currentPage - 1})">上一页</button>`)
- } else {
- $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-disabled layui-btn-sm" onclick="getDeviceDataList(${pageInfo.currentPage - 1})">上一页</button>`)
- }
- //页码
- let start, end
- start = pageInfo.currentPage - 2 <= 0 ? 1 : pageInfo.currentPage - 2
- end = pageInfo.currentPage + 2 >= pageInfo.totalPage ? pageInfo.totalPage : pageInfo.currentPage + 2
- end = end + (Math.abs(end - start)) >= pageInfo.totalPage ? pageInfo.totalPage : end + (Math.abs(end - start))
- start = start - (Math.abs(end - start)) <= 0 ? 1 : start - (Math.abs(end - start))
- for (; start <= end; start++) {
- if (pageInfo.currentPage == start) {
- $('#pageTool').append(`<button class="layui-btn layui-btn-disabled layui-btn-primary layui-btn-sm" onclick="getDeviceDataList(${start})">${start}</button>`)
- } else {
- $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-sm" onclick="getDeviceDataList(${start})">${start}</button>`)
- }
- }
- if (!pageInfo.nextPage) {
- $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-sm " onclick="getDeviceDataList(${pageInfo.currentPage + 1}">下一页</button>`)
- } else {
- $('#pageTool').append(`<button class="layui-btn layui-btn-primary layui-btn-disabled layui-btn-sm " onclick="getDeviceDataList( ${pageInfo.currentPage + 1} )">下一页</button>`)
- }
- }
- })
- }
- //偏差值
- function deviation(sn = '', id = '') {
- $('#wdbc').val("同步中...")
- $('#sdbc').val("同步中...")
- let selectSns = {}
- if (sn !== '' && id !== '') {
- selectSns[sn] = [parseInt(id)]
- }
- $('#tableBody > tr > td > input[type="checkbox"]').each((i, e) => {
- if ($(e).prop('checked')) {
- let sn = $(e).attr('data-sn')
- let id = parseInt($(e).attr('data-id'))
- if (selectSns[sn] === undefined) {
- selectSns[sn] = [id]
- } else {
- selectSns[sn].push(id)
- }
- $('#wdbc').val("")
- $('#sdbc').val("")
- }
- layui.layer.msg('请 确您勾选的设备 一定在线! 一定在线! 一定在线!,否则本次设置的参数可能无效!')
- })
- if (sn == null && selectSns.length == 0) {
- layui.layer.msg('没有可以操作的设备')
- return
- }
- let deviationData = [{}]
- console.log("选择数据:", selectSns)
- $.ajax({
- type: 'POST',
- url: '/Device/ReadDeviation',
- processData: false,
- contentType: "application/json",
- data: JSON.stringify(selectSns),
- success: function (rlt) {
- deviationData = []
- if (rlt.Code === 200) {
- if (rlt.Data.length === 1) {
- let t = JSON.parse(rlt.Data[0].split("||")[1])
- for(let i = 0; i < t.data.length; i++) {
- console.log(t.data[i]);
- if (t.data[i].id == id){
- $('#wdbc').val(t.data[i].t)
- $('#sdbc').val(t.data[i].h)
- deviationData.push({
- sn: sn,
- data: [{
- id: parseInt(t.data[i].id),
- h: t.data[i].h,
- t: t.data[i].t
- }]
- })
- }
- }
- } else {
- $('#wdbc').disabled()
- $('#sdbc').disabled()
- for (let v of rlt.Data) {
- let parameter = v.split("||");
- let sn = parameter[0].substring(parameter.lastIndex("/"))
- let t = JSON.parse(parameter[1])
- deviationData.push({
- sn: sn,
- data: [{
- id: parseInt(t.data[0].id),
- h: t.data[0].h,
- t: t.data[0].t
- }]
- })
- }
- }
- }
- // } else {
- // layui.layer.msg(rlt.Msg)
- // }
- }
- })
- layer.open({
- type: 1,
- title: '偏差值',
- area: ['400px', '230px'],
- content: $('#deviation'),
- btn: ['提交'],
- btnAlign: 'c',
- yes(index, elem) {
- console.log("偏差值数据:", deviationData)
- if (deviationData.length == 1) {
- deviationData[0].data[0].t = Number.parseFloat($('#wdbc').val())
- deviationData[0].data[0].h = Number.parseFloat($('#sdbc').val())
- }
- $.ajax({
- type: "POST",
- url: "/Device/WriteDeviation",
- contentType: "application/json",
- data: JSON.stringify(deviationData),
- processData: false,
- success: function (rlt) {
- layui.layer.msg(rlt.Msg)
- }
- })
- layui.layer.close(index)
- }
- })
- }
- //偏差值
- function Sensor(sn = '', id = '') {
- $('#speed').val("同步中...")
- $('#sense').val("同步中...")
- let selectSns = {}
- if (sn !== '' && id !== '') {
- selectSns[sn] = [parseInt(id)]
- }
- $('#tableBody > tr > td > input[type="checkbox"]').each((i, e) => {
- if ($(e).prop('checked')) {
- let sn = $(e).attr('data-sn')
- let id = parseInt($(e).attr('data-id'))
- if (selectSns[sn] === undefined) {
- selectSns[sn] = [id]
- } else {
- selectSns[sn].push(id)
- }
- $('#speed').val("")
- $('#sense').val("")
- }
- layui.layer.msg('请 确您勾选的设备 一定在线! 一定在线! 一定在线!,否则本次设置的参数可能无效!')
- })
- if (sn == null && selectSns.length == 0) {
- layui.layer.msg('没有可以操作的设备')
- return
- }
- let SensorData = [{}]
- console.log("选择数据:", selectSns)
- $.ajax({
- type: 'POST',
- url: '/Device/ReadSensor',
- processData: false,
- contentType: "application/json",
- data: JSON.stringify(selectSns),
- success: function (rlt) {
- SensorData = []
- if (rlt.Code === 200) {
- if (rlt.Data.length === 1) {
- let t = JSON.parse(rlt.Data[0].split("||")[1])
- for(let i = 0; i < t.data.length; i++) {
- console.log(t.data[i]);
- if (t.data[i].id == id){
- $('#speed').val(t.data[i].speed)
- $('#sense').val(t.data[i].sense)
- SensorData.push({
- sn: sn,
- data: [{
- id: parseInt(t.data[i].id),
- speed: t.data[i].speed,
- sense: t.data[i].sense
- }]
- })
- }
- }
- } else {
- $('#speed').disabled()
- $('#sense').disabled()
- for (let v of rlt.Data) {
- let parameter = v.split("||");
- let sn = parameter[0].substring(parameter.lastIndex("/"))
- let t = JSON.parse(parameter[1])
- SensorData.push({
- sn: sn,
- data: [{
- id: parseInt(t.data[0].id),
- speed: t.data[0].speed,
- sense: t.data[0].sense
- }]
- })
- }
- }
- }
- // } else {
- // layui.layer.msg(rlt.Msg)
- // }
- }
- })
- layer.open({
- type: 1,
- title: '传感器参数',
- area: ['500px', '230px'],
- content: $('#Sensor'),
- btn: ['提交'],
- btnAlign: 'c',
- yes(index, elem) {
- console.log("传感器参数:", SensorData)
- if (SensorData.length == 1) {
- SensorData[0].data[0].speed = Number.parseFloat($('#speed').val())
- SensorData[0].data[0].sense = Number.parseFloat($('#sense').val())
- }
- $.ajax({
- type: "POST",
- url: "/Device/WriteSensor",
- contentType: "application/json",
- data: JSON.stringify(SensorData),
- processData: false,
- success: function (rlt) {
- layui.layer.msg(rlt.Msg)
- }
- })
- layui.layer.close(index)
- }
- })
- }
- //数据重传
- function dataRepeat(sn, type) {
- let selectSns = {}
- $('#tableBody > tr > td > input[type="checkbox"]').each((i, e) => {
- if ($(e).prop('checked')) {
- let sn = $(e).attr('data-sn')
- let id = $(e).attr('data-id')
- if (selectSns[sn] === undefined) {
- selectSns[sn] = [id]
- } else {
- selectSns[sn].push(id)
- }
- }
- layui.layer.msg('请 确您勾选的设备 一定在线! 一定在线! 一定在线!,否则本次设置的参数可能无效!')
- })
- if (sn == null && selectSns.length === 0) {
- layui.layer.msg('没有可以操作的设备')
- return
- }
- let startTime, endTime;
- layui.layer.open({
- type: 1,
- title: '数据重传',
- area: ['400px', '230px'],
- content: $('#dataRepeat'),
- btn: ['提交'],
- btnAlign: 'c',
- yes(index, elem) {
- startTime = $("#startTime").val();
- endTime = $("#endTime").val();
- console.log(`开始时间:${startTime},结束时间:${endTime}`)
- if (startTime === '' || endTime === '') {
- layui.layer.msg('开始、结束时间不能为空')
- return
- }
- //如果sn存在则表示针对单个设备
- if (sn != null && sn != undefined) {
- selectSns = {}
- selectSns[sn] = [type]
- }
- $.ajax({
- type: 'POST',
- url: '/Device/DataRepeat',
- data: JSON.stringify({
- sns: selectSns,
- startTime: startTime,
- endTime: endTime
- }),
- contentType: "application/json;charset=utf-8",
- processData: false,
- success: function (rlt) {
- if (rlt.Code === 200) {
- //关闭窗口
- layui.layer.close(index)
- }
- layui.layer.msg(rlt.Msg)
- }
- })
- }
- });
- }
- //初始化日期的操作
- layui.use(['laydate', 'form', 'element'],
- function () {
- var laydate = layui.laydate;
- //执行一个laydate实例
- laydate.render({
- elem: '#startTime' //指定元素
- , type: 'datetime'
- });
- //执行一个laydate实例
- laydate.render({
- elem: '#endTime' //指定元素
- , type: 'datetime'
- });
- var element = layui.element;
- element.length = 30
- }
- );
- //全选
- let selectAllField = false
- function selectAll() {
- selectAllField = true
- $('#tableBody > tr > td > input[type="checkbox"]').each((i, e) => {
- $(e).prop('checked', true)
- })
- }
- //反选
- function reverseSelect() {
- $('#tableBody > tr > td > input[type="checkbox"]').each((i, e) => {
- $(e).prop('checked', !$(e).prop('checked'))
- })
- }
- //全不选
- function noSelect() {
- $('#tableBody > tr > td > input[type="checkbox"]').each((i, e) => {
- $(e).prop('checked', false)
- })
- }
- $(function () {
- getDeviceDataList(1) //获取数据列表
- })
- </script>
- </body>
- </html>
|