物联网后台管理
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

469 lines
20 KiB

<!doctype html>
<html class="x-admin-sm">
<head>
<meta charset="UTF-8">
<title>物联网后台管理系统</title>
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<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"/>
<meta http-equiv="Cache-Control" content="no-siteapp"/>
<link rel="stylesheet" href="/css/font.css">
<link rel="stylesheet" href="/css/xadmin.css">
<link rel="stylesheet" href="/dist/notice.css">
<!-- <link rel="stylesheet" href="./css/theme5.css"> -->
<script src="/lib/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="/js/xadmin.js"></script>
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script>
// 是否开启刷新记忆tab功能
// var is_remember = false;
</script>
</head>
<body class="index">
<!-- 顶部开始 -->
<div class="container flag1" style="display: none">
<div class="logo">
<a href="./index.html">物联网云平台</a></div>
<div class="left_open">
<a><i title="展开左侧栏" class="iconfont">&#xe699;</i></a>
</div>
<!-- <ul class="layui-nav left fast-add" lay-filter="">-->
<!-- <li class="layui-nav-item">-->
<!-- <a href="javascript:;">+新增</a>-->
<!-- <dl class="layui-nav-child">-->
<!-- &lt;!&ndash; 二级菜单 &ndash;&gt;-->
<!-- <dd>-->
<!-- <a onclick="xadmin.open('最大化','http://www.baidu.com','','',true)">-->
<!-- <i class="iconfont">&#xe6a2;</i>弹出最大化</a></dd>-->
<!-- <dd>-->
<!-- <a onclick="xadmin.open('弹出自动宽高','http://www.baidu.com')">-->
<!-- <i class="iconfont">&#xe6a8;</i>弹出自动宽高</a></dd>-->
<!-- <dd>-->
<!-- <a onclick="xadmin.open('弹出指定宽高','http://www.baidu.com',500,300)">-->
<!-- <i class="iconfont">&#xe6a8;</i>弹出指定宽高</a></dd>-->
<!-- <dd>-->
<!-- <a onclick="xadmin.add_tab('在tab打开','member-list.html')">-->
<!-- <i class="iconfont">&#xe6b8;</i>在tab打开</a></dd>-->
<!-- <dd>-->
<!-- <a onclick="xadmin.add_tab('在tab打开刷新','member-del.html',true)">-->
<!-- <i class="iconfont">&#xe6b8;</i>在tab打开刷新</a></dd>-->
<!-- </dl>-->
<!-- </li>-->
<!-- </ul>-->
<ul class="layui-nav right" style="" lay-filter="">
<li class="layui-nav-item">
<a href="javascript:;">{$name}</a>
<dl class="layui-nav-child">
<!-- 二级菜单 -->
<dd>
<a href="https://www.bilibili.com/video/BV1uE411w77F/" target="_blank">云平台视频介绍</a>
</dd>
<dd>
<a href="/index/Administrator/quit">退出</a>
</dd>
</dl>
</li>
<img src="/images/handsome.ico" style="margin-top: auto;margin-left: 10px;width: 30px;border-radius:60px">
</ul>
</div>
<!-- 顶部结束 -->
<!-- 中部开始 -->
<!-- 左侧菜单开始 -->
<div class="left-nav flag2" style="margin-bottom: -10px;display: none">
<div id="side-nav">
<ul id="nav">
<!-- 统计页面-->
<!-- <li>-->
<!-- <a onclick="xadmin.add_tab('统计页面','/index/Administrator/statistics.html')">-->
<!-- <i class="layui-icon">&#xe653;</i>-->
<!-- <cite>统计页面</cite>-->
<!-- </a>-->
<!-- </li>-->
<!-- 管理员管理-->
<li>
<!-- admin-list.html-->
<a onclick="xadmin.add_tab('管理员管理','/index/Administrator/admin_list')">
<i class="iconfont">&#xe726;</i>
<cite>管理员管理</cite>
</a>
</li>
<!-- 用户管理-->
<li>
<a onclick="xadmin.add_tab('用户管理','/index/Administrator/user_list')">
<i class="iconfont left-nav-li" lay-tips="用户管理">&#xe6b8;</i>
<cite>用户管理</cite>
</a>
</li>
<!-- &lt;!&ndash;测试&ndash;&gt;-->
<!-- <li>-->
<!-- <a class="site-demo-active" id="test">-->
<!-- <i class="iconfont left-nav-li" lay-tips="测试">&#xe6b8;</i>-->
<!-- <cite>测试</cite>-->
<!-- </a>-->
<!-- </li>-->
<!-- 设备管理-->
<li>
<a href="javascript:;">
<i class="layui-icon left-nav-li" lay-tips="设备管理">&#xe653;</i>
<cite>设备管理</cite>
<i class="iconfont nav_right">&#xe697;</i></a>
<ul class="sub-menu">
<li>
<a onclick="xadmin.add_tab('设备信息总览','/index/Administrator/device')">
<i class="layui-icon">&#xe663;</i>
<cite>设备信息总览</cite>
</a>
</li>
<li>
<!-- <a onclick="xadmin.open('增删设备','/index/Tools/device_add',800,'',window.screen.width)">-->
<a onclick="xadmin.add_tab('增删设备','/index/Tools/device_operation')">
<i class="layui-icon">&#xe857;</i>
<cite>增删设备</cite>
</a>
</li>
<li>
<a href="javascript:;">
<i class="layui-icon">&#xe610;</i>
<cite>设备列表</cite>
<i class="iconfont nav_right">&#xe697;</i></a>
<ul class="sub-menu">
{foreach $dev as $device}
<li>
<a onclick="xadmin.add_tab('{$device.chinese}','/index/Administrator/device_list?name='+'{$device.chinese}',true)">
<i class="layui-icon">{$device.icon}</i>
<cite>{$device.chinese}</cite></a>
</li>
{/foreach}
</ul>
</li>
</ul>
</li>
<li>
<a id="log">
<i class="layui-icon left-nav-li" lay-tips="日志">&#xe6b2;</i>
<cite>日志记录</cite>
</a>
</li>
</ul>
</div>
</div>
<!-- <div class="x-slide_left"></div> -->
<!-- 左侧菜单结束 -->
<!-- 右侧主体开始 -->
<div class="page-content">
<div class="layui-tab tab flag3" style="display: none" lay-filter="xbs_tab" lay-allowclose="false">
<ul class="layui-tab-title">
<li id="myHome" class="home" lay-id="Home">
<i class="layui-icon">&#xe68e;</i>数据总览
</li>
</ul>
<div class="layui-tab-content ">
<div class="layui-tab-item layui-show layui-hide layui-anim layui-anim-fadein" id="showHome">
<iframe src='/index/Administrator/welcome' id="hom" frameborder="0" style="width:100%;height:100%;overflow:scroll;overflow-x:hidden"
class="x-iframe"></iframe>
</div>
</div>
<div id="tab_show"></div>
</div>
</div>
<div class="page-content-bg"></div>
<style id="theme_style"></style>
<!-- 右侧主体结束 -->
<!-- 中部结束 -->
<script id="logForm" type="text/html">
<div class="layui-fluid">
<input style="height: 45px" type="text" id="logInput" name="" placeholder="获取校验码后在此处输入定制的二级密码"
autocomplete="off"
class="layui-input">
</div>
</script>
<script>
//进入界面
var noticeOpt1 = {
showMethod: 'slideDown',
hideMethod: 'slideUp',
closeButton: false,//显示关闭按钮
positionClass: "toast-bottom-full-width",//弹出的位置,
showDuration: 300,//显示的时间
hideDuration: 400,//消失的时间
timeOut: 2000,//停留的时间
extendedTimeOut: 200,//控制时间
};
//二级密码校验码弹窗提示
var noticeOpt2 = {
showMethod: 'slideDown',
hideMethod: 'slideUp',
closeButton: false,//显示关闭按钮
positionClass: "toast-bottom-full-width",//弹出的位置,
showDuration: 300,//显示的时间
hideDuration: 300,//消失的时间
timeOut: 0,//停留的时间
extendedTimeOut: 0,//控制时间
};
//执行操作提示
var noticeOpt3 = {
showMethod: 'fadeIn',
hideMethod: 'fadeOut',
closeButton: false,//显示关闭按钮
positionClass: "toast-top-right",//弹出的位置,
showDuration: 300,//显示的时间
hideDuration: 300,//消失的时间
timeOut: 2000,//停留的时间
extendedTimeOut: 200,//控制时间
};
//操作成功提示
var noticeOpt4 = {
showMethod: 'slideDown',
hideMethod: 'fadeOut',
closeButton: false,//显示关闭按钮
positionClass: "toast-top-center",//弹出的位置,
showDuration: 300,//显示的时间
hideDuration: 300,//消失的时间
timeOut: 1900,//停留的时间
extendedTimeOut: 200,//控制时间
};
//操作失败提示
var noticeOpt5 = {
showMethod: 'slideDown',
hideMethod: 'slideUp',
closeButton: false,//显示关闭按钮
positionClass: "toast-top-full-width",//弹出的位置,
showDuration: 300,//显示的时间
hideDuration: 300,//消失的时间
timeOut: 1000,//停留的时间
extendedTimeOut: 200,//控制时间
};
//操作过程提示
var noticeOpt6 = {
showMethod: 'slideDown',
hideMethod: 'slideUp',
closeButton: false,//显示关闭按钮
positionClass: "toast-top-full-width",//弹出的位置,
showDuration: 300,//显示的时间
hideDuration: 300,//消失的时间
timeOut: 2000,//停留的时间
extendedTimeOut: 100,//控制时间
iconClass: 'layui-icon'
};
layui.config({
base: '/dist/'
}).extend({
notice: 'notice'
});
layui.use(['notice', 'jquery', 'element', 'layer'], function () {
var notice = layui.notice; // 允许别名 toastr
var element = layui.element;
var $ = layui.jquery;
var layer = layui.layer;
// 初始化通知配置,同一样式只需要配置一次,非必须初始化,有默认配置
notice.options = {
showMethod: 'slideDown',
hideMethod: 'slideUp',
closeButton: true,//显示关闭按钮
debug: false,//启用debug
positionClass: "toast-bottom-full-width",//弹出的位置,
showDuration: 300,//显示的时间
hideDuration: 300,//消失的时间
timeOut: 1000,//停留的时间
extendedTimeOut: 0,//控制时间
showEasing: "swing",//显示时的动画缓冲方式swing为变速
// showEasing: "linear",//显示时的动画缓冲方式
hideEasing: "linear",//消失时的动画缓冲方式linear为匀速
iconClass: 'toast-info', // 自定义图标,有内置,如不需要则传空 支持layui内置图标/自定义iconfont类名
onclick: null, // 点击关闭回调
};
notice.success("您已进入管理员操作界面", '欢迎管理员:{$name}', noticeOpt4);
//下滑出现操作界面
$(".flag1").slideDown("slow");
$(".flag2").delay(400).slideDown("slow");
$(".flag3").delay(1000).fadeIn("slow");
//浮现我的桌面
setTimeout(function () {
// $("#showHome").removeClass("layui-hide");
}, 1500);
// $('#test').click(function () {
// element.tabChange('xbs_tab', 'Home'); //切换到:用户管理
// });
//点击我的桌面
var myHome = document.querySelector('#myHome');
myHome.addEventListener('click', function () {
$("#showHome").removeClass("layui-hide");
// console.log(document.getElementById("hom").contentWindow);
notice.remove();
notice.success("可视化数据已校准", "<div class = 'layui-icon layui-icon-heart-fill'> 同步成功</div>", noticeOpt6);
setTimeout(function () {
document.getElementById("hom").contentWindow.echatsResize();
document.getElementById("hom").contentWindow.updateCards();
document.getElementById("hom").contentWindow.updateEcharts();
}, 300);
});
//打开日志记录
var str = '';
var num = [];
$('#log').click(function () {
layer.open({
type: 1
, title: '二级验证'
, content: $("#logForm").html()
, skin: 'layui-layer-lan'
, area: ['300px', '170px']
, btn: ['获取当前校验码', '确认']
, btnAlign: 'c'
, success: function (layero, index) {
//设置1提示内容
$(".layui-layer-btn1").text('请先获取校验码');
//禁用1鼠标点击
$(".layui-layer-btn1").attr("disabled", true);
$(".layui-layer-btn1").css("pointer-events", "none");
//设置0/1背景色
$(".layui-layer-btn0").css("background", "#d2ecff");
$(".layui-layer-btn1").css("background", "#ffb3b7");
$("#logInput").attr('disabled', true);
}
, btn1: function () {
//生成随机数
str = '';
num = [];
for (var i = 0; i < 3; i++) {
num.push(parseInt(Math.random() * 5));
str += num[i];
}
var btn0 = $(".layui-layer-btn0");
var btn1 = $(".layui-layer-btn1");
//设置0提示文字
btn0.text('当前校验码:' + str);
//禁用0鼠标点击
btn0.attr("disabled", true);
btn0.css("pointer-events", "none");
//设置0背景色
btn0.css("background", "#6eb7d5");
//设置0字体颜色
btn0.css("color", "#faffff");
//设置输入框提示内容
$("#logInput").attr('placeholder', '提示:w · yyyy · d · H · M');
//允许输入框输入内容
$("#logInput").attr('disabled', false);
//恢复1鼠标点击
btn1.attr("disabled", false);
btn1.css("pointer-events", "auto");
//设置1背景色
btn1.css("background", "#61b77d");
//设置1字体颜色
btn1.css("color", "#ffffff");
//设置1提示内容
$(".layui-layer-btn1").text('确认');
notice.options = noticeOpt2;
notice.info("<div class = 'layui-icon'> 当前时间:&#xe68d; " + updateTime() + "</div>", "<span class='layui-icon layui-icon-tips'> 提示:w · yyyy · d · H · M</span>", {iconClass: 'layui-icon'});
}
, btn2: function (index) {
// console.log($("#logInput").val());
// notice.remove();
// notice.warning('正在检验二级密码是否正确','校验码审核',noticeOpt3);
var myDate = new Date();
var week = myDate.getDay();
var year = myDate.getFullYear();
var day = myDate.getDate();
var hour = myDate.getHours();
var month = (myDate.getMonth() + 1);
$.ajax({
type: "POST",
url: "/index/Administrator/log_verify",
data: {
logInput: $("#logInput").val(),
numArr: num,
week: week,
year: year,
day: day,
hour: hour,
month: month
},
success: function (msg) {
if (msg == 'ok') {
notice.remove();
notice.success('正在打开日志记录…………', '本次校验码审核通过', noticeOpt4);
layer.msg('校验成功', {time: 800, icon: 1});
setTimeout(function () {
layer.close(index);
// xadmin.open('日志记录', '/index/Administrator/log');
notice.remove();
xadmin.add_tab('日志记录', '/index/Administrator/log');
}, 1000);
} else {
layer.msg(msg, {icon: 4, time: 1000});
notice.remove();
notice.error('校验码错误,请检查后重新输入', '校验码未通过审核', noticeOpt5);
$("#logInput").val('');
$("#logInput").focus();
setTimeout(function () {
notice.info("<div class = 'layui-icon'> 当前时间:&#xe68d; " + updateTime() + "</div>", "<span class='layui-icon layui-icon-tips'> 提示:w · yyyy · d · H · M</span>", {iconClass: 'layui-icon'});
}, 1500)
}
},
error: function () {
notice.remove();
layer.msg('数据传输错误,请联系后台管理员', {time: 800, icon: 5});
notice.error('请联系后台管理员', '数据传输错误', noticeOpt5);
layer.close(index);
},
});
return false;
}
, cancel: function () {
notice.clear();
}
}
);
});
function updateTime() {
var date = new Date();
this.year = date.getFullYear();
this.month = date.getMonth() + 1;
this.date = date.getDate();
this.day = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六")[date.getDay()];
this.hour = date.getHours();
var currentTime = this.year + " 年 " + this.month + " 月 " + this.date + " 日 " + this.day + " , " + this.hour + "点";
return currentTime;
}
});
</script>
</body>
</html>