提交 7bcdfd8a 编写于 作者: D devil_gong

merge 1.4.0

......@@ -51,7 +51,7 @@ ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发
![电脑端](https://images.gitee.com/uploads/images/2019/0111/104442_0a307119_488475.gif "1547174456822.gif")
# 后台管理图片展示
![后台管理](https://images.gitee.com/uploads/images/2019/0111/104511_63926cf8_488475.gif "1547174286447.gif")
![后台管理](https://images.gitee.com/uploads/images/2019/0227/092528_9eb4dbef_488475.gif "admin-2.gif")
# 功能简介
### 后端功能列表
......
......@@ -117,6 +117,7 @@ class Admin extends Common
}
// 管理员编辑
$data = [];
if(!empty($params['id']))
{
$data_params = [
......@@ -124,13 +125,14 @@ class Admin extends Common
'm' => 0,
'n' => 1,
];
$data = AdminService::AdminList($data_params);
if(empty($data[0]))
$ret = AdminService::AdminList($data_params);
if(empty($ret[0]))
{
return $this->error('管理员信息不存在', MyUrl('admin/index/index'));
}
$this->assign('data', $data[0]);
$data = $ret[0];
}
$this->assign('data', $data);
// 角色
$role_params = [
......@@ -153,17 +155,26 @@ class Admin extends Common
*/
public function Save()
{
// 登录校验
$this->IsLogin();
// 是否ajax
if(!IS_AJAX)
{
return $this->error('非法访问');
}
// 开始操作
// 登录校验
$this->IsLogin();
// 参数
$params = input('post.');
// 不是操作自己的情况下
if(!isset($params['id']) || $params['id'] != $this->admin['id'])
{
// 权限校验
$this->IsPower();
}
// 开始操作
$params['admin'] = $this->admin;
return AdminService::AdminSave($params);
}
......@@ -177,18 +188,18 @@ class Admin extends Common
*/
public function Delete()
{
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
// 是否ajax
if(!IS_AJAX)
{
return $this->error('非法访问');
}
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
// 开始操作
$params = input('post.');
$params['admin'] = $this->admin;
......
......@@ -53,7 +53,7 @@ class Answer extends Common
$params = input();
// 分页
$number = 10;
$number = MyC('admin_page_number', 10, true);
// 条件
$where = AnswerService::AnswerListWhere($params);
......@@ -67,7 +67,7 @@ class Answer extends Common
'total' => $total,
'where' => $params,
'page' => isset($params['page']) ? intval($params['page']) : 1,
'url' => MyUrl('admin/order/index'),
'url' => MyUrl('admin/answer/index'),
);
$page = new \base\Page($page_params);
$this->assign('page_html', $page->GetPageHtml());
......@@ -84,6 +84,9 @@ class Answer extends Common
// 状态
$this->assign('common_is_show_list', lang('common_is_show_list'));
// 是否
$this->assign('common_is_text_list', lang('common_is_text_list'));
// 参数
$this->assign('params', $params);
return $this->fetch();
......
......@@ -109,6 +109,7 @@ class AppHomeNav extends Common
$params = input();
// 数据
$data = [];
if(!empty($params['id']))
{
// 获取列表
......@@ -118,9 +119,10 @@ class AppHomeNav extends Common
'where' => ['id'=>intval($params['id'])],
'field' => '*',
);
$data = AppNavService::AppHomeNavList($data_params);
$this->assign('data', empty($data['data'][0]) ? [] : $data['data'][0]);
$ret = AppNavService::AppHomeNavList($data_params);
$data = empty($ret['data'][0]) ? [] : $ret['data'][0];
}
$this->assign('data', $data);
// 所属平台
$this->assign('common_platform_type', lang('common_platform_type'));
......
......@@ -110,6 +110,7 @@ class Article extends Common
$params = input();
// 数据
$data = [];
if(!empty($params['id']))
{
// 获取列表
......@@ -119,9 +120,10 @@ class Article extends Common
'where' => ['a.id'=>intval($params['id'])],
'field' => 'a.*',
);
$data = ArticleService::ArticleList($data_params);
$this->assign('data', empty($data['data'][0]) ? [] : $data['data'][0]);
$ret = ArticleService::ArticleList($data_params);
$data = empty($ret['data'][0]) ? [] : $ret['data'][0];
}
$this->assign('data', $data);
// 是否启用
$this->assign('common_is_enable_list', lang('common_is_enable_list'));
......
......@@ -107,6 +107,7 @@ class Brand extends Common
$params = input();
// 数据
$data = [];
if(!empty($params['id']))
{
// 获取列表
......@@ -116,9 +117,10 @@ class Brand extends Common
'where' => ['id'=>intval($params['id'])],
'field' => '*',
);
$data = BrandService::BrandList($data_params);
$this->assign('data', empty($data['data'][0]) ? [] : $data['data'][0]);
$ret = BrandService::BrandList($data_params);
$data = empty($ret['data'][0]) ? [] : $ret['data'][0];
}
$this->assign('data', $data);
// 是否启用
$this->assign('common_is_enable_list', lang('common_is_enable_list'));
......
......@@ -10,6 +10,7 @@
// +----------------------------------------------------------------------
namespace app\admin\controller;
use think\facade\Hook;
use think\Controller;
use app\service\AdminPowerService;
use app\service\ConfigService;
......@@ -59,8 +60,40 @@ class Common extends Controller
// 视图初始化
$this->ViewInit();
// 公共钩子初始化
$this->CommonPluginsInit();
}
/**
* 公共钩子初始化
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-12-07
* @desc description
*/
private function CommonPluginsInit()
{
// css钩子
$this->assign('plugins_admin_css_data', Hook::listen('plugins_admin_css', ['hook_name'=>'plugins_admin_css', 'is_backend'=>false]));
// js钩子
$this->assign('plugins_admin_js_data', Hook::listen('plugins_admin_js', ['hook_name'=>'plugins_admin_js', 'is_backend'=>false]));
// 公共header内钩子
$this->assign('plugins_admin_common_header_data', Hook::listen('plugins_admin_common_header', ['hook_name'=>'plugins_admin_common_header', 'is_backend'=>false, 'admin'=>$this->admin]));
// 公共页面底部钩子
$this->assign('plugins_admin_common_page_bottom_data', Hook::listen('plugins_admin_common_page_bottom', ['hook_name'=>'plugins_admin_common_page_bottom', 'is_backend'=>false, 'admin'=>$this->admin]));
// 公共顶部钩子
$this->assign('plugins_admin_view_common_top_data', Hook::listen('plugins_admin_view_common_top', ['hook_name'=>'plugins_admin_view_common_top', 'is_backend'=>false, 'admin'=>$this->admin]));
// 公共底部钩子
$this->assign('plugins_admin_view_common_bottom_data', Hook::listen('plugins_admin_view_common_bottom', ['hook_name'=>'plugins_admin_view_common_bottom', 'is_backend'=>false, 'admin'=>$this->admin]));
}
/**
* 系统初始化
* @author Devil
......
......@@ -112,6 +112,7 @@ class CustomView extends Common
$params = input();
// 数据
$data = [];
if(!empty($params['id']))
{
// 获取列表
......@@ -121,9 +122,10 @@ class CustomView extends Common
'where' => ['id'=>intval($params['id'])],
'field' => '*',
);
$data = CustomViewService::CustomViewList($data_params);
$this->assign('data', empty($data['data'][0]) ? [] : $data['data'][0]);
$ret = CustomViewService::CustomViewList($data_params);
$data = empty($ret['data'][0]) ? [] : $ret['data'][0];
}
$this->assign('data', $data);
// 是否启用
$this->assign('common_is_enable_list', lang('common_is_enable_list'));
......
......@@ -74,12 +74,13 @@ class Goods extends Common
// 获取数据列表
$data_params = [
'where' => $where,
'm' => $page->GetPageStarNumber(),
'n' => $number,
'is_category' => 1,
'where' => $where,
'm' => $page->GetPageStarNumber(),
'n' => $number,
'is_category' => 1,
'is_admin_access' => 1,
];
$data = GoodsService::GoodsList($data_params);
$ret = GoodsService::GoodsList($data_params);
// 是否上下架
$this->assign('common_is_shelves_list', lang('common_is_shelves_list'));
......@@ -89,7 +90,7 @@ class Goods extends Common
$this->assign('params', $params);
$this->assign('page_html', $page->GetPageHtml());
$this->assign('data', $data);
$this->assign('data', $ret['data']);
return $this->fetch();
}
......@@ -106,6 +107,7 @@ class Goods extends Common
$params = input();
// 商品信息
$data = [];
if(!empty($params['id']))
{
$data_params = [
......@@ -116,17 +118,18 @@ class Goods extends Common
'is_content_app' => 1,
'is_category' => 1,
];
$data = GoodsService::GoodsList($data_params);
if(empty($data[0]))
$ret = GoodsService::GoodsList($data_params);
if(empty($ret['data'][0]))
{
return $this->error('商品信息不存在', MyUrl('admin/goods/index'));
}
$this->assign('data', $data[0]);
$data = $ret['data'][0];
// 获取商品编辑规格
$specifications = GoodsService::GoodsEditSpecifications($data[0]['id']);
$specifications = GoodsService::GoodsEditSpecifications($ret['data'][0]['id']);
$this->assign('specifications', $specifications);
}
$this->assign('data', $data);
// 地区信息
$this->assign('region_province_list', RegionService::RegionItems(['pid'=>0]));
......
文件模式从 100644 更改为 100755
......@@ -76,7 +76,7 @@ class Pluginsadmin extends Common
'total' => $total,
'where' => $params,
'page' => isset($params['page']) ? intval($params['page']) : 1,
'url' => MyUrl('admin/Pluginsadmin/index'),
'url' => MyUrl('admin/pluginsadmin/index'),
);
$page = new \base\Page($page_params);
$this->assign('page_html', $page->GetPageHtml());
......@@ -112,6 +112,7 @@ class Pluginsadmin extends Common
$this->assign('params', $params);
// 获取数据
$data = [];
if(!empty($params['id']))
{
// 获取数据
......@@ -120,10 +121,11 @@ class Pluginsadmin extends Common
'n' => 1,
'where' => ['id' => intval($params['id'])],
);
$data = PluginsAdminService::PluginsList($data_params);
$this->assign('data', $data['data'][0]);
$params['plugins'] = $data['data'][0]['plugins'];
$ret = PluginsAdminService::PluginsList($data_params);
$data = $ret['data'][0];
$params['plugins'] = $ret['data'][0]['plugins'];
}
$this->assign('data', $data);
// 标记为空或等于view 并且 编辑数据为空则走第一步
if((empty($params['plugins']) || $params['plugins'] == 'view') && empty($data['data'][0]))
......@@ -214,5 +216,26 @@ class Pluginsadmin extends Common
// 开始处理
return PluginsAdminService::PluginsUpload(input());
}
/**
* 应用打包
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-03-22
* @desc description
*/
public function Download()
{
// 开始处理
$ret = PluginsAdminService::PluginsDownload(input());
if(isset($ret['code']) && $ret['code'] != 0)
{
$this->assign('msg', $ret['msg']);
return $this->fetch('public/error');
} else {
return $ret;
}
}
}
?>
\ No newline at end of file
......@@ -134,20 +134,22 @@ class Power extends Common
$params = input();
// 角色组
$data = [];
if(!empty($params['id']))
{
$data_params = [
'where' => ['id'=>intval($params['id'])],
];
$data = AdminPowerService::RoleList($data_params);
if(!empty($data[0]['id']))
$ret = AdminPowerService::RoleList($data_params);
if(!empty($ret[0]['id']))
{
$this->assign('data', $data[0]);
$data = $ret[0];
// 权限关联数据
$params['role_id'] = $data[0]['id'];
$params['role_id'] = $ret[0]['id'];
}
}
$this->assign('data', $data);
// 菜单列表
$power = AdminPowerService::RolePowerEditData($params);
......
......@@ -109,6 +109,7 @@ class Slide extends Common
$params = input();
// 数据
$data = [];
if(!empty($params['id']))
{
// 获取列表
......@@ -118,9 +119,10 @@ class Slide extends Common
'where' => ['id'=>intval($params['id'])],
'field' => '*',
);
$data = SlideService::SlideList($data_params);
$this->assign('data', empty($data['data'][0]) ? [] : $data['data'][0]);
$ret = SlideService::SlideList($data_params);
$data = empty($ret['data'][0]) ? [] : $ret['data'][0];
}
$this->assign('data', $data);
// 是否启用
$this->assign('common_is_enable_list', lang('common_is_enable_list'));
......
文件模式从 100644 更改为 100755
......@@ -81,6 +81,9 @@ class User extends Common
// 性别
$this->assign('common_gender_list', lang('common_gender_list'));
// 用户状态
$this->assign('common_user_status_list', lang('common_user_status_list'));
// Excel地址
$this->assign('excel_url', MyUrl('admin/user/excelexport', $params));
......@@ -128,6 +131,7 @@ class User extends Common
$params = input();
// 用户编辑
$data = [];
if(!empty($params['id']))
{
$data_params = [
......@@ -135,14 +139,18 @@ class User extends Common
'm' => 0,
'n' => 1,
];
$data = UserService::UserList($data_params);
if(empty($data['data'][0]))
$ret = UserService::UserList($data_params);
if(empty($ret['data'][0]))
{
return $this->error('用户信息不存在', MyUrl('admin/user/index'));
}
$data['data'][0]['birthday_text'] = empty($data['data'][0]['birthday']) ? '' : date('Y-m-d', $data['data'][0]['birthday']);
$this->assign('data', $data['data'][0]);
// 生日
$ret['data'][0]['birthday_text'] = empty($ret['data'][0]['birthday']) ? '' : date('Y-m-d', $ret['data'][0]['birthday']);
$data = $ret['data'][0];
}
$this->assign('data', $data);
// 性别
$this->assign('common_gender_list', lang('common_gender_list'));
......
......@@ -123,6 +123,10 @@ return array(
'name' => '生日',
'type' => 'string',
],
'status_text'=> [
'name' => '状态',
'type' => 'string',
],
'mobile' => [
'name' => '手机号码',
'type' => 'int',
......
......@@ -75,10 +75,10 @@
<span class="cr-ccc">不可操作</span>
{{else /}}
<a href="{{:MyUrl('admin/admin/saveinfo', array('id'=>$v['id']))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit" > 编辑</button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit" > 编辑</button>
</a>
{{if $v['id'] neq $admin['id']}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/admin/delete')}}" data-id="{{$v.id}}"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/admin/delete')}}" data-id="{{$v.id}}"> 删除</button>
{{/if}}
{{/if}}
</td>
......
......@@ -6,21 +6,21 @@
<div class="text-center">
<span class="logo fw-70">ShopXO</span>
</div>
<div class="m-t-40 card-box">
<div class="m-t-40 card-box admin-login">
<div class="panel-body">
<form class="am-form form-validation" action="{{:MyUrl('admin/admin/login')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-g">
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="text" placeholder="用户名" name="username" pattern="{{:lang('common_regex_username')}}" data-validation-message="用户名格式 5~18 个字符(可以是字母数字下划线)" class="am-radius" required />
</div>
<div class="am-form-group form-horizontal m-t-20">
<div class="am-form-group am-form-group-refreshing form-horizontal m-t-20">
<input type="password" placeholder="登录密码" name="login_pwd" pattern="{{:lang('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符" class="am-radius" required />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'登录中...'}">登录</button>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<a href="javascript:;" class="text-muted" data-am-popover="{theme: 'danger sm', content: '请联系管理员重置密码', trigger: 'hover focus'}">忘记密码?</a>
</div>
</div>
......
......@@ -30,7 +30,7 @@
{{if !isset($data['id']) or $admin['id'] neq $data['id']}}
<div class="am-form-group">
<label>权限组</label>
<select class="am-radius c-p" name="role_id" data-validation-message="请选择所属角色组" required>
<select class="am-radius chosen-select c-p" name="role_id" data-validation-message="请选择所属角色组" required>
<option value="">可选择...</option>
{{foreach $role as $v}}
<option value="{{$v.id}}" {{if isset($data['role_id']) and $data['role_id'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
......@@ -39,7 +39,7 @@
</div>
{{/if}}
{{include file="lib/gender" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data['id'])}}value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -21,6 +21,14 @@
<option value="{{$v.id}}" {{if isset($params['is_show']) and $params['is_show'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<select name="is_reply" class="am-radius c-p m-t-10 m-l-5 param-where" data-placeholder="是否回复...">
<option value="-1">是否回复...</option>
{{if !empty($common_is_text_list)}}
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_reply']) and $params['is_reply'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
{{/if}}
</select>
<div class="param-date param-where m-l-5">
<input type="text" autocomplete="off" name="time_start" class="Wdate am-radius m-t-10" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if isset($params['time_start'])}}value="{{$params.time_start}}"{{/if}}/>
<span>~</span>
......@@ -37,10 +45,13 @@
<tr>
<th class="am-hide-sm-only">用户信息</th>
<th class="am-hide-sm-only">联系信息</th>
<th style="width: 25%;">内容</th>
<th>是否显示</th>
<th>标题</th>
<th class="am-hide-sm-only">内容</th>
<th class="am-hide-sm-only">回复内容</th>
<th class="am-hide-sm-only">访问次数</th>
<th class="am-hide-sm-only">回复时间</th>
<th class="am-hide-sm-only">创建时间</th>
<th>是否显示</th>
<th>更多</th>
<th>操作</th>
</tr>
......@@ -79,12 +90,21 @@
<span class="cr-ddd">未填写</span>
{{/if}}
</td>
<td>{{$v.content}}</td>
<td>{{$v.title}}</td>
<td class="am-hide-sm-only reply-content">{{$v.content}}</td>
<td class="am-hide-sm-only reply-content">
{{if $v['is_reply'] eq 1}}
{{$v.reply}}
{{else /}}
<span class="cr-ddd">未回复</span>
{{/if}}
</td>
<td class="am-hide-sm-only">{{$v.access_count}}</td>
<td class="am-hide-sm-only">{{$v.reply_time}}</td>
<td class="am-hide-sm-only">{{$v.add_time}}</td>
<td>
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_show'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/answer/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_show']}}" data-is-update-status="1"></a>
</td>
<td class="am-hide-sm-only">{{$v.reply}}</td>
<td class="am-hide-sm-only">{{$v.add_time}}</td>
<td>
<span class="am-icon-caret-down c-p" data-am-modal="{target: '#my-popup{{$v.id}}'}"> 查看更多</span>
<div class="am-popup am-radius" id="my-popup{{$v.id}}">
......@@ -130,6 +150,9 @@
{{/if}}
</dd>
<dt>标题</dt>
<dd>{{if empty($v['title'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.title}}{{/if}}</dd>
<dt>内容</dt>
<dd>{{$v.content}}</dd>
......@@ -137,7 +160,16 @@
<dd>{{if empty($v['is_show_text'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.is_show_text}}{{/if}}</dd>
<dt>回复内容</dt>
<dd>{{if empty($v['reply'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.reply}}{{/if}}</dd>
<dd>
{{if $v['is_reply'] eq 1}}
{{$v.reply}}
{{else /}}
<span class="cr-ddd">未回复</span>
{{/if}}
</dd>
<dt>回复时间</dt>
<dd>{{$v.reply_time}}</dd>
<dt>创建时间</dt>
<dd>{{$v.add_time}}</dd>
......@@ -151,9 +183,9 @@
</td>
<td class="view-operation">
{{if $v['is_reply'] eq 0}}
<button class="am-btn am-btn-default am-btn-xs am-radius submit-reply am-icon-gavel" data-am-modal="{target: '#my-popup-reply'}" data-json='{{:json_encode($v)}}'> 回复</button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius submit-reply am-icon-gavel" data-am-modal="{target: '#my-popup-reply'}" data-json='{{:json_encode($v)}}'> 回复</button>
{{/if}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/answer/delete')}}" data-id="{{$v.id}}"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/answer/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......@@ -185,7 +217,7 @@
<textarea name="reply" rows="5" class="am-radius" placeholder="回复内容格式 2~230 个字符" data-validation-message="回复内容格式 2~230 个字符" maxlength="230"></textarea>
</div>
<div class="am-form-group reply-submit t-c">
<div class="am-form-group reply-submit am-form-group-refreshing t-c">
<input type="hidden" name="id" value="" />
<button type="submit" class="am-btn am-btn-success am-radius am-btn-sm" data-am-loading="{loadingText:'处理中...'}" data-status="0">回复</button>
</div>
......
......@@ -27,15 +27,15 @@
</div>
<div class="am-form-group">
<label>{{$data.common_shop_notice.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_shop_notice.describe}})</span></label>
<label>{{$data.common_shop_notice.name}}<span class="am-form-group-label-tips">{{$data.common_shop_notice.describe}}</span></label>
<textarea rows="3" name="{{$data.common_shop_notice.only_tag}}" class="am-radius" placeholder="{{$data.common_shop_notice.name}}" data-validation-message="{{$data.common_shop_notice.error_tips}}">{{if !empty($data)}}{{$data.common_shop_notice.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_user_center_notice.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_user_center_notice.describe}})</span></label>
<label>{{$data.common_user_center_notice.name}}<span class="am-form-group-label-tips">{{$data.common_user_center_notice.describe}}</span></label>
<textarea rows="3" name="{{$data.common_user_center_notice.only_tag}}" class="am-radius" placeholder="{{$data.common_user_center_notice.name}}" data-validation-message="{{$data.common_user_center_notice.error_tips}}">{{if !empty($data)}}{{$data.common_user_center_notice.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -35,7 +35,7 @@
<option value="{{$v.value}}" {{if isset($params['event_type']) and $params['event_type'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<div class="param-date param-where m-l-5)}}
<div class="param-date param-where m-l-5">
<input type="text" autocomplete="off" name="time_start" class="Wdate am-radius m-t-10" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if isset($params['time_start'])}}value="{{$params.time_start}}"{{/if}}/>
<span>~</span>
<input type="text" autocomplete="off" class="Wdate am-radius m-t-10" placeholder="结束时间" name="time_end" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if isset($params['time_end'])}}value="{{$params.time_end}}"{{/if}}/>
......@@ -93,9 +93,9 @@
<td>{{$v.add_time_time}}</td>
<td class="view-operation">
<a href="{{:MyUrl('admin/apphomenav/saveinfo', array_merge($params, ['id'=>$v['id']]))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"> 编辑</button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/apphomenav/delete')}}" data-id="{{$v.id}}"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/apphomenav/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -65,7 +65,7 @@
<div class="am-form-group">
<label>背景色</label>
<input type="hidden" name="bg_color" value="{{if !empty($data)}}{{$data.bg_color}}{{/if}}" />
<button class="am-btn am-btn-default colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color" {{if !empty($data)}} style="background-color:{{$data.bg_color}};"{{/if}}>
<button class="am-btn am-btn-default am-btn-xs colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color" {{if !empty($data)}} style="background-color:{{$data.bg_color}};"{{/if}}>
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</div>
......@@ -77,7 +77,7 @@
<label class="block">是否启用</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_enable'] eq 1}} checked="true"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -30,7 +30,7 @@
<label>{{$data.common_app_mini_alipay_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_describe.only_tag}}" placeholder="{{$data.common_app_mini_alipay_describe.name}}" data-validation-message="{{$data.common_app_mini_alipay_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_describe.value}}"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -29,10 +29,10 @@
<td class="view-operation">
{{if !empty($v.url)}}
<a href="{{$v.url}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-download"> 下载</button>
<button class="am-btn am-btn-success am-btn-xs am-radius am-icon-download"> 下载</button>
</a>
{{/if}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/appminialipaylist/delete')}}" data-id="{{$v.name}}" data-view="reload"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/appminialipaylist/delete')}}" data-id="{{$v.name}}" data-view="reload"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -6,11 +6,11 @@
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/appminiweixinconfig/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appminiweixinconfig/index')}}">
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_appid.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_app_mini_weixin_appid.describe}})</span></label>
<label>{{$data.common_app_mini_weixin_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_appid.only_tag}}" placeholder="{{$data.common_app_mini_weixin_appid.name}}" data-validation-message="{{$data.common_app_mini_weixin_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_appsecret.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_app_mini_weixin_appsecret.describe}})</span></label>
<label>{{$data.common_app_mini_weixin_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_weixin_appsecret.name}}" data-validation-message="{{$data.common_app_mini_weixin_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_appsecret.value}}"{{/if}} />
</div>
......@@ -22,7 +22,7 @@
<label>{{$data.common_app_mini_weixin_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_weixin_describe.only_tag}}" placeholder="{{$data.common_app_mini_weixin_describe.name}}" data-validation-message="{{$data.common_app_mini_weixin_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_describe.value}}"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -29,10 +29,10 @@
<td class="view-operation">
{{if !empty($v.url)}}
<a href="{{$v.url}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-download"> 下载</button>
<button class="am-btn am-btn-success am-btn-xs am-radius am-icon-download"> 下载</button>
</a>
{{/if}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/appminiweixinlist/delete')}}" data-id="{{$v.name}}" data-view="reload"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/appminiweixinlist/delete')}}" data-id="{{$v.name}}" data-view="reload"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -112,9 +112,9 @@
</td>
<td class="view-operation">
<a href="{{:MyUrl('admin/article/saveinfo', array_merge($params, ['id'=>$v['id']]))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"></button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/article/delete')}}" data-id="{{$v.id}}"></button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/article/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -21,7 +21,7 @@
<input type="hidden" name="title_color" value="{{if !empty($data['title_color'])}}{{$data.title_color}}{{/if}}" />
<input type="text" name="title" placeholder="标题" minlength="2" maxlength="60" data-validation-message="标题长度 2~60 个字符" class="am-form-field am-radius" {{if !empty($data)}} value="{{$data.title}}" {{/if}} {{if !empty($data['title_color'])}} style="color:{{$data.title_color}};" {{/if}} required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default colorpicker-submit" type="button" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']">
<button class="am-btn am-btn-default am-btn-xs colorpicker-submit" type="button" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</span>
......@@ -37,7 +37,7 @@
</select>
</div>
<div class="am-form-group">
<label>跳转url地址<span class="fs-12 fw-100 cr-999">(带http://或https://)</span></label>
<label>跳转url地址<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" name="jump_url" placeholder="跳转url地址" data-validation-message="跳转url地址格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.jump_url}}"{{/if}} />
</div>
<div class="am-form-group">
......@@ -52,7 +52,7 @@
<label>内容</label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="50" maxlength="105000" {{if !IsMobile()}}id="editor-tag" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>'article'])}}" placeholder="内容长度最少 10~105000 个字符" {{else /}} placeholder="内容长度最少 10~105000 个字符更多编辑功能请使用电脑访问" {{/if}} data-validation-message="内容长度最少 10~105000 个字符" required>{{if !empty($data)}}{{$data.content}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -28,7 +28,7 @@
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
</div>
{{include file="lib/enable" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -85,9 +85,9 @@
<td class="am-hide-sm-only">{{$v.add_time_time}}</td>
<td class="view-operation">
<a href="{{:MyUrl('admin/brand/saveinfo', array_merge($params, ['id'=>$v['id']]))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"> 编辑</button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/brand/Delete')}}" data-id="{{$v.id}}"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/brand/Delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -30,7 +30,7 @@
</div>
<div class="am-form-group">
<label>官网地址<span class="fs-12 fw-100 cr-999">(带http://或https://)</span></label>
<label>官网地址<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" placeholder="官网地址" name="website_url" data-validation-message="官网地址格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.website_url}}"{{/if}} />
</div>
......@@ -55,7 +55,7 @@
<label class="block">是否启用</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -28,7 +28,7 @@
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
</div>
{{include file="lib/enable" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -6,7 +6,7 @@
<!-- 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')}}">
<div class="am-form-group">
<label>{{$data.admin_excel_charset.name}}<span class="fs-12 fw-100 cr-999">({{$data.admin_excel_charset.describe}})</span></label>
<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 c-p" 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>
......@@ -14,11 +14,19 @@
</select>
</div>
<div class="am-form-group">
<label>{{$data.admin_page_number.name}}<span class="fs-12 fw-100 cr-999">({{$data.admin_page_number.describe}})</span></label>
<label>{{$data.admin_page_number.name}}<span class="am-form-group-label-tips">{{$data.admin_page_number.describe}}</span></label>
<input type="number" name="{{$data.admin_page_number.only_tag}}" placeholder="{{$data.admin_page_number.name}}" pattern="{{:lang('common_regex_page_number')}}" data-validation-message="{{$data.admin_page_number.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.admin_page_number.value}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{$data.common_is_deduction_inventory.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_is_deduction_inventory.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 c-p" data-validation-message="{{$data.common_register_is_enable_audit.error_tips}}" required>
{{foreach $common_is_text_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>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_is_deduction_inventory.name}}<span class="am-form-group-label-tips">{{$data.common_is_deduction_inventory.describe}}</span></label>
<select name="{{$data.common_is_deduction_inventory.only_tag}}" class="am-radius chosen-select c-p" data-validation-message="{{$data.common_is_deduction_inventory.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_is_deduction_inventory']['value']) and $data['common_is_deduction_inventory']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
......@@ -26,7 +34,7 @@
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_deduction_inventory_rules.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_deduction_inventory_rules.describe}})</span></label>
<label>{{$data.common_deduction_inventory_rules.name}}<span class="am-form-group-label-tips">{{$data.common_deduction_inventory_rules.describe}}</span></label>
<select name="{{$data.common_deduction_inventory_rules.only_tag}}" class="am-radius chosen-select c-p" data-validation-message="{{$data.common_deduction_inventory_rules.error_tips}}" required>
{{foreach $common_deduction_inventory_rules_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_deduction_inventory_rules']['value']) and $data['common_deduction_inventory_rules']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
......@@ -34,7 +42,7 @@
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_order_is_booking.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_order_is_booking.describe}})</span></label>
<label>{{$data.common_order_is_booking.name}}<span class="am-form-group-label-tips">{{$data.common_order_is_booking.describe}}</span></label>
<select name="{{$data.common_order_is_booking.only_tag}}" class="am-radius chosen-select c-p" data-validation-message="{{$data.common_order_is_booking.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_order_is_booking']['value']) and $data['common_order_is_booking']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
......@@ -42,7 +50,7 @@
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_spec_add_max_number.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_spec_add_max_number.describe}})</span></label>
<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>
......@@ -55,18 +63,18 @@
</select>
</div>
<div class="am-form-group">
<label>{{$data.home_search_keywords.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_search_keywords.describe}})</span></label>
<label>{{$data.home_search_keywords.name}}<span class="am-form-group-label-tips">{{$data.home_search_keywords.describe}}</span></label>
<input type="text" name="{{$data.home_search_keywords.only_tag}}" placeholder="{{$data.home_search_keywords.describe}}" data-validation-message="{{$data.home_search_keywords.error_tips}}" class="am-radius" data-am-tagsinput {{if !empty($data)}}value="{{$data.home_search_keywords.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_baidu_map_ak.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_baidu_map_ak.describe}})</span></label>
<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>
<div class="am-form-group">
<label>{{$data.common_customer_service_tel.name}}</label>
<input type="text" name="{{$data.common_customer_service_tel.only_tag}}" placeholder="{{$data.common_customer_service_tel.describe}}" data-validation-message="{{$data.common_customer_service_tel.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_customer_service_tel.value}}"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -124,9 +124,9 @@
</td>
<td class="view-operation">
<a href="{{:MyUrl('admin/customview/saveinfo', array('id'=>$v['id']))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"></button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/customview/Delete')}}" data-id="{{$v.id}}"></button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/customview/Delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -40,10 +40,10 @@
</div>
<div class="am-form-group">
<label>内容{{if IsMobile()}}<span class="fs-12 fw-100 cr-999">(更多编辑功能请使用电脑访问)</span>{{/if}}</label>
<label>内容{{if IsMobile()}}<span class="am-form-group-label-tips">更多编辑功能请使用电脑访问</span>{{/if}}</label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="50" maxlength="105000" {{if !IsMobile()}}id="editor-tag" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>'customview'])}}" placeholder="内容长度最少 50~105000 个字符" {{else /}} placeholder="内容长度最少 50~105000 个字符更多编辑功能请使用电脑访问" {{/if}} data-validation-message="内容长度最少 50~105000 个字符" required>{{if !empty($data)}}{{$data.content}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -10,41 +10,39 @@
<!-- 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'=>'email'])}}">
<div class="am-form-group">
<label>{{$data.common_email_smtp_host.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_email_smtp_host.describe}})</span></label>
<label>{{$data.common_email_smtp_host.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_host.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_host.only_tag}}" placeholder="{{$data.common_email_smtp_host.name}}" data-validation-message="{{$data.common_email_smtp_host.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_host.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_port.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_email_smtp_port.describe}})</span></label>
<label>{{$data.common_email_smtp_port.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_port.describe}}</span></label>
<input type="number" name="{{$data.common_email_smtp_port.only_tag}}" placeholder="{{$data.common_email_smtp_port.name}}" data-validation-message="{{$data.common_email_smtp_port.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_port.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_account.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_email_smtp_account.describe}})</span></label>
<label>{{$data.common_email_smtp_account.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_account.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_account.only_tag}}" placeholder="{{$data.common_email_smtp_account.name}}" data-validation-message="{{$data.common_email_smtp_account.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_account.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_name.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_email_smtp_name.describe}})</span></label>
<label>{{$data.common_email_smtp_name.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_name.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_name.only_tag}}" placeholder="{{$data.common_email_smtp_name.name}}" data-validation-message="{{$data.common_email_smtp_name.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_name.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_pwd.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_email_smtp_pwd.describe}})</span></label>
<label>{{$data.common_email_smtp_pwd.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_pwd.describe}}</span></label>
<input type="password" name="{{$data.common_email_smtp_pwd.only_tag}}" placeholder="{{$data.common_email_smtp_pwd.name}}" data-validation-message="{{$data.common_email_smtp_pwd.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_pwd.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_send_name.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_email_smtp_send_name.describe}})</span></label>
<label>{{$data.common_email_smtp_send_name.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_send_name.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_send_name.only_tag}}" placeholder="{{$data.common_email_smtp_send_name.name}}" data-validation-message="{{$data.common_email_smtp_send_name.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_send_name.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>测试接收的邮件地址<span class="fs-12 fw-100 cr-999">(请先保存配置后,再进行测试)</span></label>
<label>测试接收的邮件地址<span class="am-form-group-label-tips">请先保存配置后,再进行测试</span></label>
<div class="am-input-group am-input-group-sm">
<span class='am-form-group'>
<input type="text" placeholder="测试接收的邮件地址" class="am-radius test-email-value" />
</span>
<input type="text" placeholder="测试接收的邮件地址" class="am-radius test-email-value" />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius test-email-submit" type="button" data-url="{{:MyUrl('admin/email/emailtest')}}">测试</button>
</span>
</div>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -10,18 +10,18 @@
<!-- 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'])}}">
<div class="am-form-group">
<label>{{$data.home_email_user_reg.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_email_user_reg.describe}})</span></label>
<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="fs-12 fw-100 cr-999">({{$data.home_email_user_forget_pwd.describe}})</span></label>
<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="fs-12 fw-100 cr-999">({{$data.home_email_user_email_binding.describe}})</span></label>
<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 class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -39,7 +39,7 @@
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
</div>
{{include file="lib/enable" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -48,7 +48,7 @@
<thead>
<tr>
<th>标题名称</th>
<th>销售价格(元)</th>
<th class="am-hide-sm-only">销售价格(元)</th>
<th>上下架</th>
<th class="am-hide-sm-only">首页推荐</th>
<th class="am-hide-sm-only">库存数量</th>
......@@ -68,7 +68,7 @@
</a>
<a href="{{$v.goods_url}}" target="_blank" title="{{$v.title}}" {{if !empty($v['title_color'])}} style="color:{{$v.title_color}};" {{/if}} >{{$v.title}}</a>
</td>
<td>
<td class="am-hide-sm-only">
{{$v.price}}
{{if !empty($v['original_price']) and $v['original_price'] gt 0}}
<br /><span class="am-badge am-radius">原价 {{$v.original_price}}</span>
......@@ -150,9 +150,9 @@
</td>
<td class="view-operation">
<a href="{{:MyUrl('admin/goods/saveinfo', array_merge($params, ['id'=>$v['id']]))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"></button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/goods/delete')}}" data-id="{{$v.id}}"></button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/goods/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -48,7 +48,7 @@
<input type="hidden" name="title_color" value="{{if !empty($data['title_color'])}}{{$data.title_color}}{{/if}}" />
<input type="text" name="title" placeholder="标题名称" minlength="2" maxlength="60" data-validation-message="标题名称格式 2~60 个字符" class="am-form-field am-radius" {{if !empty($data)}} value="{{$data.title}}" {{/if}} {{if !empty($data['title_color'])}} style="color:{{$data.title_color}};" {{/if}} required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default colorpicker-submit" type="button" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']">
<button class="am-btn am-btn-default am-btn-xs colorpicker-submit" type="button" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</span>
......@@ -119,15 +119,15 @@
<input type="number" name="give_integral" placeholder="购买赠送积分" max="100000000" data-validation-message="购买赠送积分 0~100000000" class="am-radius" value="{{if empty($data)}}0{{else /}}{{$data.give_integral}}{{/if}}" required />
</div>
<div class="am-form-group">
<label>最低起购数量<span class="fs-12 fw-100 cr-999">(默认数值 1)</span></label>
<label>最低起购数量<span class="am-form-group-label-tips">默认数值 1</span></label>
<input type="number" name="buy_min_number" placeholder="最低起购数量" min="1" max="100000000" data-validation-message="最低起购数量 1~100000000" class="am-radius" value="{{if empty($data)}}1{{else /}}{{$data.buy_min_number}}{{/if}}" required />
</div>
<div class="am-form-group">
<label>单次最大购买数量<span class="fs-12 fw-100 cr-999">(单次最大数值 100000000, 小于等于0或空则不限)</span></label>
<label>单次最大购买数量<span class="am-form-group-label-tips">单次最大数值 100000000, 小于等于0或空则不限</span></label>
<input type="number" name="buy_max_number" placeholder="单次最大购买数量" min="0" max="100000000" data-validation-message="单次最大购买数量 1~100000000" class="am-radius" {{if !empty($data['buy_max_number'])}} value="{{$data.buy_max_number}}"{{/if}} />
</div>
<div class="am-form-group am-form-file">
<label class="block">首页推荐图片<span class="fs-12 fw-100 cr-999">(留空则取相册第一张图)</span></label>
<label class="block">首页推荐图片<span class="am-form-group-label-tips">留空则取相册第一张图</span></label>
<ul class="plug-file-upload-view goods-recommended-images-view" data-form-name="home_recommended_images" data-max-number="1" data-dialog-type="images">
{{if !empty($data['home_recommended_images'])}}
<li>
......@@ -140,15 +140,15 @@
<div class="plug-file-upload-submit" data-view-tag="ul.goods-recommended-images-view">+上传图片</div>
</div>
<div class="am-form-group">
<label class="block">扣减库存<span class="fs-12 fw-100 cr-999">(扣除规则根据后台配置->扣除库存规则而定)</span></label>
<label class="block">扣减库存<span class="am-form-group-label-tips">扣除规则根据后台配置->扣除库存规则而定</span></label>
<input name="is_deduction_inventory" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_deduction_inventory']) and $data['is_deduction_inventory'] eq 1) or empty($data)}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<label class="block">上下架<span class="fs-12 fw-100 cr-999">(下架后用户不可见)</span></label>
<label class="block">上下架<span class="am-form-group-label-tips">下架后用户不可见</span></label>
<input name="is_shelves" value="1" type="checkbox" data-off-text="下架" data-on-text="上架" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_shelves']) and $data['is_shelves'] eq 1) or empty($data)}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<label class="block">首页推荐<span class="fs-12 fw-100 cr-999">(推荐后在首页展示)</span></label>
<label class="block">首页推荐<span class="am-form-group-label-tips">推荐后在首页展示</span></label>
<input name="is_home_recommended" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_home_recommended']) and $data['is_home_recommended'] eq 1}}checked="true"{{/if}} />
</div>
</div>
......@@ -257,8 +257,7 @@
<span class="business-operations-submit specifications-line-images-add m-l-10">+添加规格图片</span>
<ul class="spec-images-list">
<div class="am-alert am-alert-warning am-radius" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p class="fs-12">规格名称与规格值保持一致,相同规格名称添加一次即可,重复添加则后面覆盖前面,顺序不影响前端展示效果。</p>
规格名称与规格值保持一致,相同规格名称添加一次即可,重复添加则后面覆盖前面,顺序不影响前端展示效果。
</div>
{{if !empty($specifications['type'])}}
{{foreach $specifications.type as $type}}
......@@ -287,7 +286,7 @@
<!-- 相册 -->
<div id="goods-nav-photo" class="division-block">
<label class="block nav-detail-title">商品相册<span class="fs-12 fw-100 cr-999">(可拖拽图片进行排序,建议图片尺寸一致)</span></label>
<label class="block nav-detail-title">商品相册<span class="am-form-group-label-tips">可拖拽图片进行排序,建议图片尺寸一致</span></label>
<ul class="plug-file-upload-view goods-photo-view" data-form-name="photo[]" data-max-number="5" data-dialog-type="images">
{{if !empty($data['photo'])}}
{{foreach $data.photo as $v}}
......@@ -306,7 +305,7 @@
<div id="goods-nav-video" class="division-block">
<label class="block nav-detail-title">商品视频</label>
<div class="am-form-group am-form-file">
<label class="block">短视频<span class="fs-12 fw-100 cr-999">(视频比图文更有具带入感,仅支持 mp4 格式)</span></label>
<label class="block">短视频<span class="am-form-group-label-tips">视频比图文更有具带入感,仅支持 mp4 格式</span></label>
<ul class="plug-file-upload-view plug-file-upload-view-video goods-video-view" data-form-name="video" data-max-number="1" data-dialog-type="video">
{{if !empty($data['video'])}}
<li>
......@@ -363,7 +362,7 @@
</div>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -44,7 +44,7 @@
<div class="am-form-group">
<label>背景色</label>
<input type="hidden" name="bg_color" value="" />
<button class="am-btn am-btn-default colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color">
<button class="am-btn am-btn-default am-btn-xs colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</div>
......@@ -75,7 +75,7 @@
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
</div>
{{include file="lib/enable" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<input type="hidden" name="pid" value="0" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
......
......@@ -20,7 +20,7 @@
<button type="button" class="am-btn am-btn-default am-btn-sm am-radius"><i class="am-icon-cloud-upload"></i> 选择文件</button>
<input type="file" name="excel" multiple data-validation-message="请选择需要上传的文件" accept="application/vnd.ms-excel" required />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">确认</button>
</div>
</form>
......
<!-- 用户状态 开始 -->
<div class="am-form-group">
<label>{{:lang('common_view_user_status_name')}}</label>
<select name="status" class="am-radius c-p" data-validation-message="{{:lang('common_user_status_format')}}" required>
<label>用户状态</label>
<select name="status" class="am-radius chosen-select c-p" data-validation-message="请选择用户状态" required>
{{foreach :lang('common_user_status_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['status']) and $data['status'] eq $v['id']}}selected{{else /}}{{if !isset($data['status']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
{{/foreach}}
......
......@@ -24,7 +24,7 @@
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">
<label>链接地址<span class="fs-12 fw-100 cr-999">(带http://或https://)</span></label>
<label>链接地址<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" placeholder="链接地址" name="url" data-validation-message="链接地址格式有误" class="am-radius" required />
</div>
<div class="am-form-group">
......@@ -37,7 +37,7 @@
<label>描述</label>
<textarea rows="3" maxlength="60" name="describe" class="am-radius" placeholder="描述" data-validation-message="描述不能大于60个字符"></textarea>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......@@ -72,8 +72,8 @@
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_enable'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/link/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_enable']}}" data-is-update-status="1"></a>
</td>
<td>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit submit-edit" data-am-modal="{target: '#data-save-win'}" data-json='{{:json_encode($v)}}'></button>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/link/delete')}}" data-id="{{$v.id}}"></button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit submit-edit" data-am-modal="{target: '#data-save-win'}" data-json='{{:json_encode($v)}}'> 编辑</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/link/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -89,7 +89,7 @@
{{if empty($v['add_time_time'])}}<span class="cr-ddd">未设置</span>{{else /}}{{$v.add_time_time}}{{/if}}
</td>
<td class="view-operation">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/message/delete')}}" data-id="{{$v.id}}"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/message/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -40,8 +40,8 @@
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_show'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/navigation/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_show']}}" data-is-update-status="1"></a>
</td>
<td>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit submit-edit" data-am-modal="{target: '#nav-{{$v.data_type}}-save-win'}" data-json='{{:json_encode($v)}}' data-tag="nav-{{$v.data_type}}-save-win"></button>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/navigation/delete')}}" data-id="{{$v.id}}"></button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit submit-edit" data-am-modal="{target: '#nav-{{$v.data_type}}-save-win'}" data-json='{{:json_encode($v)}}' data-tag="nav-{{$v.data_type}}-save-win"> 编辑</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/navigation/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{if !empty($v['items'])}}
......@@ -57,8 +57,8 @@
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $vs['is_show'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/navigation/statusupdate')}}" data-id="{{$vs.id}}" data-state="{{$vs['is_show']}}" data-is-update-status="1"></a>
</td>
<td>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit submit-edit" data-am-modal="{target: '#nav-{{$vs.data_type}}-save-win'}" data-json='{{:json_encode($vs)}}' data-tag="nav-{{$vs.data_type}}-save-win"></button>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/navigation/delete')}}" data-id="{{$vs.id}}"></button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit submit-edit" data-am-modal="{target: '#nav-{{$vs.data_type}}-save-win'}" data-json='{{:json_encode($vs)}}' data-tag="nav-{{$vs.data_type}}-save-win"> 编辑</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/navigation/delete')}}" data-id="{{$vs.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......@@ -95,7 +95,7 @@
<input type="text" placeholder="导航名称" name="name" minlength="2" maxlength="16" data-validation-message="导航名称格式 2~16 个字符" class="am-radius" required />
</div>
<div class="am-form-group">
<label>url地址<span class="fs-12 fw-100 cr-999">(带http://或https://)</span></label>
<label>url地址<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" placeholder="url地址" name="url" data-validation-message="url格式有误" class="am-radius" required />
</div>
<div class="am-form-group">
......@@ -104,7 +104,7 @@
</div>
{{include file="lib/is_show" /}}
{{include file="lib/is_new_window_open" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<input type="hidden" name="data_type" value="custom" />
<input type="hidden" name="nav_type" value="{{$nav_type}}" />
......@@ -152,7 +152,7 @@
</select>
</div>
<div class="am-form-group">
<label>导航名称<span class="fs-12 fw-100 cr-999">(默认文章名称)</span></label>
<label>导航名称<span class="am-form-group-label-tips">默认文章名称</span></label>
<input type="text" placeholder="导航名称" name="name" maxlength="16" data-validation-message="导航名称格式 2~16 个字符" class="am-radius" />
</div>
<div class="am-form-group">
......@@ -161,7 +161,7 @@
</div>
{{include file="lib/is_show" /}}
{{include file="lib/is_new_window_open" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<input type="hidden" name="data_type" value="article" />
<input type="hidden" name="nav_type" value="{{$nav_type}}" />
......@@ -204,7 +204,7 @@
</select>
</div>
<div class="am-form-group">
<label>导航名称<span class="fs-12 fw-100 cr-999">(默认自定义页面名称)</span></label>
<label>导航名称<span class="am-form-group-label-tips">默认自定义页面名称</span></label>
<input type="text" placeholder="导航名称" name="name" maxlength="16" data-validation-message="导航名称格式 2~16 个字符" class="am-radius" />
</div>
<div class="am-form-group">
......@@ -213,7 +213,7 @@
</div>
{{include file="lib/is_show" /}}
{{include file="lib/is_new_window_open" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<input type="hidden" name="data_type" value="customview" />
<input type="hidden" name="nav_type" value="{{$nav_type}}" />
......@@ -265,7 +265,7 @@
</select>
</div>
<div class="am-form-group">
<label>导航名称<span class="fs-12 fw-100 cr-999">(默认商品分类名称)</span></label>
<label>导航名称<span class="am-form-group-label-tips">默认商品分类名称</span></label>
<input type="text" placeholder="导航名称" name="name" maxlength="16" data-validation-message="导航名称格式 2~16 个字符" class="am-radius" />
</div>
<div class="am-form-group">
......@@ -274,7 +274,7 @@
</div>
{{include file="lib/is_show" /}}
{{include file="lib/is_new_window_open" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<input type="hidden" name="data_type" value="goods_category" />
<input type="hidden" name="nav_type" value="{{$nav_type}}" />
......
......@@ -66,6 +66,7 @@
<th class="am-hide-sm-only">快递信息</th>
<th>订单状态</th>
<th>订单金额(元)</th>
<th>扩展数据</th>
<th>更多</th>
<th>操作</th>
</tr>
......@@ -127,10 +128,21 @@
</td>
<td>
金额:{{$v.price}}<br />
增加:{{$v.increase_price}}<br />
优惠:{{$v.preferential_price}}<br />
总价:{{$v.total_price}}<br />
支付:{{$v.pay_price}}
</td>
<td>
{{if empty($v['extension_data'])}}
<span class="cr-ddd"></span>
{{else /}}
{{foreach $v.extension_data as $extk=>$ext}}
{{if $extk gt 0}}<br />{{/if}}
{{$ext.name}} [{{$ext.tips}}]
{{/foreach}}
{{/if}}
</td>
<td>
<span class="am-icon-caret-down c-p" data-am-modal="{target: '#my-popup{{$v.id}}'}"> 查看更多</span>
<div class="am-popup am-radius" id="my-popup{{$v.id}}">
......@@ -209,12 +221,25 @@
<span class="cr-ddd">未填写</span>
{{else /}}
金额:{{$v.price}}<br />
增加:{{$v.increase_price}}<br />
优惠:{{$v.preferential_price}}<br />
总价:{{$v.total_price}}<br />
支付:{{$v.pay_price}}
{{/if}}
</dd>
<dt>扩展数据</dt>
<dd>
{{if empty($v['extension_data'])}}
<span class="cr-ddd"></span>
{{else /}}
{{foreach $v.extension_data as $extk=>$ext}}
{{if $extk gt 0}}<br />{{/if}}
{{$ext.name}} [{{$ext.tips}}]
{{/foreach}}
{{/if}}
</dd>
<dt>确认时间</dt>
<dd>{{if empty($v['confirm_time'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.confirm_time}}{{/if}}</dd>
......@@ -242,23 +267,32 @@
</td>
<td class="view-operation">
{{if in_array($v['status'], [0])}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-check-circle-o am-btn-block submit-ajax" data-url="{{:MyUrl('admin/order/confirm')}}" data-id="{{$v.id}}" data-value="{{$v.user_id}}" data-view="reload" data-msg="是否操作收货,操作后不可恢复!"> 确认</button>
<button class="am-btn am-btn-primary am-btn-xs am-radius am-icon-check-circle-o am-btn-block submit-ajax" data-url="{{:MyUrl('admin/order/confirm')}}" data-id="{{$v.id}}" data-value="{{$v.user_id}}" data-view="reload" data-msg="是否操作收货,操作后不可恢复!"> 确认</button>
{{/if}}
{{if in_array($v['status'], [0,1])}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-paint-brush am-btn-block submit-ajax" data-url="{{:MyUrl('admin/order/cancel')}}" data-id="{{$v.id}}" data-value="{{$v.user_id}}" data-view="reload" data-msg="取消后无法恢复,确定继续吗?"> 取消</button>
<button class="am-btn am-btn-warning am-btn-xs am-radius am-icon-paint-brush am-btn-block submit-ajax" data-url="{{:MyUrl('admin/order/cancel')}}" data-id="{{$v.id}}" data-value="{{$v.user_id}}" data-view="reload" data-msg="取消后无法恢复,确定继续吗?"> 取消</button>
{{if in_array($v['status'], [1])}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-paypal am-btn-block submit-pay" data-id="{{$v.id}}" data-payment-id="{{$v.payment_id}}" data-am-modal="{target: '#order-pay-popup'}"> 支付</button>
<button class="am-btn am-btn-success am-btn-xs am-radius am-icon-paypal am-btn-block submit-pay" data-id="{{$v.id}}" data-payment-id="{{$v.payment_id}}" data-am-modal="{target: '#order-pay-popup'}"> 支付</button>
{{/if}}
{{/if}}
{{if $v['status'] eq 2}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-send-o am-btn-block submit-delivery" data-url="{{:MyUrl('admin/order/delivery')}}" data-id="{{$v.id}}" data-user-id="{{$v.user_id}}" data-express-id="{{$v.express_id}}" data-am-modal="{target: '#order-delivery-popup'}"> 发货</button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-send-o am-btn-block submit-delivery" data-url="{{:MyUrl('admin/order/delivery')}}" data-id="{{$v.id}}" data-user-id="{{$v.user_id}}" data-express-id="{{$v.express_id}}" data-am-modal="{target: '#order-delivery-popup'}"> 发货</button>
{{/if}}
{{if $v['status'] eq 3}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-check-circle-o am-btn-block submit-ajax" data-url="{{:MyUrl('admin/order/collect')}}" data-id="{{$v.id}}" data-value="{{$v.user_id}}" data-view="reload" data-msg="是否操作收货,操作后不可恢复!"> 收货</button>
<button class="am-btn am-btn-success am-btn-xs am-radius am-icon-check-circle-o am-btn-block submit-ajax" data-url="{{:MyUrl('admin/order/collect')}}" data-id="{{$v.id}}" data-value="{{$v.user_id}}" data-view="reload" data-msg="是否操作收货,操作后不可恢复!"> 收货</button>
{{/if}}
{{if in_array($v['status'], [5,6])}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o am-btn-block submit-ajax" data-url="{{:MyUrl('admin/order/delete')}}" data-id="{{$v.id}}" data-value="{{$v.user_id}}" data-view="delete" data-msg="删除后无法恢复,确定继续吗?"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o am-btn-block submit-ajax" data-url="{{:MyUrl('admin/order/delete')}}" data-id="{{$v.id}}" data-value="{{$v.user_id}}" data-view="delete" data-msg="删除后无法恢复,确定继续吗?"> 删除</button>
{{/if}}
<!-- 钩子订单操作 -->
{{if !empty($v['plugins_service_order_handle_operation_html']) and is_array($v['plugins_service_order_handle_operation_html'])}}
{{foreach $v.plugins_service_order_handle_operation_html as $hook}}
{{if is_string($hook) or is_int($hook)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
{{/if}}
</td>
</tr>
{{/foreach}}
......@@ -305,7 +339,7 @@
<label>快递单号</label>
<input type="text" autocomplete="off" name="express_number" placeholder="快递单号" minlength="1" data-validation-message="请填写快递单号" class="am-radius" required />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" value="0" />
<input type="hidden" name="express_id" value="0" />
<input type="hidden" name="user_id" value="0" />
......@@ -345,7 +379,7 @@
<div class="table-no"><i class="am-icon-warning"></i> 没有支付方式</div>
{{/if}}
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" value="0" />
<input type="hidden" name="payment_id" value="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>
......
......@@ -87,17 +87,17 @@
</td>
<td class="view-operation">
{{if $v['is_install'] eq 0}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-cubes submit-ajax" data-url="{{:MyUrl('admin/payment/install')}}" data-id="{{$v.payment}}" data-view="reload" data-msg="安装进行中、确认操作吗?"> 安装</button>
<button class="am-btn am-btn-success am-btn-xs am-radius am-icon-cubes submit-ajax" data-url="{{:MyUrl('admin/payment/install')}}" data-id="{{$v.payment}}" data-view="reload" data-msg="安装进行中、确认操作吗?"> 安装</button>
{{if !in_array($v['payment'], $cannot_deleted_list)}}
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/payment/delete')}}" data-id="{{$v.payment}}"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/payment/delete')}}" data-id="{{$v.payment}}"> 删除</button>
{{/if}}
{{else /}}
<a href="{{:MyUrl('admin/payment/saveinfo', array('id'=>$v['id']))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"> 编辑</button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-remove submit-ajax" data-url="{{:MyUrl('admin/payment/uninstall')}}" data-id="{{$v.payment}}" data-view="reload" data-msg="卸载后不可恢复、确认操作吗?"> 卸载</button>
<button class="am-btn am-btn-warning am-btn-xs am-radius am-icon-remove submit-ajax" data-url="{{:MyUrl('admin/payment/uninstall')}}" data-id="{{$v.payment}}" data-view="reload" data-msg="卸载后不可恢复、确认操作吗?"> 卸载</button>
{{/if}}
</td>
</tr>
......@@ -128,7 +128,7 @@
<input type="file" name="file" class="file-event" data-tips-tag="#form-payment-tips" multiple data-validation-message="请选择需要上传的文件" accept=".php" required />
<div id="form-payment-tips"></div>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">确认</button>
</div>
</form>
......
......@@ -150,7 +150,7 @@
<label class="block">是否启用</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -17,11 +17,11 @@
</legend>
<div class="am-form-group">
<label>应用唯一标记<span class="fs-12 fw-100 cr-999">(以数字、字母小写、下划线)</span></label>
<label>应用唯一标记<span class="am-form-group-label-tips">以数字、字母小写、下划线</span></label>
<input type="text" name="plugins" placeholder="名称" minlength="2" maxlength="60" data-validation-message="应用唯一标记格式 2~60 个字符" pattern="^[a-z0-9_]{2,60}$" class="am-radius" {{if !empty($data)}} value="{{$data.plugins}}"{{/if}} required />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">下一步</button>
</div>
......
......@@ -31,6 +31,7 @@
<div class="operation">
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<a href="{{:MyUrl('admin/pluginsadmin/saveinfo', array('id'=>$v['id']))}}" class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit" title="编辑"></a>
<a href="{{:MyUrl('admin/pluginsadmin/download', array('id'=>$v['id']))}}" class="am-btn am-btn-default am-btn-xs am-radius am-icon-download" title="打包"></a>
{{/if}}
<a href="{{:PluginsAdminUrl($v['plugins'], 'admin', 'index')}}" class="am-btn am-btn-default am-btn-xs am-radius am-icon-gear" title="设置"></a>
......
文件模式从 100644 更改为 100755
......@@ -17,12 +17,12 @@
</legend>
<div class="am-form-group">
<label>应用唯一标记<span class="fs-12 fw-100 cr-999">(以数字、字母小写、下划线)</span></label>
<label>应用唯一标记<span class="am-form-group-label-tips">以数字、字母小写、下划线</span></label>
<input type="text" name="plugins" placeholder="名称" minlength="2" maxlength="60" data-validation-message="应用唯一标记格式 2~60 个字符" pattern="^[a-z0-9_]{2,60}$" class="am-radius" {{if !empty($plugins)}} value="{{$plugins}}"{{/if}} readonly="true" required />
</div>
<div class="am-form-group am-form-file">
<label class="block">LOGO<span class="fs-12 fw-100 cr-999">(建议130像数X130像数)</span></label>
<label class="block">LOGO<span class="am-form-group-label-tips">建议130像数X130像数</span></label>
<ul class="plug-file-upload-view plugins-logo-view" data-form-name="logo" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="logo" value="{{if !empty($data['logo_old'])}}{{$data.logo_old}}{{/if}}" data-validation-message="请上传图片" required />
......@@ -43,12 +43,12 @@
</div>
<div class="am-form-group">
<label>作者主页<span class="fs-12 fw-100 cr-999">(带http://或https://)</span></label>
<label>作者主页<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" placeholder="作者主页" name="author_url" data-validation-message="请填写作者主页" class="am-radius" {{if !empty($data)}} value="{{$data.author_url}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>版本<span class="fs-12 fw-100 cr-999">(主版本.次版本号.修订号,每个段不超过6位,如 1.0.0)</span></label>
<label>版本<span class="am-form-group-label-tips">主版本.次版本号.修订号,每个段不超过6位,如 1.0.0</span></label>
<input type="text" name="version" placeholder="版本" minlength="2" maxlength="16" data-validation-message="版本格式有误" pattern="^[0-9]{1,6}\.[0-9]{1,6}\.[0-9]{1,6}$" class="am-radius" {{if !empty($data)}} value="{{$data.version}}"{{/if}} required />
</div>
......@@ -76,11 +76,11 @@
</div>
<div class="am-form-group">
<label class="block">是否有前端入口<span class="fs-12 fw-100 cr-999">(前端独立页面入口)</span></label>
<label class="block">是否有前端入口<span class="am-form-group-label-tips">前端独立页面入口</span></label>
<input name="is_home" value="1" type="checkbox" data-off-text="没有" data-on-text="有" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_home']) and $data['is_home'] eq 1}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -16,7 +16,7 @@
<span class="tips fs-12">上传一个zip压缩格式的应用安装包</span>
<div id="form-file-tips"></div>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm" data-am-loading="{loadingText:'上传中...'}">上传</button>
</div>
</form>
......
......@@ -41,7 +41,7 @@
<input type="text" placeholder="方法名称" name="action" pattern="{{:lang('common_regex_action')}}" data-validation-message="方法名格式 1~30 个字符之间(必须以字母开始,可以是字母数字下划线)" class="am-radius" required />
</div>
<div class="am-form-group">
<label>图标class<span class="fs-12 fw-100 cr-999">(参考 http://www.iconfont.cn/ 将icon放到 [ /static/admin/default/css/iconfontmenu.css ] 文件中)</span></label>
<label>图标class<span class="am-form-group-label-tips">参考 http://www.iconfont.cn/ 将icon放到 [ /static/admin/default/css/iconfontmenu.css ] 文件中</span></label>
<input type="text" placeholder="图标class" name="icon" maxlength="60" data-validation-message="图标格式 0~30 个字符之间" class="am-radius" />
</div>
<div class="am-form-group">
......@@ -49,7 +49,7 @@
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
</div>
{{include file="lib/is_show" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -33,9 +33,9 @@
<span class="cr-ccc">不可操作</span>
{{else /}}
<a href="{{:MyUrl('admin/power/rolesaveinfo', array('id'=>$v['id']))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"> 编辑</button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/power/roledelete')}}" data-id="{{$v.id}}"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/power/roledelete')}}" data-id="{{$v.id}}"> 删除</button>
{{/if}}
</td>
</tr>
......
......@@ -56,7 +56,7 @@
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}}value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
文件模式从 100644 更改为 100755
<!-- commom html -->
<textarea id="upload-editor-view" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>empty($editor_path_type) ? 'common' : $editor_path_type])}}" style="display: none;"></textarea>
<!-- 公共底部钩子 -->
{{if !empty($plugins_admin_view_common_bottom_data) and is_array($plugins_admin_view_common_bottom_data) and (!isset($is_footer) or $is_footer eq 1)}}
{{foreach $plugins_admin_view_common_bottom_data as $hook}}
{{if is_string($hook) or is_int($hook)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
{{/if}}
</body>
</html>
......@@ -55,4 +65,28 @@
<!-- 控制器 -->
{{if !empty($module_js)}}
<script type='text/javascript' src="{{$Think.__MY_ROOT_PUBLIC__}}static/{{$module_js}}"></script>
{{/if}}
<!-- js钩子 -->
{{if !empty($plugins_admin_js_data) and is_array($plugins_admin_js_data)}}
{{foreach $plugins_admin_js_data as $hook}}
{{if is_string($hook)}}
<script type='text/javascript' src="{{$hook}}"></script>
{{elseif is_array($hook) /}}
{{foreach $hook as $hook_js}}
{{if is_string($hook_js)}}
<script type='text/javascript' src="{{$hook_js}}"></script>
{{/if}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
<!-- 公共页面底部钩子 -->
{{if !empty($plugins_admin_common_page_bottom_data) and is_array($plugins_admin_common_page_bottom_data)}}
{{foreach $plugins_admin_common_page_bottom_data as $hook}}
{{if is_string($hook) or is_int($hook)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
{{/if}}
\ No newline at end of file
......@@ -15,8 +15,40 @@
{{if !empty($module_css)}}
<link rel="stylesheet" type="text/css" href="{{$Think.__MY_ROOT_PUBLIC__}}static/{{$module_css}}" />
{{/if}}
<!-- css钩子 -->
{{if !empty($plugins_admin_css_data) and is_array($plugins_admin_css_data)}}
{{foreach $plugins_admin_css_data as $hook}}
{{if is_string($hook)}}
<link rel="stylesheet" type="text/css" href="{{$hook}}?v={{:MyC('home_static_cache_version')}}" />
{{elseif is_array($hook) /}}
{{foreach $hook as $hook_css}}
{{if is_string($hook_css)}}
<link rel="stylesheet" type="text/css" href="{{$hook_css}}?v={{:MyC('home_static_cache_version')}}" />
{{/if}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
<!-- 公共header内钩子 -->
{{if !empty($plugins_admin_common_header_data) and is_array($plugins_admin_common_header_data)}}
{{foreach $plugins_admin_common_header_data as $hook}}
{{if is_string($hook) or is_int($hook)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
{{/if}}
</head>
<script type="text/javascript">
var __attachment_host__ = '{{$attachment_host}}';
</script>
<body>
\ No newline at end of file
<body>
<!-- 公共顶部钩子 -->
{{if !empty($plugins_admin_view_common_top_data) and is_array($plugins_admin_view_common_top_data) and (!isset($is_header) or $is_header eq 1)}}
{{foreach $plugins_admin_view_common_top_data as $hook}}
{{if is_string($hook) or is_int($hook)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
{{/if}}
\ No newline at end of file
<div class="admin-sidebar am-offcanvas am-padding-0" id="admin-offcanvas">
<div class="admin-sidebar am-offcanvas" id="admin-offcanvas">
<div class="am-offcanvas-bar admin-offcanvas-bar">
<ul class="am-list admin-sidebar-list common-left-menu">
<li>
......@@ -17,7 +17,7 @@
</li>
{{else /}}
<li class="admin-parent">
<a data-type="menu" class="am-cf" data-am-collapse="{target: '#power-menu-{{$v.id}}'}">
<a data-type="menu" class="am-cf menu-parent-items-{{$v.id}}" data-am-collapse="{target: '#power-menu-{{$v.id}}'}">
{{if !empty($v['icon'])}}<span class="iconfont {{$v.icon}}"></span>{{/if}}
<span class="nav-name">{{$v.name}}</span>
<i class="am-icon-angle-down am-fr am-margin-right left-menu-more-ico-rotate"></i>
......@@ -25,7 +25,7 @@
<ul class="am-list am-collapse admin-sidebar-sub" id="power-menu-{{$v.id}}">
{{foreach $v.items as $vs}}
<li>
<a href="javascript:;" data-type="menu" data-url="{{:MyUrl('admin/'.strtolower($vs['control']).'/'.strtolower($vs['action']))}}">
<a href="javascript:;" class="menu-items-{{$vs.id}}" data-parent-id="{{$v.id}}" data-type="menu" data-url="{{:MyUrl('admin/'.strtolower($vs['control']).'/'.strtolower($vs['action']))}}">
{{if !empty($vs['icon'])}}<span class="{{$vs.icon}}"></span>{{/if}}
<span class="nav-name">{{$vs.name}}</span>
</a>
......@@ -37,4 +37,14 @@
{{/foreach}}
</ul>
</div>
</div>
<button class="am-btn am-btn-primary am-radius am-btn-xs menu-scaling-submit am-hide-sm-only am-icon-angle-double-left" data-status="0"></button>
<div class="menu-mini-container-tips am-animation-slide-right">
<div class="mui-mbar-tab-tip"></div>
<span></span>
</div>
<div class="menu-mini-container-popup am-animation-slide-right">
<div class="mui-mbar-tab-tip"></div>
<ul></ul>
</div>
\ No newline at end of file
......@@ -4,7 +4,7 @@
<h2>ShopXO<span class="admin-site-vice-name m-l-5">后台管理系统</span></h2>
</a>
</div>
<button class="am-topbar-btn am-topbar-toggle am-btn am-btn-sm am-btn-success am-show-sm-only am-radius header-nav-submit" data-am-collapse="{target: '#topbar-collapse'}">
<button class="am-topbar-btn am-topbar-toggle am-btn am-btn-xs am-btn-success am-show-sm-only am-radius header-nav-submit" data-am-collapse="{target: '#topbar-collapse'}">
<span class="am-sr-only">导航切换</span>
<i class="am-icon-bars"></i>
</button>
......@@ -16,15 +16,14 @@
<span>查看首页</span>
</a>
</li>
<li class="am-dropdown am-hide-sm-only">
<a href="javascript:;" class="fullscreen-event" data-fulltext-open="开启全屏" data-fulltext-exit="退出全屏">
<i class="am-icon-arrows-alt"></i>
<span class="fullscreen-text">开启全屏</span>
</a>
</li>
{{if !IsMobile()}}
<li class="am-dropdown am-hide-sm-only">
<a href="javascript:;" id="admin-fullscreen" class="tpl-header-list-link">
<i class="am-icon-arrows-alt"></i>
<span class="admin-fulltext" fulltext-open="开启全屏" fulltext-exit="退出全屏">开启全屏</span>
</a>
</li>
{{/if}}
<li class="am-dropdown common-nav-top" data-am-dropdown data-am-dropdown-toggle>
<a class="am-dropdown-toggle tpl-header-list-link" href="javascript:;">
<i class="am-icon-user"></i>
......
......@@ -28,7 +28,7 @@
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
</div>
{{include file="lib/enable" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<input type="hidden" name="pid" value="0" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
......
......@@ -37,7 +37,7 @@
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
</div>
{{include file="lib/enable" /}}
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -6,7 +6,7 @@
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/seo/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/seo/index')}}">
<div class="am-form-group">
<label>{{$data.home_seo_url_model.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_seo_url_model.describe}})</span></label>
<label>{{$data.home_seo_url_model.name}}<span class="am-form-group-label-tips">{{$data.home_seo_url_model.describe}}</span></label>
<select name="{{$data.home_seo_url_model.only_tag}}" class="am-radius chosen-select c-p" data-validation-message="{{$data.home_seo_url_model.error_tips}}" required>
{{foreach $seo_url_model_list as $v}}
<option value="{{$v.value}}" {{if isset($data['home_seo_url_model']['value']) and $data['home_seo_url_model']['value'] eq $v['value']}}selected{{/if}}>{{$v.name}}</option>
......@@ -14,26 +14,26 @@
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_route_separator.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_route_separator.describe}})</span></label>
<label>{{$data.common_route_separator.name}}<span class="am-form-group-label-tips">{{$data.common_route_separator.describe}}</span></label>
<input type="text" name="{{$data.common_route_separator.only_tag}}" placeholder="{{$data.common_route_separator.name}}" data-validation-message="{{$data.common_route_separator.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_route_separator.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.home_seo_url_html_suffix.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_seo_url_html_suffix.describe}})</span></label>
<label>{{$data.home_seo_url_html_suffix.name}}<span class="am-form-group-label-tips">{{$data.home_seo_url_html_suffix.describe}}</span></label>
<input type="text" name="{{$data.home_seo_url_html_suffix.only_tag}}" pattern="{{:lang('common_regex_url_html_suffix')}}" maxlength="8" placeholder="{{$data.home_seo_url_html_suffix.name}}" data-validation-message="{{$data.home_seo_url_html_suffix.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_seo_url_html_suffix.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.home_seo_site_title.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_seo_site_title.describe}})</span></label>
<label>{{$data.home_seo_site_title.name}}<span class="am-form-group-label-tips">{{$data.home_seo_site_title.describe}}</span></label>
<input type="text" name="{{$data.home_seo_site_title.only_tag}}" minlength="1" placeholder="{{$data.home_seo_site_title.name}}" data-validation-message="{{$data.home_seo_site_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_seo_site_title.value}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{$data.home_seo_site_keywords.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_seo_site_keywords.describe}})</span></label>
<label>{{$data.home_seo_site_keywords.name}}<span class="am-form-group-label-tips">{{$data.home_seo_site_keywords.describe}}</span></label>
<input type="text" name="{{$data.home_seo_site_keywords.only_tag}}" placeholder="{{$data.home_seo_site_keywords.name}}" data-validation-message="{{$data.home_seo_site_keywords.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_seo_site_keywords.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.home_seo_site_description.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_seo_site_description.describe}})</span></label>
<label>{{$data.home_seo_site_description.name}}<span class="am-form-group-label-tips">{{$data.home_seo_site_description.describe}}</span></label>
<textarea rows="6" name="{{$data.home_seo_site_description.only_tag}}" class="am-radius" placeholder="{{$data.home_seo_site_description.name}}" data-validation-message="{{$data.home_seo_site_description.error_tips}}">{{if !empty($data)}}{{$data.home_seo_site_description.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -10,7 +10,7 @@
<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 />
</div>
<div class="am-form-group">
<label class="block">{{$data.home_site_logo.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_site_logo.describe}})</span></label>
<label class="block">{{$data.home_site_logo.name}}<span class="am-form-group-label-tips">{{$data.home_site_logo.describe}}</span></label>
<ul class="plug-file-upload-view home_site_logo-images-view" data-form-name="home_site_logo" data-max-number="1" data-dialog-type="images">
{{if !empty($data)}}
<li>
......@@ -24,7 +24,7 @@
</div>
<div class="am-form-group">
<label class="block">{{$data.home_site_logo_wap.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_site_logo_wap.describe}})</span></label>
<label class="block">{{$data.home_site_logo_wap.name}}<span class="am-form-group-label-tips">{{$data.home_site_logo_wap.describe}}</span></label>
<ul class="plug-file-upload-view home_site_logo_wap-images-view" data-form-name="home_site_logo_wap" data-max-number="1" data-dialog-type="images">
{{if !empty($data)}}
<li>
......@@ -38,7 +38,7 @@
</div>
<div class="am-form-group">
<label class="block">{{$data.home_site_desktop_icon.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_site_desktop_icon.describe}})</span></label>
<label class="block">{{$data.home_site_desktop_icon.name}}<span class="am-form-group-label-tips">{{$data.home_site_desktop_icon.describe}}</span></label>
<ul class="plug-file-upload-view home_site_desktop_icon-images-view" data-form-name="home_site_desktop_icon" data-max-number="1" data-dialog-type="images">
{{if !empty($data)}}
<li>
......@@ -52,7 +52,7 @@
</div>
<div class="am-form-group">
<label>{{$data.common_timezone.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_timezone.describe}})</span></label>
<label>{{$data.common_timezone.name}}<span class="am-form-group-label-tips">{{$data.common_timezone.describe}}</span></label>
<select name="{{$data.common_timezone.only_tag}}" class="am-radius chosen-select c-p" data-placeholder="{{$data.common_timezone.name}}" data-validation-message="{{$data.common_timezone.error_tips}}" required>
{{foreach $site_timezone_list as $k=>$v}}
<option value="{{$k}}" {{if isset($data['common_timezone']['value']) and $data['common_timezone']['value'] eq $k}}selected{{/if}}>{{$v}}</option>
......@@ -60,20 +60,20 @@
</select>
</div>
<div class="am-form-group">
<label>{{$data.home_max_limit_image.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_max_limit_image.describe}})</span></label>
<label>{{$data.home_max_limit_image.name}}<span class="am-form-group-label-tips">{{$data.home_max_limit_image.describe}}</span></label>
<input type="number" name="{{$data.home_max_limit_image.only_tag}}" placeholder="{{$data.home_max_limit_image.name}}" data-validation-message="{{$data.home_max_limit_image.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_max_limit_image.value}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{$data.home_max_limit_file.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_max_limit_file.describe}})</span></label>
<label>{{$data.home_max_limit_file.name}}<span class="am-form-group-label-tips">{{$data.home_max_limit_file.describe}}</span></label>
<input type="number" name="{{$data.home_max_limit_file.only_tag}}" placeholder="{{$data.home_max_limit_file.name}}" data-validation-message="{{$data.home_max_limit_file.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_max_limit_file.value}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{$data.home_max_limit_video.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_max_limit_video.describe}})</span></label>
<label>{{$data.home_max_limit_video.name}}<span class="am-form-group-label-tips">{{$data.home_max_limit_video.describe}}</span></label>
<input type="number" name="{{$data.home_max_limit_video.only_tag}}" placeholder="{{$data.home_max_limit_video.name}}" data-validation-message="{{$data.home_max_limit_video.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_max_limit_video.value}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{$data.home_site_state.name}}<span class="fs-12 fw-100 cr-999">({{$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 c-p" data-validation-message="{{$data.home_site_state.error_tips}}" required>
{{foreach $site_site_state_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>
......@@ -81,12 +81,12 @@
</select>
</div>
<div class="am-form-group">
<label>{{$data.home_site_close_reason.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_site_close_reason.describe}})</span></label>
<label>{{$data.home_site_close_reason.name}}<span class="am-form-group-label-tips">{{$data.home_site_close_reason.describe}}</span></label>
<textarea rows="3" name="{{$data.home_site_close_reason.only_tag}}" class="am-radius" placeholder="{{$data.home_site_close_reason.name}}" data-validation-message="{{$data.home_site_close_reason.error_tips}}">{{if !empty($data)}}{{$data.home_site_close_reason.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.home_user_reg_state.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_user_reg_state.describe}})</span></label>
<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 c-p" data-placeholder="{{$data.home_user_reg_state.name}}" >
{{foreach $site_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>
......@@ -95,7 +95,7 @@
</div>
<div class="am-form-group">
<label>{{$data.home_user_login_state.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_user_login_state.describe}})</span></label>
<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 c-p" 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>
......@@ -104,15 +104,15 @@
</div>
<div class="am-form-group">
<label>{{$data.common_verify_expire_time.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_verify_expire_time.describe}})</span></label>
<label>{{$data.common_verify_expire_time.name}}<span class="am-form-group-label-tips">{{$data.common_verify_expire_time.describe}}</span></label>
<input type="number" name="{{$data.common_verify_expire_time.only_tag}}" placeholder="{{$data.common_verify_expire_time.name}}" data-validation-message="{{$data.common_verify_expire_time.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_verify_expire_time.value}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{$data.common_verify_time_interval.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_verify_time_interval.describe}})</span></label>
<label>{{$data.common_verify_time_interval.name}}<span class="am-form-group-label-tips">{{$data.common_verify_time_interval.describe}}</span></label>
<input type="number" name="{{$data.common_verify_time_interval.only_tag}}" placeholder="{{$data.common_verify_time_interval.name}}" data-validation-message="{{$data.common_verify_time_interval.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_verify_time_interval.value}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{$data.home_img_verify_state.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_img_verify_state.describe}})</span></label>
<label>{{$data.home_img_verify_state.name}}<span class="am-form-group-label-tips">{{$data.home_img_verify_state.describe}}</span></label>
<select name="{{$data.home_img_verify_state.only_tag}}" class="am-radius chosen-select c-p" data-validation-message="{{$data.home_img_verify_state.error_tips}}" required>
{{foreach $site_img_verify_state_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>
......@@ -120,22 +120,22 @@
</select>
</div>
<div class="am-form-group">
<label>{{$data.home_content_max_width.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_content_max_width.describe}})</span></label>
<label>{{$data.home_content_max_width.name}}<span class="am-form-group-label-tips">{{$data.home_content_max_width.describe}}</span></label>
<input type="number" name="{{$data.home_content_max_width.only_tag}}" placeholder="{{$data.home_content_max_width.name}}" data-validation-message="{{$data.home_content_max_width.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_content_max_width.value}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{$data.home_static_cache_version.name}}<span class="fs-12 fw-100 cr-999">({{$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}} />
</div>
<div class="am-form-group">
<label>{{$data.home_site_icp.name}}<span class="fs-12 fw-100 cr-999">({{$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}} />
</div>
<div class="am-form-group">
<label>{{$data.home_footer_info.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_footer_info.describe}})</span></label>
<label>{{$data.home_footer_info.name}}<span class="am-form-group-label-tips">{{$data.home_footer_info.describe}}</span></label>
<textarea rows="6" name="{{$data.home_footer_info.only_tag}}" class="am-radius" placeholder="{{$data.home_footer_info.name}}" data-validation-message="{{$data.home_footer_info.error_tips}}">{{if !empty($data)}}{{$data.home_footer_info.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -89,9 +89,9 @@
<td>{{$v.add_time_time}}</td>
<td class="view-operation">
<a href="{{:MyUrl('admin/slide/saveinfo', array('id'=>$v['id']))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"> 编辑</button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/slide/delete')}}" data-id="{{$v.id}}"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/slide/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -61,7 +61,7 @@
<div class="am-form-group">
<label>背景色</label>
<input type="hidden" name="bg_color" value="{{if !empty($data)}}{{$data.bg_color}}{{/if}}" />
<button class="am-btn am-btn-default colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color" {{if !empty($data)}} style="background-color:{{$data.bg_color}};"{{/if}}>
<button class="am-btn am-btn-default am-btn-xs colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color" {{if !empty($data)}} style="background-color:{{$data.bg_color}};"{{/if}}>
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</div>
......@@ -75,7 +75,7 @@
<label class="block">是否启用</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (!empty($data) and $data['is_enable'] eq 1) or empty($data)}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -10,18 +10,18 @@
<!-- 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'=>'sms'])}}">
<div class="am-form-group">
<label>{{$data.common_sms_apikey.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_sms_apikey.describe}})</span></label>
<label>{{$data.common_sms_apikey.name}}<span class="am-form-group-label-tips">{{$data.common_sms_apikey.describe}}</span></label>
<input type="text" name="{{$data.common_sms_apikey.only_tag}}" placeholder="{{$data.common_sms_apikey.name}}" data-validation-message="{{$data.common_sms_apikey.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_sms_apikey.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_sms_apisecret.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_sms_apisecret.describe}})</span></label>
<label>{{$data.common_sms_apisecret.name}}<span class="am-form-group-label-tips">{{$data.common_sms_apisecret.describe}}</span></label>
<input type="text" name="{{$data.common_sms_apisecret.only_tag}}" placeholder="{{$data.common_sms_apisecret.name}}" data-validation-message="{{$data.common_sms_apisecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_sms_apisecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_sms_sign.name}}<span class="fs-12 fw-100 cr-999">({{$data.common_sms_sign.describe}})</span></label>
<label>{{$data.common_sms_sign.name}}<span class="am-form-group-label-tips">{{$data.common_sms_sign.describe}}</span></label>
<input type="text" name="{{$data.common_sms_sign.only_tag}}" placeholder="{{$data.common_sms_sign.name}}" data-validation-message="{{$data.common_sms_sign.error_tips}}" class="am-radius" maxlength="16" {{if !empty($data)}}value="{{$data.common_sms_sign.value}}"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -10,18 +10,18 @@
<!-- 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'])}}">
<div class="am-form-group">
<label>{{$data.home_sms_user_reg.name}}<span class="fs-12 fw-100 cr-999">({{$data.home_sms_user_reg.describe}})</span></label>
<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="fs-12 fw-100 cr-999">({{$data.home_sms_user_forget_pwd.describe}})</span></label>
<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="fs-12 fw-100 cr-999">({{$data.home_sms_user_mobile_binding.describe}})</span></label>
<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 class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
......
......@@ -11,9 +11,9 @@
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/sqlconsole/implement')}}" method="POST" request-type="ajax-fun" request-value="ViewImplementBack">
<div class="am-form-group">
<textarea rows="6" name="sql" class="am-radius" placeholder="SQL语句" data-validation-message="请填写需要执行的SQL语句" required>{{if !empty($data)}}{{$data.sql}}{{/if}}</textarea>
<textarea rows="6" name="sql" class="am-radius" placeholder="SQL语句" data-validation-message="请填写需要执行的SQL语句" required></textarea>
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">执行</button>
</div>
</form>
......
......@@ -21,6 +21,12 @@
<option value="{{$v.id}}" {{if isset($params['gender']) and $params['gender'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<select name="status" class="am-radius c-p m-t-10 m-l-5 param-where">
<option value="-1">状态</option>
{{foreach $common_user_status_list as $v}}
<option value="{{$v.id}}" {{if isset($params['status']) and $params['status'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<div class="param-date param-where m-l-5">
<input type="text" autocomplete="off" name="time_start" class="Wdate am-radius m-t-10" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if isset($params['time_start'])}}value="{{$params.time_start}}"{{/if}}/>
<span>~</span>
......@@ -49,6 +55,7 @@
<th class="am-hide-sm-only">手机号码</th>
<th class="am-hide-sm-only">积分</th>
<th class="am-hide-sm-only">性别</th>
<th class="am-hide-sm-only">状态</th>
<th class="am-hide-sm-only">生日</th>
<th>更多</th>
<th>操作</th>
......@@ -77,6 +84,9 @@
<td class="am-hide-sm-only">
{{if empty($v['gender_text'])}}<span class="cr-ddd">未设置</span>{{else /}}{{$v.gender_text}}{{/if}}
</td>
<td class="am-hide-sm-only">
{{if empty($v['status_text'])}}<span class="cr-ddd">未知</span>{{else /}}{{$v.status_text}}{{/if}}
</td>
<td class="am-hide-sm-only">
{{if empty($v['birthday_text'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.birthday_text}}{{/if}}
</td>
......@@ -102,6 +112,18 @@
<dt>电子邮箱</dt>
<dd>{{if empty($v['email'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.email}}{{/if}}</dd>
<dt>状态</dt>
<dd>{{if empty($v['status_text'])}}<span class="cr-ddd">未知</span>{{else /}}{{$v.status_text}}{{/if}}</dd>
<dt>支付宝openid</dt>
<dd>{{if empty($v['alipay_openid'])}}<span class="cr-ddd">未知</span>{{else /}}{{$v.alipay_openid}}{{/if}}</dd>
<dt>微信openid</dt>
<dd>{{if empty($v['weixin_openid'])}}<span class="cr-ddd">未知</span>{{else /}}{{$v.weixin_openid}}{{/if}}</dd>
<dt>百度openid</dt>
<dd>{{if empty($v['baidu_openid'])}}<span class="cr-ddd">未知</span>{{else /}}{{$v.baidu_openid}}{{/if}}</dd>
<dt>性别</dt>
<dd>{{if empty($v['gender_text'])}}<span class="cr-ddd">未设置</span>{{else /}}{{$v.gender_text}}{{/if}}</dd>
......@@ -141,9 +163,9 @@
</td>
<td class="view-operation">
<a href="{{:MyUrl('admin/user/saveinfo', array_merge($params,array('id'=>$v['id'])))}}">
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-edit"> 编辑</button>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
<button class="am-btn am-btn-default am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/user/delete')}}" data-id="{{$v.id}}"> 删除</button>
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/user/delete')}}" data-id="{{$v.id}}"> 删除</button>
</td>
</tr>
{{/foreach}}
......
......@@ -32,6 +32,20 @@
<label>电子邮箱</label>
<input type="email" name="email" class="am-radius" placeholder="电子邮箱" data-validation-message="电子邮箱格式错误" {{if !empty($data)}} value="{{$data.email}}"{{/if}} />
</div>
<div class="am-form-group">
<label>支付宝openid</label>
<input type="text" name="alipay_openid" class="am-radius" placeholder="支付宝openid" data-validation-message="请填写支付宝openid" {{if !empty($data)}} value="{{$data.alipay_openid}}"{{/if}} />
</div>
<div class="am-form-group">
<label>微信openid</label>
<input type="text" name="weixin_openid" class="am-radius" placeholder="微信openid" data-validation-message="请填写微信openid" {{if !empty($data)}} value="{{$data.weixin_openid}}"{{/if}} />
</div>
<div class="am-form-group">
<label>百度openid</label>
<input type="text" name="baidu_openid" class="am-radius" placeholder="百度openid" data-validation-message="请填写百度openid" {{if !empty($data)}} value="{{$data.baidu_openid}}"{{/if}} />
</div>
<div class="am-form-group">
<label>生日</label>
<input type="text" name="birthday" class="am-radius Wdate" placeholder="生日" pattern="{{:lang('common_regex_date')}}" data-validation-message="生日格式有误" {{if !empty($data)}} value="{{$data.birthday_text}}" {{/if}} onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" />
......@@ -46,12 +60,14 @@
<input type="number" placeholder="积分" name="integral" data-validation-message="详细地址2~60 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.integral}}"{{/if}} />
</div>
{{include file="lib/user_status" /}}
<div class="am-form-group">
<label>登录密码</label>
<input type="text" placeholder="登录密码" name="pwd" pattern="{{:lang('common_regex_pwd')}}" data-validation-message="登录密码格式 6~18 个字符之间" class="am-radius" value="" />
</div>
<div class="am-form-group">
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
......
......@@ -44,7 +44,7 @@ class Answer extends Common
public function Index()
{
// 登录校验
$this->Is_Login();
$this->IsLogin();
// 参数
$params = input();
......@@ -90,7 +90,7 @@ class Answer extends Common
public function Add()
{
// 登录校验
$this->Is_Login();
$this->IsLogin();
$params = $this->data_post;
$params['user'] = $this->user;
......
......@@ -37,7 +37,7 @@ class Buy extends Common
parent::__construct();
// 是否登录
$this->Is_Login();
$this->IsLogin();
}
/**
......@@ -57,34 +57,18 @@ class Buy extends Common
// 商品校验
if(isset($ret['code']) && $ret['code'] == 0)
{
// 用户默认地址
$address = UserService::UserDefaultAddress(['user'=>$this->user]);
// 商品/基础信息
$base = [
'total_price' => empty($ret['data']) ? 0 : array_sum(array_column($ret['data'], 'total_price')),
'total_stock' => empty($ret['data']) ? 0 : array_sum(array_column($ret['data'], 'stock')),
'address' => empty($address['data']) ? null : $address['data'],
];
// 支付方式
$payment_list = PaymentService::BuyPaymentList(['is_enable'=>1, 'is_open_user'=>1]);
// 扩展展示数据
$extension_list = [
// ['name'=>'感恩节9折', 'tips'=>'-¥23元'],
// ['name'=>'运费', 'tips'=>'+¥10元'],
];
// 数据返回组装
$result = [
'goods_list' => $ret['data'],
'goods_list' => $ret['data']['goods'],
'payment_list' => $payment_list,
'base' => $base,
'extension_list' => $extension_list,
'base' => $ret['data']['base'],
'extension_data' => $ret['data']['extension_data'],
'common_order_is_booking' => (int) MyC('common_order_is_booking', 0),
];
return DataReturn('success', 0, $result);
return DataReturn('操作成功', 0, $result);
}
return $ret;
}
......
......@@ -34,7 +34,7 @@ class Cart extends Common
parent::__construct();
// 是否登录
$this->Is_Login();
$this->IsLogin();
}
/**
......
......@@ -11,6 +11,7 @@
namespace app\api\controller;
use think\Controller;
use app\service\SystemService;
use app\service\ConfigService;
use app\service\UserService;
......@@ -47,6 +48,9 @@ class Common extends Controller
{
parent::__construct();
// 系统运行开始
SystemService::SystemBegin();
// 输入参数
$this->data_post = input('post.');
$this->data_get = input('get.');
......@@ -62,6 +66,20 @@ class Common extends Controller
$this->CommonInit();
}
/**
* 析构函数
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-03-18
* @desc description
*/
public function __destruct()
{
// 系统运行结束
SystemService::SystemEnd();
}
/**
* 系统初始化
* @author Devil
......@@ -95,13 +113,13 @@ class Common extends Controller
}
/**
* [Is_Login 登录校验]
* [IsLogin 登录校验]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-03-09T11:43:48+0800
*/
protected function Is_Login()
protected function IsLogin()
{
if(empty($this->user))
{
......@@ -119,10 +137,7 @@ class Common extends Controller
private function CommonInit()
{
// 用户数据
if(!empty($this->data_request['user_id']))
{
$this->user = UserService::UserLoginRecord($this->data_request['user_id'], true);
}
$this->user = UserService::LoginUserInfo();
}
/**
......
......@@ -61,16 +61,16 @@ class Goods extends Common
'is_spec' => true,
'is_content_app' => true,
];
$goods = GoodsService::GoodsList($params);
if(empty($goods[0]) || $goods[0]['is_delete_time'] != 0)
$ret = GoodsService::GoodsList($params);
if(empty($ret['data'][0]) || $ret['data'][0]['is_delete_time'] != 0)
{
return DataReturn('商品不存在或已删除', -1);
}
unset($goods[0]['content_web']);
unset($ret['data'][0]['content_web']);
// 当前登录用户是否已收藏
$ret_favor = GoodsService::IsUserGoodsFavor(['goods_id'=>$goods_id, 'user'=>$this->user]);
$goods[0]['is_favor'] = ($ret_favor['code'] == 0) ? $ret_favor['data'] : 0;
$ret['data'][0]['is_favor'] = ($ret_favor['code'] == 0) ? $ret_favor['data'] : 0;
// 商品访问统计
GoodsService::GoodsAccessCountInc(['goods_id'=>$goods_id]);
......@@ -80,7 +80,7 @@ class Goods extends Common
// 数据返回
$result = [
'goods' => $goods[0],
'goods' => $ret['data'][0],
'common_order_is_booking' => (int) MyC('common_order_is_booking', 0),
];
return DataReturn('success', 0, $result);
......@@ -97,7 +97,7 @@ class Goods extends Common
public function Favor()
{
// 登录校验
$this->Is_Login();
$this->IsLogin();
// 开始操作
$params = $this->data_post;
......
......@@ -34,7 +34,7 @@ class Message extends Common
parent::__construct();
// 是否登录
$this->Is_Login();
$this->IsLogin();
}
/**
......
......@@ -35,7 +35,7 @@ class Order extends Common
parent::__construct();
// 是否登录
$this->Is_Login();
$this->IsLogin();
}
/**
......
......@@ -50,17 +50,17 @@ class Search extends Common
SearchService::SearchAdd($this->data_post);
// 获取数据
$result = SearchService::GoodsList($this->data_post);
$ret = SearchService::GoodsList($this->data_post);
// 分类
if(!empty($this->data_post['category_id']))
{
$result['category'] = GoodsService::GoodsCategoryRow(['id'=>$this->data_post['category_id']]);
$ret['data']['category'] = GoodsService::GoodsCategoryRow(['id'=>$this->data_post['category_id']]);
} else {
$result['category'] = [];
$ret['data']['category'] = [];
}
return DataReturn('success', 0, $result);
return $ret;
}
}
?>
\ No newline at end of file
......@@ -91,15 +91,16 @@ class User extends Common
}
// 授权
$result = (new \base\AlipayAuth())->GetAlipayUserInfo($this->data_post['authcode'], MyC('common_app_mini_alipay_appid'));
if($result === false)
$ret = (new \base\AlipayAuth())->GetAlipayUserInfo($this->data_post['authcode'], MyC('common_app_mini_alipay_appid'));
if($ret['status'] != 0)
{
return DataReturn('获取授权信息失败', -10);
return DataReturn($ret['msg'], -10);
} else {
$result['gender'] = empty($result['gender']) ? 0 : ($result['gender'] == 'm') ? 2 : 1;
$result['openid'] = $result['user_id'];
$result['referrer']= isset($this->data_post['referrer']) ? intval($this->data_post['referrer']) : 0;
return UserService::AuthUserProgram($result, 'alipay_openid');
$data = $ret['data'];
$data['gender'] = empty($data['gender']) ? 0 : ($data['gender'] == 'm') ? 2 : 1;
$data['openid'] = $data['user_id'];
$data['referrer']= isset($this->data_post['referrer']) ? intval($this->data_post['referrer']) : 0;
return UserService::AuthUserProgram($data, 'alipay_openid');
}
}
......@@ -113,7 +114,14 @@ class User extends Common
*/
public function WechatUserAuth()
{
$result = (new \base\Wechat(MyC('common_app_mini_weixin_appid'), MyC('common_app_mini_weixin_appsecret')))->GetAuthSessionKey(input('authcode'));
// 参数
if(empty($this->data_post['authcode']))
{
return DataReturn('授权码为空', -1);
}
// 授权
$result = (new \base\Wechat(MyC('common_app_mini_weixin_appid'), MyC('common_app_mini_weixin_appsecret')))->GetAuthSessionKey($this->data_post['authcode']);
if($result !== false)
{
return DataReturn('授权登录成功', 0, $result);
......@@ -131,14 +139,35 @@ class User extends Common
*/
public function WechatUserInfo()
{
// 参数
$params = input();
// 参数校验
$p = [
[
'checked_type' => 'empty',
'key_name' => 'openid',
'error_msg' => 'openid为空',
],
[
'checked_type' => 'empty',
'key_name' => 'encrypted_data',
'error_msg' => '解密数据为空',
],
[
'checked_type' => 'empty',
'key_name' => 'iv',
'error_msg' => 'iv数据为空',
]
];
$ret = ParamsChecked($this->data_post, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 先从数据库获取用户信息
$user = UserService::UserInfo('weixin_openid', $params['openid']);
$user = UserService::UserInfo('weixin_openid', $this->data_post['openid']);
if(empty($user))
{
$result = (new \base\Wechat(MyC('common_app_mini_weixin_appid'), MyC('common_app_mini_weixin_appsecret')))->DecryptData($params['encrypted_data'], $params['iv'], $params['openid']);
$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(is_array($result))
{
......@@ -186,7 +215,7 @@ class User extends Common
public function Center()
{
// 登录校验
$this->Is_Login();
$this->IsLogin();
// 订单总数
$where = ['user_id'=>$this->user['id'], 'is_delete_time'=>0, 'user_is_delete_time'=>0];
......
......@@ -34,7 +34,7 @@ class UserAddress extends Common
parent::__construct();
// 是否登录
$this->Is_Login();
$this->IsLogin();
}
/**
......
......@@ -34,7 +34,7 @@ class UserGoodsBrowse extends Common
parent::__construct();
// 是否登录
$this->Is_Login();
$this->IsLogin();
}
/**
......
......@@ -34,7 +34,7 @@ class UserGoodsFavor extends Common
parent::__construct();
// 是否登录
$this->Is_Login();
$this->IsLogin();
}
/**
......
......@@ -34,7 +34,7 @@ class UserIntegral extends Common
parent::__construct();
// 是否登录
$this->Is_Login();
$this->IsLogin();
}
/**
......
......@@ -225,6 +225,12 @@ function MyUrl($path, $params=[])
$url = str_replace('public/', '', $url);
}
// tp框架url方法是否识别到https
if(__MY_HTTP__ == 'https' && substr($url, 0, 5) != 'https')
{
$url = 'https'.mb_substr($url, 4, null, 'utf-8');
}
return $url;
}
......@@ -242,10 +248,12 @@ function MyUrl($path, $params=[])
*/
function PluginsHomeUrl($plugins_name, $plugins_control, $plugins_action, $params=[])
{
$params['pluginsname'] = $plugins_name;
$params['pluginscontrol'] = $plugins_control;
$params['pluginsaction'] = $plugins_action;
$url = url('index/plugins/index', $params, true, true);
$plugins = [
'pluginsname' => $plugins_name,
'pluginscontrol' => $plugins_control,
'pluginsaction' => $plugins_action,
];
$url = url('index/plugins/index', $plugins+$params, true, true);
// 是否根目录访问项目
if(defined('IS_ROOT_ACCESS'))
......@@ -270,10 +278,12 @@ function PluginsHomeUrl($plugins_name, $plugins_control, $plugins_action, $param
*/
function PluginsAdminUrl($plugins_name, $plugins_control, $plugins_action, $params=[])
{
$params['pluginsname'] = $plugins_name;
$params['pluginscontrol'] = $plugins_control;
$params['pluginsaction'] = $plugins_action;
$url = url('admin/plugins/index', $params, true, true);
$plugins = [
'pluginsname' => $plugins_name,
'pluginscontrol' => $plugins_control,
'pluginsaction' => $plugins_action,
];
$url = url('admin/plugins/index', $plugins+$params, true, true);
// 是否根目录访问项目
if(defined('IS_ROOT_ACCESS'))
......
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\index\controller;
use app\service\AnswerService;
/**
* 问答/留言管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class Answer extends Common
{
/**
* [_initialize 前置操作-继承公共前置方法]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function _initialize()
{
// 调用父类前置方法
parent::_initialize();
// 是否登录
$this->IsLogin();
}
/**
* 问答/留言列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-28
* @desc description
*/
public function Index()
{
// 参数
$params = input();
$params['user'] = $this->user;
// 分页
$number = 10;
// 条件
$where = AnswerService::AnswerListWhere($params);
// 获取总数
$total = AnswerService::AnswerTotal($where);
// 分页
$page_params = array(
'number' => $number,
'total' => $total,
'where' => $params,
'page' => isset($params['page']) ? intval($params['page']) : 1,
'url' => MyUrl('admin/answer/index'),
);
$page = new \base\Page($page_params);
$this->assign('page_html', $page->GetPageHtml());
// 获取列表
$data_params = array(
'm' => $page->GetPageStarNumber(),
'n' => $number,
'where' => $where,
);
$data = AnswerService::AnswerList($data_params);
$this->assign('data_list', $data['data']);
// 状态
$this->assign('common_is_show_list', lang('common_is_show_list'));
// 是否
$this->assign('common_is_text_list', lang('common_is_text_list'));
// 参数
$this->assign('params', $params);
return $this->fetch();
}
}
?>
\ No newline at end of file
......@@ -11,6 +11,7 @@
namespace app\index\controller;
use app\service\ArticleService;
use app\service\SeoService;
/**
* 文章详情
......@@ -64,7 +65,7 @@ class Article extends Common
}
// 浏览器标题
$this->assign('home_seo_site_title', $this->GetBrowserSeoTitle($article['data'][0]['title'], 1));
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle($article['data'][0]['title']));
// 获取分类和文字
$article_category_content = ArticleService::ArticleCategoryListContent();
......
......@@ -55,7 +55,7 @@ class Buy extends Common
return redirect(MyUrl('index/buy/index'));
} else {
// 获取商品列表
$params = session('buy_post_data');
$params = array_merge(input(), session('buy_post_data'));
$params['user'] = $this->user;
$ret = BuyService::BuyTypeGoodsList($params);
......@@ -68,15 +68,9 @@ class Buy extends Common
// 支付方式
$this->assign('payment_list', PaymentService::BuyPaymentList(['is_enable'=>1, 'is_open_user'=>1]));
// 商品/基础信息
$base = [
'total_price' => empty($ret['data']) ? 0 : array_sum(array_column($ret['data'], 'total_price')),
'total_stock' => empty($ret['data']) ? 0 : array_sum(array_column($ret['data'], 'stock')),
'address' => UserService::UserDefaultAddress(['user'=>$this->user])['data'],
];
$this->assign('base', $base);
$this->assign('goods_list', $ret['data']);
$this->assign('base', $ret['data']['base']);
$this->assign('goods_list', $ret['data']['goods']);
$this->assign('extension_data', $ret['data']['extension_data']);
$this->assign('params', $params);
return $this->fetch();
} else {
......
......@@ -51,7 +51,7 @@ class Cart extends Common
$base = [
'total_price' => empty($cart_list['data']) ? 0 : array_sum(array_column($cart_list['data'], 'total_price')),
'total_stock' => empty($cart_list['data']) ? 0 : array_sum(array_column($cart_list['data'], 'stock')),
'buy_count' => empty($cart_list['data']) ? 0 : array_sum(array_column($cart_list['data'], 'stock')),
'ids' => empty($cart_list['data']) ? '' : implode(',', array_column($cart_list['data'], 'id')),
];
$this->assign('base', $base);
......
......@@ -10,6 +10,8 @@
// +----------------------------------------------------------------------
namespace app\index\controller;
use app\service\SeoService;
/**
* 商品分类
* @author Devil
......@@ -41,6 +43,9 @@ class Category extends Common
*/
public function Index()
{
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('商品分类', 1));
return $this->fetch();
}
}
......
......@@ -12,6 +12,7 @@ namespace app\index\controller;
use think\facade\Hook;
use think\Controller;
use app\service\SystemService;
use app\service\GoodsService;
use app\service\NavigationService;
use app\service\BuyService;
......@@ -19,6 +20,7 @@ use app\service\MessageService;
use app\service\SearchService;
use app\service\ConfigService;
use app\service\LinkService;
use app\service\UserService;
/**
* 前端公共控制器
......@@ -51,6 +53,9 @@ class Common extends Controller
{
parent::__construct();
// 系统运行开始
SystemService::SystemBegin();
// 系统初始化
$this->SystemInit();
......@@ -70,6 +75,20 @@ class Common extends Controller
$this->CommonPluginsInit();
}
/**
* 析构函数
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-03-18
* @desc description
*/
public function __destruct()
{
// 系统运行结束
SystemService::SystemEnd();
}
/**
* 公共钩子初始化
* @author Devil
......@@ -81,22 +100,37 @@ class Common extends Controller
private function CommonPluginsInit()
{
// css钩子
$this->assign('plugins_css_data', Hook::listen('plugins_css', ['hook_name'=>'plugins_css', 'is_control'=>false]));
$this->assign('plugins_css_data', Hook::listen('plugins_css', ['hook_name'=>'plugins_css', 'is_backend'=>false]));
// js钩子
$this->assign('plugins_js_data', Hook::listen('plugins_js', ['hook_name'=>'plugins_js', 'is_control'=>false]));
$this->assign('plugins_js_data', Hook::listen('plugins_js', ['hook_name'=>'plugins_js', 'is_backend'=>false]));
// 公共header内钩子
$this->assign('plugins_common_header_data', Hook::listen('plugins_common_header', ['hook_name'=>'plugins_common_header', 'is_control'=>false, 'user'=>$this->user]));
$this->assign('plugins_common_header_data', Hook::listen('plugins_common_header', ['hook_name'=>'plugins_common_header', 'is_backend'=>false, 'user'=>$this->user]));
// 公共页面底部钩子
$this->assign('plugins_common_page_bottom_data', Hook::listen('plugins_common_page_bottom', ['hook_name'=>'plugins_common_page_bottom', 'is_control'=>false, 'user'=>$this->user]));
$this->assign('plugins_common_page_bottom_data', Hook::listen('plugins_common_page_bottom', ['hook_name'=>'plugins_common_page_bottom', 'is_backend'=>false, 'user'=>$this->user]));
// 公共顶部钩子
$this->assign('plugins_view_common_top_data', Hook::listen('plugins_view_common_top', ['hook_name'=>'plugins_view_common_top', 'is_control'=>false, 'user'=>$this->user]));
$this->assign('plugins_view_common_top_data', Hook::listen('plugins_view_common_top', ['hook_name'=>'plugins_view_common_top', 'is_backend'=>false, 'user'=>$this->user]));
// 公共底部钩子
$this->assign('plugins_view_common_bottom_data', Hook::listen('plugins_view_common_bottom', ['hook_name'=>'plugins_view_common_bottom', 'is_control'=>false, 'user'=>$this->user]));
$this->assign('plugins_view_common_bottom_data', Hook::listen('plugins_view_common_bottom', ['hook_name'=>'plugins_view_common_bottom', 'is_backend'=>false, 'user'=>$this->user]));
// 公共顶部小导航钩子-左侧
$this->assign('plugins_view_header_navigation_top_left_data', Hook::listen('plugins_view_header_navigation_top_left', ['hook_name'=>'plugins_view_header_navigation_top_left', 'is_backend'=>false, 'user'=>$this->user]));
// 用户登录页面顶部钩子
$this->assign('plugins_view_user_login_info_top_data', Hook::listen('plugins_view_user_login_info_top', ['hook_name'=>'plugins_view_user_login_info_top', 'is_backend'=>false, 'user'=>$this->user]));
// 用户注册页面钩子
$this->assign('plugins_view_user_reg_info_data', Hook::listen('plugins_view_user_reg_info', ['hook_name'=>'plugins_view_user_reg_info', 'is_backend'=>false, 'user'=>$this->user]));
// 用户注册短信页面钩子
$this->assign('plugins_view_user_sms_reg_info_data', Hook::listen('plugins_view_user_sms_reg_info', ['hook_name'=>'plugins_view_user_sms_reg_info', 'is_backend'=>false, 'user'=>$this->user]));
// 用户注册邮箱页面钩子
$this->assign('plugins_view_user_email_reg_info_data', Hook::listen('plugins_view_user_email_reg_info', ['hook_name'=>'plugins_view_user_email_reg_info', 'is_backend'=>false, 'user'=>$this->user]));
}
/**
......@@ -128,7 +162,7 @@ class Common extends Controller
*/
protected function IsLogin()
{
if(session('user') == null)
if(empty($this->user))
{
if(IS_AJAX)
{
......@@ -151,7 +185,7 @@ class Common extends Controller
// 用户数据
if(session('user') != null)
{
$this->user = session('user');
$this->user = UserService::LoginUserInfo();
}
}
......@@ -210,20 +244,11 @@ class Common extends Controller
$this->assign('user', $this->user);
// 用户中心菜单
$this->assign('user_left_menu', lang('user_left_menu'));
$this->assign('user_left_menu', NavigationService::UsersCenterLeftList());
// 商品大分类
$this->assign('goods_category_list', GoodsService::GoodsCategory());
// 购物车商品总数
$common_cart_total = BuyService::UserCartTotal(['user'=>$this->user]);
$this->assign('common_cart_total', ($common_cart_total > 99) ? '99+' : $common_cart_total);
// 未读消息总数
$params = ['user'=>$this->user, 'is_more'=>1, 'is_read'=>0, 'user_type'=>'user'];
$common_message_total = MessageService::UserMessageTotal($params);
$this->assign('common_message_total', ($common_message_total > 99) ? '99+' : $common_message_total);
// 搜索框下热门关键字
$home_search_keywords = [];
switch(intval(MyC('home_search_keywords_type', 0)))
......@@ -243,6 +268,9 @@ class Common extends Controller
// 开发模式
$this->assign('shopxo_is_develop', config('shopxo.is_develop'));
// 顶部右侧导航
$this->assign('common_nav_top_right_list', NavigationService::HomeHavTopRight(['user'=>$this->user]));
}
/**
......@@ -254,38 +282,11 @@ class Common extends Controller
*/
private function NavInit()
{
$navigation = NavigationService::Home();
$navigation = NavigationService::Nav();
$this->nav_header = $navigation['header'];
$this->nav_footer = $navigation['footer'];
}
/**
* [GetBrowserSeoTitle 获取浏览器seo标题]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-25T14:21:21+0800
* @param [string] $title [标题]
* @param [int] $type [页面类型 0, 1, 2]
* @return [string] [浏览器seo标题]
*/
protected function GetBrowserSeoTitle($title, $type)
{
switch($type)
{
case 0:
break;
case 1:
$site_name = MyC('home_site_name');
break;
default:
$site_name = MyC('home_seo_site_title');
}
return empty($title) ? $site_name : $title.' - '.$site_name;
}
/**
* [_empty 空方法操作]
* @author Devil
......
......@@ -11,6 +11,7 @@
namespace app\index\controller;
use app\service\CustomViewService;
use app\service\SeoService;
/**
* 自定义页面
......@@ -58,7 +59,7 @@ class CustomView extends Common
CustomViewService::CustomViewAccessCountInc(['id'=>$id]);
// 浏览器标题
$this->assign('home_seo_site_title', $this->GetBrowserSeoTitle($data['data'][0]['title'], 1));
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle($data['data'][0]['title']));
$this->assign('data', $data['data'][0]);
$this->assign('is_header', $data['data'][0]['is_header']);
......
......@@ -10,7 +10,9 @@
// +----------------------------------------------------------------------
namespace app\index\controller;
use think\facade\Hook;
use app\service\GoodsService;
use app\service\SeoService;
/**
* 商品详情
......@@ -52,24 +54,72 @@ class Goods extends Common
'is_photo' => true,
'is_spec' => true,
];
$goods = GoodsService::GoodsList($params);
if(empty($goods[0]) || $goods[0]['is_delete_time'] != 0)
$ret = GoodsService::GoodsList($params);
if(empty($ret['data'][0]) || $ret['data'][0]['is_delete_time'] != 0)
{
$this->assign('msg', '资源不存在或已被删除');
return $this->fetch('/public/tips_error');
} else {
// 当前登录用户是否已收藏
$ret_favor = GoodsService::IsUserGoodsFavor(['goods_id'=>$id, 'user'=>$this->user]);
$goods[0]['is_favor'] = ($ret_favor['code'] == 0) ? $ret_favor['data'] : 0;
$ret['data'][0]['is_favor'] = ($ret_favor['code'] == 0) ? $ret_favor['data'] : 0;
// 商品评价总数
$goods[0]['comments_count'] = GoodsService::GoodsCommentsTotal($id);
$ret['data'][0]['comments_count'] = GoodsService::GoodsCommentsTotal($id);
// 商品收藏总数
$goods[0]['favor_count'] = GoodsService::GoodsFavorTotal(['goods_id'=>$id]);
$this->assign('goods', $goods[0]);
$this->assign('home_seo_site_title', $goods[0]['title']);
$ret['data'][0]['favor_count'] = GoodsService::GoodsFavorTotal(['goods_id'=>$id]);
// 商品页面基础信息顶部钩子
$this->assign('plugins_view_goods_detail_base_top_data', Hook::listen('plugins_view_goods_detail_base_top',
[
'hook_name' => 'plugins_view_goods_detail_base_top',
'is_backend' => false,
'goods_id' => $id,
'goods' => &$ret['data'][0],
]));
// 商品页面基础信息面板底部钩子
$this->assign('plugins_view_goods_detail_panel_bottom_data', Hook::listen('plugins_view_goods_detail_panel_bottom',
[
'hook_name' => 'plugins_view_goods_detail_panel_bottom',
'is_backend' => false,
'goods_id' => $id,
'goods' => &$ret['data'][0],
]));
// 商品页面tabs顶部钩子
$this->assign('plugins_view_goods_detail_tabs_top_data', Hook::listen('plugins_view_goods_detail_tabs_top',
[
'hook_name' => 'plugins_view_goods_detail_tabs_top',
'is_backend' => false,
'goods_id' => $id,
'goods' => &$ret['data'][0],
]));
// 商品页面tabs顶部钩子
$this->assign('plugins_view_goods_detail_tabs_bottom_data', Hook::listen('plugins_view_goods_detail_tabs_bottom',
[
'hook_name' => 'plugins_view_goods_detail_tabs_bottom',
'is_backend' => false,
'goods_id' => $id,
'goods' => &$ret['data'][0],
]));
// 商品页面左侧顶部钩子
$this->assign('plugins_view_goods_detail_left_top_data', Hook::listen('plugins_view_goods_detail_left_top',
[
'hook_name' => 'plugins_view_goods_detail_left_top',
'is_backend' => false,
'goods_id' => $id,
'goods' => &$ret['data'][0],
]));
// 商品数据
$this->assign('goods', $ret['data'][0]);
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle($ret['data'][0]['title']));
// 二维码
$this->assign('qrcode_url', MyUrl('index/qrcode/index', ['content'=>urlencode(base64_encode(MyUrl('index/goods/index', ['id'=>$id], true, true)))]));
......@@ -90,7 +140,8 @@ class Goods extends Common
'field' => 'id,title,title_color,price,images',
'n' => 10,
];
$this->assign('left_goods', GoodsService::GoodsList($params));
$right_goods = GoodsService::GoodsList($params);
$this->assign('left_goods', $right_goods['data']);
// 详情tab商品 猜你喜欢
$params = [
......@@ -103,7 +154,8 @@ class Goods extends Common
'field' => 'id,title,title_color,price,images,home_recommended_images',
'n' => 16,
];
$this->assign('detail_like_goods', GoodsService::GoodsList($params));
$like_goods = GoodsService::GoodsList($params);
$this->assign('detail_like_goods', $like_goods['data']);
return $this->fetch();
}
......
......@@ -137,7 +137,7 @@ class Order extends Common
} else {
$this->assign('msg', '没有相关数据');
return $this->fetch('public/tips_error');
}
}
}
/**
......
......@@ -11,6 +11,7 @@
namespace app\index\controller;
use app\service\UserService;
use app\service\NavigationService;
/**
* 个人资料
......@@ -46,7 +47,7 @@ class Personal extends Common
*/
public function Index()
{
$this->assign('personal_show_list', lang('personal_show_list'));
$this->assign('personal_show_list', NavigationService::UsersPersonalShowFieldList());
return $this->fetch();
}
......
文件模式从 100644 更改为 100755
此差异已折叠。
此差异已折叠。
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
此差异已折叠。
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
此差异已折叠。
文件模式从 100644 更改为 100755
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
文件模式从 100644 更改为 100755
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
文件模式从 100644 更改为 100755
此差异已折叠。
文件模式从 100644 更改为 100755
此差异已折叠。
此差异已折叠。
此差异已折叠。
文件模式从 100644 更改为 100755
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
此差异已折叠。
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
此差异已折叠。
文件模式从 100644 更改为 100755
此差异已折叠。
此差异已折叠。
此差异已折叠。
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
此差异已折叠。
文件模式从 100644 更改为 100755
文件模式从 100644 更改为 100755
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册