mirror of
https://gitee.com/zongzhige/shopxo.git
synced 2026-07-04 04:53:00 +08:00
merge 1.4.0
This commit is contained in:
2
README.md
Normal file → Executable file
2
README.md
Normal file → Executable file
@ -51,7 +51,7 @@ ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发
|
||||

|
||||
|
||||
# 后台管理图片展示
|
||||

|
||||

|
||||
|
||||
# 功能简介
|
||||
### 后端功能列表
|
||||
|
||||
@ -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]));
|
||||
|
||||
0
application/admin/controller/Plugins.php
Normal file → Executable file
0
application/admin/controller/Plugins.php
Normal file → Executable file
31
application/admin/controller/Pluginsadmin.php
Normal file → Executable file
31
application/admin/controller/Pluginsadmin.php
Normal file → Executable file
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -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'));
|
||||
|
||||
0
application/admin/controller/Sqlconsole.php
Normal file → Executable file
0
application/admin/controller/Sqlconsole.php
Normal file → Executable file
@ -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">×</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>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<!-- 用户状态 开始 -->
|
||||
<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>
|
||||
|
||||
4
application/admin/view/default/pluginsadmin/first_step.html
Normal file → Executable file
4
application/admin/view/default/pluginsadmin/first_step.html
Normal file → Executable file
@ -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>
|
||||
|
||||
1
application/admin/view/default/pluginsadmin/index.html
Normal file → Executable file
1
application/admin/view/default/pluginsadmin/index.html
Normal file → Executable file
@ -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>
|
||||
|
||||
0
application/admin/view/default/pluginsadmin/nav.html
Normal file → Executable file
0
application/admin/view/default/pluginsadmin/nav.html
Normal file → Executable file
12
application/admin/view/default/pluginsadmin/save_info.html
Normal file → Executable file
12
application/admin/view/default/pluginsadmin/save_info.html
Normal file → Executable file
@ -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>
|
||||
|
||||
2
application/admin/view/default/pluginsadmin/upload.html
Normal file → Executable file
2
application/admin/view/default/pluginsadmin/upload.html
Normal file → Executable file
@ -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>
|
||||
|
||||
0
application/admin/view/default/public/error.html
Normal file → Executable file
0
application/admin/view/default/public/error.html
Normal file → Executable file
@ -1,5 +1,15 @@
|
||||
<!-- 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}}
|
||||
@ -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>
|
||||
<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}}
|
||||
@ -1,4 +1,4 @@
|
||||
<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>
|
||||
@ -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>
|
||||
|
||||
4
application/admin/view/default/sqlconsole/index.html
Normal file → Executable file
4
application/admin/view/default/sqlconsole/index.html
Normal file → Executable file
@ -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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -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'))
|
||||
|
||||
0
application/common/Http.php
Normal file → Executable file
0
application/common/Http.php
Normal file → Executable file
0
application/http/middleware/SystemEnvCheck.php
Normal file → Executable file
0
application/http/middleware/SystemEnvCheck.php
Normal file → Executable file
95
application/index/controller/Answer.php
Executable file
95
application/index/controller/Answer.php
Executable file
@ -0,0 +1,95 @@
|
||||
<?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();
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@ -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]);
|
||||
$ret['data'][0]['favor_count'] = GoodsService::GoodsFavorTotal(['goods_id'=>$id]);
|
||||
|
||||
$this->assign('goods', $goods[0]);
|
||||
$this->assign('home_seo_site_title', $goods[0]['title']);
|
||||
// 商品页面基础信息顶部钩子
|
||||
$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();
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user