mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-22 19:44:02 +08:00
简化登录相关UI
This commit is contained in:
parent
be8937ddcf
commit
2d944cf9af
@ -1,38 +1,29 @@
|
|||||||
<form class="kg-login-form layui-form" method="POST" action="{{ url({'for':'admin.login'}) }}">
|
<form class="kg-login-form layui-form" method="POST" action="{{ url({'for':'admin.login'}) }}">
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
|
||||||
<legend>后台登录</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机/邮箱" lay-verify="required">
|
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-password"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
|
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if captcha.enabled == 1 %}
|
{% if captcha.enabled == 1 %}
|
||||||
<div class="layui-form-item">
|
<div id="captcha-block" class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
<button id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" type="button" data-app-id="{{ captcha.app_id }}">点击完成验证</button>
|
||||||
<span id="verify-btn" class="kg-verify-btn-ok layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
{% set disabled = captcha.enabled ? 'disabled="disabled"' : '' %}
|
{% set disabled = captcha.enabled ? 'disabled="disabled"' : '' %}
|
||||||
<button id="submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" {{ disabled }} lay-submit="true" lay-filter="go">登录</button>
|
<button id="submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" {{ disabled }} lay-submit="true" lay-filter="go">立即登录</button>
|
||||||
<input type="hidden" name="ticket">
|
<input type="hidden" name="ticket">
|
||||||
<input type="hidden" name="rand">
|
<input type="hidden" name="rand">
|
||||||
</div>
|
</div>
|
||||||
@ -61,8 +52,7 @@
|
|||||||
if (res.ret === 0) {
|
if (res.ret === 0) {
|
||||||
$('input[name=ticket]').val(res.ticket);
|
$('input[name=ticket]').val(res.ticket);
|
||||||
$('input[name=rand]').val(res.randstr);
|
$('input[name=rand]').val(res.randstr);
|
||||||
$('#captcha-btn').remove();
|
$('#captcha-block').hide();
|
||||||
$('#verify-btn').removeClass('layui-hide');
|
|
||||||
$('#submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
|
$('#submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,14 +40,14 @@ class Account extends Service
|
|||||||
{
|
{
|
||||||
$post = $this->request->getPost();
|
$post = $this->request->getPost();
|
||||||
|
|
||||||
$captchaValidator = new CaptchaValidator();
|
|
||||||
|
|
||||||
$captchaValidator->checkCode($post['ticket'], $post['rand']);
|
|
||||||
|
|
||||||
$accountValidator = new AccountValidator();
|
$accountValidator = new AccountValidator();
|
||||||
|
|
||||||
$user = $accountValidator->checkUserLogin($post['account'], $post['password']);
|
$user = $accountValidator->checkUserLogin($post['account'], $post['password']);
|
||||||
|
|
||||||
|
$captchaValidator = new CaptchaValidator();
|
||||||
|
|
||||||
|
$captchaValidator->checkCode($post['ticket'], $post['rand']);
|
||||||
|
|
||||||
$this->auth->saveAuthInfo($user);
|
$this->auth->saveAuthInfo($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,38 +7,30 @@
|
|||||||
<a><cite>重置密码</cite></a>
|
<a><cite>重置密码</cite></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="register-container">
|
<div class="account-container container">
|
||||||
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.reset_pwd'}) }}">
|
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.reset_pwd'}) }}">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input id="cv-account" class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
<input id="cv-account" class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-password"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="password" name="new_password" autocomplete="off" placeholder="新密码" lay-verify="required">
|
<input class="layui-input" type="password" name="new_password" autocomplete="off" placeholder="新密码" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<div class="verify-input-inline">
|
||||||
<div class="layui-inline verify-input-inline">
|
|
||||||
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline verify-btn-inline">
|
<div class="verify-btn-inline">
|
||||||
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button">获取验证码</button>
|
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<span id="cv-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
|
||||||
<span id="cv-verify-btn" class="verify-btn-ok layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即重置</button>
|
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即重置</button>
|
||||||
|
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
|
||||||
<input id="cv-ticket" type="hidden" name="ticket">
|
<input id="cv-ticket" type="hidden" name="ticket">
|
||||||
<input id="cv-rand" type="hidden" name="rand">
|
<input id="cv-rand" type="hidden" name="rand">
|
||||||
</div>
|
</div>
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
<a><cite>登录</cite></a>
|
<a><cite>登录</cite></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="login-container module">
|
<div class="login-container container">
|
||||||
<div class="layui-tab layui-tab-brief login-tab">
|
<div class="layui-tab layui-tab-brief login-tab">
|
||||||
<ul class="layui-tab-title kg-tab-title">
|
<ul class="layui-tab-title login-tab-title">
|
||||||
<li class="layui-this">密码登录</li>
|
<li class="layui-this">密码登录</li>
|
||||||
<li>验证码登录</li>
|
<li>验证码登录</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -22,8 +22,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-center">
|
<div class="link">
|
||||||
<a class="login-link" href="{{ url({'for':'web.account.register'}) }}">免费注册</a>
|
<a class="login-link" href="{{ url({'for':'web.account.register'}) }}">免费注册</a>
|
||||||
|
<span class="separator">·</span>
|
||||||
<a class="forget-link" href="{{ url({'for':'web.account.forget_pwd'}) }}">忘记密码</a>
|
<a class="forget-link" href="{{ url({'for':'web.account.forget_pwd'}) }}">忘记密码</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,21 +1,17 @@
|
|||||||
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.pwd_login'}) }}">
|
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.pwd_login'}) }}">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-password"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
|
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div id="captcha-block" class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
<button id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" type="button" data-app-id="{{ captcha.app_id }}">点击完成验证</button>
|
||||||
<span id="verify-btn" class="verify-btn-ok layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
|
@ -1,30 +1,22 @@
|
|||||||
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.verify_login'}) }}">
|
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.verify_login'}) }}">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input id="cv-account" class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
<input id="cv-account" class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<div class="verify-input-inline">
|
||||||
<div class="layui-inline verify-input-inline">
|
|
||||||
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline verify-btn-inline">
|
<div class="verify-btn-inline">
|
||||||
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button">获取验证码</button>
|
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<span id="cv-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
|
||||||
<span id="cv-verify-btn" class="verify-btn-ok layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即登录</button>
|
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即登录</button>
|
||||||
<input type="hidden" name="return_url" value="{{ return_url }}">
|
<input type="hidden" name="return_url" value="{{ return_url }}">
|
||||||
|
<input id="cv-app-id" type="hidden" name="captcha_app_id" value="{{ captcha.app_id }}">
|
||||||
<input id="cv-ticket" type="hidden" name="ticket">
|
<input id="cv-ticket" type="hidden" name="ticket">
|
||||||
<input id="cv-rand" type="hidden" name="rand">
|
<input id="cv-rand" type="hidden" name="rand">
|
||||||
</div>
|
</div>
|
||||||
|
@ -7,39 +7,31 @@
|
|||||||
<a><cite>注册</cite></a>
|
<a><cite>注册</cite></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="register-container">
|
<div class="account-container container">
|
||||||
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.do_register'}) }}">
|
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.do_register'}) }}">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input id="cv-account" class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
<input id="cv-account" class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-password"></i></label>
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
|
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<div class="verify-input-inline">
|
||||||
<div class="layui-inline verify-input-inline">
|
|
||||||
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline verify-btn-inline">
|
<div class="verify-btn-inline">
|
||||||
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<span id="cv-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
|
||||||
<span id="cv-verify-btn" class="verify-btn-ok layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即注册</button>
|
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即注册</button>
|
||||||
<input type="hidden" name="return_url" value="{{ return_url }}">
|
<input type="hidden" name="return_url" value="{{ return_url }}">
|
||||||
|
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
|
||||||
<input id="cv-ticket" type="hidden" name="ticket">
|
<input id="cv-ticket" type="hidden" name="ticket">
|
||||||
<input id="cv-rand" type="hidden" name="rand">
|
<input id="cv-rand" type="hidden" name="rand">
|
||||||
</div>
|
</div>
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
{{ partial('course/list_filter') }}
|
{{ partial('course/list_filter') }}
|
||||||
|
|
||||||
{% if pager.total_pages > 0 %}
|
{% if pager.total_pages > 0 %}
|
||||||
<div class="course-list module clearfix">
|
<div class="course-list container clearfix">
|
||||||
{% for item in pager.items %}
|
{% for item in pager.items %}
|
||||||
{{ course_card(item) }}
|
{{ course_card(item) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="search-empty module">
|
<div class="search-empty container">
|
||||||
<div class="icon"><i class="layui-icon layui-icon-face-surprised"></i></div>
|
<div class="icon"><i class="layui-icon layui-icon-face-surprised"></i></div>
|
||||||
<div class="text">没有检索到相关课程哦</div>
|
<div class="text">没有检索到相关课程哦</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<div class="course-filter module">
|
<div class="course-filter container">
|
||||||
<div class="filter-group">
|
<div class="filter-group">
|
||||||
<div class="title">方向</div>
|
<div class="title">方向</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{% if course.me.owned == 0 and course.market_price > 0 %}
|
{% if course.me.owned == 0 and course.market_price > 0 %}
|
||||||
<div class="sidebar-order module">
|
<div class="sidebar-order container">
|
||||||
<div class="order">
|
<div class="order">
|
||||||
{% set order_url = url({'for':'web.order.confirm'},{'item_id':course.id,'item_type':'course'}) %}
|
{% set order_url = url({'for':'web.order.confirm'},{'item_id':course.id,'item_type':'course'}) %}
|
||||||
<a class="layui-btn layui-btn-fluid layui-bg-red" href="{{ order_url }}">立即购买</a>
|
<a class="layui-btn layui-btn-fluid layui-bg-red" href="{{ order_url }}">立即购买</a>
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="course-meta module clearfix">
|
<div class="course-meta container clearfix">
|
||||||
{{ partial('course/meta') }}
|
{{ partial('course/meta') }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -25,7 +25,7 @@
|
|||||||
{% set show_tab_consults = course.consult_count > 0 ? 1 : 0 %}
|
{% set show_tab_consults = course.consult_count > 0 ? 1 : 0 %}
|
||||||
{% set show_tab_reviews = course.review_count > 0 ? 1 : 0 %}
|
{% set show_tab_reviews = course.review_count > 0 ? 1 : 0 %}
|
||||||
|
|
||||||
<div class="layout-content module">
|
<div class="layout-content container">
|
||||||
<div class="layui-tab layui-tab-brief course-tab">
|
<div class="layui-tab layui-tab-brief course-tab">
|
||||||
<ul class="layui-tab-title">
|
<ul class="layui-tab-title">
|
||||||
<li class="layui-this">详情</li>
|
<li class="layui-this">详情</li>
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
<div class="index-module index-carousel module">
|
<div class="index-container index-carousel container">
|
||||||
<div class="layui-carousel" id="carousel">
|
<div class="layui-carousel" id="carousel">
|
||||||
<div class="carousel" carousel-item>
|
<div class="carousel" carousel-item>
|
||||||
{% for slide in slides %}
|
{% for slide in slides %}
|
||||||
@ -41,21 +41,21 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="index-module module">
|
<div class="index-container container">
|
||||||
<div class="header">新上课程</div>
|
<div class="header">新上课程</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ category_courses(new_courses) }}
|
{{ category_courses(new_courses) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="index-module module">
|
<div class="index-container container">
|
||||||
<div class="header">免费课程</div>
|
<div class="header">免费课程</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ category_courses(free_courses) }}
|
{{ category_courses(free_courses) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="index-module module">
|
<div class="index-container container">
|
||||||
<div class="header">会员课程</div>
|
<div class="header">会员课程</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ category_courses(vip_courses) }}
|
{{ category_courses(vip_courses) }}
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
<a><cite>确认订单</cite></a>
|
<a><cite>确认订单</cite></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="cart-item-list module">
|
<div class="cart-item-list container">
|
||||||
{% if confirm.item_type == 'course' %}
|
{% if confirm.item_type == 'course' %}
|
||||||
{% set course = confirm.item_info.course %}
|
{% set course = confirm.item_info.course %}
|
||||||
{{ cart_course_card(course, auth_user) }}
|
{{ cart_course_card(course, auth_user) }}
|
||||||
@ -53,7 +53,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="cart-stats module clearfix">
|
<div class="cart-stats container clearfix">
|
||||||
<div class="info">
|
<div class="info">
|
||||||
商品总价:<span class="amount">¥{{ confirm.total_amount }}</span>
|
商品总价:<span class="amount">¥{{ confirm.total_amount }}</span>
|
||||||
优惠金额:<span class="amount">¥{{ confirm.discount_amount }}</span>
|
优惠金额:<span class="amount">¥{{ confirm.discount_amount }}</span>
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<a><cite>支付订单</cite></a>
|
<a><cite>支付订单</cite></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="payment module">
|
<div class="payment container">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
订单名称:<span>{{ order.subject }}</span>
|
订单名称:<span>{{ order.subject }}</span>
|
||||||
订单编号:<span>{{ order.sn }}</span>
|
订单编号:<span>{{ order.sn }}</span>
|
||||||
|
@ -28,8 +28,8 @@
|
|||||||
<img src="{{ course.cover }}!cover_270" alt="{{ course.title|e }}" title="{{ course.title|e }}">
|
<img src="{{ course.cover }}!cover_270" alt="{{ course.title|e }}" title="{{ course.title|e }}">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="title">
|
<div class="title layui-elip">
|
||||||
<a href="{{ course_url }}" title="{{ course.title|e }}">{{ substr(course.title,0,15) }}</a>
|
<a href="{{ course_url }}" title="{{ course.title|e }}">{{ course.title }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="meta">
|
<div class="meta">
|
||||||
{% if course.market_price > 0 %}
|
{% if course.market_price > 0 %}
|
||||||
@ -54,8 +54,8 @@
|
|||||||
<img src="{{ course.cover }}!cover_270" alt="{{ course.title|e }}">
|
<img src="{{ course.cover }}!cover_270" alt="{{ course.title|e }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div class="title">
|
<div class="title layui-elip">
|
||||||
<a href="{{ course_url }}" title="{{ course.title|e }}">{{ substr(course.title,0,15) }}</a>
|
<a href="{{ course_url }}" title="{{ course.title|e }}">{{ course.title }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="meta">
|
<div class="meta">
|
||||||
{% if course.market_price > 0 %}
|
{% if course.market_price > 0 %}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div class="title">
|
<div class="title layui-elip">
|
||||||
<a href="{{ course_url }}">{{ item.title }}</a>
|
<a href="{{ course_url }}">{{ item.title }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="summary">{{ item.summary }}</div>
|
<div class="summary">{{ item.summary }}</div>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layout-main clearfix">
|
<div class="layout-main clearfix">
|
||||||
<div class="layout-content module">
|
<div class="layout-content container">
|
||||||
{% if pager.total_pages > 0 %}
|
{% if pager.total_pages > 0 %}
|
||||||
{% if type == 'course' %}
|
{% if type == 'course' %}
|
||||||
{{ partial('search/content_course') }}
|
{{ partial('search/content_course') }}
|
||||||
|
@ -106,12 +106,12 @@ class Account extends Validator
|
|||||||
|
|
||||||
public function checkVerifyLogin($name, $code)
|
public function checkVerifyLogin($name, $code)
|
||||||
{
|
{
|
||||||
|
$account = $this->checkAccount($name);
|
||||||
|
|
||||||
$verify = new Verify();
|
$verify = new Verify();
|
||||||
|
|
||||||
$verify->checkCode($name, $code);
|
$verify->checkCode($name, $code);
|
||||||
|
|
||||||
$account = $this->checkAccount($name);
|
|
||||||
|
|
||||||
$userRepo = new UserRepo();
|
$userRepo = new UserRepo();
|
||||||
|
|
||||||
return $userRepo->findById($account->id);
|
return $userRepo->findById($account->id);
|
||||||
|
@ -23,17 +23,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.kg-login-form {
|
.kg-login-form {
|
||||||
width: 420px;
|
width: 400px;
|
||||||
margin: 100px auto;
|
margin: 100px auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.kg-login-form .layui-input-block {
|
.kg-login-form .layui-input-block {
|
||||||
margin-left: 60px;
|
margin-left: 0;
|
||||||
width: 300px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kg-login-form .layui-form-label {
|
|
||||||
width: 30px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.kg-input-inline {
|
.kg-input-inline {
|
||||||
@ -42,10 +37,6 @@
|
|||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.kg-verify-btn-ok {
|
|
||||||
color: green;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kg-side-menu-bar {
|
.kg-side-menu-bar {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
@ -22,10 +22,6 @@ body {
|
|||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-white {
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-badge, .layui-badge-rim {
|
.layui-badge, .layui-badge-rim {
|
||||||
padding-bottom: 1px;
|
padding-bottom: 1px;
|
||||||
}
|
}
|
||||||
@ -96,7 +92,7 @@ body {
|
|||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.module {
|
.container {
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
@ -127,19 +123,19 @@ body {
|
|||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.index-module .layui-tab {
|
.index-container .layui-tab {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.index-module .layui-tab-title {
|
.index-container .layui-tab-title {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.index-module .layui-tab-content {
|
.index-container .layui-tab-content {
|
||||||
padding: 20px 0 0 0;
|
padding: 20px 0 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.index-module .header {
|
.index-container .header {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
padding-bottom: 15px;
|
padding-bottom: 15px;
|
||||||
@ -474,7 +470,7 @@ body {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.separator {
|
.package-course-list .separator {
|
||||||
color: #666;
|
color: #666;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding-top: 35px;
|
padding-top: 35px;
|
||||||
@ -789,30 +785,58 @@ body {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.verify-btn-ok {
|
.account-container {
|
||||||
color: green;
|
padding-top: 40px;
|
||||||
|
padding-bottom: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account-form {
|
.account-form {
|
||||||
width: 540px;
|
width: 400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.account-form .layui-input-block {
|
||||||
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account-form .verify-input-inline {
|
.account-form .verify-input-inline {
|
||||||
width: 308px;
|
display: inline-block;
|
||||||
|
width: 283px;
|
||||||
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account-form .verify-btn-inline {
|
.account-form .verify-btn-inline {
|
||||||
margin-right: 0;
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-container {
|
.verify-btn-inline button {
|
||||||
|
min-width: 108px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-tab {
|
.login-tab {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.login-tab .layui-tab-title {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.login-tab .layui-tab-content {
|
.login-tab .layui-tab-content {
|
||||||
padding-top: 30px;
|
padding-top: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.login-container .link {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-container .link a {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-container .link .separator {
|
||||||
|
margin: 0 15px;
|
||||||
|
color: #999;
|
||||||
|
}
|
@ -7,8 +7,7 @@ var captcha = new TencentCaptcha(
|
|||||||
if (res.ret === 0) {
|
if (res.ret === 0) {
|
||||||
$('#ticket').val(res.ticket);
|
$('#ticket').val(res.ticket);
|
||||||
$('#rand').val(res.randstr);
|
$('#rand').val(res.randstr);
|
||||||
$('#captcha-btn').remove();
|
$('#captcha-block').hide();
|
||||||
$('#verify-btn').removeClass('layui-hide');
|
|
||||||
$('#submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
|
$('#submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,45 +1,78 @@
|
|||||||
var $ = layui.jquery;
|
var $ = layui.jquery;
|
||||||
var layer = layui.layer;
|
var layer = layui.layer;
|
||||||
|
|
||||||
|
var timeCounting = false;
|
||||||
|
var $account = $('#cv-account');
|
||||||
|
var $emit = $('#cv-verify-emit');
|
||||||
|
|
||||||
var captcha = new TencentCaptcha(
|
var captcha = new TencentCaptcha(
|
||||||
$('#cv-captcha-btn')[0],
|
$emit[0],
|
||||||
$('#cv-captcha-btn').attr('data-app-id'),
|
$('#cv-app-id').val(),
|
||||||
function (res) {
|
function (res) {
|
||||||
if (res.ret === 0) {
|
if (res.ret === 0) {
|
||||||
$('#cv-ticket').val(res.ticket);
|
$('#cv-ticket').val(res.ticket);
|
||||||
$('#cv-rand').val(res.randstr);
|
$('#cv-rand').val(res.randstr);
|
||||||
$('#cv-captcha-btn').remove();
|
if (isEmail($account.val()) || isPhone($account.val())) {
|
||||||
$('#cv-verify-btn').removeClass('layui-hide');
|
|
||||||
$('#cv-verify-emit').removeClass('layui-btn-disabled').removeAttr('disabled');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
$('#cv-verify-emit').on('click', function () {
|
|
||||||
var account = $('#cv-account').val();
|
|
||||||
var regEmail = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
|
|
||||||
var regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/;
|
|
||||||
var isEmail = regEmail.test(account);
|
|
||||||
var isPhone = regPhone.test(account);
|
|
||||||
if (isEmail || isPhone) {
|
|
||||||
var postUrl = null;
|
var postUrl = null;
|
||||||
var postData = {
|
var postData = {
|
||||||
ticket: $('#cv-ticket').val(),
|
ticket: $('#cv-ticket').val(),
|
||||||
rand: $('#cv-rand').val(),
|
rand: $('#cv-rand').val(),
|
||||||
};
|
};
|
||||||
if (isPhone) {
|
if (isPhone($account.val())) {
|
||||||
postData.phone = account;
|
postData.phone = $account.val();
|
||||||
postUrl = '/verify/sms/code';
|
postUrl = '/verify/sms/code';
|
||||||
} else if (isEmail) {
|
} else if (isEmail($account.val())) {
|
||||||
postData.email = account;
|
postData.email = $account.val();
|
||||||
postUrl = '/verify/email/code';
|
postUrl = '/verify/email/code';
|
||||||
}
|
}
|
||||||
$.post(postUrl, postData, function (res) {
|
$.ajax({
|
||||||
if (res.code === 0) {
|
type: 'POST',
|
||||||
$('#cv-submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
|
url: postUrl,
|
||||||
layer.msg('发送验证码成功', {icon: 1});
|
data: postData,
|
||||||
} else {
|
success: function (res) {
|
||||||
layer.msg('发送验证码失败', {icon: 2});
|
|
||||||
|
},
|
||||||
|
error: function (xhr) {
|
||||||
|
var json = JSON.parse(xhr.responseText);
|
||||||
|
layer.msg(json.msg, {icon: 2});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
$('#cv-submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
|
||||||
|
$emit.addClass('layui-btn-disabled').attr('disabled', 'disabled');
|
||||||
|
showCountDown($emit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$account.on('keyup', function () {
|
||||||
|
var accountOk = isEmail($(this).val()) || isPhone($(this).val());
|
||||||
|
if (accountOk && !timeCounting) {
|
||||||
|
$emit.removeClass('layui-btn-disabled').removeAttr('disabled');
|
||||||
|
} else {
|
||||||
|
$emit.addClass('layui-btn-disabled').attr('disabled', 'disabled');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function showCountDown(obj) {
|
||||||
|
var serverTime = new Date().getTime();
|
||||||
|
var endTime = serverTime + 60 * 1000;
|
||||||
|
layui.util.countdown(endTime, serverTime, function (date, serverTime, timer) {
|
||||||
|
var left = date[0] * 86400 + date[1] * 3600 + date[2] * 60 + date[3];
|
||||||
|
obj.text(left + '秒');
|
||||||
|
if (left === 0) {
|
||||||
|
obj.removeClass('layui-btn-disabled').removeAttr('disabled').text('重新发送');
|
||||||
|
clearInterval(timer);
|
||||||
|
timeCounting = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
timeCounting = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isEmail(email) {
|
||||||
|
return /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(email);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isPhone(phone) {
|
||||||
|
return /^1(3|4|5|6|7|8|9)\d{9}$/.test(phone);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user