物联网平台 +Web 组态
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.

430 lines
15 KiB

2 years ago
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.lp.cfg.ProConfig" %>
<!DOCTYPE html>
<html>
<head>
<title>用户登录</title>
<%@ include file="/WEB-INF/oss/iot/common/variable.jsp"%>
<%@ include file="/WEB-INF/oss/iot/common/variable_js.jsp"%>
<%@ include file="/WEB-INF/oss/iot/common/resource_lib.jsp"%>
<link type="text/css" href="<%=basePath%>/css/oss/iot/login.css?<%=v%>" rel="stylesheet"/>
<script type="text/javascript" src="<%=basePath%>/lib/jquery/jquery.backstretch.min.js"></script>
</head>
<body>
<div>
<div class="system-title">
<p><%=ProConfig.SYS_WEB_LOGIN_NAME %></p>
</div>
<div class="login_container login jui-form_submit" data-options=" url:'/user/login',
submit:'.add-Btn',
success:'sunccessReturn' ">
<div class="login-title">
<span>登录</span>
<a class="ml-10 a-link" onclick="changeMode(5)">短信登录</a>
<a class="float-right a-link" onclick="changeMode(2);">没有账户,立即注册</a>
</div>
<div class="login-input">
<input class="input input-big na" validate="empty:请输入邮箱" type-name="name" maxlength="30" placeholder="请输入邮箱或者登陆名">
</div>
<div class="login-input">
<input class="input input-big pd" validate="empty:请输入密码" type-name="password" type="password" maxlength="50" placeholder="请输入密码">
</div>
<div style="margin-left: 20px;">
<button class="btn add-Btn">登录</button>
<!-- <span onmouseenter="showImage()" class="wxStyle">微信公众号入口</span> -->
<a class="float-right fot-a-link" onclick="changeMode(3);">忘记密码?</a>
<div class="checkbox-remember">
<input type="checkbox" id="saveLogin">
<label for="saveLogin" class="checkbox">记住密码</label>
</div>
</div>
</div>
<div class="login_container sms-login hide jui-form_submit" data-options=" url:'/user/sms/login',
submit:'.sms-login-Btn',
success:'sunccessReturn' ">
<div class="login-title">
<span>短信登录</span>
<a class="ml-10 a-link" onclick="changeMode(1)">账户登录</a>
</div>
<div class="login-input">
<input class="input input-big name-phone" validate="empty:请输入手机号" type-name="name" maxlength="30" placeholder="请输入手机号">
</div>
<div class="login-input" style="position: relative;">
<canvas style="position: absolute;right: 20px;top: 3px;width: 100px;height: 38px;background: #fff;"
onclick="reflash()" id="canvas" ></canvas>
<input class="input input-big vcode-sms" style="width: 300px;" validate="empty:请输入图片验证码" maxlength="6" placeholder="请输入图片验证码">
</div>
<div class="login-input" style="position: relative;">
<span class="sms-btnGet">获取验证码</span>
<input class="input input-big sms-validate" style="width: 300px;" validate="empty:请输入手机验证码" type-name="validate_code" maxlength="6" placeholder="请输入手机验证码">
</div>
<div style="margin-left: 20px;">
<button class="btn sms-login-Btn">登录</button>
</div>
</div>
<div class="wximg" style="display: none;">
<img width="200px" src="<%=basePath%>/image/oss/iot/footer_all.png">
</div>
<div class="login_container sms-register hide jui-form_submit" data-options=" url:'/user/register',
submit:'.register-sms-Btn',
success:'registerSuccesssms',
before:'beforefunc' ">
<div class="login-title">
<span style="padding-right: 0;">短信注册</span><span style="padding: 0 5px;">/</span><span onclick="changeMode(2);" style="padding: 0;color: #a1a1a1;cursor:pointer;">邮件注册</span>
<a class="float-right a-link" onclick="changeMode(1);">已有账户,立即登录</a>
</div>
<div class="login-input">
<input class="input input-big telphone" validate="empty:请输入手机号,phone:请输入正确的手机号" type-name="phone" maxlength="30" placeholder="请输入手机号">
</div>
<div class="login-input">
<input class="input input-big" validate="empty:请输入密码" type-name="password" type="password" maxlength="50" placeholder="请输入密码">
</div>
<input type="hidden" type-name="register_type" value="1">
<div class="login-input">
<input class="input input-big comfirm" validate="empty:请输入确认密码" type="password" maxlength="50" placeholder="请再次输入密码">
</div>
<div class="login-input" style="position: relative;">
<canvas style="position: absolute;right: 20px;top: 3px;width: 100px;height: 38px;background: #fff;" onclick="reflash()" id="canvas2" ></canvas>
<input class="input input-big vcode" style="width: 300px;" validate="empty:请输入图片验证码" maxlength="6" placeholder="请输入图片验证码">
</div>
<div class="login-input" style="position: relative;">
<span class="btnGet">获取验证码</span>
<input class="input input-big" style="width: 300px;" validate="empty:请输入手机验证码" type-name="validate_code" maxlength="6" placeholder="请输入手机验证码">
</div>
<div style="margin-left: 20px;">
<button class="btn register-sms-Btn">注册</button>
</div>
</div>
<div class="login_container register hide jui-form_submit" data-options=" url:'/user/register',
submit:'.register-Btn',
success:'registerSuccess',
before:'beforefunc' ">
<div class="login-title">
<span style="padding-right: 0;">邮箱注册</span><span style="padding: 0 5px;">/</span><span onclick="changeMode(4);" style="padding: 0;color: #a1a1a1;cursor:pointer;">短信注册</span>
<a class="float-right a-link" onclick="changeMode(1);">已有账户,立即登录</a>
</div>
<div class="login-input">
<input class="input input-big" validate="empty:请输入邮箱,email:请输入正确的邮箱格式" type-name="name" maxlength="30" placeholder="请输入邮箱">
</div>
<div class="login-input">
<input class="input input-big" validate="empty:请输入密码" type-name="password" type="password" maxlength="50" placeholder="请输入密码">
</div>
<div class="login-input">
<input class="input input-big comfirm" validate="empty:请输入确认密码" type="password" maxlength="50" placeholder="请再次输入密码">
</div>
<div style="margin-left: 20px;">
<button class="btn register-Btn">注册</button>
</div>
</div>
<div class="login_container get-password hide jui-form_submit" data-options=" url:'/user/reset/password',
submit:'.forget-Btn',
success:'forgetPasswordSucc'">
<div class="login-title">
<span>找回密码</span>
<a class="float-right a-link" onclick="changeMode(1);">返回登录</a>
</div>
<div class="login-input">
<input class="input input-big" validate="empty:请输入邮箱,email:请输入正确的邮箱格式" type-name="email" maxlength="30" placeholder="请输入邮箱">
</div>
<div style="margin-left: 20px;">
<button class="btn forget-Btn">发送</button>
</div>
</div>
<div class="footer">
<div class="copyright-intro" style="text-align: center;">
<span>
Copyright © 2019-2029&nbsp;&nbsp;&nbsp;<%=ProConfig.SYS_TECH_HELP%>
<a style="color: #a4cde6;margin-left: 15px; " target="_blank" href="https://beian.miit.gov.cn"><%=ProConfig.SYS_BEIAN_NAME%></a>
</span>
</div>
</div>
</div>
</body>
<script type="text/javascript">
inIframe();
$(function(){
$.backstretch("<%=basePath%>/image/oss/iot/login_back4.png");
var name = localStorage.getItem("na") ;
var pd = localStorage.getItem("pd") ;
if(name != null && name != ''){
$(".na").val(name) ;
$(".pd").val(pd) ;
$("#saveLogin").attr("checked",true);
}
})
function sunccessReturn(data){
if(data.status == status_code.OK){
localStorage.setItem("ucode", data.data.user_key);
if($("#saveLogin").is(":checked")){
localStorage.setItem("na", $(".na").val());
localStorage.setItem("pd",$(".pd").val());
}else{
localStorage.removeItem("na");
localStorage.removeItem("pd");
}
forwardUrl("/iot/index");
}else{
tip(data.statusMsg,1500);
}
}
// 注册返回
function registerSuccess(data){
if(data.status == status_code.OK){
forwardUrl("/iot/login",2000,"激活邮件发送,请到邮箱中激活账户");
}else{
$(".register-Btn").removeAttr("disabled");
tip(data.statusMsg,1500);
}
}
function registerSuccesssms(data){
if(data.status == status_code.OK){
forwardUrl("/iot/login",1200,"账户注册成功");
}else{
$(".register-Btn").removeAttr("disabled");
tip(data.statusMsg,1500);
}
}
function forgetPasswordSucc(data){
if(data.status == status_code.OK){
forwardUrl("/iot/login",3000,"重置密码邮件发送成功");
}else{
tip(data.statusMsg,1500);
}
}
function beforefunc(){
if( $(".register .comfirm").val() != gic("password",".register").val() ){
tip("二次密码输入不一致,请检查");
return false ;
}else{
$(".register-Btn").attr("disabled","disabled");
return true ;
}
}
function changeMode(type){
delayOperate(500,function(){
$(".login_container").hide();
if(type == 1){
$(".login").show();
}else if(type ==2){
$(".register").show();
}else if(type ==3){
$(".get-password").show();
}else if(type == 4){
$(".sms-register").show();
}else if(type == 5){
$(".sms-login").show();
}
})
}
function getActiveCode(){
var name = gic("name",".register").val() ;
if(!validater.empty(name)){
getAjax(localUrl+"/validate/"+name, function(){
});
}else{
tip("请输入邮箱");
}
}
$(document).keyup(function (e) {
if (e.keyCode == 13) {
$('.add-Btn').trigger("click");
}
});
// setTimeOut 倒计时
function resetTime(time) {
var s = time ;
timer = setInterval(countDown, 1000);
function countDown(){
s-- ;
if(s<2){
flag=true ;
$(".btnGet,.sms-btnGet").html("获取验证码");
clearInterval(timer);
}else{
$(".btnGet,.sms-btnGet").html("("+ s + "秒" +")");
}
}
}
var flag = true ;
$(function() {
var aimg = $("#validate-code").attr("src");
$("#validate-code").click(function() {
$(this).attr("src", aimg + "?" + Math.random());
})
// 获取验证码
$(".btnGet").click(function(){
if(!flag){
return ;
}
// 发送验证码请求
var phone = $(".telphone").val() ;
if(validater.empty(phone) || !validater.phone(phone) ){
tip("请输入手机号码");
return ;
}
var code = $(".vcode").val();
commonAjax('GET',localUrl + '/security_code/'+phone+"?code="+code+"&type=1" , "",function(data){
if(isOK(data)){
resetTime(59);
flag = false ;
tip("验证码发送成功");
}else{
tip(data.statusMsg);
}
});
})
$(".sms-btnGet").click(function(){
if(!flag){
return ;
}
// 发送验证码请求
var phone = $(".name-phone").val() ;
if(validater.empty(phone) || !validater.phone(phone) ){
tip("请输入手机号码");
return ;
}
var code = $(".vcode-sms").val();
commonAjax('GET',localUrl + '/security_code/'+phone+"?code="+code+"&type=0" , "",function(data){
if(isOK(data)){
resetTime(59);
flag = false ;
tip("验证码发送成功");
}else{
tip(data.statusMsg);
}
});
});
reflash();
})
function reflash(){
commonAjax('GET',localUrl + '/get/validate/code' , "",function(data){
if(isOK(data)){
draw(data.data);
draw2(data.data);
}else{
tip(data.statusMsg);
}
});
}
function showImage(){
layer.open({
type: 1,
title: false,
closeBtn: 0,
skin: 'layui-layer-nobg', //没有背景色
shadeClose: true,
content: $('.wximg')
});
}
function draw(showTxt) {
var canvas_width = $('#canvas').width();
var canvas_height = $('#canvas').height();
var canvas = document.getElementById("canvas");//获取到canvas的对象,演员
var context = canvas.getContext("2d");//获取到canvas画图的环境,演员表演的舞台
canvas.width = canvas_width;
canvas.height = canvas_height;
var aCode = showTxt.split(",");
var aLength = aCode.length;//获取到数组的长度
for (var i = 0; i < 4; i++) { //这里的for循环可以控制验证码位数(如果想显示6位数,4改成6即可)
var deg = Math.random() - 0.5; //产生一个随机弧度
var txt = showTxt[i];//得到随机的一个内容
var x = 10 + i * 20;//文字在canvas上的x坐标
var y = 20 + Math.random() * 8;//文字在canvas上的y坐标
context.font = "bold 23px 微软雅黑";
context.translate(x, y);
context.rotate(deg);
context.fillStyle = randomColor();
context.fillText(txt, 0, 0);
context.rotate(-deg);
context.translate(-x, -y);
}
for (var i = 0; i <= 5; i++) { //验证码上显示线条
context.strokeStyle = randomColor();
context.beginPath();
context.moveTo(Math.random() * canvas_width, Math.random()
* canvas_height);
context.lineTo(Math.random() * canvas_width, Math.random()
* canvas_height);
context.stroke();
}
for (var i = 0; i <= 30; i++) { //验证码上显示小点
context.strokeStyle = randomColor();
context.beginPath();
var x = Math.random() * canvas_width;
var y = Math.random() * canvas_height;
context.moveTo(x, y);
context.lineTo(x + 1, y + 1);
context.stroke();
}
}
function draw2(showTxt) {
var canvas_width = $('#canvas2').width();
var canvas_height = $('#canvas2').height();
var canvas = document.getElementById("canvas2");//获取到canvas的对象,演员
var context = canvas.getContext("2d");//获取到canvas画图的环境,演员表演的舞台
canvas.width = canvas_width;
canvas.height = canvas_height;
var aCode = showTxt.split(",");
var aLength = aCode.length;//获取到数组的长度
for (var i = 0; i < 4; i++) { //这里的for循环可以控制验证码位数(如果想显示6位数,4改成6即可)
var deg = Math.random() - 0.5; //产生一个随机弧度
var txt = showTxt[i];//得到随机的一个内容
var x = 10 + i * 20;//文字在canvas上的x坐标
var y = 20 + Math.random() * 8;//文字在canvas上的y坐标
context.font = "bold 23px 微软雅黑";
context.translate(x, y);
context.rotate(deg);
context.fillStyle = randomColor();
context.fillText(txt, 0, 0);
context.rotate(-deg);
context.translate(-x, -y);
}
for (var i = 0; i <= 5; i++) { //验证码上显示线条
context.strokeStyle = randomColor();
context.beginPath();
context.moveTo(Math.random() * canvas_width, Math.random()
* canvas_height);
context.lineTo(Math.random() * canvas_width, Math.random()
* canvas_height);
context.stroke();
}
for (var i = 0; i <= 30; i++) { //验证码上显示小点
context.strokeStyle = randomColor();
context.beginPath();
var x = Math.random() * canvas_width;
var y = Math.random() * canvas_height;
context.moveTo(x, y);
context.lineTo(x + 1, y + 1);
context.stroke();
}
}
//得到随机的颜色值
function randomColor() {
var r = Math.floor(Math.random() * 256);
var g = Math.floor(Math.random() * 256);
var b = Math.floor(Math.random() * 256);
return "rgb(" + r + "," + g + "," + b + ")";
}
</script>
</html>