后端多语言处理

This commit is contained in:
gongfuxiang 2023-01-29 18:11:08 +08:00
parent 32a699fb53
commit 3c9a8123de
157 changed files with 4459 additions and 1215 deletions

View File

@ -102,7 +102,7 @@ class Admin extends Common
{
if(empty($data))
{
return $this->error('管理员信息不存在', MyUrl('admin/index/index'));
return $this->error(MyLang('admin.admin_no_data_tips'), MyUrl('admin/index/index'));
}
}
@ -210,24 +210,16 @@ class Admin extends Common
];
// 背景图片
$bg_images_list = [];
$host = SystemBaseService::AttachmentHost();
$bg_images_list = [
$host.'/static/admin/default/images/login/1.jpg',
$host.'/static/admin/default/images/login/2.jpg',
$host.'/static/admin/default/images/login/3.jpg',
$host.'/static/admin/default/images/login/4.jpg',
$host.'/static/admin/default/images/login/5.jpg',
$host.'/static/admin/default/images/login/6.jpg',
$host.'/static/admin/default/images/login/7.jpg',
$host.'/static/admin/default/images/login/8.jpg',
$host.'/static/admin/default/images/login/9.jpg',
$host.'/static/admin/default/images/login/10.jpg',
$host.'/static/admin/default/images/login/11.jpg',
$host.'/static/admin/default/images/login/12.jpg',
$host.'/static/admin/default/images/login/13.jpg',
$host.'/static/admin/default/images/login/14.jpg',
$host.'/static/admin/default/images/login/15.jpg',
];
for($i=1; $i<=50; $i++)
{
$path = 'static/admin/default/images/login/'.$i.'.jpg';
if(file_exists(ROOT_PATH.$path))
{
$bg_images_list[] = $host.DS.$path;
}
}
$assign['bg_images_list'] = $bg_images_list;
// 管理员登录页面钩子

View File

@ -37,29 +37,13 @@ class Agreement extends Base
// 模板数据
$assign = [
// 配置信息
'data' => ConfigService::ConfigList(),
'data' => ConfigService::ConfigList(),
// 管理导航
'nav_data' => MyLang('agreement.base_nav_list'),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue('agreement'),
];
// 导航数据
$nav_data = [
[
'name' => '用户注册协议',
'type' => 'register',
],
[
'name' => '用户隐私政策',
'type' => 'privacy',
],
[
'name' => '账号注销协议',
'type' => 'logout',
]
];
$assign['nav_data'] = $nav_data;
// 导航/视图
$nav_type = empty($this->data_request['nav_type']) ? 'register' : $this->data_request['nav_type'];
$assign['nav_type'] = $nav_type;

View File

@ -64,7 +64,6 @@ class AppCenterNav extends Base
// 静态数据
'common_platform_type' => MyLang('common_platform_type'),
'common_app_event_type' => MyLang('common_app_event_type'),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue('app_center_nav'),
];

View File

@ -64,7 +64,6 @@ class AppHomeNav extends Base
// 静态数据
'common_platform_type' => MyLang('common_platform_type'),
'common_app_event_type' => MyLang('common_app_event_type'),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue('app_nav'),
];

View File

@ -104,40 +104,10 @@ class Appmini extends Base
*/
public function Package()
{
$host = MyConfig('shopxo.website_url');
$nav_dev_tips = [
// 微信
'weixin' => [
'msg' => '右上角 -> 详情 -> 不校验合法域名、web-view业务域名、TLS 版本以及 HTTPS 证书(勾选改选项即可进行小程序开发调试)。',
'url' => $host.'weixin.html',
],
// 支付宝
'alipay' => [
'msg' => '右上角 -> 详情 -> 域名信息下 -> 忽略 httpRequest 域名合法性检查(仅限调试时,且支付宝 10.1.35 版本以上)(勾选改选项即可进行小程序开发调试)。',
'url' => $host.'alipay.html',
],
// 百度
'baidu' => [
'msg' => '顶部导航 -> 校验域名(关闭即可)。',
'url' => $host.'baidu.html',
],
// 头条
'toutiao' => [
'msg' => '顶部导航 -> 详情 -> 不校验合法域名、web-view业务域名TLS版本以及HTTPS证书勾选改选项即可进行小程序开发调试。',
'url' => $host.'zijietiaodong.html',
],
// QQ
'qq' => [
'msg' => '顶部导航 -> 详情 -> 不校验合法域名、web-view业务域名TLS版本以及HTTPS证书勾选改选项即可进行小程序开发调试。',
'url' => $host.'qq.html',
],
];
// 源码包列表
$ret = AppMiniService::DownloadDataList($this->params);
return [
'nav_dev_tips' => $nav_dev_tips,
'data_list' => $ret['data'],
'data_list' => $ret['data'],
];
}
@ -154,34 +124,16 @@ class Appmini extends Base
return [
// 操作导航类型
'nav_type' => $this->params['application_name'],
// 操作页面类型
'view_type' => $this->view_type,
// 应用商店
'store_theme_url' => StoreService::StoreThemeUrl(),
// 小程序平台
'common_appmini_type' => MyLang('common_appmini_type'),
// 是否
'common_is_text_list' => MyLang('common_is_text_list'),
// 基础导航
'base_nav' => [
[
'view_type' => 'index',
'name' => '当前主题',
],
[
'view_type' => 'upload',
'name' => '主题安装',
],
[
'view_type' => 'package',
'name' => '源码包下载',
],
],
'base_nav' => MyLang('appmini.base_nav_list'),
];
}
@ -209,12 +161,7 @@ class Appmini extends Base
{
$key = AppMiniService::DefaultThemeKey($this->params);
$params[$key] = empty($this->data_request['theme']) ? 'default' : $this->data_request['theme'];
$ret = ConfigService::ConfigSave($params);
if($ret['code'] == 0)
{
$ret['msg'] = '切换成功';
}
return ApiService::ApiDataReturn($ret);
return ApiService::ApiDataReturn(ConfigService::ConfigSave($params));
}
/**

View File

@ -58,7 +58,7 @@ class Cache extends Base
// 初始化菜单
AdminPowerService::PowerMenuInit($this->admin);
return ApiService::ApiDataReturn(DataReturn('更新成功', 0));
return ApiService::ApiDataReturn(DataReturn(MyLang('update_success'), 0));
}
/**
@ -74,7 +74,7 @@ class Cache extends Base
\base\FileUtil::UnlinkDir(ROOT.'runtime'.DS.'index'.DS.'temp');
\base\FileUtil::UnlinkDir(ROOT.'runtime'.DS.'api'.DS.'temp');
return ApiService::ApiDataReturn(DataReturn('更新成功', 0));
return ApiService::ApiDataReturn(DataReturn(MyLang('update_success'), 0));
}
/**
@ -86,7 +86,7 @@ class Cache extends Base
*/
public function ModuleUpdate()
{
return ApiService::ApiDataReturn(DataReturn('更新成功', 0));
return ApiService::ApiDataReturn(DataReturn(MyLang('update_success'), 0));
}
/**
@ -102,7 +102,7 @@ class Cache extends Base
\base\FileUtil::UnlinkDir(ROOT.'runtime'.DS.'index'.DS.'log');
\base\FileUtil::UnlinkDir(ROOT.'runtime'.DS.'api'.DS.'log');
return ApiService::ApiDataReturn(DataReturn('更新成功', 0));
return ApiService::ApiDataReturn(DataReturn(MyLang('update_success'), 0));
}
}
?>

View File

@ -358,10 +358,10 @@ class Common extends BaseController
$this->theme_color_value = intval(MyCookie($this->theme_color_value_key));
if($this->theme_color_value == 1)
{
$assign['theme_color_name'] = '普通白色';
$assign['theme_color_name'] = MyLang('theme_color_white_title');
$assign['theme_color_url'] = MyUrl('admin/index/color', ['value'=>0]);
} else {
$assign['theme_color_name'] = '夜间深色';
$assign['theme_color_name'] = MyLang('theme_color_black_title');
$assign['theme_color_url'] = MyUrl('admin/index/color', ['value'=>1]);
}
$assign['theme_color_value'] = $this->theme_color_value;
@ -461,11 +461,12 @@ class Common extends BaseController
$unwanted_power = ['getnodeson', 'node'];
if(!AdminIsPower(null, null, $unwanted_power))
{
$msg = MyLang('no_power_tips');
if(IS_AJAX)
{
exit(json_encode(DataReturn('无权限', -1000)));
exit(json_encode(DataReturn($msg, -1000)));
} else {
MyRedirect(MyUrl('admin/error/tips', ['msg'=>urlencode(base64_encode('无权限'))]), true);
MyRedirect(MyUrl('admin/error/tips', ['msg'=>urlencode(base64_encode($msg))]), true);
}
}
}
@ -522,11 +523,12 @@ class Common extends BaseController
*/
public function __call($method, $args)
{
$msg = MyLang('illegal_access_tips').'('.$method.')';
if(IS_AJAX)
{
return DataReturn($method.' 非法访问', -1000);
return DataReturn($msg, -1000);
} else {
MyViewAssign('msg', $method.' 非法访问');
MyViewAssign('msg', $msg);
return MyView('public/tips_error');
}
}

View File

@ -42,10 +42,8 @@ class Config extends Base
'common_login_type_list' => MyLang('common_login_type_list'),
'common_close_open_list' => MyLang('common_close_open_list'),
'common_is_text_list' => MyLang('common_is_text_list'),
// 数据
'data' => ConfigService::ConfigList(),
// 页面类型
'view_type' => 'index',
];
@ -66,7 +64,6 @@ class Config extends Base
$assign = [
// 数据
'data' => ConfigService::ConfigList(),
// 页面类型
'view_type' => 'store',
];

View File

@ -79,35 +79,27 @@ class Design extends Base
// 当前数据
'layout_data' => $layout_data,
'data' => $data,
// 页面列表
'pages_list' => BaseLayout::PagesList(),
// 商品分类
'goods_category_list' => $goods_category,
// 商品搜索分类(分类)
'layout_goods_category' => $goods_category,
'layout_goods_category_field' => 'gci.category_id',
// 品牌
'brand_list' => BrandService::CategoryBrand(),
// 静态数据
'border_style_type_list' => BaseLayout::$border_style_type_list,
'goods_view_list_show_style' => BaseLayout::$goods_view_list_show_style,
'many_images_view_list_show_style' => BaseLayout::$many_images_view_list_show_style,
'images_text_view_list_show_style' => BaseLayout::$images_text_view_list_show_style,
'images_magic_cube_view_list_show_style' => BaseLayout::$images_magic_cube_view_list_show_style,
// 首页商品排序规则
'goods_order_by_type_list' => MyLang('goods_order_by_type_list'),
'goods_order_by_rule_list' => MyLang('goods_order_by_rule_list'),
// 加载布局样式+管理
'is_load_layout' => 1,
'is_load_layout_admin' => 1,
// 编辑器文件存放地址定义
'editor_path_type' => DesignService::AttachmentPathTypeValue($data['id']),
];

View File

@ -35,13 +35,13 @@ class Email extends Base
// 导航
$type = empty($this->data_request['type']) ? 'index' : $this->data_request['type'];
$assign = [
// 静态数据
'common_is_text_list' => MyLang('common_is_text_list'),
// 配置信息
'data' => ConfigService::ConfigList(),
// 页面导航
// 管理导航
'nav_data' => MyLang('email.base_nav_list'),
// 页面导航
'nav_type' => $type,
];
MyViewAssign($assign);
@ -70,23 +70,22 @@ class Email extends Base
public function EmailTest()
{
// 验证码公共基础参数
$verify_param = [
'expire_time' => MyC('common_verify_expire_time'),
'interval_time' => MyC('common_verify_interval_time'),
];
$obj = new \base\Email($verify_param);
$email_param = [
'email' => isset($this->data_request['email']) ? $this->data_request['email'] : '',
'content' => '邮件配置-发送测试内容',
'title' => MyC('home_site_name').' - '.'测试',
];
$verify_params = [
'expire_time' => MyC('common_verify_expire_time'),
'interval_time' => MyC('common_verify_interval_time'),
];
$obj = new \base\Email($verify_params);
$email_params = [
'email' => isset($this->data_request['email']) ? $this->data_request['email'] : '',
'content' => MyLang('email.test_content'),
'title' => MyC('home_site_name').' - '.MyLang('email.test_title'),
];
// 发送
if($obj->SendHtml($email_param))
if($obj->SendHtml($email_params))
{
$ret = DataReturn('发送成功');
$ret = DataReturn(MyLang('send_success'), 0);
} else {
$ret = DataReturn('发送失败'.'['.$obj->error.']', -100);
$ret = DataReturn(MyLang('push_fail').'('.$obj->error.')', -100);
}
return ApiService::ApiDataReturn($ret);
}

View File

@ -34,11 +34,12 @@ class Error extends Common
*/
public function __call($method, $args)
{
$msg = MyLang('controller_not_exist_tips').'('.RequestController().')';
if(IS_AJAX)
{
return ApiService::ApiDataReturn(DataReturn(RequestController().' 控制器不存在', -1000));
return ApiService::ApiDataReturn(DataReturn($msg, -1000));
} else {
MyViewAssign('msg', RequestController().' 控制器不存在');
MyViewAssign('msg', $msg);
return MyView('public/tips_error');
}
}
@ -53,7 +54,7 @@ class Error extends Common
*/
public function Tips()
{
$msg = empty($this->data_request['msg']) ? '异常错误' : urldecode(base64_decode($this->data_request['msg']));
$msg = empty($this->data_request['msg']) ? MyLang('error') : urldecode(base64_decode($this->data_request['msg']));
MyViewAssign('msg', $msg);
return MyView('public/tips_error');
}

View File

@ -33,11 +33,9 @@ class Express extends Base
*/
public function Index()
{
// 模板数据
$assign = [
// 静态数据
'common_is_enable_list' => MyLang('common_is_enable_list'),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue('express'),
];

View File

@ -85,7 +85,7 @@ class Goods extends Base
$data = $this->data_detail;
if(!empty($params['id']) && empty($data))
{
return $this->error('商品信息不存在', MyUrl('admin/goods/index'));
return $this->error(MyLang('no_data'), MyUrl('admin/goods/index'));
}
// 模板信息
@ -102,6 +102,8 @@ class Goods extends Base
'goods_category_list' => GoodsService::GoodsCategoryAll(),
// 品牌
'brand_list' => BrandService::CategoryBrand(),
// 右侧导航
'nav_right_list' => MyLang('goods.nav_right_list'),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue('goods'),
];

View File

@ -37,10 +37,8 @@ class GoodsCategory extends Base
$assign = [
// 静态数据
'common_is_text_list' => MyLang('common_is_text_list'),
// 商品分类
'goods_category_list' => GoodsService::GoodsCategoryAll(),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue('goods_category'),
];

View File

@ -52,10 +52,8 @@ class GoodsParamsTemplate extends Base
$assign = [
// 商品参数类型
'common_goods_parameters_type_list' => MyLang('common_goods_parameters_type_list'),
// 数据
'data' => $this->data_detail,
// 参数配置
'parameters' => empty($this->data_detail['config_data']) ? [] : $this->data_detail['config_data'],
];
@ -83,10 +81,8 @@ class GoodsParamsTemplate extends Base
$assign = [
// 商品参数类型
'common_goods_parameters_type_list' => MyLang('common_goods_parameters_type_list'),
// 参数配置
'parameters' => empty($data['config_data']) ? [] : $data['config_data'],
// 商品分类
'goods_category_list' => GoodsService::GoodsCategoryList(['where'=>[['pid', '=', 0]]]),
];

View File

@ -41,13 +41,10 @@ class Payment extends Base
$assign = [
// 支付插件列表
'data_list' => empty($payment['data']) ? [] : $payment['data'],
// 不能删除的支付方式
'cannot_deleted_list' => PaymentService::$cannot_deleted_list,
// 适用平台
'common_platform_type' => MyLang('common_platform_type'),
// 应用商店
'store_payment_url' => StoreService::StorePaymentUrl(),
];
@ -88,10 +85,8 @@ class Payment extends Base
$assign = [
// 当前数据
'data' => $data,
// 适用平台
'common_platform_type' => MyLang('common_platform_type'),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue('payment'),
];

View File

@ -42,17 +42,17 @@ class Plugins extends Base
[
'checked_type' => 'empty',
'key_name' => 'pluginsname',
'error_msg' => '应用名称有误',
'error_msg' => MyLang('plugins_name_tips'),
],
[
'checked_type' => 'empty',
'key_name' => 'pluginscontrol',
'error_msg' => '应用控制器有误',
'error_msg' => MyLang('plugins_control_tips'),
],
[
'checked_type' => 'empty',
'key_name' => 'pluginsaction',
'error_msg' => '应用操作方法有误',
'error_msg' => MyLang('plugins_action_tips'),
],
];
$ret = ParamsChecked($params['data_request'], $p);
@ -71,7 +71,7 @@ class Plugins extends Base
$power_plugins = MyCache(SystemService::CacheKey('shopxo.cache_admin_power_plugins_key').$this->admin['id']);
if(empty($power_plugins) || !array_key_exists($params['data_request']['pluginsname'], $power_plugins))
{
$msg = '无权限使用该插件';
$msg = MyLang('plugins_use_no_power_tips');
if(IS_AJAX)
{
return ApiService::ApiDataReturn(DataReturn($msg, -5000));
@ -107,7 +107,7 @@ class Plugins extends Base
// 是否未绑定商店账号
if($ret['code'] == -300)
{
MyViewAssign('ext_html', '<p class="am-margin-top-sm"><button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-margin-left-xs am-icon-gg store-accounts-event"> 绑定ShopXO商店账户</button></p><p class="am-text-warning am-margin-top-xl">如已绑定、请到商城后台左侧菜单工具下面清除缓存再尝试访问!</p>');
MyViewAssign('ext_html', '<p class="am-margin-top-sm"><button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-margin-left-xs am-icon-gg store-accounts-event"> '.MyLang('store_bind_account_name').'</button></p><p class="am-text-warning am-margin-top-xl">'.MyLang('store_bind_account_tips').'</p>');
}
// 调用失败

View File

@ -58,7 +58,6 @@ class Pluginsadmin extends Base
$assign = [
// 导航参数
'view_type' => $this->view_type,
// 应用商店地址
'store_url' => StoreService::StoreUrl(),
];

View File

@ -61,11 +61,9 @@ class QuickNav extends Base
$assign = [
// 当前数据
'data' => $this->data_detail,
// 静态数据
'common_platform_type' => MyLang('common_platform_type'),
'common_app_event_type' => MyLang('common_app_event_type'),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue('quick_nav'),
];

View File

@ -32,7 +32,6 @@ class Region extends Base
*/
public function Index()
{
// 是否启用
MyViewAssign('common_is_enable_list', MyLang('common_is_enable_list'));
return MyView();
}

View File

@ -32,7 +32,6 @@ class ScreeningPrice extends Base
*/
public function Index()
{
// 是否启用
MyViewAssign('common_is_enable_list', MyLang('common_is_enable_list'));
return MyView();
}

View File

@ -36,13 +36,10 @@ class Seo extends Base
$assign = [
// url模式
'seo_url_model_list' => MyLang('seo_url_model_list'),
// 文章标题seo方案
'seo_article_browser_list' => MyConst('seo_article_browser_list'),
// 频道标题seo方案
'seo_channel_browser_list' => MyConst('seo_channel_browser_list'),
// 配置信息
'data' => ConfigService::ConfigList(),
];

View File

@ -158,125 +158,39 @@ class Site extends Base
// 主/子导航
'nav_type' => $this->nav_type,
'view_type' => $this->view_type,
// 时区
'site_timezone_list' => MyLang('site_timezone_list'),
// 平台
'common_platform_type' => MyLang('common_platform_type'),
// 关闭开启
'common_close_open_list' => MyLang('common_close_open_list'),
// 登录方式
'common_login_type_list' => MyLang('common_login_type_list'),
// 用户注册类型列表
'common_user_reg_type_list' => MyLang('common_user_reg_type_list'),
// 图片验证码规则
'site_images_verify_rules_list' => MyLang('site_images_verify_rules_list'),
// 热门搜索关键字
'common_search_keywords_type_list' => MyLang('common_search_keywords_type_list'),
// 是否
'common_is_text_list' => MyLang('common_is_text_list'),
// 站点类型
'common_site_type_list' => MyLang('common_site_type_list'),
// 扣除库存规则
'common_deduction_inventory_rules_list' => MyLang('common_deduction_inventory_rules_list'),
// 增加销量规则
'common_sales_count_inc_rules_list' => MyLang('common_sales_count_inc_rules_list'),
// 首页商品排序规则
'goods_order_by_type_list' => MyLang('goods_order_by_type_list'),
'goods_order_by_rule_list' => MyLang('goods_order_by_rule_list'),
// 首页楼层数据类型
'common_site_floor_data_type_list' => MyLang('common_site_floor_data_type_list'),
// 搜索参数类型
'common_goods_parameters_type_list' => MyLang('common_goods_parameters_type_list'),
];
// 主导航
$assign['second_nav_list'] = [
[
'name' => '基础配置',
'type' => 'base',
],
[
'name' => '网站设置',
'type' => 'siteset',
],
[
'name' => '站点类型',
'type' => 'sitetype',
],
[
'name' => '用户注册',
'type' => 'register',
],
[
'name' => '用户登录',
'type' => 'login',
],
[
'name' => '密码找回',
'type' => 'forgetpwd',
],
[
'name' => '验证码',
'type' => 'verify',
],
[
'name' => '订单售后',
'type' => 'orderaftersale',
],
[
'name' => '附件',
'type' => 'attachment',
],
[
'name' => '缓存',
'type' => 'cache',
],
[
'name' => '扩展项',
'type' => 'extends',
],
];
// 网站设置导航
$assign['siteset_nav_list'] = [
[
'name' => '首页',
'type' => 'index',
],
[
'name' => '商品',
'type' => 'goods',
],
[
'name' => '搜索',
'type' => 'search',
],
[
'name' => '订单',
'type' => 'order',
],
[
'name' => '优惠',
'type' => 'discount',
],
[
'name' => '扩展',
'type' => 'extends',
],
// 主导航
'second_nav_list' => MyLang('site.second_nav_list'),
// 网站设置导航
'siteset_nav_list' => MyLang('site.siteset_nav_list'),
];
return $assign;
}

View File

@ -37,7 +37,6 @@ class Sms extends Base
$assign = [
// 配置信息
'data' => ConfigService::ConfigList(),
// 页面导航
'nav_type' => $type,
];

View File

@ -47,7 +47,7 @@ class Sqlconsole extends Base
// 是否开启开发者模式
if(MyConfig('shopxo.is_develop') !== true)
{
$ret = DataReturn('请先开启开发者模式', -1);
$ret = DataReturn(MyLang('not_open_developer_mode_tips'), -1);
} else {
$ret = SqlConsoleService::Implement($this->data_request);
}

View File

@ -56,7 +56,6 @@ class Theme extends Base
$assign = [
// 导航参数
'view_type' => $this->view_type,
// 应用商店
'store_theme_url' => StoreService::StoreThemeUrl(),
];

View File

@ -61,12 +61,9 @@ class User extends Base
// 数据
$data = $this->data_detail;
if(!empty($params['id']))
if(!empty($params['id']) && empty($data))
{
if(empty($data))
{
return $this->error('用户信息不存在', MyUrl('admin/user/index'));
}
return $this->error(MyLang('no_data'), MyUrl('admin/user/index'));
}
// 模板数据

View File

@ -64,7 +64,6 @@ class UserAddress extends Base
$assign = [
// 当前数据
'data' => $data,
// 加载地图api
'is_load_map_api' => MyC('home_user_address_map_status'),
];
@ -97,7 +96,7 @@ class UserAddress extends Base
$params = $this->data_request;
if(empty($params['user_id']))
{
$ret = DataReturn('用户信息有误', -1);
$ret = DataReturn(MyLang('no_data'), -1);
} else {
$params['user'] = ['id'=>$params['user_id']];
$ret = UserAddressService::UserAddressSave($params);

View File

@ -50,8 +50,8 @@ class Admin
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'not_show_key' => 'id',
'not_show_data' => [1],

View File

@ -52,8 +52,8 @@ class Answer
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -50,8 +50,8 @@ class AppCenterNav
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -50,8 +50,8 @@ class AppHomeNav
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -48,8 +48,8 @@ class Appmini
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -46,15 +46,15 @@ class Article
'is_middle' => 0,
'delete_url' => MyUrl('admin/article/delete'),
'delete_key' => 'ids',
'detail_title' => '基础信息',
'detail_title' => MyLang('form_table_base_detail_title'),
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -47,7 +47,7 @@ class Brand
'is_delete' => 1,
'delete_url' => MyUrl('admin/brand/delete'),
'delete_key' => 'ids',
'detail_title' => '基础信息',
'detail_title' => MyLang('form_table_base_detail_title'),
'is_middle' => 0,
],
// 表单配置
@ -55,8 +55,8 @@ class Brand
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -44,15 +44,15 @@ class CustomView
'is_middle' => 0,
'delete_url' => MyUrl('admin/customview/delete'),
'delete_key' => 'ids',
'detail_title' => '基础信息',
'detail_title' => MyLang('form_table_base_detail_title'),
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -50,8 +50,8 @@ class Design
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -50,7 +50,7 @@ class Goods
'is_delete' => 1,
'delete_url' => MyUrl('admin/goods/delete'),
'delete_key' => 'ids',
'detail_title' => '基础信息',
'detail_title' => MyLang('form_table_base_detail_title'),
'is_middle' => 0,
],
// 表单配置
@ -58,8 +58,8 @@ class Goods
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -51,8 +51,8 @@ class GoodsBrowse
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -51,8 +51,8 @@ class GoodsCart
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -53,8 +53,8 @@ class GoodsComments
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -51,8 +51,8 @@ class GoodsFavor
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -64,15 +64,15 @@ class GoodsParamsTemplate
'delete_url' => MyUrl('admin/goodsparamstemplate/delete'),
'delete_key' => 'ids',
'is_middle' => 0,
'detail_title' => '基础信息',
'detail_title' => MyLang('form_table_base_detail_title'),
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -70,8 +70,8 @@ class GoodsSpecTemplate
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -51,8 +51,8 @@ class Link
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -53,8 +53,8 @@ class Message
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -54,8 +54,8 @@ class Navigation
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -46,7 +46,7 @@ class Order
'key_field' => 'id',
'is_search' => 1,
'search_url' => MyUrl('admin/order/index'),
'detail_title' => '基础信息',
'detail_title' => MyLang('form_table_base_detail_title'),
'is_middle' => 0,
],
// 表单配置

View File

@ -49,8 +49,8 @@ class QuickNav
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -44,15 +44,15 @@ class Role
'is_delete' => 1,
'delete_url' => MyUrl('admin/role/delete'),
'delete_key' => 'ids',
'detail_title' => '基础信息',
'detail_title' => MyLang('form_table_base_detail_title'),
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'not_show_data' => [1],
'not_show_key' => 'id',

View File

@ -49,8 +49,8 @@ class Slide
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -50,8 +50,8 @@ class User
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -52,8 +52,8 @@ class UserAddress
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -56,8 +56,8 @@ class Warehouse
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

View File

@ -48,7 +48,7 @@ class WarehouseGoods
'is_delete' => 1,
'delete_url' => MyUrl('admin/warehousegoods/delete'),
'delete_key' => 'ids',
'detail_title' => '基础信息',
'detail_title' => MyLang('form_table_base_detail_title'),
'is_middle' => 0,
],
// 表单配置
@ -56,8 +56,8 @@ class WarehouseGoods
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => '反选',
'not_checked_text' => '全选',
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],

582
app/admin/lang/en-us.php Normal file
View File

@ -0,0 +1,582 @@
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( https://opensource.org/licenses/mit-license.php )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
/**
* 模块语言包-英文
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
return [
// 首页
'index' => [
// 页面公共
'page_common' => [
'order_transaction_amount_name' => 'Trend of order transaction amount',
'order_trading_trend_name' => 'Order trading trend',
'goods_hot_name' => 'Hot Goods',
'goods_hot_tips' => 'Show only the first 30 items',
'payment_name' => 'Payment Method',
'order_region_name' => 'Order geographical distribution',
'order_region_tips' => 'Only 30 pieces of data are displayed',
'upgrade_check_loading_tips' => 'Getting the latest content, please wait...',
'upgrade_version_name' => 'Updated Version',
'upgrade_date_name' => 'Update Date',
],
],
// 订单管理
'order' => [
// 页面公共
'page_common' => [
'order_id_empty' => 'Wrong order ID',
'express_choice_tips' => 'Please select express delivery method',
'payment_choice_tips' => 'Please select payment method',
],
],
// 插件管理
'pluginsadmin' => [
// 页面公共
'page_common' => [
'not_enable_tips' => 'Please click tick to enable',
'save_no_data_tips' => 'No plug-in data to save',
],
],
// 站点设置
'site' => [
// 页面公共
'page_common' => [
'remove_confirm_tips' => 'Save and take effect after removal. Are you sure to continue?',
'address_no_data' => 'Address data is empty',
'address_not_exist' => 'Address does not exist',
'address_logo_message' => 'Please upload the logo image',
],
// 主导航
'second_nav_list' => [
['name' => 'Base Config', 'type' => 'base'],
['name' => 'Site Settings', 'type' => 'siteset'],
['name' => 'Site Type', 'type' => 'sitetype'],
['name' => 'User Register', 'type' => 'register'],
['name' => 'User Login', 'type' => 'login'],
['name' => 'Password Recovery', 'type' => 'forgetpwd'],
['name' => 'Verification Code', 'type' => 'verify'],
['name' => 'Order after-sales', 'type' => 'orderaftersale'],
['name' => 'Annex', 'type' => 'attachment'],
['name' => 'Cache', 'type' => 'cache'],
['name' => 'Extensions', 'type' => 'extends'],
],
// 网站设置导航
'siteset_nav_list' => [
['name' => 'Home', 'type' => 'index'],
['name' => 'Goods', 'type' => 'goods'],
['name' => 'Search', 'type' => 'search'],
['name' => 'Order', 'type' => 'order'],
['name' => 'Discount', 'type' => 'discount'],
['name' => 'Extensions', 'type' => 'extends'],
],
],
// 后台配置信息
'config' => [
'admin_login_title' => 'Background Login',
'admin_login_info_bg_images_list_tips' => [
'1. The background image is located in the [public/static/admin/default/images/login] directory',
'2. Naming rules for background pictures (1~50), such as 1.jpg',
],
'map_type_tips' => 'Due to the different map standards of each company, do not switch maps at will, which will lead to inaccurate map coordinates.',
'view_config_course_name' => 'View the configuration tutorial',
'apply_map_baidu_name' => 'Please apply at Baidu Map Open Platform',
'apply_map_amap_name' => 'Please apply at the open platform of Gaode Map',
'apply_map_tencent_name' => 'Please apply at Tencent Map Open Platform',
'apply_map_tianditu_name' => 'Please apply at Tiantu Open Platform',
'cookie_domain_list_tips' => [
'1. If it is empty by default, it is only valid for the currently accessed domain name',
'2. If you need a secondary domain name to share cookies, fill in the top-level domain name, such as baidu.com',
],
],
// 品牌
'brand' => [
'base_nav_title' => 'Brand',
// 表单
'form_item_name' => 'Name',
'form_item_name_message' => 'The name is 2~30 characters long',
'form_item_brand_category_id' => 'Brand Category',
'form_item_brand_category_id_message' => 'Please select brand category',
'form_item_website_url' => 'Website address',
'form_item_website_url_placeholder' => 'Official website address, starting with http://or https://',
'form_item_website_url_message' => 'Incorrect format of official website address',
'form_item_describe' => 'describe',
'form_item_describe_message' => 'Description can be up to 230 characters',
'form_item_logo' => 'LOGO',
'form_item_logo_tips' => 'Recommended 150*50px',
],
// 品牌分类
'brandcategory' => [
'base_nav_title' => 'BrandCategory',
// 表单
'form_item_name' => 'Name',
'form_item_name_message' => 'The name is 2~16 characters long',
],
// 文章
'article' => [
'base_nav_title' => 'Article',
'detail_content_title' => 'Detail Content',
'detail_images_title' => 'Detail Picture',
// 表单
'form_item_title' => 'Title',
'form_item_title_message' => 'The title is 2~60 characters long',
'form_item_article_category' => 'Article Category',
'form_item_article_category_message' => 'Please select an article category',
'form_item_jump_url_title' => 'Jump url address',
'form_item_jump_url_tips' => 'With http://or https://, only valid on the web side',
'form_item_jump_url_message' => 'The jump url address format is incorrect',
'form_item_is_home_recommended_title' => 'Home page recommendation',
'form_item_content_title' => 'Content',
'form_item_content_placeholder' => 'The content format is between 10 and 105000 characters. For more editing functions, please use the computer to access',
'form_item_content_message' => 'Content format is between 10 and 105000 characters',
],
// 文章分类
'articlecategory' => [
'base_nav_title' => 'ArticleCategory',
// 表单
'form_item_name' => 'Name',
'form_item_name_message' => 'The name is 2~16 characters long',
],
// 自定义页面
'customview' => [
'base_nav_title' => 'Custom Page',
'detail_content_title' => 'Detail Content',
'detail_images_title' => 'Detail Picture',
// 表单
'form_item_title' => 'Title',
'form_item_title_message' => 'The title is 2~60 characters long',
'form_item_is_header' => 'Including head',
'form_item_is_footer' => 'Including tail',
'form_item_is_full_screen' => 'Full screen',
'form_item_content_title' => 'Content',
'form_item_content_placeholder' => 'The content format is between 10 and 105000 characters. For more editing functions, please use the computer to access',
'form_item_content_message' => 'Content format is between 10 and 105000 characters',
],
// 页面设计
'design' => [
'nav_store_design_name' => 'Download more design templates',
'upload_list_tips' => [
'1. Select the downloaded page design zip package',
'2. Import will automatically add a new piece of data',
],
'operate_sync_tips' => 'The data is synchronized to the homepage drag visualization, and the data is not affected after modification, but do not delete the relevant attachments',
// 表单
'form_item_name' => 'Name',
'form_item_name_message' => 'The name is 2~16 characters long',
'form_item_is_header' => 'Including head',
'form_item_is_footer' => 'Including tail',
'form_logo_tips' => 'Recommended size 300 * 300px',
],
// 问答
'answer' => [
'base_nav_title' => 'Q&A',
'user_info_title' => 'User information',
'form_item_name' => 'Contacts',
'form_item_name_message' => 'Contact format can be up to 30 characters',
'form_item_tel' => 'Telephone',
'form_item_tel_message' => 'Please fill in a valid phone number',
'form_item_title' => 'Title',
'form_item_title_message' => 'Header format can be up to 60 characters',
'form_item_access_count' => 'Number of visits',
'form_item_access_count_message' => 'Number of visits in the format of 0~9',
'form_item_content' => 'Content',
'form_item_content_message' => 'Content format is between 5 and 1000 characters',
'form_item_reply' => 'Reply Content',
'form_item_reply_message' => 'Reply content format can be up to 1000 characters',
'form_is_reply' => 'Reply or not',
],
// 仓库商品
'warehousegoods' => [
// 页面公共
'page_common' => [
'warehouse_choice_tips' => 'Please select a warehouse',
],
],
// 管理员
'admin' => [
'admin_no_data_tips' => 'The administrator information does not exist',
// 列表
'top_tips_list' => [
'1. admin The account has all permissions by default and cannot be changed.',
'2. admin The account cannot be changed, but can be modified in the data table( '.MyConfig('database.connections.mysql.prefix').'admin ) field username',
],
'base_nav_title' => 'Admin',
// 登录
'login_type_username_title' => 'Account Password',
'login_type_mobile_title' => 'Mobile Verify Code',
'login_type_email_title' => 'Email Verify Code',
'login_close_tips' => 'Temporarily closed login',
// 忘记密码
'form_forget_password_name' => 'Forgot Password?',
'form_forget_password_tips' => 'Please contact the administrator to reset the password',
// 表单
'form_item_username' => 'Userame',
'form_item_username_placeholder' => 'enter one username',
'form_item_username_message' => 'Please use letters, numbers and underscores for 2~18 characters',
'form_item_password' => 'Login Password',
'form_item_password_placeholder' => 'Please enter the login password',
'form_item_password_message' => 'Password format is between 6 and 18 characters',
'form_item_mobile' => 'Phone Number',
'form_item_mobile_placeholder' => 'Please enter your mobile number',
'form_item_mobile_message' => 'Mobile number format error',
'form_item_email' => 'E-mail',
'form_item_email_placeholder' => 'Please enter email address',
'form_item_email_message' => 'Email format error',
'form_item_username_created_tips' => 'Cannot be changed after creation',
'form_item_username_edit_tips' => 'Not changeable',
'form_item_role' => 'Permission group',
'form_item_role_message' => 'Please select the role group',
'form_item_password_edit_tips' => 'Enter to change the password',
'form_item_status' => 'Status',
'form_item_status_message' => 'Please select user status',
],
// 协议
'agreement' => [
// 基础导航
'base_nav_list' => [
['name' => 'User Register Agreement', 'type' => 'register'],
['name' => 'User Privacy Policy', 'type' => 'privacy'],
['name' => 'Account Cancellation Agreement', 'type' => 'logout']
],
'top_tips' => 'Add parameter is to front-end access protocol address_ Content=1, only protocol content is displayed',
'view_detail_name' => 'View Details',
],
// 小程序管理
'appmini' => [
// 基础导航
'base_nav_list' => [
['view_type' => 'index','name' => 'Current Theme'],
['view_type' => 'upload','name' => 'Theme Install'],
['view_type' => 'package','name' => 'Source Package Download'],
],
'nav_store_theme_name' => 'More topic downloads',
'nav_theme_download_name' => 'View the applet packaging tutorial',
'nav_theme_download_tips' => 'The theme of mobile phone is developed by uniapp (supporting multi-terminal applet+H5), and APP is also in emergency adaptation。',
'form_alipay_extend_title' => 'Customer service configuration',
'form_alipay_extend_tips' => 'PS: If [APP/applet] is enabled (online customer service is enabled), the following configuration must be filled in [Enterprise Code] and [Chat Window Code]',
'list_no_data_tips' => 'No related theme packs',
'list_author_title' => 'Author',
'list_version_title' => 'Applicable version',
'package_generate_tips' => 'The generation time is relatively long, please do not close the browser window!',
],
// 邮箱设置
'email' => [
// 基础导航
'base_nav_list' => [
['name' => 'Mailbox Settings', 'type' => 'index'],
['name' => 'Message Template', 'type' => 'message'],
],
'view_config_course_name' => 'View the configuration tutorial',
'top_tips' => 'Due to some differences between different mailbox platforms and different configurations, the specific configuration of the mailbox platform is subject to the tutorial',
// 基础
'test_title' => 'Test',
'test_content' => 'Mail configuration - send test content',
'base_item_admin_title' => 'Admin',
'base_item_index_title' => 'Home',
// 表单
'form_item_test' => 'Test the email address received',
'form_item_test_tips' => 'Please save the configuration before testing',
'form_item_test_button_title' => 'Test',
],
// 商品
'goods' => [
'base_nav_title' => 'Goods',
'nav_right_list' => [
['name' => 'Basic Info', 'type'=>'base'],
['name' => 'Goods Spec', 'type'=>'operations'],
['name' => 'Goods Params', 'type'=>'parameters'],
['name' => 'Goods Photo', 'type'=>'photo'],
['name' => 'Goods Video', 'type'=>'video'],
['name' => 'Mobile Detail', 'type'=>'app'],
['name' => 'Web Detail', 'type'=>'web'],
['name' => 'Fictitious', 'type'=>'fictitious'],
['name' => 'Extends', 'type'=>'extends'],
['name' => 'SEO Info', 'type'=>'seo'],
],
// 表单
'form_item_title' => 'Goods Title',
'form_item_title_message' => 'Goods name format 2~160 characters',
'form_item_category_id' => 'Goods Category',
'form_item_category_id_message' => 'Please select at least one goods category',
'form_item_simple_desc' => 'Goods description',
'form_item_simple_desc_message' => 'Goods description format can be up to 230 characters',
'form_item_model' => 'Goods model',
'form_item_model_message' => 'Goods model format can be up to 30 characters',
'form_item_brand' => 'Brand',
'form_item_brand_message' => 'Please select a brand',
'form_item_place_origin' => 'Place of production',
'form_item_place_origin_message' => 'Please select the place of production',
'form_item_inventory_unit' => 'Inventory unit',
'form_item_inventory_unit_message' => 'Inventory unit format 1~6 characters',
'form_item_give_integral' => 'Percentage of free points for purchase',
'form_item_give_integral_tips' => [
'1. Distribute according to the proportion of goods amount multiplied by quantity',
'2. When the order is completed, it will be automatically distributed to the user to lock the points',
'3. Site settings ->script processing in extension',
],
'form_item_give_integral_placeholder' => 'Purchase free points',
'form_item_give_integral_message' => 'Purchase a number with a percentage of 0 to 100 points',
'form_item_buy_min_number' => 'Minimum purchase quantity',
'form_item_buy_min_number_message' => 'The minimum purchase quantity ranges from 1 to 100000000',
'form_item_buy_max_number' => 'Maximum quantity of single purchase',
'form_item_buy_max_number_tips' => [
'1. Single maximum value 100000000',
'2. No limit if less than or equal to 0 or empty',
],
'form_item_buy_max_number_message' => 'The maximum number of single purchase ranges from 1 to 100000000',
'form_item_site_type' => 'Goods Type',
'form_item_site_type_tips' => [
'1. The currently configured site type is ( 站点类型 )',
'2. If the goods type is not configured, follow the site type configured by the system',
'3. When the set goods type is not included in the site type set by the system, the function of adding products to the shopping cart will be invalid',
],
'form_item_site_type_message' => 'Please select goods type',
'form_item_images' => 'cover photo',
'form_item_images_tips' => 'If left blank, take the first picture of the album and suggest 800*800px',
'form_item_is_deduction_inventory' => 'Inventory deduction',
'form_item_is_deduction_inventory_tips' => 'The deduction rules are determined according to the background configuration ->deduction inventory rules',
'form_item_is_shelves' => 'Upper and lower shelves',
'form_item_is_shelves_tips' => 'Not visible to users after being removed from the shelf',
'form_item_spec_title' => 'Goods Spec',
'form_item_params_title' => 'Goods Params',
'form_item_photo_title' => 'Goods Photo',
'form_item_video_title' => 'Goods Video',
'form_item_app_title' => 'Mobile Detail',
'form_item_web_title' => 'Web Detail',
'form_item_fictitious_title' => 'Fictitious',
'form_item_extends_title' => 'Extends',
'form_item_extends_popup_title' => 'Spec Extended Data',
// 规格
'form_spec_top_list_tips' => [
'1. Adding specifications in batches can quickly create commodity SKUs, greatly saving SKU editing time. Shortcut operation data does not affect SKU data, and only overwrites SKU when it is generated.',
'2. You can configure the specification template in the background commodity management ->commodity specification, select the commodity specification module to quickly generate the corresponding specification data, and effectively provide efficiency',
'3. After goods are added successfully, add and configure inventory in warehouse management ->warehouse goods',
],
'form_spec_template_tips' => 'Incorrect specification template data',
'form_spec_template_name_exist_tips' => 'The same specification name already exists',
'form_spec_template_placeholder' => 'Goods specification template...',
'form_spec_template_message' => 'Please select a product specification template',
'form_spec_quick_add_title' => 'Batch add specifications',
'form_spec_quick_generate_title' => 'Generate specifications',
'form_spec_type_title' => 'Spec Name',
'form_spec_type_message' => 'Please fill in the specification name',
'form_spec_value_title' => 'Spec Value',
'form_spec_value_message' => 'Please fill in the specification value',
'form_spec_value_add_title' => 'Add Spec Value',
'form_spec_empty_data_tips' => 'Please add specifications first',
'form_spec_advanced_batch_setup_title' => 'Advanced batch settings',
'form_spec_list_content_tips' => 'You can directly click the specification line to drag and sort or click up and down to move',
'form_spec_max_error' => 'Add at most '.MyC('common_spec_add_max_number', 3, true).'Column specifications can be configured in background management [System Settings - Background Configuration]',
'form_spec_empty_fill_tips' => 'Please fill in the specification first',
'form_spec_images_message' => 'Please upload the specification image',
'form_spec_min_tips_message' => 'At least one line of specification value needs to be reserved',
'form_spec_quick_error' => 'The shortcut specification is empty',
'form_spec_quick_tips_msg' => 'Generating specifications will empty existing specification data. Do you want to continue?',
'form_spec_move_type_tips' => 'Incorrect operation type configuration',
'form_spec_move_top_tips' => 'Reached the top',
'form_spec_move_bottom_tips' => 'Reached the bottom',
'form_spec_thead_price_title' => 'Sales price (yuan)',
'form_spec_thead_price_message' => 'Please fill in valid sales amount',
'form_spec_thead_original_price_title' => 'Original price (yuan)',
'form_spec_thead_original_price_message'=> 'Please fill in valid original price',
'form_spec_thead_inventory_title' => 'Inventory',
'form_spec_thead_weight_title' => 'Weight (kg)',
'form_spec_thead_weight_message' => 'Specification and weight 0~100000000',
'form_spec_thead_volume_title' => 'Volume (m ³)',
'form_spec_thead_volume_message' => 'Specification volume 0~100000000',
'form_spec_thead_coding_title' => 'Coding',
'form_spec_thead_coding_message' => 'Specification code can be up to 60 characters',
'form_spec_thead_barcode_title' => 'Barcode',
'form_spec_thead_barcode_message' => 'Barcode can be up to 60 characters',
'form_spec_row_add_title' => 'Add a row',
'form_spec_images_tips' => 'The specification name is consistent with the specification value. The same specification name can be added once, and repeated addition will cover the front. The order will not affect the front display effect.',
'form_spec_images_title' => 'Goods specification picture',
'form_spec_images_add_title' => 'Add specification picture',
'form_spec_images_add_auto_first' => 'No',
'form_spec_images_add_auto_last' => 'Automatic generation of column specifications',
'form_spec_images_type_title' => 'Spec Name',
'form_spec_images_type_message' => 'Please fill in the specification name',
'form_spec_images_images_message' => 'Please upload the specification image',
'form_spec_all_operate_title' => 'Batch operation',
'form_spec_all_operate_placeholder' => 'Batch set value',
// 参数
'form_params_select_title' => 'Goods Params Template',
'form_params_select_placeholder' => 'Goods Params Template...',
'form_params_select_message' => 'Please select a product parameter template',
'form_params_value_placeholder' => 'Paste commodity parameter configuration information',
'form_params_config_copy_title' => 'Copy Config',
'form_params_config_empty_title' => 'Clear Params',
'form_params_list_content_tips' => 'You can directly click the parameter line to drag and sort or click up and down to move',
// 相册
'form_photo_top_tips' => 'You can drag and drop pictures to sort. It is recommended that the size of pictures be consistent with 800 * 800px, with a maximum of 30 pictures',
'form_photo_button_add_name' => 'Upload Photo',
// 视频
'form_video_top_tips' => 'Video has more sense of introduction than pictures and text, and only supports mp4 format',
'form_video_button_add_name' => 'Upload Video',
// 手机详情
'form_app_top_tips' => 'After setting the phone details, the phone details will be displayed in the phone mode, such as [App, APP]',
'form_app_value_title' => 'Text Content',
'form_app_value_message' => 'Text content can be up to 105000 characters',
'form_app_button_add_name' => 'Add Phone Detail',
// 电脑详情
'form_web_content_message' => 'The details of the computer terminal can be up to 105000 characters',
],
// 商品分类
'goodscategory' => [
'base_nav_title' => 'GoodsCategory',
// 表单
'form_item_icon' => 'Icon',
'form_item_icon_tips' => '100 * 100px recommended',
'form_item_big_images' => 'Large Picture',
'form_item_big_images_tips' => '360 * 360px recommended',
'form_item_name' => 'Name',
'form_item_name_message' => 'Name format 2~16 characters',
'form_item_vice_name' => 'Sub Name',
'form_item_vice_name_message' => 'The secondary name can be up to 60 characters',
'form_item_describe' => 'Describe',
'form_item_describe_message' => 'Description can be up to 200 characters',
'form_item_is_home_recommended' => 'HomePage Recommended',
],
// 商品评论
'goodscomments' => [
'base_nav_title' => 'GoodsComments',
// 表单
'form_item_goods_info_title' => 'Goods Info',
'form_item_user_info_title' => 'User Info',
'form_item_business_type' => 'Business Type',
'form_item_business_type_placeholder' => 'Business type...',
'form_item_business_type_message' => 'Please select a business type',
'form_item_rating' => 'Score',
'form_item_rating_placeholder' => 'No score',
'form_item_rating_message' => 'Please select a score',
'form_item_content' => 'Comment Content',
'form_item_content_message' => 'Comment content is between 6 and 230 characters',
'form_item_reply' => 'Reply Content',
'form_item_reply_message' => 'Reply content can be up to 230 characters',
'form_item_reply_time' => 'Reply Time',
'form_item_reply_time_message' => 'Incorrect format of reply time',
'form_item_is_reply' => 'Reply or not',
'form_item_is_anonymous' => 'Anonymous or not',
],
// 商品参数模板
'goodsparamstemplate' => [
'detail_params_title' => 'GoodsParams',
// 表单
'form_item_name' => 'Name',
'form_item_name_message' => 'Name format 2~30 characters',
'form_item_category_id' => 'Goods Category',
'form_item_category_id_tips' => 'Include children',
'form_item_category_id_message' => 'Please select product classification',
'form_item_config_title' => 'Params Config',
'form_item_config_value_placeholder' => 'Paste commodity parameter configuration information',
'form_item_config_template_title' => 'Goods Params template',
'form_item_config_copy_title' => 'Copy Config',
'form_item_config_empty_title' => 'Clear Params',
'form_item_config_list_content_tips' => 'You can directly click the parameter line to drag and sort or click up and down to move',
],
// 商品规格模板
'goodsspectemplate' => [
// 表单
'form_item_name' => 'Name',
'form_item_name_message' => 'Name format 1~30 characters',
'form_item_category_id' => 'Goods Category',
'form_item_category_id_tips' => 'Include children',
'form_item_category_id_message' => 'Please select product classification',
'form_item_content' => 'Spec Value',
'form_item_content_placeholder' => 'Specification value (multiple values can be achieved by entering Enter)',
'form_item_content_message' => 'Specification value format: 1~1000 characters',
],
// 快递
'express' => [
'base_nav_title' => 'Express',
// 表单
'form_item_icon' => 'Icon',
'form_item_name' => 'Name',
'form_item_name_message' => 'Name format 2~16 characters',
'form_item_website_url' => 'Website Address',
'form_item_website_url_placeholder' => 'Official website address, starting with http://or https://',
'form_item_website_url_message' => 'Incorrect format of official website address',
],
// 用户中心导航
'appcenternav' => [
'base_nav_title' => 'Mobile User Center Navigation',
// 表单
'form_item_name' => 'Name',
'form_item_name_message' => 'Name format: 2~60 characters',
'form_item_desc' => 'Describe',
'form_item_desc_message' => 'Description can be up to 18 characters',
'form_item_images_url' => 'Navigation Icon',
],
// 手机首页导航
'apphomenav' => [
'base_nav_title' => 'Home Navigation',
// 表单
'form_item_name' => 'Name',
'form_item_name_message' => 'Name format: 2~60 characters',
'form_item_images_url' => 'Navigation Icon',
'form_item_is_need_login' => 'Whether login is required',
],
// 公共
'common' => [
// 商品参数
'form_goods_params_config_error_tips' => 'Goods parameter configuration information',
'form_goods_params_copy_no_tips' => 'Please paste the configuration information first',
'form_goods_params_copy_error_tips' => 'Configuration format error',
'form_goods_params_type_message' => 'Please select the display type of goods parameters',
'form_goods_params_params_name' => 'Parameter name',
'form_goods_params_params_message' => 'Please fill in the parameter name',
'form_goods_params_value_name' => 'Parameter value',
'form_goods_params_value_message' => 'Please fill in the parameter value',
'form_goods_params_move_type_tips' => 'Incorrect operation type configuration',
'form_goods_params_move_top_tips' => 'Reached the top',
'form_goods_params_move_bottom_tips' => 'Reached the bottom',
'form_goods_params_thead_type_title' => 'Display scope',
'form_goods_params_thead_name_title' => 'Parameter name',
'form_goods_params_thead_value_title' => 'Parameter value',
'form_goods_params_row_add_title' => 'Add a row',
'form_goods_params_list_tips' => [
'1. All (displayed under commodity basic information and detail parameters)',
'2. Details (only displayed under the commodity details parameter)',
'3. Basic (only displayed under commodity basic information)',
'4. The shortcut operation will clear the original data and reload the page to restore the original data (only effective after saving the product)',
],
],
];
?>

View File

@ -10,7 +10,7 @@
// +----------------------------------------------------------------------
/**
* 模块语言包
* 模块语言包-中文
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
@ -62,6 +62,152 @@ return [
'address_not_exist' => '地址不存在',
'address_logo_message' => '请上传logo图片',
],
// 主导航
'second_nav_list' => [
['name' => '基础配置', 'type' => 'base'],
['name' => '网站设置', 'type' => 'siteset'],
['name' => '站点类型', 'type' => 'sitetype'],
['name' => '用户注册', 'type' => 'register'],
['name' => '用户登录', 'type' => 'login'],
['name' => '密码找回', 'type' => 'forgetpwd'],
['name' => '验证码', 'type' => 'verify'],
['name' => '订单售后', 'type' => 'orderaftersale'],
['name' => '附件', 'type' => 'attachment'],
['name' => '缓存', 'type' => 'cache'],
['name' => '扩展项', 'type' => 'extends'],
],
// 网站设置导航
'siteset_nav_list' => [
['name' => '首页', 'type' => 'index'],
['name' => '商品', 'type' => 'goods'],
['name' => '搜索', 'type' => 'search'],
['name' => '订单', 'type' => 'order'],
['name' => '优惠', 'type' => 'discount'],
['name' => '扩展', 'type' => 'extends'],
],
],
// 后台配置信息
'config' => [
'admin_login_title' => '后台登录',
'admin_login_info_bg_images_list_tips' => [
'1. 背景图片位于[ public/static/admin/default/images/login ]目录下',
'2. 背景图片命名规则(1~50)、如 1.jpg',
],
'map_type_tips' => '由于每一家的地图标准不一样、请勿随意切换地图、会导致地图坐标标注不准确的情况。',
'view_config_course_name' => '查看配置教程',
'apply_map_baidu_name' => '请到百度地图开放平台申请',
'apply_map_amap_name' => '请到高德地图开放平台申请',
'apply_map_tencent_name' => '请到腾讯地图开放平台申请',
'apply_map_tianditu_name' => '请到天地图开放平台申请',
'cookie_domain_list_tips' => [
'1. 默认空、则仅对当前访问域名有效',
'2. 如需要二级域名也共享cookie则填写顶级域名、如baidu.com',
],
],
// 品牌
'brand' => [
'base_nav_title' => '品牌',
// 表单
'form_item_name' => '名称',
'form_item_name_message' => '名称长度2~30个字符',
'form_item_brand_category_id' => '品牌分类',
'form_item_brand_category_id_message' => '请选择品牌分类',
'form_item_website_url' => '官网地址',
'form_item_website_url_placeholder' => '官网地址、以http://或https://开头',
'form_item_website_url_message' => '官网地址格式有误',
'form_item_describe' => '描述',
'form_item_describe_message' => '描述最多230个字符',
'form_item_logo' => 'LOGO',
'form_item_logo_tips' => '建议150*50px',
],
// 品牌分类
'brandcategory' => [
'base_nav_title' => '品牌分类',
// 表单
'form_item_name' => '名称',
'form_item_name_message' => '名称长度2~16个字符',
],
// 文章
'article' => [
'base_nav_title' => '文章',
'detail_content_title' => '详情内容',
'detail_images_title' => '详情图片',
// 表单
'form_item_title' => '标题',
'form_item_title_message' => '标题长度2~60个字符',
'form_item_article_category' => '文章分类',
'form_item_article_category_message' => '请选择文章分类',
'form_item_jump_url_title' => '跳转url地址',
'form_item_jump_url_tips' => '带http://或https://仅web端有效',
'form_item_jump_url_message' => '跳转url地址格式有误',
'form_item_is_home_recommended_title' => '首页推荐',
'form_item_content_title' => '内容',
'form_item_content_placeholder' => '内容格式10~105000个字符之间更多编辑功能请使用电脑访问',
'form_item_content_message' => '内容格式10~105000个字符之间',
],
// 文章分类
'articlecategory' => [
'base_nav_title' => '文章分类',
// 表单
'form_item_name' => '名称',
'form_item_name_message' => '名称长度2~16个字符',
],
// 自定义页面
'customview' => [
'base_nav_title' => '自定义页面',
'detail_content_title' => '详情内容',
'detail_images_title' => '详情图片',
// 表单
'form_item_title' => '名称',
'form_item_title_message' => '名称长度2~60个字符',
'form_item_is_header' => '是否含头部',
'form_item_is_footer' => '是否含尾部',
'form_item_is_full_screen' => '是否满屏',
'form_item_content_title' => '内容',
'form_item_content_placeholder' => '内容格式10~105000个字符之间更多编辑功能请使用电脑访问',
'form_item_content_message' => '内容格式10~105000个字符之间',
],
// 页面设计
'design' => [
'nav_store_design_name' => '更多设计模板下载',
'upload_list_tips' => [
'1. 选择已下载的页面设计zip包',
'2. 导入将自动新增一条数据',
],
'operate_sync_tips' => '数据同步到首页拖拽可视化中、之后再修改数据不受影响、但是不要删除相关附件',
// 表单
'form_item_name' => '名称',
'form_item_name_message' => '名称长度2~16个字符',
'form_item_is_header' => '是否含头部',
'form_item_is_footer' => '是否含尾部',
'form_item_is_full_screen' => '是否满屏',
'form_logo_tips' => '建议大小300*300px',
],
// 问答
'answer' => [
'base_nav_title' => '问答',
'user_info_title' => '用户信息',
'form_item_name' => '联系人',
'form_item_name_message' => '联系人格式最多30个字符',
'form_item_tel' => '电话',
'form_item_tel_message' => '请填写有效的电话',
'form_item_title' => '标题',
'form_item_title_message' => '标题格式最多60个字符',
'form_item_access_count' => '访问次数',
'form_item_access_count_message' => '访问次数格式0~9的数值',
'form_item_content' => '内容',
'form_item_content_message' => '内容格式5~1000个字符之间',
'form_item_reply' => '回复内容',
'form_item_reply_message' => '回复内容格式最多1000个字符',
'form_is_reply' => '是否已回复',
],
// 仓库商品
@ -71,5 +217,367 @@ return [
'warehouse_choice_tips' => '请选择仓库',
],
],
// 管理员
'admin' => [
'admin_no_data_tips' => '管理员信息不存在',
// 列表
'top_tips_list' => [
'1. admin 账户默认拥有所有权限,不可更改。',
'2. admin 账户不可更改,但是可以在数据表中修改( '.MyConfig('database.connections.mysql.prefix').'admin ) 字段 username',
],
'base_nav_title' => '管理员',
// 登录
'login_type_username_title' => '账号密码',
'login_type_mobile_title' => '手机验证码',
'login_type_email_title' => '邮箱验证码',
'login_close_tips' => '暂时关闭了登录',
// 忘记密码
'form_forget_password_name' => '忘记密码?',
'form_forget_password_tips' => '请联系管理员重置密码',
// 表单
'form_item_username' => '用户名',
'form_item_username_placeholder' => '请输入用户名',
'form_item_username_message' => '请使用字母、数字、下划线2~18个字符',
'form_item_password' => '登录密码',
'form_item_password_placeholder' => '请输入登录密码',
'form_item_password_message' => '密码格式6~18个字符之间',
'form_item_mobile' => '手机号码',
'form_item_mobile_placeholder' => '请输入手机号码',
'form_item_mobile_message' => '手机号码格式错误',
'form_item_email' => '电子邮箱',
'form_item_email_placeholder' => '请输入电子邮箱',
'form_item_email_message' => '电子邮箱格式错误',
'form_item_username_created_tips' => '创建后不可更改',
'form_item_username_edit_tips' => '不可更改',
'form_item_role' => '权限组',
'form_item_role_message' => '请选择所属角色组',
'form_item_password_edit_tips' => '输入则修改密码',
'form_item_status' => '状态',
'form_item_status_message' => '请选择用户状态',
],
// 协议
'agreement' => [
// 基础导航
'base_nav_list' => [
['name' => '用户注册协议', 'type' => 'register'],
['name' => '用户隐私政策', 'type' => 'privacy'],
['name' => '账号注销协议', 'type' => 'logout']
],
'top_tips' => '前端访问协议地址增加参数 is_content=1 则仅展示纯协议内容',
'view_detail_name' => '查看详情',
],
// 小程序管理
'appmini' => [
// 基础导航
'base_nav_list' => [
['view_type' => 'index','name' => '当前主题'],
['view_type' => 'upload','name' => '主题安装'],
['view_type' => 'package','name' => '源码包下载'],
],
'nav_store_theme_name' => '更多主题下载',
'nav_theme_download_name' => '查看小程序打包教程',
'nav_theme_download_tips' => '手机端主题采用uniapp开发支持多端小程序+H5APP也在紧急适配中。',
'form_alipay_extend_title' => '客服配置',
'form_alipay_extend_tips' => 'PS如【APP/小程序】中开启(开启在线客服),则以下配置必填 [企业编码] 和 [聊天窗编码]',
'list_no_data_tips' => '没有相关主题包',
'list_author_title' => '作者:',
'list_version_title' => '适用版本:',
'package_generate_tips' => '生成时间比较长,请不要关闭浏览器窗口!',
],
// 邮箱设置
'email' => [
// 基础导航
'base_nav_list' => [
['name' => '邮箱设置', 'type' => 'index'],
['name' => '消息模板', 'type' => 'message'],
],
'view_config_course_name' => '查看配置教程',
'top_tips' => '由于不同邮箱平台存在一些差异、配置也有所不同、具体以邮箱平台配置教程为准',
// 基础
'test_title' => '测试',
'test_content' => '邮件配置-发送测试内容',
'base_item_admin_title' => '后台',
'base_item_index_title' => '前端',
// 表单
'form_item_test' => '测试接收的邮件地址',
'form_item_test_tips' => '请先保存配置后,再进行测试',
'form_item_test_button_title' => '测试',
],
// 商品
'goods' => [
'base_nav_title' => '商品',
'nav_right_list' => [
['name' => '基础信息', 'type'=>'base'],
['name' => '商品规格', 'type'=>'operations'],
['name' => '商品参数', 'type'=>'parameters'],
['name' => '商品相册', 'type'=>'photo'],
['name' => '商品视频', 'type'=>'video'],
['name' => '手机详情', 'type'=>'app'],
['name' => '电脑详情', 'type'=>'web'],
['name' => '虚拟信息', 'type'=>'fictitious'],
['name' => '扩展数据', 'type'=>'extends'],
['name' => 'SEO信息', 'type'=>'seo'],
],
// 表单
'form_item_title' => '商品名称',
'form_item_title_message' => '商品名称格式2~160个字符',
'form_item_category_id' => '商品分类',
'form_item_category_id_message' => '请至少选择一个商品分类',
'form_item_simple_desc' => '商品简述',
'form_item_simple_desc_message' => '商品简述格式最多230个字符',
'form_item_model' => '商品型号',
'form_item_model_message' => '商品型号格式最多30个字符',
'form_item_brand' => '品牌',
'form_item_brand_message' => '请选择品牌',
'form_item_place_origin' => '生产地',
'form_item_place_origin_message' => '请选择生产地',
'form_item_inventory_unit' => '库存单位',
'form_item_inventory_unit_message' => '库存单位格式1~6个字符',
'form_item_give_integral' => '购买赠送积分比例',
'form_item_give_integral_tips' => [
'1. 按照商品金额比例乘以数量的比例进行发放',
'2. 订单完成自动将发放到用户锁定积分',
'3. 站点设置->扩展中脚本处理发放积分',
],
'form_item_give_integral_placeholder' => '购买赠送积分',
'form_item_give_integral_message' => '购买赠送积分比例0~100的数字',
'form_item_buy_min_number' => '最低起购数量',
'form_item_buy_min_number_message' => '最低起购数量1~100000000范围',
'form_item_buy_max_number' => '单次最大购买数量',
'form_item_buy_max_number_tips' => [
'1. 单次最大数值100000000',
'2. 小于等于0或空则不限',
],
'form_item_buy_max_number_message' => '单次最大购买数量 1~100000000范围',
'form_item_site_type' => '商品类型',
'form_item_site_type_tips' => [
'1. 当前系统配置的站点类型为( 站点类型 )',
'2. 如果商品类型未配置则跟随系统配置的站点类型',
'3. 当设置的商品类型不在系统设置的站点类型包含的时候,商品加入购物车功能将失效',
],
'form_item_site_type_message' => '请选择商品类型',
'form_item_images' => '封面图片',
'form_item_images_tips' => '留空则取相册第一张图、建议800*800px',
'form_item_is_deduction_inventory' => '扣减库存',
'form_item_is_deduction_inventory_tips' => '扣除规则根据后台配置->扣除库存规则而定',
'form_item_is_shelves' => '上下架',
'form_item_is_shelves_tips' => '下架后用户不可见',
'form_item_spec_title' => '商品规格',
'form_item_params_title' => '商品参数',
'form_item_photo_title' => '商品相册',
'form_item_video_title' => '商品视频',
'form_item_app_title' => '手机详情',
'form_item_web_title' => '电脑详情',
'form_item_fictitious_title' => '虚拟信息',
'form_item_extends_title' => '扩展数据',
'form_item_extends_popup_title' => '规格扩展数据',
// 规格
'form_spec_top_list_tips' => [
'1. 批量添加规格可以快速创建商品SKU大量节省SKU编辑时间快捷操作数据不影响SKU数据仅生成的时候重新覆盖SKU。',
'2. 可以后台 商品管理->商品规格 中配置规格模板、选择商品规格模块快速生成对应规格数据、有效的提供效率',
'3. 商品添加成功后,仓库管理->仓库商品中添加并配置库存',
],
'form_spec_template_tips' => '规格模板数据有误',
'form_spec_template_name_exist_tips' => '相同规格名称已经存在',
'form_spec_template_placeholder' => '商品规格模板...',
'form_spec_template_message' => '请选择商品规格模板',
'form_spec_quick_add_title' => '批量添加规格',
'form_spec_quick_generate_title' => '生成规格',
'form_spec_type_title' => '规格名',
'form_spec_type_message' => '请填写规格名',
'form_spec_value_title' => '规格值',
'form_spec_value_message' => '请填写规格值',
'form_spec_value_add_title' => '添加规格值',
'form_spec_empty_data_tips' => '请先添加规格',
'form_spec_advanced_batch_setup_title' => '高级批量设置',
'form_spec_list_content_tips' => '可直接点中规格行拖拽排序或点击上下移动',
'form_spec_max_error' => '最多添加'.MyC('common_spec_add_max_number', 3, true).'列规格,可在后台管理[系统设置-后台配置]中配置',
'form_spec_empty_fill_tips' => '请先填写规格',
'form_spec_images_message' => '请上传规格图片',
'form_spec_min_tips_message' => '至少需要保留一行规格值',
'form_spec_quick_error' => '快捷操作规格为空',
'form_spec_quick_tips_msg' => '生成规格将清空现有规格数据、是否继续?',
'form_spec_move_type_tips' => '操作类型配置有误',
'form_spec_move_top_tips' => '已到最顶部',
'form_spec_move_bottom_tips' => '已到最底部',
'form_spec_thead_price_title' => '售价(元)',
'form_spec_thead_price_message' => '请填写有效的销售金额',
'form_spec_thead_original_price_title' => '原价(元)',
'form_spec_thead_original_price_message'=> '请填写有效的原价',
'form_spec_thead_inventory_title' => '库存',
'form_spec_thead_weight_title' => '重量(kg)',
'form_spec_thead_weight_message' => '规格重量0~100000000',
'form_spec_thead_volume_title' => '体积(m³)',
'form_spec_thead_volume_message' => '规格体积0~100000000',
'form_spec_thead_coding_title' => '编码',
'form_spec_thead_coding_message' => '规格编码最多60个字符',
'form_spec_thead_barcode_title' => '条形码',
'form_spec_thead_barcode_message' => '条形码最多60个字符',
'form_spec_row_add_title' => '添加一行',
'form_spec_images_tips' => '规格名称与规格值保持一致,相同规格名称添加一次即可,重复添加则后面覆盖前面,顺序不影响前端展示效果。',
'form_spec_images_title' => '商品规格图片',
'form_spec_images_add_title' => '添加规格图片',
'form_spec_images_add_auto_first' => '第',
'form_spec_images_add_auto_last' => '列规格自动生成',
'form_spec_images_type_title' => '规格名称',
'form_spec_images_type_message' => '请填写规格名称',
'form_spec_images_images_message' => '请上传规格图片',
'form_spec_all_operate_title' => '批量操作',
'form_spec_all_operate_placeholder' => '批量设置的值',
// 参数
'form_params_select_title' => '商品参数模板',
'form_params_select_placeholder' => '商品参数模板...',
'form_params_select_message' => '请选择商品参数模板',
'form_params_value_placeholder' => '粘贴商品参数配置信息',
'form_params_config_copy_title' => '复制配置',
'form_params_config_empty_title' => '清空参数',
'form_params_list_content_tips' => '可直接点中参数行拖拽排序或点击上下移动',
// 相册
'form_photo_top_tips' => '可拖拽图片进行排序建议图片尺寸一致800*800px、最多30张',
'form_photo_button_add_name' => '上传相册',
// 视频
'form_video_top_tips' => '视频比图文更有具带入感,仅支持 mp4 格式',
'form_video_button_add_name' => '上传视频',
// 手机详情
'form_app_top_tips' => '设置手机详情后、在手机模式下将展示手机详情、比如[小程序、APP]',
'form_app_value_title' => '文本内容',
'form_app_value_message' => '文本内容最多105000个字符',
'form_app_button_add_name' => '添加手机详情',
// 电脑详情
'form_web_content_message' => '电脑端详情内容最多105000个字符',
],
// 商品分类
'goodscategory' => [
'base_nav_title' => '商品分类',
// 表单
'form_item_icon' => 'icon图标',
'form_item_icon_tips' => '建议100*100px',
'form_item_big_images' => '大图片',
'form_item_big_images_tips' => '建议360*360px',
'form_item_name' => '名称',
'form_item_name_message' => '名称格式2~16个字符',
'form_item_vice_name' => '副名称',
'form_item_vice_name_message' => '副名称最多60个字符',
'form_item_describe' => '描述',
'form_item_describe_message' => '描述最多200个字符',
'form_item_is_home_recommended' => '首页推荐',
],
// 商品评论
'goodscomments' => [
'base_nav_title' => '商品评论',
// 表单
'form_item_goods_info_title' => '商品信息',
'form_item_user_info_title' => '用户信息',
'form_item_business_type' => '业务类型',
'form_item_business_type_placeholder' => '业务类型...',
'form_item_business_type_message' => '请选择业务类型',
'form_item_rating' => '评分',
'form_item_rating_placeholder' => '未评分',
'form_item_rating_message' => '请选择评分',
'form_item_content' => '评论内容',
'form_item_content_message' => '评论内容6~230个字符之间',
'form_item_reply' => '回复内容',
'form_item_reply_message' => '回复内容最多230个字符',
'form_item_reply_time' => '回复时间',
'form_item_reply_time_message' => '回复时间格式有误',
'form_item_is_reply' => '是否已回复',
'form_item_is_anonymous' => '是否匿名',
],
// 商品参数模板
'goodsparamstemplate' => [
'detail_params_title' => '商品参数',
// 表单
'form_item_name' => '名称',
'form_item_name_message' => '名称格式2~30个字符',
'form_item_category_id' => '商品分类',
'form_item_category_id_tips' => '包含子级',
'form_item_category_id_message' => '请选择商品分类',
'form_item_config_title' => '参数配置',
'form_item_config_value_placeholder' => '粘贴商品参数配置信息',
'form_item_config_template_title' => '商品参数模板',
'form_item_config_copy_title' => '复制配置',
'form_item_config_empty_title' => '复制配置',
'form_item_config_list_content_tips' => '可直接点中参数行拖拽排序或点击上下移动',
],
// 商品规格模板
'goodsspectemplate' => [
// 表单
'form_item_name' => '规格名称',
'form_item_name_message' => '规格名称格式1~30个字符',
'form_item_category_id' => '商品分类',
'form_item_category_id_tips' => '包含子级',
'form_item_category_id_message' => '请选择商品分类',
'form_item_content' => '规格值',
'form_item_content_placeholder' => '规格值(输入回车可实现多个)',
'form_item_content_message' => '规格值格式1~1000个字符',
],
// 快递
'express' => [
'base_nav_title' => '快递',
// 表单
'form_item_icon' => 'icon图标',
'form_item_name' => '名称',
'form_item_name_message' => '名称格式2~16个字符',
'form_item_website_url' => '官网地址',
'form_item_website_url_placeholder' => '官网地址、以http://或https://开头',
'form_item_website_url_message' => '官网地址格式有误',
],
// 用户中心导航
'appcenternav' => [
'base_nav_title' => '手机用户中心导航',
// 表单
'form_item_name' => '名称',
'form_item_name_message' => '名称格式2~60个字符',
'form_item_desc' => '描述',
'form_item_desc_message' => '描述最多18个字符',
'form_item_images_url' => '导航图标',
],
// 手机首页导航
'apphomenav' => [
'base_nav_title' => '手机首页导航',
// 表单
'form_item_name' => '名称',
'form_item_name_message' => '名称格式2~60个字符',
'form_item_images_url' => '导航图标',
'form_item_is_need_login' => '是否需要登录',
],
// 公共
'common' => [
// 商品参数
'form_goods_params_config_error_tips' => '商品参数配置信息',
'form_goods_params_copy_no_tips' => '请先粘贴配置信息',
'form_goods_params_copy_error_tips' => '配置格式错误',
'form_goods_params_type_message' => '请选择商品参数展示类型',
'form_goods_params_params_name' => '参数名称',
'form_goods_params_params_message' => '请填写参数名称',
'form_goods_params_value_name' => '参数值',
'form_goods_params_value_message' => '请填写参数值',
'form_goods_params_move_type_tips' => '操作类型配置有误',
'form_goods_params_move_top_tips' => '已到最顶部',
'form_goods_params_move_bottom_tips' => '已到最底部',
'form_goods_params_thead_type_title' => '展示范围',
'form_goods_params_thead_name_title' => '参数名称',
'form_goods_params_thead_value_title' => '参数值',
'form_goods_params_row_add_title' => '添加一行',
'form_goods_params_list_tips' => [
'1. 全部(在商品基础信息和详情参数下都展示)',
'2. 详情(仅在商品详情参数下都展示)',
'3. 基础(仅在商品基础信息下都展示)',
'4. 快捷操作将会清除原来的数据、重载页面便可恢复原来的数据(仅保存商品后生效)',
],
],
];
?>

View File

@ -3,17 +3,15 @@
<!-- 公共导航容器 -->
{{block name="form_navigation"}}
{{if isset($admin) and isset($admin['id']) and $admin['id'] eq 1}}
{{if isset($admin) and isset($admin['id']) and $admin['id'] eq 1 and is_array(MyLang('admin.top_tips_list'))}}
<!-- 仅超级管理员显示的温馨提示 -->
<div class="am-alert am-alert-danger" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>1. admin 账户默认拥有所有权限,不可更改。</p>
<p>2. admin 账户不可更改,但是可以在数据表中修改[ {{:MyConfig('database.connections.mysql.prefix')}}admin ] 字段 username</p>
<p>{{:implode('</p><p>', MyLang('admin.top_tips_list'))}}</p>
</div>
{{/if}}
{{/block}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/admin/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> {{:MyLang('add_title')}}</a>

View File

@ -12,13 +12,13 @@
{{if count($admin_login_type) gt 1}}
<ul class="am-tabs-nav am-cf">
{{if in_array('username', $admin_login_type)}}
<li class="am-active"><a href="[data-tab-panel-0]">帐号密码</a></li>
{{/if}}
{{if in_array('email', $admin_login_type)}}
<li class="{{if !in_array('username', $admin_login_type)}}am-active{{/if}}"><a href="[data-tab-panel-2]">邮箱验证码</a></li>
<li class="am-active"><a href="[data-tab-panel-0]">{{:MyLang('admin.login_type_username_title')}}</a></li>
{{/if}}
{{if in_array('sms', $admin_login_type)}}
<li class="{{if !in_array('username', $admin_login_type) and !in_array('email', $admin_login_type)}}am-active{{/if}}"><a href="[data-tab-panel-1]">手机验证码</a></li>
<li class="{{if !in_array('username', $admin_login_type) and !in_array('email', $admin_login_type)}}am-active{{/if}}"><a href="[data-tab-panel-1]">{{:MyLang('admin.login_type_mobile_title')}}</a></li>
{{/if}}
{{if in_array('email', $admin_login_type)}}
<li class="{{if !in_array('username', $admin_login_type)}}am-active{{/if}}"><a href="[data-tab-panel-2]">{{:MyLang('admin.login_type_email_title')}}</a></li>
{{/if}}
</ul>
{{/if}}
@ -28,14 +28,14 @@
<!-- form start -->
<form class="am-form form-validation-username" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<label>用户名</label>
<input type="text" name="accounts" class="am-radius" placeholder="请输入用户名" pattern="{{:MyConst('common_regex_username')}}" data-validation-message="用户名格式 5~18 个字符(可以是字母数字下划线)" autocomplete="off" required />
<label>{{:MyLang('admin.form_item_username')}}</label>
<input type="text" name="accounts" class="am-radius" placeholder="{{:MyLang('admin.form_item_username_placeholder')}}" pattern="{{:MyConst('common_regex_username')}}" data-validation-message="{{:MyLang('admin.form_item_username_message')}}" autocomplete="off" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>登录密码</label>
<label>{{:MyLang('admin.form_item_password')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="password" name="pwd" class="am-radius" placeholder="请输入登录密码" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符" autocomplete="off" required />
<input type="password" name="pwd" class="am-radius" placeholder="{{:MyLang('admin.form_item_password_placeholder')}}" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="{{:MyLang('admin.form_item_password_message')}}" autocomplete="off" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius am-icon-eye eye-submit" type="button"></button>
</span>
@ -46,7 +46,7 @@
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>{{:MyLang('form_verify_title')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="text" name="verify" class="am-radius" placeholder="请输入验证码" minlength="4" maxlength="4" data-validation-message="{{:MyLang('form_images_verify_message')}}" autocomplete="off" required />
<input type="text" name="verify" class="am-radius" placeholder="{{:MyLang('form_verify_placeholder')}}" minlength="4" maxlength="4" data-validation-message="{{:MyLang('form_images_verify_message')}}" autocomplete="off" required />
<span class="am-input-group-btn">
<span class="am-btn am-btn-default am-radius am-padding-0 form-verify">
<img src="{{:MyUrl('admin/admin/adminverifyentry')}}" class="am-radius c-p" id="form-verify-img" onClick="this.src=this.src+'&'+Math.random();" />
@ -58,7 +58,33 @@
{{/if}}
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="username" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">{{:MyLang('login_title')}}</button>
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '{{:MyLang('processing_tips')}}'}'}">{{:MyLang('login_title')}}</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
{{if in_array('sms', $admin_login_type)}}
<div data-tab-panel-1 class="am-tab-panel {{if !in_array('username', $admin_login_type) and !in_array('email', $admin_login_type)}}am-active{{/if}}">
<!-- form start -->
<form class="am-form form-validation-sms" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<label>{{:MyLang('admin.form_item_mobile')}}</label>
<input type="text" name="accounts" class="am-radius" placeholder="{{:MyLang('admin.form_item_mobile_placeholder')}}" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="{{:MyLang('admin.form_item_mobile_message')}}" autocomplete="off" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>{{:MyLang('form_verify_title')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="number" name="verify" class="am-radius" placeholder="{{:MyLang('form_verify_placeholder')}}" min="0" minlength="4" maxlength="4" data-validation-message="{{:MyLang('form_verify_message')}}" autocomplete="off" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:MyLang('send_tips')}}'}" data-url="{{:MyUrl('admin/admin/loginverifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="{{:MyLang('form_verify_button_text')}}" data-send-text="{{:MyLang('form_verify_send_text')}}" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation-sms">{{:MyLang('form_verify_button_text')}}</button>
</span>
</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="sms" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '{{:MyLang('processing_tips')}}'}'}">{{:MyLang('login_title')}}</button>
</div>
</form>
<!-- form end -->
@ -69,8 +95,8 @@
<!-- form start -->
<form class="am-form form-validation-email" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<label>电子邮箱</label>
<input type="email" name="accounts" class="am-radius" placeholder="请输入电子邮箱" data-validation-message="电子邮箱格式错误" autocomplete="off" required />
<label>{{:MyLang('admin.form_item_email')}}</label>
<input type="email" name="accounts" class="am-radius" placeholder="{{:MyLang('admin.form_item_email_placeholder')}}" data-validation-message="{{:MyLang('admin.form_item_email_message')}}" autocomplete="off" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
@ -84,33 +110,7 @@
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="email" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">{{:MyLang('login_title')}}</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
{{if in_array('sms', $admin_login_type)}}
<div data-tab-panel-1 class="am-tab-panel {{if !in_array('username', $admin_login_type) and !in_array('email', $admin_login_type)}}am-active{{/if}}">
<!-- form start -->
<form class="am-form form-validation-sms" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<label>手机号码</label>
<input type="text" name="accounts" class="am-radius" placeholder="请输入手机号码" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="手机号码格式错误" autocomplete="off" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>{{:MyLang('form_verify_title')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="number" name="verify" class="am-radius" placeholder="请输入验证码" min="0" minlength="4" maxlength="4" data-validation-message="{{:MyLang('form_verify_message')}}" autocomplete="off" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius btn-loading-example verify-submit" type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:MyLang('send_tips')}}'}" data-url="{{:MyUrl('admin/admin/loginverifysend')}}" data-verify="{{:MyC('common_img_verify_state')}}" data-text="{{:MyLang('form_verify_button_text')}}" data-send-text="{{:MyLang('form_verify_send_text')}}" data-time="{{:MyC('common_verify_interval_time', 30, true)}}" data-form-tag="form.form-validation-sms">{{:MyLang('form_verify_button_text')}}</button>
</span>
</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="sms" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '登录中...'}">{{:MyLang('login_title')}}</button>
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '{{:MyLang('processing_tips')}}'}'}">{{:MyLang('login_title')}}</button>
</div>
</form>
<!-- form end -->
@ -118,12 +118,15 @@
{{/if}}
<div class="am-padding-horizontal am-nbfc">
<a href="https://doc.shopxo.net/article/1/265389860360028160.html" target="_blank" class="text-muted" data-am-popover="{theme: 'danger sm', content: '请联系管理员重置密码', trigger: 'hover focus'}">忘记密码?</a>
<a href="https://doc.shopxo.net/article/1/265389860360028160.html" target="_blank" class="text-muted" data-am-popover="{theme: 'danger sm', content: '{{:MyLang('admin.form_forget_password_tips')}}', trigger: 'hover focus'}">{{:MyLang('admin.form_forget_password_name')}}</a>
</div>
</div>
</div>
{{else /}}
<div class="am-text-center am-padding-vertical-lg register-close"><i class="am-icon-warning"></i> 暂时关闭了登录</div>
<div class="am-text-center am-padding-vertical-lg register-close">
<i class="am-icon-warning"></i>
<span>{{:MyLang('user.login_close_tips')}}</span>
</div>
{{/if}}
</div>
</div>

View File

@ -4,34 +4,34 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/admin/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/admin/index', $params)}}">
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/admin/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/admin/index', $params)}}">
<legend>
<span class="am-text-default">管理员{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<span class="am-text-default">{{:MyLang('admin.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/admin/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
<div class="am-form-group">
<label>用户名{{if empty($data)}}<span class="am-form-group-label-tips-must">*</span><span class="am-form-group-label-tips">创建后不可更改</span>{{else /}}<span class="am-form-group-label-tips">不可更改</span>{{/if}}</label>
<input type="text" name="username" placeholder="用户名" pattern="{{:MyConst('common_regex_username')}}" data-validation-message="用户名格式 5~18 个字符(可以是字母数字下划线)" class="am-radius" {{if !empty($data['username'])}}value="{{$data.username}}" disabled{{/if}} required />
<label>{{:MyLang('admin.form_item_username')}}{{if empty($data)}}<span class="am-form-group-label-tips-must">*</span><span class="am-form-group-label-tips">{{:MyLang('admin.form_item_username_created_tips')}}</span>{{else /}}<span class="am-form-group-label-tips">{{:MyLang('admin.form_item_username_edit_tips')}}</span>{{/if}}</label>
<input type="text" name="username" placeholder="{{:MyLang('admin.form_item_username_message')}}" pattern="{{:MyConst('common_regex_username')}}" data-validation-message="{{:MyLang('admin.form_item_username_message')}}" class="am-radius" {{if !empty($data['username'])}}value="{{$data.username}}" disabled{{/if}} required />
</div>
<div class="am-form-group">
<label>登录密码{{if empty($data)}}<span class="am-form-group-label-tips-must">*</span>{{else /}}<span class="am-form-group-label-tips">输入则修改密码</span>{{/if}}</label>
<input type="password" name="login_pwd" placeholder="登录密码" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="密码格式 6~18 个字符" class="am-radius" autocomplete="off" {{if empty($data)}}required{{/if}} />
<label>{{:MyLang('admin.form_item_password')}}{{if empty($data)}}<span class="am-form-group-label-tips-must">*</span>{{else /}}<span class="am-form-group-label-tips">{{:MyLang('admin.form_item_password_edit_tips')}}</span>{{/if}}</label>
<input type="password" name="login_pwd" placeholder="{{:MyLang('admin.form_item_password')}}" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="{{:MyLang('admin.form_item_password_message')}}" class="am-radius" autocomplete="off" {{if empty($data)}}required{{/if}} />
</div>
<div class="am-form-group">
<label>手机号码</label>
<input type="text" name="mobile" placeholder="手机号码" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="手机号码格式错误" class="am-radius" {{if !empty($data['mobile'])}}value="{{$data.mobile}}"{{/if}} />
<label>{{:MyLang('admin.form_item_mobile')}}</label>
<input type="text" name="mobile" placeholder="{{:MyLang('admin.form_item_mobile')}}" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="{{:MyLang('admin.form_item_mobile_message')}}" class="am-radius" {{if !empty($data['mobile'])}}value="{{$data.mobile}}"{{/if}} />
</div>
<div class="am-form-group">
<label>电子邮箱</label>
<input type="email" name="email" placeholder="电子邮箱" maxlength="60" data-validation-message="电子邮箱格式错误、最多60个字符" class="am-radius" value="{{if !empty($data['email'])}}{{$data.email}}{{/if}}" />
<label>{{:MyLang('admin.form_item_email')}}</label>
<input type="email" name="email" placeholder="{{:MyLang('admin.form_item_email')}}" maxlength="60" data-validation-message="{{:MyLang('admin.form_item_email_message')}}" class="am-radius" value="{{if !empty($data['email'])}}{{$data.email}}{{/if}}" />
</div>
{{include file="lib/gender" /}}
{{if !isset($data['id']) or $admin['id'] neq $data['id']}}
<div class="am-form-group">
<label>权限组<span class="am-form-group-label-tips-must">*</span></label>
<select class="am-radius chosen-select" name="role_id" data-validation-message="请选择所属角色组" required>
<option value="">可选择...</option>
<label>{{:MyLang('admin.form_item_role')}}<span class="am-form-group-label-tips-must">*</span></label>
<select class="am-radius chosen-select" name="role_id" data-validation-message="{{:MyLang('admin.form_item_role_message')}}" required>
<option value="">{{:MyLang('optional_tips')}}</option>
{{foreach $role_list as $v}}
<option value="{{$v.id}}" {{if isset($data['role_id']) and $data['role_id'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
@ -40,8 +40,8 @@
{{/if}}
<div class="am-form-group">
<label>状态<span class="am-form-group-label-tips-must">*</span></label>
<select name="status" class="am-radius chosen-select" data-validation-message="请选择用户状态" required>
<label>{{:MyLang('admin.form_item_status')}}<span class="am-form-group-label-tips-must">*</span></label>
<select name="status" class="am-radius chosen-select" data-validation-message="{{:MyLang('admin.form_item_status_message')}}" required>
{{foreach :MyLang('common_admin_status_list') as $v}}
<option value="{{$v.value}}" {{if isset($data['status']) and $data['status'] eq $v['value']}}selected{{else /}}{{if !isset($data['status']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
{{/foreach}}
@ -56,7 +56,7 @@
{{/if}}
{{if !empty($plugins_view_admin_admin_save_data) and is_array($plugins_view_admin_admin_save_data)}}
<div class="am-alert am-alert-secondary">
<label class="am-text-sm am-text-warning">该区域为插件扩展数据,请按照插件文档填写相应的值</label>
<label class="am-text-sm am-text-warning">{{:MyLang('plugins_view_region_config_tips')}}</label>
<div>
{{foreach $plugins_view_admin_admin_save_data as $hook}}
{{if is_string($hook) or is_int($hook)}}
@ -68,7 +68,7 @@
{{/if}}
<!-- 插件扩展数据 end -->
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<div class="am-form-popup-submit">
<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 am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('save_title')}}</button>
</div>

View File

@ -12,14 +12,14 @@
<div class="am-form-group">
<div class="am-cf">
<label><span class="am-form-group-label-tips am-margin-left-0">{{$data.common_agreement_userlogout.describe}}</span></label>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userlogout'])}}" target="_blank" class="am-fr">查看详情</a>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userlogout'])}}" target="_blank" class="am-fr">{{:MyLang('agreement.view_detail_name')}}</a>
</div>
<textarea class="am-radius am-validate" name="{{$data.common_agreement_userlogout.only_tag}}" maxlength="105000" id="editor-tag" data-validation-message="{{$data.common_agreement_userlogout.error_tips}}">{{if !empty($data)}}{{$data.common_agreement_userlogout.value|raw}}{{/if}}</textarea>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('save_title')}}</button>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userlogout'])}}" target="_blank">
<button type="button" class="am-btn am-btn-default am-btn-xs am-btn-block am-margin-top-sm">查看详情</button>
<button type="button" class="am-btn am-btn-default am-btn-xs am-btn-block am-margin-top-sm">{{:MyLang('agreement.view_detail_name')}}</button>
</a>
</div>
</form>

View File

@ -7,5 +7,5 @@
</ul>
<div class="am-alert am-margin-horizontal-sm am-margin-bottom-0" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>前端访问协议地址增加参数 is_content=1 则仅展示纯协议内容</p>
<p>{{:MyLang('agreement.top_tips')}}</p>
</div>

View File

@ -12,14 +12,14 @@
<div class="am-form-group">
<div class="am-cf">
<label><span class="am-form-group-label-tips am-margin-left-0">{{$data.common_agreement_userprivacy.describe}}</span></label>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userprivacy'])}}" target="_blank" class="am-fr">查看详情</a>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userprivacy'])}}" target="_blank" class="am-fr">{{:MyLang('agreement.view_detail_name')}}</a>
</div>
<textarea class="am-radius am-validate" name="{{$data.common_agreement_userprivacy.only_tag}}" maxlength="105000" id="editor-tag" data-validation-message="{{$data.common_agreement_userprivacy.error_tips}}">{{if !empty($data)}}{{$data.common_agreement_userprivacy.value|raw}}{{/if}}</textarea>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('save_title')}}</button>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userprivacy'])}}" target="_blank">
<button type="button" class="am-btn am-btn-default am-btn-xs am-btn-block am-margin-top-sm">查看详情</button>
<button type="button" class="am-btn am-btn-default am-btn-xs am-btn-block am-margin-top-sm">{{:MyLang('agreement.view_detail_name')}}</button>
</a>
</div>
</form>

View File

@ -12,14 +12,14 @@
<div class="am-form-group">
<div class="am-cf">
<label><span class="am-form-group-label-tips am-margin-left-0">{{$data.common_agreement_userregister.describe}}</span></label>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userregister'])}}" target="_blank" class="am-fr">查看详情</a>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userregister'])}}" target="_blank" class="am-fr">{{:MyLang('agreement.view_detail_name')}}</a>
</div>
<textarea class="am-radius am-validate" name="{{$data.common_agreement_userregister.only_tag}}" maxlength="105000" id="editor-tag" data-validation-message="{{$data.common_agreement_userregister.error_tips}}">{{if !empty($data)}}{{$data.common_agreement_userregister.value|raw}}{{/if}}</textarea>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('save_title')}}</button>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userregister'])}}" target="_blank">
<button type="button" class="am-btn am-btn-default am-btn-xs am-btn-block am-margin-top-sm">查看详情</button>
<button type="button" class="am-btn am-btn-default am-btn-xs am-btn-block am-margin-top-sm">{{:MyLang('agreement.view_detail_name')}}</button>
</a>
</div>
</form>

View File

@ -14,31 +14,31 @@
<div class="am-popup am-radius" id="my-popup-reply">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">回复</h4>
<h4 class="am-popup-title">{{:MyLang('reply_title')}}</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<dl class="dl-content">
<dt>用户信息</dt>
<dt>{{:MyLang('answer.user_info_title')}}</dt>
<dd class="user-info">
<img src="{{$attachment_host}}/static/common/images/user-img-sm.gif" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="35" height="35" />
<ul class="user-base">
<li class="username">名称<span>...</span></li>
<li class="nickname">昵称<span>...</span></li>
<li class="mobile">手机<span>...</span></li>
<li class="email">邮箱<span>...</span></li>
<li class="username">{{:MyLang('user_username_title')}}<span>...</span></li>
<li class="nickname">{{:MyLang('user_nickname_title')}}<span>...</span></li>
<li class="mobile">{{:MyLang('user_mobile_title')}}<span>...</span></li>
<li class="email">{{:MyLang('user_email_title')}}<span>...</span></li>
</ul>
</dd>
</dl>
<form class="am-form form-validation-reply am-form-popup-fixed" action="{{:MyUrl('admin/answer/reply')}}" method="POST" request-type="ajax-reload" enctype="multipart/form-data">
<div class="am-form-group am-form-group-refreshing">
<label>回复内容</label>
<textarea name="reply" rows="5" class="am-radius" placeholder="回复内容格式 2~230 个字符" data-validation-message="回复内容格式 2~230 个字符" minlength="2" maxlength="230" required></textarea>
<label>{{:MyLang('answer.form_item_reply')}}</label>
<textarea name="reply" rows="5" class="am-radius" placeholder="{{:MyLang('answer.form_item_reply_message')}}" data-validation-message="{{:MyLang('answer.form_item_reply_message')}}" maxlength="1000" required></textarea>
</div>
<div class="am-form-popup-submit">
<input type="hidden" name="id" value="" />
<button type="submit" class="am-btn am-btn-success am-radius am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">回复</button>
<button type="submit" class="am-btn am-btn-success am-radius am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('reply_title')}}</button>
</div>
</form>
</div>

View File

@ -4,62 +4,87 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/answer/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/answer/index', $params)}}" enctype="multipart/form-data">
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/answer/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/answer/index', $params)}}" enctype="multipart/form-data">
<legend>
<span class="am-text-default">问答{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<span class="am-text-default">{{:MyLang('answer.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/answer/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
<div class="am-alert am-alert-secondary user-info" data-am-alert>
<p class="am-text-lg">用户信息</p>
<p class="am-text-lg">{{:MyLang('answer.user_info_title')}}</p>
{{if !empty($data['user'])}}
<img src="{{$data.user.avatar}}" alt="{{$data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="35" height="35" />
<ul class="user-base">
<li>名称{{if empty($data['user']['username'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>昵称{{if empty($data['user']['nickname'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>手机{{if empty($data['user']['mobile'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>邮箱{{if empty($data['user']['email'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.email}}{{/if}}</li>
<li>{{:MyLang('user_username_title')}}{{if empty($data['user']['username'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>{{:MyLang('user_nickname_title')}}{{if empty($data['user']['nickname'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>{{:MyLang('user_mobile_title')}}{{if empty($data['user']['mobile'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>{{:MyLang('user_email_title')}}{{if empty($data['user']['email'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.email}}{{/if}}</li>
</ul>
{{else /}}
用户信息异常
{{:MyLang('user_info_abnormal_tips')}}
{{/if}}
</div>
<div class="am-form-group">
<label>联系人</label>
<input type="text" name="name" placeholder="联系人" maxlength="30" data-validation-message="联系人格式最多 30 个字符" class="am-radius" value="{{if !empty($data['name'])}}{{$data.name|raw}}{{/if}}" />
</div>
<div class="am-form-group">
<label>电话</label>
<input type="text" name="tel" placeholder="电话" data-validation-message="请填写电话" class="am-radius" value="{{if !empty($data['tel'])}}{{$data.tel}}{{/if}}" />
</div>
<div class="am-form-group">
<label>标题</label>
<input type="text" name="title" placeholder="标题" maxlength="60" data-validation-message="标题格式最多 60 个字符" class="am-radius" value="{{if !empty($data['title'])}}{{$data.title|raw}}{{/if}}" />
</div>
<div class="am-form-group">
<label>访问次数</label>
<input type="number" name="access_count" placeholder="访问次数" data-validation-message="请填写有效的访问次数" class="am-radius" value="{{if !empty($data['access_count'])}}{{$data.access_count}}{{else /}}0{{/if}}" />
</div>
<div class="am-form-group">
<label>内容<span class="am-form-group-label-tips-must">*</span></label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="5" maxlength="1000" placeholder="5~1000个字符之间" data-validation-message="内容格式 5~1000 个字符之间" required>{{if !empty($data['content'])}}{{$data.content|raw}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>回复内容</label>
<textarea class="am-radius am-validate" name="reply" rows="5" maxlength="1000" placeholder="最多 1000 个字符" data-validation-message="内容格式最多 1000 个字符">{{if !empty($data['reply'])}}{{$data.reply|raw}}{{/if}}</textarea>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('answer.form_item_name')}}</label>
<input type="text" name="name" placeholder="{{:MyLang('answer.form_item_name_message')}}" maxlength="30" data-validation-message="{{:MyLang('answer.form_item_name_message')}}" class="am-radius" value="{{if !empty($data['name'])}}{{$data.name}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('answer.form_item_tel')}}</label>
<input type="text" name="tel" placeholder="{{:MyLang('answer.form_item_tel_message')}}" data-validation-message="{{:MyLang('answer.form_item_tel_message')}}" class="am-radius" value="{{if !empty($data['tel'])}}{{$data.tel}}{{/if}}" />
</div>
</div>
</div>
<div class="am-form-group">
<label class="am-block">是否已回复</label>
<input name="is_reply" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_reply']) and $data['is_reply'] eq 1}}checked="true"{{/if}} />
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('answer.form_item_title')}}</label>
<input type="text" name="title" placeholder="{{:MyLang('answer.form_item_title_message')}}" maxlength="60" data-validation-message="{{:MyLang('answer.form_item_title_message')}}" class="am-radius" value="{{if !empty($data['title'])}}{{$data.title}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('answer.form_item_access_count')}}</label>
<input type="number" name="access_count" min="0" placeholder="{{:MyLang('answer.form_item_access_count_message')}}" data-validation-message="{{:MyLang('answer.form_item_access_count_message')}}" class="am-radius" value="{{if !empty($data['access_count'])}}{{$data.access_count}}{{else /}}0{{/if}}" />
</div>
</div>
</div>
<div class="am-form-group">
<label class="am-block">是否显示</label>
<input name="is_show" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_show']) and $data['is_show'] eq 1}}checked="true"{{/if}} />
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('answer.form_item_content')}}<span class="am-form-group-label-tips-must">*</span></label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="5" maxlength="1000" placeholder="{{:MyLang('answer.form_item_content_message')}}" data-validation-message="{{:MyLang('answer.form_item_content_message')}}" required>{{if !empty($data['content'])}}{{$data.content|raw}}{{/if}}</textarea>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('answer.form_item_reply')}}</label>
<textarea class="am-radius am-validate" name="reply" rows="5" maxlength="1000" placeholder="{{:MyLang('answer.form_item_reply_message')}}" data-validation-message="{{:MyLang('answer.form_item_reply_message')}}">{{if !empty($data['reply'])}}{{$data.reply|raw}}{{/if}}</textarea>
</div>
</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">{{:MyLang('answer.form_is_reply')}}</label>
<input name="is_reply" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_reply']) and $data['is_reply'] eq 1}}checked="true"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">{{:MyLang('form_whether_show_title')}}</label>
<input name="is_show" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_show']) and $data['is_show'] eq 1}}checked="true"{{/if}} />
</div>
</div>
</div>
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data['id'])}} value="{{$data.id}}"{{/if}} />
<input type="hidden" name="user_id" {{if !empty($data['user_id'])}} value="{{$data.user_id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('save_title')}}</button>

View File

@ -6,18 +6,18 @@
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/appcenternav/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appcenternav/index', $params)}}" enctype="multipart/form-data">
<legend>
<span class="am-text-default">手机用户中心导航{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<span class="am-text-default">{{:MyLang('appcenternav.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/appcenternav/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="60" data-validation-message="名称格式 2~60 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.name}}"{{/if}} required />
<label>{{:MyLang('appcenternav.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('appcenternav.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('appcenternav.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>所属平台<span class="am-form-group-label-tips-must">*</span></label>
<select name="platform" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="所属平台有误" data-validation-message="请选择所属平台" required>
<option value="">可选择...</option>
<label>{{:MyLang('form_platform_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<select name="platform" class="am-radius chosen-select" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('form_platform_message')}}" required>
<option value="">{{:MyLang('optional_tips')}}</option>
{{foreach $common_platform_type as $v}}
<option value="{{$v.value}}" {{if isset($data['platform']) and $data['platform'] eq $v['value']}}selected{{else /}}{{if !isset($data['platform']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
{{/foreach}}
@ -25,34 +25,34 @@
</div>
<div class="am-form-group">
<label>事件类型</label>
<select name="event_type" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="事件值类型有误" data-validation-message="请选择事件类型">
<option value="">可选择...</option>
<label>{{:MyLang('form_event_type_title')}}</label>
<select name="event_type" class="am-radius chosen-select" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('form_event_type_message')}}">
<option value="">{{:MyLang('optional_tips')}}</option>
{{foreach $common_app_event_type as $v}}
<option value="{{$v.value}}" {{if isset($data['event_type']) and $data['event_type'] eq $v['value']}}selected{{else /}}{{if !isset($data['event_type']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>事件值</label>
<input type="text" name="event_value" placeholder="事件值" data-validation-message="事件值最多 255 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.event_value}}"{{/if}} />
<label>{{:MyLang('form_event_value_title')}}</label>
<input type="text" name="event_value" placeholder="{{:MyLang('form_event_value_message')}}" data-validation-message="{{:MyLang('appcenternav.form_item_event_value_message')}}" class="am-radius" {{if !empty($data['event_value'])}} value="{{$data.event_value}}"{{/if}} />
{{include file="public/event_value_tips" /}}
</div>
<div class="am-form-group">
<label>描述</label>
<input type="text" name="desc" placeholder="描述" data-validation-message="描述最多 18 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.desc}}"{{/if}} />
<label>{{:MyLang('appcenternav.form_item_desc')}}</label>
<input type="text" name="desc" placeholder="{{:MyLang('appcenternav.form_item_desc_message')}}" data-validation-message="{{:MyLang('appcenternav.form_item_desc_message')}}" class="am-radius" {{if !empty($data['desc'])}} value="{{$data.desc}}"{{/if}} />
</div>
<div class="am-form-group am-form-file">
<label class="am-block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
<label class="am-block">{{:MyLang('appcenternav.form_item_images_url')}}<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="{{:MyLang('form_upload_images_message')}}" required />
<img src="{{if !empty($data['images_url'])}}{{$data.images_url}}{{else /}}{{$attachment_host}}/static/admin/default/images/default-images.jpg{{/if}}" />
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.slide-images_url-images-view">+上传图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.slide-images_url-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('form_sort_title')}}</label>

View File

@ -6,18 +6,18 @@
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/apphomenav/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/apphomenav/index', $params)}}" enctype="multipart/form-data">
<legend>
<span class="am-text-default">手机首页导航{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<span class="am-text-default">{{:MyLang('apphomenav.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/apphomenav/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="60" data-validation-message="名称格式 2~60 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.name}}"{{/if}} required />
<label>{{:MyLang('apphomenav.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('apphomenav.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('apphomenav.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>所属平台<span class="am-form-group-label-tips-must">*</span></label>
<select name="platform" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="所属平台有误" data-validation-message="请选择所属平台" required>
<option value="">可选择...</option>
<label>{{:MyLang('form_platform_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<select name="platform" class="am-radius chosen-select" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('form_platform_message')}}" required>
<option value="">{{:MyLang('optional_tips')}}</option>
{{foreach $common_platform_type as $v}}
<option value="{{$v.value}}" {{if isset($data['platform']) and $data['platform'] eq $v['value']}}selected{{else /}}{{if !isset($data['platform']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
{{/foreach}}
@ -25,32 +25,32 @@
</div>
<div class="am-form-group">
<label>事件类型</label>
<select name="event_type" class="am-radius chosen-select" data-placeholder="可选择..." placeholder="事件值类型有误" data-validation-message="请选择事件类型">
<option value="">可选择...</option>
<label>{{:MyLang('form_event_type_title')}}</label>
<select name="event_type" class="am-radius chosen-select" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('form_event_type_message')}}">
<option value="">{{:MyLang('optional_tips')}}</option>
{{foreach $common_app_event_type as $v}}
<option value="{{$v.value}}" {{if isset($data['event_type']) and $data['event_type'] eq $v['value']}}selected{{else /}}{{if !isset($data['event_type']) and isset($v['checked']) and $v['checked'] eq true}}selected{{/if}}{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>事件值</label>
<input type="text" name="event_value" placeholder="事件值" data-validation-message="事件值最多 255 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.event_value}}"{{/if}} />
<label>{{:MyLang('form_event_value_title')}}</label>
<input type="text" name="event_value" placeholder="{{:MyLang('form_event_value_message')}}" data-validation-message="{{:MyLang('form_event_value_message')}}" class="am-radius" {{if !empty($data['event_value'])}} value="{{$data.event_value}}"{{/if}} />
{{include file="public/event_value_tips" /}}
</div>
<div class="am-form-group am-form-file">
<label class="am-block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
<label class="am-block">{{:MyLang('form_item_images_url')}}<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="{{:MyLang('form_upload_images_message')}}" required />
<img src="{{if !empty($data['images_url'])}}{{$data.images_url}}{{else /}}{{$attachment_host}}/static/admin/default/images/default-images.jpg{{/if}}" />
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.slide-images_url-images-view">+上传图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.slide-images_url-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
<div class="am-form-group">
<label>背景色</label>
<label>{{:MyLang('form_bg_color_title')}}</label>
<input type="hidden" name="bg_color" value="{{if !empty($data)}}{{$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" />
@ -65,7 +65,7 @@
<input name="is_enable" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" 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">
<label class="am-block">是否需要登录</label>
<label class="am-block">{{:MyLang('apphomenav.form_item_is_need_login')}}</label>
<input name="is_need_login" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_need_login'] eq 1}} checked="true"{{/if}} />
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">

View File

@ -8,7 +8,7 @@
{{/if}}
{{if !empty($store_theme_url)}}
<li class="am-fr">
<a class="am-margin-left-sm" href="{{$store_theme_url}}" target="_blank">更多主题下载 <i class="am-icon-external-link"></i></a>
<a class="am-margin-left-sm" href="{{$store_theme_url}}" target="_blank">{{:MyLang('appmini.nav_store_theme_name')}} <i class="am-icon-external-link"></i></a>
</li>
{{/if}}
</ul>

View File

@ -8,10 +8,10 @@
<div class="content">
<!-- 新版本小程序主题提示 -->
<div class="am-alert am-alert-warning am-radius">
<a class="am-fr" href="{{$store_theme_url}}" target="_blank">更多主题下载 <i class="am-icon-external-link"></i></a>
<p class="am-text-sm">已发布新版本小程序主题、采用uniapp开发支持多端小程序+H5APP也在紧急适配中。</p>
<a class="am-fr" href="{{$store_theme_url}}" target="_blank">{{:MyLang('appmini.nav_store_theme_name')}} <i class="am-icon-external-link"></i></a>
<p class="am-text-sm">{{:MyLang('appmini.nav_theme_download_tips')}}</p>
<p class="am-margin-top-xs">
<a href="https://uniapp.shopxo.net/" target="_blank">查看小程序打包教程 <i class="am-icon-external-link"></i></a>
<a href="https://uniapp.shopxo.net/" target="_blank">{{:MyLang('appmini.nav_theme_download_name')}} <i class="am-icon-external-link"></i></a>
</p>
</div>
@ -43,31 +43,6 @@
</div>
</div>
</div>
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">扩展插件配置</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_weixin_liveplayer.name}}<span class="am-form-group-label-tips">{{$data.common_app_weixin_liveplayer.describe}}</span></label>
<select name="{{$data.common_app_weixin_liveplayer.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_weixin_liveplayer.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_weixin_liveplayer']['value']) and $data['common_app_weixin_liveplayer']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group">
<label>{{$data.common_app_weixin_liveplayer_ver.name}}</label>
<div class="am-alert am-alert-warning">
<p>1. 获取最新组件版本号,默认[ 1.3.0 ]</p>
<p>2. 登录微信小程序平台,左侧导航[ 直播 ],申请直播权限后等待审核通过方可使用</p>
<p>3. 点击左侧导航[ 小程序直播->接入说明 ],找到[ 使用方法说明->1. 【直播组件】如何引入 ]json 代码串[ plugins->live-player-plugin ]参数下的[ version ]的值填入</p>
<a href="https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/live-player-plugin.html" target="_blank">去获取组件版本号 <i class="am-icon-external-link"></i></a>
</div>
<input type="text" name="{{$data.common_app_weixin_liveplayer_ver.only_tag}}" placeholder="{{$data.common_app_weixin_liveplayer_ver.name}}" data-validation-message="{{$data.common_app_weixin_liveplayer_ver.error_tips}}" class="am-radius am-margin-top-xs" {{if !empty($data)}}value="{{$data.common_app_weixin_liveplayer_ver.value}}"{{/if}} />
</div>
</div>
</div>
{{/case}}
{{case alipay}}
<!-- 支付宝 -->
@ -104,15 +79,15 @@
</div>
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">客服配置</h3>
<h3 class="am-panel-title">{{:MyLang('appmini.form_alipay_extend_title')}}</h3>
</div>
<div class="am-panel-bd">
<!-- tips -->
<div class="am-alert am-alert-warning" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>
<span>PS如【APP/小程序】中开启(开启在线客服),则以下配置必填 [企业编码] 和 [聊天窗编码]</span>
<a href="https://opendocs.alipay.com/mini/component/contact-button" target="_blank" class="am-margin-left-sm">配置教程 <i class="am-icon-external-link"></i></a>
<span>{{:MyLang('appmini.form_alipay_extend_tips')}}</span>
<a href="https://opendocs.alipay.com/mini/component/contact-button" target="_blank" class="am-margin-left-sm">{{:MyLang('view_title')}} <i class="am-icon-external-link"></i></a>
</p>
</div>
<div class="am-form-group">
@ -239,7 +214,7 @@
</div>
{{/case}}
{{default /}}
<div class="table-no"><i class="am-icon-warning"></i> {{$nav_type}}无配置信息</div>
<div class="table-no"><i class="am-icon-warning"></i> {{$nav_type}}{{:MyLang('no_config_data_tips')}}</div>
{{/switch}}
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('save_title')}}</button>

View File

@ -9,7 +9,7 @@
<!-- nav start -->
{{include file="appmini/base_nav" /}}
<!-- nav end -->
<!-- list start -->
{{if !empty($data_list)}}
<ul data-am-widget="gallery" class="am-gallery am-avg-sm-2 am-avg-md-3 am-avg-lg-4 am-gallery-bordered data-list" data-am-gallery="{}" data-select-url="{{:MyUrl('admin/appmini/themesave')}}" data-nav-type="{{$nav_type}}">
@ -24,24 +24,24 @@
{{$v.name}}
<div class="am-fr am-text-right">
{{if !empty($upgrade_info) and isset($upgrade_info[$v['theme']]) and $upgrade_info[$v['theme']]['version_new'] neq $v['ver']}}
<a href="javascript:;" class="am-icon-refresh am-text-danger package-upgrade-event" title="更新" data-type="minitheme" data-name="{{$v.name}}" data-value="{{$v.theme}}" data-terminal="{{$nav_type}}" data-json="{{:urlencode(json_encode($upgrade_info[$v['theme']]))}}"></a>
<a href="javascript:;" class="am-icon-refresh am-text-danger package-upgrade-event" title="{{:MyLang('update_title')}}" data-type="minitheme" data-name="{{$v.name}}" data-value="{{$v.theme}}" data-terminal="{{$nav_type}}" data-json="{{:urlencode(json_encode($upgrade_info[$v['theme']]))}}"></a>
{{/if}}
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<a href="{{:MyUrl('admin/appmini/themedownload', ['id'=>$v['theme'], 'nav_type'=>$nav_type])}}" class="am-icon-trash-o am-icon-download am-margin-left-sm" title="打包"></a>
<a href="{{:MyUrl('admin/appmini/themedownload', ['id'=>$v['theme'], 'nav_type'=>$nav_type])}}" class="am-icon-trash-o am-icon-download am-margin-left-sm" title="{{:MyLang('download_title')}}"></a>
{{/if}}
{{if $v.is_delete eq 1}}
<a href="javascript:;" class="am-icon-trash-o submit-delete am-margin-left-sm am-text-warning" title="删除" data-url="{{:MyUrl('admin/appmini/themedelete', ['nav_type'=>$nav_type])}}" data-id="{{$v.theme}}"></a>
<a href="javascript:;" class="am-icon-trash-o submit-delete am-margin-left-sm am-text-warning" title="{{:MyLang('delete_title')}}" data-url="{{:MyUrl('admin/appmini/themedelete', ['nav_type'=>$nav_type])}}" data-id="{{$v.theme}}"></a>
{{/if}}
</div>
</h3>
<div class="am-gallery-desc">作者:
<div class="am-gallery-desc">{{:MyLang('appmini.list_author_title')}}
{{if empty($v['home'])}}
{{$v.author}}
{{else /}}
<a href="{{$v.home}}" target="_blank">{{$v.author}}</a>
{{/if}}
</div>
<div class="am-gallery-desc">适用版本:{{$v.ver}}</div>
<div class="am-gallery-desc">{{:MyLang('appmini.list_version_title')}}{{$v.ver}}</div>
</div>
</div>
</li>
@ -49,11 +49,8 @@
<ul>
{{else /}}
<div class="table-no">
<i class="am-icon-warning"></i>
<span>没有相关主题包</span>
<p class="am-margin-top-lg">
<a href="https://uniapp.shopxo.net/" target="_blank">查看新版本小程序打包教程 <i class="am-icon-external-link"></i></a>
</p>
<i class="am-icon-skyatlas am-icon-lg"></i>
<p>{{:MyLang('appmini.list_no_data_tips')}}</p>
</div>
{{/if}}
<!-- lis end -->

View File

@ -11,39 +11,16 @@
{{include file="appmini/base_nav" /}}
<!-- 新版本小程序主题提示 -->
<div class="am-alert am-alert-warning am-radius">
<p class="am-text-sm">已发布新版本小程序主题、采用uniapp开发支持多端小程序+H5APP也在紧急适配中。</p>
<p class="am-text-sm">{{:MyLang('appmini.nav_theme_download_tips')}}</p>
<p class="am-margin-top-xs">
<a href="https://uniapp.shopxo.net/" target="_blank">查看小程序打包教程 <i class="am-icon-external-link"></i></a>
<a href="https://uniapp.shopxo.net/" target="_blank">{{:MyLang('appmini.nav_theme_download_name')}} <i class="am-icon-external-link"></i></a>
</p>
</div>
<!-- tips -->
<div class="am-alert am-radius">
<p class="am-text-danger am-margin-bottom-xs am-text-sm">生成源码包采用当前设置的默认主题进行生成zip压缩包</p>
{{if MyConfig('shopxo.is_develop') eq true}}
<p>当前为开发模式</p>
<p class="am-margin-left-lg">1. 发布小程序必须采用 https 协议,上线需确认 app.js 中 request_url 参数值是否正确。</p>
<p class="am-margin-left-lg">2. 发布小程序,建议关闭开发者模式、从正式环境重新生成小程序下载使用开发者工具上传审核。</p>
{{if isset($nav_dev_tips[$nav_type])}}
<p class="am-margin-left-lg">3. 非 https 环境下,在开发者工具 -> {{$nav_dev_tips[$nav_type]['msg']}}</p>
{{/if}}
{{else /}}
<p>1. 生成小程序必须在 https 协议下进行操作、请配置好服务器 ssl 并使用 https 协议登录后台管理生成小程序。</p>
<p>2. 如需非 https 协议下生成小程序,请在 config/shopxo.php 文件中 is_develop值改为true开启开发者模式。</p>
{{/if}}
<!-- 教程地址-->
{{if isset($nav_dev_tips[$nav_type])}}
<p class="am-margin-top-xs">
<a href="{{$nav_dev_tips[$nav_type]['url']}}" target="_blank">查看部署教程 <i class="am-icon-external-link"></i></a>
</p>
{{/if}}
</div>
{{/block}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-icon-refresh am-radius submit-ajax" data-url="{{:MyUrl('admin/appmini/created', ['nav_type'=>$nav_type])}}" data-view="reload" data-msg="生成时间比较长,请不要关闭浏览器窗口!"> 生成</button>
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-icon-refresh am-radius submit-ajax" data-url="{{:MyUrl('admin/appmini/created', ['nav_type'=>$nav_type])}}" data-view="reload" data-msg="{{:MyLang('appmini.package_generate_tips')}}"> {{:MyLang('generate_title')}}</button>
<!-- 父级内容 -->
{__block__}
{{/block}}

View File

@ -9,21 +9,21 @@
<!-- nav start -->
{{include file="appmini/base_nav" /}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-margin-top-sm" action="{{:MyUrl('admin/appmini/themeupload')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appmini/index', ['nav_type'=>$nav_type])}}" enctype="multipart/form-data">
<div class="am-form-group am-form-group-refreshing am-margin-bottom-0">
<div class="am-form-file">
<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="theme" class="file-event" data-tips-tag="#form-theme-tips" data-validation-message="请选择需要上传的文件" accept=".zip" required />
<span class="tips am-text-xs">上传一个zip压缩格式的主题安装包</span>
<i class="am-icon-cloud-upload"></i> {{:MyLang('form_choice_images_title')}}</button>
<input type="file" name="theme" class="file-event" data-tips-tag="#form-theme-tips" data-validation-message="{{:MyLang('form_upload_file_message')}}" accept=".zip" required />
<span class="tips am-text-xs">{{:MyLang('appmini.form_item_upload_file_tips')}}</span>
<div id="form-theme-tips" class="am-margin-top-xs"></div>
</div>
</div>
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="nav_type" value="{{$nav_type}}" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm" data-am-loading="{loadingText:'上传中...'}">确认上传</button>
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm" data-am-loading="{loadingText:'{{:MyLang('upload_tips')}}'}">{{:MyLang('confirm_upload_title')}}</button>
</div>
</form>
<!-- form end -->

View File

@ -8,7 +8,7 @@
<!-- 详情内容 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">详情内容</div>
<div class="am-panel-hd">{{:MyLang('article.detail_content_title')}}</div>
<div class="am-panel-bd">
{{if !empty($data['content'])}}
<div class="am-scrollable-vertical am-nowrap-initial">
@ -22,7 +22,7 @@
<!-- 详情图片 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">详情图片</div>
<div class="am-panel-hd">{{:MyLang('article.detail_images_title')}}</div>
<div class="am-panel-bd">
{{if !empty($data['images'])}}
<div data-am-widget="slider" class="am-slider am-slider-default" data-am-slider='{"controlNav":false}'>
@ -50,23 +50,5 @@
</div>
<!-- SEO信息 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">SEO信息</div>
<div class="am-panel-bd">
{{if !empty($data)}}
<dl class="dl-content">
<dt>SEO标题</dt>
<dd>{{$data.seo_title}}</dd>
<dt>SEO关键字</dt>
<dd>{{$data.seo_keywords}}</dd>
<dt>SEO描述</dt>
<dd>{{$data.seo_desc}}</dd>
</dl>
{{else /}}
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
{{include file="lib/seo_data" /}}
{{/block}}

View File

@ -6,16 +6,16 @@
<!-- form start -->
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/article/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/article/index', $params)}}">
<legend>
<span class="am-text-default">文章{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<span class="am-text-default">{{:MyLang('article.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/article/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>标题<span class="am-form-group-label-tips-must">*</span></label>
<label>{{:MyLang('article.form_item_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-input-group am-input-group-sm">
<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 />
<input type="text" name="title" placeholder="{{:MyLang('article.form_item_title_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('article.form_item_title_message')}}" class="am-form-field am-radius" {{if !empty($data['title'])}} 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 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" />
@ -26,9 +26,9 @@
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>文章分类<span class="am-form-group-label-tips-must">*</span></label>
<select name="article_category_id" class="am-radius chosen-select" data-placeholder="可选择..." data-validation-message="请选择文章分类" required>
<option value="">可选择...</option>
<label>{{:MyLang('article.form_item_article_category')}}<span class="am-form-group-label-tips-must">*</span></label>
<select name="article_category_id" class="am-radius chosen-select" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('article.form_item_article_category_message')}}" required>
<option value="">{{:MyLang('optional_tips')}}</option>
{{foreach $article_category_list as $v}}
<option value="{{$v.id}}" {{if isset($data['article_category_id']) and $data['article_category_id'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
@ -40,8 +40,8 @@
<div class="am-cf">
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>跳转url地址<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '带http://或https://仅web端有效', trigger: 'hover focus', theme: 'sm'}"></a></label>
<input type="url" name="jump_url" placeholder="跳转url地址" data-validation-message="跳转url地址格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.jump_url}}"{{/if}} />
<label>{{:MyLang('article.form_item_jump_url_title')}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:MyLang('article.form_item_jump_url_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<input type="url" name="jump_url" placeholder="{{:MyLang('article.form_item_jump_url_title')}}" data-validation-message="{{:MyLang('article.form_item_jump_url_message')}}" class="am-radius" {{if !empty($data['jump_url'])}} value="{{$data.jump_url}}"{{/if}} />
</div>
</div>
<div class="am-u-md-6 am-padding-horizontal-0">
@ -49,13 +49,13 @@
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">{{:MyLang('form_is_enable_title')}}</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" 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}} />
<input name="is_enable" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" 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}}checked="true"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">首页推荐</label>
<input name="is_home_recommended" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_home_recommended'] eq 1}}checked="true"{{/if}} />
<label class="am-block">{{:MyLang('article.form_item_is_home_recommended_title')}}</label>
<input name="is_home_recommended" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" 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>
</div>
@ -63,8 +63,8 @@
</div>
<div class="am-form-group">
<label>内容<span class="am-form-group-label-tips-must">*</span></label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="10" 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>
<label>{{:MyLang('article.form_item_content_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="10" maxlength="105000" {{if !IsMobile()}}id="editor-tag" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>'article'])}}" placeholder="{{:MyLang('article.form_item_content_message')}}" {{else /}} placeholder="{{:MyLang('article.form_item_content_placeholder')}}" {{/if}} data-validation-message="{{:MyLang('article.form_item_content_message')}}" required>{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
</div>
<!-- 插件扩展数据 start -->
@ -75,7 +75,7 @@
{{/if}}
{{if !empty($plugins_view_admin_article_save_data) and is_array($plugins_view_admin_article_save_data)}}
<div class="am-alert am-alert-secondary">
<label class="am-text-sm am-text-warning">该区域为插件扩展数据,请按照插件文档填写相应的值</label>
<label class="am-text-sm am-text-warning">{{:MyLang('plugins_view_region_config_tips')}}</label>
<div>
{{foreach $plugins_view_admin_article_save_data as $hook}}
{{if is_string($hook) or is_int($hook)}}

View File

@ -13,15 +13,15 @@
<div class="am-popup am-radius" id="data-save-win">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title" data-add-title="文章分类添加" data-edit-title="文章分类编辑">文章分类添加</h4>
<h4 class="am-popup-title" data-add-title="{{:MyLang('articlecategory.base_nav_title')}}{{:MyLang('add_title')}}" data-edit-title="{{:MyLang('articlecategory.base_nav_title')}}{{:MyLang('edit_title')}}">{{:MyLang('articlecategory.base_nav_title')}}{{:MyLang('add_title')}}</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/articlecategory/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
<label>{{:MyLang('articlecategory.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="{{:MyLang('articlecategory.form_item_name_message')}}" name="name" minlength="2" maxlength="16" data-validation-message="{{:MyLang('articlecategory.form_item_name_message')}}" class="am-radius" required />
</div>
<div class="am-form-group">
<label>{{:MyLang('form_sort_title')}}</label>

View File

@ -7,23 +7,5 @@
{__block__}
<!-- SEO信息 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">SEO信息</div>
<div class="am-panel-bd">
{{if !empty($data)}}
<dl class="dl-content">
<dt>SEO标题</dt>
<dd>{{$data.seo_title}}</dd>
<dt>SEO关键字</dt>
<dd>{{$data.seo_keywords}}</dd>
<dt>SEO描述</dt>
<dd>{{$data.seo_desc}}</dd>
</dl>
{{else /}}
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
{{include file="lib/seo_data" /}}
{{/block}}

View File

@ -6,20 +6,20 @@
<!-- form start -->
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/brand/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/brand/index', $params)}}" enctype="multipart/form-data">
<legend>
<span class="am-text-default">品牌{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<span class="am-text-default">{{:MyLang('brand.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/brand/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="30" data-validation-message="名称格式 2~30 个字符" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
<label>{{:MyLang('brand.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('brand.form_item_name_message')}}" minlength="2" maxlength="30" data-validation-message="{{:MyLang('brand.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>品牌分类<span class="am-form-group-label-tips-must">*</span></label>
<select name="brand_category_id" class="am-radius chosen-select" multiple="multiple" minchecked="1" data-placeholder="可选择..." data-validation-message="请选择品牌分类" required>
<label>{{:MyLang('brand.form_item_brand_category_id')}}<span class="am-form-group-label-tips-must">*</span></label>
<select name="brand_category_id" class="am-radius chosen-select" multiple="multiple" minchecked="1" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('brand.form_item_brand_category_id_message')}}" required>
{{foreach $brand_category as $v}}
<option value="{{$v.id}}" {{if isset($data['brand_category_ids']) and is_array($data['brand_category_ids']) and in_array($v['id'], $data['brand_category_ids'])}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
@ -31,14 +31,14 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>官网地址</label>
<input type="url" placeholder="官网地址、以http://或https://开头" name="website_url" data-validation-message="官网地址格式有误" class="am-radius" {{if !empty($data['website_url'])}} value="{{$data.website_url}}"{{/if}} />
<label>{{:MyLang('brand.form_item_website_url')}}</label>
<input type="url" placeholder="{{:MyLang('brand.form_item_website_url_placeholder')}}" name="website_url" data-validation-message="{{:MyLang('brand.form_item_website_url_message')}}" class="am-radius" {{if !empty($data['website_url'])}} value="{{$data.website_url}}"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>描述</label>
<textarea rows="1" name="describe" maxlength="230" class="am-radius" placeholder="描述" data-validation-message="描述最多230个字符">{{if !empty($data['describe'])}} {{$data.describe}}{{/if}}</textarea>
<label>{{:MyLang('brand.form_item_describe')}}</label>
<textarea rows="1" name="describe" maxlength="230" class="am-radius" placeholder="{{:MyLang('brand.form_item_describe_message')}}" data-validation-message="{{:MyLang('brand.form_item_describe_message')}}">{{if !empty($data['describe'])}} {{$data.describe}}{{/if}}</textarea>
</div>
</div>
</div>
@ -46,7 +46,7 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group am-form-file">
<label class="am-block">LOGO<span class="am-form-group-label-tips">建议150*50px</span></label>
<label class="am-block">{{:MyLang('brand.form_item_logo')}}<span class="am-form-group-label-tips">{{:MyLang('brand.form_item_logo_tips')}}</span></label>
<ul class="plug-file-upload-view brand-logo-images-view" data-form-name="logo" data-max-number="1" data-dialog-type="images">
{{if !empty($data['logo'])}}
<li>
@ -56,7 +56,7 @@
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.brand-logo-images-view">+上传图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.brand-logo-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
@ -85,7 +85,7 @@
{{/if}}
{{if !empty($plugins_view_admin_brand_save_data) and is_array($plugins_view_admin_brand_save_data)}}
<div class="am-alert am-alert-secondary">
<label class="am-text-sm am-text-warning">该区域为插件扩展数据,请按照插件文档填写相应的值</label>
<label class="am-text-sm am-text-warning">{{:MyLang('plugins_view_region_config_tips')}}</label>
<div>
{{foreach $plugins_view_admin_brand_save_data as $hook}}
{{if is_string($hook) or is_int($hook)}}

View File

@ -13,15 +13,15 @@
<div class="am-popup am-radius" id="data-save-win">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title" data-add-title="品牌分类添加" data-edit-title="品牌分类编辑">品牌分类添加</h4>
<h4 class="am-popup-title" data-add-title="{{:MyLang('brandcategory.base_nav_title')}}{{:MyLang('add_title')}}" data-edit-title="{{:MyLang('brandcategory.base_nav_title')}}{{:MyLang('edit_title')}}">{{:MyLang('brandcategory.base_nav_title')}}{{:MyLang('add_title')}}</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/brandcategory/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
<label>{{:MyLang('brandcategory.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="{{:MyLang('brandcategory.form_item_name_message')}}" name="name" minlength="2" maxlength="16" data-validation-message="{{:MyLang('brandcategory.form_item_name_message')}}" class="am-radius" required />
</div>
<div class="am-form-group">
<label>{{:MyLang('form_sort_title')}}</label>

View File

@ -9,7 +9,7 @@
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{$v.name}}</div>
<a href="javascript:;" class="submit-ajax" data-url="{{$v.url}}" data-is-confirm="0">
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-fr cache-submit">更新</button>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-fr cache-submit">{{:MyLang('update_title')}}</button>
</a>
<div class="am-panel-bd">{{$v.desc}}</div>
</div>

View File

@ -41,7 +41,7 @@
<!-- 后台登录 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">后台登录</h3>
<h3 class="am-panel-title">{{:MyLang('config.admin_login_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
@ -51,10 +51,11 @@
<option value="{{$v.id}}" {{if isset($data['admin_login_info_bg_images_rand']['value']) and $data['admin_login_info_bg_images_rand']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<div class="am-alert am-alert-warning">
<p>1. 默认背景图片位于[ public/static/admin/default/images/login ]目录下</p>
<p>2. 变更图片后、需要在[ app/admin/controller/Admin.php ]文件中[ LoginInfo ]方法中修改[ bg_images_list ]变量</p>
</div>
{{if is_array(MyLang('config.admin_login_info_bg_images_list_tips'))}}
<div class="am-alert am-alert-warning">
<p>{{:implode('</p><p>', MyLang('config.admin_login_info_bg_images_list_tips'))}}</p>
</div>
{{/if}}
</div>
<div class="am-form-group">
<label>{{$data.admin_login_type.name}}<span class="am-form-group-label-tips">{{$data.admin_login_type.describe}}</span></label>
@ -78,7 +79,7 @@
<!-- 商品 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">商品</h3>
<h3 class="am-panel-title">{{:MyLang('goods_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
@ -91,7 +92,7 @@
<!-- 地图 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">地图</h3>
<h3 class="am-panel-title">{{:MyLang('map_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
@ -102,14 +103,14 @@
{{/foreach}}
</select>
<div class="am-alert am-alert-warning">
<p>由于每一家的地图标准不一样、请勿随意切换地图、会导致地图坐标标注不准确的情况。</p>
<p>{{:MyLang('config.map_type_tips')}}</p>
</div>
</div>
<div class="am-form-group">
<label>{{$data.common_baidu_map_ak.name}}<span class="am-form-group-label-tips">{{$data.common_baidu_map_ak.describe}}</span></label>
<input type="text" name="{{$data.common_baidu_map_ak.only_tag}}" placeholder="{{$data.common_baidu_map_ak.describe}}" data-validation-message="{{$data.common_baidu_map_ak.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_baidu_map_ak.value}}"{{/if}} />
<div class="am-alert am-alert-warning">
请到百度地图开放平台申请 {{if !empty($site_store_links) and !empty($site_store_links['baidu_map_course'])}}<a href="{{$site_store_links.baidu_map_course}}" target="_blank" class="am-margin-left-sm">查看配置教程 <i class="am-icon-external-link"></i></a>{{/if}}
{{:MyLang('config.apply_map_baidu_name')}} {{if !empty($site_store_links) and !empty($site_store_links['baidu_map_course'])}}<a href="{{$site_store_links.baidu_map_course}}" target="_blank" class="am-margin-left-sm">{{:MyLang('config.view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}
</div>
</div>
<div class="am-form-group">
@ -117,21 +118,21 @@
<input type="text" name="{{$data.common_amap_map_ak.only_tag}}" placeholder="{{$data.common_amap_map_ak.describe}}" data-validation-message="{{$data.common_amap_map_ak.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_amap_map_ak.value}}"{{/if}} />
<input type="text" name="{{$data.common_amap_map_safety_ak.only_tag}}" placeholder="{{$data.common_amap_map_safety_ak.describe}}" data-validation-message="{{$data.common_amap_map_safety_ak.error_tips}}" class="am-radius am-margin-top-xs" {{if !empty($data)}}value="{{$data.common_amap_map_safety_ak.value}}"{{/if}} />
<div class="am-alert am-alert-warning">
请到高德地图开放平台申请 {{if !empty($site_store_links) and !empty($site_store_links['amap_map_course'])}}<a href="{{$site_store_links.amap_map_course}}" target="_blank" class="am-margin-left-sm">查看配置教程 <i class="am-icon-external-link"></i></a>{{/if}}
{{:MyLang('config.apply_map_amap_name')}} {{if !empty($site_store_links) and !empty($site_store_links['amap_map_course'])}}<a href="{{$site_store_links.amap_map_course}}" target="_blank" class="am-margin-left-sm">{{:MyLang('config.view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}
</div>
</div>
<div class="am-form-group">
<label>{{$data.common_tencent_map_ak.name}}<span class="am-form-group-label-tips">{{$data.common_tencent_map_ak.describe}}</span></label>
<input type="text" name="{{$data.common_tencent_map_ak.only_tag}}" placeholder="{{$data.common_tencent_map_ak.describe}}" data-validation-message="{{$data.common_tencent_map_ak.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_tencent_map_ak.value}}"{{/if}} />
<div class="am-alert am-alert-warning">
请到腾讯地图开放平台申请 {{if !empty($site_store_links) and !empty($site_store_links['tencent_map_course'])}}<a href="{{$site_store_links.tencent_map_course}}" target="_blank" class="am-margin-left-sm">查看配置教程 <i class="am-icon-external-link"></i></a>{{/if}}
{{:MyLang('config.apply_map_tencent_name')}} {{if !empty($site_store_links) and !empty($site_store_links['tencent_map_course'])}}<a href="{{$site_store_links.tencent_map_course}}" target="_blank" class="am-margin-left-sm">{{:MyLang('config.view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}
</div>
</div>
<div class="am-form-group">
<label>{{$data.common_tianditu_map_ak.name}}<span class="am-form-group-label-tips">{{$data.common_tianditu_map_ak.describe}}</span></label>
<input type="text" name="{{$data.common_tianditu_map_ak.only_tag}}" placeholder="{{$data.common_tianditu_map_ak.describe}}" data-validation-message="{{$data.common_tianditu_map_ak.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_tianditu_map_ak.value}}"{{/if}} />
<div class="am-alert am-alert-warning">
请到天地图开放平台申请 {{if !empty($site_store_links) and !empty($site_store_links['tianditu_map_course'])}}<a href="{{$site_store_links.tianditu_map_course}}" target="_blank" class="am-margin-left-sm">查看配置教程 <i class="am-icon-external-link"></i></a>{{/if}}
{{:MyLang('config.apply_map_tianditu_name')}} {{if !empty($site_store_links) and !empty($site_store_links['tianditu_map_course'])}}<a href="{{$site_store_links.tianditu_map_course}}" target="_blank" class="am-margin-left-sm">{{:MyLang('config.view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}
</div>
</div>
</div>
@ -140,7 +141,7 @@
<!-- 扩展 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">扩展</h3>
<h3 class="am-panel-title">{{:MyLang('extend_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
@ -157,7 +158,7 @@
<!-- 安全 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">安全</h3>
<h3 class="am-panel-title">{{:MyLang('safety_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
@ -168,10 +169,11 @@
<div class="am-form-group">
<label>{{$data.common_cookie_domain.name}}<span class="am-form-group-label-tips">{{$data.common_cookie_domain.describe}}</span></label>
<input type="text" name="{{$data.common_cookie_domain.only_tag}}" placeholder="{{$data.common_cookie_domain.describe}}" data-validation-message="{{$data.common_cookie_domain.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_cookie_domain.value}}"{{/if}} />
<div class="am-alert am-alert-warning">
<p>1. 默认空、则仅对当前访问域名有效</p>
<p>2. 如需要二级域名也共享cookie则填写顶级域名、如baidu.com</p>
</div>
{{if is_array(MyLang('config.cookie_domain_list_tips'))}}
<div class="am-alert am-alert-warning">
<p>{{:implode('</p><p>', MyLang('config.cookie_domain_list_tips'))}}</p>
</div>
{{/if}}
</div>
</div>
</div>

View File

@ -5,7 +5,6 @@
<div class="content">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/config/save', ['view_type'=>$view_type])}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/config/store')}}">
<div class="am-form-group">
<label>{{$data.common_customer_store_tel.name}}<span class="am-form-group-label-tips">{{$data.common_customer_store_tel.describe}}</span></label>
<input type="text" name="{{$data.common_customer_store_tel.only_tag}}" placeholder="{{$data.common_customer_store_tel.name}}" data-validation-message="{{$data.common_customer_store_tel.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_customer_store_tel.value}}"{{/if}} />
@ -29,7 +28,7 @@
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.common_customer_store_qrcode-images-view">+选择图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.common_customer_store_qrcode-images-view">+{{:MyLang('form_choice_images_title')}}</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('save_title')}}</button>

View File

@ -8,7 +8,7 @@
<!-- 详情内容 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">详情内容</div>
<div class="am-panel-hd">{{:MyLang('customview.detail_content_title')}}</div>
<div class="am-panel-bd">
{{if !empty($data['content'])}}
<div class="am-scrollable-vertical am-nowrap-initial">
@ -22,7 +22,7 @@
<!-- 详情图片 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">详情图片</div>
<div class="am-panel-hd">{{:MyLang('customview.detail_images_title')}}</div>
<div class="am-panel-bd">
{{if !empty($data['images'])}}
<div data-am-widget="slider" class="am-slider am-slider-default" data-am-slider='{"controlNav":false}'>

View File

@ -6,12 +6,12 @@
<!-- form start -->
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/customview/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/customview/index', $params)}}">
<legend>
<span class="am-text-default">自定义页面{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<span class="am-text-default">{{:MyLang('customview.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/customview/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
<div class="am-form-group">
<label>标题<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="title" placeholder="标题" minlength="2" maxlength="60" data-validation-message="标题长度 2~60 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.title}}" {{/if}} required />
<label>{{:MyLang('customview.form_item_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="title" placeholder="{{:MyLang('customview.form_item_title_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('customview.form_item_title_message')}}" class="am-radius" {{if !empty($data['title'])}} value="{{$data.title}}" {{/if}} required />
</div>
<div class="am-cf">
<div class="am-u-md-6 am-padding-horizontal-0">
@ -24,7 +24,7 @@
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">是否含头部</label>
<label class="am-block">{{:MyLang('customview.form_item_is_header')}}</label>
<input name="is_header" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_header']) and $data['is_header'] eq 1) or !isset($data['is_header'])}}checked="true"{{/if}} />
</div>
</div>
@ -34,13 +34,13 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">是否含尾部</label>
<label class="am-block">{{:MyLang('customview.form_item_is_footer')}}</label>
<input name="is_footer" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_footer']) and $data['is_footer'] eq 1) or !isset($data['is_footer'])}}checked="true"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">是否满屏</label>
<label class="am-block">{{:MyLang('customview.form_item_is_full_screen')}}</label>
<input name="is_full_screen" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_full_screen']) and $data['is_full_screen'] eq 1) or !isset($data['is_full_screen'])}}checked="true"{{/if}} />
</div>
</div>
@ -49,8 +49,8 @@
</div>
<div class="am-form-group">
<label>内容<span class="am-form-group-label-tips-must">*</span>{{if IsMobile()}}<span class="am-form-group-label-tips">更多编辑功能请使用电脑访问</span>{{/if}}</label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="10" maxlength="105000" {{if !IsMobile()}}id="editor-tag" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>'customview'])}}" placeholder="内容长度最少 10~105000 个字符" {{else /}} placeholder="内容长度最少 10~105000 个字符更多编辑功能请使用电脑访问" {{/if}} data-validation-message="内容长度最少 10~105000 个字符" required>{{if !empty($data)}}{{$data.content}}{{/if}}</textarea>
<label>{{:MyLang('customview.form_item_content_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<textarea class="am-radius am-validate" name="content" rows="5" minlength="10" maxlength="105000" {{if !IsMobile()}}id="editor-tag" data-url="{{:MyUrl('admin/ueditor/index', ['path_type'=>'customview'])}}" placeholder="{{:MyLang('customview.form_item_content_message')}}" {{else /}} placeholder="{{:MyLang('customview.form_item_content_placeholder')}}" {{/if}} data-validation-message="{{:MyLang('customview.form_item_content_message')}}" required>{{if !empty($data)}}{{$data.content}}{{/if}}</textarea>
</div>
<div class="am-form-popup-submit">

View File

@ -3,12 +3,12 @@
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-success am-btn-xs am-icon-cloud-upload am-radius" data-am-modal="{target: '#popup-design-upload'}"> 导入</button>
<button type="button" class="am-btn am-btn-success am-btn-xs am-icon-cloud-upload am-radius" data-am-modal="{target: '#popup-design-upload'}"> {{:MyLang('import_title')}}</button>
<a href="{{:MyUrl('admin/design/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus" target="_blank"> {{:MyLang('add_title')}}</a>
<!-- 父级内容 -->
{__block__}
{{if !empty($store_design_url)}}
<a class="am-margin-left-sm" href="{{$store_design_url}}" target="_blank">更多设计模板下载 <i class="am-icon-external-link"></i></a>
<a class="am-margin-left-sm" href="{{$store_design_url}}" target="_blank">{{:MyLang('design.nav_store_design_name')}} <i class="am-icon-external-link"></i></a>
{{/if}}
{{/block}}
@ -18,20 +18,21 @@
<div class="am-popup am-radius" id="popup-design-upload">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">导入</h4>
<h4 class="am-popup-title">{{:MyLang('import_title')}}</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<!-- win form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/design/upload')}}" method="POST" request-type="ajax-reload" enctype="multipart/form-data">
<div class="am-alert am-radius am-alert-tips">
<p class="am-margin-top-xs">1. 选择已下载的页面设计zip包</p>
<p class="am-margin-top-xs">2. 导入将自动新增一条数据</p>
</div>
{{if is_array(MyLang('design.upload_list_tips'))}}
<div class="am-alert am-radius am-alert-tips">
<p class="am-margin-top-xs">{{:implode('</p><p class="am-margin-top-xs">', MyLang('design.upload_list_tips'))}}</p>
</div>
{{/if}}
<div class="am-form-group am-form-group-refreshing">
<div class="am-form-file">
<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="file" class="file-event" data-tips-tag="#form-payment-tips" data-validation-message="请选择需要上传的文件" accept=".zip" multiple required />
<button type="button" class="am-btn am-btn-default am-btn-sm am-radius"><i class="am-icon-cloud-upload"></i> {{:MyLang('form_choice_images_title')}}</button>
<input type="file" name="file" class="file-event" data-tips-tag="#form-payment-tips" data-validation-message="{{:MyLang('form_upload_file_message')}}" accept=".zip" multiple required />
<div id="form-payment-tips" class="am-margin-top-xs"></div>
</div>
</div>

View File

@ -4,7 +4,7 @@
<i class="am-icon-eye"></i>
<span>{{:MyLang('view_title')}}</span>
</a>
<button type="button" class="am-btn am-btn-warning am-btn-xs am-radius am-btn-block submit-ajax" data-url="{{:MyUrl('admin/design/sync')}}" data-id="{{$module_data.id}}" data-msg="数据同步到首页拖拽可视化中、之后再修改数据不受影响、但是不要删除相关附件">
<button type="button" class="am-btn am-btn-warning am-btn-xs am-radius am-btn-block submit-ajax" data-url="{{:MyUrl('admin/design/sync')}}" data-id="{{$module_data.id}}" data-msg="{{:MyLang('design.operate_sync_tips')}}">
<i class="am-icon-refresh"></i>
<span>{{:MyLang('sync_title')}}</span>
</button>

View File

@ -7,39 +7,39 @@
<!-- 基础信息 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">基础信息</h3>
<h3 class="am-panel-title">{{:MyLang('form_base_data_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group am-form-file">
<label class="am-block">logo<span class="am-form-group-label-tips">建议大小300*300px</span></label>
<label class="am-block">LOGO<span class="am-form-group-label-tips">{{:MyLang('design.form_logo_tips')}}</span></label>
<ul class="plug-file-upload-view shop-logo-images-view" data-form-name="logo" data-max-number="1" data-dialog-type="images">
{{if !empty($data['logo'])}}
<li>
<input type="text" name="logo" value="{{$data.logo}}" data-validation-message="请上传logo" />
<input type="text" name="logo" value="{{$data.logo}}" data-validation-message="{{:MyLang('form_upload_images_message')}}" />
<img src="{{$data.logo}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.shop-logo-images-view">+上传logo</div>
<div class="plug-file-upload-submit" data-view-tag="ul.shop-logo-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称格式1~16个字符" maxlength="16" data-validation-message="名称格式1~16个字符" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
<label>{{:MyLang('design.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('design.form_item_name_message')}}" maxlength="16" data-validation-message="{{:MyLang('design.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('form_is_enable_title')}}<span class="am-form-group-label-tips">可选、默认是</span></label>
<label class="am-block">{{:MyLang('form_is_enable_title')}}</label>
<input name="is_enable" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" 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">
<label class="am-block">是否含头部<span class="am-form-group-label-tips">可选、默认是</span></label>
<label class="am-block">{{:MyLang('design.form_item_is_header')}}</label>
<input name="is_header" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_header']) and $data['is_header'] eq 1) or !isset($data['is_header'])}}checked="true"{{/if}} />
</div>
<div class="am-form-group">
<label class="am-block">是否含尾部<span class="am-form-group-label-tips">可选、默认是</span></label>
<label class="am-block">{{:MyLang('design.form_item_is_footer')}}</label>
<input name="is_footer" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_footer']) and $data['is_footer'] eq 1) or !isset($data['is_footer'])}}checked="true"{{/if}} />
</div>
</div>
@ -48,7 +48,7 @@
<!-- SEO -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">SEO</h3>
<h3 class="am-panel-title">{{:MyLang('form_seo_data_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
{{include file="lib/seo" /}}

View File

@ -7,12 +7,12 @@
<span class="am-text-xs">{{$data.name}}</span>
<a href="javascript:;" class="am-icon-eyedropper am-text-xs am-margin-left-xs" data-am-modal="{target: '#popup-saveinfo'}"></a>
</span>
<a href="{{:MyUrl('index/design/index', ['id'=>$data['id']])}}" target="_blank" class="am-fr am-text-xs am-margin-top-sm">查看 >></a>
<a href="{{:MyUrl('index/design/index', ['id'=>$data['id']])}}" target="_blank" class="am-fr am-text-xs am-margin-top-sm">{{:MyLang('view_title')}} >></a>
</legend>
<div class="am-padding-bottom-sm">
<div class="layout-operate-container am-fr" data-save-url="{{:MyUrl('admin/design/save')}}" data-json="{{:urlencode(json_encode($data))}}">
<a href="javascript:;" class="am-btn am-btn-warning am-btn-xs am-radius window-close-event am-icon-close" data-msg="请确认数据是否保存、继续关闭本页吗?"> 关闭</a>
<button type="button" class="am-btn am-btn-success am-btn-xs am-radius am-margin-left-sm am-icon-save" data-am-loading="{loadingText:' 处理中...'}"> 保存</button>
<a href="javascript:;" class="am-btn am-btn-warning am-btn-xs am-radius window-close-event am-icon-close" data-msg="{{:MyLang('save_close_page_confirm_tips')}}"> {{:MyLang('close_title')}}</a>
<button type="button" class="am-btn am-btn-success am-btn-xs am-radius am-margin-left-sm am-icon-save" data-am-loading="{loadingText:' {{:MyLang('processing_tips')}}'}"> {{:MyLang('save_title')}}</button>
</div>
{{include file="../../../layout/view/base" /}}
</div>
@ -22,10 +22,7 @@
{{else /}}
<div class="table-no">
<i class="am-icon-skyatlas am-icon-lg"></i>
<div class="am-margin-top-sm">
<span>请先添加数据</span>
<a href="{{:MyUrl('admin/design/saveinfo')}}" class="am-text-secondary am-margin-left-sm"> 去添加数据 >></a>
</div>
<p>{{:MyLang('no_data')}}</p>
</div>
{{/if}}

View File

@ -42,11 +42,11 @@
<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="am-form-group-label-tips">请先保存配置后,再进行测试</span></label>
<label>{{:MyLang('email.form_item_test')}}<span class="am-form-group-label-tips">{{:MyLang('email.form_item_test_tips')}}</span></label>
<div class="am-input-group am-input-group-sm">
<input type="text" placeholder="测试接收的邮件地址" class="am-radius test-email-value" />
<input type="text" placeholder="{{:MyLang('email.form_item_test')}}" 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>
<button class="am-btn am-btn-default am-radius test-email-submit" type="button" data-url="{{:MyUrl('admin/email/emailtest')}}">{{:MyLang('email.form_item_test_button_title')}}</button>
</span>
</div>
</div>

View File

@ -12,7 +12,7 @@
<!-- 后台 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">后台</h3>
<h3 class="am-panel-title">{{:MyLang('email.base_item_admin_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
@ -25,7 +25,7 @@
<!-- 前端 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">前端</h3>
<h3 class="am-panel-title">{{:MyLang('email.base_item_index_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">

View File

@ -1,13 +1,11 @@
<ul class="am-nav am-nav-pills table-nav second-nav">
<li {{if $nav_type eq 'index'}}class="am-active"{{/if}} data-type="index">
<a href="{{:MyUrl('admin/email/index', ['type'=>'index'])}}">邮箱设置</a>
</li>
<li {{if $nav_type eq 'message'}}class="am-active"{{/if}} data-type="message">
<a href="{{:MyUrl('admin/email/index', ['type'=>'message'])}}">消息模板</a>
</li>
{{foreach $nav_data as $v}}
<li {{if $nav_type eq $v['type']}}class="am-active"{{/if}} data-type="{{$v.type}}">
<a href="{{:MyUrl('admin/email/index', ['type'=>$v['type']])}}">{{$v.name}}</a>
</li>
{{/foreach}}
</ul>
<div class="am-alert am-alert-warning am-radius am-margin-bottom-0" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p class="am-text-xs">由于不同邮箱平台存在一些差异、配置也有所不同、具体以邮箱平台配置教程为准 {{if !empty($site_store_links) and !empty($site_store_links['email_set_course'])}}<a href="{{$site_store_links.email_set_course}}" class="am-margin-left-sm" target="_blank">查看配置教程 <i class="am-icon-external-link"></i></a>{{/if}}</p>
<p class="am-text-xs">{{:MyLang('email.top_tips')}} {{if !empty($site_store_links) and !empty($site_store_links['email_set_course'])}}<a href="{{$site_store_links.email_set_course}}" class="am-margin-left-sm" target="_blank">{{:MyLang('email.view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}</p>
</div>

View File

@ -13,14 +13,14 @@
<div class="am-popup am-radius" id="data-save-win">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title" data-add-title="快递添加" data-edit-title="快递编辑">快递添加</h4>
<h4 class="am-popup-title" data-add-title="{{:MyLang('express.base_nav_title')}}{{:MyLang('add_title')}}" data-edit-title="{{:MyLang('express.base_nav_title')}}{{:MyLang('edit_title')}}">{{:MyLang('express.base_nav_title')}}{{:MyLang('add_title')}}</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/express/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
<div class="am-form-group am-form-file">
<label class="am-block">icon图标</label>
<label class="am-block">{{:MyLang('express.form_item_icon')}}</label>
<ul class="plug-file-upload-view express-icon-images-view" data-form-name="icon" data-max-number="1" data-dialog-type="images">
<li>
<input type="hidden" name="icon" value="" />
@ -28,15 +28,15 @@
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.express-icon-images-view">+上传图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.express-icon-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
<label>{{:MyLang('express.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="{{:MyLang('express.form_item_name_message')}}" name="name" minlength="2" maxlength="16" data-validation-message="{{:MyLang('express.form_item_name_message')}}" class="am-radius" required />
</div>
<div class="am-form-group">
<label>官网地址</label>
<input type="url" placeholder="官网地址、以http://或https://开头" name="website_url" data-validation-message="官网地址格式有误" class="am-radius" {{if !empty($data['website_url'])}} value="{{$data.website_url}}"{{/if}} />
<label>{{:MyLang('express.form_item_website_url')}}</label>
<input type="url" placeholder="{{:MyLang('express.form_item_website_url_placeholder')}}" name="website_url" data-validation-message="{{:MyLang('express.form_item_website_url_message')}}" class="am-radius" {{if !empty($data['website_url'])}} value="{{$data.website_url}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{:MyLang('form_sort_title')}}</label>

View File

@ -8,7 +8,7 @@
<!-- 商品视频 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">商品视频</div>
<div class="am-panel-hd">{{:MyLang('goods.form_item_video_title')}}</div>
<div class="am-panel-bd">
{{if !empty($data['video'])}}
<video src="{{$data.video}}" class="am-img-responsive" controls="controls" preload="auto">
@ -22,7 +22,7 @@
<!-- 商品相册 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">商品相册</div>
<div class="am-panel-hd">{{:MyLang('goods.form_item_photo_title')}}</div>
<div class="am-panel-bd">
{{if !empty($data['photo']) and is_array($data['photo'])}}
<div class="am-scrollable-vertical am-nowrap-initial">
@ -46,7 +46,7 @@
<!-- 商品规格 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">商品规格</div>
<div class="am-panel-hd">{{:MyLang('goods.form_item_spec_title')}}</div>
<div class="am-panel-bd">
{{if !empty($specifications) and is_array($specifications)}}
<div class="am-scrollable-vertical am-scrollable-horizontal">
@ -56,13 +56,13 @@
{{foreach $specifications.type as $line_k=>$line_v}}
<th>{{$line_v.name}}</th>
{{/foreach}}
<th>销售价(元)</th>
<th>原价(元)</th>
<th>库存</th>
<th>重量(kg)</th>
<th>体积(m³)</th>
<th>编码</th>
<th>条形码</th>
<th>{{:MyLang('goods.form_spec_thead_price_title')}}</th>
<th>{{:MyLang('goods.form_spec_thead_original_price_title')}}</th>
<th>{{:MyLang('goods.form_spec_thead_inventory_title')}}</th>
<th>{{:MyLang('goods.form_spec_thead_weight_title')}}</th>
<th>{{:MyLang('goods.form_spec_thead_volume_title')}}</th>
<th>{{:MyLang('goods.form_spec_thead_coding_title')}}</th>
<th>{{:MyLang('goods.form_spec_thead_barcode_title')}}</th>
</tr>
</thead>
<tbody>
@ -102,7 +102,7 @@
<!-- 商品规格图片 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">商品规格图片</div>
<div class="am-panel-hd">{{:MyLang('goods.form_spec_images_title')}}</div>
<div class="am-panel-bd am-padding-xs">
{{if !empty($specifications) and is_array($specifications)}}
<div class="am-scrollable-vertical">
@ -131,7 +131,7 @@
<!-- 商品参数 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">商品参数</div>
<div class="am-panel-hd">{{:MyLang('goods.form_item_params_title')}}</div>
<div class="am-panel-bd">
{{include file="public/goodsparamstemplate/detail" /}}
</div>
@ -139,7 +139,7 @@
<!-- 电脑端详情 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">电脑端详情</div>
<div class="am-panel-hd">{{:MyLang('goods.form_item_web_title')}}</div>
<div class="am-panel-bd">
{{if !empty($data['content_web'])}}
<div class="am-scrollable-vertical am-nowrap-initial am-img-responsive">
@ -153,7 +153,7 @@
<!-- 手机端详情 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">手机端详情</div>
<div class="am-panel-hd">{{:MyLang('goods.form_item_app_title')}}</div>
<div class="am-panel-bd">
{{if !empty($data['content_app']) and is_array($data['content_app'])}}
<div class="am-scrollable-vertical am-nowrap-initial am-img-responsive">
@ -182,7 +182,7 @@
<!-- 虚拟商品展示数据 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">虚拟商品展示数据</div>
<div class="am-panel-hd">{{:MyLang('goods.form_item_fictitious_title')}}</div>
<div class="am-panel-bd">
{{if !empty($data['fictitious_goods_value'])}}
<div class="am-scrollable-vertical am-nowrap-initial am-img-responsive">
@ -195,23 +195,5 @@
</div>
<!-- SEO信息 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">SEO信息</div>
<div class="am-panel-bd">
{{if !empty($data)}}
<dl class="dl-content">
<dt>SEO标题</dt>
<dd>{{$data.seo_title}}</dd>
<dt>SEO关键字</dt>
<dd>{{$data.seo_keywords}}</dd>
<dt>SEO描述</dt>
<dd>{{$data.seo_desc}}</dd>
</dl>
{{else /}}
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
{{include file="lib/seo_data" /}}
{{/block}}

View File

@ -6,61 +6,39 @@
<!-- form start -->
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/goods/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/goods/index', $params)}}" enctype="multipart/form-data">
<legend>
<span class="am-text-default">商品{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<span class="am-text-default">{{:MyLang('goods.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/goods/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
<nav class="goods-nav goods-nav-retract" style="right:-110px;">
<ul>
<li>
<a href="javascript:;" data-value="#goods-nav-base">基础信息</a>
</li>
<li>
<a href="javascript:;" data-value="#goods-nav-operations">商品规格</a>
</li>
<li>
<a href="javascript:;" data-value="#goods-nav-parameters">商品参数</a>
</li>
<li>
<a href="javascript:;" data-value="#goods-nav-photo">商品相册</a>
</li>
<li>
<a href="javascript:;" data-value="#goods-nav-video">商品视频</a>
</li>
<li>
<a href="javascript:;" data-value="#goods-nav-app">手机详情</a>
</li>
<li>
<a href="javascript:;" data-value="#goods-nav-web">电脑详情</a>
</li>
<li>
<a href="javascript:;" data-value="#goods-nav-fictitious">虚拟信息</a>
</li>
<li>
<a href="javascript:;" data-value="#goods-nav-extends">扩展数据</a>
</li>
<li>
<a href="javascript:;" data-value="#goods-nav-seo">SEO</a>
</li>
<li class="am-text-center am-padding-xs nav-shrink-submit" style="width:50px;left:-80px;">
<i class="am-icon-sm am-icon-angle-double-left"></i>
</li>
</ul>
</nav>
<!-- 右侧快捷导航 -->
{{if !empty($nav_right_list) and is_array($nav_right_list)}}
<nav class="goods-nav goods-nav-retract" style="right:-110px;">
<ul>
{{foreach $nav_right_list as $v}}
<li>
<a href="javascript:;" data-value="#goods-nav-{{$v.type}}">{{$v.name}}</a>
</li>
{{/foreach}}
<li class="am-text-center am-padding-xs nav-shrink-submit" style="width:50px;left:-80px;">
<i class="am-icon-sm am-icon-angle-double-left"></i>
</li>
</ul>
</nav>
{{/if}}
<!-- 基础信息 -->
<div class="am-panel am-panel-default" id="goods-nav-base">
<div class="am-panel-hd">
<h3 class="am-panel-title">基础信息</h3>
<h3 class="am-panel-title">{{:MyLang('form_base_data_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>标题名称<span class="am-form-group-label-tips-must">*</span></label>
<label>{{:MyLang('goods.form_item_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="hidden" name="title_color" value="{{if !empty($data['title_color'])}}{{$data.title_color}}{{/if}}" />
<div class="am-input-group am-input-group-sm">
<input type="text" name="title" placeholder="标题名称" minlength="2" maxlength="160" data-validation-message="标题名称格式 2~160 个字符" 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 />
<input type="text" name="title" placeholder="{{:MyLang('goods.form_item_title_message')}}" minlength="2" maxlength="160" data-validation-message="{{:MyLang('goods.form_item_title_message')}}" class="am-form-field am-radius" {{if !empty($data['title'])}} value="{{$data.title}}" {{/if}} {{if !empty($data['title_color'])}} style="color:{{$data.title_color}};" {{/if}} required />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default am-btn-xs colorpicker-submit" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
@ -71,9 +49,9 @@
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>商品分类<span class="am-form-group-label-tips-must">*</span></label>
<label>{{:MyLang('goods.form_item_category_id')}}<span class="am-form-group-label-tips-must">*</span></label>
<br />
<select name="category_id" class="am-radius chosen-select" multiple="multiple" minchecked="1" data-placeholder="请选择..." data-validation-message="请至少选择一个商品分类" data-base-template-url="{{:MyUrl('admin/goods/basetemplate')}}" required>
<select name="category_id" class="am-radius chosen-select" multiple="multiple" minchecked="1" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="{{:MyLang('goods.form_item_category_id_message')}}" data-base-template-url="{{:MyUrl('admin/goods/basetemplate')}}" required>
{{if !empty($goods_category_list)}}
{{foreach $goods_category_list as $v}}
<option value="{{$v.id}}" {{if !empty($data['category_ids']) and in_array($v['id'], $data['category_ids'])}}selected{{/if}}>{{$v.name}}</option>
@ -96,14 +74,14 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>商品简述</label>
<input type="text" name="simple_desc" placeholder="商品简述" maxlength="230" data-validation-message="商品简述格式 最多230个字符" class="am-radius" {{if !empty($data)}} value="{{$data.simple_desc}}"{{/if}} />
<label>{{:MyLang('goods.form_item_simple_desc')}}</label>
<input type="text" name="simple_desc" placeholder="{{:MyLang('goods.form_item_simple_desc_message')}}" maxlength="230" data-validation-message="{{:MyLang('goods.form_item_simple_desc_message')}}" class="am-radius" {{if !empty($data['simple_desc'])}} value="{{$data.simple_desc}}"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>商品型号</label>
<input type="text" name="model" placeholder="商品型号" maxlength="30" data-validation-message="商品型号格式 最多30个字符" class="am-radius" {{if !empty($data)}} value="{{$data.model}}"{{/if}} />
<label>{{:MyLang('goods.form_item_model')}}</label>
<input type="text" name="model" placeholder="{{:MyLang('goods.form_item_model_message')}}" maxlength="30" data-validation-message="{{:MyLang('goods.form_item_model_message')}}" class="am-radius" {{if !empty($data['model'])}} value="{{$data.model}}"{{/if}} />
</div>
</div>
</div>
@ -111,10 +89,10 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">品牌</label>
<select name="brand_id" class="am-radius chosen-select" data-placeholder="请选择..." data-validation-message="请选择品牌">
<label class="am-block">{{:MyLang('goods.form_item_brand')}}</label>
<select name="brand_id" class="am-radius chosen-select" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="{{:MyLang('goods.form_item_brand_message')}}">
{{if !empty($brand_list)}}
<option value="0">请选择...</option>
<option value="0">{{:MyLang('please_select_tips')}}</option>
{{foreach $brand_list as $v}}
<option value="{{$v.id}}" {{if isset($data['brand_id']) and $data['brand_id'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
@ -124,9 +102,9 @@
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">生产地</label>
<select name="place_origin" class="am-radius chosen-select" data-placeholder="请选择..." data-validation-message="请选择生产地">
<option value="0">请选择...</option>
<label class="am-block">{{:MyLang('goods.form_item_place_origin')}}</label>
<select name="place_origin" class="am-radius chosen-select" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="{{:MyLang('goods.form_item_place_origin_message')}}">
<option value="0">{{:MyLang('please_select_tips')}}</option>
{{if !empty($region_province_list)}}
{{foreach $region_province_list as $v}}
<option value="{{$v.id}}" {{if !empty($data['place_origin']) and $v['id'] eq $data['place_origin']}}selected{{/if}}>{{$v.name}}</option>
@ -140,15 +118,15 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>库存单位<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="inventory_unit" placeholder="库存单位" minlength="1" maxlength="6" data-validation-message="库存单位格式 1~6 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.inventory_unit}}"{{/if}} required />
<label>{{:MyLang('goods.form_item_inventory_unit')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="inventory_unit" placeholder="{{:MyLang('goods.form_item_inventory_unit_message')}}" minlength="1" maxlength="6" data-validation-message="{{:MyLang('goods.form_item_inventory_unit_message')}}" class="am-radius" {{if !empty($data['inventory_unit'])}} value="{{$data.inventory_unit}}"{{/if}} required />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>购买赠送积分比例<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '1. 按照商品金额比例乘以数量的比例进行发放<br />2. 订单完成自动将发放到用户锁定积分<br />3. 站点设置->扩展中脚本处理发放积分', trigger: 'hover focus', theme: 'sm'}"></a></label>
<label>{{:MyLang('goods.form_item_give_integral')}}{{if is_array(MyLang('goods.form_item_give_integral_tips'))}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:implode('<br />', MyLang('goods.form_item_give_integral_tips'))}}', trigger: 'hover focus', theme: 'sm'}"></a>{{/if}}</label>
<div class="am-input-group am-input-group-sm">
<input type="number" name="give_integral" placeholder="购买赠送积分" min="0" max="100" data-validation-message="购买赠送积分比例 0~100 的数字" class="am-form-field am-radius" {{if !empty($data['give_integral'])}} value="{{$data.give_integral}}"{{/if}} />
<input type="number" name="give_integral" placeholder="{{:MyLang('goods.form_item_give_integral_placeholder')}}" min="0" max="100" data-validation-message="{{:MyLang('goods.form_item_give_integral_message')}}" class="am-form-field am-radius" {{if !empty($data['give_integral'])}} value="{{$data.give_integral}}"{{/if}} />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default am-radius">%</button>
</span>
@ -160,14 +138,14 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>最低起购数量<span class="am-form-group-label-tips-must">*</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) or empty($data['buy_min_number'])}}1{{else /}}{{$data.buy_min_number}}{{/if}}" required />
<label>{{:MyLang('goods.form_item_buy_min_number')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="number" name="buy_min_number" placeholder="{{:MyLang('goods.form_item_buy_min_number_message')}}" min="1" max="100000000" data-validation-message="{{:MyLang('goods.form_item_buy_min_number_message')}}" class="am-radius" value="{{if empty($data) or empty($data['buy_min_number'])}}1{{else /}}{{$data.buy_min_number}}{{/if}}" required />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>单次最大购买数量<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '1. 单次最大数值 100000000<br />2. 小于等于0或空则不限', trigger: 'hover focus', theme: 'sm'}"></a></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}} />
<label>{{:MyLang('goods.form_item_buy_max_number')}}{{if is_array(MyLang('goods.form_item_buy_max_number_tips'))}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:implode('<br />', MyLang('goods.form_item_buy_max_number_tips'))}}', trigger: 'hover focus', theme: 'sm'}"></a>{{/if}}</label>
<input type="number" name="buy_max_number" placeholder="{{:MyLang('goods.form_item_buy_max_number_message')}}" min="0" max="100000000" data-validation-message="{{:MyLang('goods.form_item_buy_max_number_message')}}" class="am-radius" {{if !empty($data['buy_max_number'])}} value="{{$data.buy_max_number}}"{{/if}} />
</div>
</div>
</div>
@ -175,14 +153,14 @@
<div class="am-cf">
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>商品类型</label>
<div class="am-alert am-alert-warning am-radius am-margin-top-0" data-am-alert>
<p>1. 当前系统配置的站点类型为[ <strong class="am-text-danger">{{$common_site_type_list[$common_site_type]['name']}}</strong> ]</p>
<p>2. 如果商品类型未配置则跟随系统配置的站点类型</p>
<p>3. 当设置的商品类型不在系统设置的站点类型包含的时候,商品加入购物车功能将失效</p>
</div>
<select name="site_type" class="am-radius chosen-select am-margin-top-xs" data-placeholder="可选择..." data-validation-message="请选择商品类型">
<option value="">可选择...</option>
<label>{{:MyLang('goods.form_item_site_type')}}</label>
{{if is_array(MyLang('goods.form_item_site_type_tips'))}}
<div class="am-alert am-alert-warning am-radius am-margin-top-0" data-am-alert>
<p>{{:implode('</p><p>', MyLang('goods.form_item_site_type_tips'))}}</p>
</div>
{{/if}}
<select name="site_type" class="am-radius chosen-select am-margin-top-xs" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('goods.form_item_site_type_message')}}">
<option value="">{{:MyLang('optional_tips')}}</option>
{{if !empty($common_site_type_list)}}
{{foreach $common_site_type_list as $v}}
<option value="{{$v.value}}" {{if isset($data['site_type']) and $v['value'] eq $data['site_type']}}selected{{/if}}>{{$v.name}}</option>
@ -195,7 +173,7 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group am-form-file">
<label class="am-block">封面图片<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '留空则取相册第一张图、建议800*800px', trigger: 'hover focus', theme: 'sm'}"></a></label>
<label class="am-block">{{:MyLang('goods.form_item_images')}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:MyLang('goods.form_item_images_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<ul class="plug-file-upload-view goods-recommended-images-view" data-form-name="images" data-max-number="1" data-dialog-type="images">
{{if !empty($data['images'])}}
<li>
@ -205,17 +183,17 @@
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-recommended-images-view">+上传图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-recommended-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">扣减库存<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '扣除规则根据后台配置->扣除库存规则而定', trigger: 'hover focus', theme: 'sm'}"></a></label>
<label class="am-block">{{:MyLang('goods.form_item_is_deduction_inventory')}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:MyLang('goods.form_item_is_deduction_inventory_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<input name="is_deduction_inventory" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" 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="am-block">上下架<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '下架后用户不可见', trigger: 'hover focus', theme: 'sm'}"></a></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}} />
<label class="am-block">{{:MyLang('goods.form_item_is_shelves')}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:MyLang('goods.form_item_is_shelves_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<input name="is_shelves" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" 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>
</div>
@ -227,7 +205,7 @@
<!-- 商品规格 -->
<div class="am-panel am-panel-default" id="goods-nav-operations">
<div class="am-panel-hd">
<h3 class="am-panel-title">商品规格<span class="am-form-group-label-tips-must">*</span></h3>
<h3 class="am-panel-title">{{:MyLang('goods.form_item_spec_title')}}<span class="am-form-group-label-tips-must">*</span></h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -239,7 +217,7 @@
<!-- 商品参数 -->
<div class="am-panel am-panel-default" id="goods-nav-parameters">
<div class="am-panel-hd">
<h3 class="am-panel-title">商品参数</h3>
<h3 class="am-panel-title">{{:MyLang('goods.form_item_params_title')}}</h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -247,13 +225,13 @@
<!-- 通过配置生成商品参数 -->
<div class="am-dropdown" id="parameters-quick-container" data-am-dropdown>
<span class="business-operations-submit am-dropdown-toggle parameters-quick-add">
<span>商品参数模板</span>
<span>{{:MyLang('goods.form_params_select_title')}}</span>
<i class="am-icon-caret-down"></i>
</span>
<div class="am-dropdown-content parameters-quick-config">
<div class="am-margin-bottom-sm">
<select class="am-radius chosen-select" data-placeholder="商品参数模板..." data-validation-message="请选择商品参数模板">
<option value="">商品参数模板...</option>
<select class="am-radius chosen-select" data-placeholder="{{:MyLang('goods.form_params_select_placeholder')}}" data-validation-message="{{:MyLang('goods.form_params_select_message')}}">
<option value="">{{:MyLang('goods.form_params_select_placeholder')}}</option>
{{if !empty($goods_base_template) and !empty($goods_base_template['params']) and is_array($goods_base_template['params'])}}
{{foreach $goods_base_template.params as $v}}
<option value="{{:urlencode(json_encode($v['config_data'], JSON_UNESCAPED_UNICODE))}}" data-origin-name="{{$v.name}}">{{$v.name}}</option>
@ -261,21 +239,21 @@
{{/if}}
</select>
</div>
<textarea rows="5" placeholder="粘贴商品参数配置信息"></textarea>
<textarea rows="5" placeholder="{{:MyLang('goods.form_params_value_placeholder')}}"></textarea>
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block am-margin-top-sm">{{:MyLang('confirm_title')}}</button>
</div>
</div>
<!-- 复制操作 -->
<span class="business-operations-submit am-margin-left-sm parameters-quick-copy">
<i class="am-icon-copy"></i>
<span>复制配置</span>
<span>{{:MyLang('goods.form_params_config_copy_title')}}</span>
</span>
<!-- 清空操作 -->
<span class="business-operations-submit am-margin-left-sm parameters-quick-remove">
<i class="am-icon-times"></i>
<span>清空参数</span>
<span>{{:MyLang('goods.form_params_config_empty_title')}}</span>
</span>
<span class="am-text-warning am-margin-left-sm">可直接点中参数行拖拽排序或点击上下移动</span>
<span class="am-text-warning am-margin-left-sm">{{:MyLang('goods.form_params_list_content_tips')}}</span>
<!-- 参数表格 -->
{{include file="public/goodsparamstemplate/table" /}}
@ -286,13 +264,13 @@
<!-- 相册 -->
<div class="am-panel am-panel-default" id="goods-nav-photo">
<div class="am-panel-hd">
<h3 class="am-panel-title">商品相册<span class="am-form-group-label-tips-must">*</span></h3>
<h3 class="am-panel-title">{{:MyLang('goods.form_item_photo_title')}}<span class="am-form-group-label-tips-must">*</span></h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
<div class="am-alert am-alert-warning am-radius" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>可拖拽图片进行排序建议图片尺寸一致800*800px、最多30张</p>
<p>{{:MyLang('goods.form_photo_top_tips')}}</p>
</div>
<ul class="plug-file-upload-view goods-photo-view" data-form-name="photo[]" data-max-number="30" data-dialog-type="images">
{{if !empty($data['photo'])}}
@ -305,7 +283,7 @@
{{/foreach}}
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-photo-view">+上传相册</div>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-photo-view">+ {{:MyLang('goods.form_photo_button_add_name')}}</div>
</div>
</div>
</div>
@ -313,13 +291,13 @@
<!-- 视频 -->
<div class="am-panel am-panel-default" id="goods-nav-video">
<div class="am-panel-hd">
<h3 class="am-panel-title">商品视频</h3>
<h3 class="am-panel-title">{{:MyLang('goods.form_item_video_title')}}</h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
<div class="am-alert am-alert-warning am-radius" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>视频比图文更有具带入感,仅支持 mp4 格式</p>
<p>{{:MyLang('goods.form_video_top_tips')}}</p>
</div>
<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'])}}
@ -330,7 +308,7 @@
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-video-view">+上传视频</div>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-video-view">+ {{:MyLang('goods.form_video_button_add_name')}}</div>
</div>
</div>
</div>
@ -338,30 +316,30 @@
<!-- 手机详情 -->
<div class="am-panel am-panel-default" id="goods-nav-app">
<div class="am-panel-hd">
<h3 class="am-panel-title">手机详情</h3>
<h3 class="am-panel-title">{{:MyLang('goods.form_item_app_title')}}</h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
<div class="am-alert am-alert-warning am-radius" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>设置手机详情后、在手机模式下将展示手机详情、比如[小程序、APP]</p>
<p>{{:MyLang('goods.form_app_top_tips')}}</p>
</div>
<ul class="content-app-items"
data-max-count="10"
data-required="1"
data-images-name="content_app_images"
data-content-name="content_app_text"
data-images-title="上传图片"
data-content-title="文本内容"
data-delete-title="删除"
data-drag-title="拖拽排序"
data-images-title="{{:MyLang('form_upload_images_title')}}"
data-content-title="{{:MyLang('goods.form_app_value_title')}}"
data-delete-title="{{:MyLang('delete_title')}}"
data-drag-title="{{:MyLang('sort_title')}}"
>
{{if !empty($data['content_app'])}}
{{foreach $data.content_app as $v}}
<li>
<div>
<div class="content-app-left">
<label class="am-block">图片</label>
<label class="am-block">{{:MyLang('images_title')}}</label>
<ul class="plug-file-upload-view goods-content-app-images-view-{{$v.id}}" data-form-name="content_app_images_{{$v.id}}" data-max-number="1" data-dialog-type="images">
{{if !empty($v['images'])}}
<li>
@ -371,20 +349,20 @@
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-content-app-images-view-{{$v.id}}">+上传图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-content-app-images-view-{{$v.id}}">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
<div class="am-form-group content-app-right fr">
<label>文本内容</label>
<textarea rows="5" name="content_app_text_{{$v.id}}" maxlength="105000" class="am-radius" placeholder="文本内容" data-validation-message="文本内容最多 105000 个字符">{{if !empty($v)}}{{$v.content_old|raw}}{{/if}}</textarea>
<label>{{:MyLang('goods.form_app_value_title')}}</label>
<textarea rows="5" name="content_app_text_{{$v.id}}" maxlength="105000" class="am-radius" placeholder="{{:MyLang('goods.form_app_value_title')}}" data-validation-message="{{:MyLang('goods.form_app_value_message')}}">{{if !empty($v)}}{{$v.content_old|raw}}{{/if}}</textarea>
</div>
</div>
<a href="javascript:;" class="am-text-xs am-text-danger am-icon-remove content-app-items-rem-sub"> 删除</a>
<a href="javascript:;" class="am-text-xs am-margin-left-lg am-icon-arrows drag-sort-submit"> 拖拽排序</a>
<a href="javascript:;" class="am-text-xs am-text-danger am-icon-remove content-app-items-rem-sub"> {{:MyLang('delete_title')}}</a>
<a href="javascript:;" class="am-text-xs am-margin-left-lg am-icon-arrows drag-sort-submit"> {{:MyLang('sort_title')}}</a>
</li>
{{/foreach}}
{{/if}}
</ul>
<span class="business-operations-submit content-app-items-add-sub">+添加手机详情</span>
<span class="business-operations-submit content-app-items-add-sub">+ {{:MyLang('goods.form_app_button_add_name')}}</span>
</div>
</div>
</div>
@ -392,11 +370,11 @@
<!-- 电脑详情 -->
<div class="am-panel am-panel-default" id="goods-nav-web">
<div class="am-panel-hd">
<h3 class="am-panel-title">电脑详情<span class="am-form-group-label-tips-must">*</span></h3>
<h3 class="am-panel-title">{{:MyLang('goods.form_item_web_title')}}<span class="am-form-group-label-tips-must">*</span></h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
<textarea class="am-radius" name="content_web" maxlength="105000" id="editor-tag" data-validation-message="电脑端详情内容最多 105000 个字符">{{if !empty($data['content_web'])}}{{$data.content_web}}{{/if}}</textarea>
<textarea class="am-radius" name="content_web" maxlength="105000" id="editor-tag" data-validation-message="{{:MyLang('goods.form_web_content_message')}}">{{if !empty($data['content_web'])}}{{$data.content_web}}{{/if}}</textarea>
</div>
</div>
</div>
@ -404,7 +382,7 @@
<!-- 虚拟信息 -->
<div class="am-panel am-panel-default" id="goods-nav-fictitious">
<div class="am-panel-hd">
<h3 class="am-panel-title">虚拟信息</h3>
<h3 class="am-panel-title">{{:MyLang('goods.form_item_fictitious_title')}}</h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -416,7 +394,7 @@
<!-- 扩展数据 -->
<div class="am-panel am-panel-default" id="goods-nav-extends">
<div class="am-panel-hd">
<h3 class="am-panel-title">扩展数据<span class="am-form-group-label-tips">该区域为插件扩展数据,请按照插件文档填写相应的值</span></h3>
<h3 class="am-panel-title">{{:MyLang('goods.form_item_extends_title')}}<span class="am-form-group-label-tips">{{:MyLang('plugins_view_region_config_tips')}}</span></h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
@ -443,7 +421,7 @@
<!-- SEO信息 -->
<div class="am-panel am-panel-default" id="goods-nav-seo">
<div class="am-panel-hd">
<h3 class="am-panel-title">SEO信息</h3>
<h3 class="am-panel-title">{{:MyLang('form_seo_data_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
{{include file="lib/seo" /}}

View File

@ -1,19 +1,19 @@
<!-- 规格快捷操作 -->
<div class="spec-quick am-margin-bottom-lg">
<div>
<div class="am-alert am-alert-warning am-radius" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>1. 批量添加规格可以快速创建商品SKU大量节省SKU编辑时间快捷操作数据不影响SKU数据仅生成的时候重新覆盖SKU。</p>
<p>2. 可以后台 商品管理->商品规格 中配置规格模板、选择商品规格模块快速生成对应规格数据、有效的提供效率</p>
<p>3. 商品添加成功后,仓库管理->仓库商品中添加并配置库存</p>
</div>
{{if is_array(MyLang('goods.form_spec_top_list_tips'))}}
<div class="am-alert am-alert-warning am-radius" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>{{:implode('</p><p>', MyLang('goods.form_spec_top_list_tips'))}}</p>
</div>
{{/if}}
<!-- 规格模板 -->
<div class="am-inline-block business-operations-submit" id="specifications-quick-container"
data-spec-template-tips="规格模板数据有误"
data-spec-template-name-tips="相同规格名称已经存在"
data-spec-template-tips="{{:MyLang('goods.form_spec_template_tips')}}"
data-spec-template-name-tips="{{:MyLang('goods.form_spec_template_name_exist_tips')}}"
>
<select class="am-radius chosen-select" data-placeholder="商品规格模板..." data-validation-message="请选择商品规格模板">
<option value="">商品规格模板...</option>
<select class="am-radius chosen-select" data-placeholder="{{:MyLang('goods.form_spec_template_placeholder')}}" data-validation-message="{{:MyLang('goods.form_spec_template_message')}}">
<option value="">{{:MyLang('goods.form_spec_template_placeholder')}}</option>
{{if !empty($goods_base_template) and !empty($goods_base_template['spec']) and is_array($goods_base_template['spec'])}}
{{foreach $goods_base_template.spec as $v}}
<option value="{{$v.content}}" data-origin-name="{{$v.name}}">{{$v.name}}</option>
@ -21,15 +21,15 @@
{{/if}}
</select>
</div>
<span class="business-operations-submit am-margin-left-sm quick-spec-title-add">+ 批量添加规格</span>
<span class="business-operations-submit am-margin-left-sm am-icon-gg quick-spec-created"> 生成规格</span>
<span class="business-operations-submit am-margin-left-sm quick-spec-title-add">+ {{:MyLang('goods.form_spec_quick_add_title')}}</span>
<span class="business-operations-submit am-margin-left-sm am-icon-gg quick-spec-created"> {{:MyLang('goods.form_spec_quick_generate_title')}}</span>
</div>
<div class="goods-specifications am-margin-top-sm" {{if empty($data['spec_base'])}}style="display: none;"{{/if}}>
<table class="am-table am-table-bordered am-table-centered am-table-striped am-table-hover table-thead-beautify">
<thead>
<tr>
<th class="spec-quick-th-title">规格名</th>
<th class="spec-quick-th-value">规格值</th>
<th class="spec-quick-th-title">{{:MyLang('goods.form_spec_type_title')}}</th>
<th class="spec-quick-th-value">{{:MyLang('goods.form_spec_value_title')}}</th>
</tr>
</thead>
<tbody>
@ -38,18 +38,18 @@
<tr>
<td class="am-text-middle">
<i class="am-close quick-title-remove">×</i>
<input type="text" value="{{$spec_base.title}}" name="spec_base_title_{{$spec_base_key}}" placeholder="规格名" />
<input type="text" value="{{$spec_base.title}}" name="spec_base_title_{{$spec_base_key}}" placeholder="{{:MyLang('goods.form_spec_type_title')}}" />
</td>
<td class="spec-quick-td-value am-cf">
{{if !empty($spec_base['value'])}}
{{foreach $spec_base.value as $value}}
<div class="am-fl am-margin-xs value-item">
<input type="text" class="am-fl" name="spec_base_value_{{$spec_base_key}}[]" value="{{$value}}" placeholder="规格值" />
<input type="text" class="am-fl" name="spec_base_value_{{$spec_base_key}}[]" value="{{$value}}" placeholder="{{:MyLang('goods.form_spec_value_title')}}" />
<i class="am-close quick-value-remove">×</i>
</div>
{{/foreach}}
{{/if}}
<div class="am-fl am-margin-xs value-item am-text-left"><span class="business-operations-submit quick-spec-value-add" data-index="{{$spec_base_key}}">+ 添加规格值</span>
<div class="am-fl am-margin-xs value-item am-text-left"><span class="business-operations-submit quick-spec-value-add" data-index="{{$spec_base_key}}">+ {{:MyLang('goods.form_spec_value_add_title')}}</span>
</div>
</td>
</tr>
@ -62,34 +62,34 @@
<!-- 规格常规操作 -->
<div>
<span class="business-operations-submit specifications-nav-title-add">+ 添加规格值</span>
<span class="business-operations-submit am-margin-left-sm specifications-nav-set-all am-icon-cogs" data-am-modal="{target: '#spec-popup-all-operation'}"> 高级批量设置</span>
<span class="am-text-warning am-margin-left-sm">可直接点中规格行拖拽排序或点击上下移动</span>
<span class="business-operations-submit specifications-nav-title-add">+ {{:MyLang('goods.form_spec_value_add_title')}}</span>
<span class="business-operations-submit am-margin-left-sm specifications-nav-set-all am-icon-cogs" data-am-modal="{target: '#spec-popup-all-operation'}"> {{:MyLang('goods.form_spec_advanced_batch_setup_title')}}</span>
<span class="am-text-warning am-margin-left-sm">{{:MyLang('goods.form_spec_list_content_tips')}}</span>
</div>
<div class="goods-specifications am-padding-top-sm">
<!-- 规格列表 -->
<div class="specifications-container am-scrollable-horizontal">
<table class="am-table am-table-bordered am-table-centered specifications-table am-margin-bottom-sm am-table-striped am-table-hover table-thead-beautify am-margin-bottom-0"
data-spec-add-max-number="{{:MyC('common_spec_add_max_number', 3, true)}}"
data-spec-max-error="最多添加{{:MyC('common_spec_add_max_number', 3, true)}}列规格,可在后台管理[系统设置-后台配置]中配置"
data-spec-type-name="规格名"
data-spec-value-name="规格值"
data-spec-type-message="请填写规格名"
data-spec-value-message="请填写规格值"
data-spec-empty-data-tips="请先添加规格"
data-spec-empty-fill-tips="请先填写规格"
data-spec-images-name="上传图片"
data-spec-images-message="请上传规格图片"
data-spec-add-value-message="添加规格值"
data-spec-min-tips-message="至少需要保留一行规格值"
data-spec-all-name="全部"
data-spec-quick-error="快捷操作规格为空"
data-spec-quick-tips-title="温馨提示"
data-spec-quick-tips-msg="生成规格将清空现有规格数据、是否继续?"
data-spec-quick-success="生成成功"
data-move-type-tips="操作类型配置有误"
data-move-top-tips="已到最顶部"
data-move-bottom-tips="已到最底部"
data-spec-max-error="{{:MyLang('goods.form_spec_max_error')}}"
data-spec-type-name="{{:MyLang('goods.form_spec_type_title')}}"
data-spec-value-name="{{:MyLang('goods.form_spec_value_title')}}"
data-spec-type-message="{{:MyLang('goods.form_spec_type_message')}}"
data-spec-value-message="{{:MyLang('goods.form_spec_value_message')}}"
data-spec-empty-data-tips="{{:MyLang('goods.form_spec_empty_data_tips')}}"
data-spec-empty-fill-tips="{{:MyLang('goods.form_spec_empty_fill_tips')}}"
data-spec-images-name="{{:MyLang('form_upload_images_title')}}"
data-spec-images-message="{{:MyLang('goods.form_spec_images_message')}}"
data-spec-add-value-message="{{:MyLang('goods.form_spec_value_add_title')}}"
data-spec-min-tips-message="{{:MyLang('goods.form_spec_min_tips_message')}}"
data-spec-all-name="{{:MyLang('all_title')}}"
data-spec-quick-error="{{:MyLang('goods.form_spec_quick_error')}}"
data-spec-quick-tips-title="{{:MyLang('reminder_title')}}"
data-spec-quick-tips-msg="{{:MyLang('goods.form_spec_quick_tips_msg')}}"
data-spec-quick-success="{{:MyLang('created_success')}}"
data-move-type-tips="{{:MyLang('goods.form_spec_move_type_tips')}}"
data-move-top-tips="{{:MyLang('goods.form_spec_move_top_tips')}}"
data-move-bottom-tips="{{:MyLang('goods.form_spec_move_bottom_tips')}}"
>
<thead class="title-nav">
<tr>
@ -97,68 +97,68 @@
{{foreach $specifications.type as $type_v}}
<th class="table-title table-title-{{$type_v.id}}">
<i class="am-close title-nav-remove" data-index="{{$type_v.id}}">×</i>
<input type="text" name="specifications_name_{{$type_v.id}}" placeholder="规格名" value="{{$type_v.name}}" data-validation-message="请填写规格名" required />
<input type="text" name="specifications_name_{{$type_v.id}}" placeholder="{{:MyLang('goods.form_spec_type_title')}}" value="{{$type_v.name}}" data-validation-message="{{:MyLang('goods.form_spec_type_message')}}" required />
</th>
{{/foreach}}
{{/if}}
<th class="title-start">
<span>价格(元)</span>
<span>{{:MyLang('goods.form_spec_thead_price_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>原价(元)</span>
<span>{{:MyLang('goods.form_spec_thead_original_price_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>重量(kg)</span>
<span>{{:MyLang('goods.form_spec_thead_weight_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>体积(m³)</span>
<span>{{:MyLang('goods.form_spec_thead_volume_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>编码</span>
<span>{{:MyLang('goods.form_spec_thead_coding_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>条形码</span>
<span>{{:MyLang('goods.form_spec_thead_barcode_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th class="extend-btn">扩展</th>
<th class="operation-btn">操作</th>
<th class="extend-btn">{{:MyLang('extend_title')}}</th>
<th class="operation-btn">{{:MyLang('operate_title')}}</th>
</tr>
</thead>
<tbody>
{{if empty($specifications['value'])}}
<tr class="line-0" data-line-tag=".line-0">
<td class="am-text-middle value-start">
<input type="text" name="specifications_price[]" placeholder="价格" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="请填写有效的销售金额" required />
<input type="text" name="specifications_price[]" placeholder="{{:MyLang('goods.form_spec_thead_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('goods.form_spec_thead_price_message')}}" required />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_original_price[]" placeholder="原价" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="请填写有效的原价" />
<input type="text" name="specifications_original_price[]" placeholder="{{:MyLang('goods.form_spec_thead_original_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('goods.form_spec_thead_original_price_message')}}" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_weight[]" placeholder="重量" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="规格重量 0.00~100000000.00" />
<input type="number" name="specifications_weight[]" placeholder="{{:MyLang('goods.form_spec_thead_weight_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('goods.form_spec_thead_weight_message')}}" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_volume[]" placeholder="体积" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="规格体积 0.00~100000000.00" />
<input type="number" name="specifications_volume[]" placeholder="{{:MyLang('goods.form_spec_thead_volume_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('goods.form_spec_thead_volume_message')}}" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_coding[]" placeholder="编码" class="am-radius" maxlength="60" data-validation-message="规格编码最多60个字符" />
<input type="text" name="specifications_coding[]" placeholder="{{:MyLang('goods.form_spec_thead_coding_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('goods.form_spec_thead_coding_message')}}" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_barcode[]" placeholder="条形码" class="am-radius" maxlength="60" data-validation-message="条形码最多60个字符" />
<input type="text" name="specifications_barcode[]" placeholder="{{:MyLang('goods.form_spec_thead_barcode_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('goods.form_spec_thead_barcode_message')}}" />
</td>
<td class="am-text-middle">
<input type="hidden" name="specifications_extends[]" value="" class="line-extend-input" />
<a href="javascript:;" class="am-text-xs am-text-secondary line-extend-btn">编辑</a>
<a href="javascript:;" class="am-text-xs am-text-secondary line-extend-btn">{{:MyLang('edit_title')}}</a>
</td>
<td class="am-text-middle">
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-sm line-move" data-type="top">上移</a>
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-sm line-move" data-type="bottom">下移</a>
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-xs line-copy">复制</a>
<a href="javascript:;" class="am-text-xs am-text-danger line-remove">移除</a>
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-sm line-move" data-type="top">{{:MyLang('moveup_title')}}</a>
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-sm line-move" data-type="bottom">{{:MyLang('movedown_title')}}</a>
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-xs line-copy">{{:MyLang('copy_title')}}</a>
<a href="javascript:;" class="am-text-xs am-text-danger line-remove">{{:MyLang('remove_title')}}</a>
</td>
</tr>
{{/if}}
@ -171,38 +171,38 @@
{{switch v.data_type}}
{{case spec}}
<td class="am-text-middle table-value table-value-{{$v.data.key}}">
<input type="text" name="specifications_value_{{$v.data.key}}[]" placeholder="规格值" value="{{$v.data.value}}" data-validation-message="请填写规格值" required />
<input type="text" name="specifications_value_{{$v.data.key}}[]" placeholder="{{:MyLang('goods.form_spec_value_title')}}" value="{{$v.data.value}}" data-validation-message="{{:MyLang('goods.form_spec_value_message')}}" required />
</td>
{{/case}}
{{case base}}
<td class="am-text-middle value-start">
<input type="text" name="specifications_price[]" placeholder="价格" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="请填写有效的销售金额" value="{{if isset($v['data']['price'])}}{{$v.data.price}}{{/if}}" required />
<input type="text" name="specifications_price[]" placeholder="{{:MyLang('goods.form_spec_thead_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('goods.form_spec_thead_price_message')}}" value="{{if isset($v['data']['price'])}}{{$v.data.price}}{{/if}}" required />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_original_price[]" placeholder="原价" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="请填写有效的原价" value="{{if $v['data']['original_price'] gt 0}}{{$v.data.original_price}}{{/if}}" />
<input type="text" name="specifications_original_price[]" placeholder="{{:MyLang('goods.form_spec_thead_original_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('goods.form_spec_thead_original_price_message')}}" value="{{if $v['data']['original_price'] gt 0}}{{$v.data.original_price}}{{/if}}" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_weight[]" placeholder="重量" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="规格重量 0.00~100000000.00" value="{{if isset($v['data']['weight']) and $v['data']['weight'] gt 0}}{{$v.data.weight}}{{/if}}" />
<input type="number" name="specifications_weight[]" placeholder="{{:MyLang('goods.form_spec_thead_weight_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('goods.form_spec_thead_weight_message')}}" value="{{if isset($v['data']['weight']) and $v['data']['weight'] gt 0}}{{$v.data.weight}}{{/if}}" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_volume[]" placeholder="体积" class="am-radius" max="100000000" min="0.00" max="100000000.00" step="0.01" data-validation-message="规格体积 0.00~100000000.00" value="{{if isset($v['data']['volume']) and $v['data']['volume'] gt 0}}{{$v.data.volume}}{{/if}}" />
<input type="number" name="specifications_volume[]" placeholder="{{:MyLang('goods.form_spec_thead_volume_title')}}" class="am-radius" max="100000000" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('goods.form_spec_thead_volume_message')}}" value="{{if isset($v['data']['volume']) and $v['data']['volume'] gt 0}}{{$v.data.volume}}{{/if}}" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_coding[]" placeholder="编码" class="am-radius" maxlength="60" data-validation-message="规格编码最多60个字符" value="{{if isset($v['data']['coding'])}}{{$v.data.coding}}{{/if}}" />
<input type="text" name="specifications_coding[]" placeholder="{{:MyLang('goods.form_spec_thead_coding_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('goods.form_spec_thead_coding_message')}}" value="{{if isset($v['data']['coding'])}}{{$v.data.coding}}{{/if}}" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_barcode[]" placeholder="条形码" class="am-radius" maxlength="60" data-validation-message="条形码最多60个字符" value="{{if isset($v['data']['barcode'])}}{{$v.data.barcode}}{{/if}}" />
<input type="text" name="specifications_barcode[]" placeholder="{{:MyLang('goods.form_spec_thead_barcode_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('goods.form_spec_thead_barcode_message')}}" value="{{if isset($v['data']['barcode'])}}{{$v.data.barcode}}{{/if}}" />
</td>
<td class="am-text-middle">
<input type="hidden" name="specifications_extends[]" value="{{$v.data.extends}}" class="line-extend-input" />
<a href="javascript:;" class="am-text-xs am-text-secondary line-extend-btn">编辑</a>
<a href="javascript:;" class="am-text-xs am-text-secondary line-extend-btn">{{:MyLang('edit_title')}}</a>
</td>
<td class="am-text-middle">
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-sm line-move" data-type="top">上移</a>
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-sm line-move" data-type="bottom">下移</a>
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-xs line-copy">复制</a>
<a href="javascript:;" class="am-text-xs am-text-danger line-remove">移除</a>
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-sm line-move" data-type="top">{{:MyLang('moveup_title')}}</a>
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-sm line-move" data-type="bottom">{{:MyLang('movedown_title')}}</a>
<a href="javascript:;" class="am-text-xs am-text-secondary am-margin-right-xs line-copy">{{:MyLang('copy_title')}}</a>
<a href="javascript:;" class="am-text-xs am-text-danger line-remove">{{:MyLang('remove_title')}}</a>
</td>
{{/case}}
{{/switch}}
@ -215,13 +215,13 @@
</table>
</div>
<div class="am-margin-top-sm">
<span class="business-operations-submit specifications-line-add">+添加一行</span>
<span class="business-operations-submit specifications-line-add">+ {{:MyLang('goods.form_spec_row_add_title')}}</span>
</div>
<div class="spec-images-list">
<div class="am-alert am-radius">
规格名称与规格值保持一致,相同规格名称添加一次即可,重复添加则后面覆盖前面,顺序不影响前端展示效果。
<span class="business-operations-submit specifications-line-images-add">+添加规格图片</span>
<span class="business-operations-submit specifications-line-images-auto-add am-margin-left-sm am-icon-dot-circle-o"> <input type="text" class="am-inline-block am-text-center am-margin-horizontal-xs am-radius" value="1" />列规格自动生成</span>
<span>{{:MyLang('goods.form_spec_images_tips')}}</span>
<span class="business-operations-submit specifications-line-images-add">+ {{:MyLang('goods.form_spec_images_add_title')}}</span>
<span class="business-operations-submit specifications-line-images-auto-add am-margin-left-sm am-icon-dot-circle-o"> {{:MyLang('goods.form_spec_images_add_auto_first')}}<input type="text" class="am-inline-block am-text-center am-margin-horizontal-xs am-radius" value="1" />{{:MyLang('goods.form_spec_images_add_auto_last')}}</span>
</div>
<ul class="spec-images-content">
{{if !empty($specifications['type'])}}
@ -230,15 +230,15 @@
{{foreach $type.value as $spec_key=>$spec}}
{{if !empty($spec['images'])}}
<li class="spec-images-items spec-images-items-{{$type.id}}{{$spec_key}}">
<input type="text" name="spec_images_name[{{$type.id}}{{$spec_key}}]" placeholder="规格名称" class="am-radius am-text-center" data-validation-message="请填写规格名称" value="{{$spec.name}}" required >
<input type="text" name="spec_images_name[{{$type.id}}{{$spec_key}}]" placeholder="{{:MyLang('goods.form_spec_images_type_title')}}" class="am-radius am-text-center" data-validation-message="{{:MyLang('goods.form_spec_images_type_message')}}" value="{{$spec.name}}" required >
<ul class="plug-file-upload-view spec-images-view-{{$type.id}}{{$spec_key}}" data-form-name="spec_images[{{$type.id}}{{$spec_key}}]" data-max-number="1" data-delete='0' data-dialog-type="images">
<li>
<input type="hidden" name="spec_images[{{$type.id}}{{$spec_key}}]" value="{{$spec.images_old}}" data-validation-message="请上传规格图片" required />
<input type="hidden" name="spec_images[{{$type.id}}{{$spec_key}}]" value="{{$spec.images_old}}" data-validation-message="{{:MyLang('goods.form_spec_images_images_message')}}" required />
<img src="{{$spec.images}}" />
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.spec-images-view-{{$type.id}}{{$spec_key}}">+上传图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.spec-images-view-{{$type.id}}{{$spec_key}}">+ {{:MyLang('form_upload_images_title')}}</div>
</li>
{{/if}}
{{/foreach}}
@ -253,34 +253,34 @@
<div class="am-popup" id="spec-popup-all-operation">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">高级批量设置</h4>
<h4 class="am-popup-title">{{:MyLang('goods.form_spec_advanced_batch_setup_title')}}</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<div class="am-alert am-alert-secondary spec-title-container"></div>
<div class="am-form-group">
<label class="am-block">销售价(元)</label>
<input type="text" placeholder="价格" class="am-radius popup_all_price" pattern="{{$default_price_regex}}" data-validation-message="请填写有效的销售金额" />
<label class="am-block">{{:MyLang('goods.form_spec_thead_price_title')}}</label>
<input type="text" placeholder="{{:MyLang('goods.form_spec_thead_price_title')}}" class="am-radius popup_all_price" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('goods.form_spec_thead_price_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">原价(元)</label>
<input type="text" placeholder="原价" class="am-radius popup_all_original_price" pattern="{{$default_price_regex}}" data-validation-message="请填写有效的原价" />
<label class="am-block">{{:MyLang('goods.form_spec_thead_original_price_title')}}</label>
<input type="text" placeholder="{{:MyLang('goods.form_spec_thead_original_price_title')}}" class="am-radius popup_all_original_price" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('goods.form_spec_thead_original_price_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">重量(kg)</label>
<input type="number" placeholder="重量" class="am-radius popup_all_weight" maxlength="80" min="0.00" max="100000000.00" step="0.01" data-validation-message="规格重量 0.00~100000000.00" />
<label class="am-block">{{:MyLang('goods.form_spec_thead_weight_title')}}</label>
<input type="number" placeholder="{{:MyLang('goods.form_spec_thead_weight_title')}}" class="am-radius popup_all_weight" maxlength="80" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('goods.form_spec_thead_weight_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">体积(m³)</label>
<input type="number" placeholder="体积" class="am-radius popup_all_volume" maxlength="80" min="0.00" max="100000000.00" step="0.01" data-validation-message="规格体积 0.00~100000000.00" />
<label class="am-block">{{:MyLang('goods.form_spec_thead_volume_title')}}</label>
<input type="number" placeholder="{{:MyLang('goods.form_spec_thead_volume_title')}}" class="am-radius popup_all_volume" maxlength="80" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('goods.form_spec_thead_volume_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">编码</label>
<input type="text" placeholder="编码" class="am-radius popup_all_coding" maxlength="80" data-validation-message="规格编码最多80个字符" />
<label class="am-block">{{:MyLang('goods.form_spec_thead_coding_title')}}</label>
<input type="text" placeholder="{{:MyLang('goods.form_spec_thead_coding_title')}}" class="am-radius popup_all_coding" maxlength="80" data-validation-message="{{:MyLang('goods.form_spec_thead_coding_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">条形码</label>
<input type="text" placeholder="条形码" class="am-radius popup_all_barcode" maxlength="80" data-validation-message="条形码最多80个字符" />
<label class="am-block">{{:MyLang('goods.form_spec_thead_coding_title')}}</label>
<input type="text" placeholder="{{:MyLang('goods.form_spec_thead_coding_title')}}" class="am-radius popup_all_barcode" maxlength="80" data-validation-message="{{:MyLang('goods.form_spec_thead_coding_message')}}" />
</div>
<div class="am-form-group am-form-group-refreshing am-text-center">
<div class="am-padding-vertical-sm">
@ -295,12 +295,12 @@
<!-- 单个规格批量操作弹层 -->
<div class="am-modal am-modal-no-btn" tabindex="-1" id="spec-modal-all-operation">
<div class="am-modal-dialog">
<div class="am-modal-hd">批量操作
<div class="am-modal-hd">{{:MyLang('goods.form_spec_all_operate_title')}}
<a href="javascript: void(0)" class="am-close" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd">
<div class="am-input-group am-input-group-sm">
<input type="text" class="am-form-field" placeholder="批量设置的值" />
<input type="text" class="am-form-field" placeholder="{{:MyLang('goods.form_spec_all_operate_placeholder')}}" />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default">{{:MyLang('confirm_title')}}</button>
</span>

View File

@ -1,7 +1,7 @@
<div class="am-popup" id="specifications-extends-popup">
<div class="am-popup am-radius" id="specifications-extends-popup">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">规格扩展数据</h4>
<h4 class="am-popup-title">{{:MyLang('goods.form_item_extends_popup_title')}}</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
@ -126,7 +126,7 @@
{{/switch}}
</div>
{{else /}}
<p class="am-text-danger">element form-name 配置有误</p>
<p class="am-text-danger">element form-name {{:MyLang('config_error_tips')}}</p>
{{/if}}
{{/foreach}}
{{/if}}

View File

@ -13,7 +13,7 @@
<div class="am-popup am-radius" id="data-save-win">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title" data-add-title="分类添加" data-edit-title="分类编辑">分类添加</h4>
<h4 class="am-popup-title" data-add-title="{{:MyLang('goodscategory.base_nav_title')}}{{:MyLang('add_title')}}" data-edit-title="{{:MyLang('goodscategory.base_nav_title')}}{{:MyLang('edit_title')}}">{{:MyLang('goodscategory.base_nav_title')}}{{:MyLang('add_title')}}</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
@ -22,7 +22,7 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group am-form-file">
<label class="am-block">icon图标<span class="am-form-group-label-tips">建议100*100px</span></label>
<label class="am-block">{{:MyLang('goodscategory.form_item_icon')}}<span class="am-form-group-label-tips">{{:MyLang('goodscategory.form_item_icon_tips')}}</span></label>
<ul class="plug-file-upload-view goods-category-icon-images-view" data-form-name="icon" data-max-number="1" data-dialog-type="images">
<li>
<input type="hidden" name="icon" value="" />
@ -30,12 +30,12 @@
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-category-icon-images-view">+上传图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-category-icon-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group am-form-file">
<label class="am-block">大图片<span class="am-form-group-label-tips">建议360*360px</span></label>
<label class="am-block">{{:MyLang('goodscategory.form_item_big_images')}}<span class="am-form-group-label-tips">{{:MyLang('goodscategory.form_item_big_images_tips')}}</span></label>
<ul class="plug-file-upload-view goods-category-big_images-images-view" data-form-name="big_images" data-max-number="1" data-dialog-type="images">
<li>
<input type="hidden" name="big_images" value="" />
@ -43,7 +43,7 @@
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-category-big_images-images-view">+上传图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-category-big_images-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
</div>
</div>
@ -53,21 +53,21 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
<label>{{:MyLang('goodscategory.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="{{:MyLang('goodscategory.form_item_name_message')}}" name="name" minlength="2" maxlength="16" data-validation-message="{{:MyLang('goodscategory.form_item_name_message')}}" class="am-radius" required />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>副名称</label>
<input type="text" placeholder="副名称" name="vice_name" minlength="0" maxlength="60" data-validation-message="副名称最大60个字符" class="am-radius" />
<label>{{:MyLang('goodscategory.form_item_vice_name')}}</label>
<input type="text" placeholder="{{:MyLang('goodscategory.form_item_vice_name_message')}}" name="vice_name" minlength="0" maxlength="60" data-validation-message="{{:MyLang('goodscategory.form_item_vice_name_message')}}" class="am-radius" />
</div>
</div>
</div>
</div>
<div class="am-u-sm-4 am-padding-horizontal-0">
<div class="am-form-group">
<label>背景色</label>
<label>{{:MyLang('form_bg_color_title')}}</label>
<input type="hidden" name="bg_color" value="" />
<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" />
@ -79,8 +79,8 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>描述</label>
<textarea rows="1" name="describe" maxlength="200" class="am-radius" placeholder="描述" data-validation-message="描述最大200个字符"></textarea>
<label>{{:MyLang('goodscategory.form_item_describe')}}</label>
<textarea rows="1" name="describe" maxlength="200" class="am-radius" placeholder="{{:MyLang('goodscategory.form_item_describe_message')}}" data-validation-message="{{:MyLang('goodscategory.form_item_describe_message')}}"></textarea>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
@ -94,7 +94,7 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>首页推荐</label>
<label>{{:MyLang('goodscategory.form_item_is_home_recommended')}}</label>
<div>
{{foreach $common_is_text_list as $v}}
<label class="am-radio-inline am-margin-right-sm">

View File

@ -7,12 +7,12 @@
<div class="am-popup am-radius" id="my-popup-reply">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">回复</h4>
<h4 class="am-popup-title">{{:MyLang('reply_title')}}</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<dl class="dl-content">
<dt>商品信息</dt>
<dt>{{:MyLang('goodscomments.form_item_goods_info_title')}}</dt>
<dd class="goods-info">
<div class="base am-nbfc">
<a href="javascript:;" target="_blank">
@ -23,24 +23,24 @@
<p class="price">...</p>
</dd>
<dt>用户信息</dt>
<dt>{{:MyLang('goodscomments.form_item_user_info_title')}}</dt>
<dd class="user-info">
<img src="{{$attachment_host}}/static/common/images/user-img-sm.gif" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="35" height="35" />
<ul class="user-base">
<li class="username">名称<span>...</span></li>
<li class="nickname">昵称<span>...</span></li>
<li class="mobile">手机<span>...</span></li>
<li class="email">邮箱<span>...</span></li>
<li class="username">{{:MyLang('user_username_title')}}<span>...</span></li>
<li class="nickname">{{:MyLang('user_nickname_title')}}<span>...</span></li>
<li class="mobile">{{:MyLang('user_mobile_title')}}<span>...</span></li>
<li class="email">{{:MyLang('user_email_title')}}<span>...</span></li>
</ul>
</dd>
<dt>评论内容</dt>
<dt>{{:MyLang('goodscomments.form_item_content')}}</dt>
<dd class="content">...</dd>
</dl>
<form class="am-form form-validation-reply am-form-popup-fixed" action="{{:MyUrl('admin/goodscomments/reply')}}" method="POST" request-type="ajax-reload">
<div class="am-form-group am-form-group-refreshing">
<label>回复内容</label>
<textarea name="reply" rows="5" class="am-radius" placeholder="回复内容格式 1~230 个字符" data-validation-message="回复内容格式 1~230 个字符" minlength="1" maxlength="230" required></textarea>
<label>{{:MyLang('goodscomments.form_item_reply')}}</label>
<textarea name="reply" rows="5" class="am-radius" placeholder="{{:MyLang('goodscomments.form_item_reply_message')}}" data-validation-message="{{:MyLang('goodscomments.form_item_reply_message')}}" minlength="1" maxlength="230" required></textarea>
</div>
<div class="am-form-popup-submit">
<input type="hidden" name="id" value="" />

View File

@ -9,6 +9,6 @@
</div>
<p>{{$currency_symbol}}{{$module_data.goods.price}}</p>
{{else /}}
商品信息异常
{{:MyLang('gods_info_abnormal_tips')}}
{{/if}}
{{/if}}

View File

@ -6,13 +6,13 @@
<!-- form start -->
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/goodscomments/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/goodscomments/index', $params)}}" enctype="multipart/form-data">
<legend>
<span class="am-text-default">商品评论{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}</span>
<span class="am-text-default">{{:MyLang('goodscomments.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/goodscomments/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
<div class="am-cf">
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-alert am-alert-secondary goods-info" data-am-alert>
<p class="am-text-sm">商品信息</p>
<p class="am-text-sm">{{:MyLang('goodscomments.form_item_goods_info_title')}}</p>
{{if !empty($data['goods'])}}
<div class="base am-nbfc">
<a href="{{$data.goods.goods_url}}" target="_blank">
@ -22,23 +22,23 @@
</div>
<p class="am-text-danger">{{$currency_symbol}}{{$data.goods.price}}</p>
{{else /}}
商品信息异常
{{:MyLang('gods_info_abnormal_tips')}}
{{/if}}
</div>
</div>
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-alert am-alert-secondary user-info" data-am-alert>
<p class="am-text-sm">用户信息</p>
<p class="am-text-sm">{{:MyLang('goodscomments.form_item_user_info_title')}}</p>
{{if !empty($data['user'])}}
<img src="{{$data.user.avatar}}" alt="{{$data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="35" height="35" />
<ul class="user-base">
<li>名称{{if empty($data['user']['username'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>昵称{{if empty($data['user']['nickname'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>手机{{if empty($data['user']['mobile'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>邮箱{{if empty($data['user']['email'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.email}}{{/if}}</li>
<li>{{:MyLang('user_username_title')}}{{if empty($data['user']['username'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>{{:MyLang('user_nickname_title')}}{{if empty($data['user']['nickname'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>{{:MyLang('user_mobile_title')}}{{if empty($data['user']['mobile'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>{{:MyLang('user_email_title')}}{{if empty($data['user']['email'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.email}}{{/if}}</li>
</ul>
{{else /}}
用户信息异常
{{:MyLang('user_info_abnormal_tips')}}
{{/if}}
</div>
</div>
@ -47,8 +47,8 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>业务类型<span class="am-form-group-label-tips-must">*</span></label>
<select name="business_type" class="chosen-select" data-placeholder="业务类型..." data-validation-message="请选择业务类型" required>
<label>{{:MyLang('goodscomments.form_item_business_type')}}<span class="am-form-group-label-tips-must">*</span></label>
<select name="business_type" class="chosen-select" data-placeholder="{{:MyLang('goodscomments.form_item_business_type_placeholder')}}" data-validation-message="{{:MyLang('goodscomments.form_item_business_type_message')}}" required>
{{if !empty($common_goods_comments_business_type_list)}}
{{foreach $common_goods_comments_business_type_list as $v}}
<option value="{{$v.value}}" {{if isset($data['business_type']) and $data['business_type'] eq $v.value}}selected{{/if}}>{{$v.name}}</option>
@ -59,8 +59,8 @@
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>评分</label>
<select name="rating" class="chosen-select" data-placeholder="未评分" data-validation-message="请选择评分" required>
<label>{{:MyLang('goodscomments.form_item_rating')}}</label>
<select name="rating" class="chosen-select" data-placeholder="{{:MyLang('goodscomments.form_item_rating_placeholder')}}" data-validation-message="{{:MyLang('goodscomments.form_item_rating_message')}}" required>
{{if !empty($common_goods_comments_rating_list)}}
{{foreach $common_goods_comments_rating_list as $k=>$v}}
<option value="{{$k}}" {{if isset($data['rating']) and $data['rating'] eq $k}}selected{{/if}}>{{$v.name}}</option>
@ -74,14 +74,14 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>评论内容<span class="am-form-group-label-tips-must">*</span></label>
<textarea name="content" class="am-radius" rows="4" minlength="6" maxlength="230" data-validation-message="评论内容 6~230 个字符之间" required>{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
<label>{{:MyLang('goodscomments.form_item_content')}}<span class="am-form-group-label-tips-must">*</span></label>
<textarea name="content" class="am-radius" rows="4" minlength="6" maxlength="230" placeholder="{{:MyLang('goodscomments.form_item_content_message')}}" data-validation-message="{{:MyLang('goodscomments.form_item_content_message')}}" required>{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>回复内容</label>
<textarea class="am-radius" name="reply" rows="4" maxlength="230" placeholder="回复内容最多 230 个字符" data-validation-message="回复内容最多 230 个字符">{{if !empty($data['reply'])}}{{$data.reply}}{{/if}}</textarea>
<label>{{:MyLang('goodscomments.form_item_reply')}}</label>
<textarea class="am-radius" name="reply" rows="4" maxlength="230" placeholder="{{:MyLang('goodscomments.form_item_reply_message')}}" data-validation-message="{{:MyLang('goodscomments.form_item_reply_message')}}">{{if !empty($data['reply'])}}{{$data.reply}}{{/if}}</textarea>
</div>
</div>
</div>
@ -89,13 +89,13 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>回复时间</label>
<input type="text" name="reply_time" class="am-form-field am-radius Wdate" placeholder="生日" data-validation-message="回复时间格式有误" {{if !empty($data)}} value="{{if isset($data['reply_time_time'])}}{{$data.reply_time_time}}{{/if}}"{{/if}} onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" />
<label>{{:MyLang('goodscomments.form_item_reply_time')}}</label>
<input type="text" name="reply_time" class="am-form-field am-radius Wdate" placeholder="{{:MyLang('goodscomments.form_item_reply_time')}}" data-validation-message="{{:MyLang('goodscomments.form_item_reply_time_message')}}" {{if !empty($data)}} value="{{if isset($data['reply_time_time'])}}{{$data.reply_time_time}}{{/if}}"{{/if}} onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">是否已回复</label>
<label class="am-block">{{:MyLang('goodscomments.form_item_is_reply')}}</label>
<input name="is_reply" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_reply']) and $data['is_reply'] eq 1}}checked="true"{{/if}} />
</div>
</div>
@ -104,13 +104,13 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">是否匿名</label>
<label class="am-block">{{:MyLang('goodscomments.form_item_is_anonymous')}}</label>
<input name="is_anonymous" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_anonymous']) and $data['is_anonymous'] eq 1}}checked="true"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">是否显示</label>
<label class="am-block">{{:MyLang('form_whether_show_title')}}</label>
<input name="is_show" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_show']) and $data['is_show'] eq 1}}checked="true"{{/if}} />
</div>
</div>
@ -125,7 +125,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

Some files were not shown because too many files have changed in this diff Show More