提交 97269bea 编写于 作者: D Devil

1.后台、前端登录支持帐号密码,邮箱验证码,手机验证码。2.微信小程序登录新规适配。3.api新增帐号密码登录验证码登录接口。4.部分细节优化+bug修复

上级 5b97e404
...@@ -23,12 +23,13 @@ use app\service\AdminService; ...@@ -23,12 +23,13 @@ use app\service\AdminService;
class Admin extends Common class Admin extends Common
{ {
/** /**
* 构造方法 * 构造方法
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2016-12-03T12:39:08+0800 * @date 2021-03-03
*/ * @desc description
*/
public function __construct() public function __construct()
{ {
// 调用父类前置方法 // 调用父类前置方法
...@@ -36,11 +37,12 @@ class Admin extends Common ...@@ -36,11 +37,12 @@ class Admin extends Common
} }
/** /**
* [Index 管理员列表] * 管理员列表
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2016-12-06T21:31:53+0800 * @date 2021-03-03
* @desc description
*/ */
public function Index() public function Index()
{ {
...@@ -81,10 +83,11 @@ class Admin extends Common ...@@ -81,10 +83,11 @@ class Admin extends Common
/** /**
* 详情 * 详情
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 1.0.0 * @version 1.0.0
* @datetime 2019-08-05T08:21:54+0800 * @date 2021-03-03
* @desc description
*/ */
public function Detail() public function Detail()
{ {
...@@ -109,11 +112,12 @@ class Admin extends Common ...@@ -109,11 +112,12 @@ class Admin extends Common
} }
/** /**
* [SaveInfo 管理员添加/编辑页面] * 管理员添加/编辑页面
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2016-12-06T21:31:53+0800 * @date 2021-03-03
* @desc description
*/ */
public function SaveInfo() public function SaveInfo()
{ {
...@@ -178,11 +182,12 @@ class Admin extends Common ...@@ -178,11 +182,12 @@ class Admin extends Common
} }
/** /**
* [Save 管理员添加/编辑] * 管理员添加/编辑
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2016-12-07T21:58:19+0800 * @date 2021-03-03
* @desc description
*/ */
public function Save() public function Save()
{ {
...@@ -211,12 +216,13 @@ class Admin extends Common ...@@ -211,12 +216,13 @@ class Admin extends Common
} }
/** /**
* [Delete 管理员删除] * 管理员删除
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2016-12-09T21:13:47+0800 * @date 2021-03-03
*/ * @desc description
*/
public function Delete() public function Delete()
{ {
// 是否ajax // 是否ajax
...@@ -238,11 +244,12 @@ class Admin extends Common ...@@ -238,11 +244,12 @@ class Admin extends Common
} }
/** /**
* [LoginInfo 登录页面] * 登录页面
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2016-12-03T12:55:53+0800 * @date 2021-03-03
* @desc description
*/ */
public function LoginInfo() public function LoginInfo()
{ {
...@@ -252,6 +259,9 @@ class Admin extends Common ...@@ -252,6 +259,9 @@ class Admin extends Common
return redirect(MyUrl('admin/index/index')); return redirect(MyUrl('admin/index/index'));
} }
// 登录方式
$this->assign('admin_login_type', MyC('admin_login_type', [], true));
// 背景图片 // 背景图片
$host = config('shopxo.attachment_host'); $host = config('shopxo.attachment_host');
$bg_images_list = [ $bg_images_list = [
...@@ -285,12 +295,13 @@ class Admin extends Common ...@@ -285,12 +295,13 @@ class Admin extends Common
} }
/** /**
* [Login 管理员登录] * 管理员登录
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2016-12-03T21:46:49+0800 * @date 2021-03-03
*/ * @desc description
*/
public function Login() public function Login()
{ {
// 是否ajax // 是否ajax
...@@ -304,13 +315,53 @@ class Admin extends Common ...@@ -304,13 +315,53 @@ class Admin extends Common
return AdminService::Login($params); return AdminService::Login($params);
} }
/**
* 验证码显示
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-03
* @desc description
*/
public function AdminVerifyEntry()
{
$params = [
'width' => 100,
'height' => 26,
'key_prefix' => 'admin_login',
];
$verify = new \base\Verify($params);
$verify->Entry();
}
/**
* 登录验证码发送
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-03
* @desc description
*/
public function LoginVerifySend()
{
// 是否ajax请求
if(!IS_AJAX)
{
return $this->error('非法访问');
}
// 调用服务层
return AdminService::LoginVerifySend($this->data_post);
}
/** /**
* [Logout 退出] * 退出
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2016-12-05T14:31:23+0800 * @date 2021-03-03
*/ * @desc description
*/
public function Logout() public function Logout()
{ {
AdminService::LoginLogout(); AdminService::LoginLogout();
......
...@@ -52,6 +52,8 @@ class Config extends Common ...@@ -52,6 +52,8 @@ class Config extends Common
// 静态数据 // 静态数据
$this->assign('common_excel_charset_list', lang('common_excel_charset_list')); $this->assign('common_excel_charset_list', lang('common_excel_charset_list'));
$this->assign('common_is_enable_list', lang('common_is_enable_list')); $this->assign('common_is_enable_list', lang('common_is_enable_list'));
$this->assign('common_login_type_list', lang('common_login_type_list'));
$this->assign('common_close_open_list', lang('common_close_open_list'));
// 配置信息 // 配置信息
$this->assign('data', ConfigService::ConfigList()); $this->assign('data', ConfigService::ConfigList());
...@@ -83,15 +85,41 @@ class Config extends Common ...@@ -83,15 +85,41 @@ class Config extends Common
*/ */
public function Save() public function Save()
{ {
// 数据处理 // 参数
// 商店二维码 $params = $_POST;
if(!isset($_POST['common_customer_store_qrcode']))
// 字段不存在赋值
$empty_value_field_list = [
'common_customer_store_qrcode'=>'',
];
if(!empty($empty_value_field_list))
{
foreach($empty_value_field_list as $fk=>$fv)
{
if(!isset($params[$fk]))
{
$params[$fk] = $fv;
}
}
}
// 默认值字段处理
$default_value_field_list = [
'admin_login_type'=>'username',
];
if(!empty($default_value_field_list))
{ {
$_POST['common_customer_store_qrcode'] = ''; foreach($default_value_field_list as $fk=>$fv)
{
if(empty($params[$fk]))
{
$params[$fk] = $fv;
}
}
} }
// 保存 // 保存
return ConfigService::ConfigSave($_POST); return ConfigService::ConfigSave($params);
} }
} }
?> ?>
\ No newline at end of file
...@@ -148,17 +148,14 @@ class Site extends Common ...@@ -148,17 +148,14 @@ class Site extends Common
// 时区 // 时区
$this->assign('site_timezone_list', lang('site_timezone_list')); $this->assign('site_timezone_list', lang('site_timezone_list'));
// 站点状态 // 关闭开启
$this->assign('site_site_state_list', lang('site_site_state_list')); $this->assign('common_close_open_list', lang('common_close_open_list'));
// 用户注册类型列表 // 登录方式
$this->assign('common_user_reg_state_list', lang('common_user_reg_state_list')); $this->assign('common_login_type_list', lang('common_login_type_list'));
// 是否开启用户登录
$this->assign('site_user_login_state_list', lang('site_user_login_state_list'));
// 获取验证码-开启图片验证码 // 用户注册类型列表
$this->assign('site_img_verify_state_list', lang('site_img_verify_state_list')); $this->assign('common_user_reg_type_list', lang('common_user_reg_type_list'));
// 图片验证码规则 // 图片验证码规则
$this->assign('site_images_verify_rules_list', lang('site_images_verify_rules_list')); $this->assign('site_images_verify_rules_list', lang('site_images_verify_rules_list'));
...@@ -276,12 +273,13 @@ class Site extends Common ...@@ -276,12 +273,13 @@ class Site extends Common
{ {
// 用户注册 // 用户注册
case 'register' : case 'register' :
$field_list[] = 'home_user_reg_state'; $field_list[] = 'home_user_reg_type';
$field_list[] = 'home_site_user_register_bg_images'; $field_list[] = 'home_site_user_register_bg_images';
break; break;
// 用户登录 // 用户登录
case 'login' : case 'login' :
$field_list[] = 'home_user_login_type';
$field_list[] = 'home_site_user_login_ad1_images'; $field_list[] = 'home_site_user_login_ad1_images';
$field_list[] = 'home_site_user_login_ad2_images'; $field_list[] = 'home_site_user_login_ad2_images';
$field_list[] = 'home_site_user_login_ad3_images'; $field_list[] = 'home_site_user_login_ad3_images';
......
...@@ -110,6 +110,16 @@ class Admin ...@@ -110,6 +110,16 @@ class Admin
'where_type' => 'like', 'where_type' => 'like',
], ],
], ],
[
'label' => '邮箱',
'view_type' => 'field',
'view_key' => 'email',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[ [
'label' => '角色组', 'label' => '角色组',
'view_type' => 'field', 'view_type' => 'field',
......
...@@ -16,35 +16,17 @@ ...@@ -16,35 +16,17 @@
* @version 0.0.1 * @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800 * @datetime 2016-12-01T21:51:08+0800
*/ */
return array( return [
// 站点关闭状态列表
'site_site_state_list' => array(
0 => array('value' => 0, 'name' => '关闭', 'checked' => true),
1 => array('value' => 1, 'name' => '开启'),
),
// 是否开启用户登录
'site_user_login_state_list' => array(
0 => array('value' => 0, 'name' => '关闭'),
1 => array('value' => 1, 'name' => '开启', 'checked' => true),
),
// 获取验证码-强制使用图片验证码状态列表
'site_img_verify_state_list' => array(
0 => array('value' => 0, 'name' => '关闭'),
1 => array('value' => 1, 'name' => '开启', 'checked' => true),
),
// 图片验证码 // 图片验证码
'site_images_verify_rules_list' => array( 'site_images_verify_rules_list' => [
0 => array('value' => 'bgcolor', 'name' => '彩色背景'), 0 => ['value' => 'bgcolor', 'name' => '彩色背景'],
1 => array('value' => 'textcolor', 'name' => '彩色文本'), 1 => ['value' => 'textcolor', 'name' => '彩色文本'],
2 => array('value' => 'point', 'name' => '干扰点'), 2 => ['value' => 'point', 'name' => '干扰点'],
3 => array('value' => 'line', 'name' => '干扰线'), 3 => ['value' => 'line', 'name' => '干扰线'],
), ],
// 时区 // 时区
'site_timezone_list' => array( 'site_timezone_list' => [
'Pacific/Pago_Pago' => '(标准时-11:00) 中途岛、萨摩亚群岛', 'Pacific/Pago_Pago' => '(标准时-11:00) 中途岛、萨摩亚群岛',
'Pacific/Rarotonga' => '(标准时-10:00) 夏威夷', 'Pacific/Rarotonga' => '(标准时-10:00) 夏威夷',
'Pacific/Gambier' => '(标准时-9:00) 阿拉斯加', 'Pacific/Gambier' => '(标准时-9:00) 阿拉斯加',
...@@ -69,15 +51,15 @@ return array( ...@@ -69,15 +51,15 @@ return array(
'Australia/Adelaide' => '(标准时+10:00) 悉尼、关岛', 'Australia/Adelaide' => '(标准时+10:00) 悉尼、关岛',
'Australia/Currie' => '(标准时+11:00) 马加丹、索罗门群岛', 'Australia/Currie' => '(标准时+11:00) 马加丹、索罗门群岛',
'Pacific/Fiji' => '(标准时+12:00) 奥克兰、惠灵顿、堪察加半岛' 'Pacific/Fiji' => '(标准时+12:00) 奥克兰、惠灵顿、堪察加半岛'
), ],
// seo // seo
// url模式列表 // url模式列表
'seo_url_model_list' => array( 'seo_url_model_list' => [
0 => array('value' => 0, 'name' => '兼容模式', 'checked' => true), 0 => ['value' => 0, 'name' => '兼容模式', 'checked' => true],
1 => array('value' => 1, 'name' => 'PATHINFO模式'), 1 => ['value' => 1, 'name' => 'PATHINFO模式'],
2 => array('value' => 2, 'name' => 'PATHINFO模式+短地址'), 2 => ['value' => 2, 'name' => 'PATHINFO模式+短地址'],
), ],
// 用户excel导出标题列表 // 用户excel导出标题列表
'excel_user_title_list' => [ 'excel_user_title_list' => [
...@@ -126,5 +108,5 @@ return array( ...@@ -126,5 +108,5 @@ return array(
'type' => 'string', 'type' => 'string',
], ],
], ],
); ];
?> ?>
\ No newline at end of file
...@@ -6,31 +6,152 @@ ...@@ -6,31 +6,152 @@
<div class="am-text-center"> <div class="am-text-center">
<span class="logo">ShopXO</span> <span class="logo">ShopXO</span>
</div> </div>
<div class="am-margin-top-lg admin-login"> <div class="am-margin-top-lg am-nbfc admin-login">
<div class="am-padding-sm"> {{if count($admin_login_type) gt 0}}
<form class="am-form form-validation" action="{{:MyUrl('admin/admin/login')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}"> <div data-am-widget="tabs" class="am-tabs am-tabs-d2 am-margin-0" data-am-tabs="{noSwipe: 1}">
<div class="am-g am-padding-top-sm"> {{if count($admin_login_type) gt 1}}
<div class="am-form-group am-form-group-refreshing"> <ul class="am-tabs-nav am-cf">
<input type="text" placeholder="用户名" name="username" pattern="{{:lang('common_regex_username')}}" data-validation-message="用户名格式 5~18 个字符(可以是字母数字下划线)" class="am-radius" required /> {{if in_array('username', $admin_login_type)}}
</div> <li class="am-active"><a href="[data-tab-panel-0]">帐号密码</a></li>
<div class="am-form-group am-form-group-refreshing form-horizontal m-t-20"> {{/if}}
<input type="password" placeholder="登录密码" name="login_pwd" pattern="{{:lang('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符" class="am-radius" required /> {{if in_array('email', $admin_login_type)}}
</div> <li class="{{if !in_array('username', $admin_login_type)}}am-active{{/if}}"><a href="[data-tab-panel-2]">邮箱验证码</a></li>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg"> {{/if}}
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'登录中...'}">登录</button> {{if in_array('sms', $admin_login_type)}}
</div> <li class="{{if !in_array('username', $admin_login_type) and !in_array('email', $admin_login_type)}}am-active{{/if}}"><a href="[data-tab-panel-1]">手机验证码</a></li>
{{/if}}
<div class="am-form-group am-form-group-refreshing am-text-left am-margin-bottom-0 am-margin-top-sm"> </ul>
<a href="javascript:;" class="text-muted" data-am-popover="{theme: 'danger sm', content: '请联系管理员重置密码', trigger: 'hover focus'}">忘记密码?</a> {{/if}}
<div class="am-tabs-bd am-padding-bottom-sm">
{{if in_array('username', $admin_login_type)}}
<div data-tab-panel-0 class="am-tab-panel am-active">
<!-- form start -->
<form class="am-form form-validation-username" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<label>用户名</label>
<input type="text" name="accounts" class="am-radius" placeholder="请输入用户名" pattern="{{:lang('common_regex_username')}}" data-validation-message="用户名格式 5~18 个字符(可以是字母数字下划线)" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>登录密码</label>
<div class="am-input-group am-input-group-sm">
<input type="password" name="pwd" class="am-radius" placeholder="请输入登录密码" pattern="{{:lang('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius am-icon-eye eye-submit" type="button"></button>
</span>
</div>
</div>
{{if MyC('admin_login_img_verify_state') eq 1}}
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>验证码</label>
<div class="am-input-group am-input-group-sm">
<input type="text" name="verify" class="am-radius" placeholder="请输入验证码" minlength="4" maxlength="4" data-validation-message="请输入图片验证码" required />
<span class="am-input-group-btn">
<span class="am-btn am-btn-default am-radius am-padding-0 form-verify">
<img src="{{:MyUrl('admin/admin/adminverifyentry')}}" class="am-radius c-p" id="form-verify-img" onClick="this.src=this.src+'#'+Math.random();" />
<a href="javascript:;" class="form-verify-tips" onClick="document.getElementById('form-verify-img').src='{{:MyUrl('admin/admin/adminverifyentry')}}#'+Math.random();">更换一张</a>
</span>
</span>
</div>
</div>
{{/if}}
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="username" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">登录</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
{{if in_array('email', $admin_login_type)}}
<div data-tab-panel-2 class="am-tab-panel {{if !in_array('username', $admin_login_type)}}am-active{{/if}}">
<!-- form start -->
<form class="am-form form-validation-email" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<label>电子邮箱</label>
<input type="email" name="accounts" class="am-radius" placeholder="请输入电子邮箱" data-validation-message="电子邮箱格式错误" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>验证码</label>
<div class="am-input-group am-input-group-sm">
<input type="number" name="verify" class="am-radius" placeholder="验证码" min="0" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('admin/admin/loginverifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation-email">获取验证码</button>
</span>
</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="email" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">登录</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
{{if in_array('sms', $admin_login_type)}}
<div data-tab-panel-1 class="am-tab-panel {{if !in_array('username', $admin_login_type) and !in_array('email', $admin_login_type)}}am-active{{/if}}">
<!-- form start -->
<form class="am-form form-validation-sms" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<label>手机号码</label>
<input type="text" name="accounts" class="am-radius" placeholder="请输入手机号码" pattern="{{:lang('common_regex_mobile')}}" data-validation-message="手机号码格式错误" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>验证码</label>
<div class="am-input-group am-input-group-sm">
<input type="number" name="verify" class="am-radius" placeholder="请输入验证码" min="0" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('admin/admin/loginverifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation-sms">获取验证码</button>
</span>
</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="sms" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">登录</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
<div class="am-padding-horizontal-sm am-nbfc">
<a href="javascript:;" class="text-muted" data-am-popover="{theme: 'danger sm', content: '请联系管理员重置密码', trigger: 'hover focus'}">忘记密码?</a>
</div> </div>
</div> </div>
</form> </div>
</div> {{else /}}
<div class="am-text-center am-padding-vertical-lg register-close"><i class="am-icon-warning"></i> 暂时关闭了登录</div>
{{/if}}
</div> </div>
</div> </div>
</div> </div>
<!-- content end --> <!-- content end -->
{{if MyC('common_img_verify_state') eq 1}}
<!-- verify win start -->
<div class="am-modal am-modal-no-btn" tabindex="-1" id="verify-win">
<div class="am-modal-dialog am-radius">
<div class="am-modal-hd">
<a href="javascript:;" class="am-close" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd">
<div class="base">
<input type="text" placeholder="图形验证码" minlength="4" maxlength="4" id="verify-img-value" data-validation-message="请输入有效的图形验证码" class="am-form-field am-radius" />
<div class="am-fl">
<img src="{{:MyUrl('admin/admin/adminverifyentry')}}" class="am-radius c-p" id="verify-img" onClick="this.src=this.src+'#'+Math.random();" />
<a href="javascript:;" class="verify-tips" onClick="document.getElementById('verify-img').src='{{:MyUrl('admin/admin/adminverifyentry')}}#'+Math.random();">看不清换一张</a>
</div>
</div>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block m-t-20 btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-win="1">确认</button>
</div>
</div>
</div>
<!-- verify win end -->
{{/if}}
<!-- 随机背景图片 --> <!-- 随机背景图片 -->
{{if MyC('admin_login_info_bg_images_rand') eq 1 and !empty($bg_images_list) and is_array($bg_images_list)}} {{if MyC('admin_login_info_bg_images_rand') eq 1 and !empty($bg_images_list) and is_array($bg_images_list)}}
<div class="bg-slides"> <div class="bg-slides">
......
...@@ -10,22 +10,26 @@ ...@@ -10,22 +10,26 @@
<a href="{{:MyUrl('admin/admin/index', $params)}}" class="am-fr am-text-sm am-margin-top-xs am-icon-mail-reply"> 返回</a> <a href="{{:MyUrl('admin/admin/index', $params)}}" class="am-fr am-text-sm am-margin-top-xs am-icon-mail-reply"> 返回</a>
</legend> </legend>
<div class="am-form-group"> <div class="am-form-group">
<label>用户名<span class="am-form-group-label-tips">创建后不可更改</span></label> <label>用户名{{if empty($data)}}<span class="am-form-group-label-tips-must">必填</span><span class="am-form-group-label-tips">创建后不可更改</span>{{else /}}<span class="am-form-group-label-tips">不可更改</span>{{/if}}</label>
<input type="text" placeholder="用户名" name="username" pattern="{{:lang('common_regex_username')}}" data-validation-message="用户名格式 5~18 个字符(可以是字母数字下划线)" class="am-radius" {{if !empty($data)}}value="{{$data.username}}" disabled{{/if}} required /> <input type="text" name="username" placeholder="用户名" pattern="{{:lang('common_regex_username')}}" data-validation-message="用户名格式 5~18 个字符(可以是字母数字下划线)" class="am-radius" {{if !empty($data['username'])}}value="{{$data.username}}" disabled{{/if}} required />
</div> </div>
<div class="am-form-group"> <div class="am-form-group">
<label>登录密码</label> <label>登录密码{{if empty($data)}}<span class="am-form-group-label-tips-must">必填</span>{{else /}}<span class="am-form-group-label-tips">选填</span>{{/if}}</label>
<input type="password" placeholder="登录密码" name="login_pwd" pattern="{{:lang('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符" class="am-radius" {{if empty($data)}}required{{/if}} /> <input type="password" name="login_pwd" placeholder="登录密码" pattern="{{:lang('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符" class="am-radius" {{if empty($data)}}required{{/if}} />
</div> </div>
<div class="am-form-group"> <div class="am-form-group">
<label>手机号码</label> <label>手机号码<span class="am-form-group-label-tips">选填</span></label>
<input type="text" placeholder="手机号码" name="mobile" pattern="{{:lang('common_regex_mobile')}}" data-validation-message="手机号码格式错误" class="am-radius" {{if !empty($data)}}value="{{$data.mobile}}"{{/if}} /> <input type="text" name="mobile" placeholder="手机号码" pattern="{{:lang('common_regex_mobile')}}" data-validation-message="手机号码格式错误" class="am-radius" {{if !empty($data['mobile'])}}value="{{$data.mobile}}"{{/if}} />
</div> </div>
<div class="am-form-group">
<label>电子邮箱<span class="am-form-group-label-tips">选填</span></label>
<input type="email" name="email" placeholder="电子邮箱" maxlength="60" data-validation-message="电子邮箱格式错误、最多60个字符" class="am-radius" value="{{if !empty($data['email'])}}{{$data.email}}{{/if}}" />
</div>
{{include file="lib/gender" /}} {{include file="lib/gender" /}}
{{if !isset($data['id']) or $admin['id'] neq $data['id']}} {{if !isset($data['id']) or $admin['id'] neq $data['id']}}
<div class="am-form-group"> <div class="am-form-group">
<label>权限组</label> <label>权限组<span class="am-form-group-label-tips-must">必选</span></label>
<select class="am-radius chosen-select" name="role_id" data-validation-message="请选择所属角色组" required> <select class="am-radius chosen-select" name="role_id" data-validation-message="请选择所属角色组" required>
<option value="">可选择...</option> <option value="">可选择...</option>
{{foreach $role_list as $v}} {{foreach $role_list as $v}}
...@@ -36,7 +40,7 @@ ...@@ -36,7 +40,7 @@
{{/if}} {{/if}}
<div class="am-form-group"> <div class="am-form-group">
<label>状态</label> <label>状态<span class="am-form-group-label-tips-must">必选</span></label>
<select name="status" class="am-radius chosen-select" data-validation-message="请选择用户状态" required> <select name="status" class="am-radius chosen-select" data-validation-message="请选择用户状态" required>
{{foreach :lang('common_admin_status_list') as $v}} {{foreach :lang('common_admin_status_list') as $v}}
<option value="{{$v.value}}" {{if isset($data['status']) and $data['status'] eq $v['value']}}selected{{else /}}{{if !isset($data['status']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['status']) and $data['status'] eq $v['value']}}selected{{else /}}{{if !isset($data['status']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
......
...@@ -5,44 +5,93 @@ ...@@ -5,44 +5,93 @@
<div class="content"> <div class="content">
<!-- form start --> <!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/config/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/config/index')}}"> <form class="am-form form-validation view-save" action="{{:MyUrl('admin/config/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/config/index')}}">
<div class="am-form-group"> <!-- 基础配置 -->
<label>{{$data.admin_excel_charset.name}}<span class="am-form-group-label-tips">{{$data.admin_excel_charset.describe}}</span></label> <div class="am-panel am-panel-default">
<select name="{{$data.admin_excel_charset.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.admin_excel_charset.error_tips}}" required> <div class="am-panel-hd">
{{foreach $common_excel_charset_list as $v}} <h3 class="am-panel-title">基础配置</h3>
<option value="{{$v.id}}" {{if isset($data['admin_excel_charset']['value']) and $data['admin_excel_charset']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option> </div>
{{/foreach}} <div class="am-panel-bd am-padding-vertical-xs">
</select> <div class="am-form-group">
</div> <label>{{$data.admin_excel_charset.name}}<span class="am-form-group-label-tips">{{$data.admin_excel_charset.describe}}</span></label>
<select name="{{$data.admin_excel_charset.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.admin_excel_charset.error_tips}}" required>
{{foreach $common_excel_charset_list as $v}}
<option value="{{$v.id}}" {{if isset($data['admin_excel_charset']['value']) and $data['admin_excel_charset']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_page_size.name}}<span class="am-form-group-label-tips">{{$data.common_page_size.describe}}</span></label>
<input type="number" name="{{$data.common_page_size.only_tag}}" placeholder="{{$data.common_page_size.name}}" pattern="{{:lang('common_regex_page_number')}}" data-validation-message="{{$data.common_page_size.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_page_size.value}}"{{/if}} required />
</div>
</div>
</div>
<div class="am-form-group"> <!-- 登录 -->
<label>{{$data.admin_login_info_bg_images_rand.name}}<span class="am-form-group-label-tips">{{$data.admin_login_info_bg_images_rand.describe}}</span></label> <div class="am-panel am-panel-default">
<select name="{{$data.admin_login_info_bg_images_rand.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.admin_login_info_bg_images_rand.error_tips}}" required> <div class="am-panel-hd">
{{foreach $common_is_enable_list as $v}} <h3 class="am-panel-title">登录</h3>
<option value="{{$v.id}}" {{if isset($data['admin_login_info_bg_images_rand']['value']) and $data['admin_login_info_bg_images_rand']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<div class="am-alert am-alert-warning" data-am-alert>
<p>1. 默认背景图片位于[ public/static/admin/default/images/login ]目录下</p>
<p>2. 变更图片后、需要在[ application/admin/controller/Admin.php ]文件中[ LoginInfo ]方法中修改[ bg_images_list ]变量</p>
</div> </div>
</div> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
<label>{{$data.admin_login_info_bg_images_rand.name}}<span class="am-form-group-label-tips">{{$data.admin_login_info_bg_images_rand.describe}}</span></label>
<select name="{{$data.admin_login_info_bg_images_rand.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.admin_login_info_bg_images_rand.error_tips}}" required>
{{foreach $common_is_enable_list as $v}}
<option value="{{$v.id}}" {{if isset($data['admin_login_info_bg_images_rand']['value']) and $data['admin_login_info_bg_images_rand']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<div class="am-alert am-alert-warning" data-am-alert>
<p>1. 默认背景图片位于[ public/static/admin/default/images/login ]目录下</p>
<p>2. 变更图片后、需要在[ application/admin/controller/Admin.php ]文件中[ LoginInfo ]方法中修改[ bg_images_list ]变量</p>
</div>
</div>
<div class="am-form-group">
<label>{{$data.admin_login_type.name}}<span class="am-form-group-label-tips">{{$data.admin_login_type.describe}}</span></label>
<select name="{{$data.admin_login_type.only_tag}}" multiple="multiple" class="am-radius chosen-select" data-placeholder="{{$data.admin_login_type.name}}" data-validation-message="{{$data.admin_login_type.error_tips}}" required>
{{foreach $common_login_type_list as $v}}
<option value="{{$v.value}}" {{if isset($data['admin_login_type']['value']) and in_array($v['value'], $data['admin_login_type']['value'])}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.admin_login_img_verify_state.name}}<span class="am-form-group-label-tips">{{$data.admin_login_img_verify_state.describe}}</span></label>
<select name="{{$data.admin_login_img_verify_state.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.admin_login_img_verify_state.error_tips}}" required>
{{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['admin_login_img_verify_state']['value']) and $data['admin_login_img_verify_state']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
</div>
</div>
<div class="am-form-group"> <!-- 商品 -->
<label>{{$data.common_page_size.name}}<span class="am-form-group-label-tips">{{$data.common_page_size.describe}}</span></label> <div class="am-panel am-panel-default">
<input type="number" name="{{$data.common_page_size.only_tag}}" placeholder="{{$data.common_page_size.name}}" pattern="{{:lang('common_regex_page_number')}}" data-validation-message="{{$data.common_page_size.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_page_size.value}}"{{/if}} required /> <div class="am-panel-hd">
</div> <h3 class="am-panel-title">商品</h3>
<div class="am-form-group"> </div>
<label>{{$data.common_spec_add_max_number.name}}<span class="am-form-group-label-tips">{{$data.common_spec_add_max_number.describe}}</span></label> <div class="am-panel-bd am-padding-vertical-xs">
<input type="number" name="{{$data.common_spec_add_max_number.only_tag}}" placeholder="{{$data.common_spec_add_max_number.describe}}" data-validation-message="{{$data.common_spec_add_max_number.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_spec_add_max_number.value}}"{{/if}} /> <div class="am-form-group">
</div> <label>{{$data.common_spec_add_max_number.name}}<span class="am-form-group-label-tips">{{$data.common_spec_add_max_number.describe}}</span></label>
<input type="number" name="{{$data.common_spec_add_max_number.only_tag}}" placeholder="{{$data.common_spec_add_max_number.describe}}" data-validation-message="{{$data.common_spec_add_max_number.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_spec_add_max_number.value}}"{{/if}} />
</div>
</div>
</div>
<div class="am-form-group"> <!-- 扩展 -->
<label>{{$data.common_baidu_map_ak.name}}<span class="am-form-group-label-tips">{{$data.common_baidu_map_ak.describe}}</span></label> <div class="am-panel am-panel-default">
<input type="text" name="{{$data.common_baidu_map_ak.only_tag}}" placeholder="{{$data.common_baidu_map_ak.describe}}" data-validation-message="{{$data.common_baidu_map_ak.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_baidu_map_ak.value}}"{{/if}} /> <div class="am-panel-hd">
<div class="am-alert am-alert-warning" data-am-alert> <h3 class="am-panel-title">扩展</h3>
请到百度地图开放平台申请,<a href="https://ask.shopxo.net/article/142" target="_blank">查看配置教程 <i class="am-icon-external-link"></i></a>
</div> </div>
</div> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
<label>{{$data.common_baidu_map_ak.name}}<span class="am-form-group-label-tips">{{$data.common_baidu_map_ak.describe}}</span></label>
<input type="text" name="{{$data.common_baidu_map_ak.only_tag}}" placeholder="{{$data.common_baidu_map_ak.describe}}" data-validation-message="{{$data.common_baidu_map_ak.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_baidu_map_ak.value}}"{{/if}} />
<div class="am-alert am-alert-warning" data-am-alert>
请到百度地图开放平台申请,<a href="https://ask.shopxo.net/article/142" target="_blank">查看配置教程 <i class="am-icon-external-link"></i></a>
</div>
</div>
</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0"> <div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button> <button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div> </div>
......
...@@ -9,21 +9,46 @@ ...@@ -9,21 +9,46 @@
<div class="content"> <div class="content">
<!-- form start --> <!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/email/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/email/index', ['type'=>'message'])}}"> <form class="am-form form-validation view-save" action="{{:MyUrl('admin/email/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/email/index', ['type'=>'message'])}}">
<div class="am-form-group"> <!-- 后台 -->
<label>{{$data.common_email_currency_template.name}}<span class="am-form-group-label-tips">{{$data.common_email_currency_template.describe}}</span></label> <div class="am-panel am-panel-default">
<script type="text/plain" id="common_email_currency_template" name="{{$data.common_email_currency_template.only_tag}}">{{if !empty($data)}}{{$data.common_email_currency_template.value|raw}}{{/if}}</script> <div class="am-panel-hd">
</div> <h3 class="am-panel-title">后台</h3>
<div class="am-form-group"> </div>
<label>{{$data.home_email_user_reg.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_reg.describe}}</span></label> <div class="am-panel-bd am-padding-vertical-xs">
<script type="text/plain" id="email_user_reg" name="{{$data.home_email_user_reg.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_reg.value|raw}}{{/if}}</script> <div class="am-form-group">
</div> <label>{{$data.admin_email_login_template.name}}<span class="am-form-group-label-tips">{{$data.admin_email_login_template.describe}}</span></label>
<div class="am-form-group"> <script type="text/plain" id="admin_email_login_template" name="{{$data.admin_email_login_template.only_tag}}">{{if !empty($data)}}{{$data.admin_email_login_template.value|raw}}{{/if}}</script>
<label>{{$data.home_email_user_forget_pwd.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_forget_pwd.describe}}</span></label> </div>
<script type="text/plain" id="email_user_forget_pwd" name="{{$data.home_email_user_forget_pwd.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_forget_pwd.value|raw}}{{/if}}</script> </div>
</div> </div>
<div class="am-form-group">
<label>{{$data.home_email_user_email_binding.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_email_binding.describe}}</span></label> <!-- 前端 -->
<script type="text/plain" id="email_user_email_binding" name="{{$data.home_email_user_email_binding.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_email_binding.value|raw}}{{/if}}</script> <div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">前端</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
<label>{{$data.common_email_currency_template.name}}<span class="am-form-group-label-tips">{{$data.common_email_currency_template.describe}}</span></label>
<script type="text/plain" id="common_email_currency_template" name="{{$data.common_email_currency_template.only_tag}}">{{if !empty($data)}}{{$data.common_email_currency_template.value|raw}}{{/if}}</script>
</div>
<div class="am-form-group">
<label>{{$data.home_email_login_template.name}}<span class="am-form-group-label-tips">{{$data.home_email_login_template.describe}}</span></label>
<script type="text/plain" id="home_email_login_template" name="{{$data.home_email_login_template.only_tag}}">{{if !empty($data)}}{{$data.home_email_login_template.value|raw}}{{/if}}</script>
</div>
<div class="am-form-group">
<label>{{$data.home_email_user_reg.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_reg.describe}}</span></label>
<script type="text/plain" id="email_user_reg" name="{{$data.home_email_user_reg.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_reg.value|raw}}{{/if}}</script>
</div>
<div class="am-form-group">
<label>{{$data.home_email_user_forget_pwd.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_forget_pwd.describe}}</span></label>
<script type="text/plain" id="email_user_forget_pwd" name="{{$data.home_email_user_forget_pwd.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_forget_pwd.value|raw}}{{/if}}</script>
</div>
<div class="am-form-group">
<label>{{$data.home_email_user_email_binding.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_email_binding.describe}}</span></label>
<script type="text/plain" id="email_user_email_binding" name="{{$data.home_email_user_email_binding.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_email_binding.value|raw}}{{/if}}</script>
</div>
</div>
</div> </div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0"> <div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button> <button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
......
<!-- 性别 开始 --> <!-- 性别 开始 -->
<div class="am-form-group"> <div class="am-form-group">
<label>性别</label> <label>性别<span class="am-form-group-label-tips-must">必选</span></label>
<div> <div>
{{foreach :lang('common_gender_list') as $v}} {{foreach :lang('common_gender_list') as $v}}
<label class="am-radio-inline am-margin-right-sm"> <label class="am-radio-inline am-margin-right-sm">
......
...@@ -10,13 +10,13 @@ ...@@ -10,13 +10,13 @@
</button> </button>
{{/if}} {{/if}}
{{if $module_data['status'] eq 2}} {{if $module_data['status'] eq 2}}
<button type="button" type="button" class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block submit-audit" data-json='{{:str_replace("'", '', json_encode($module_data))}}'> <button type="button" type="button" class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block submit-audit" data-json='{{:urlencode(json_encode($module_data))}}'>
<i class="am-icon-gavel"></i> <i class="am-icon-gavel"></i>
<span>审核</span> <span>审核</span>
</button> </button>
{{/if}} {{/if}}
{{if in_array($module_data['status'], [0,2])}} {{if in_array($module_data['status'], [0,2])}}
<button type="button" type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-refuse" data-json='{{:str_replace("'", '', json_encode($module_data))}}'> <button type="button" type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-refuse" data-json='{{:urlencode(json_encode($module_data))}}'>
<i class="am-icon-warning"></i> <i class="am-icon-warning"></i>
<span>拒绝</span> <span>拒绝</span>
</button> </button>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">基础配置</h3> <h3 class="am-panel-title">基础配置</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_site_name.name}}</label> <label>{{$data.home_site_name.name}}</label>
<input type="text" name="{{$data.home_site_name.only_tag}}" minlength="1" placeholder="{{$data.home_site_name.name}}" data-validation-message="{{$data.home_site_name.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_site_name.value}}"{{/if}} required /> <input type="text" name="{{$data.home_site_name.only_tag}}" minlength="1" placeholder="{{$data.home_site_name.name}}" data-validation-message="{{$data.home_site_name.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_site_name.value}}"{{/if}} required />
...@@ -74,11 +74,11 @@ ...@@ -74,11 +74,11 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">站点状态</h3> <h3 class="am-panel-title">站点状态</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_site_state.name}}<span class="am-form-group-label-tips">{{$data.home_site_state.describe}}</span></label> <label>{{$data.home_site_state.name}}<span class="am-form-group-label-tips">{{$data.home_site_state.describe}}</span></label>
<select name="{{$data.home_site_state.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_site_state.error_tips}}" required> <select name="{{$data.home_site_state.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_site_state.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_site_state']['value']) and $data['home_site_state']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_site_state']['value']) and $data['home_site_state']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">备案信息</h3> <h3 class="am-panel-title">备案信息</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_site_icp.name}}<span class="am-form-group-label-tips">{{$data.home_site_icp.describe}}</span></label> <label>{{$data.home_site_icp.name}}<span class="am-form-group-label-tips">{{$data.home_site_icp.describe}}</span></label>
<input type="text" name="{{$data.home_site_icp.only_tag}}" placeholder="{{$data.home_site_icp.describe}}" data-validation-message="{{$data.home_site_icp.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_site_icp.value}}"{{/if}} /> <input type="text" name="{{$data.home_site_icp.only_tag}}" placeholder="{{$data.home_site_icp.describe}}" data-validation-message="{{$data.home_site_icp.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_site_icp.value}}"{{/if}} />
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">其它</h3> <h3 class="am-panel-title">其它</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_static_cache_version.name}}<span class="am-form-group-label-tips">{{$data.home_static_cache_version.describe}}</span></label> <label>{{$data.home_static_cache_version.name}}<span class="am-form-group-label-tips">{{$data.home_static_cache_version.describe}}</span></label>
<input type="text" name="{{$data.home_static_cache_version.only_tag}}" placeholder="{{$data.home_static_cache_version.describe}}" data-validation-message="{{$data.home_static_cache_version.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_static_cache_version.value}}"{{/if}} /> <input type="text" name="{{$data.home_static_cache_version.only_tag}}" placeholder="{{$data.home_static_cache_version.describe}}" data-validation-message="{{$data.home_static_cache_version.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_static_cache_version.value}}"{{/if}} />
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">Session缓存配置</h3> <h3 class="am-panel-title">Session缓存配置</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.common_session_is_use_cache.name}}<span class="am-form-group-label-tips">{{$data.common_session_is_use_cache.describe}}</span></label> <label>{{$data.common_session_is_use_cache.name}}<span class="am-form-group-label-tips">{{$data.common_session_is_use_cache.describe}}</span></label>
<select name="{{$data.common_session_is_use_cache.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_session_is_use_cache.error_tips}}" required> <select name="{{$data.common_session_is_use_cache.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_session_is_use_cache.error_tips}}" required>
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">数据缓存配置</h3> <h3 class="am-panel-title">数据缓存配置</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.common_data_is_use_cache.name}}<span class="am-form-group-label-tips">{{$data.common_data_is_use_cache.describe}}</span></label> <label>{{$data.common_data_is_use_cache.name}}<span class="am-form-group-label-tips">{{$data.common_data_is_use_cache.describe}}</span></label>
<select name="{{$data.common_data_is_use_cache.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_data_is_use_cache.error_tips}}" required> <select name="{{$data.common_data_is_use_cache.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_data_is_use_cache.error_tips}}" required>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">基础配置</h3> <h3 class="am-panel-title">基础配置</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.common_is_login_answer.name}}<span class="am-form-group-label-tips">{{$data.common_is_login_answer.describe}}</span></label> <label>{{$data.common_is_login_answer.name}}<span class="am-form-group-label-tips">{{$data.common_is_login_answer.describe}}</span></label>
<select name="{{$data.common_is_login_answer.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_is_login_answer.error_tips}}" required> <select name="{{$data.common_is_login_answer.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_is_login_answer.error_tips}}" required>
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">定时脚本配置</h3> <h3 class="am-panel-title">定时脚本配置</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-alert am-alert-warning" data-am-alert> <div class="am-alert am-alert-warning am-margin-top-xs" data-am-alert>
<button type="button" class="am-close">&times;</button> <button type="button" class="am-close">&times;</button>
<p>建议将脚本地址添加到linux定时任务定时请求即可(结果 sucs:0, fail:0 冒号后面则是处理的数据条数,sucs成功,fali失败)</p> <p>建议将脚本地址添加到linux定时任务定时请求即可(结果 sucs:0, fail:0 冒号后面则是处理的数据条数,sucs成功,fali失败)</p>
</div> </div>
...@@ -82,8 +82,8 @@ ...@@ -82,8 +82,8 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">CDN配置</h3> <h3 class="am-panel-title">CDN配置</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-alert am-alert-warning" data-am-alert> <div class="am-alert am-alert-warning am-margin-top-xs" data-am-alert>
<button type="button" class="am-close">&times;</button> <button type="button" class="am-close">&times;</button>
<p>未设置则使用当前站点域名[ <a href="{{$my_public_url}}" target="_blank">{{$my_public_url}}</a> ]</p> <p>未设置则使用当前站点域名[ <a href="{{$my_public_url}}" target="_blank">{{$my_public_url}}</a> ]</p>
</div> </div>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">图片1</h3> <h3 class="am-panel-title">图片1</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label class="block">{{$data.home_site_user_forgetpwd_ad1_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad1_images.describe}}</span></label> <label class="block">{{$data.home_site_user_forgetpwd_ad1_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad1_images.describe}}</span></label>
<ul class="plug-file-upload-view home_site_user_forgetpwd_ad1_images-images-view" data-form-name="home_site_user_forgetpwd_ad1_images" data-max-number="1" data-dialog-type="images"> <ul class="plug-file-upload-view home_site_user_forgetpwd_ad1_images-images-view" data-form-name="home_site_user_forgetpwd_ad1_images" data-max-number="1" data-dialog-type="images">
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">图片2</h3> <h3 class="am-panel-title">图片2</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label class="block">{{$data.home_site_user_forgetpwd_ad2_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad2_images.describe}}</span></label> <label class="block">{{$data.home_site_user_forgetpwd_ad2_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad2_images.describe}}</span></label>
<ul class="plug-file-upload-view home_site_user_forgetpwd_ad2_images-images-view" data-form-name="home_site_user_forgetpwd_ad2_images" data-max-number="1" data-dialog-type="images"> <ul class="plug-file-upload-view home_site_user_forgetpwd_ad2_images-images-view" data-form-name="home_site_user_forgetpwd_ad2_images" data-max-number="1" data-dialog-type="images">
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">图片3</h3> <h3 class="am-panel-title">图片3</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label class="block">{{$data.home_site_user_forgetpwd_ad3_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad3_images.describe}}</span></label> <label class="block">{{$data.home_site_user_forgetpwd_ad3_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad3_images.describe}}</span></label>
<ul class="plug-file-upload-view home_site_user_forgetpwd_ad3_images-images-view" data-form-name="home_site_user_forgetpwd_ad3_images" data-max-number="1" data-dialog-type="images"> <ul class="plug-file-upload-view home_site_user_forgetpwd_ad3_images-images-view" data-form-name="home_site_user_forgetpwd_ad3_images" data-max-number="1" data-dialog-type="images">
......
...@@ -9,12 +9,38 @@ ...@@ -9,12 +9,38 @@
<div class="content"> <div class="content">
<!-- form start --> <!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/site/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/site/index', ['nav_type'=>'login'])}}" enctype="multipart/form-data"> <form class="am-form form-validation view-save" action="{{:MyUrl('admin/site/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/site/index', ['nav_type'=>'login'])}}" enctype="multipart/form-data">
<!-- 基础配置 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">基础配置</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
<label>{{$data.home_user_login_type.name}}<span class="am-form-group-label-tips">{{$data.home_user_login_type.describe}}</span></label>
<select name="{{$data.home_user_login_type.only_tag}}" multiple="multiple" class="am-radius chosen-select" data-placeholder="{{$data.home_user_login_type.name}}" data-validation-message="{{$data.home_user_login_type.error_tips}}">
{{foreach $common_login_type_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_user_login_type']['value']) and in_array($v['value'], $data['home_user_login_type']['value'])}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.home_user_login_img_verify_state.name}}<span class="am-form-group-label-tips">{{$data.home_user_login_img_verify_state.describe}}</span></label>
<select name="{{$data.home_user_login_img_verify_state.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_user_login_img_verify_state.error_tips}}" required>
{{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_user_login_img_verify_state']['value']) and $data['home_user_login_img_verify_state']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
</div>
</div>
<!-- 图片1 --> <!-- 图片1 -->
<div class="am-panel am-panel-default"> <div class="am-panel am-panel-default">
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">图片1</h3> <h3 class="am-panel-title">图片1</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label class="block">{{$data.home_site_user_login_ad1_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad1_images.describe}}</span></label> <label class="block">{{$data.home_site_user_login_ad1_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad1_images.describe}}</span></label>
<ul class="plug-file-upload-view home_site_user_login_ad1_images-images-view" data-form-name="home_site_user_login_ad1_images" data-max-number="1" data-dialog-type="images"> <ul class="plug-file-upload-view home_site_user_login_ad1_images-images-view" data-form-name="home_site_user_login_ad1_images" data-max-number="1" data-dialog-type="images">
...@@ -49,7 +75,7 @@ ...@@ -49,7 +75,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">图片2</h3> <h3 class="am-panel-title">图片2</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label class="block">{{$data.home_site_user_login_ad2_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad2_images.describe}}</span></label> <label class="block">{{$data.home_site_user_login_ad2_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad2_images.describe}}</span></label>
<ul class="plug-file-upload-view home_site_user_login_ad2_images-images-view" data-form-name="home_site_user_login_ad2_images" data-max-number="1" data-dialog-type="images"> <ul class="plug-file-upload-view home_site_user_login_ad2_images-images-view" data-form-name="home_site_user_login_ad2_images" data-max-number="1" data-dialog-type="images">
...@@ -84,7 +110,7 @@ ...@@ -84,7 +110,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">图片3</h3> <h3 class="am-panel-title">图片3</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label class="block">{{$data.home_site_user_login_ad3_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad3_images.describe}}</span></label> <label class="block">{{$data.home_site_user_login_ad3_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad3_images.describe}}</span></label>
<ul class="plug-file-upload-view home_site_user_login_ad3_images-images-view" data-form-name="home_site_user_login_ad3_images" data-max-number="1" data-dialog-type="images"> <ul class="plug-file-upload-view home_site_user_login_ad3_images-images-view" data-form-name="home_site_user_login_ad3_images" data-max-number="1" data-dialog-type="images">
...@@ -114,24 +140,6 @@ ...@@ -114,24 +140,6 @@
</div> </div>
</div> </div>
<div class="am-form-group">
<label>{{$data.home_user_login_state.name}}<span class="am-form-group-label-tips">{{$data.home_user_login_state.describe}}</span></label>
<select name="{{$data.home_user_login_state.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_user_login_state.error_tips}}" required>
{{foreach $site_user_login_state_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_user_login_state']['value']) and $data['home_user_login_state']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.home_user_login_img_verify_state.name}}<span class="am-form-group-label-tips">{{$data.home_user_login_img_verify_state.describe}}</span></label>
<select name="{{$data.home_user_login_img_verify_state.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_user_login_img_verify_state.error_tips}}" required>
{{foreach $site_img_verify_state_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_user_login_img_verify_state']['value']) and $data['home_user_login_img_verify_state']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0"> <div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<input type="hidden" name="nav_type" value="{{$nav_type}}" /> <input type="hidden" name="nav_type" value="{{$nav_type}}" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button> <button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
......
...@@ -10,24 +10,10 @@ ...@@ -10,24 +10,10 @@
<!-- form start --> <!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/site/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/site/index', ['nav_type'=>'register'])}}" enctype="multipart/form-data"> <form class="am-form form-validation view-save" action="{{:MyUrl('admin/site/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/site/index', ['nav_type'=>'register'])}}" enctype="multipart/form-data">
<div class="am-form-group"> <div class="am-form-group">
<label class="block">{{$data.home_site_user_register_bg_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_register_bg_images.describe}}</span></label> <label>{{$data.home_user_reg_type.name}}<span class="am-form-group-label-tips">{{$data.home_user_reg_type.describe}}</span></label>
<ul class="plug-file-upload-view home_site_user_register_bg_images-images-view" data-form-name="home_site_user_register_bg_images" data-max-number="1" data-dialog-type="images"> <select name="{{$data.home_user_reg_type.only_tag}}" multiple="multiple" class="am-radius chosen-select" data-placeholder="{{$data.home_user_reg_type.name}}">
{{if !empty($data['home_site_user_register_bg_images']['value'])}} {{foreach $common_user_reg_type_list as $v}}
<li> <option value="{{$v.value}}" {{if isset($data['home_user_reg_type']['value']) and in_array($v['value'], $data['home_user_reg_type']['value'])}}selected{{/if}}>{{$v.name}}</option>
<input type="text" name="home_site_user_register_bg_images" value="{{$data.home_site_user_register_bg_images.value}}" />
<img src="{{:AttachmentPathViewHandle($data.home_site_user_register_bg_images.value)}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.home_site_user_register_bg_images-images-view">+选择图片</div>
</div>
<div class="am-form-group">
<label>{{$data.home_user_reg_state.name}}<span class="am-form-group-label-tips">{{$data.home_user_reg_state.describe}}</span></label>
<select name="{{$data.home_user_reg_state.only_tag}}" multiple="multiple" class="am-radius chosen-select" data-placeholder="{{$data.home_user_reg_state.name}}" >
{{foreach $common_user_reg_state_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_user_reg_state']['value']) and in_array($v['value'], explode(',', $data['home_user_reg_state']['value']))}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
</div> </div>
...@@ -35,7 +21,7 @@ ...@@ -35,7 +21,7 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_user_register_img_verify_state.name}}<span class="am-form-group-label-tips">{{$data.home_user_register_img_verify_state.describe}}</span></label> <label>{{$data.home_user_register_img_verify_state.name}}<span class="am-form-group-label-tips">{{$data.home_user_register_img_verify_state.describe}}</span></label>
<select name="{{$data.home_user_register_img_verify_state.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_user_register_img_verify_state.error_tips}}" required> <select name="{{$data.home_user_register_img_verify_state.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_user_register_img_verify_state.error_tips}}" required>
{{foreach $site_img_verify_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_user_register_img_verify_state']['value']) and $data['home_user_register_img_verify_state']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_user_register_img_verify_state']['value']) and $data['home_user_register_img_verify_state']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -44,20 +30,34 @@ ...@@ -44,20 +30,34 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.common_register_is_enable_audit.name}}<span class="am-form-group-label-tips">{{$data.common_register_is_enable_audit.describe}}</span></label> <label>{{$data.common_register_is_enable_audit.name}}<span class="am-form-group-label-tips">{{$data.common_register_is_enable_audit.describe}}</span></label>
<select name="{{$data.common_register_is_enable_audit.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_register_is_enable_audit.error_tips}}" required> <select name="{{$data.common_register_is_enable_audit.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_register_is_enable_audit.error_tips}}" required>
{{foreach $common_is_text_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_register_is_enable_audit']['value']) and $data['common_register_is_enable_audit']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['common_register_is_enable_audit']['value']) and $data['common_register_is_enable_audit']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
</div> </div>
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_is_enable_userregister_agreement.name}}</label> <label>{{$data.home_is_enable_userregister_agreement.name}}<span class="am-form-group-label-tips">{{$data.home_is_enable_userregister_agreement.describe}}</span></label>
<select name="{{$data.home_is_enable_userregister_agreement.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_is_enable_userregister_agreement.error_tips}}" required> <select name="{{$data.home_is_enable_userregister_agreement.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_is_enable_userregister_agreement.error_tips}}" required>
{{foreach $site_img_verify_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_is_enable_userregister_agreement']['value']) and $data['home_is_enable_userregister_agreement']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_is_enable_userregister_agreement']['value']) and $data['home_is_enable_userregister_agreement']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
</div> </div>
<div class="am-form-group">
<label class="block">{{$data.home_site_user_register_bg_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_register_bg_images.describe}}</span></label>
<ul class="plug-file-upload-view home_site_user_register_bg_images-images-view" data-form-name="home_site_user_register_bg_images" data-max-number="1" data-dialog-type="images">
{{if !empty($data['home_site_user_register_bg_images']['value'])}}
<li>
<input type="text" name="home_site_user_register_bg_images" value="{{$data.home_site_user_register_bg_images.value}}" />
<img src="{{:AttachmentPathViewHandle($data.home_site_user_register_bg_images.value)}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.home_site_user_register_bg_images-images-view">+选择图片</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0"> <div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<input type="hidden" name="nav_type" value="{{$nav_type}}" /> <input type="hidden" name="nav_type" value="{{$nav_type}}" />
......
...@@ -18,11 +18,11 @@ ...@@ -18,11 +18,11 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">基础配置</h3> <h3 class="am-panel-title">基础配置</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_index_friendship_link_status.name}}<span class="am-form-group-label-tips">{{$data.home_index_friendship_link_status.describe}}</span></label> <label>{{$data.home_index_friendship_link_status.name}}<span class="am-form-group-label-tips">{{$data.home_index_friendship_link_status.describe}}</span></label>
<select name="{{$data.home_index_friendship_link_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_index_friendship_link_status.error_tips}}" required> <select name="{{$data.home_index_friendship_link_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_index_friendship_link_status.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_index_friendship_link_status']['value']) and $data['home_index_friendship_link_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_index_friendship_link_status']['value']) and $data['home_index_friendship_link_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.common_is_pay_price_must_max_equal.name}}<span class="am-form-group-label-tips">{{$data.common_is_pay_price_must_max_equal.describe}}</span></label> <label>{{$data.common_is_pay_price_must_max_equal.name}}<span class="am-form-group-label-tips">{{$data.common_is_pay_price_must_max_equal.describe}}</span></label>
<select name="{{$data.common_is_pay_price_must_max_equal.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_is_pay_price_must_max_equal.error_tips}}" required> <select name="{{$data.common_is_pay_price_must_max_equal.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_is_pay_price_must_max_equal.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['common_is_pay_price_must_max_equal']['value']) and $data['common_is_pay_price_must_max_equal']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['common_is_pay_price_must_max_equal']['value']) and $data['common_is_pay_price_must_max_equal']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_header_top_is_home.name}}<span class="am-form-group-label-tips">{{$data.home_header_top_is_home.describe}}</span></label> <label>{{$data.home_header_top_is_home.name}}<span class="am-form-group-label-tips">{{$data.home_header_top_is_home.describe}}</span></label>
<select name="{{$data.home_header_top_is_home.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_header_top_is_home.error_tips}}" required> <select name="{{$data.home_header_top_is_home.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_header_top_is_home.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_header_top_is_home']['value']) and $data['home_header_top_is_home']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_header_top_is_home']['value']) and $data['home_header_top_is_home']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -53,11 +53,11 @@ ...@@ -53,11 +53,11 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">快捷导航</h3> <h3 class="am-panel-title">快捷导航</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_navigation_main_quick_status.name}}<span class="am-form-group-label-tips">{{$data.home_navigation_main_quick_status.describe}}</span></label> <label>{{$data.home_navigation_main_quick_status.name}}<span class="am-form-group-label-tips">{{$data.home_navigation_main_quick_status.describe}}</span></label>
<select name="{{$data.home_navigation_main_quick_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_navigation_main_quick_status.error_tips}}" required> <select name="{{$data.home_navigation_main_quick_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_navigation_main_quick_status.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_navigation_main_quick_status']['value']) and $data['home_navigation_main_quick_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_navigation_main_quick_status']['value']) and $data['home_navigation_main_quick_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -74,11 +74,11 @@ ...@@ -74,11 +74,11 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">用户地址</h3> <h3 class="am-panel-title">用户地址</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_user_address_map_status.name}}<span class="am-form-group-label-tips">{{$data.home_user_address_map_status.describe}}</span></label> <label>{{$data.home_user_address_map_status.name}}<span class="am-form-group-label-tips">{{$data.home_user_address_map_status.describe}}</span></label>
<select name="{{$data.home_user_address_map_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_user_address_map_status.error_tips}}" required> <select name="{{$data.home_user_address_map_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_user_address_map_status.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_user_address_map_status']['value']) and $data['home_user_address_map_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_user_address_map_status']['value']) and $data['home_user_address_map_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_user_address_idcard_status.name}}<span class="am-form-group-label-tips">{{$data.home_user_address_idcard_status.describe}}</span></label> <label>{{$data.home_user_address_idcard_status.name}}<span class="am-form-group-label-tips">{{$data.home_user_address_idcard_status.describe}}</span></label>
<select name="{{$data.home_user_address_idcard_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_user_address_idcard_status.error_tips}}" required> <select name="{{$data.home_user_address_idcard_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_user_address_idcard_status.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_user_address_idcard_status']['value']) and $data['home_user_address_idcard_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_user_address_idcard_status']['value']) and $data['home_user_address_idcard_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
......
...@@ -18,11 +18,11 @@ ...@@ -18,11 +18,11 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">基础</h3> <h3 class="am-panel-title">基础</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_index_banner_left_status.name}}<span class="am-form-group-label-tips">{{$data.home_index_banner_left_status.describe}}</span></label> <label>{{$data.home_index_banner_left_status.name}}<span class="am-form-group-label-tips">{{$data.home_index_banner_left_status.describe}}</span></label>
<select name="{{$data.home_index_banner_left_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_index_banner_left_status.error_tips}}" required> <select name="{{$data.home_index_banner_left_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_index_banner_left_status.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_index_banner_left_status']['value']) and $data['home_index_banner_left_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_index_banner_left_status']['value']) and $data['home_index_banner_left_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_index_banner_right_status.name}}<span class="am-form-group-label-tips">{{$data.home_index_banner_right_status.describe}}</span></label> <label>{{$data.home_index_banner_right_status.name}}<span class="am-form-group-label-tips">{{$data.home_index_banner_right_status.describe}}</span></label>
<select name="{{$data.home_index_banner_right_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_index_banner_right_status.error_tips}}" required> <select name="{{$data.home_index_banner_right_status.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_index_banner_right_status.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_index_banner_right_status']['value']) and $data['home_index_banner_right_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_index_banner_right_status']['value']) and $data['home_index_banner_right_status']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">自动模式</h3> <h3 class="am-panel-title">自动模式</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_index_floor_goods_max_count.name}}<span class="am-form-group-label-tips">{{$data.home_index_floor_goods_max_count.describe}}</span></label> <label>{{$data.home_index_floor_goods_max_count.name}}<span class="am-form-group-label-tips">{{$data.home_index_floor_goods_max_count.describe}}</span></label>
<div class="am-input-group am-input-group-sm"> <div class="am-input-group am-input-group-sm">
...@@ -146,7 +146,7 @@ ...@@ -146,7 +146,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">手动模式</h3> <h3 class="am-panel-title">手动模式</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_index_floor_manual_mode_goods.name}}<span class="am-form-group-label-tips">{{$data.home_index_floor_manual_mode_goods.describe}}</span></label> <label>{{$data.home_index_floor_manual_mode_goods.name}}<span class="am-form-group-label-tips">{{$data.home_index_floor_manual_mode_goods.describe}}</span></label>
<div class="am-alert am-alert-warning" data-am-alert> <div class="am-alert am-alert-warning" data-am-alert>
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_search_is_brand.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_brand.describe}}</span></label> <label>{{$data.home_search_is_brand.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_brand.describe}}</span></label>
<select name="{{$data.home_search_is_brand.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_search_is_brand.error_tips}}" required> <select name="{{$data.home_search_is_brand.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_search_is_brand.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_search_is_brand']['value']) and $data['home_search_is_brand']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_search_is_brand']['value']) and $data['home_search_is_brand']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_search_is_category.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_category.describe}}</span></label> <label>{{$data.home_search_is_category.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_category.describe}}</span></label>
<select name="{{$data.home_search_is_category.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_search_is_category.error_tips}}" required> <select name="{{$data.home_search_is_category.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_search_is_category.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_search_is_category']['value']) and $data['home_search_is_category']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_search_is_category']['value']) and $data['home_search_is_category']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_search_is_price.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_price.describe}}</span></label> <label>{{$data.home_search_is_price.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_price.describe}}</span></label>
<select name="{{$data.home_search_is_price.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_search_is_price.error_tips}}" required> <select name="{{$data.home_search_is_price.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_search_is_price.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_search_is_price']['value']) and $data['home_search_is_price']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_search_is_price']['value']) and $data['home_search_is_price']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_search_is_params.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_params.describe}}</span></label> <label>{{$data.home_search_is_params.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_params.describe}}</span></label>
<select name="{{$data.home_search_is_params.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_search_is_params.error_tips}}" required> <select name="{{$data.home_search_is_params.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_search_is_params.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_search_is_params']['value']) and $data['home_search_is_params']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_search_is_params']['value']) and $data['home_search_is_params']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_search_is_spec.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_spec.describe}}</span></label> <label>{{$data.home_search_is_spec.name}}<span class="am-form-group-label-tips">{{$data.home_search_is_spec.describe}}</span></label>
<select name="{{$data.home_search_is_spec.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_search_is_spec.error_tips}}" required> <select name="{{$data.home_search_is_spec.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_search_is_spec.error_tips}}" required>
{{foreach $site_site_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_search_is_spec']['value']) and $data['home_search_is_spec']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['home_search_is_spec']['value']) and $data['home_search_is_spec']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">基础配置</h3> <h3 class="am-panel-title">基础配置</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<!-- 提示 --> <!-- 提示 -->
<div class="am-alert am-alert-warning am-radius" data-am-alert> <div class="am-alert am-alert-warning am-radius am-margin-top-xs" data-am-alert>
<button type="button" class="am-close">&times;</button> <button type="button" class="am-close">&times;</button>
<p class="am-text-xs">1. 销售型、常规电商流程,用户选择收货地址下单支付 -> 商家发货 -> 确认收货 -> 订单完成</p> <p class="am-text-xs">1. 销售型、常规电商流程,用户选择收货地址下单支付 -> 商家发货 -> 确认收货 -> 订单完成</p>
<p class="am-text-xs">2. 展示型、仅展示产品,可发起咨询(不能下单)</p> <p class="am-text-xs">2. 展示型、仅展示产品,可发起咨询(不能下单)</p>
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">展示型</span> <h3 class="am-panel-title">展示型</span>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.common_is_exhibition_mode_btn_text.name}}<span class="am-form-group-label-tips">{{$data.common_is_exhibition_mode_btn_text.describe}}</span></label> <label>{{$data.common_is_exhibition_mode_btn_text.name}}<span class="am-form-group-label-tips">{{$data.common_is_exhibition_mode_btn_text.describe}}</span></label>
<input type="text" name="{{$data.common_is_exhibition_mode_btn_text.only_tag}}" placeholder="{{$data.common_is_exhibition_mode_btn_text.describe}}" data-validation-message="{{$data.common_is_exhibition_mode_btn_text.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_is_exhibition_mode_btn_text.value}}"{{/if}} /> <input type="text" name="{{$data.common_is_exhibition_mode_btn_text.only_tag}}" placeholder="{{$data.common_is_exhibition_mode_btn_text.describe}}" data-validation-message="{{$data.common_is_exhibition_mode_btn_text.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_is_exhibition_mode_btn_text.value}}"{{/if}} />
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">自提点</h3> <h3 class="am-panel-title">自提点</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<ul class="am-list am-list-static am-list-border am-list-striped am-form-group am-btn-sm am-form-group-refreshing am-margin-bottom-0 am-padding-bottom-0 address-list"> <ul class="am-list am-list-static am-list-border am-list-striped am-form-group am-btn-sm am-form-group-refreshing am-margin-bottom-0 am-padding-bottom-0 address-list">
{{if !empty($sitetype_address_list) and is_array($sitetype_address_list)}} {{if !empty($sitetype_address_list) and is_array($sitetype_address_list)}}
{{foreach $sitetype_address_list as $address}} {{foreach $sitetype_address_list as $address}}
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
<div class="am-panel-hd"> <div class="am-panel-hd">
<h3 class="am-panel-title">虚拟销售</h3> <h3 class="am-panel-title">虚拟销售</h3>
</div> </div>
<div class="am-panel-bd"> <div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.common_site_fictitious_return_title.name}}<span class="am-form-group-label-tips">{{$data.common_site_fictitious_return_title.describe}}</span></label> <label>{{$data.common_site_fictitious_return_title.name}}<span class="am-form-group-label-tips">{{$data.common_site_fictitious_return_title.describe}}</span></label>
<input type="text" name="{{$data.common_site_fictitious_return_title.only_tag}}" placeholder="{{$data.common_site_fictitious_return_title.describe}}" data-validation-message="{{$data.common_site_fictitious_return_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_site_fictitious_return_title.value}}"{{/if}} /> <input type="text" name="{{$data.common_site_fictitious_return_title.only_tag}}" placeholder="{{$data.common_site_fictitious_return_title.describe}}" data-validation-message="{{$data.common_site_fictitious_return_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_site_fictitious_return_title.value}}"{{/if}} />
......
...@@ -28,10 +28,10 @@ ...@@ -28,10 +28,10 @@
</div> </div>
</div> </div>
<div class="am-form-group"> <div class="am-form-group">
<label>{{$data.home_img_verify_state.name}}<span class="am-form-group-label-tips">{{$data.home_img_verify_state.describe}}</span></label> <label>{{$data.common_img_verify_state.name}}<span class="am-form-group-label-tips">{{$data.common_img_verify_state.describe}}</span></label>
<select name="{{$data.home_img_verify_state.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.home_img_verify_state.error_tips}}" required> <select name="{{$data.common_img_verify_state.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_img_verify_state.error_tips}}" required>
{{foreach $site_img_verify_state_list as $v}} {{foreach $common_close_open_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_img_verify_state']['value']) and $data['home_img_verify_state']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['common_img_verify_state']['value']) and $data['common_img_verify_state']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
</div> </div>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<label>{{$data.common_images_verify_rules.name}}<span class="am-form-group-label-tips">{{$data.common_images_verify_rules.describe}}</span></label> <label>{{$data.common_images_verify_rules.name}}<span class="am-form-group-label-tips">{{$data.common_images_verify_rules.describe}}</span></label>
<select name="{{$data.common_images_verify_rules.only_tag}}" multiple="multiple" class="am-radius chosen-select" data-placeholder="{{$data.common_images_verify_rules.name}}" > <select name="{{$data.common_images_verify_rules.only_tag}}" multiple="multiple" class="am-radius chosen-select" data-placeholder="{{$data.common_images_verify_rules.name}}" >
{{foreach $site_images_verify_rules_list as $v}} {{foreach $site_images_verify_rules_list as $v}}
<option value="{{$v.value}}" {{if isset($data['common_images_verify_rules']['value']) and in_array($v['value'], explode(',', $data['common_images_verify_rules']['value']))}}selected{{/if}}>{{$v.name}}</option> <option value="{{$v.value}}" {{if isset($data['common_images_verify_rules']['value']) and in_array($v['value'], $data['common_images_verify_rules']['value'])}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
</div> </div>
......
...@@ -9,21 +9,46 @@ ...@@ -9,21 +9,46 @@
<div class="content"> <div class="content">
<!-- form start --> <!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/sms/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/sms/index', ['type'=>'message'])}}"> <form class="am-form form-validation view-save" action="{{:MyUrl('admin/sms/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/sms/index', ['type'=>'message'])}}">
<div class="am-form-group"> <!-- 后台 -->
<label>{{$data.common_sms_currency_template.name}}<span class="am-form-group-label-tips">{{$data.common_sms_currency_template.describe}}</span></label> <div class="am-panel am-panel-default">
<input type="text" name="{{$data.common_sms_currency_template.only_tag}}" placeholder="{{$data.common_sms_currency_template.name}}" data-validation-message="{{$data.common_sms_currency_template.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_sms_currency_template.value}}"{{/if}} /> <div class="am-panel-hd">
</div> <h3 class="am-panel-title">后台</h3>
<div class="am-form-group"> </div>
<label>{{$data.home_sms_user_reg.name}}<span class="am-form-group-label-tips">{{$data.home_sms_user_reg.describe}}</span></label> <div class="am-panel-bd am-padding-vertical-xs">
<input type="text" name="{{$data.home_sms_user_reg.only_tag}}" placeholder="{{$data.home_sms_user_reg.name}}" data-validation-message="{{$data.home_sms_user_reg.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_sms_user_reg.value}}"{{/if}} /> <div class="am-form-group">
</div> <label>{{$data.admin_sms_login_template.name}}<span class="am-form-group-label-tips">{{$data.admin_sms_login_template.describe}}</span></label>
<div class="am-form-group"> <input type="text" name="{{$data.admin_sms_login_template.only_tag}}" placeholder="{{$data.admin_sms_login_template.name}}" data-validation-message="{{$data.admin_sms_login_template.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.admin_sms_login_template.value}}"{{/if}} />
<label>{{$data.home_sms_user_forget_pwd.name}}<span class="am-form-group-label-tips">{{$data.home_sms_user_forget_pwd.describe}}</span></label> </div>
<input type="text" name="{{$data.home_sms_user_forget_pwd.only_tag}}" placeholder="{{$data.home_sms_user_forget_pwd.name}}" data-validation-message="{{$data.home_sms_user_forget_pwd.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_sms_user_forget_pwd.value}}"{{/if}} /> </div>
</div> </div>
<div class="am-form-group">
<label>{{$data.home_sms_user_mobile_binding.name}}<span class="am-form-group-label-tips">{{$data.home_sms_user_mobile_binding.describe}}</span></label> <!-- 前端 -->
<input type="text" name="{{$data.home_sms_user_mobile_binding.only_tag}}" placeholder="{{$data.home_sms_user_mobile_binding.name}}" data-validation-message="{{$data.home_sms_user_mobile_binding.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_sms_user_mobile_binding.value}}"{{/if}} /> <div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">前端</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
<label>{{$data.common_sms_currency_template.name}}<span class="am-form-group-label-tips">{{$data.common_sms_currency_template.describe}}</span></label>
<input type="text" name="{{$data.common_sms_currency_template.only_tag}}" placeholder="{{$data.common_sms_currency_template.name}}" data-validation-message="{{$data.common_sms_currency_template.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_sms_currency_template.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.home_sms_login_template.name}}<span class="am-form-group-label-tips">{{$data.home_sms_login_template.describe}}</span></label>
<input type="text" name="{{$data.home_sms_login_template.only_tag}}" placeholder="{{$data.home_sms_login_template.name}}" data-validation-message="{{$data.home_sms_login_template.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_sms_login_template.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.home_sms_user_reg.name}}<span class="am-form-group-label-tips">{{$data.home_sms_user_reg.describe}}</span></label>
<input type="text" name="{{$data.home_sms_user_reg.only_tag}}" placeholder="{{$data.home_sms_user_reg.name}}" data-validation-message="{{$data.home_sms_user_reg.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_sms_user_reg.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.home_sms_user_forget_pwd.name}}<span class="am-form-group-label-tips">{{$data.home_sms_user_forget_pwd.describe}}</span></label>
<input type="text" name="{{$data.home_sms_user_forget_pwd.only_tag}}" placeholder="{{$data.home_sms_user_forget_pwd.name}}" data-validation-message="{{$data.home_sms_user_forget_pwd.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_sms_user_forget_pwd.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.home_sms_user_mobile_binding.name}}<span class="am-form-group-label-tips">{{$data.home_sms_user_mobile_binding.describe}}</span></label>
<input type="text" name="{{$data.home_sms_user_mobile_binding.only_tag}}" placeholder="{{$data.home_sms_user_mobile_binding.name}}" data-validation-message="{{$data.home_sms_user_mobile_binding.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_sms_user_mobile_binding.value}}"{{/if}} />
</div>
</div>
</div> </div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0"> <div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button> <button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
......
...@@ -165,11 +165,19 @@ class User extends Common ...@@ -165,11 +165,19 @@ class User extends Common
$result = (new \base\Wechat(MyC('common_app_mini_weixin_appid'), MyC('common_app_mini_weixin_appsecret')))->GetAuthSessionKey($this->data_post); $result = (new \base\Wechat(MyC('common_app_mini_weixin_appid'), MyC('common_app_mini_weixin_appsecret')))->GetAuthSessionKey($this->data_post);
if($result['status'] == 0) if($result['status'] == 0)
{ {
// unionid
$unionid = empty($result['data']['unionid']) ? '' : $result['data']['unionid'];
// 先从数据库获取用户信息 // 先从数据库获取用户信息
$user = UserService::AppUserInfoHandle(null, 'weixin_openid', $result['data']); $user = UserService::AppUserInfoHandle(null, 'weixin_openid', $result['data']['openid']);
if(empty($user) && !empty($unionid))
{
// 根据unionid获取数据
$user = UserService::AppUserInfoHandle(null, 'weixin_unionid', $unionid);
}
if(empty($user)) if(empty($user))
{ {
return DataReturn('授权登录成功', 0, ['is_user_exist'=>0, 'openid'=>$result['data']]); return DataReturn('授权登录成功', 0, ['is_user_exist'=>0, 'openid'=>$result['data']['openid'], 'unionid'=>$unionid]);
} }
// 标记用户存在 // 标记用户存在
...@@ -198,14 +206,9 @@ class User extends Common ...@@ -198,14 +206,9 @@ class User extends Common
], ],
[ [
'checked_type' => 'empty', 'checked_type' => 'empty',
'key_name' => 'encrypted_data', 'key_name' => 'auth_data',
'error_msg' => '解密数据为空', 'error_msg' => '授权数据为空',
], ],
[
'checked_type' => 'empty',
'key_name' => 'iv',
'error_msg' => 'iv为空,请重试',
]
]; ];
$ret = ParamsChecked($this->data_post, $p); $ret = ParamsChecked($this->data_post, $p);
if($ret !== true) if($ret !== true)
...@@ -217,17 +220,17 @@ class User extends Common ...@@ -217,17 +220,17 @@ class User extends Common
$user = UserService::AppUserInfoHandle(null, 'weixin_openid', $this->data_post['openid']); $user = UserService::AppUserInfoHandle(null, 'weixin_openid', $this->data_post['openid']);
if(empty($user)) if(empty($user))
{ {
$result = (new \base\Wechat(MyC('common_app_mini_weixin_appid'), MyC('common_app_mini_weixin_appsecret')))->DecryptData($this->data_post['encrypted_data'], $this->data_post['iv'], $this->data_post['openid']); // 字段名称不一样参数处理
if($result['status'] == 0 && !empty($result['data'])) $auth_data = is_array($this->data_post['auth_data']) ? $this->data_post['auth_data'] : json_decode($this->data_post['auth_data'], true);
{ $auth_data['nickname'] = isset($auth_data['nickName']) ? $auth_data['nickName'] : '';
$result['nickname'] = isset($result['data']['nickName']) ? $result['data']['nickName'] : ''; $auth_data['avatar'] = isset($auth_data['avatarUrl']) ? $auth_data['avatarUrl'] : '';
$result['avatar'] = isset($result['data']['avatarUrl']) ? $result['data']['avatarUrl'] : ''; $auth_data['gender'] = empty($auth_data['gender']) ? 0 : (($auth_data['gender'] == 2) ? 1 : 2);
$result['gender'] = empty($result['data']['gender']) ? 0 : (($result['data']['gender'] == 2) ? 1 : 2);
$result['weixin_unionid'] = isset($result['data']['unionId']) ? $result['data']['unionId'] : ''; // 公共参数处理
$result['openid'] = $result['data']['openId']; $auth_data['weixin_unionid'] = isset($this->data_post['unionid']) ? $this->data_post['unionid'] : '';
$result['referrer']= isset($this->data_post['referrer']) ? $this->data_post['referrer'] : 0; $auth_data['openid'] = $this->data_post['openid'];
return UserService::AuthUserProgram($result, 'weixin_openid'); $auth_data['referrer']= isset($this->data_post['referrer']) ? $this->data_post['referrer'] : 0;
} return UserService::AuthUserProgram($auth_data, 'weixin_openid');
} else { } else {
return DataReturn('授权成功', 0, $user); return DataReturn('授权成功', 0, $user);
} }
...@@ -632,5 +635,18 @@ class User extends Common ...@@ -632,5 +635,18 @@ class User extends Common
$this->data_post['is_onekey_mobile_bind'] = 1; $this->data_post['is_onekey_mobile_bind'] = 1;
return UserService::AuthUserProgram($this->data_post, APPLICATION_CLIENT_TYPE.'_openid'); return UserService::AuthUserProgram($this->data_post, APPLICATION_CLIENT_TYPE.'_openid');
} }
/**
* 用户登录
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-04
* @desc description
*/
public function Login()
{
return UserService::Login($this->data_post);
}
} }
?> ?>
\ No newline at end of file
...@@ -11,6 +11,20 @@ ...@@ -11,6 +11,20 @@
// 应用公共文件 // 应用公共文件
/**
* 是否base64加密的字符串
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-02-28
* @desc description
* @param [string] $str [base加密的字符串]
*/
function IsBase64($str)
{
$str = urldecode($str);
return ($str == base64_encode(base64_decode($str)));
}
/** /**
* 根据url地址解析顶级域名 * 根据url地址解析顶级域名
...@@ -1167,6 +1181,12 @@ function MyUrl($path, $params=[]) ...@@ -1167,6 +1181,12 @@ function MyUrl($path, $params=[])
$url = str_replace($script_name, 'index.php', $url); $url = str_replace($script_name, 'index.php', $url);
} }
// 开启伪静态则则去除index.php
if(MyC('home_seo_url_model', 0) != 0)
{
$url = str_replace('index.php', '', $url);
}
return $url; return $url;
} }
...@@ -1214,6 +1234,12 @@ function PluginsHomeUrl($plugins_name, $plugins_control = '', $plugins_action = ...@@ -1214,6 +1234,12 @@ function PluginsHomeUrl($plugins_name, $plugins_control = '', $plugins_action =
// 避免从后台生成url入口错误 // 避免从后台生成url入口错误
$url = str_replace(CurrentScriptName(), 'index.php', $url); $url = str_replace(CurrentScriptName(), 'index.php', $url);
// 开启伪静态则则去除index.php
if(MyC('home_seo_url_model', 0) != 0)
{
$url = str_replace('index.php', '', $url);
}
return $url; return $url;
} }
...@@ -1250,6 +1276,12 @@ function PluginsAdminUrl($plugins_name, $plugins_control, $plugins_action, $para ...@@ -1250,6 +1276,12 @@ function PluginsAdminUrl($plugins_name, $plugins_control, $plugins_action, $para
$url = 'https'.mb_substr($url, 4, null, 'utf-8'); $url = 'https'.mb_substr($url, 4, null, 'utf-8');
} }
// 开启伪静态则则去除index.php
if(MyC('home_seo_url_model', 0) != 0)
{
$url = str_replace('index.php', '', $url);
}
return $url; return $url;
} }
......
...@@ -412,6 +412,10 @@ class Common extends Controller ...@@ -412,6 +412,10 @@ class Common extends Controller
{ {
$this->assign('is_load_baidu_map_api', 1); $this->assign('is_load_baidu_map_api', 1);
} }
// 登录/注册方式
$this->assign('home_user_login_type', MyC('home_user_login_type', [], true));
$this->assign('home_user_reg_type', MyC('home_user_reg_type', [], true));
} }
/** /**
......
...@@ -44,11 +44,12 @@ class User extends Common ...@@ -44,11 +44,12 @@ class User extends Common
} }
/** /**
* [GetrefererUrl 获取上一个页面地址] * 获取上一个页面地址
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-09T15:46:16+0800 * @date 2021-03-04
* @desc description
*/ */
private function GetrefererUrl() private function GetrefererUrl()
{ {
...@@ -70,11 +71,12 @@ class User extends Common ...@@ -70,11 +71,12 @@ class User extends Common
} }
/** /**
* [Index 用户中心] * 用户中心
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-02T22:48:35+0800 * @date 2021-03-04
* @desc description
*/ */
public function Index() public function Index()
{ {
...@@ -192,11 +194,12 @@ class User extends Common ...@@ -192,11 +194,12 @@ class User extends Common
} }
/** /**
* [ForgetPwdInfo 密码找回] * 密码找回
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-10T17:06:47+0800 * @date 2021-03-04
* @desc description
*/ */
public function ForgetPwdInfo() public function ForgetPwdInfo()
{ {
...@@ -217,15 +220,16 @@ class User extends Common ...@@ -217,15 +220,16 @@ class User extends Common
} }
/** /**
* [RegInfo 用户注册页面] * 用户注册页面
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-02T22:48:35+0800 * @date 2021-03-04
* @desc description
*/ */
public function RegInfo() public function RegInfo()
{ {
$reg_all = MyC('home_user_reg_state'); $reg_all = MyC('home_user_reg_type');
if(!empty($reg_all)) if(!empty($reg_all))
{ {
if(empty($this->user)) if(empty($this->user))
...@@ -251,15 +255,16 @@ class User extends Common ...@@ -251,15 +255,16 @@ class User extends Common
} }
/** /**
* [LoginInfo 用户登录页面] * 用户登录页面
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-02T22:48:35+0800 * @date 2021-03-04
* @desc description
*/ */
public function LoginInfo() public function LoginInfo()
{ {
if(MyC('home_user_login_state') == 1) if(count(MyC('home_user_login_type', [], true)) > 0)
{ {
if(empty($this->user)) if(empty($this->user))
{ {
...@@ -286,10 +291,10 @@ class User extends Common ...@@ -286,10 +291,10 @@ class User extends Common
/** /**
* modal弹窗登录 * modal弹窗登录
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 1.0.0 * @version 1.0.0
* @date 2018-09-13 * @date 2021-03-04
* @desc description * @desc description
*/ */
public function ModalLoginInfo() public function ModalLoginInfo()
...@@ -297,7 +302,7 @@ class User extends Common ...@@ -297,7 +302,7 @@ class User extends Common
$this->assign('is_header', 0); $this->assign('is_header', 0);
$this->assign('is_footer', 0); $this->assign('is_footer', 0);
if(MyC('home_user_login_state') == 1) if(count(MyC('home_user_login_type', [], true)) > 0)
{ {
if(empty($this->user)) if(empty($this->user))
{ {
...@@ -317,11 +322,12 @@ class User extends Common ...@@ -317,11 +322,12 @@ class User extends Common
} }
/** /**
* [Reg 用户注册-数据添加] * 用户注册-数据添加
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-07T00:08:36+0800 * @date 2021-03-04
* @desc description
*/ */
public function Reg() public function Reg()
{ {
...@@ -332,15 +338,16 @@ class User extends Common ...@@ -332,15 +338,16 @@ class User extends Common
} }
// 调用服务层 // 调用服务层
return UserService::Reg(input('post.')); return UserService::Reg($this->data_post);
} }
/** /**
* [Login 用户登录] * 用户登录
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-09T10:57:31+0800 * @date 2021-03-04
* @desc description
*/ */
public function Login() public function Login()
{ {
...@@ -351,33 +358,55 @@ class User extends Common ...@@ -351,33 +358,55 @@ class User extends Common
} }
// 调用服务层 // 调用服务层
return UserService::Login(input('post.')); return UserService::Login($this->data_post);
} }
/** /**
* [UserVerifyEntry 用户-验证码显示] * 用户-验证码显示
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-05T15:10:21+0800 * @date 2021-03-04
* @desc description
*/ */
public function UserVerifyEntry() public function UserVerifyEntry()
{ {
$params = array( $params = array(
'width' => 100, 'width' => 100,
'height' => 26, 'height' => 26,
'key_prefix' => input('type', 'reg'), 'key_prefix' => input('type', 'user_reg'),
); );
$verify = new \base\Verify($params); $verify = new \base\Verify($params);
$verify->Entry(); $verify->Entry();
} }
/** /**
* [RegVerifySend 用户注册-验证码发送] * 用户登录-验证码发送
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-05T19:17:10+0800 * @date 2021-03-04
* @desc description
*/
public function LoginVerifySend()
{
// 是否ajax请求
if(!IS_AJAX)
{
return $this->error('非法访问');
}
// 调用服务层
return UserService::LoginVerifySend($this->data_post);
}
/**
* 用户注册-验证码发送
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-04
* @desc description
*/ */
public function RegVerifySend() public function RegVerifySend()
{ {
...@@ -388,15 +417,16 @@ class User extends Common ...@@ -388,15 +417,16 @@ class User extends Common
} }
// 调用服务层 // 调用服务层
return UserService::RegVerifySend(input('post.')); return UserService::RegVerifySend($this->data_post);
} }
/** /**
* [ForgetPwdVerifySend 密码找回验证码发送] * 密码找回-验证码发送
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-10T17:35:03+0800 * @date 2021-03-04
* @desc description
*/ */
public function ForgetPwdVerifySend() public function ForgetPwdVerifySend()
{ {
...@@ -407,15 +437,16 @@ class User extends Common ...@@ -407,15 +437,16 @@ class User extends Common
} }
// 调用服务层 // 调用服务层
return UserService::ForgetPwdVerifySend(input('post.')); return UserService::ForgetPwdVerifySend($this->data_post);
} }
/** /**
* [ForgetPwd 密码找回] * 密码找回
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2017-03-10T17:55:42+0800 * @date 2021-03-04
* @desc description
*/ */
public function ForgetPwd() public function ForgetPwd()
{ {
...@@ -426,15 +457,16 @@ class User extends Common ...@@ -426,15 +457,16 @@ class User extends Common
} }
// 调用服务层 // 调用服务层
return UserService::ForgetPwd(input('post.')); return UserService::ForgetPwd($this->data_post);
} }
/** /**
* [Logout 退出] * 退出
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 1.0.0
* @datetime 2016-12-05T14:31:23+0800 * @date 2021-03-04
* @desc description
*/ */
public function Logout() public function Logout()
{ {
......
...@@ -50,12 +50,12 @@ ...@@ -50,12 +50,12 @@
<a href="{{:MyUrl('index/user/logout')}}" class="member-logout">退出</a> <a href="{{:MyUrl('index/user/logout')}}" class="member-logout">退出</a>
{{/if}} {{/if}}
</div> </div>
{{if empty($user) and (MyC('home_user_login_state') eq 1 or in_array('sms', MyC('home_user_reg_state')) or in_array('email', MyC('home_user_reg_state')))}} {{if empty($user) and (!empty($home_user_login_type) or !empty($home_user_reg_type))}}
<div class="member-login"> <div class="member-login">
{{if MyC('home_user_login_state') eq 1}} {{if !empty($home_user_login_type)}}
<a class="am-btn-primary btn am-fl" href="{{:MyUrl('index/user/loginInfo')}}">登录</a> <a class="am-btn-primary btn am-fl" href="{{:MyUrl('index/user/loginInfo')}}">登录</a>
{{/if}} {{/if}}
{{if in_array('sms', MyC('home_user_reg_state')) or in_array('email', MyC('home_user_reg_state')) or in_array('username', MyC('home_user_reg_state'))}} {{if !empty($home_user_reg_type)}}
<a class="am-btn-primary btn am-fr" href="{{:MyUrl('index/user/regInfo')}}">注册</a> <a class="am-btn-primary btn am-fr" href="{{:MyUrl('index/user/regInfo')}}">注册</a>
{{/if}} {{/if}}
</div> </div>
......
...@@ -29,10 +29,10 @@ ...@@ -29,10 +29,10 @@
{{if empty($user)}} {{if empty($user)}}
<!-- 未登录操作栏 --> <!-- 未登录操作栏 -->
<div class="navigation-button am-show-sm-only"> <div class="navigation-button am-show-sm-only">
{{if MyC('home_user_login_state') eq 1}} {{if !empty($home_user_login_type)}}
<a href="{{:MyUrl('index/user/logininfo')}}" class="am-btn am-btn-primary am-topbar-btn am-btn-sm">登录</a> <a href="{{:MyUrl('index/user/logininfo')}}" class="am-btn am-btn-primary am-topbar-btn am-btn-sm">登录</a>
{{/if}} {{/if}}
{{if in_array('sms', MyC('home_user_reg_state')) or in_array('email', MyC('home_user_reg_state')) or in_array('username', MyC('home_user_reg_state'))}} {{if !empty($home_user_reg_type)}}
<a href="{{:MyUrl('index/user/reginfo')}}" class="am-btn am-btn-success am-topbar-btn am-btn-sm">注册</a> <a href="{{:MyUrl('index/user/reginfo')}}" class="am-btn am-btn-success am-topbar-btn am-btn-sm">注册</a>
{{/if}} {{/if}}
</div> </div>
......
...@@ -21,10 +21,10 @@ ...@@ -21,10 +21,10 @@
{{if empty($user)}} {{if empty($user)}}
<em>您好,欢迎来到</em> <em>您好,欢迎来到</em>
<em>{{:MyC('home_site_name')}}</em> <em>{{:MyC('home_site_name')}}</em>
{{if MyC('home_user_login_state') eq 1}} {{if !empty($home_user_login_type)}}
[<a href="{{:MyUrl('index/user/logininfo')}}">登录</a>] [<a href="{{:MyUrl('index/user/logininfo')}}">登录</a>]
{{/if}} {{/if}}
{{if in_array('sms', MyC('home_user_reg_state')) or in_array('email', MyC('home_user_reg_state')) or in_array('username', MyC('home_user_reg_state'))}} {{if !empty($home_user_reg_type)}}
[<a href="{{:MyUrl('index/user/regInfo')}}">注册</a>] [<a href="{{:MyUrl('index/user/regInfo')}}">注册</a>]
{{/if}} {{/if}}
{{else /}} {{else /}}
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<div class="am-input-group am-input-group-sm am-form-group"> <div class="am-input-group am-input-group-sm am-form-group">
<input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required /> <input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn"> <span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/safety/verifysend')}}" data-verify="{{:MyC('home_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}">获取验证码</button> <button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/safety/verifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}">获取验证码</button>
</span> </span>
</div> </div>
<div class="am-form-group am-form-group-refreshing"> <div class="am-form-group am-form-group-refreshing">
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<div class="am-input-group am-input-group-sm am-form-group"> <div class="am-input-group am-input-group-sm am-form-group">
<input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required /> <input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn"> <span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/safety/verifysend')}}" data-verify="{{:MyC('home_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}">获取验证码</button> <button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/safety/verifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}">获取验证码</button>
</span> </span>
</div> </div>
<div class="am-form-group am-form-group-refreshing"> <div class="am-form-group am-form-group-refreshing">
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<div class="am-input-group am-input-group-sm am-form-group"> <div class="am-input-group am-input-group-sm am-form-group">
<input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required /> <input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn"> <span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit-new" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/safety/verifysend')}}" data-verify="{{:MyC('home_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}">获取验证码</button> <button class="am-btn am-btn-default am-radius btn-loading-example verify-submit-new" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/safety/verifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}">获取验证码</button>
</span> </span>
</div> </div>
<div class="am-form-group am-form-group-refreshing"> <div class="am-form-group am-form-group-refreshing">
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<div class="am-input-group am-input-group-sm am-form-group"> <div class="am-input-group am-input-group-sm am-form-group">
<input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required /> <input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn"> <span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit-new" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/safety/verifysend')}}" data-verify="{{:MyC('home_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}">获取验证码</button> <button class="am-btn am-btn-default am-radius btn-loading-example verify-submit-new" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/safety/verifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}">获取验证码</button>
</span> </span>
</div> </div>
<div class="am-form-group am-form-group-refreshing"> <div class="am-form-group am-form-group-refreshing">
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</div> </div>
<div class="am-u-sm-12 am-u-md-6 am-u-lg-4 container-right"> <div class="am-u-sm-12 am-u-md-6 am-u-lg-4 container-right">
<div class="forgetpwd-top"> <div class="forgetpwd-top">
{{if MyC('home_user_login_state') eq 1}} {{if !empty($home_user_login_type)}}
<span>已有帐号?</span> <span>已有帐号?</span>
<a href="{{:MyUrl('index/user/logininfo')}}" class="am-btn am-btn-secondary am-btn-xs am-radius">立即登录</a> <a href="{{:MyUrl('index/user/logininfo')}}" class="am-btn am-btn-secondary am-btn-xs am-radius">立即登录</a>
{{/if}} {{/if}}
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<div class="am-input-group am-input-group-sm"> <div class="am-input-group am-input-group-sm">
<input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required /> <input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn"> <span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/user/forgetpwdverifysend')}}" data-verify="{{:MyC('home_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation">获取验证码</button> <button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/user/forgetpwdverifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation">获取验证码</button>
</span> </span>
</div> </div>
</div> </div>
...@@ -64,23 +64,7 @@ ...@@ -64,23 +64,7 @@
</div> </div>
<!-- verify win start --> <!-- verify win start -->
<div class="am-modal am-modal-no-btn" tabindex="-1" id="verify-win"> {{include file="user/images_verify" type="user_forget" /}}
<div class="am-modal-dialog am-radius">
<div class="am-modal-hd">
<a href="javascript:;" class="am-close" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd">
<div class="base">
<input type="text" placeholder="图形验证码" minlength="4" maxlength="4" id="verify-img-value" data-validation-message="请输入有效的图形验证码" class="am-form-field am-radius" />
<div class="am-fl">
<img src="{{:MyUrl('index/user/userverifyentry', ['type'=>'forget'])}}" class="am-radius c-p" id="verify-img" onClick="this.src=this.src+'#'+Math.random();" />
<a href="javascript:;" class="verify-tips" onClick="document.getElementById('verify-img').src='{{:MyUrl('index/user/userverifyentry', ['type'=>'forget'])}}#'+Math.random();">看不清换一张</a>
</div>
</div>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block m-t-20 btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-win="1">确认</button>
</div>
</div>
</div>
<!-- verify win end --> <!-- verify win end -->
</div> </div>
</div> </div>
......
<div class="am-modal am-modal-no-btn" tabindex="-1" id="verify-win">
<div class="am-modal-dialog am-radius">
<div class="am-modal-hd">
<a href="javascript:;" class="am-close" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd">
<div class="base">
<input type="text" placeholder="图形验证码" minlength="4" maxlength="4" id="verify-img-value" data-validation-message="请输入有效的图形验证码" class="am-form-field am-radius" />
<div class="am-fl">
<img src="{{:MyUrl('index/user/userverifyentry', ['type'=>'[type]'])}}" class="am-radius c-p" id="verify-img" onClick="this.src=this.src+'#'+Math.random();" />
<a href="javascript:;" class="form-verify-tips" onClick="document.getElementById('verify-img').src='{{:MyUrl('index/user/userverifyentry', ['type'=>'[type]'])}}#'+Math.random();">更换一张</a>
</div>
</div>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block m-t-20 btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-win="1">确认</button>
</div>
</div>
</div>
\ No newline at end of file
<div data-am-widget="tabs" class="am-tabs am-tabs-d2 am-margin-0" data-am-tabs="{noSwipe: 1}">
{{if count($home_user_login_type) gt 1}}
<ul class="am-tabs-nav am-cf">
{{if in_array('username', $home_user_login_type)}}
<li class="am-active"><a href="[data-tab-panel-0]">帐号密码</a></li>
{{/if}}
{{if in_array('email', $home_user_login_type)}}
<li class="{{if !in_array('username', $home_user_login_type)}}am-active{{/if}}"><a href="[data-tab-panel-2]">邮箱验证码</a></li>
{{/if}}
{{if in_array('sms', $home_user_login_type)}}
<li class="{{if !in_array('username', $home_user_login_type) and !in_array('email', $home_user_login_type)}}am-active{{/if}}"><a href="[data-tab-panel-1]">手机验证码</a></li>
{{/if}}
</ul>
{{/if}}
<div class="am-tabs-bd">
{{if in_array('username', $home_user_login_type)}}
<div data-tab-panel-0 class="am-tab-panel am-active">
<!-- form start -->
<form class="am-form form-validation-username" method="post" action="{{:MyUrl('index/user/login')}}" request-type="ajax-fun" request-value="LoginBackHandle">
<div class="am-form-group am-form-group-refreshing">
<label>登录账号</label>
<input type="text" name="accounts" class="am-radius" placeholder="请输入用户名/手机/邮箱" data-validation-message="请填写登录账号" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>登录密码</label>
<div class="am-input-group am-input-group-sm">
<input type="password" name="pwd" class="am-radius" placeholder="请输入登录密码" pattern="{{:lang('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius am-icon-eye eye-submit" type="button"></button>
</span>
</div>
</div>
{{if MyC('home_user_login_img_verify_state') eq 1}}
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>验证码</label>
<div class="am-input-group am-input-group-sm">
<input type="text" name="verify" class="am-radius" placeholder="请输入验证码" minlength="4" maxlength="4" data-validation-message="请输入图片验证码" required />
<span class="am-input-group-btn">
<span class="am-btn am-btn-default am-radius am-padding-0 form-verify">
<img src="{{:MyUrl('index/user/userverifyentry', ['type'=>'user_login'])}}" class="am-radius c-p" id="form-verify-img" onClick="this.src=this.src+'#'+Math.random();" />
<a href="javascript:;" class="form-verify-tips" onClick="document.getElementById('form-verify-img').src='{{:MyUrl('index/user/userverifyentry', ['type'=>'user_login'])}}#'+Math.random();">更换一张</a>
</span>
</span>
</div>
</div>
{{/if}}
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="username" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">登录</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
{{if in_array('email', $home_user_login_type)}}
<div data-tab-panel-2 class="am-tab-panel {{if !in_array('username', $home_user_login_type)}}am-active{{/if}}">
<!-- form start -->
<form class="am-form form-validation-email" method="post" action="{{:MyUrl('index/user/login')}}" request-type="ajax-fun" request-value="LoginBackHandle">
<div class="am-form-group am-form-group-refreshing">
<label>电子邮箱</label>
<input type="email" name="accounts" class="am-radius" placeholder="请输入电子邮箱" data-validation-message="电子邮箱格式错误" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>验证码</label>
<div class="am-input-group am-input-group-sm">
<input type="number" name="verify" class="am-radius" placeholder="验证码" min="0" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/user/loginverifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation-email">获取验证码</button>
</span>
</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="email" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">登录</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
{{if in_array('sms', $home_user_login_type)}}
<div data-tab-panel-1 class="am-tab-panel {{if !in_array('username', $home_user_login_type) and !in_array('email', $home_user_login_type)}}am-active{{/if}}">
<!-- form start -->
<form class="am-form form-validation-sms" method="post" action="{{:MyUrl('index/user/login')}}" request-type="ajax-fun" request-value="LoginBackHandle">
<div class="am-form-group am-form-group-refreshing">
<label>手机号码</label>
<input type="text" name="accounts" class="am-radius" placeholder="请输入手机号码" pattern="{{:lang('common_regex_mobile')}}" data-validation-message="手机号码格式错误" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>验证码</label>
<div class="am-input-group am-input-group-sm">
<input type="number" name="verify" class="am-radius" placeholder="请输入验证码" min="0" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/user/loginverifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation-sms">获取验证码</button>
</span>
</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="sms" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">登录</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
<div class="am-padding-sm am-nbfc">
<a href="{{:MyUrl('index/user/forgetpwdinfo')}}" target="_blank" class="am-fr">忘记密码?</a>
</div>
</div>
</div>
\ No newline at end of file
...@@ -23,8 +23,8 @@ ...@@ -23,8 +23,8 @@
{{/if}} {{/if}}
</div> </div>
<div class="am-u-sm-12 am-u-md-6 am-u-lg-4 container-right"> <div class="am-u-sm-12 am-u-md-6 am-u-lg-4 container-right">
<div class="forgetpwd-top"> <div class="login-top">
{{if in_array('sms', MyC('home_user_reg_state')) or in_array('email', MyC('home_user_reg_state')) or in_array('username', MyC('home_user_reg_state'))}} {{if !empty($home_user_reg_type)}}
<span class="">还没有帐号?</span> <span class="">还没有帐号?</span>
<a href="{{:MyUrl('index/user/reginfo')}}" class="am-btn am-btn-secondary am-btn-xs am-radius">注册</a> <a href="{{:MyUrl('index/user/reginfo')}}" class="am-btn am-btn-secondary am-btn-xs am-radius">注册</a>
{{/if}} {{/if}}
...@@ -44,54 +44,31 @@ ...@@ -44,54 +44,31 @@
{{/if}} {{/if}}
</div> </div>
<div class="user-form-container"> <div class="user-form-container">
<!-- form start --> {{if count($home_user_login_type) gt 0}}
<form class="am-form form-validation am-padding-bottom-sm" method="post" action="{{:MyUrl('index/user/login')}}" request-type="ajax-fun" request-value="LoginSuccessBack"> {{include file="user/login_content" /}}
<div class="am-form-group am-form-group-refreshing"> {{else /}}
<label>登录账号</label> <div class="am-text-center am-padding-vertical-lg register-close"><i class="am-icon-warning"></i> 暂时关闭了登录</div>
<input type="text" name="accounts" class="am-radius" minlength="1" placeholder="用户名/手机/邮箱" data-validation-message="请填写登录账号" required /> {{/if}}
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-xs">
<label>登录密码</label>
<input type="password" name="pwd" class="am-radius" placeholder="登录密码" pattern="{{:lang('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符之间" required />
</div>
{{if MyC('home_user_login_img_verify_state') eq 1}}
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>验证码</label>
<div class="am-input-group am-input-group-sm">
<input type="text" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="请输入图片验证码" required />
<span class="am-input-group-btn">
<span class="am-btn am-btn-default am-radius form-verify">
<img src="{{:MyUrl('index/user/userverifyentry', ['type'=>'login'])}}" class="am-radius c-p" id="form-verify-img" onClick="this.src=this.src+'#'+Math.random();" />
<a href="javascript:;" class="form-verify-tips" onClick="document.getElementById('form-verify-img').src='{{:MyUrl('index/user/userverifyentry', ['type'=>'login'])}}#'+Math.random();">更换一张</a>
</span>
</span>
</div>
</div>
{{/if}}
<div class="am-form-group am-form-group-refreshing am-margin-top-sm">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">登录</button>
<a href="{{:MyUrl('index/user/forgetpwdinfo')}}" class="am-fr">忘记密码?</a>
</div>
</form>
<!-- form end -->
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- conntent end --> <!-- conntent end -->
<!-- 图片验证码 -->
{{if MyC('common_img_verify_state') eq 1}}
{{include file="user/images_verify" type="user_login" /}}
{{/if}}
{{include file="public/footer" /}} {{include file="public/footer" /}}
<script type="text/javascript"> <script type="text/javascript">
// 登录成功回调 // 登录成功回调
function LoginSuccessBack(e) function LoginBackHandle(e)
{ {
$.AMUI.progress.done();
if(e.code == 0) if(e.code == 0)
{ {
$.AMUI.progress.done();
Prompt(e.msg, 'success'); Prompt(e.msg, 'success');
// 登录返回html处理 // 登录返回html处理
...@@ -105,8 +82,7 @@ function LoginSuccessBack(e) ...@@ -105,8 +82,7 @@ function LoginSuccessBack(e)
window.location.href = '{{$referer_url}}'; window.location.href = '{{$referer_url}}';
}, 1500); }, 1500);
} else { } else {
$('form.form-validation').find('button[type="submit"]').button('reset'); $('form.am-form').find('button[type="submit"]').button('reset');
$.AMUI.progress.done();
Prompt(e.msg); Prompt(e.msg);
} }
} }
......
...@@ -2,60 +2,11 @@ ...@@ -2,60 +2,11 @@
<!-- conntent start --> <!-- conntent start -->
<div class="am-g my-content login-modal-container"> <div class="am-g my-content login-modal-container">
<!-- form start --> {{if count($home_user_login_type) gt 0}}
<form class="am-form form-validation" method="post" action="{{:MyUrl('index/user/login')}}" request-type="ajax-fun" request-value="ViewModalBack"> {{include file="user/login_content" /}}
<div class="xo-padding-horizontal-md-sm login-modal-container-top"> {{else /}}
{{if in_array('sms', MyC('home_user_reg_state')) or in_array('email', MyC('home_user_reg_state')) or in_array('username', MyC('home_user_reg_state'))}} <div class="am-text-center am-padding-vertical-lg register-close"><i class="am-icon-warning"></i> 暂时关闭了登录</div>
<span class="">还没有帐号?</span> {{/if}}
<a href="{{:MyUrl('index/user/reginfo')}}" target="_blank" class="am-btn am-btn-secondary am-btn-xs am-radius">立即注册</a>
{{/if}}
<!-- 用户登录页面顶部钩子 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="plugins-tag">
<span>plugins_view_user_login_info_top</span>
</div>
{{/if}}
{{if !empty($plugins_view_user_login_info_top_data) and is_array($plugins_view_user_login_info_top_data)}}
{{foreach $plugins_view_user_login_info_top_data as $hook}}
{{if is_string($hook) or is_int($hook)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
{{/if}}
</div>
<div class="am-form-group am-form-group-refreshing">
<label>登录账号</label>
<input type="text" name="accounts" class="am-radius" minlength="1" placeholder="用户名/手机/邮箱" data-validation-message="请填写登录账号" required />
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-xs">
<label>登录密码</label>
<input type="password" name="pwd" class="am-radius" placeholder="登录密码" pattern="{{:lang('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符之间" required />
</div>
{{if MyC('home_user_login_img_verify_state') eq 1}}
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>验证码</label>
<div class="am-input-group am-input-group-sm">
<input type="text" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="请输入图片验证码" required />
<span class="am-input-group-btn">
<span class="am-btn am-btn-default am-radius form-verify">
<img src="{{:MyUrl('index/user/userverifyentry', ['type'=>'login'])}}" class="am-radius c-p" id="form-verify-img" onClick="this.src=this.src+'#'+Math.random();" />
<a href="javascript:;" class="form-verify-tips" onClick="document.getElementById('form-verify-img').src='{{:MyUrl('index/user/userverifyentry', ['type'=>'login'])}}#'+Math.random();">更换一张</a>
</span>
</span>
</div>
</div>
{{/if}}
<div class="am-form-group am-form-group-refreshing am-margin-top-sm">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">登录</button>
<a href="{{:MyUrl('index/user/forgetpwdinfo')}}" target="_blank" class="am-fr">忘记密码?</a>
</div>
</form>
<!-- form end -->
</div> </div>
<!-- conntent end --> <!-- conntent end -->
...@@ -63,11 +14,11 @@ ...@@ -63,11 +14,11 @@
<script type="text/javascript"> <script type="text/javascript">
// 返回处理 // 返回处理
function ViewModalBack(e) function LoginBackHandle(e)
{ {
$.AMUI.progress.done();
if(e.code == 0) if(e.code == 0)
{ {
$.AMUI.progress.done();
Prompt(e.msg, 'success'); Prompt(e.msg, 'success');
// 登录返回html处理 // 登录返回html处理
...@@ -82,7 +33,6 @@ ...@@ -82,7 +33,6 @@
}, 1500); }, 1500);
} else { } else {
$('form.form-validation').find('button[type="submit"]').button('reset'); $('form.form-validation').find('button[type="submit"]').button('reset');
$.AMUI.progress.done();
Prompt(e.msg); Prompt(e.msg);
} }
} }
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<div class="am-u-sm-12 am-u-md-6 am-u-lg-5 am-u-sm-centered"> <div class="am-u-sm-12 am-u-md-6 am-u-lg-5 am-u-sm-centered">
<div class="register-container"> <div class="register-container">
<div class="register-top"> <div class="register-top">
{{if MyC('home_user_login_state') eq 1}} {{if !empty($home_user_login_type)}}
<span>我已经注册,现在就</span> <span>我已经注册,现在就</span>
<a href="{{:MyUrl('index/user/logininfo')}}" class="am-btn am-btn-secondary am-btn-xs am-radius">登录</a> <a href="{{:MyUrl('index/user/logininfo')}}" class="am-btn am-btn-secondary am-btn-xs am-radius">登录</a>
{{/if}} {{/if}}
...@@ -53,21 +53,21 @@ ...@@ -53,21 +53,21 @@
</div> </div>
<div class="register-content"> <div class="register-content">
{{if in_array('sms', MyC('home_user_reg_state')) or in_array('email', MyC('home_user_reg_state')) or in_array('username', MyC('home_user_reg_state'))}} {{if !empty($home_user_reg_type)}}
<div data-am-widget="tabs" class="am-tabs am-tabs-d2" data-am-tabs="{noSwipe: 1}"> <div data-am-widget="tabs" class="am-tabs am-tabs-d2" data-am-tabs="{noSwipe: 1}">
<ul class="am-tabs-nav am-cf"> <ul class="am-tabs-nav am-cf">
{{if in_array('username', MyC('home_user_reg_state'))}} {{if in_array('username', $home_user_reg_type)}}
<li class="am-active"><a href="[data-tab-panel-0]">账号注册</a></li> <li class="am-active"><a href="[data-tab-panel-0]">账号注册</a></li>
{{/if}} {{/if}}
{{if in_array('sms', MyC('home_user_reg_state'))}} {{if in_array('sms', $home_user_reg_type)}}
<li class="{{if !in_array('username', MyC('home_user_reg_state'))}}am-active{{/if}}"><a href="[data-tab-panel-1]">手机注册</a></li> <li class="{{if !in_array('username', $home_user_reg_type)}}am-active{{/if}}"><a href="[data-tab-panel-1]">手机注册</a></li>
{{/if}} {{/if}}
{{if in_array('email', MyC('home_user_reg_state'))}} {{if in_array('email', $home_user_reg_type)}}
<li class="{{if !in_array('username', MyC('home_user_reg_state')) and !in_array('sms', MyC('home_user_reg_state'))}}am-active{{/if}}"><a href="[data-tab-panel-2]">邮箱注册</a></li> <li class="{{if !in_array('username', $home_user_reg_type) and !in_array('sms', $home_user_reg_type)}}am-active{{/if}}"><a href="[data-tab-panel-2]">邮箱注册</a></li>
{{/if}} {{/if}}
</ul> </ul>
<div class="am-tabs-bd am-padding-bottom-sm"> <div class="am-tabs-bd am-padding-bottom-sm">
{{if in_array('username', MyC('home_user_reg_state'))}} {{if in_array('username', $home_user_reg_type)}}
<div data-tab-panel-0 class="am-tab-panel am-active"> <div data-tab-panel-0 class="am-tab-panel am-active">
<!-- form start --> <!-- form start -->
<form class="am-form form-validation-username" method="post" action="{{:MyUrl('index/user/reg')}}" request-type="ajax-fun" request-value="RegisterSuccessBack"> <form class="am-form form-validation-username" method="post" action="{{:MyUrl('index/user/reg')}}" request-type="ajax-fun" request-value="RegisterSuccessBack">
...@@ -93,8 +93,8 @@ ...@@ -93,8 +93,8 @@
<input type="text" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="请输入图片验证码" required /> <input type="text" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="请输入图片验证码" required />
<span class="am-input-group-btn"> <span class="am-input-group-btn">
<span class="am-btn am-btn-default am-radius form-verify"> <span class="am-btn am-btn-default am-radius form-verify">
<img src="{{:MyUrl('index/user/userverifyentry', ['type'=>'images_verify_reg'])}}" class="am-radius c-p" id="form-verify-img" onClick="this.src=this.src+'#'+Math.random();" /> <img src="{{:MyUrl('index/user/userverifyentry', ['type'=>'user_reg'])}}" class="am-radius c-p" id="form-verify-img" onClick="this.src=this.src+'#'+Math.random();" />
<a href="javascript:;" class="form-verify-tips" onClick="document.getElementById('form-verify-img').src='{{:MyUrl('index/user/userverifyentry', ['type'=>'images_verify_reg'])}}#'+Math.random();">更换一张</a> <a href="javascript:;" class="form-verify-tips" onClick="document.getElementById('form-verify-img').src='{{:MyUrl('index/user/userverifyentry', ['type'=>'user_reg'])}}#'+Math.random();">更换一张</a>
</span> </span>
</span> </span>
</div> </div>
...@@ -118,8 +118,8 @@ ...@@ -118,8 +118,8 @@
<!-- form end --> <!-- form end -->
</div> </div>
{{/if}} {{/if}}
{{if in_array('sms', MyC('home_user_reg_state'))}} {{if in_array('sms', $home_user_reg_type)}}
<div data-tab-panel-1 class="am-tab-panel {{if !in_array('username', MyC('home_user_reg_state'))}}am-active{{/if}}"> <div data-tab-panel-1 class="am-tab-panel {{if !in_array('username', $home_user_reg_type)}}am-active{{/if}}">
<!-- form start --> <!-- form start -->
<form class="am-form form-validation-sms" method="post" action="{{:MyUrl('index/user/reg')}}" request-type="ajax-fun" request-value="RegisterSuccessBack"> <form class="am-form form-validation-sms" method="post" action="{{:MyUrl('index/user/reg')}}" request-type="ajax-fun" request-value="RegisterSuccessBack">
<div class="am-form-group am-form-group-refreshing business-form-block"> <div class="am-form-group am-form-group-refreshing business-form-block">
...@@ -132,7 +132,7 @@ ...@@ -132,7 +132,7 @@
<div class="am-input-group am-input-group-sm"> <div class="am-input-group am-input-group-sm">
<input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required /> <input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn"> <span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/user/regverifysend')}}" data-verify="{{:MyC('home_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation-sms">获取验证码</button> <button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/user/regverifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation-sms">获取验证码</button>
</span> </span>
</div> </div>
</div> </div>
...@@ -164,8 +164,8 @@ ...@@ -164,8 +164,8 @@
<!-- form end --> <!-- form end -->
</div> </div>
{{/if}} {{/if}}
{{if in_array('email', MyC('home_user_reg_state'))}} {{if in_array('email', $home_user_reg_type)}}
<div data-tab-panel-2 class="am-tab-panel {{if !in_array('username', MyC('home_user_reg_state')) and !in_array('sms', MyC('home_user_reg_state'))}}am-active{{/if}}"> <div data-tab-panel-2 class="am-tab-panel {{if !in_array('username', $home_user_reg_type) and !in_array('sms', $home_user_reg_type)}}am-active{{/if}}">
<!-- form start --> <!-- form start -->
<form class="am-form form-validation-email" method="post" action="{{:MyUrl('index/user/reg')}}" request-type="ajax-fun" request-value="RegisterSuccessBack"> <form class="am-form form-validation-email" method="post" action="{{:MyUrl('index/user/reg')}}" request-type="ajax-fun" request-value="RegisterSuccessBack">
<div class="am-form-group am-form-group-refreshing business-form-block"> <div class="am-form-group am-form-group-refreshing business-form-block">
...@@ -178,7 +178,7 @@ ...@@ -178,7 +178,7 @@
<div class="am-input-group am-input-group-sm"> <div class="am-input-group am-input-group-sm">
<input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required /> <input type="number" name="verify" class="am-radius" placeholder="验证码" minlength="4" maxlength="4" data-validation-message="验证码格式 4 位数字" required />
<span class="am-input-group-btn"> <span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/user/regverifysend')}}" data-verify="{{:MyC('home_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation-email">获取验证码</button> <button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/user/regverifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="获取验证码" data-send-text="还有 {time} 秒" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation-email">获取验证码</button>
</span> </span>
</div> </div>
</div> </div>
...@@ -212,28 +212,6 @@ ...@@ -212,28 +212,6 @@
{{/if}} {{/if}}
</div> </div>
</div> </div>
{{if MyC('home_img_verify_state') eq 1}}
<!-- verify win start -->
<div class="am-modal am-modal-no-btn" tabindex="-1" id="verify-win">
<div class="am-modal-dialog am-radius">
<div class="am-modal-hd">
<a href="javascript:;" class="am-close" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd">
<div class="base">
<input type="text" placeholder="图形验证码" minlength="4" maxlength="4" id="verify-img-value" data-validation-message="请输入有效的图形验证码" class="am-form-field am-radius" />
<div class="am-fl">
<img src="{{:MyUrl('index/user/userverifyentry', ['type'=>'reg'])}}" class="am-radius c-p" id="verify-img" onClick="this.src=this.src+'#'+Math.random();" />
<a href="javascript:;" class="verify-tips" onClick="document.getElementById('verify-img').src='{{:MyUrl('index/user/userverifyentry', ['type'=>'reg'])}}#'+Math.random();">看不清换一张</a>
</div>
</div>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block m-t-20 btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-win="1">确认</button>
</div>
</div>
</div>
<!-- verify win end -->
{{/if}}
{{else /}} {{else /}}
<div class="am-text-center am-padding-vertical-lg register-close"><i class="am-icon-warning"></i> 暂时关闭了注册</div> <div class="am-text-center am-padding-vertical-lg register-close"><i class="am-icon-warning"></i> 暂时关闭了注册</div>
{{/if}} {{/if}}
...@@ -258,6 +236,11 @@ ...@@ -258,6 +236,11 @@
</div> </div>
<!-- conntent end --> <!-- conntent end -->
<!-- 图片验证码 -->
{{if MyC('common_img_verify_state') eq 1}}
{{include file="user/images_verify" type="user_reg" /}}
{{/if}}
{{include file="public/footer" /}} {{include file="public/footer" /}}
<script type="text/javascript"> <script type="text/javascript">
......
此差异已折叠。
...@@ -123,6 +123,13 @@ class AdminService ...@@ -123,6 +123,13 @@ class AdminService
'is_checked' => 1, 'is_checked' => 1,
'error_msg' => '手机号码格式错误', 'error_msg' => '手机号码格式错误',
], ],
[
'checked_type' => 'fun',
'key_name' => 'email',
'checked_data' => 'CheckEmail',
'is_checked' => 1,
'error_msg' => '电子邮箱格式错误、最多60个字符',
],
[ [
'checked_type' => 'in', 'checked_type' => 'in',
'key_name' => 'gender', 'key_name' => 'gender',
...@@ -135,6 +142,22 @@ class AdminService ...@@ -135,6 +142,22 @@ class AdminService
'checked_data' => array_column(lang('common_admin_status_list'), 'value'), 'checked_data' => array_column(lang('common_admin_status_list'), 'value'),
'error_msg' => '状态值范围不正确', 'error_msg' => '状态值范围不正确',
], ],
[
'checked_type' => 'unique',
'key_name' => 'mobile',
'checked_data' => 'Admin',
'checked_key' => 'id',
'is_checked' => 1,
'error_msg' => '手机号码已存在[{$var}]',
],
[
'checked_type' => 'unique',
'key_name' => 'email',
'checked_data' => 'Admin',
'checked_key' => 'id',
'is_checked' => 1,
'error_msg' => '电子邮箱已存在[{$var}]',
],
]; ];
$ret = ParamsChecked($params, $p); $ret = ParamsChecked($params, $p);
if($ret !== true) if($ret !== true)
...@@ -203,7 +226,8 @@ class AdminService ...@@ -203,7 +226,8 @@ class AdminService
'username' => $params['username'], 'username' => $params['username'],
'login_salt' => $salt, 'login_salt' => $salt,
'login_pwd' => LoginPwdEncryption($params['login_pwd'], $salt), 'login_pwd' => LoginPwdEncryption($params['login_pwd'], $salt),
'mobile' => isset($params['mobile']) ? $params['mobile'] : '', 'mobile' => empty($params['mobile']) ? '' : $params['mobile'],
'email' => empty($params['email']) ? '' : $params['email'],
'gender' => intval($params['gender']), 'gender' => intval($params['gender']),
'status' => intval($params['status']), 'status' => intval($params['status']),
'role_id' => intval($params['role_id']), 'role_id' => intval($params['role_id']),
...@@ -260,7 +284,8 @@ class AdminService ...@@ -260,7 +284,8 @@ class AdminService
// 数据 // 数据
$data = [ $data = [
'mobile' => isset($params['mobile']) ? $params['mobile'] : '', 'mobile' => empty($params['mobile']) ? '' : $params['mobile'],
'email' => empty($params['email']) ? '' : $params['email'],
'gender' => intval($params['gender']), 'gender' => intval($params['gender']),
'status' => intval($params['status']), 'status' => intval($params['status']),
'upd_time' => time(), 'upd_time' => time(),
...@@ -340,26 +365,15 @@ class AdminService ...@@ -340,26 +365,15 @@ class AdminService
// 请求参数 // 请求参数
$p = [ $p = [
[ [
'checked_type' => 'empty', 'checked_type' => 'in',
'key_name' => 'username', 'key_name' => 'type',
'error_msg' => '用户名不能为空', 'checked_data' => array_column(lang('common_login_type_list'), 'value'),
'error_msg' => '登录类型有误',
], ],
[ [
'checked_type' => 'empty', 'checked_type' => 'empty',
'key_name' => 'login_pwd', 'key_name' => 'accounts',
'error_msg' => '密码不能为空', 'error_msg' => '登录账号不能为空',
],
[
'checked_type' => 'fun',
'key_name' => 'username',
'checked_data' => 'CheckUserName',
'error_msg' => '用户名格式 5~18 个字符(可以是字母数字下划线)',
],
[
'checked_type' => 'fun',
'key_name' => 'login_pwd',
'checked_data' => 'CheckLoginPwd',
'error_msg' => '密码格式 6~18 个字符',
], ],
]; ];
$ret = ParamsChecked($params, $p); $ret = ParamsChecked($params, $p);
...@@ -368,18 +382,108 @@ class AdminService ...@@ -368,18 +382,108 @@ class AdminService
return DataReturn($ret, -1); return DataReturn($ret, -1);
} }
// 是否开启用户注册
if(!in_array($params['type'], MyC('admin_login_type', [], true)))
{
return DataReturn('暂时关闭登录', -1);
}
// 账户校验
$ac = self::LoginAccountsCheck($params);
if($ac['code'] != 0)
{
return $ac;
}
// 验证参数
$verify_params = [
'key_prefix' => 'admin_login_'.md5($params['accounts']),
'expire_time' => MyC('common_verify_expire_time'),
];
// 帐号密码登录需要校验密码
if($params['type'] == 'username')
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'pwd',
'error_msg' => '密码格式 6~18 个字符之间',
],
[
'checked_type' => 'fun',
'key_name' => 'pwd',
'checked_data' => 'CheckLoginPwd',
'error_msg' => '密码格式 6~18 个字符',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 帐号密码登录是否开启图片验证码
$verify_params['key_prefix'] = 'admin_login';
$verify = self::IsImaVerify($params, $verify_params, MyC('admin_login_img_verify_state'));
if($verify['code'] != 0)
{
return $verify;
}
} else {
// 账户类型
$obj = null;
switch($params['type'])
{
// 短信
case 'sms' :
$obj = new \base\Sms($verify_params);
break;
// 邮箱
case 'email' :
$obj = new \base\Email($verify_params);
break;
// 未知的字段
default :
return DataReturn('验证类型有误', -1);
}
// 验证码校验
// sms, email
if(isset($obj) && is_object($obj))
{
// 是否已过期
if(!$obj->CheckExpire())
{
return DataReturn('验证码已过期', -10);
}
// 是否正确
if(!$obj->CheckCorrect($params['verify']))
{
return DataReturn('验证码错误', -11);
}
}
}
// 获取管理员 // 获取管理员
$admin = Db::name('Admin')->field('id,username,login_pwd,login_salt,mobile,login_total,role_id')->where(['username'=>$params['username'], 'status'=>0])->find(); $admin = Db::name('Admin')->field('id,username,mobile,email,login_pwd,login_salt,login_total,role_id')->where([$ac['data']=>$params['accounts'], 'status'=>0])->find();
if(empty($admin)) if(empty($admin))
{ {
return DataReturn('账户异常', -2); return DataReturn('账户异常', -2);
} }
// 密码校验 // 密码校验
$login_pwd = LoginPwdEncryption($params['login_pwd'], $admin['login_salt']); // 帐号密码登录需要校验密码
if($login_pwd != $admin['login_pwd']) if($params['type'] == 'username')
{ {
return DataReturn('密码错误', -3); $pwd = LoginPwdEncryption($params['pwd'], $admin['login_salt']);
if($pwd != $admin['login_pwd'])
{
return DataReturn('密码错误', -3);
}
} }
// 种session // 种session
...@@ -388,13 +492,16 @@ class AdminService ...@@ -388,13 +492,16 @@ class AdminService
// 返回数据,更新数据库 // 返回数据,更新数据库
if(self::LoginInfo()) if(self::LoginInfo())
{ {
$login_salt = GetNumberCode(6); $data = [
$data = array(
'login_salt' => $login_salt,
'login_pwd' => LoginPwdEncryption($params['login_pwd'], $login_salt),
'login_total' => $admin['login_total']+1, 'login_total' => $admin['login_total']+1,
'login_time' => time(), 'login_time' => time(),
); ];
if($params['type'] == 'username')
{
$login_salt = GetNumberCode(6);
$data['login_salt'] = $login_salt;
$data['login_pwd'] = LoginPwdEncryption($params['pwd'], $login_salt);
}
if(Db::name('Admin')->where(['id'=>$admin['id']])->update($data)) if(Db::name('Admin')->where(['id'=>$admin['id']])->update($data))
{ {
// 清空权限缓存数据 // 清空权限缓存数据
...@@ -434,6 +541,7 @@ class AdminService ...@@ -434,6 +541,7 @@ class AdminService
*/ */
public static function LoginSession($admin) public static function LoginSession($admin)
{ {
unset($admin['login_pwd'], $admin['login_salt']);
return session(self::$admin_login_key, $admin); return session(self::$admin_login_key, $admin);
} }
...@@ -449,5 +557,234 @@ class AdminService ...@@ -449,5 +557,234 @@ class AdminService
{ {
return session(self::$admin_login_key, null); return session(self::$admin_login_key, null);
} }
/**
* 管理员登录验证码发送
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-03
* @desc description
* @param [array] $params [输入参数]
*/
public static function LoginVerifySend($params = [])
{
// 数据验证
$p = [
[
'checked_type' => 'empty',
'key_name' => 'accounts',
'error_msg' => '账号不能为空',
],
[
'checked_type' => 'in',
'key_name' => 'type',
'checked_data' => array_column(lang('common_login_type_list'), 'value'),
'error_msg' => '登录类型有误',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 是否开启用户注册
if(!in_array($params['type'], MyC('admin_login_type', [], true)))
{
return DataReturn('暂时关闭登录', -1);
}
// 验证码基础参数
$verify_params = [
'key_prefix' => 'admin_login',
'expire_time' => MyC('common_verify_expire_time'),
'interval_time' => MyC('common_verify_interval_time'),
];
// 是否开启图片验证码
$verify = self::IsImaVerify($params, $verify_params, MyC('common_img_verify_state'));
if($verify['code'] != 0)
{
return $verify;
}
// 账户校验
$ac = self::LoginAccountsCheck($params);
if($ac['code'] != 0)
{
return $ac;
}
// 验证码基础参数 key
$verify_params['key_prefix'] = 'admin_login_'.md5($params['accounts']);
// 发送验证码
$code = GetNumberCode(4);
switch($params['type'])
{
// 短信
case 'sms' :
$obj = new \base\Sms($verify_params);
$status = $obj->SendCode($params['accounts'], $code, MyC('admin_sms_login_template'));
break;
// 邮箱
case 'email' :
$obj = new \base\Email($verify_params);
$email_params = [
'email' => $params['accounts'],
'content' => MyC('admin_email_login_template'),
'title' => MyC('home_site_name').' - 管理员登录',
'code' => $code,
];
$status = $obj->SendHtml($email_params);
break;
// 默认
default :
return DataReturn('该类型不支持验证码发送', -2);
}
// 状态
if($status)
{
// 清除验证码
if(isset($verify['data']) && is_object($verify['data']))
{
$verify['data']->Remove();
}
return DataReturn('发送成功'.$code, 0);
}
return DataReturn('发送失败'.'['.$obj->error.']', -100);
}
/**
* 登录账户校验
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-03
* @desc description
* @param [array] $params [输入参数]
*/
private static function LoginAccountsCheck($params = [])
{
$field = '';
switch($params['type'])
{
// 手机
case 'sms' :
// 手机号码格式
if(!CheckMobile($params['accounts']))
{
return DataReturn('手机号码格式错误', -2);
}
// 手机号码是否存在
if(!self::IsExistAccounts($params['accounts'], 'mobile'))
{
return DataReturn('手机号码不存在', -3);
}
$field = 'mobile';
break;
// 邮箱
case 'email' :
// 电子邮箱格式
if(!CheckEmail($params['accounts']))
{
return DataReturn('电子邮箱格式错误', -2);
}
// 电子邮箱是否存在
if(!self::IsExistAccounts($params['accounts'], 'email'))
{
return DataReturn('电子邮箱不存在', -3);
}
$field = 'email';
break;
// 用户名
case 'username' :
// 用户名格式
if(!CheckUserName($params['accounts']))
{
return DataReturn('用户名格式由 字母数字下划线 2~18 个字符', -2);
}
// 用户名是否存在
if(!self::IsExistAccounts($params['accounts'], 'username'))
{
return DataReturn('帐号不存在', -3);
}
$field = 'username';
break;
}
return DataReturn('操作成功', 0, $field);
}
/**
*
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-03-08T10:27:14+0800
* @param [string] $accounts [账户名称]
* @param [string] $field [字段名称]
* @return [boolean] [存在true, 不存在false]
*/
/**
* 账户是否存在
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-03
* @desc description
* @param [string] $accounts [账户名称]
* @param [string] $field [字段名称]
* @return [boolean] [存在true, 不存在false]
*/
private static function IsExistAccounts($accounts, $field = 'username')
{
$id = Db::name('Admin')->where(array($field=>$accounts))->value('id');
return !empty($id);
}
/**
* 是否开启图片验证码校验
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-03
* @desc description
* @param [array] $params [输入参数]
* @param [array] $verify_params [配置参数]
* @param [int] $status [状态 0未开启, 1已开启]
* @return [object] [图片验证码类对象]
*/
private static function IsImaVerify($params, $verify_params, $status = 0)
{
if($status == 1)
{
if(empty($params['verify']))
{
return DataReturn('图片验证码为空', -10);
}
$verify = new \base\Verify($verify_params);
if(!$verify->CheckExpire())
{
return DataReturn('验证码已过期', -11);
}
if(!$verify->CheckCorrect($params['verify']))
{
return DataReturn('验证码错误', -12);
}
return DataReturn('验证成功', 0, $verify);
}
return DataReturn('验证成功', 0);
}
} }
?> ?>
\ No newline at end of file
...@@ -55,6 +55,13 @@ class BaseService ...@@ -55,6 +55,13 @@ class BaseService
'home_user_address_idcard_status' => (int) MyC('home_user_address_idcard_status', 0), 'home_user_address_idcard_status' => (int) MyC('home_user_address_idcard_status', 0),
'common_order_close_limit_time' => (int) MyC('common_order_close_limit_time', 30, true), 'common_order_close_limit_time' => (int) MyC('common_order_close_limit_time', 30, true),
'common_order_success_limit_time' => (int) MyC('common_order_success_limit_time', 21600, true), 'common_order_success_limit_time' => (int) MyC('common_order_success_limit_time', 21600, true),
'common_img_verify_state' => (int) MyC('common_img_verify_state', 0, true),
'home_user_login_img_verify_state' => (int) MyC('home_user_login_img_verify_state', 0, true),
'home_user_register_img_verify_state'=> (int) MyC('home_user_register_img_verify_state', 0, true),
'home_is_enable_userregister_agreement'=> (int) MyC('home_is_enable_userregister_agreement', 0, true),
'common_register_is_enable_audit' => (int) MyC('common_register_is_enable_audit', 0, true),
'home_user_login_type' => MyC('home_user_login_type', [], true),
'home_user_reg_type' => MyC('home_user_reg_type', [], true),
// 订单相关 // 订单相关
'home_is_enable_order_bulk_pay' => (int) MyC('home_is_enable_order_bulk_pay', 0), 'home_is_enable_order_bulk_pay' => (int) MyC('home_is_enable_order_bulk_pay', 0),
......
...@@ -36,6 +36,7 @@ class ConfigService ...@@ -36,6 +36,7 @@ class ConfigService
'home_index_floor_top_right_keywords', 'home_index_floor_top_right_keywords',
'home_index_floor_manual_mode_goods', 'home_index_floor_manual_mode_goods',
'home_index_floor_left_top_category', 'home_index_floor_left_top_category',
'admin_email_login_template',
]; ];
// 附件字段列表 // 附件字段列表
...@@ -55,8 +56,10 @@ class ConfigService ...@@ -55,8 +56,10 @@ class ConfigService
// 字符串转数组字段列表, 默认使用英文逗号处理 [ , ] // 字符串转数组字段列表, 默认使用英文逗号处理 [ , ]
public static $string_to_array_field_list = [ public static $string_to_array_field_list = [
'home_user_reg_state',
'common_images_verify_rules', 'common_images_verify_rules',
'home_user_login_type',
'home_user_reg_type',
'admin_login_type',
]; ];
/** /**
...@@ -71,7 +74,22 @@ class ConfigService ...@@ -71,7 +74,22 @@ class ConfigService
public static function ConfigList($params = []) public static function ConfigList($params = [])
{ {
$field = isset($params['field']) ? $params['field'] : 'only_tag,name,describe,value,error_tips'; $field = isset($params['field']) ? $params['field'] : 'only_tag,name,describe,value,error_tips';
return Db::name('Config')->column($field); $data = Db::name('Config')->column($field);
if(!empty($data))
{
foreach($data as $k=>&$v)
{
// 字符串转数组
foreach(self::$string_to_array_field_list as $fv)
{
if($k == $fv)
{
$v['value'] = (!isset($v['value']) || $v['value'] == '') ? [] : explode(',', $v['value']);
}
}
}
}
return $data;
} }
/** /**
...@@ -197,12 +215,12 @@ class ConfigService ...@@ -197,12 +215,12 @@ class ConfigService
$data = Db::name('Config')->column('value', 'only_tag'); $data = Db::name('Config')->column('value', 'only_tag');
// 数据处理 // 数据处理
// 开启用户注册列表 // 字符串转数组
foreach(self::$string_to_array_field_list as $field) foreach(self::$string_to_array_field_list as $fv)
{ {
if(isset($data[$field])) if(isset($data[$fv]))
{ {
$data[$field] = empty($data[$field]) ? [] : explode(',', $data[$field]); $data[$fv] = ($data[$fv] == '') ? [] : explode(',', $data[$fv]);
} }
} }
......
...@@ -163,7 +163,7 @@ class SafetyService ...@@ -163,7 +163,7 @@ class SafetyService
*/ */
private static function IsImaVerify($params, $verify_params) private static function IsImaVerify($params, $verify_params)
{ {
if(MyC('home_img_verify_state') == 1) if(MyC('common_img_verify_state') == 1)
{ {
if(empty($params['verify'])) if(empty($params['verify']))
{ {
......
...@@ -621,54 +621,135 @@ class UserService ...@@ -621,54 +621,135 @@ class UserService
return $ret; return $ret;
} }
// 是否开启用户登录 // 请求参数
if(MyC('home_user_login_state') != 1) $p = [
[
'checked_type' => 'in',
'key_name' => 'type',
'checked_data' => array_column(lang('common_login_type_list'), 'value'),
'error_msg' => '登录类型有误',
],
[
'checked_type' => 'empty',
'key_name' => 'accounts',
'error_msg' => '登录账号不能为空',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
{ {
return DataReturn('暂时关闭用户登录', -1); return DataReturn($ret, -1);
} }
// 登录帐号格式校验 // 是否开启用户注册
if(empty($params['accounts'])) if(!in_array($params['type'], MyC('home_user_login_type', [], true)))
{ {
return DataReturn('登录账号有误', -1); return DataReturn('暂时关闭登录', -1);
} }
// 密码 // 账户校验
$pwd = trim($params['pwd']); $ac = self::UserLoginAccountsCheck($params);
if(!CheckLoginPwd($pwd)) if($ac['code'] != 0)
{ {
return DataReturn('密码格式 6~18 个字符之间', -2); return $ac;
} }
// 是否开启图片验证码 // 验证参数
$verify_params = [ $verify_params = [
'key_prefix' => 'login', 'key_prefix' => 'user_login_'.md5($params['accounts']),
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
]; ];
$verify = self::IsImaVerify($params, $verify_params, MyC('home_user_login_img_verify_state'));
if($verify['code'] != 0) // 帐号密码登录需要校验密码
{ if($params['type'] == 'username')
return $verify; {
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'pwd',
'error_msg' => '密码格式 6~18 个字符之间',
],
[
'checked_type' => 'fun',
'key_name' => 'pwd',
'checked_data' => 'CheckLoginPwd',
'error_msg' => '密码格式 6~18 个字符',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 帐号密码登录是否开启图片验证码
$verify_params['key_prefix'] = 'user_login';
$verify = self::IsImaVerify($params, $verify_params, MyC('home_user_login_img_verify_state'));
if($verify['code'] != 0)
{
return $verify;
}
} else {
// 账户类型
$obj = null;
switch($params['type'])
{
// 短信
case 'sms' :
$obj = new \base\Sms($verify_params);
break;
// 邮箱
case 'email' :
$obj = new \base\Email($verify_params);
break;
// 未知的字段
default :
return DataReturn('验证类型有误', -1);
}
// 验证码校验
// sms, email
if(isset($obj) && is_object($obj))
{
// 是否已过期
if(!$obj->CheckExpire())
{
return DataReturn('验证码已过期', -10);
}
// 是否正确
if(!$obj->CheckCorrect($params['verify']))
{
return DataReturn('验证码错误', -11);
}
}
} }
// 获取用户账户信息 // 获取用户账户信息
$where = array('username|mobile|email' => $params['accounts'], 'is_delete_time'=>0); $where = [$ac['data'] => $params['accounts'], 'is_delete_time'=>0];
$user = Db::name('User')->field('id,pwd,salt,status')->where($where)->find(); $user = Db::name('User')->field('id,pwd,salt,status')->where($where)->find();
if(empty($user)) if(empty($user))
{ {
return DataReturn('帐号不存在', -3); return DataReturn('帐号不存在', -3);
} }
// 用户状态 // 密码校验
if(in_array($user['status'], [2,3])) // 帐号密码登录需要校验密码
if($params['type'] == 'username')
{ {
return DataReturn(lang('common_user_status_list')[$user['status']]['tips'], -10); $pwd = LoginPwdEncryption($params['pwd'], $user['salt']);
if($pwd != $user['pwd'])
{
return DataReturn('密码错误', -4);
}
} }
// 密码校验 // 用户状态
if(LoginPwdEncryption($pwd, $user['salt']) != $user['pwd']) if(in_array($user['status'], [2,3]))
{ {
return DataReturn('密码错误', -4); return DataReturn(lang('common_user_status_list')[$user['status']]['tips'], -10);
} }
// 用户登录前钩子 // 用户登录前钩子
...@@ -684,13 +765,16 @@ class UserService ...@@ -684,13 +765,16 @@ class UserService
return $ret; return $ret;
} }
// 更新用户密码 // 返回数据,更新数据库
$salt = GetNumberCode(6); $data = [
$data = array(
'pwd' => LoginPwdEncryption($pwd, $salt),
'salt' => $salt,
'upd_time' => time(), 'upd_time' => time(),
); ];
if($params['type'] == 'username')
{
$salt = GetNumberCode(6);
$data['salt'] = $salt;
$data['pwd'] = LoginPwdEncryption($params['pwd'], $salt);
}
if(Db::name('User')->where(['id'=>$user['id']])->update($data) !== false) if(Db::name('User')->where(['id'=>$user['id']])->update($data) !== false)
{ {
// 清除图片验证码 // 清除图片验证码
...@@ -723,13 +807,14 @@ class UserService ...@@ -723,13 +807,14 @@ class UserService
$body_html = []; $body_html = [];
// 用户登录后钩子 // 用户登录后钩子
$user = Db::name('User')->field('id,username,nickname,mobile,email,gender,avatar,province,city,birthday')->where(['id'=>$user_id])->find();
$hook_name = 'plugins_service_user_login_end'; $hook_name = 'plugins_service_user_login_end';
$ret = HookReturnHandle(Hook::listen($hook_name, [ $ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name, 'hook_name' => $hook_name,
'is_backend' => true, 'is_backend' => true,
'params' => &$params, 'params' => &$params,
'user_id' => $user_id, 'user_id' => $user_id,
'user' => Db::name('User')->field('id,username,nickname,mobile,email,gender,avatar,province,city,birthday')->where(['id'=>$user_id])->find(), 'user' => $user,
'body_html' => &$body_html, 'body_html' => &$body_html,
])); ]));
if(isset($ret['code']) && $ret['code'] != 0) if(isset($ret['code']) && $ret['code'] != 0)
...@@ -738,9 +823,14 @@ class UserService ...@@ -738,9 +823,14 @@ class UserService
} }
// 登录返回 // 登录返回
$result = [ if(APPLICATION == 'app')
'body_html' => is_array($body_html) ? implode(' ', $body_html) : $body_html, {
]; $result = self::AppUserInfoHandle($user_id);
} else {
$result = [
'body_html' => is_array($body_html) ? implode(' ', $body_html) : $body_html,
];
}
return DataReturn('登录成功', 0, $result); return DataReturn('登录成功', 0, $result);
} }
return DataReturn('登录失效,请重新登录', -100); return DataReturn('登录失效,请重新登录', -100);
...@@ -772,7 +862,7 @@ class UserService ...@@ -772,7 +862,7 @@ class UserService
[ [
'checked_type' => 'in', 'checked_type' => 'in',
'key_name' => 'type', 'key_name' => 'type',
'checked_data' => array_column(lang('common_user_reg_state_list'), 'value'), 'checked_data' => array_column(lang('common_user_reg_type_list'), 'value'),
'error_msg' => '注册类型有误', 'error_msg' => '注册类型有误',
], ],
[ [
...@@ -801,7 +891,7 @@ class UserService ...@@ -801,7 +891,7 @@ class UserService
} }
// 是否开启用户注册 // 是否开启用户注册
if(!in_array($params['type'], MyC('home_user_reg_state'))) if(!in_array($params['type'], MyC('home_user_reg_type', [], true)))
{ {
return DataReturn('暂时关闭用户注册', -1); return DataReturn('暂时关闭用户注册', -1);
} }
...@@ -827,11 +917,12 @@ class UserService ...@@ -827,11 +917,12 @@ class UserService
// 验证码校验 // 验证码校验
$verify_params = [ $verify_params = [
'key_prefix' => 'reg_'.md5($params['accounts']), 'key_prefix' => 'user_reg_'.md5($params['accounts']),
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
]; ];
// 账户类型 // 账户类型
$obj = null;
switch($params['type']) switch($params['type'])
{ {
// 短信 // 短信
...@@ -1006,6 +1097,167 @@ class UserService ...@@ -1006,6 +1097,167 @@ class UserService
return DataReturn('操作成功', 0); return DataReturn('操作成功', 0);
} }
/**
* 用户登录账户校验
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-03-10T10:06:29+0800
* @param [array] $params [输入参数]
*/
private static function UserLoginAccountsCheck($params = [])
{
$field = '';
switch($params['type'])
{
// 手机
case 'sms' :
// 手机号码格式
if(!CheckMobile($params['accounts']))
{
return DataReturn('手机号码格式错误', -2);
}
// 手机号码是否不存在
if(!self::IsExistAccounts($params['accounts'], 'mobile'))
{
return DataReturn('手机号码不存在', -3);
}
$field = 'mobile';
break;
// 邮箱
case 'email' :
// 电子邮箱格式
if(!CheckEmail($params['accounts']))
{
return DataReturn('电子邮箱格式错误', -2);
}
// 电子邮箱是否不存在
if(!self::IsExistAccounts($params['accounts'], 'email'))
{
return DataReturn('电子邮箱不存在', -3);
}
$field = 'email';
break;
// 用户名
case 'username' :
$field = 'username|mobile|email';
// 帐号是否不存在
if(!self::IsExistAccounts($params['accounts'], 'username|mobile|email'))
{
return DataReturn('登录帐号不存在', -3);
}
break;
}
return DataReturn('操作成功', 0, $field);
}
/**
* 用户登录-验证码发送
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-03-10T10:06:29+0800
* @param [array] $params [输入参数]
*/
public static function LoginVerifySend($params = [])
{
// 数据验证
$p = [
[
'checked_type' => 'empty',
'key_name' => 'accounts',
'error_msg' => '账号不能为空',
],
[
'checked_type' => 'in',
'key_name' => 'type',
'checked_data' => array_column(lang('common_login_type_list'), 'value'),
'error_msg' => '登录类型有误',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 是否开启用户注册
if(!in_array($params['type'], MyC('home_user_login_type', [], true)))
{
return DataReturn('暂时关闭登录', -1);
}
// 验证码基础参数
$verify_params = [
'key_prefix' => 'user_login',
'expire_time' => MyC('common_verify_expire_time'),
'interval_time' => MyC('common_verify_interval_time'),
];
// 是否开启图片验证码
$verify = self::IsImaVerify($params, $verify_params, MyC('common_img_verify_state'));
if($verify['code'] != 0)
{
return $verify;
}
// 账户校验
$ac = self::UserLoginAccountsCheck($params);
if($ac['code'] != 0)
{
return $ac;
}
// 验证码基础参数 key
$verify_params['key_prefix'] = 'user_login_'.md5($params['accounts']);
// 发送验证码
$code = GetNumberCode(4);
switch($params['type'])
{
// 短信
case 'sms' :
$obj = new \base\Sms($verify_params);
$status = $obj->SendCode($params['accounts'], $code, MyC('home_sms_login_template'));
break;
// 邮箱
case 'email' :
$obj = new \base\Email($verify_params);
$email_params = array(
'email' => $params['accounts'],
'content' => MyC('home_email_login_template'),
'title' => MyC('home_site_name').' - 用户登录',
'code' => $code,
);
$status = $obj->SendHtml($email_params);
break;
// 默认
default :
return DataReturn('该类型不支持验证码发送', -2);
}
// 状态
if($status)
{
// 清除验证码
if(isset($verify['data']) && is_object($verify['data']))
{
$verify['data']->Remove();
}
return DataReturn('发送成功', 0);
} else {
return DataReturn('发送失败'.'['.$obj->error.']', -100);
}
}
/** /**
* 用户注册-验证码发送 * 用户注册-验证码发送
* @author Devil * @author Devil
...@@ -1026,7 +1278,7 @@ class UserService ...@@ -1026,7 +1278,7 @@ class UserService
[ [
'checked_type' => 'in', 'checked_type' => 'in',
'key_name' => 'type', 'key_name' => 'type',
'checked_data' => array_column(lang('common_user_reg_state_list'), 'value'), 'checked_data' => array_column(lang('common_user_reg_type_list'), 'value'),
'error_msg' => '注册类型有误', 'error_msg' => '注册类型有误',
], ],
]; ];
...@@ -1037,20 +1289,20 @@ class UserService ...@@ -1037,20 +1289,20 @@ class UserService
} }
// 是否开启用户注册 // 是否开启用户注册
if(!in_array($params['type'], MyC('home_user_reg_state'))) if(!in_array($params['type'], MyC('home_user_reg_type', [], true)))
{ {
return DataReturn('暂时关闭用户注册'); return DataReturn('暂时关闭用户注册');
} }
// 验证码基础参数 // 验证码基础参数
$verify_params = [ $verify_params = [
'key_prefix' => 'reg', 'key_prefix' => 'user_reg',
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
'interval_time' => MyC('common_verify_interval_time'), 'interval_time' => MyC('common_verify_interval_time'),
]; ];
// 是否开启图片验证码 // 是否开启图片验证码
$verify = self::IsImaVerify($params, $verify_params, MyC('home_img_verify_state')); $verify = self::IsImaVerify($params, $verify_params, MyC('common_img_verify_state'));
if($verify['code'] != 0) if($verify['code'] != 0)
{ {
return $verify; return $verify;
...@@ -1064,7 +1316,7 @@ class UserService ...@@ -1064,7 +1316,7 @@ class UserService
} }
// 验证码基础参数 key // 验证码基础参数 key
$verify_params['key_prefix'] = 'reg_'.md5($params['accounts']); $verify_params['key_prefix'] = 'user_reg_'.md5($params['accounts']);
// 发送验证码 // 发送验证码
$code = GetNumberCode(4); $code = GetNumberCode(4);
...@@ -1126,13 +1378,13 @@ class UserService ...@@ -1126,13 +1378,13 @@ class UserService
// 验证码基础参数 // 验证码基础参数
$verify_params = [ $verify_params = [
'key_prefix' => 'forget', 'key_prefix' => 'user_forget',
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
'interval_time' => MyC('common_verify_interval_time'), 'interval_time' => MyC('common_verify_interval_time'),
]; ];
// 是否开启图片验证码 // 是否开启图片验证码
$verify = self::IsImaVerify($params, $verify_params, MyC('home_img_verify_state')); $verify = self::IsImaVerify($params, $verify_params, MyC('common_img_verify_state'));
if($verify['code'] != 0) if($verify['code'] != 0)
{ {
return $verify; return $verify;
...@@ -1146,7 +1398,7 @@ class UserService ...@@ -1146,7 +1398,7 @@ class UserService
} }
// 验证码基础参数 key // 验证码基础参数 key
$verify_params['key_prefix'] = 'forget_'.md5($params['accounts']); $verify_params['key_prefix'] = 'user_forget_'.md5($params['accounts']);
// 验证码 // 验证码
$code = GetNumberCode(4); $code = GetNumberCode(4);
...@@ -1264,9 +1516,9 @@ class UserService ...@@ -1264,9 +1516,9 @@ class UserService
// 验证码校验 // 验证码校验
$verify_params = [ $verify_params = [
'key_prefix' => 'forget_'.md5($params['accounts']), 'key_prefix' => 'user_forget_'.md5($params['accounts']),
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
'interval_time' => MyC('common_verify_interval_time'), 'interval_time' => MyC('common_verify_interval_time'),
]; ];
switch($ret['data']) switch($ret['data'])
{ {
......
...@@ -32,5 +32,124 @@ return array ( ...@@ -32,5 +32,124 @@ return array (
'log_write' => 'log_write' =>
array ( array (
), ),
'plugins_admin_css' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_css' =>
array (
0 => 'app\\plugins\\store\\Hook',
1 => 'app\\plugins\\share\\Hook',
),
'plugins_js' =>
array (
0 => 'app\\plugins\\store\\Hook',
1 => 'app\\plugins\\share\\Hook',
),
'plugins_service_navigation_header_handle' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_users_center_left_menu_handle' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_header_navigation_top_right_handle' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_warehouse_goods_inventory_deduct' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_warehouse_goods_inventory_rollback' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_warehouse_goods_inventory_sync' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_goods_field_status_update' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_goods_delete' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_goods_save_end' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_editor_path_type_admin_goods_saveinfo' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_view_goods_detail_right_content_bottom' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_view_goods_detail_base_bottom' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_view_goods_detail_base_buy_nav_min_inside_begin' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_warehouse_handle_end' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_buy_order_insert_begin' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_buy_order_insert_end' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_system_begin' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_view_buy_form_inside' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_view_buy_base_confirm_top' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_view_admin_order_list_operate' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_order_status_change_history_success_handle' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_order_aftersale_audit_handle_end' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_service_goods_buy_nav_button_handle' =>
array (
0 => 'app\\plugins\\store\\Hook',
),
'plugins_view_common_bottom' =>
array (
0 => 'app\\plugins\\store\\Hook',
1 => 'app\\plugins\\share\\Hook',
),
'plugins_common_page_bottom' =>
array (
0 => 'app\\plugins\\share\\Hook',
),
'plugins_view_goods_detail_photo_bottom' =>
array (
0 => 'app\\plugins\\share\\Hook',
),
); );
?> ?>
\ No newline at end of file
...@@ -10,17 +10,23 @@ ...@@ -10,17 +10,23 @@
6. 搜索页面价格、参数、规格、品牌开关控制 6. 搜索页面价格、参数、规格、品牌开关控制
7. 新增翼支付方式 7. 新增翼支付方式
8. 商品详情购买导航按钮统一标准化 8. 商品详情购买导航按钮统一标准化
9. 非兼容模式去掉index.php
web端 web端
1. 编辑器图片、附件、视频多选支持按照顺序选择插入编辑器 1. 编辑器图片、附件、视频多选支持按照顺序选择插入编辑器
2. 插件、主题下载新增历史信息记录 2. 插件、主题下载新增历史信息记录
3. 插件(上传、安装、卸载、删除)新增回调事件 3. 插件(上传、安装、卸载、删除)新增回调事件
4. 后台管理登录优化(新增帐号密码+图片验证码、邮件验证码、手机验证码)
5. 用户登录优化(新增帐号密码+图片验证码、邮件验证码、手机验证码)
6. API用户接口新增帐号密码、手机验证码、邮箱验证码登录方式
小程序 小程序
1. 1. 小程序商品详情标题去除高度限制
2. 签到优化,不强制填写信息
3. 微信小程序适配官方新规授权登录逻辑更新
插件 插件
1. 应用商店 1. 应用商店(在线自动安装应用插件、开发者提供优质插件、VIP授权管理)
+=========================================================+ +=========================================================+
......
此差异已折叠。
...@@ -118,7 +118,7 @@ class Wechat ...@@ -118,7 +118,7 @@ class Wechat
// 缓存存储 // 缓存存储
cache($key, $result); cache($key, $result);
return ['status'=>0, 'msg'=>'授权成功', 'data'=>$result['openid']]; return ['status'=>0, 'msg'=>'授权成功', 'data'=>$result];
} }
return ['status'=>-1, 'msg'=>$result['errmsg']]; return ['status'=>-1, 'msg'=>$result['errmsg']];
} }
...@@ -204,8 +204,9 @@ class Wechat ...@@ -204,8 +204,9 @@ class Wechat
* @version 1.0.0 * @version 1.0.0
* @date 2020-08-26 * @date 2020-08-26
* @desc description * @desc description
* @param [array] $params [输入参数]
*/ */
public function GetSignPackage() public function GetSignPackage($params = [])
{ {
$access_token = $this->GetAccessToken(); $access_token = $this->GetAccessToken();
if(!empty($access_token)) if(!empty($access_token))
...@@ -214,7 +215,7 @@ class Wechat ...@@ -214,7 +215,7 @@ class Wechat
$ticket = $this->GetTicket($access_token); $ticket = $this->GetTicket($access_token);
// 注意 URL 一定要动态获取,不能 hardcode. // 注意 URL 一定要动态获取,不能 hardcode.
$url = __MY_VIEW_URL__; $url = empty($params['url']) ? __MY_VIEW_URL__ : urldecode(htmlspecialchars_decode($params['url']));
$timestamp = time(); $timestamp = time();
$nonce_str = $this->CreateNonceStr(); $nonce_str = $this->CreateNonceStr();
......
...@@ -264,7 +264,7 @@ class Weixin ...@@ -264,7 +264,7 @@ class Weixin
$pay_data['paySign'] = $this->GetSign($pay_data); $pay_data['paySign'] = $this->GetSign($pay_data);
// 微信中 // 微信中
if(ApplicationClientType() == 'h5' && IsWeixinEnv()) if(APPLICATION == 'web' && IsWeixinEnv())
{ {
$this->PayHtml($pay_data, $redirect_url); $this->PayHtml($pay_data, $redirect_url);
} else { } else {
......
...@@ -35,12 +35,12 @@ body { ...@@ -35,12 +35,12 @@ body {
} }
@media only screen and (max-width: 641px) { @media only screen and (max-width: 641px) {
.account-pages { .account-pages {
padding-top: 15%; padding-top: 10%;
} }
} }
@media only screen and (min-width: 641px) { @media only screen and (min-width: 641px) {
.account-pages { .account-pages {
padding-top: 10%; padding-top: 6%;
} }
} }
.wrapper-page { .wrapper-page {
...@@ -54,7 +54,6 @@ body { ...@@ -54,7 +54,6 @@ body {
} }
} }
.admin-login { .admin-login {
padding: 20px;
box-shadow: 0 0px 8px 0 rgba(0,0,0,0.06),0 1px 0px 0 rgba(0,0,0,0.02); box-shadow: 0 0px 8px 0 rgba(0,0,0,0.06),0 1px 0px 0 rgba(0,0,0,0.02);
-webkit-border-radius: 5px; -webkit-border-radius: 5px;
border-radius: 5px; border-radius: 5px;
...@@ -69,8 +68,51 @@ body { ...@@ -69,8 +68,51 @@ body {
color: #0e90d2; color: #0e90d2;
text-shadow: -2px 1px #fff; text-shadow: -2px 1px #fff;
} }
.admin-login .am-form-group {
padding: 5px 0 !important;
}
.admin-login .form-verify a.form-verify-tips {
font-size: 12px;
text-decoration: none;
line-height: 28px;
color: #FFF;
filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#7F000000', endColorstr='#7F000000');
background: rgba(0,0,0,0.5);
text-align: center;
display: none;
width: 102px;
height: 28px;
position: absolute;
z-index: 1;
top: -1px;
left: -1px;
}
@media only screen and (min-width: 641px) { @media only screen and (min-width: 641px) {
.admin-login .am-form-group { .admin-login {
padding: 0 !important; max-width: 360px;
}
.admin-login .form-verify:hover a.form-verify-tips {
display: block;
} }
}
/**
* 弹窗图片验证码
*/
#verify-img {
vertical-align:middle;
border:1px solid #ccc;
}
#verify-win .verify-submit-win {
margin-top:20px;
display:block;
}
#verify-win .am-modal-bd {
margin-top:10px;
}
#verify-win .am-modal-bd .base {
overflow:hidden;
}
#verify-win .am-modal-bd .base .verify-tips {
font-size:12px;
} }
\ No newline at end of file
.am-panel .am-form-group:last-child {
border-bottom: 0;
}
\ No newline at end of file
...@@ -654,4 +654,12 @@ table.am-table .am-btn-danger:hover { ...@@ -654,4 +654,12 @@ table.am-table .am-btn-danger:hover {
max-height: calc(100% - 50px); max-height: calc(100% - 50px);
overflow-x: auto; overflow-x: auto;
overflow-y: auto; overflow-y: auto;
}
/**
* 表单带面板
*/
form .am-panel .am-form-group:last-child,
form .am-panel .business-form-group:last-child {
border-bottom: 0;
} }
\ No newline at end of file
.form-fraction-list input { width: 16% !important; display: initial !important; }
\ No newline at end of file
...@@ -4,14 +4,6 @@ ...@@ -4,14 +4,6 @@
.dl-content img { .dl-content img {
max-width: 100%; max-width: 100%;
} }
.am-panel .am-form-group:last-child,
.am-panel .business-form-group:last-child {
border-bottom: 0;
}
.edui-default .edui-editor,
.edui-default .edui-editor-iframeholder {
width: 100% !important;
}
/** /**
* 滚动导航 * 滚动导航
......
...@@ -15,14 +15,6 @@ ul.home_site_user_register_bg_images-images-view li { ...@@ -15,14 +15,6 @@ ul.home_site_user_register_bg_images-images-view li {
height: 180px; height: 180px;
} }
/**
* 带面板
*/
.am-panel .am-form-group:last-child {
border-bottom: 0;
}
/** /**
* 地址添加/编辑 * 地址添加/编辑
*/ */
......
// 表单初始化
FromInit('form.form-validation-username');
FromInit('form.form-validation-email');
FromInit('form.form-validation-sms');
$(function() $(function()
{ {
// 登录页面背景切换 // 登录页面背景切换
...@@ -24,4 +29,135 @@ $(function() ...@@ -24,4 +29,135 @@ $(function()
// 只有一张图片则直接显示 // 只有一张图片则直接显示
$('.bg-slides-item').show(); $('.bg-slides-item').show();
} }
// 查看密码
$('.eye-submit').on('click', function()
{
var $obj = $(this).parent().prev();
if($obj.attr('type') == 'password')
{
$(this).addClass('cr-green');
$obj.attr('type', 'text');
} else {
$(this).removeClass('cr-green');
$obj.attr('type', 'password');
}
});
// 短信验证码获取
$('.verify-submit, .verify-submit-win').on('click', function()
{
// 表单发送按钮
var form_tag = $(this).data('form-tag') || null;
if(form_tag != null)
{
$('body').attr('data-form-tag', form_tag);
}
// 验证账户
var $this = $(this);
var $form_tag = $($('body').attr('data-form-tag'));
var $accounts = $form_tag.find('input[name="accounts"]');
var $verify = $('#verify-img-value');
var $verify_img = $('#verify-img');
var verify = '';
if($accounts.hasClass('am-field-valid'))
{
// 是否需要先校验图片验证码
if($this.data('verify') == 1)
{
// 开启图片验证码窗口
$('#verify-win').modal({closeViaDimmer:false});
$verify_img.trigger("click");
$verify.val('');
$verify.focus();
return false;
}
// 验证码窗口操作按钮则更新按钮对象
var is_win = $(this).data('win');
if(is_win == 1)
{
$this = $form_tag.find('.verify-submit');
// 验证码参数处理
verify = $verify.val().replace(/\s+/g, '');
if(verify.length != 4)
{
Prompt($verify.data('validation-message'));
$verify.focus();
return false;
}
}
// 验证码时间间隔
var time_count = parseInt($this.data('time'));
// 按钮交互
$this.button('loading');
if(is_win == 1)
{
$('.verify-submit-win').button('loading');
}
// 发送验证码
$.ajax({
url: $('.verify-submit').data('url'),
type: 'POST',
data: {"accounts":$accounts.val(), "verify":verify, "type":$form_tag.find('input[name="type"]').val()},
dataType: 'json',
success: function(result)
{
if(result.code == 0)
{
var intervalid = setInterval(function()
{
if(time_count == 0)
{
$this.button('reset');
if(is_win == 1)
{
$('.verify-submit-win').button('reset');
}
$this.text($this.data('text'));
$verify.val('');
clearInterval(intervalid);
} else {
var send_msg = $this.data('send-text').replace(/{time}/, time_count--);
$this.text(send_msg);
}
}, 1000);
if($('#verify-win').length > 0)
{
$('#verify-win').modal('close');
}
} else {
$this.button('reset');
if(is_win == 1)
{
$('.verify-submit-win').button('reset');
$verify_img.trigger("click");
}
Prompt(result.msg);
}
},
error: function(xhr, type)
{
$this.button('reset');
if(is_win == 1)
{
$('.verify-submit-win').button('reset');
}
Prompt(HtmlToString(xhr.responseText) || '异常错误', null, 30);
}
});
} else {
if($('#verify-win').length > 0)
{
$('#verify-win').modal('close');
}
$accounts.focus();
}
});
}); });
\ No newline at end of file
...@@ -48,10 +48,11 @@ $(function() ...@@ -48,10 +48,11 @@ $(function()
toolbars: toolbars, toolbars: toolbars,
initialFrameHeight : 150 initialFrameHeight : 150
} }
UE.getEditor('admin_email_login_template', config);
UE.getEditor('common_email_currency_template', config); UE.getEditor('common_email_currency_template', config);
UE.getEditor('home_email_login_template', config);
UE.getEditor('email_user_reg', config); UE.getEditor('email_user_reg', config);
UE.getEditor('email_user_forget_pwd', config); UE.getEditor('email_user_forget_pwd', config);
UE.getEditor('email_user_student_binding', config);
UE.getEditor('email_user_email_binding', config); UE.getEditor('email_user_email_binding', config);
} }
}); });
\ No newline at end of file
...@@ -7,6 +7,9 @@ $(function() ...@@ -7,6 +7,9 @@ $(function()
// 弹窗数据初始化 // 弹窗数据初始化
function PopupInit($popup, data) function PopupInit($popup, data)
{ {
// 数据处理
data = JSON.parse(decodeURIComponent(data));
// 用户信息 // 用户信息
$popup.find('input[name="id"]').val(data.id); $popup.find('input[name="id"]').val(data.id);
$popup.find('.user-info img').attr('src', data.user.avatar || $popup.find('.user-info img').attr('src')); $popup.find('.user-info img').attr('src', data.user.avatar || $popup.find('.user-info img').attr('src'));
......
...@@ -140,12 +140,12 @@ form.am-form .am-form-group-refreshing, .plug-file-upload-view { border-bottom: ...@@ -140,12 +140,12 @@ form.am-form .am-form-group-refreshing, .plug-file-upload-view { border-bottom:
margin-left: 0; margin-left: 0;
margin-top: 0; margin-top: 0;
} }
.am-modal-dialog,
.am-modal-dialog .am-modal-hd, .am-modal-dialog .am-modal-hd,
.am-modal-dialog .am-modal-bd { .am-modal-dialog .am-modal-bd {
background: #fff; background: #fff;
} }
/** /**
* iframe * iframe
*/ */
...@@ -783,4 +783,28 @@ button.colorpicker-submit img { ...@@ -783,4 +783,28 @@ button.colorpicker-submit img {
.pagination-input { .pagination-input {
width: 50px; width: 50px;
vertical-align: inherit !important; vertical-align: inherit !important;
}
/**
* 编辑器宽度自适应
*/
.edui-default .edui-editor,
.edui-default .edui-editor-iframeholder {
width: 100% !important;
}
/**
* 图片验证码
*/
@media only screen and (min-width: 641px) {
#verify-img-value {
float: left;
width: 50%;
margin-right: 5px;
}
}
@media only screen and (max-width: 641px) {
#verify-img-value {
margin-bottom: 10px;
}
} }
\ No newline at end of file
...@@ -8113,11 +8113,7 @@ UE.Editor.defaultOptions = function(editor){ ...@@ -8113,11 +8113,7 @@ UE.Editor.defaultOptions = function(editor){
}); });
function showErrorMsg(msg) { function showErrorMsg(msg) {
console && console.error(msg); console && console.info(msg);
//me.fireEvent('showMessage', {
// 'title': msg,
// 'type': 'error'
//});
} }
}; };
...@@ -8245,6 +8241,7 @@ UE.ajax = function() { ...@@ -8245,6 +8241,7 @@ UE.ajax = function() {
} }
} }
}; };
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
if (method == "POST") { if (method == "POST") {
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(submitStr); xhr.send(submitStr);
...@@ -443,33 +443,23 @@ ul.am-dropdown-content > .am-active > a:focus, ...@@ -443,33 +443,23 @@ ul.am-dropdown-content > .am-active > a:focus,
} }
/** /**
* PC * 公共登录窗口
*/ */
@media only screen and (min-width: 641px) { @media only screen and (min-width: 641px) {
/** .common-login-modal {
* 图片验证码 max-width: 400px;
*/ height: 408px;
#verify-img-value { float: left; width: 50%; margin-right: 5px; } left: calc(50% - 200px);
top: calc(50% - 204px);
/** margin-left: 0;
* 公共登录窗口 margin-top: 0;
*/ }
.common-login-modal { max-width: 400px; height: 408px; left: calc(50% - 200px); top: calc(50% - 204px); margin-left: 0; margin-top: 0; }
} }
/**
* 手机
*/
@media only screen and (max-width: 641px) { @media only screen and (max-width: 641px) {
/** .common-login-modal {
* 图片验证码 height: 410px;
*/ top: calc(100% - 410px);
#verify-img-value { margin-bottom: 10px; } }
/**
* 公共登录窗口
*/
.common-login-modal { height: 410px; top: calc(100% - 410px);}
} }
...@@ -728,6 +718,7 @@ table.am-table .am-btn-danger:hover { ...@@ -728,6 +718,7 @@ table.am-table .am-btn-danger:hover {
.am-tabs-d2 .am-tabs-bd { .am-tabs-d2 .am-tabs-bd {
border: none; border: none;
z-index: 0; z-index: 0;
background: #fff;
} }
.am-tabs-d2 .am-tabs-bd .am-tab-panel { .am-tabs-d2 .am-tabs-bd .am-tab-panel {
padding: 0; padding: 0;
......
...@@ -54,40 +54,6 @@ ...@@ -54,40 +54,6 @@
padding: 5px 10px !important; padding: 5px 10px !important;
} }
/**
* 注册
*/
.user-register-container {
background-color: #FAFAFA;
width: 100%;
overflow: hidden;
}
.register-container .am-tabs {
margin: 0;
}
.register-container .am-tabs .am-tabs-bd, .register-container .register-content .register-close {
background: #fff;
}
.register-container .register-content .register-close {
color: #666;
}
.register-container .am-tabs-d2 .am-tabs-nav a {
text-decoration: none;
}
.register-container .am-tabs-d2 .am-tabs-nav > .am-active a {
color: #d2364c;
}
.register-container .am-tabs-d2 .am-tabs-nav > .am-active {
border-bottom: 2px solid #d2364c;
}
.register-container .am-tabs-d2 .am-tabs-nav > .am-active:after {
border-bottom-color: #d2364c;
}
.register-container .am-tabs-d2 .am-tabs-bd {
z-index: 0;
}
/** /**
* 表单验证码 * 表单验证码
*/ */
...@@ -129,16 +95,14 @@ ...@@ -129,16 +95,14 @@
color: #d2364c; color: #d2364c;
} }
/** /**
* 弹窗图片验证码 * 弹窗图片验证码
*/ */
.my-content .verify-submit-win{ margin-top: 20px; display: block; } #verify-win .verify-submit-win{ margin-top: 20px; display: block; }
.my-content .reg-switch-tips { font-weight: 100; font-size: 12px; color: #f87689; margin-left: 20px; } #verify-win .am-modal-bd { margin-top: 10px; }
.my-content #verify-win .am-modal-bd { margin-top: 10px; } #verify-win .am-modal-bd .base { overflow: hidden; }
.my-content #verify-win .am-modal-bd .base { overflow: hidden; } #verify-win .am-modal-bd .base .verify-tips { font-size: 12px; }
.my-content #verify-win .am-modal-bd .base .verify-tips { font-size: 12px; } #verify-img { vertical-align: middle; border: 1px solid #ccc; }
.my-content #verify-img { vertical-align: middle; border: 1px solid #ccc; }
/** /**
...@@ -146,7 +110,5 @@ ...@@ -146,7 +110,5 @@
*/ */
.login-modal-container { .login-modal-container {
padding: 0; padding: 0;
} background: #fff;
.login-modal-container-top {
margin: 10px 0;
} }
\ No newline at end of file
...@@ -105,7 +105,7 @@ $(function() ...@@ -105,7 +105,7 @@ $(function()
// 是否登录 // 是否登录
if(__user_id__ == 0) if(__user_id__ == 0)
{ {
ModalLoad(__modal_login_url__, '登录', 'common-login-modal'); ModalLoad(__modal_login_url__, '', 'common-login-modal');
return false; return false;
} }
}); });
......
...@@ -43,8 +43,9 @@ $(function() ...@@ -43,8 +43,9 @@ $(function()
if($this.data('verify') == 1) if($this.data('verify') == 1)
{ {
// 开启图片验证码窗口 // 开启图片验证码窗口
$('#verify-win').modal('open'); $('#verify-win').modal({closeViaDimmer:false});
$verify_img.trigger("click"); $verify_img.trigger("click");
$verify.val('');
$verify.focus(); $verify.focus();
return false; return false;
} }
......
...@@ -73,7 +73,7 @@ App({ ...@@ -73,7 +73,7 @@ App({
// 请求地址 // 请求地址
request_url: "{{request_url}}", request_url: "{{request_url}}",
// request_url: 'http://shopxo.com/', request_url: 'http://shopxo.com/',
// request_url: 'https://dev.shopxo.net/', // request_url: 'https://dev.shopxo.net/',
// 基础信息 // 基础信息
...@@ -231,12 +231,12 @@ App({ ...@@ -231,12 +231,12 @@ App({
var self = this; var self = this;
wx.checkSession({ wx.checkSession({
success: function () { success: function () {
var openid = wx.getStorageSync(self.data.cache_user_login_key) || null; var login_data = wx.getStorageSync(self.data.cache_user_login_key) || null;
if (openid == null) if (login_data == null)
{ {
self.user_login(object, method); self.user_login(object, method);
} else { } else {
self.get_user_login_info(object, method, openid, auth_data); self.get_user_login_info(object, method, login_data, auth_data);
} }
}, },
fail: function () { fail: function () {
...@@ -253,8 +253,8 @@ App({ ...@@ -253,8 +253,8 @@ App({
* auth_data 授权数据 * auth_data 授权数据
*/ */
user_login(object, method) { user_login(object, method) {
var openid = wx.getStorageSync(this.data.cache_user_login_key) || null; var login_data = wx.getStorageSync(this.data.cache_user_login_key) || null;
if (openid == null) if (login_data == null)
{ {
var self = this; var self = this;
// 加载loding // 加载loding
...@@ -270,6 +270,7 @@ App({ ...@@ -270,6 +270,7 @@ App({
dataType: 'json', dataType: 'json',
header: { 'content-type': 'application/x-www-form-urlencoded' }, header: { 'content-type': 'application/x-www-form-urlencoded' },
success: (res) => { success: (res) => {
console.log(res.data);
wx.hideLoading(); wx.hideLoading();
if (res.data.code == 0) { if (res.data.code == 0) {
var data = res.data.data; var data = res.data.data;
...@@ -289,7 +290,7 @@ App({ ...@@ -289,7 +290,7 @@ App({
} else { } else {
wx.setStorage({ wx.setStorage({
key: self.data.cache_user_login_key, key: self.data.cache_user_login_key,
data: data.openid data: data
}); });
self.login_to_auth(); self.login_to_auth();
} }
...@@ -338,24 +339,24 @@ App({ ...@@ -338,24 +339,24 @@ App({
* 获取用户授权信息 * 获取用户授权信息
* object 回调操作对象 * object 回调操作对象
* method 回调操作对象的函数 * method 回调操作对象的函数
* openid 用户openid * login_data 登录信息
* auth_data 授权数据 * auth_data 授权数据
*/ */
get_user_login_info(object, method, openid, auth_data) { get_user_login_info(object, method, login_data, auth_data) {
// 邀请人参数 // 邀请人参数
var params = wx.getStorageSync(this.data.cache_launch_info_key) || null; var params = wx.getStorageSync(this.data.cache_launch_info_key) || null;
var referrer = (params == null) ? 0 : (params.referrer || 0); var referrer = (params == null) ? 0 : (params.referrer || 0);
// 远程解密数据 // 用户信息处理
wx.showLoading({ title: "授权中..." }); wx.showLoading({ title: "授权中..." });
var self = this; var self = this;
wx.request({ wx.request({
url: self.get_request_url('wechatuserinfo', 'user'), url: self.get_request_url('wechatuserinfo', 'user'),
method: 'POST', method: 'POST',
data: { data: {
"encrypted_data": auth_data.encryptedData, "auth_data": JSON.stringify(auth_data),
"iv": auth_data.iv, "openid": login_data.openid,
"openid": openid, "unionid": login_data.unionid,
"referrer": referrer "referrer": referrer
}, },
dataType: 'json', dataType: 'json',
......
...@@ -48,7 +48,12 @@ Page({ ...@@ -48,7 +48,12 @@ Page({
* 登录授权事件 * 登录授权事件
*/ */
get_user_info_event(e) { get_user_info_event(e) {
this.user_auth_code(e.detail); wx.getUserProfile({
desc: '注册使用',
success: (res) => {
this.user_auth_code(res.userInfo);
}
});
}, },
/** /**
...@@ -56,7 +61,7 @@ Page({ ...@@ -56,7 +61,7 @@ Page({
* auth_data 授权数据 * auth_data 授权数据
*/ */
user_auth_code(auth_data) { user_auth_code(auth_data) {
if ((auth_data.encryptedData || null) != null && (auth_data.iv || null) != null) { if ((auth_data || null) != null) {
app.user_auth_login(this, 'user_auth_back_event', auth_data); app.user_auth_login(this, 'user_auth_back_event', auth_data);
} else { } else {
app.showToast("授权失败"); app.showToast("授权失败");
......
...@@ -23,5 +23,5 @@ ...@@ -23,5 +23,5 @@
<!-- 获取用户信息授权 --> <!-- 获取用户信息授权 -->
<view wx:else class="user-login tc"> <view wx:else class="user-login tc">
<view class="cr-888 fs-12">确认登录授权,为您提供更优质的服务</view> <view class="cr-888 fs-12">确认登录授权,为您提供更优质的服务</view>
<button type="primary" size="mini" open-type="getUserInfo" bindgetuserinfo="get_user_info_event">授权登录</button> <button type="primary" size="mini" bindtap="get_user_info_event">授权登录</button>
</view> </view>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册