perf: 增加原生缓存

This commit is contained in:
Ying
2023-06-19 14:36:07 +08:00
parent 2b8f874450
commit 331d7b0582
1486 changed files with 105475 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
<layout name="layout:layout"/>
<!-- 内容主体区域 -->
<div id="content">
<div class="layui-fluid">
<form class="layui-form layui-form-fixed" action="/index/user/changeEmail">
<div class="layui-form-item">
<label class="layui-form-label">{:__('邮箱地址')}</label>
<div class="layui-input-inline" style="width: 265px">
<input name="email" placeholder="{:__('请输入邮箱地址')}" type="text" class="layui-input email"
autocomplete="off" lay-verify="required|email"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">{:__('验证码')}</label>
<div class="layui-input-inline">
<input name="captcha" placeholder="{:__('请输入验证码')}" type="text" class="layui-input"
autocomplete="off" lay-verify="required" maxlength="10"/>
</div>
<button class="layui-btn layui-btn-normal" type="button" lay-ajax data-url="/api/ajax/emailSend"
data-object="email:email,event:event">{:__('获取')}
</button>
</div>
<input type="text" hidden name="event" class="event" value="change">
<div class="layui-footer layui-form-item layui-center">
<button class="layui-btn layui-btn-primary" type="button" sa-event="closeDialog">{:__('取消')}</button>
<button class="layui-btn layui-btn-normal " data-reload="parent" lay-filter="submitIframe" lay-submit>{:__('提交')}</button>
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,30 @@
<layout name="layout:layout"/>
<!-- 内容主体区域 -->
<div id="content">
<div class="layui-fluid">
<form class="layui-form layui-form-fixed" action="/index/user/changeMobile">
<div class="layui-form-item">
<label class="layui-form-label">{:__('手机号')}</label>
<div class="layui-input-inline" style="width: 265px">
<input name="mobile" placeholder="{:__('请输入号码')}" type="text" class="layui-input mobile"
autocomplete="off" lay-verify="required|phone"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">{:__('验证码')}</label>
<div class="layui-input-inline">
<input name="captcha" placeholder="{:__('请输入验证码')}" type="text" class="layui-input"
autocomplete="off" lay-verify="required" maxlength="10"/>
</div>
<button class="layui-btn layui-btn-normal" type="button" lay-ajax data-url="/api/ajax/smsSend"
data-object="mobile:mobile,event:event">{:__('获取')}
</button>
</div>
<input type="text" hidden name="event" class="event" value="change">
<div class="layui-footer layui-form-item layui-center">
<button class="layui-btn layui-btn-primary" type="button" sa-event="closeDialog">{:__('取消')}</button>
<button class="layui-btn layui-btn-normal" data-reload="parent" lay-filter="submitIframe" lay-submit>{:__('提交')}</button>
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,82 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>修改密码 | {$site_name}</title>
<include file="user:include"/>
</head>
<body>
<div class="layui-card-body">
<form action="/index/user/changePwd" class="layui-form layui-form-fixed">
<input type="text" name="nickname" value="{$user.nickname}" hidden="">
<div class="layui-form-item">
<label class="layui-form-label">原密码</label>
<div class="layui-input-block">
<input type="text" id="oldpwd" name="oldpwd" class="layui-input" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">新密码</label>
<div class="layui-input-block">
<input type="password" id="pwd" name="pwd" class="layui-input" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">确认密码</label>
<div class="layui-input-block">
<input type="password" id="repwd" name="repwd" class="layui-input" >
</div>
</div>
<div class="layui-form-item" style="margin-top: 22px;text-align: center;">
<button type="button" class="layui-btn layui-btn-primary" sa-event="closeDialog" >关闭</button>
<button type="submit" class="layui-btn layui-btn-normal" lay-submit="" lay-filter="submit">立即提交</button>
</div>
</form>
</div>
<script>
layui.use(['jquery','form'],function(){
var $ = layui.jquery;
var form = layui.form;
//监听提交
form.on('submit(submit)', function(data){
if($("#pwd").val().length < 6){
layer.tips('请至少输入6个字符作为密码',"#pwd",{'tips':3});
return false;
}
if ($("#pwd").val() !== $("#repwd").val()) {
layer.tips('两次输入的密码不一样!',"#repwd",{'tips':3});
return false;
}
$.ajax({
url: $(this).attr('action'),
type: 'POST',
dataType: 'json',
timeout: 6000,
data: data.field,
success: function(res){
if (res.code === 200) {
top.layer.msg(res.msg);
parent.location.reload();
}
else {
top.layer.msg(res.msg,'error');
}
}
});
return false;
});
})
</script>
</body>
</html>

View File

@@ -0,0 +1,234 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>{$site_name} 用户登录</title>
<meta http-equiv="Cache-Control" content="no-transform"/>
<meta http-equiv="Cache-Control" content="no-siteapp"/>
<meta name="applicable-device" content="pc,mobile">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<script src="/static/js/layui/layui.js"></script>
<link rel="stylesheet" type="text/css" href="/static/js/layui/css/font-awesome.css"/>
<link rel="stylesheet" type="text/css" href="/static/js/layui/css/layui.css"/>
<link rel="stylesheet" type="text/css" href="/static/css/login.css"/>
<script src="/static/js/center.js?v={:release()}"></script>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/>
</head>
<body>
<div id="header"></div>
<div id="content" class="userLogin layui-fluid">
<div class="formLogin form-items active">
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title">
<li class="layui-this" data-action="login">账号登录</li>
<li data-action="mobileLogin">免密登录</li>
</ul>
<div class="layui-tab-content pb0">
<div class="layui-tab-item layui-show">
<form class="layui-form login" action="/index/user/login" method="post">
<div class="layui-form-item item-input">
<input type="text" id="nickname" name="nickname" lay-verify="required" data-title="账号"
placeholder="{:__('请输入账号或邮箱')}" class="inputStyle" value="">
</div>
<div class="layui-form-item item-input">
<input type="password" id="pwd" name="pwd" lay-verify="required" data-title="密码"
maxlength="32"
placeholder="{:__('密码')}" class="inputStyle" value="">
<span class="fr-icon visiblePwd"><i class="layui-icon fa-eye-slash"></i></span>
</div>
</form>
</div>
<div class="layui-tab-item">
<form class="layui-form mobileLogin" action="/index/user/mobileLogin" method="post">
<div class="layui-form-item item-input">
<input type="text" id="mobile" name="mobile" lay-verify="required" data-title="手机号"
placeholder="{:__('请输入手机号码')}" class="inputStyle mobile" value="15100000000">
</div>
<div class="layui-form-item item-input">
<input type="text" id="captcha" name="captcha" lay-verify="required" data-title="验证码"
maxlength="6"
placeholder="{:__('验证码')}" class="inputStyle" value="123456">
<input type="text" hidden name="event" class="event" value="login">
<span class="fr-icon getCaptcha" lay-ajax data-url="/api/ajax/smsSend"
data-object="mobile:mobile,event:event">获取验证码</span>
</div>
</form>
</div>
</div>
</div>
<div class="layui-form">
<input type="hidden" id="token" name="__token__" value="{:token()}"/>
<div class="layui-form-item">
<div class="fl">
<input type="checkbox" name="remember" lay-skin="primary"
title="{:__('记住密码')}" checked>
</div>
<div class="fr">
<a lay-open data-title="找回密码" data-area="500px,320px" data-object="top"
data-url="/index/user/forgot"
class="forgot-link" style="margin-top: 7px;">{:__('忘记密码?')}</a>
</div>
</div>
<div class="layui-form-item">
<input id="iframeSubmit" type="submit" value="{:__('立即登录')}"
class="layui-btn layui-btn-login layui-btn-fluid layui-btn-normal">
</div>
<div class="agreement">
<span>未注册手机验证后自动登录,注册即代表同意<a href="#">《用户协议》</a>以及网站<a
href="#">《隐私保护指引》</a></span>
</div>
</div>
</div>
<div class="scanLogin form-items">
<div class="qrcode-title">扫码登录</div>
<div class="qrcode-Box">
<div class="qrcode-img" id="qrcode" title="">
<canvas width="150" height="150" style="display: none;"></canvas>
<img id="scanCover" src="/static/images/qrcode-qun.png" style="display: block;" width="150" height="150"
alt="Scan me!">
</div>
<p>打开<a href="#" target="_blank" rel="noopener noreferrer">{$site_name} App</a></p>
<p>在「我的」页面右上角打开扫一扫</p>
</div>
</div>
<div class="loginLine"></div>
<div class="socialLogin">
<span class="social-title">社交帐号登录</span>
<div class="social-group">
<a class="social-item" href="{:url('/index/third/login',['type'=>'weixin'])}&ref={$referer}"
target="_top">
<span>
<i class="layui-icon layui-icon-login-wechat"></i>
<span class="tit">微信</span>
</span>
</a>
<a class="social-item" href="{:url('/index/third/login',['type'=>'qq'])}&ref={$referer}"
target="_top">
<span>
<i class="layui-icon layui-icon-login-qq"></i>
<span class="tit">QQ</span>
</span>
</a>
<a class="social-item" href="{:url('/index/third/login',['type'=>'weibo'])}&ref={$referer}"
target="_top">
<span><i class="layui-icon layui-icon-login-weibo"></i>
<span class="tit">微博</span></span>
</a>
</div>
</div>
<div class="appUserDown">
<div class="fr">
<a class="link" href="#" target="_top">
<span>
<i class="layui-icon fa-apple"></i>
<i class="layui-icon fa-android"></i>
<i class="layui-icon fa-windows"></i>
<span class="tit">下载 APP</span>
</span>
</a>
</div>
</div>
<div class="switchTabs" id="switchTabs">
<img class="switch-item active" data-action="scanLogin" src="/static/images/qrcode-login.png" alt="qrcode">
<img class="switch-item" data-action="login" src="/static/images/mobile-login.png" alt="qrcode">
</div>
</div>
<script>
layui.use(['jquery', 'layer'], function (e) {
let $ = layui.jquery;
let layer = layui.layer;
let queryTicket = null;
/* 点击执行登录 */
$('#iframeSubmit').click(function (e) {
let data = {};
let action = $('li.layui-this').data('action');
let form = $('form.' + action);
form.find('input').each(function (index, item) {
let value = $(item).val();
let name = $(item).attr('name');
let title = $(item).data('title');
if (!value) {
layer.msg(title + '不能为空', 'info');
$(item).focus();
return false;
}
data[name] = value;
});
/* 发送登录数据 */
if (Object.keys(data).length >= 2) {
$.post(form.attr('action'), data, function (res) {
if (res.code === 200) {
layer.msg(res.msg);
setTimeout(function () {
window.location.href = '/index/user/index';
}, 1000);
} else {
layer.msg(res.msg, 'error')
}
}, 'json');
}
})
/* 显示隐藏密码 */
$('.visiblePwd').click(function () {
let type = $('#pwd').attr('type');
if (type === 'password') {
$('#pwd').attr('type', 'text');
$(this).find('i.layui-icon').addClass('fa-eye').removeClass('fa-eye-slash');
} else {
$('#pwd').attr('type', 'password');
$(this).find('i.layui-icon').addClass('fa-eye-slash').removeClass('fa-eye');
}
});
/* 切换登录方式 */
$("#switchTabs .switch-item").click(function () {
$(this).removeClass('active');
let action = $(this).data('action');
$("#switchTabs .switch-item").not($(this)).addClass('active');
if (action === 'scanLogin') {
$('.scanLogin').addClass('active');
$('.formLogin').removeClass('active');
$.get('/index/user/scanLogin', {}, function (res) {
if (res.code === 200) {
!queryTicket && queryRequest(res.data.ticket);
$('#scanCover').attr('src', res.data.qrcode || '/static/images/qrcode.png');
} else {
layer.msg(res.msg, 'info');
}
})
} else {
clearInterval(queryTicket);
queryTicket = null;
$('.formLogin').addClass('active');
$('.scanLogin').removeClass('active');
}
});
/* 定时器 */
const queryRequest = function (ticket) {
queryTicket = setInterval(function () {
$.post('/index/user/scanTicket', {
ticket: ticket,
}, function (res) {
if (res.code === 200) {
clearInterval(queryTicket);
top.layer.msg(res.msg);
top.location.reload();
}
}, 'json');
}, 1000);
}
});
</script>
</body>
</html>