This commit is contained in:
gongfuxiang 2024-01-19 14:49:32 +08:00
parent 11c9a3aa55
commit 975c3a6c96
605 changed files with 26501 additions and 14973 deletions

View File

@ -28,7 +28,7 @@
#### ShopXO国内企业级免费开源电商系统
* 求实进取、创新专注、自主研发、国内企业级电商系统解决方案。
* 遵循MIT开源协议发布无需授权、可商用、可二次开发、满足99%的电商运营需求。
* 支持PC+手机自适应独立H5、小程序支付宝、微信、百度、头条&抖音、QQ、快手APP等...
* 支持PC+手机自适应独立H5、小程序支付宝、微信、百度、头条&抖音、QQ、快手APPIOS、Android
* 支持多仓库、多商户、多门店、进销存组件插件化、即插即用可视化DIY拖拽装修。
### 体验码

View File

@ -37,13 +37,16 @@ class Admin extends Common
parent::__construct();
// 需要校验权限
if(in_array($this->action_name, ['index', 'detail', 'delete']))
if(!in_array($this->action_name, ['logininfo', 'login', 'logout', 'adminverifyentry', 'loginverifysend']))
{
// 登录校验
$this->IsLogin();
$this->IsLogin();
// 权限校验
$this->IsPower();
// 权限校验
$this->IsPower();
// 动态表格初始化
$this->FormTableInit();
}
}
@ -214,7 +217,7 @@ class Admin extends Common
$host = SystemBaseService::AttachmentHost();
for($i=1; $i<=50; $i++)
{
$path = 'static/admin/default/images/login/'.$i.'.jpg';
$path = 'static/admin/default/images/login/'.$i.'.png';
if(file_exists(ROOT_PATH.$path))
{
$bg_images_list[] = $host.DS.$path;
@ -222,7 +225,12 @@ class Admin extends Common
}
$assign['bg_images_list'] = $bg_images_list;
// 管理员登录页面钩子
// logo
$assign['admin_login_logo'] = MyC('admin_login_logo');
// 广告图片
$assign['admin_login_ad_images'] = MyC('admin_login_ad_images');
// 管理员登录页面钩子
$hook_name = 'plugins_view_admin_login_info';
$assign[$hook_name.'_data'] = MyEventTrigger($hook_name,
[

View File

@ -34,7 +34,8 @@ class Agreement extends Base
*/
public function Index()
{
// 模板数据
// 导航
$type = empty($this->data_request['type']) ? 'register' : $this->data_request['type'];
$assign = [
// 配置信息
'data' => ConfigService::ConfigList(),
@ -42,15 +43,11 @@ class Agreement extends Base
'nav_data' => MyLang('agreement.base_nav_list'),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue('agreement'),
// 页面导航
'type' => $type,
];
// 导航/视图
$nav_type = empty($this->data_request['nav_type']) ? 'register' : $this->data_request['nav_type'];
$assign['nav_type'] = $nav_type;
// 数据赋值
MyViewAssign($assign);
return MyView($nav_type);
return MyView($type);
}
/**

View File

@ -38,7 +38,7 @@ class AppConfig extends Base
parent::__construct();
// 导航类型
$this->nav_type = empty($this->data_request['nav_type']) ? 'index' : $this->data_request['nav_type'];
$this->nav_type = empty($this->data_request['type']) ? 'index' : $this->data_request['type'];
}
/**

View File

@ -122,18 +122,20 @@ class Appmini extends Base
public function CurrentViewInit()
{
return [
// 操作导航类型
'nav_type' => $this->params['application_name'],
// 操作页面类型
'view_type' => $this->view_type,
// 应用商店
'store_theme_url' => StoreService::StoreThemeUrl(),
// 小程序平台
'common_appmini_type' => MyConst('common_appmini_type'),
// 是否
'common_is_text_list' => MyConst('common_is_text_list'),
// 基础导航
'base_nav' => MyLang('appmini.base_nav_list'),
'base_nav' => MyLang('appmini.base_nav_list'),
// 操作导航类型
'nav_type' => $this->params['application_name'],
// 操作页面类型
'view_type' => $this->view_type,
// 应用商店
'store_theme_url' => StoreService::StoreThemeUrl(),
// 小程序平台
'common_appmini_type' => MyConst('common_appmini_type'),
// 是否
'common_is_text_list' => MyConst('common_is_text_list'),
// 是否开启
'common_close_open_list' => MyConst('common_close_open_list'),
];
}

View File

@ -38,6 +38,9 @@ class Base extends Common
// 权限校验
$this->IsPower();
// 动态表格初始化
$this->FormTableInit();
}
}
?>

View File

@ -84,10 +84,6 @@ class Common extends BaseController
// 系统类型
protected $system_type;
// 主题颜色key
protected $theme_color_value_key = 'admin_theme_color_value';
protected $theme_color_value = 0;
/**
* 构造方法
* @author Devil
@ -122,9 +118,6 @@ class Common extends BaseController
// 视图初始化
$this->ViewInit();
// 动态表格初始化
$this->FormTableInit();
// 公共钩子初始化
$this->CommonPluginsInit();
}
@ -282,7 +275,7 @@ class Common extends BaseController
// 货币符号
$assign['currency_symbol'] = ResourcesService::CurrencyDataSymbol();
// 控制器静态文件状态css,js
// 控制器静态文件状态css,js
$module_css = $this->module_name.DS.$default_theme.DS.'css'.DS.$this->controller_name;
$module_css .= file_exists(ROOT_PATH.'static'.DS.$module_css.'.'.$this->action_name.'.css') ? '.'.$this->action_name.'.css' : '.css';
$assign['module_css'] = file_exists(ROOT_PATH.'static'.DS.$module_css) ? $module_css : '';
@ -291,10 +284,13 @@ class Common extends BaseController
$module_js .= file_exists(ROOT_PATH.'static'.DS.$module_js.'.'.$this->action_name.'.js') ? '.'.$this->action_name.'.js' : '.js';
$assign['module_js'] = file_exists(ROOT_PATH.'static'.DS.$module_js) ? $module_js : '';
// 后台logo
$assign['admin_logo'] = MyC('admin_logo');
// 价格正则
$assign['default_price_regex'] = MyConst('common_regex_price');
// 附件host地址
// 附件host地址
$attachment_host = SystemBaseService::AttachmentHost();
$assign['attachment_host'] = $attachment_host;
@ -317,7 +313,7 @@ class Common extends BaseController
$assign['my_http'] = __MY_HTTP__;
// 首页地址
$assign['home_url'] = SystemService::HomeUrl();
$assign['home_url'] = SystemService::DomainUrl();
// 开发模式
$assign['shopxo_is_develop'] = MyConfig('shopxo.is_develop');
@ -394,17 +390,11 @@ class Common extends BaseController
// 系统环境参数最大数
$assign['env_max_input_vars_count'] = SystemService::EnvMaxInputVarsCount();
// 主题配色
$this->theme_color_value = intval(MyCookie($this->theme_color_value_key));
if($this->theme_color_value == 1)
{
$assign['theme_color_name'] = MyLang('theme_color_white_title');
$assign['theme_color_url'] = MyUrl('admin/index/color', ['value'=>0]);
} else {
$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;
// 主题配色选择数据
$assign['theme_color_choice_data'] = SystemService::GetAdminThemeColor($this->data_request);
// 主题配色页面数据
$assign['theme_color_view_data'] = SystemService::AdminThemeStyleDefaultData($this->data_request);
// 页面语言
$assign['lang_data'] = SystemService::PageViewLangData();

View File

@ -82,6 +82,14 @@ class Config extends Base
$view_type = empty($this->data_request['view_type']) ? 'index' : $this->data_request['view_type'];
switch($view_type)
{
// 系统配置
case 'index' :
$field_list[] = 'admin_logo';
$field_list[] = 'admin_login_logo';
$field_list[] = 'admin_login_ad_images';
break;
// 商店信息
case 'store' :
$field_list[] = 'common_customer_store_qrcode';
break;

View File

@ -36,11 +36,11 @@ class Email extends Base
$type = empty($this->data_request['type']) ? 'index' : $this->data_request['type'];
$assign = [
// 配置信息
'data' => ConfigService::ConfigList(),
'data' => ConfigService::ConfigList(),
// 管理导航
'nav_data' => MyLang('email.base_nav_list'),
// 页面导航
'nav_type' => $type,
'nav_data' => MyLang('email.base_nav_list'),
// 页面导航
'type' => $type,
];
MyViewAssign($assign);
return MyView($type);

View File

@ -0,0 +1,82 @@
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( https://opensource.org/licenses/mit-license.php )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\admin\controller\Base;
use app\service\ApiService;
use app\service\EmailLogService;
/**
* 邮件日志管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class EmailLog extends Base
{
/**
* 列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2022-08-01
* @desc description
*/
public function Index()
{
return MyView();
}
/**
* 详情
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2022-08-01
* @desc description
*/
public function Detail()
{
return MyView();
}
/**
* 删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-28
* @desc description
*/
public function Delete()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(EmailLogService::EmailLogDelete($params));
}
/**
* 全部删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-11-18
* @desc description
*/
public function AllDelete()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(EmailLogService::EmailLogAllDelete($params));
}
}
?>

View File

@ -58,7 +58,6 @@ class GoodsCategory extends Base
return ApiService::ApiDataReturn(GoodsCategoryService::GoodsCategoryNodeSon($this->data_request));
}
/**
* 保存
* @author Devil
@ -71,6 +70,21 @@ class GoodsCategory extends Base
return ApiService::ApiDataReturn(GoodsCategoryService::GoodsCategorySave($this->data_request));
}
/**
* 状态更新
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-31
* @desc description
*/
public function StatusUpdate()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(GoodsCategoryService::GoodsCategoryStatusUpdate($params));
}
/**
* 删除
* @author Devil

View File

@ -21,7 +21,7 @@ use app\service\GoodsCommentsService;
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class Goodscomments extends Base
class GoodsComments extends Base
{
/**
* 列表
@ -44,7 +44,6 @@ class Goodscomments extends Base
*/
public function Detail()
{
MyViewAssign('common_goods_comments_rating_list', MyConst('common_goods_comments_rating_list'));
return MyView();
}
@ -88,6 +87,7 @@ class Goodscomments extends Base
public function Save()
{
$params = $this->data_request;
$params['user_type'] = 'admin';
return ApiService::ApiDataReturn(GoodsCommentsService::GoodsCommentsSave($params));
}
@ -101,6 +101,7 @@ class Goodscomments extends Base
public function Delete()
{
$params = $this->data_request;
$params['user_type'] = 'admin';
return ApiService::ApiDataReturn(GoodsCommentsService::GoodsCommentsDelete($params));
}
@ -114,6 +115,7 @@ class Goodscomments extends Base
public function Reply()
{
$params = $this->data_request;
$params['user_type'] = 'admin';
return ApiService::ApiDataReturn(GoodsCommentsService::GoodsCommentsReply($params));
}
@ -127,6 +129,7 @@ class Goodscomments extends Base
public function StatusUpdate()
{
$params = $this->data_request;
$params['user_type'] = 'admin';
return ApiService::ApiDataReturn(GoodsCommentsService::GoodsCommentsStatusUpdate($params));
}
}

View File

@ -15,6 +15,8 @@ use app\service\ApiService;
use app\service\StatisticalService;
use app\service\StoreService;
use app\service\SystemUpgradeService;
use app\service\ShortcutMenuService;
use app\service\SystemService;
/**
* 首页
@ -92,6 +94,9 @@ class Index extends Common
];
$assign['data'] = $data;
// 常用功能
$assign['shortcut_menu_data'] = ShortcutMenuService::ShortcutMenuList(['admin'=>$this->admin]);
// 用户是否有数据统计权限
$is_stats = AdminIsPower('index', 'stats');
MyViewAssign('is_stats', $is_stats);
@ -161,15 +166,7 @@ class Index extends Common
*/
public function Color()
{
// 是否指定配色0默认白色、1黑色
if(isset($this->data_request['value']) && $this->data_request['value'] == 1)
{
MyCookie($this->theme_color_value_key, 1);
} else {
MyCookie($this->theme_color_value_key, null);
}
// 跳转首页
return MyRedirect(MyUrl('admin/index/index'));
return MyRedirect(SystemService::SetAdminThemeColor($this->data_request));
}
/**

View File

@ -42,7 +42,7 @@ class Navigation extends Base
parent::__construct();
// 导航类型
$this->nav_type = empty($this->data_request['nav_type']) ? 'header' : $this->data_request['nav_type'];
$this->nav_type = empty($this->data_request['type']) ? 'header' : $this->data_request['type'];
}
/**

View File

@ -25,6 +25,24 @@ use app\service\ResourcesService;
*/
class Payment extends Base
{
private $nav_type;
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 导航类型
$this->nav_type = empty($this->data_request['type']) ? 0 : intval($this->data_request['type']);
}
/**
* 列表
* @author Devil
@ -35,14 +53,18 @@ class Payment extends Base
public function Index()
{
// 插件列表
$payment = PaymentService::PluginsPaymentList();
$payment = PaymentService::PluginsPaymentList($this->nav_type);
// 模板数据
$assign = [
// 导航类型
'nav_type' => $this->nav_type,
// 支付插件列表
'data_list' => empty($payment['data']) ? [] : $payment['data'],
// 不能删除的支付方式
'cannot_deleted_list' => PaymentService::$cannot_deleted_list,
// 管理导航
'nav_data' => MyLang('payment.base_nav_list'),
// 适用平台
'common_platform_type' => MyConst('common_platform_type'),
// 应用商店

View File

@ -56,7 +56,24 @@ class PluginsCategory extends Base
*/
public function Save()
{
return ApiService::ApiDataReturn(PluginsCategoryService::PluginsCategorySave($this->data_request));
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(PluginsCategoryService::PluginsCategorySave($params));
}
/**
* 状态更新
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-31
* @desc description
*/
public function StatusUpdate()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(PluginsCategoryService::PluginsCategoryStatusUpdate($params));
}
/**

View File

@ -32,21 +32,21 @@ class Power extends Base
*/
public function Index()
{
$data_params = [
'field' => 'id,pid,name,control,action,url,sort,is_show,icon',
'order_by' => 'sort asc',
'where' => [
['pid', '=', 0]
],
];
$assign = [
'data' => AdminPowerService::PowerList($data_params),
'common_is_show_list' => MyConst('common_is_show_list'),
];
MyViewAssign($assign);
return MyView();
}
/**
* 获取节点子列表
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-25T15:19:45+0800
*/
public function GetNodeSon()
{
return ApiService::ApiDataReturn(AdminPowerService::PowerNodeSon($this->data_request));
}
/**
* 权限添加/编辑
* @author Devil
@ -61,6 +61,21 @@ class Power extends Base
return ApiService::ApiDataReturn(AdminPowerService::PowerSave($params));
}
/**
* 状态更新
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-31
* @desc description
*/
public function StatusUpdate()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(AdminPowerService::PowerStatusUpdate($params));
}
/**
* 删除
* @author Devil

View File

@ -56,9 +56,26 @@ class Region extends Base
*/
public function Save()
{
return ApiService::ApiDataReturn(RegionService::RegionSave($this->data_request));
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(RegionService::RegionSave($params));
}
/**
* 状态更新
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-31
* @desc description
*/
public function StatusUpdate()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(RegionService::RegionStatusUpdate($params));
}
/**
* 删除
* @author Devil

View File

@ -0,0 +1,87 @@
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( https://opensource.org/licenses/mit-license.php )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\admin\controller\Base;
use app\service\ApiService;
use app\service\ResourcesService;
use app\service\ShortcutMenuService;
/**
* 常用功能管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class ShortcutMenu extends Base
{
/**
* 列表
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
MyViewAssign([
// 数据
'data' => ShortcutMenuService::ShortcutMenuList(['admin'=>$this->admin, 'is_edit'=>1]),
// 编辑器文件存放地址
'editor_path_type' => ResourcesService::EditorPathTypeValue('shortcutmenu'),
]);
return MyView();
}
/**
* 保存
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-25T22:36:12+0800
*/
public function Save()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(ShortcutMenuService::ShortcutMenuSave($params));
}
/**
* 排序
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-25T22:36:12+0800
*/
public function Sort()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(ShortcutMenuService::ShortcutMenuSort($params));
}
/**
* 删除
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-25T22:36:12+0800
*/
public function Delete()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(ShortcutMenuService::ShortcutMenuDelete($params));
}
}
?>

View File

@ -28,111 +28,111 @@ use app\service\ResourcesService;
*/
class Site extends Base
{
public $nav_type;
public $view_type;
public $nav_type;
public $view_type;
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 导航类型
$this->nav_type = empty($this->data_request['nav_type']) ? 'base' : $this->data_request['nav_type'];
$this->view_type = empty($this->data_request['view_type']) ? 'index' : $this->data_request['view_type'];
// 导航类型
$this->nav_type = empty($this->data_request['nav_type']) ? 'base' : $this->data_request['nav_type'];
$this->view_type = empty($this->data_request['view_type']) ? 'index' : $this->data_request['view_type'];
// 仅网站设置页面存在多个子页面
// 仅网站设置页面存在多个子页面
if($this->nav_type != 'siteset')
{
$this->view_type = 'index';
$this->view_type = 'index';
}
}
}
/**
* 配置列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-11-25
* @desc description
*/
public function Index()
{
// 公共数据
$assign = $this->CurrentViewInit();
/**
* 配置列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-11-25
* @desc description
*/
public function Index()
{
// 公共数据
$assign = $this->CurrentViewInit();
// 配置信息
$data = ConfigService::ConfigList();
$assign['data'] = $data;
// 配置信息
$data = ConfigService::ConfigList();
$assign['data'] = $data;
// 数据处理
switch($this->nav_type)
{
// 站点类型
case 'sitetype' :
// 地址处理
if(!empty($data['common_self_extraction_address']) && !empty($data['common_self_extraction_address']['value']))
{
$address = ConfigService::SiteTypeExtractionAddressList($data['common_self_extraction_address']['value']);
$assign['sitetype_address_list'] = $address['data'];
}
// 数据处理
switch($this->nav_type)
{
// 站点类型
case 'sitetype' :
// 地址处理
if(!empty($data['common_self_extraction_address']) && !empty($data['common_self_extraction_address']['value']))
{
$address = ConfigService::SiteTypeExtractionAddressList($data['common_self_extraction_address']['value']);
$assign['sitetype_address_list'] = $address['data'];
}
// 加载地图api
$assign['is_load_map_api'] = 1;
break;
// 加载地图api
$assign['is_load_map_api'] = 1;
break;
// 网站设置
case 'siteset' :
// 获取商品一级分类
$where = [
['pid', '=', 0],
['is_home_recommended', '=', 1],
['is_enable', '=', 1],
];
$category = GoodsCategoryService::GoodsCategoryList(['where'=>$where]);
if(!empty($category))
{
// 关键字
$floor_keywords = (empty($data['home_index_floor_top_right_keywords']) || empty($data['home_index_floor_top_right_keywords']['value'])) ? [] : json_decode($data['home_index_floor_top_right_keywords']['value'], true);
// 分类
$floor_category = (empty($data['home_index_floor_left_top_category']) || empty($data['home_index_floor_left_top_category']['value'])) ? [] : json_decode($data['home_index_floor_left_top_category']['value'], true);
foreach($category as &$c)
{
// 获取二级分类
$where = [
['pid', '=', $c['id']],
['is_enable', '=', 1],
];
$c['items'] = GoodsCategoryService::GoodsCategoryList(['where'=>$where]);
// 网站设置
case 'siteset' :
// 获取商品一级分类
$where = [
['pid', '=', 0],
['is_home_recommended', '=', 1],
['is_enable', '=', 1],
];
$category = GoodsCategoryService::GoodsCategoryList(['where'=>$where]);
if(!empty($category))
{
// 关键字
$floor_keywords = (empty($data['home_index_floor_top_right_keywords']) || empty($data['home_index_floor_top_right_keywords']['value'])) ? [] : json_decode($data['home_index_floor_top_right_keywords']['value'], true);
// 分类
$floor_category = (empty($data['home_index_floor_left_top_category']) || empty($data['home_index_floor_left_top_category']['value'])) ? [] : json_decode($data['home_index_floor_left_top_category']['value'], true);
foreach($category as &$c)
{
// 获取二级分类
$where = [
['pid', '=', $c['id']],
['is_enable', '=', 1],
];
$c['items'] = GoodsCategoryService::GoodsCategoryList(['where'=>$where]);
// 配置的关键字
$c['config_keywords'] = (!empty($floor_keywords) && is_array($floor_keywords) && array_key_exists($c['id'], $floor_keywords)) ? $floor_keywords[$c['id']] : '';
// 配置的关键字
$c['config_keywords'] = (!empty($floor_keywords) && is_array($floor_keywords) && array_key_exists($c['id'], $floor_keywords)) ? $floor_keywords[$c['id']] : '';
// 配置左侧分类
$c['config_category_ids'] = (!empty($floor_category) && is_array($floor_category) && array_key_exists($c['id'], $floor_category)) ? explode(',', $floor_category[$c['id']]) : [];
}
}
$assign['goods_category_list'] = $category;
// 配置左侧分类
$c['config_category_ids'] = (!empty($floor_category) && is_array($floor_category) && array_key_exists($c['id'], $floor_category)) ? explode(',', $floor_category[$c['id']]) : [];
}
}
$assign['goods_category_list'] = $category;
// 楼层自定义商品
if(!empty($data['home_index_floor_manual_mode_goods']) && !empty($data['home_index_floor_manual_mode_goods']['value']))
{
$ret = SiteService::FloorManualModeGoodsViewHandle(json_decode($data['home_index_floor_manual_mode_goods']['value'], true));
$assign['floor_manual_mode_goods_list'] = $ret['data'];
}
// 楼层自定义商品
if(!empty($data['home_index_floor_manual_mode_goods']) && !empty($data['home_index_floor_manual_mode_goods']['value']))
{
$ret = SiteService::FloorManualModeGoodsViewHandle(json_decode($data['home_index_floor_manual_mode_goods']['value'], true));
$assign['floor_manual_mode_goods_list'] = $ret['data'];
}
// 支付方式
$assign['payment_list'] = PaymentService::PaymentList(['is_enable'=>1, 'is_open_user'=>1]);
break;
}
// 支付方式
$assign['payment_list'] = PaymentService::PaymentList(['is_enable'=>1, 'is_open_user'=>1]);
break;
}
// 编辑器文件存放地址
// 编辑器文件存放地址
$assign['editor_path_type'] = ResourcesService::EditorPathTypeValue('common');
// 数据赋值
@ -141,229 +141,232 @@ class Site extends Base
// 视图
$view = 'site/'.$this->nav_type.'/'.$this->view_type;
return MyView($view);
}
}
/**
* 公共视图
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-11-21
* @desc description
*/
public function CurrentViewInit()
{
// 模板数据
$assign = [
// 主/子导航
'nav_type' => $this->nav_type,
'view_type' => $this->view_type,
// 时区
'common_site_timezone_list' => MyLang('common_site_timezone_list'),
// 平台
'common_platform_type' => MyConst('common_platform_type'),
// 关闭开启
'common_close_open_list' => MyConst('common_close_open_list'),
// 登录方式
'common_login_type_list' => MyConst('common_login_type_list'),
// 用户注册类型列表
'common_user_reg_type_list' => MyConst('common_user_reg_type_list'),
// 图片验证码规则
'common_site_images_verify_rules_list' => MyConst('common_site_images_verify_rules_list'),
// 热门搜索关键字
'common_search_keywords_type_list' => MyConst('common_search_keywords_type_list'),
// 是否
'common_is_text_list' => MyConst('common_is_text_list'),
// 站点类型
'common_site_type_list' => MyConst('common_site_type_list'),
// 扣除库存规则
'common_deduction_inventory_rules_list' => MyConst('common_deduction_inventory_rules_list'),
// 增加销量规则
'common_sales_count_inc_rules_list' => MyConst('common_sales_count_inc_rules_list'),
// 首页商品排序规则
'common_goods_order_by_type_list' => MyConst('common_goods_order_by_type_list'),
'common_goods_order_by_rule_list' => MyConst('common_goods_order_by_rule_list'),
// 首页楼层数据类型
'common_site_floor_data_type_list' => MyConst('common_site_floor_data_type_list'),
// 搜索参数类型
'common_goods_parameters_type_list' => MyConst('common_goods_parameters_type_list'),
// 多语言
'common_multilingual_list' => MyConst('common_multilingual_list'),
// 主导航
'second_nav_list' => MyLang('site.second_nav_list'),
// 网站设置导航
'siteset_nav_list' => MyLang('site.siteset_nav_list'),
];
return $assign;
}
/**
* 公共视图
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-11-21
* @desc description
*/
public function CurrentViewInit()
{
// 模板数据
$assign = [
// 主/子导航
'nav_type' => $this->nav_type,
'view_type' => $this->view_type,
// 时区
'common_site_timezone_list' => MyLang('common_site_timezone_list'),
// 平台
'common_platform_type' => MyConst('common_platform_type'),
// 关闭开启
'common_close_open_list' => MyConst('common_close_open_list'),
// 登录方式
'common_login_type_list' => MyConst('common_login_type_list'),
// 用户注册类型列表
'common_user_reg_type_list' => MyConst('common_user_reg_type_list'),
// 图片验证码规则
'common_site_images_verify_rules_list' => MyConst('common_site_images_verify_rules_list'),
// 热门搜索关键字
'common_search_keywords_type_list' => MyConst('common_search_keywords_type_list'),
// 是否
'common_is_text_list' => MyConst('common_is_text_list'),
// 站点类型
'common_site_type_list' => MyConst('common_site_type_list'),
// 扣除库存规则
'common_deduction_inventory_rules_list' => MyConst('common_deduction_inventory_rules_list'),
// 增加销量规则
'common_sales_count_inc_rules_list' => MyConst('common_sales_count_inc_rules_list'),
// 首页商品排序规则
'common_goods_order_by_type_list' => MyConst('common_goods_order_by_type_list'),
'common_goods_order_by_rule_list' => MyConst('common_goods_order_by_rule_list'),
// 首页楼层数据类型
'common_site_floor_data_type_list' => MyConst('common_site_floor_data_type_list'),
// 搜索参数类型
'common_goods_parameters_type_list' => MyConst('common_goods_parameters_type_list'),
// 多语言
'common_multilingual_list' => MyConst('common_multilingual_list'),
// 商品分类
'common_show_goods_category_level_list' => MyConst('common_show_goods_category_level_list'),
// 主导航
'base_nav_list' => MyLang('site.base_nav_list'),
// 网站设置导航
'siteset_nav_list' => MyLang('site.siteset_nav_list'),
];
return $assign;
}
/**
* 配置数据保存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-11-25
* @desc description
*/
public function Save()
{
// 参数
$params = $_POST;
/**
* 配置数据保存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-11-25
* @desc description
*/
public function Save()
{
// 参数
$params = $_POST;
// 字段不存在赋空值
$field_list = [];
// 字段不存在赋空值
$field_list = [];
// 导航类型
switch($this->nav_type)
{
// 基础
case 'base' :
$field_list[] = 'home_site_logo';
$field_list[] = 'home_site_logo_wap';
$field_list[] = 'home_site_logo_app';
$field_list[] = 'home_site_logo_square';
break;
// 导航类型
switch($this->nav_type)
{
// 基础
case 'base' :
$field_list[] = 'home_site_logo';
$field_list[] = 'home_site_logo_wap';
$field_list[] = 'home_site_logo_app';
$field_list[] = 'home_site_logo_square';
$field_list[] = 'home_site_app_state';
break;
// 用户注册
case 'register' :
$field_list[] = 'home_user_reg_type';
$field_list[] = 'home_site_user_register_bg_images';
break;
// 用户注册
case 'register' :
$field_list[] = 'home_user_reg_type';
$field_list[] = 'home_site_user_register_bg_images';
break;
// 用户登录
case 'login' :
$field_list[] = 'home_user_login_type';
$field_list[] = 'home_site_user_login_ad1_images';
$field_list[] = 'home_site_user_login_ad2_images';
$field_list[] = 'home_site_user_login_ad3_images';
break;
// 用户登录
case 'login' :
$field_list[] = 'home_user_login_type';
$field_list[] = 'home_site_user_login_ad1_images';
$field_list[] = 'home_site_user_login_ad2_images';
$field_list[] = 'home_site_user_login_ad3_images';
break;
// 密码找回
case 'forgetpwd' :
$field_list[] = 'home_site_user_forgetpwd_ad1_images';
$field_list[] = 'home_site_user_forgetpwd_ad2_images';
$field_list[] = 'home_site_user_forgetpwd_ad3_images';
break;
// 密码找回
case 'forgetpwd' :
$field_list[] = 'home_site_user_forgetpwd_ad1_images';
$field_list[] = 'home_site_user_forgetpwd_ad2_images';
$field_list[] = 'home_site_user_forgetpwd_ad3_images';
break;
// 图片验证码
case 'verify' :
$field_list[] = 'common_images_verify_rules';
break;
// 图片验证码
case 'verify' :
$field_list[] = 'common_images_verify_rules';
break;
// 站点类型
case 'sitetype' :
// 站点类型
$params['common_site_type'] = empty($params['common_site_type']) ? '' : (is_array($params['common_site_type']) ? json_encode($params['common_site_type'], JSON_UNESCAPED_UNICODE) : $params['common_site_type']);
// 站点类型
case 'sitetype' :
// 站点类型
$params['common_site_type'] = empty($params['common_site_type']) ? '' : (is_array($params['common_site_type']) ? json_encode($params['common_site_type'], JSON_UNESCAPED_UNICODE) : $params['common_site_type']);
// 自提地址处理
if(!empty($params['common_self_extraction_address']))
{
if(!is_array($params['common_self_extraction_address']))
{
$address = json_decode($params['common_self_extraction_address'], true);
} else {
$address = $params['common_self_extraction_address'];
}
foreach($address as $k=>$v)
{
$address[$k]['id'] = $k;
$address[$k]['logo'] = empty($v['logo']) ? '' : ResourcesService::AttachmentPathHandle($v['logo']);
}
$params['common_self_extraction_address'] = json_encode($address, JSON_UNESCAPED_UNICODE);
}
break;
// 自提地址处理
if(!empty($params['common_self_extraction_address']))
{
if(!is_array($params['common_self_extraction_address']))
{
$address = json_decode($params['common_self_extraction_address'], true);
} else {
$address = $params['common_self_extraction_address'];
}
foreach($address as $k=>$v)
{
$address[$k]['id'] = $k;
$address[$k]['logo'] = empty($v['logo']) ? '' : ResourcesService::AttachmentPathHandle($v['logo']);
}
$params['common_self_extraction_address'] = json_encode($address, JSON_UNESCAPED_UNICODE);
}
break;
// 网站设置
case 'siteset' :
switch($this->view_type)
{
// 首页
case 'index' :
// 楼层关键字
$params['home_index_floor_top_right_keywords'] = empty($params['home_index_floor_top_right_keywords']) ? '' : json_encode($params['home_index_floor_top_right_keywords'], JSON_UNESCAPED_UNICODE);
// 楼层自定义商品
$params['home_index_floor_manual_mode_goods'] = empty($params['home_index_floor_manual_mode_goods']) ? '' : json_encode($params['home_index_floor_manual_mode_goods'], JSON_UNESCAPED_UNICODE);
// 楼层左侧分类
$params['home_index_floor_left_top_category'] = empty($params['home_index_floor_left_top_category']) ? '' : json_encode($params['home_index_floor_left_top_category'], JSON_UNESCAPED_UNICODE);
break;
// 网站设置
case 'siteset' :
switch($this->view_type)
{
// 首页
case 'index' :
// 楼层关键字
$params['home_index_floor_top_right_keywords'] = empty($params['home_index_floor_top_right_keywords']) ? '' : json_encode($params['home_index_floor_top_right_keywords'], JSON_UNESCAPED_UNICODE);
// 楼层自定义商品
$params['home_index_floor_manual_mode_goods'] = empty($params['home_index_floor_manual_mode_goods']) ? '' : json_encode($params['home_index_floor_manual_mode_goods'], JSON_UNESCAPED_UNICODE);
// 楼层左侧分类
$params['home_index_floor_left_top_category'] = empty($params['home_index_floor_left_top_category']) ? '' : json_encode($params['home_index_floor_left_top_category'], JSON_UNESCAPED_UNICODE);
break;
// 搜索
case 'search' :
$field_list[] = 'home_search_params_type';
break;
// 搜索
case 'search' :
$field_list[] = 'home_search_params_type';
break;
// 订单
case 'order' :
$params['common_default_payment'] = empty($params['common_default_payment']) ? '' : json_encode($params['common_default_payment'], JSON_UNESCAPED_UNICODE);
break;
// 订单
case 'order' :
$params['common_default_payment'] = empty($params['common_default_payment']) ? '' : json_encode($params['common_default_payment'], JSON_UNESCAPED_UNICODE);
break;
// 扩展
case 'extends' :
// 可用语言状态+图标
$choose_list = [];
if(!empty($params['common_multilingual_choose_list']) && is_array($params['common_multilingual_choose_list']))
{
foreach($params['common_multilingual_choose_list'] as $k=>$v)
{
$choose_list[$k] = [
'icon' => empty($v['icon']) ? '' : ResourcesService::AttachmentPathHandle($v['icon']),
'status' => (isset($v['status']) && $v['status'] == 1) ? 1 : 0,
];
}
}
$params['common_multilingual_choose_list'] = empty($choose_list) ? '' : json_encode($choose_list, JSON_UNESCAPED_UNICODE);
// 扩展
case 'extends' :
// 可用语言状态+图标
$choose_list = [];
if(!empty($params['common_multilingual_choose_list']) && is_array($params['common_multilingual_choose_list']))
{
foreach($params['common_multilingual_choose_list'] as $k=>$v)
{
$choose_list[$k] = [
'icon' => empty($v['icon']) ? '' : ResourcesService::AttachmentPathHandle($v['icon']),
'status' => (isset($v['status']) && $v['status'] == 1) ? 1 : 0,
];
}
}
$params['common_multilingual_choose_list'] = empty($choose_list) ? '' : json_encode($choose_list, JSON_UNESCAPED_UNICODE);
// 域名绑定多语言
$params['common_domain_multilingual_bind_list'] = empty($params['common_domain_multilingual_bind_list']) ? '' : json_encode(array_values($params['common_domain_multilingual_bind_list']), JSON_UNESCAPED_UNICODE);
break;
}
break;
// 域名绑定多语言
$params['common_domain_multilingual_bind_list'] = empty($params['common_domain_multilingual_bind_list']) ? '' : json_encode(array_values($params['common_domain_multilingual_bind_list']), JSON_UNESCAPED_UNICODE);
break;
}
break;
// 缓存
case 'cache' :
// session是否使用缓存
// 数据是否使用缓存
if((isset($params['common_session_is_use_cache']) && $params['common_session_is_use_cache'] == 1) || (isset($params['common_data_is_use_redis_cache']) && $params['common_data_is_use_redis_cache'] == 1))
{
// 连接测试
$ret = SiteService::RedisCheckConnectPing($params['common_cache_data_redis_host'], $params['common_cache_data_redis_port'], $params['common_cache_data_redis_password']);
if($ret['code'] != 0)
{
return $ret;
}
}
break;
}
// 缓存
case 'cache' :
// session是否使用缓存
// 数据是否使用缓存
if((isset($params['common_session_is_use_cache']) && $params['common_session_is_use_cache'] == 1) || (isset($params['common_data_is_use_redis_cache']) && $params['common_data_is_use_redis_cache'] == 1))
{
// 连接测试
$ret = SiteService::RedisCheckConnectPing($params['common_cache_data_redis_host'], $params['common_cache_data_redis_port'], $params['common_cache_data_redis_password']);
if($ret['code'] != 0)
{
return $ret;
}
}
break;
}
// 基础配置
$ret = ConfigService::ConfigSave(ConfigService::FieldsEmptyDataHandle($params, $field_list));
// 基础配置
$ret = ConfigService::ConfigSave(ConfigService::FieldsEmptyDataHandle($params, $field_list));
// 清除缓存
if($ret['code'] == 0)
{
switch($this->nav_type)
{
// 登录
case 'login' :
MyCache(SystemService::CacheKey('shopxo.cache_user_login_left_key'), null);
// 清除缓存
if($ret['code'] == 0)
{
switch($this->nav_type)
{
// 登录
case 'login' :
MyCache(SystemService::CacheKey('shopxo.cache_user_login_left_key'), null);
// 密码找回
case 'forgetpwd' :
MyCache(SystemService::CacheKey('shopxo.cache_user_forgetpwd_left_key'), null);
break;
}
}
return ApiService::ApiDataReturn($ret);
}
// 密码找回
case 'forgetpwd' :
MyCache(SystemService::CacheKey('shopxo.cache_user_forgetpwd_left_key'), null);
break;
}
}
return ApiService::ApiDataReturn($ret);
}
/**
* 商品搜索
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-11-25
* @desc description
*/
/**
* 商品搜索
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-11-25
* @desc description
*/
public function GoodsSearch()
{
// 搜索数据

View File

@ -35,12 +35,12 @@ class Sms extends Base
// 导航
$type = empty($this->data_request['type']) ? 'index' : $this->data_request['type'];
$assign = [
// 配置信息
'data' => ConfigService::ConfigList(),
// 管理导航
'nav_data' => MyLang('sms.base_nav_list'),
// 页面导航
'nav_type' => $type,
// 配置信息
'data' => ConfigService::ConfigList(),
// 管理导航
'nav_data' => MyLang('sms.base_nav_list'),
// 页面导航
'type' => $type,
];
MyViewAssign($assign);
return MyView($type);

View File

@ -0,0 +1,82 @@
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( https://opensource.org/licenses/mit-license.php )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\admin\controller\Base;
use app\service\ApiService;
use app\service\SmsLogService;
/**
* 短信日志管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class SmsLog extends Base
{
/**
* 列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2022-08-01
* @desc description
*/
public function Index()
{
return MyView();
}
/**
* 详情
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2022-08-01
* @desc description
*/
public function Detail()
{
return MyView();
}
/**
* 删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-28
* @desc description
*/
public function Delete()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(SmsLogService::SmsLogDelete($params));
}
/**
* 全部删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-11-18
* @desc description
*/
public function AllDelete()
{
$params = $this->data_request;
$params['admin'] = $this->admin;
return ApiService::ApiDataReturn(SmsLogService::SmsLogAllDelete($params));
}
}
?>

View File

@ -89,13 +89,14 @@ class Admin
],
],
[
'label' => $lang['status'],
'view_type' => 'field',
'view_key' => 'status',
'view_data_key' => 'name',
'view_data' => MyConst('common_admin_status_list'),
'is_sort' => 1,
'search_config' => [
'label' => $lang['status'],
'view_type' => 'field',
'view_key' => 'status_name',
'is_round_point' => 1,
'round_point_key' => 'status',
'round_point_style' => [0=>'success', 2=>'danger'],
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => MyConst('common_admin_status_list'),
@ -205,21 +206,14 @@ class Admin
'table_name' => 'Admin',
'is_page' => 1,
'is_handle_time_field' => 1,
'is_fixed_name_field' => 1,
'fixed_name_data' => [
'status' => [
'data' => MyConst('common_admin_status_list'),
],
],
],
];
}
/**
* 获取角色组列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-11
* @desc description
*/
public function GetRoleList()
{
}
}
?>

View File

@ -83,8 +83,9 @@ class Brand
],
[
'label' => $lang['logo'],
'view_type' => 'module',
'view_key' => 'brand/module/logo',
'view_type' => 'images',
'view_key' => 'logo',
'images_height' => 25,
],
[
'label' => $lang['url'],

View File

@ -42,7 +42,7 @@ class CustomView
'status_field' => 'is_enable',
'is_search' => 1,
'is_delete' => 1,
'is_middle' => 0,
'is_middle' => 1,
'detail_title' => MyLang('form_table_base_detail_title'),
],
// 表单配置

235
app/admin/form/Emaillog.php Normal file
View File

@ -0,0 +1,235 @@
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( https://opensource.org/licenses/mit-license.php )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\form;
/**
* 邮件日志动态表格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-26
* @desc description
*/
class EmailLog
{
// 基础条件
public $condition_base = [];
/**
* 入口
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-26
* @desc description
* @param [array] $params [输入参数]
*/
public function Run($params = [])
{
$lang = MyLang('emaillog.form_table');
return [
// 基础配置
'base' => [
'key_field' => 'id',
'is_search' => 1,
'is_delete' => 1,
'is_middle' => 0,
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],
[
'label' => $lang['email'],
'view_type' => 'field',
'view_key' => 'email',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['status'],
'view_type' => 'field',
'view_key' => 'status_name',
'is_round_point' => 1,
'round_point_key' => 'status',
'round_point_style' => [1=>'success', 2=>'danger'],
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'form_name' => 'status',
'where_type' => 'in',
'data' => MyConst('common_email_log_status_list'),
'data_key' => 'value',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => $lang['title'],
'view_type' => 'field',
'view_key' => 'title',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['template_value'],
'view_type' => 'field',
'view_type' => 'module',
'view_key' => 'emaillog/module/template_value',
'align' => 'left',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'form_name' => 'template_value',
'where_type' => 'like',
],
],
[
'label' => $lang['template_var'],
'view_type' => 'field',
'view_type' => 'module',
'view_key' => 'emaillog/module/template_var',
'align' => 'left',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'form_name' => 'template_var',
'where_type' => 'like',
],
],
[
'label' => $lang['reason'],
'view_type' => 'field',
'view_key' => 'reason',
'text_truncate' => 2,
'is_popover' => 1,
'is_sort' => 1,
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['smtp_host'],
'view_type' => 'field',
'view_key' => 'smtp_host',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['smtp_port'],
'view_type' => 'field',
'view_key' => 'smtp_port',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['smtp_name'],
'view_type' => 'field',
'view_key' => 'smtp_name',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['smtp_account'],
'view_type' => 'field',
'view_key' => 'smtp_account',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['smtp_send_name'],
'view_type' => 'field',
'view_key' => 'smtp_send_name',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['tsc'],
'view_type' => 'field',
'view_key' => 'tsc',
'is_sort' => 1,
'search_config' => [
'form_type' => 'section',
],
],
[
'label' => $lang['add_time'],
'view_type' => 'field',
'view_key' => 'add_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => $lang['upd_time'],
'view_type' => 'field',
'view_key' => 'upd_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => MyLang('operate_title'),
'view_type' => 'operate',
'view_key' => 'emaillog/module/operate',
'align' => 'center',
'fixed' => 'right',
'width' => 120,
],
],
// 数据配置
'data' => [
'table_name' => 'EmailLog',
'is_page' => 1,
'is_handle_time_field' => 1,
'is_fixed_name_field' => 1,
'fixed_name_data' => [
'status' => [
'data' => MyConst('common_email_log_status_list'),
],
],
],
];
}
}
?>

View File

@ -66,7 +66,7 @@ class Goods
'label' => $lang['id'],
'view_type' => 'field',
'view_key' => 'id',
'width' => 105,
'width' => 110,
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',

View File

@ -155,6 +155,7 @@ class GoodsComments
'post_url' => MyUrl('admin/goodscomments/statusupdate'),
'is_form_su' => 1,
'align' => 'center',
'width' => 130,
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
@ -171,6 +172,7 @@ class GoodsComments
'view_key' => 'is_anonymous',
'post_url' => MyUrl('admin/goodscomments/statusupdate'),
'align' => 'center',
'width' => 130,
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
@ -187,6 +189,7 @@ class GoodsComments
'view_key' => 'is_reply',
'post_url' => MyUrl('admin/goodscomments/statusupdate'),
'align' => 'center',
'width' => 130,
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',

View File

@ -140,6 +140,7 @@ class IntegralLog
'view_key' => 'integrallog/module/operate',
'align' => 'center',
'fixed' => 'right',
'width' => 80,
],
],
// 数据配置

View File

@ -171,6 +171,7 @@ class Message
'view_key' => 'message/module/operate',
'align' => 'center',
'fixed' => 'right',
'width' => 120,
],
],
// 数据配置

View File

@ -433,11 +433,11 @@ class Order
],
'is_page_stats' => 1,
'page_stats_data' => [
['name'=>'订单总额', 'field'=>'total_price', 'unit'=>'元'],
['name'=>'支付总额', 'field'=>'pay_price', 'unit'=>'元'],
['name'=>'订单总额', 'field'=>'total_price'],
['name'=>'支付总额', 'field'=>'pay_price'],
['name'=>'商品总数', 'field'=>'buy_number_count'],
['name'=>'退款', 'field'=>'refund_price', 'unit'=>'元'],
['name'=>'退货', 'field'=>'returned_quantity'],
['name'=>'退款金额', 'field'=>'refund_price'],
['name'=>'退货数量', 'field'=>'returned_quantity'],
],
'data_params' => [
'is_public' => 0,

View File

@ -245,6 +245,7 @@ class PayLog
'view_key' => 'paylog/module/operate',
'align' => 'center',
'fixed' => 'right',
'width' => 120,
],
],
// 数据配置

View File

@ -246,6 +246,7 @@ class PayRequestLog
'view_key' => 'payrequestlog/module/operate',
'align' => 'center',
'fixed' => 'right',
'width' => 80,
],
],
// 数据配置

View File

@ -185,6 +185,7 @@ class RefundLog
'view_key' => 'refundlog/module/operate',
'align' => 'center',
'fixed' => 'right',
'width' => 80,
],
],
// 数据配置

238
app/admin/form/Smslog.php Normal file
View File

@ -0,0 +1,238 @@
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( https://opensource.org/licenses/mit-license.php )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\form;
/**
* 短信日志动态表格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-26
* @desc description
*/
class SmsLog
{
// 基础条件
public $condition_base = [];
/**
* 入口
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-26
* @desc description
* @param [array] $params [输入参数]
*/
public function Run($params = [])
{
$lang = MyLang('smslog.form_table');
return [
// 基础配置
'base' => [
'key_field' => 'id',
'is_search' => 1,
'is_delete' => 1,
'is_middle' => 0,
],
// 表单配置
'form' => [
[
'view_type' => 'checkbox',
'is_checked' => 0,
'checked_text' => MyLang('reverse_select_title'),
'not_checked_text' => MyLang('select_all_title'),
'align' => 'center',
'width' => 80,
],
[
'label' => $lang['platform'],
'view_type' => 'field',
'view_key' => 'platform_name',
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'form_name' => 'platform',
'where_type' => 'in',
'data' => MyConst('common_sms_log_platform_list'),
'data_key' => 'value',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => $lang['status'],
'view_type' => 'field',
'view_key' => 'status_name',
'is_round_point' => 1,
'round_point_key' => 'status',
'round_point_style' => [1=>'success', 2=>'danger'],
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'form_name' => 'status',
'where_type' => 'in',
'data' => MyConst('common_sms_log_status_list'),
'data_key' => 'value',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => $lang['mobile'],
'view_type' => 'field',
'view_key' => 'mobile',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['template_value'],
'view_type' => 'field',
'view_type' => 'module',
'view_key' => 'smslog/module/template_value',
'align' => 'left',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'form_name' => 'template_value',
'where_type' => 'like',
],
],
[
'label' => $lang['template_var'],
'view_type' => 'field',
'view_type' => 'module',
'view_key' => 'smslog/module/template_var',
'align' => 'left',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'form_name' => 'template_var',
'where_type' => 'like',
],
],
[
'label' => $lang['sign_name'],
'view_type' => 'field',
'view_key' => 'sign_name',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
],
],
[
'label' => $lang['request_url'],
'view_type' => 'field',
'view_key' => 'request_url',
'is_sort' => 1,
'grid_size' => 'lg',
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['request_params'],
'view_type' => 'field',
'view_type' => 'module',
'view_key' => 'smslog/module/request_params',
'align' => 'left',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'form_name' => 'request_params',
'where_type' => 'like',
],
],
[
'label' => $lang['response_data'],
'view_type' => 'field',
'view_type' => 'module',
'view_key' => 'smslog/module/response_data',
'align' => 'left',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'form_name' => 'response_data',
'where_type' => 'like',
],
],
[
'label' => $lang['reason'],
'view_type' => 'field',
'view_key' => 'reason',
'text_truncate' => 2,
'is_popover' => 1,
'is_sort' => 1,
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => $lang['tsc'],
'view_type' => 'field',
'view_key' => 'tsc',
'is_sort' => 1,
'search_config' => [
'form_type' => 'section',
],
],
[
'label' => $lang['add_time'],
'view_type' => 'field',
'view_key' => 'add_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => $lang['upd_time'],
'view_type' => 'field',
'view_key' => 'upd_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => MyLang('operate_title'),
'view_type' => 'operate',
'view_key' => 'smslog/module/operate',
'align' => 'center',
'fixed' => 'right',
'width' => 120,
],
],
// 数据配置
'data' => [
'table_name' => 'SmsLog',
'is_page' => 1,
'is_handle_time_field' => 1,
'is_fixed_name_field' => 1,
'fixed_name_data' => [
'platform' => [
'data' => MyConst('common_sms_log_platform_list'),
],
'status' => [
'data' => MyConst('common_sms_log_status_list'),
],
],
],
];
}
}
?>

View File

@ -159,6 +159,24 @@ class User
'where_type' => 'like',
],
],
[
'label' => $lang['status_name'],
'view_type' => 'field',
'view_key' => 'status_name',
'is_round_point' => 1,
'round_point_key' => 'status',
'round_point_style' => [0=>'success', 1=>'warning', 2=>'danger'],
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'form_name' => 'status',
'where_type' => 'in',
'data' => MyConst('common_user_status_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => $lang['gender_name'],
'view_type' => 'field',
@ -176,23 +194,6 @@ class User
'is_multiple' => 1,
],
],
[
'label' => $lang['status_name'],
'view_type' => 'field',
'view_key' => 'status',
'view_data_key' => 'name',
'view_data' => MyConst('common_user_status_list'),
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'form_name' => 'status',
'where_type' => 'in',
'data' => MyConst('common_user_status_list'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => $lang['province'],
'view_type' => 'field',
@ -303,8 +304,14 @@ class User
],
// 数据配置
'data' => [
'table_name' => 'User',
'data_handle' => 'UserService::UserListHandle',
'table_name' => 'User',
'data_handle' => 'UserService::UserListHandle',
'is_fixed_name_field' => 1,
'fixed_name_data' => [
'status' => [
'data' => MyConst('common_user_status_list'),
],
],
],
];
}

View File

@ -27,7 +27,9 @@ return [
'goods_hot_tips' => '僅顯示前30條商品',
'payment_name' => '支付方式',
'order_region_name' => '訂單地域分佈',
'order_region_tips' => '僅顯示30條數據',
'order_region_tips' => '僅顯示10條數據',
'new_user_name' => '新增用戶',
'buy_user_name' => '下單用戶',
'upgrade_check_loading_tips' => '正在獲取最新內容、請稍候…',
'upgrade_version_name' => '更新版本:',
'upgrade_date_name' => '更新日期:',
@ -55,6 +57,8 @@ return [
'base_item_map_whole_country_province' => '省',
'base_item_map_whole_country_city' => '市',
'base_item_map_whole_country_county' => '區/縣',
'base_item_new_user_title' => '新增用戶',
'base_item_buy_user_title' => '下單用戶',
'system_info_title' => '系統資訊',
'system_ver_title' => '軟體版本',
'system_os_ver_title' => '作業系統',
@ -145,7 +149,7 @@ return [
'address_logo_message' => '請上傳logo圖片',
],
// 主导航
'second_nav_list' => [
'base_nav_list' => [
['name' => '基礎配寘', 'type' => 'base'],
['name' => '網站設定', 'type' => 'siteset'],
['name' => '網站類型', 'type' => 'sitetype'],
@ -164,7 +168,6 @@ return [
['name' => '商品', 'type' => 'goods'],
['name' => '蒐索', 'type' => 'search'],
['name' => '訂單', 'type' => 'order'],
['name' => '優惠', 'type' => 'discount'],
['name' => '擴展', 'type' => 'extends'],
],
// 页面基础
@ -176,6 +179,7 @@ return [
'base_item_data_cache_title' => '數據緩存配寘',
'base_item_redis_cache_title' => 'redis緩存配寘',
'base_item_crontab_config_title' => '定時腳本配寘',
'base_item_regex_config_title' => '正則配寘',
'base_item_quick_nav_title' => '快捷導航',
'base_item_user_base_title' => '用戶基礎',
'base_item_user_address_title' => '用戶地址',
@ -225,7 +229,7 @@ return [
'left_images_random_tips' => '左側圖片最多可上傳3張圖片、每次隨機展示其中一張',
'background_color_tips' => '可自定義背景圖片、默認底灰色',
'site_setup_layout_tips' => '拖拽模式需要自行進入首頁設計頁面、請先保存選中配寘後再',
'site_setup_layout_button_name' => '設計頁面>>',
'site_setup_layout_button_name' => '設計頁面',
'site_setup_goods_category_tips' => '如需更多樓層展示,請先到/商品管理->商品分類、一級分類設置首頁推薦',
'site_setup_goods_category_no_data_tips'=> '暫無數據,請先到/商品管理->商品分類、一級分類設置首頁推薦',
'site_setup_order_default_payment_tips' => '可以設定不同平臺對應的默認支付方式、請先在[網站管理->支付方式]中安裝好支付挿件啟用並對用戶開放',
@ -241,13 +245,13 @@ return [
'form_take_address_logo' => 'LOGO',
'form_take_address_logo_tips' => '建議300*300px',
'form_take_address_alias' => '別名',
'form_take_address_alias_message' => '別名格式最多16個字',
'form_take_address_alias_message' => '別名格式最多16個字',
'form_take_address_name' => '連絡人',
'form_take_address_name_message' => '連絡人格式2~16個字之間',
'form_take_address_name_message' => '連絡人格式2~16個字之間',
'form_take_address_tel' => '聯繫電話',
'form_take_address_tel_message' => '請填寫聯繫電話',
'form_take_address_address' => '詳細地址',
'form_take_address_address_message' => '詳細地址格式1~80個字之間',
'form_take_address_address_message' => '詳細地址格式1~80個字之間',
// 域名绑定语言
'form_domain_multilingual_domain_name' => '域名',
'form_domain_multilingual_domain_message' => '請填寫功能變數名稱',
@ -260,7 +264,7 @@ return [
'admin_login_title' => '後臺登入',
'admin_login_info_bg_images_list_tips' => [
'1.背景圖片位於[ public/static/admin/default/images/login ]目錄下',
'2.背景圖片命名規則1~50、如1.jpg',
'2.背景圖片命名規則1~50、如1.png',
],
'map_type_tips' => '由於每一家的地圖標準不一樣、請勿隨意切換地圖、會導致地圖座標標注不準確的情况。',
'apply_map_baidu_name' => '請到百度地圖開放平臺申請',
@ -490,7 +494,7 @@ return [
],
'nav_store_theme_name' => '更多主題下載',
'nav_theme_download_name' => '查看小程式打包教程',
'nav_theme_download_tips' => '手機端主題採用uniapp開發支持多端小程式+H5APP也在緊急適配中。',
'nav_theme_download_tips' => '手機端主題採用uniapp開發支持多端小程式、H5、APP',
'form_alipay_extend_title' => '客服配寘',
'form_alipay_extend_tips' => 'PS如【APP/小程式】中開啟(開啟線上客服),則以下配寘必填[企業編碼]和[聊天窗編碼]',
'form_theme_upload_tips' => '上傳一個zip壓縮格式的安裝包',
@ -549,7 +553,8 @@ return [
'base_nav_title' => '商品',
'goods_nav_list' => [
'base' => ['name' => '基礎資訊', 'type'=>'base'],
'specifications' => ['name' => '商品規格', 'type'=>'specifications'],
'spec' => ['name' => '商品規格', 'type'=>'spec'],
'spec_images' => ['name' => '規格圖片', 'type'=>'spec_images'],
'parameters' => ['name' => '商品參數', 'type'=>'parameters'],
'photo' => ['name' => '商品相册', 'type'=>'photo'],
'video' => ['name' => '商品視頻', 'type'=>'video'],
@ -568,8 +573,8 @@ return [
'info_placeholder' => '請輸入商品名稱/簡述/編碼/條碼/SEO資訊',
'category_text' => '商品分類',
'brand_name' => '品牌',
'price' => '銷售價格(元)',
'original_price' => '原價(元)',
'price' => '銷售價格',
'original_price' => '原價',
'inventory' => '庫存總量',
'is_shelves' => '上下架',
'is_deduction_inventory' => '扣减庫存',
@ -649,8 +654,8 @@ return [
'user_placeholder' => '請輸入用戶名/昵稱/手機/郵箱',
'goods' => '商品資訊',
'goods_placeholder' => '請輸入商品名稱/簡述/SEO資訊',
'price' => '銷售價格(元)',
'original_price' => '原價(元)',
'price' => '銷售價格',
'original_price' => '原價',
'add_time' => '創建時間',
],
],
@ -663,8 +668,8 @@ return [
'user_placeholder' => '請輸入用戶名/昵稱/手機/郵箱',
'goods' => '商品資訊',
'goods_placeholder' => '請輸入商品名稱/簡述/SEO資訊',
'price' => '銷售價格(元)',
'original_price' => '原價(元)',
'price' => '銷售價格',
'original_price' => '原價',
'add_time' => '創建時間',
],
],
@ -677,8 +682,8 @@ return [
'user_placeholder' => '請輸入用戶名/昵稱/手機/郵箱',
'goods' => '商品資訊',
'goods_placeholder' => '請輸入商品名稱/簡述/SEO資訊',
'price' => '銷售價格(元)',
'original_price' => '原價(元)',
'price' => '銷售價格',
'original_price' => '原價',
'add_time' => '創建時間',
],
],
@ -772,19 +777,19 @@ return [
'user_placeholder' => '請輸入用戶名/昵稱/手機/郵箱',
'status' => '訂單狀態',
'pay_status' => '支付狀態',
'total_price' => '總價(元)',
'pay_price' => '支付金額(元)',
'price' => '單價(元)',
'total_price' => '總價',
'pay_price' => '支付金額',
'price' => '單價',
'warehouse_name' => '出貨倉庫',
'order_model' => '訂單模式',
'client_type' => '來源',
'address' => '地址資訊',
'take' => '取貨資訊',
'refund_price' => '退款金額(元)',
'refund_price' => '退款金額',
'returned_quantity' => '退貨數量',
'buy_number_count' => '購買總數',
'increase_price' => '新增金額(元)',
'preferential_price' => '優惠金額(元)',
'increase_price' => '新增金額',
'preferential_price' => '優惠金額',
'payment_name' => '支付方式',
'user_note' => '用戶備註',
'extension' => '擴展資訊',
@ -823,7 +828,7 @@ return [
'status' => '狀態',
'type' => '申請類型',
'reason' => '原因',
'price' => '退款金額(元)',
'price' => '退款金額',
'number' => '退貨數量',
'msg' => '退款說明',
'refundment' => '退款類型',
@ -842,8 +847,14 @@ return [
// 支付方式
'payment' => [
// 基础导航
'base_nav_list' => [
['name' => '已安裝', 'type' => 0],
['name' => '未安裝', 'type' => 1],
],
'base_nav_title' => '支付方式',
'nav_store_payment_name' => '更多主題下載',
'base_upload_payment_name' => '上傳支付',
'base_nav_store_payment_name' => '更多主題下載',
'upload_top_list_tips' => [
[
'name' => '1.類名必須於檔名一致(去除.php如Alipay.php則取Alipay',
@ -892,7 +903,8 @@ return [
['name' => '當前主題', 'type' => 'index'],
['name' => '主題安裝', 'type' => 'upload'],
],
'nav_store_theme_name' => '更多主題下載',
'base_upload_theme_name' => '上傳主題',
'base_nav_store_theme_name' => '更多主題下載',
'list_author_title' => '作者',
'list_version_title' => '適用版本',
'form_theme_upload_tips' => '上傳一個zip壓縮格式的主題安裝包',
@ -945,8 +957,8 @@ return [
'log_no' => '支付單號',
'payment' => '支付方式',
'status' => '狀態',
'total_price' => '業務訂單金額(元)',
'pay_price' => '支付金額(元)',
'total_price' => '業務訂單金額',
'pay_price' => '支付金額',
'business_type' => '業務類型',
'business_list' => '業務id/單號',
'trade_no' => '支付平臺交易號',
@ -1019,11 +1031,12 @@ return [
['name' => '應用管理', 'type' => 'index'],
['name' => '上傳應用', 'type' => 'upload'],
],
'base_upload_application_name' => '上傳應用',
'base_nav_more_plugins_download_name' => '更多挿件下載',
// 基础页面
'base_search_input_placeholder' => '請輸入名稱/描述',
'base_top_tips_one' => '清單排序方式[自定義排序->最早安裝]',
'base_top_tips_two' => '可點擊拖動圖標按鈕調整挿件調用和展示順序',
'base_top_tips_two' => '可點擊拖動調整挿件調用和展示順序',
'base_open_setup_title' => '開啟設定',
'data_list_author_title' => '作者',
'data_list_author_url_title' => '主頁',
@ -1047,7 +1060,7 @@ return [
// 插件分类
'pluginscategory' => [
'base_nav_title' => '挿件分類',
'base_nav_title' => '應用分類',
],
// 安装页面
@ -1169,6 +1182,47 @@ return [
],
],
// 短信日志
'smslog' => [
// 动态表格
'form_table' => [
'platform' => '短信平臺',
'status' => '狀態',
'mobile' => '手機',
'template_value' => '範本內容',
'template_var' => '範本變數',
'sign_name' => '簡訊簽名',
'request_url' => '請求介面',
'request_params' => '請求參數',
'response_data' => '響應數據',
'reason' => '失敗原因',
'tsc' => '耗時(秒)',
'add_time' => '添加時間',
'upd_time' => '更新時間',
],
],
// 邮件日志
'emaillog' => [
// 动态表格
'form_table' => [
'email' => '收件郵箱',
'status' => '狀態',
'title' => '郵件標題',
'template_value' => '郵件內容',
'template_var' => '郵件變數',
'reason' => '失敗原因',
'smtp_host' => 'SMTP服務器',
'smtp_port' => 'SMTP端口',
'smtp_name' => '郵箱用戶名',
'smtp_account' => '發信人郵件',
'smtp_send_name' => '發件人姓名',
'tsc' => '耗時(秒)',
'add_time' => '添加時間',
'upd_time' => '更新時間',
],
],
// sql控制台
'sqlconsole' => [
'top_tips' => 'PS非開發人員請不要隨意執行任何SQL語句操作可能導致將整個系統資料庫被删除。',
@ -1214,7 +1268,7 @@ return [
// 后台权限菜单
'admin_power_menu_list' => [
'config_index' => [
'name' => '系統設置',
'name' => '系統',
'item' => [
'config_index' => '系統配寘',
'config_store' => '商店資訊',
@ -1224,10 +1278,14 @@ return [
'index_inspectupgradeconfirm' => '系統更新確認',
'index_stats' => '首頁統計資料',
'index_income' => '首頁統計資料(收入統計)',
'shortcutmenu_index' => '常用功能',
'shortcutmenu_save' => '常用功能添加/編輯',
'shortcutmenu_sort' => '常用功能排序',
'shortcutmenu_delete' => '常用功能删除',
]
],
'site_index' => [
'name' => '網站配寘',
'name' => '網站',
'item' => [
'site_index' => '網站設定',
'site_save' => '網站設定編輯',
@ -1245,7 +1303,7 @@ return [
]
],
'power_index' => [
'name' => '許可權控制',
'name' => '權限',
'item' => [
'admin_index' => '管理員清單',
'admin_saveinfo' => '管理員添加/編輯頁面',
@ -1260,11 +1318,12 @@ return [
'role_detail' => '角色詳情',
'power_index' => '許可權分配',
'power_save' => '許可權添加/編輯',
'power_statusupdate' => '許可權狀態更新',
'power_delete' => '許可權删除',
]
],
'user_index' => [
'name' => '用戶管理',
'name' => '用戶',
'item' => [
'user_index' => '用戶列表',
'user_saveinfo' => '用戶編輯/添加頁面',
@ -1279,7 +1338,7 @@ return [
]
],
'goods_index' => [
'name' => '商品管理',
'name' => '商品',
'item' => [
'goods_index' => '商品管理',
'goods_saveinfo' => '商品添加/編輯頁面',
@ -1290,6 +1349,7 @@ return [
'goods_detail' => '商品詳情',
'goodscategory_index' => '商品分類',
'goodscategory_save' => '商品分類添加/編輯',
'goodscategory_statusupdate' => '商品分類狀態更新',
'goodscategory_delete' => '商品分類删除',
'goodsparamstemplate_index' => '商品參數',
'goodsparamstemplate_delete' => '商品參數删除',
@ -1322,7 +1382,7 @@ return [
]
],
'order_index' => [
'name' => '訂單管理',
'name' => '訂單',
'item' => [
'order_index' => '訂單管理',
'order_delete' => '訂單删除',
@ -1342,7 +1402,7 @@ return [
]
],
'navigation_index' => [
'name' => '網站管理',
'name' => '網站',
'item' => [
'navigation_index' => '導航管理',
'navigation_save' => '導航添加/編輯',
@ -1376,6 +1436,7 @@ return [
'screeningprice_delete' => '篩選價格删除',
'region_index' => '地區管理',
'region_save' => '地區添加/編輯',
'region_statusupdate' => '地區狀態更新',
'region_delete' => '地區删除',
'region_codedata' => '獲取地區編號數據',
'express_index' => '快遞管理',
@ -1406,7 +1467,7 @@ return [
]
],
'brand_index' => [
'name' => '品牌管理',
'name' => '品牌',
'item' => [
'brand_index' => '品牌管理',
'brand_saveinfo' => '品牌添加/編輯頁面',
@ -1420,7 +1481,7 @@ return [
]
],
'warehouse_index' => [
'name' => '倉庫管理',
'name' => '倉庫',
'item' => [
'warehouse_index' => '倉庫管理',
'warehouse_saveinfo' => '倉庫添加/編輯頁面',
@ -1440,7 +1501,7 @@ return [
]
],
'app_index' => [
'name' => '手機管理',
'name' => '手機',
'item' => [
'appconfig_index' => '基礎配寘',
'appconfig_save' => '基礎配寘保存',
@ -1468,7 +1529,7 @@ return [
]
],
'article_index' => [
'name' => '文章管理',
'name' => '文章',
'item' => [
'article_index' => '文章管理',
'article_saveinfo' => '文章添加/編輯頁面',
@ -1482,7 +1543,7 @@ return [
]
],
'data_index' => [
'name' => '資料管理',
'name' => '資料',
'item' => [
'message_index' => '消息管理',
'message_delete' => '消息删除',
@ -1496,26 +1557,32 @@ return [
'refundlog_detail' => '退款日誌詳情',
'integrallog_index' => '積分日誌',
'integrallog_detail' => '積分日誌詳情',
'smslog_index' => '簡訊日誌',
'smslog_detail' => '簡訊日誌詳情',
]
],
'store_index' => [
'name' => '應用中心',
'name' => '應用',
'item' => [
'pluginsadmin_index' => '應用管理',
'plugins_index' => '應用調用管理',
'pluginsadmin_saveinfo' => '應用添加/編輯頁面',
'pluginsadmin_save' => '應用添加/編輯',
'pluginsadmin_statusupdate' => '應用狀態更新',
'pluginsadmin_delete' => '應用删除',
'pluginsadmin_upload' => '應用上傳',
'pluginsadmin_download' => '應用打包',
'pluginsadmin_install' => '應用安裝',
'pluginsadmin_uninstall' => '應用卸載',
'pluginsadmin_sortsave' => '應用排序保存',
'store_index' => '應用商店',
'packageinstall_index' => '套裝軟體安裝頁面',
'packageinstall_install' => '套裝軟體安裝',
'packageupgrade_upgrade' => '套裝軟體更新',
'pluginsadmin_index' => '應用管理',
'plugins_index' => '應用調用管理',
'pluginsadmin_saveinfo' => '應用添加/編輯頁面',
'pluginsadmin_save' => '應用添加/編輯',
'pluginsadmin_statusupdate' => '應用狀態更新',
'pluginsadmin_delete' => '應用删除',
'pluginsadmin_upload' => '應用上傳',
'pluginsadmin_download' => '應用打包',
'pluginsadmin_install' => '應用安裝',
'pluginsadmin_uninstall' => '應用卸載',
'pluginsadmin_sortsave' => '應用排序保存',
'store_index' => '應用商店',
'packageinstall_index' => '套裝軟體安裝頁面',
'packageinstall_install' => '套裝軟體安裝',
'packageupgrade_upgrade' => '套裝軟體更新',
'pluginscategory_index' => '應用分類',
'pluginscategory_save' => '應用分類添加/編輯',
'pluginscategory_statusupdate' => '應用分類狀態更新',
'pluginscategory_delete' => '應用分類删除',
]
],
'tool_index' => [

View File

@ -27,7 +27,9 @@ return [
'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',
'order_region_tips' => 'Only 10 pieces of data are displayed',
'new_user_name' => 'New Users',
'buy_user_name' => 'Ordering Users',
'upgrade_check_loading_tips' => 'Getting the latest content, please wait...',
'upgrade_version_name' => 'Updated Version',
'upgrade_date_name' => 'Update Date',
@ -55,6 +57,8 @@ return [
'base_item_map_whole_country_province' => 'Province',
'base_item_map_whole_country_city' => 'City',
'base_item_map_whole_country_county' => 'County',
'base_item_new_user_title' => 'New Users',
'base_item_buy_user_title' => 'Ordering Users',
'system_info_title' => 'System Info',
'system_ver_title' => 'Software Version',
'system_os_ver_title' => 'Operating System',
@ -145,7 +149,7 @@ return [
'address_logo_message' => 'Please upload the logo image',
],
// 主导航
'second_nav_list' => [
'base_nav_list' => [
['name' => 'Base Config', 'type' => 'base'],
['name' => 'Site Settings', 'type' => 'siteset'],
['name' => 'Site Type', 'type' => 'sitetype'],
@ -164,7 +168,6 @@ return [
['name' => 'Goods', 'type' => 'goods'],
['name' => 'Search', 'type' => 'search'],
['name' => 'Order', 'type' => 'order'],
['name' => 'Discount', 'type' => 'discount'],
['name' => 'Extensions', 'type' => 'extends'],
],
// 页面基础
@ -176,6 +179,7 @@ return [
'base_item_data_cache_title' => 'Data Cache Config',
'base_item_redis_cache_title' => 'Redis Cache Config',
'base_item_crontab_config_title' => 'Timing Script Config',
'base_item_regex_config_title' => 'Regular configuration',
'base_item_quick_nav_title' => 'Quick Navigation',
'base_item_user_base_title' => 'User Base',
'base_item_user_address_title' => 'User Address',
@ -225,7 +229,7 @@ return [
'left_images_random_tips' => 'The left picture can upload up to 3 pictures, and one of them can be displayed randomly each time',
'background_color_tips' => 'Customizable background image, default background gray',
'site_setup_layout_tips' => 'The drag mode needs to enter the homepage design page by yourself. Please save the selected configuration before',
'site_setup_layout_button_name' => 'Go to design page >>',
'site_setup_layout_button_name' => 'design page',
'site_setup_goods_category_tips' => 'If you need more floor displays, please go to/Product Management ->Product Classification, Primary Classification Settings Home Page Recommendation',
'site_setup_goods_category_no_data_tips'=> 'There is no data for the time being. Please go to/Product Management ->Product Classification, Primary Classification Settings Home Page for recommendation',
'site_setup_order_default_payment_tips' => 'You can set the default payment method corresponding to different platforms. Please install the payment plug-in in [Website Management ->Payment Method] to enable and open it to users',
@ -260,7 +264,7 @@ return [
'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',
'2. Naming rules for background pictures (1~50), such as 1.png',
],
'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.',
'apply_map_baidu_name' => 'Please apply at Baidu Map Open Platform',
@ -491,7 +495,7 @@ return [
],
'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。',
'nav_theme_download_tips' => 'The mobile theme is developed using Uniapp (supporting multiple mini programs, H5, and APP)',
'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]',
'form_theme_upload_tips' => 'Upload a zip compressed installation package',
@ -550,7 +554,8 @@ return [
'base_nav_title' => 'Goods',
'goods_nav_list' => [
'base' => ['name' => 'Basic Info', 'type'=>'base'],
'specifications' => ['name' => 'Goods Spec', 'type'=>'specifications'],
'spec' => ['name' => 'Goods Spec', 'type'=>'spec'],
'spec_images' => ['name' => 'Spec Images', 'type'=>'spec_images'],
'parameters' => ['name' => 'Goods Params', 'type'=>'parameters'],
'photo' => ['name' => 'Goods Photo', 'type'=>'photo'],
'video' => ['name' => 'Goods Video', 'type'=>'video'],
@ -857,8 +862,14 @@ return [
// 支付方式
'payment' => [
// 基础导航
'base_nav_list' => [
['name' => 'was installed', 'type' => 0],
['name' => 'Not Installed', 'type' => 1],
],
'base_nav_title' => 'PaymentMethod',
'nav_store_payment_name' => 'More PaymentMethod downloads',
'base_upload_payment_name' => 'Upload payment',
'base_nav_store_payment_name' => 'More PaymentMethod downloads',
'upload_top_list_tips' => [
[
'name' => '1. The class name must be consistent with the file name (remove. php). If Alipay.php, Alipay is used'
@ -907,7 +918,8 @@ return [
['name' => 'Current Theme', 'type' => 'index'],
['name' => 'Theme Install', 'type' => 'upload'],
],
'nav_store_theme_name' => 'More topic downloads',
'base_upload_theme_name' => 'Upload Theme',
'base_nav_store_theme_name' => 'More topic downloads',
'list_author_title' => 'Author',
'list_version_title' => 'Applicable Version',
'form_theme_upload_tips' => 'Upload a zip compressed theme installation package',
@ -1034,11 +1046,12 @@ return [
['name' => 'Application Management', 'type' => 'index'],
['name' => 'Upload Application', 'type' => 'upload'],
],
'base_upload_application_name' => 'Upload application',
'base_nav_more_plugins_download_name' => 'More plug-in downloads',
// 基础页面
'base_search_input_placeholder' => 'Please enter a name/description',
'base_top_tips_one' => 'List sorting method [custom sorting ->earliest installation]',
'base_top_tips_two' => 'Click and drag icon button to adjust plug-in call and display order',
'base_top_tips_two' => 'Click and drag to adjust the order of plugin calls and displays',
'base_open_setup_title' => 'Enable Setup',
'data_list_author_title' => 'Author',
'data_list_author_url_title' => 'HomePage',
@ -1062,7 +1075,7 @@ return [
// 插件分类
'pluginscategory' => [
'base_nav_title' => 'PluginsCategory',
'base_nav_title' => 'Application Category',
],
// 安装页面
@ -1184,6 +1197,47 @@ return [
],
],
// 短信日志
'smslog' => [
// 动态表格
'form_table' => [
'platform' => 'SMS platform',
'status' => 'Status',
'mobile' => 'Phone',
'template_value' => 'Template content',
'template_var' => 'Template variable',
'sign_name' => 'SMS Signature',
'request_url' => 'Request interface',
'request_params' => 'Request parameters',
'response_data' => 'Response data',
'reason' => 'Reason for failure',
'tsc' => 'Time taken (seconds)',
'add_time' => 'Add time',
'upd_time' => 'Update time',
],
],
// 邮件日志
'emaillog' => [
// 动态表格
'form_table' => [
'email' => 'Recipient email',
'status' => 'Status',
'title' => 'Email title',
'template_value' => 'Email content',
'template_var' => 'Email var',
'reason' => 'Reason for failure',
'smtp_host' => 'Smtp server',
'smtp_port' => 'Smtp port',
'smtp_name' => 'Email username',
'smtp_account' => 'Senders email',
'smtp_send_name' => 'Senders name',
'tsc' => 'Time taken (seconds)',
'add_time' => 'Add time',
'upd_time' => 'Update time',
],
],
// sql控制台
'sqlconsole' => [
'top_tips' => 'PS: Non-developers should not execute any SQL statements at will, which may cause the entire system database to be deleted.',
@ -1229,7 +1283,7 @@ return [
// 后台权限菜单
'admin_power_menu_list' => [
'config_index' => [
'name' => 'System Setup',
'name' => 'System',
'item' => [
'config_index' => 'System config',
'config_store' => 'Store info',
@ -1239,10 +1293,14 @@ return [
'index_inspectupgradeconfirm' => 'System update confirmation',
'index_stats' => 'Home page statistics',
'index_income' => 'Home page Statistics (income statistics]',
'shortcutmenu_index' => 'Common functions',
'shortcutmenu_save' => 'Adding/Editing Common Functions',
'shortcutmenu_sort' => 'Common Function Sorting',
'shortcutmenu_delete' => 'Common function deletion',
]
],
'site_index' => [
'name' => 'Site Config',
'name' => 'Site',
'item' => [
'site_index' => 'Site setup',
'site_save' => 'Site setup editing',
@ -1260,7 +1318,7 @@ return [
]
],
'power_index' => [
'name' => 'Power Control',
'name' => 'Power',
'item' => [
'admin_index' => 'Admin list',
'admin_saveinfo' => 'Admin add/edit page',
@ -1275,11 +1333,12 @@ return [
'role_detail' => 'Role details',
'power_index' => 'Power divide',
'power_save' => 'Power add/edit',
'power_statusupdate' => 'Power status update',
'power_delete' => 'Power delete',
]
],
'user_index' => [
'name' => 'User Admin',
'name' => 'User',
'item' => [
'user_index' => 'User list',
'user_saveinfo' => 'User edit / add page',
@ -1294,7 +1353,7 @@ return [
]
],
'goods_index' => [
'name' => 'Goods Admin',
'name' => 'Goods',
'item' => [
'goods_index' => 'Goods admin',
'goods_saveinfo' => 'Goods add/edit page',
@ -1305,6 +1364,7 @@ return [
'goods_detail' => 'Goods details',
'goodscategory_index' => 'Goods category',
'goodscategory_save' => 'Goods category add/edit',
'goodscategory_statusupdate' => 'Goods category status update',
'goodscategory_delete' => 'Goods category delete',
'goodsparamstemplate_index' => 'Goods params',
'goodsparamstemplate_delete' => 'Delete goods params',
@ -1337,7 +1397,7 @@ return [
]
],
'order_index' => [
'name' => 'Order Admin',
'name' => 'Order',
'item' => [
'order_index' => 'Order admin',
'order_delete' => 'Order delete',
@ -1357,7 +1417,7 @@ return [
]
],
'navigation_index' => [
'name' => 'Website Admin',
'name' => 'Web',
'item' => [
'navigation_index' => 'Navigation admin',
'navigation_save' => 'Navigation add/edit',
@ -1391,6 +1451,7 @@ return [
'screeningprice_delete' => 'Filter price delete',
'region_index' => 'Regional admin',
'region_save' => 'Region add/edit',
'region_statusupdate' => 'Regional status update',
'region_delete' => 'Region delete',
'region_codedata' => 'Get area number data',
'express_index' => 'Express Management',
@ -1421,7 +1482,7 @@ return [
]
],
'brand_index' => [
'name' => 'Brand Admin',
'name' => 'Brand',
'item' => [
'brand_index' => 'Brand admin',
'brand_saveinfo' => 'Brand add/edit page',
@ -1435,7 +1496,7 @@ return [
]
],
'warehouse_index' => [
'name' => 'Warehouse Admin',
'name' => 'Stock',
'item' => [
'warehouse_index' => 'Warehouse admin',
'warehouse_saveinfo' => 'Warehouse add/edit page',
@ -1455,7 +1516,7 @@ return [
]
],
'app_index' => [
'name' => 'Mobile Admin',
'name' => 'Mobile',
'item' => [
'appconfig_index' => 'Basic config',
'appconfig_save' => 'Basic config saving',
@ -1483,7 +1544,7 @@ return [
]
],
'article_index' => [
'name' => 'Article Admin',
'name' => 'Article',
'item' => [
'article_index' => 'Article admin',
'article_saveinfo' => 'Article add/edit page',
@ -1497,7 +1558,7 @@ return [
]
],
'data_index' => [
'name' => 'Data Admin',
'name' => 'Data',
'item' => [
'message_index' => 'Message log',
'message_delete' => 'Message delete',
@ -1511,26 +1572,32 @@ return [
'refundlog_detail' => 'Refund log details',
'integrallog_index' => 'Integral log',
'integrallog_detail' => 'Points log details',
'smslog_index' => 'SMS log',
'smslog_detail' => 'SMS log details',
]
],
'store_index' => [
'name' => 'Application Center',
'name' => 'Store',
'item' => [
'pluginsadmin_index' => 'Application admin',
'plugins_index' => 'Application call admin',
'pluginsadmin_saveinfo' => 'Application add/edit page',
'pluginsadmin_save' => 'Apply add/edit',
'pluginsadmin_statusupdate' => 'Application status update',
'pluginsadmin_delete' => 'Apply delete',
'pluginsadmin_upload' => 'Application upload',
'pluginsadmin_download' => 'Application packaging',
'pluginsadmin_install' => 'Application installation',
'pluginsadmin_uninstall' => 'Apps Uninstall',
'pluginsadmin_sortsave' => 'Apply sort save',
'store_index' => 'App store',
'packageinstall_index' => 'Package installation page',
'packageinstall_install' => 'Package installation',
'packageupgrade_upgrade' => 'Package update',
'pluginsadmin_index' => 'Application admin',
'plugins_index' => 'Application call admin',
'pluginsadmin_saveinfo' => 'Application add/edit page',
'pluginsadmin_save' => 'Apply add/edit',
'pluginsadmin_statusupdate' => 'Application status update',
'pluginsadmin_delete' => 'Apply delete',
'pluginsadmin_upload' => 'Application upload',
'pluginsadmin_download' => 'Application packaging',
'pluginsadmin_install' => 'Application installation',
'pluginsadmin_uninstall' => 'Apps Uninstall',
'pluginsadmin_sortsave' => 'Apply sort save',
'store_index' => 'App store',
'packageinstall_index' => 'Package installation page',
'packageinstall_install' => 'Package installation',
'packageupgrade_upgrade' => 'Package update',
'pluginscategory_index' => 'Application category',
'pluginscategory_save' => 'Add/edit application category',
'pluginscategory_statusupdate' => 'Application category status update',
'pluginscategory_delete' => 'Application category deletion',
]
],
'tool_index' => [

View File

@ -27,7 +27,9 @@ return [
'goods_hot_tips' => 'Solo se muestran los primeros 30 productos',
'payment_name' => 'Método de pago',
'order_region_name' => 'Distribución geográfica de los pedidos',
'order_region_tips' => 'Solo se muestran 30 datos',
'order_region_tips' => 'Solo se muestran 10 datos',
'new_user_name' => 'Nuevos usuarios',
'buy_user_name' => 'Usuarios que hacen pedidos',
'upgrade_check_loading_tips' => 'Obteniendo el último contenido, por favor Espere...',
'upgrade_version_name' => 'Versión actualizada:',
'upgrade_date_name' => 'Fecha de actualización:',
@ -55,6 +57,8 @@ return [
'base_item_map_whole_country_province' => 'Provincias',
'base_item_map_whole_country_city' => 'Ciudad',
'base_item_map_whole_country_county' => 'Distrito / Condado',
'base_item_new_user_title' => 'Nuevos usuarios',
'base_item_buy_user_title' => 'Usuarios que hacen pedidos',
'system_info_title' => 'Información del sistema',
'system_ver_title' => 'Versión de software',
'system_os_ver_title' => 'Sistema operativo',
@ -145,7 +149,7 @@ return [
'address_logo_message' => 'Por favor, suba la imagen del logotipo',
],
// 主导航
'second_nav_list' => [
'base_nav_list' => [
['name' => 'Configuración básica', 'type' => 'base'],
['name' => 'Configuración del sitio web', 'type' => 'siteset'],
['name' => 'Tipo de sitio', 'type' => 'sitetype'],
@ -164,7 +168,6 @@ return [
['name' => 'Productos Básicos', 'type' => 'goods'],
['name' => 'Buscar', 'type' => 'search'],
['name' => 'Pedidos', 'type' => 'order'],
['name' => 'Concesiones', 'type' => 'discount'],
['name' => 'Expansión', 'type' => 'extends'],
],
// 页面基础
@ -176,6 +179,7 @@ return [
'base_item_data_cache_title' => 'Configuración de la caché de datos',
'base_item_redis_cache_title' => 'Configuración de la caché redis',
'base_item_crontab_config_title' => 'Configuración del guión de tiempo',
'base_item_regex_config_title' => 'Configuración regular',
'base_item_quick_nav_title' => 'Navegación rápida',
'base_item_user_base_title' => 'Base de usuarios',
'base_item_user_address_title' => 'Dirección del usuario',
@ -225,7 +229,7 @@ return [
'left_images_random_tips' => 'La imagen izquierda puede cargar hasta 3 imágenes y mostrar una de ellas al azar cada vez.',
'background_color_tips' => 'Se puede personalizar la imagen de fondo, el gris de fondo predeterminado',
'site_setup_layout_tips' => 'El modo de arrastre necesita ingresar a la página de diseño de la página de inicio por sí mismo. por favor, guarde la configuración seleccionada antes de hacerlo.',
'site_setup_layout_button_name' => 'Ir a la página de diseño > "',
'site_setup_layout_button_name' => 'Ir a la página de diseño',
'site_setup_goods_category_tips' => 'Para más exhibición de pisos, por favor vaya primero / gestión de productos básicos - > clasificación de productos básicos, configuración de clasificación de primer nivel, recomendación de la página de inicio',
'site_setup_goods_category_no_data_tips'=> 'No hay datos por el momento, por favor vaya primero / gestión de productos básicos - > clasificación de productos básicos, configuración de clasificación de primer nivel recomendación de la página de inicio',
'site_setup_order_default_payment_tips' => 'Se puede configurar el método de pago predeterminado correspondiente a diferentes plataformas, primero instale el plug - in de pago en [gestión del sitio web - > método de pago] para habilitarlo y abrirlo a los usuarios.',
@ -260,7 +264,7 @@ return [
'admin_login_title' => 'Iniciar sesión en segundo plano',
'admin_login_info_bg_images_list_tips' => [
'1. la imagen de fondo se encuentra en el catálogo [público / estático / admin / default / images / login]',
'2. reglas de nomenclatura de imágenes de fondo (1 a 50), como 1.jpg',
'2. reglas de nomenclatura de imágenes de fondo (1 a 50), como 1.png',
],
'map_type_tips' => 'Debido a que los estándares de mapa de cada familia son diferentes, no cambie el mapa a voluntad, lo que dará lugar a coordenadas inexactas del mapa.',
'apply_map_baidu_name' => 'Por favor, solicite en la plataforma abierta de mapas de baidu.',
@ -490,7 +494,7 @@ return [
],
'nav_store_theme_name' => 'Descarga de más temas',
'nav_theme_download_name' => 'Ver el tutorial de embalaje de applets',
'nav_theme_download_tips' => 'El tema del teléfono móvil se desarrolla con una aplicación uniapp (admite applets multiterminales + h5), y la aplicación también se está adaptando de emergencia.',
'nav_theme_download_tips' => 'El tema del teléfono móvil se desarrolla con una aplicación uniapp (admite applets multiterminales, h5, app)',
'form_alipay_extend_title' => 'Configuración del servicio al cliente',
'form_alipay_extend_tips' => 'Ps: si se abre en [app / applet] (se abre el servicio al cliente en línea), se deben rellenar las siguientes configuraciones [código corporativo] y [código de ventana de chat]',
'form_theme_upload_tips' => 'Cargar un paquete de instalación en formato zip comprimido',
@ -549,7 +553,8 @@ return [
'base_nav_title' => 'Productos Básicos',
'goods_nav_list' => [
'base' => ['name' => 'Información básica', 'type'=>'base'],
'specifications' => ['name' => 'Especificaciones del producto', 'type'=>'specifications'],
'spec' => ['name' => 'Especificaciones del producto', 'type'=>'spec'],
'spec_images' => ['name' => 'Imagen de las especificaciones', 'type'=>'spec_images'],
'parameters' => ['name' => 'Parámetros de los productos básicos', 'type'=>'parameters'],
'photo' => ['name' => 'Álbum de fotos de productos', 'type'=>'photo'],
'video' => ['name' => 'Video de productos básicos', 'type'=>'video'],
@ -842,8 +847,14 @@ return [
// 支付方式
'payment' => [
// 基础导航
'base_nav_list' => [
['name' => 'Instalado', 'type' => 0],
['name' => 'No instalado', 'type' => 1],
],
'base_nav_title' => 'Método de pago',
'nav_store_payment_name' => 'Descarga de más métodos de pago',
'base_upload_payment_name' => 'Cargar pago',
'base_nav_store_payment_name' => 'Descarga de más métodos de pago',
'upload_top_list_tips' => [
[
'name' => '1. el nombre de la clase debe ser consistente con el nombre del archivo (eliminar. php), como alipay.php, Alipay',
@ -892,7 +903,8 @@ return [
['name' => 'Temas actuales', 'type' => 'index'],
['name' => 'Instalación temática', 'type' => 'upload'],
],
'nav_store_theme_name' => 'Descarga de más temas',
'base_upload_theme_name' => 'Subir Tema',
'base_nav_store_theme_name' => 'Descarga de más temas',
'list_author_title' => 'Autor',
'list_version_title' => 'Versión aplicable',
'form_theme_upload_tips' => 'Cargar un paquete de instalación de temas en formato zip comprimido',
@ -1019,11 +1031,12 @@ return [
['name' => 'Gestión de aplicaciones', 'type' => 'index'],
['name' => 'Cargar aplicación', 'type' => 'upload'],
],
'base_upload_application_name' => 'Cargar aplicación',
'base_nav_more_plugins_download_name' => 'Descarga de más plug - ins',
// 基础页面
'base_search_input_placeholder' => 'Introduzca el nombre / descripción',
'base_top_tips_one' => 'Método de clasificación de lista [clasificación personalizada - > instalación más temprana]',
'base_top_tips_two' => 'Se puede hacer clic en el botón arrastrar icono para ajustar el orden de llamada y visualización del plug - IN.',
'base_top_tips_two' => 'Se puede hacer clic y arrastrar para ajustar el orden de llamada y exhibición del plug - IN.',
'base_open_setup_title' => 'Activar configuración',
'data_list_author_title' => 'Autor',
'data_list_author_url_title' => 'Página principal',
@ -1047,7 +1060,7 @@ return [
// 插件分类
'pluginscategory' => [
'base_nav_title' => 'Clasificación plugins',
'base_nav_title' => 'Clasificación de aplicaciones',
],
// 安装页面
@ -1169,6 +1182,47 @@ return [
],
],
// 短信日志
'smslog' => [
// 动态表格
'form_table' => [
'platform' => 'sms platform',
'status' => 'Estado',
'mobile' => 'mobile',
'template_value' => 'contenido de la plantilla',
'template_var' => 'variables de plantilla',
'sign_name' => 'firma de sms',
'request_url' => 'Interfaz de solicitud',
'request_params' => 'parámetros de solicitud',
'response_data' => 'datos de respuesta',
'reason' => 'causa del fracaso',
'tsc' => 'tiempo(segundos)',
'add_time' => 'añadir tiempo',
'upd_time' => 'tiempo de actualización',
],
],
// 邮件日志
'emaillog' => [
// 动态表格
'form_table' => [
'email' => 'Buzón de recepción',
'status' => 'Estado',
'title' => 'Título del correo',
'template_value' => 'Contenido del correo',
'template_var' => 'Variables de correo',
'reason' => 'causa del fracaso',
'smtp_host' => 'Servidor SMTP',
'smtp_port' => 'Puerto SMTP',
'smtp_name' => 'Nombre de usuario del buzón',
'smtp_account' => 'Correo del remitente',
'smtp_send_name' => 'Nombre del remitente',
'tsc' => 'tiempo(segundos)',
'add_time' => 'añadir tiempo',
'upd_time' => 'tiempo de actualización',
],
],
// sql控制台
'sqlconsole' => [
'top_tips' => 'Ps: los no desarrolladores no deben ejecutar ninguna instrucción SQL a voluntad, la operación puede causar la eliminación de toda la base de datos del sistema.',
@ -1224,6 +1278,10 @@ return [
'index_inspectupgradeconfirm' => 'Confirmación de la actualización del sistema',
'index_stats' => 'Estadísticas de la página de inicio',
'index_income' => 'Estadísticas de la página de inicio (estadísticas de ingresos)',
'shortcutmenu_index' => 'Funciones comunes',
'shortcutmenu_save' => 'Añadir / editar funciones comunes',
'shortcutmenu_sort' => 'Clasificación de funciones comunes',
'shortcutmenu_delete' => 'Eliminación de funciones comunes',
]
],
'site_index' => [
@ -1260,6 +1318,7 @@ return [
'role_detail' => 'Detalles del personaje',
'power_index' => 'Asignación de permisos',
'power_save' => 'Permisos para agregar / editar',
'power_statusupdate' => 'Actualización del Estado de permisos',
'power_delete' => 'Eliminación de permisos',
]
],
@ -1290,6 +1349,7 @@ return [
'goods_detail' => 'Detalles del producto',
'goodscategory_index' => 'Clasificación de mercancías',
'goodscategory_save' => 'Añadir / editar clasificación de productos',
'goodscategory_statusupdate' => 'Actualización del Estado de clasificación de mercancías',
'goodscategory_delete' => 'Eliminación de la clasificación de mercancías',
'goodsparamstemplate_index' => 'Parámetros de los productos básicos',
'goodsparamstemplate_delete' => 'Eliminación de parámetros de productos básicos',
@ -1376,6 +1436,7 @@ return [
'screeningprice_delete' => 'Eliminar el precio del filtro',
'region_index' => 'Gestión regional',
'region_save' => 'Área añadir / editar',
'region_statusupdate' => 'Actualización del Estado regional',
'region_delete' => 'Área eliminada',
'region_codedata' => 'Obtención de datos de numeración regional',
'express_index' => 'Gestión de mensajería',
@ -1496,26 +1557,32 @@ return [
'refundlog_detail' => 'Detalles del registro de reembolso',
'integrallog_index' => 'Registro de puntos',
'integrallog_detail' => 'Detalles del registro de puntos',
'smslog_index' => 'Registro de mensajes cortos',
'smslog_detail' => 'Detalles del registro de mensajes cortos',
]
],
'store_index' => [
'name' => 'Centro de aplicaciones',
'item' => [
'pluginsadmin_index' => 'Gestión de aplicaciones',
'plugins_index' => 'Gestión de llamadas de aplicaciones',
'pluginsadmin_saveinfo' => 'Aplicación añadir / editar Página',
'pluginsadmin_save' => 'Añadir / editar aplicación',
'pluginsadmin_statusupdate' => 'Actualización del Estado de aplicación',
'pluginsadmin_delete' => 'Eliminar aplicación',
'pluginsadmin_upload' => 'Carga de la aplicación',
'pluginsadmin_download' => 'Paquete de aplicaciones',
'pluginsadmin_install' => 'Instalación de aplicaciones',
'pluginsadmin_uninstall' => 'Desinstalación de aplicaciones',
'pluginsadmin_sortsave' => 'Ordenar y guardar aplicaciones',
'store_index' => 'Tienda de aplicaciones',
'packageinstall_index' => 'Página de instalación de paquetes de software',
'packageinstall_install' => 'Instalación de paquetes de software',
'packageupgrade_upgrade' => 'Actualización de paquetes de software',
'pluginsadmin_index' => 'Gestión de aplicaciones',
'plugins_index' => 'Gestión de llamadas de aplicaciones',
'pluginsadmin_saveinfo' => 'Aplicación añadir / editar Página',
'pluginsadmin_save' => 'Añadir / editar aplicación',
'pluginsadmin_statusupdate' => 'Actualización del Estado de aplicación',
'pluginsadmin_delete' => 'Eliminar aplicación',
'pluginsadmin_upload' => 'Carga de la aplicación',
'pluginsadmin_download' => 'Paquete de aplicaciones',
'pluginsadmin_install' => 'Instalación de aplicaciones',
'pluginsadmin_uninstall' => 'Desinstalación de aplicaciones',
'pluginsadmin_sortsave' => 'Ordenar y guardar aplicaciones',
'store_index' => 'Tienda de aplicaciones',
'packageinstall_index' => 'Página de instalación de paquetes de software',
'packageinstall_install' => 'Instalación de paquetes de software',
'packageupgrade_upgrade' => 'Actualización de paquetes de software',
'pluginscategory_index' => 'Clasificación de aplicaciones',
'pluginscategory_save' => 'Añadir / editar clasificación de aplicaciones',
'pluginscategory_statusupdate' => 'Actualización del Estado de clasificación de la aplicación',
'pluginscategory_delete' => 'Eliminar la clasificación de la aplicación',
]
],
'tool_index' => [

View File

@ -21,13 +21,15 @@ return [
'index' => [
// 页面公共
'page_common' => [
'order_transaction_amount_name' => '订单成交金额走势',
'order_trading_trend_name' => '订单交易走势',
'order_transaction_amount_name' => '订单成交金额',
'order_trading_trend_name' => '订单交易',
'goods_hot_name' => '热销商品',
'goods_hot_tips' => '仅显示前30条商品',
'payment_name' => '支付方式',
'order_region_name' => '订单地域分布',
'order_region_tips' => '仅显示30条数据',
'order_region_tips' => '仅显示10条数据',
'new_user_name' => '新增用户',
'buy_user_name' => '下单用户',
'upgrade_check_loading_tips' => '正在获取最新内容、请稍候...',
'upgrade_version_name' => '更新版本:',
'upgrade_date_name' => '更新日期:',
@ -44,8 +46,8 @@ return [
'base_item_same_month_title' => '当月',
'base_item_yesterday_title' => '昨日',
'base_item_today_title' => '今日',
'base_item_order_profit_title' => '订单成交金额走势',
'base_item_order_trading_title' => '订单交易走势',
'base_item_order_profit_title' => '订单成交金额',
'base_item_order_trading_title' => '订单交易',
'base_item_order_tips' => '所有订单',
'base_item_hot_sales_goods_title' => '热销商品',
'base_item_hot_sales_goods_tips' => '不含取消关闭的订单',
@ -55,6 +57,8 @@ return [
'base_item_map_whole_country_province' => '省',
'base_item_map_whole_country_city' => '市',
'base_item_map_whole_country_county' => '区/县',
'base_item_new_user_title' => '新增用户',
'base_item_buy_user_title' => '下单用户',
'system_info_title' => '系统信息',
'system_ver_title' => '软件版本',
'system_os_ver_title' => '操作系统',
@ -145,7 +149,7 @@ return [
'address_logo_message' => '请上传logo图片',
],
// 主导航
'second_nav_list' => [
'base_nav_list' => [
['name' => '基础配置', 'type' => 'base'],
['name' => '网站设置', 'type' => 'siteset'],
['name' => '站点类型', 'type' => 'sitetype'],
@ -164,7 +168,6 @@ return [
['name' => '商品', 'type' => 'goods'],
['name' => '搜索', 'type' => 'search'],
['name' => '订单', 'type' => 'order'],
['name' => '优惠', 'type' => 'discount'],
['name' => '扩展', 'type' => 'extends'],
],
// 页面基础
@ -176,6 +179,7 @@ return [
'base_item_data_cache_title' => '数据缓存配置',
'base_item_redis_cache_title' => 'redis缓存配置',
'base_item_crontab_config_title' => '定时脚本配置',
'base_item_regex_config_title' => '正则配置',
'base_item_quick_nav_title' => '快捷导航',
'base_item_user_base_title' => '用户基础',
'base_item_user_address_title' => '用户地址',
@ -225,7 +229,7 @@ return [
'left_images_random_tips' => '左侧图片最多可上传3张图片、每次随机展示其中一张',
'background_color_tips' => '可自定义背景图片、默认底灰色',
'site_setup_layout_tips' => '拖拽模式需要自行进入首页设计页面、请先保存选中配置后再',
'site_setup_layout_button_name' => '设计页面 >>',
'site_setup_layout_button_name' => '设计页面',
'site_setup_goods_category_tips' => '如需更多楼层展示,请先到 / 商品管理->商品分类、一级分类设置首页推荐',
'site_setup_goods_category_no_data_tips'=> '暂无数据,请先到 / 商品管理->商品分类、一级分类设置首页推荐',
'site_setup_order_default_payment_tips' => '可以设置不同平台对应的默认支付方式、请先在[ 网站管理 -> 支付方式 ]中安装好支付插件启用并对用户开放',
@ -260,7 +264,7 @@ return [
'admin_login_title' => '后台登录',
'admin_login_info_bg_images_list_tips' => [
'1. 背景图片位于[ public/static/admin/default/images/login ]目录下',
'2. 背景图片命名规则(1~50)、如 1.jpg',
'2. 背景图片命名规则(1~50)、如 1.png',
],
'map_type_tips' => '由于每一家的地图标准不一样、请勿随意切换地图、会导致地图坐标标注不准确的情况。',
'apply_map_baidu_name' => '请到百度地图开放平台申请',
@ -427,6 +431,7 @@ return [
'login_type_mobile_title' => '手机验证码',
'login_type_email_title' => '邮箱验证码',
'login_close_tips' => '暂时关闭了登录',
'login_welcome_title' => '欢迎登录',
// 忘记密码
'form_forget_password_name' => '忘记密码?',
'form_forget_password_tips' => '请联系管理员重置密码',
@ -490,7 +495,7 @@ return [
],
'nav_store_theme_name' => '更多主题下载',
'nav_theme_download_name' => '查看小程序打包教程',
'nav_theme_download_tips' => '手机端主题采用uniapp开发支持多端小程序+H5APP也在紧急适配中。',
'nav_theme_download_tips' => '手机端主题采用uniapp开发支持多端小程序、H5、APP',
'form_alipay_extend_title' => '客服配置',
'form_alipay_extend_tips' => 'PS如【APP/小程序】中开启(开启在线客服),则以下配置必填 [企业编码] 和 [聊天窗编码]',
'form_theme_upload_tips' => '上传一个zip压缩格式的安装包',
@ -549,7 +554,8 @@ return [
'base_nav_title' => '商品',
'goods_nav_list' => [
'base' => ['name' => '基础信息', 'type'=>'base'],
'specifications' => ['name' => '商品规格', 'type'=>'specifications'],
'spec' => ['name' => '商品规格', 'type'=>'spec'],
'spec_images' => ['name' => '规格图片', 'type'=>'spec_images'],
'parameters' => ['name' => '商品参数', 'type'=>'parameters'],
'photo' => ['name' => '商品相册', 'type'=>'photo'],
'video' => ['name' => '商品视频', 'type'=>'video'],
@ -568,8 +574,8 @@ return [
'info_placeholder' => '请输入商品名称/简述/编码/条码/SEO信息',
'category_text' => '商品分类',
'brand_name' => '品牌',
'price' => '销售价格(元)',
'original_price' => '原价(元)',
'price' => '销售价格',
'original_price' => '原价',
'inventory' => '库存总量',
'is_shelves' => '上下架',
'is_deduction_inventory' => '扣减库存',
@ -649,8 +655,8 @@ return [
'user_placeholder' => '请输入用户名/昵称/手机/邮箱',
'goods' => '商品信息',
'goods_placeholder' => '请输入商品名称/简述/SEO信息',
'price' => '销售价格(元)',
'original_price' => '原价(元)',
'price' => '销售价格',
'original_price' => '原价',
'add_time' => '创建时间',
],
],
@ -663,8 +669,8 @@ return [
'user_placeholder' => '请输入用户名/昵称/手机/邮箱',
'goods' => '商品信息',
'goods_placeholder' => '请输入商品名称/简述/SEO信息',
'price' => '销售价格(元)',
'original_price' => '原价(元)',
'price' => '销售价格',
'original_price' => '原价',
'add_time' => '创建时间',
],
],
@ -677,8 +683,8 @@ return [
'user_placeholder' => '请输入用户名/昵称/手机/邮箱',
'goods' => '商品信息',
'goods_placeholder' => '请输入商品名称/简述/SEO信息',
'price' => '销售价格(元)',
'original_price' => '原价(元)',
'price' => '销售价格',
'original_price' => '原价',
'add_time' => '创建时间',
],
],
@ -772,19 +778,19 @@ return [
'user_placeholder' => '请输入用户名/昵称/手机/邮箱',
'status' => '订单状态',
'pay_status' => '支付状态',
'total_price' => '总价(元)',
'pay_price' => '支付金额(元)',
'price' => '单价(元)',
'total_price' => '总价',
'pay_price' => '支付金额',
'price' => '单价',
'warehouse_name' => '出货仓库',
'order_model' => '订单模式',
'client_type' => '来源',
'address' => '地址信息',
'take' => '取货信息',
'refund_price' => '退款金额(元)',
'refund_price' => '退款金额',
'returned_quantity' => '退货数量',
'buy_number_count' => '购买总数',
'increase_price' => '增加金额(元)',
'preferential_price' => '优惠金额(元)',
'increase_price' => '增加金额',
'preferential_price' => '优惠金额',
'payment_name' => '支付方式',
'user_note' => '用户备注',
'extension' => '扩展信息',
@ -823,7 +829,7 @@ return [
'status' => '状态',
'type' => '申请类型',
'reason' => '原因',
'price' => '退款金额(元)',
'price' => '退款金额',
'number' => '退货数量',
'msg' => '退款说明',
'refundment' => '退款类型',
@ -842,8 +848,14 @@ return [
// 支付方式
'payment' => [
// 基础导航
'base_nav_list' => [
['name' => '已安装', 'type' => 0],
['name' => '未安装', 'type' => 1],
],
'base_nav_title' => '支付方式',
'nav_store_payment_name' => '更多支付方式下载',
'base_upload_payment_name' => '上传支付',
'base_nav_store_payment_name' => '更多支付方式下载',
'upload_top_list_tips' => [
[
'name' => '1. 类名必须于文件名一致(去除 .php ),如 Alipay.php 则取 Alipay',
@ -892,7 +904,8 @@ return [
['name' => '当前主题', 'type' => 'index'],
['name' => '主题安装', 'type' => 'upload'],
],
'nav_store_theme_name' => '更多主题下载',
'base_upload_theme_name' => '上传主题',
'base_nav_store_theme_name' => '更多主题下载',
'list_author_title' => '作者',
'list_version_title' => '适用版本',
'form_theme_upload_tips' => '上传一个zip压缩格式的主题安装包',
@ -945,8 +958,8 @@ return [
'log_no' => '支付单号',
'payment' => '支付方式',
'status' => '状态',
'total_price' => '业务订单金额(元)',
'pay_price' => '支付金额(元)',
'total_price' => '业务订单金额',
'pay_price' => '支付金额',
'business_type' => '业务类型',
'business_list' => '业务id/单号',
'trade_no' => '支付平台交易号',
@ -1019,11 +1032,12 @@ return [
['name' => '应用管理', 'type' => 'index'],
['name' => '上传应用', 'type' => 'upload'],
],
'base_upload_application_name' => '上传应用',
'base_nav_more_plugins_download_name' => '更多插件下载',
// 基础页面
'base_search_input_placeholder' => '请输入名称/描述',
'base_top_tips_one' => '列表排序方式[ 自定义排序 -> 最早安装 ]',
'base_top_tips_two' => '可点击拖动图标按钮调整插件调用和展示顺序',
'base_top_tips_two' => '可点击拖动调整插件调用和展示顺序',
'base_open_setup_title' => '开启设置',
'data_list_author_title' => '作者',
'data_list_author_url_title' => '主页',
@ -1047,7 +1061,7 @@ return [
// 插件分类
'pluginscategory' => [
'base_nav_title' => '插件分类',
'base_nav_title' => '应用分类',
],
// 安装页面
@ -1169,6 +1183,47 @@ return [
],
],
// 短信日志
'smslog' => [
// 动态表格
'form_table' => [
'platform' => '短信平台',
'status' => '状态',
'mobile' => '手机',
'template_value' => '模板内容',
'template_var' => '模板变量',
'sign_name' => '短信签名',
'request_url' => '请求接口',
'request_params' => '请求参数',
'response_data' => '响应数据',
'reason' => '失败原因',
'tsc' => '耗时(秒)',
'add_time' => '添加时间',
'upd_time' => '更新时间',
],
],
// 邮件日志
'emaillog' => [
// 动态表格
'form_table' => [
'email' => '收件邮箱',
'status' => '状态',
'title' => '邮件标题',
'template_value' => '邮件内容',
'template_var' => '邮件变量',
'reason' => '失败原因',
'smtp_host' => 'SMTP服务器',
'smtp_port' => 'SMTP端口',
'smtp_name' => '邮箱用户名',
'smtp_account' => '发信人邮件',
'smtp_send_name' => '发件人姓名',
'tsc' => '耗时(秒)',
'add_time' => '添加时间',
'upd_time' => '更新时间',
],
],
// sql控制台
'sqlconsole' => [
'top_tips' => 'PS非开发人员请不要随意执行任何SQL语句操作可能导致将整个系统数据库被删除。',
@ -1214,7 +1269,7 @@ return [
// 后台权限菜单
'admin_power_menu_list' => [
'config_index' => [
'name' => '系统设置',
'name' => '系统',
'item' => [
'config_index' => '系统配置',
'config_store' => '商店信息',
@ -1224,10 +1279,14 @@ return [
'index_inspectupgradeconfirm' => '系统更新确认',
'index_stats' => '首页统计数据',
'index_income' => '首页统计数据(收入统计)',
'shortcutmenu_index' => '常用功能',
'shortcutmenu_save' => '常用功能添加/编辑',
'shortcutmenu_sort' => '常用功能排序',
'shortcutmenu_delete' => '常用功能删除',
]
],
'site_index' => [
'name' => '站点配置',
'name' => '站点',
'item' => [
'site_index' => '站点设置',
'site_save' => '站点设置编辑',
@ -1245,7 +1304,7 @@ return [
]
],
'power_index' => [
'name' => '权限控制',
'name' => '权限',
'item' => [
'admin_index' => '管理员列表',
'admin_saveinfo' => '管理员添加/编辑页面',
@ -1260,11 +1319,12 @@ return [
'role_detail' => '角色详情',
'power_index' => '权限分配',
'power_save' => '权限添加/编辑',
'power_statusupdate' => '权限状态更新',
'power_delete' => '权限删除',
]
],
'user_index' => [
'name' => '用户管理',
'name' => '用户',
'item' => [
'user_index' => '用户列表',
'user_saveinfo' => '用户编辑/添加页面',
@ -1279,7 +1339,7 @@ return [
]
],
'goods_index' => [
'name' => '商品管理',
'name' => '商品',
'item' => [
'goods_index' => '商品管理',
'goods_saveinfo' => '商品添加/编辑页面',
@ -1290,6 +1350,7 @@ return [
'goods_detail' => '商品详情',
'goodscategory_index' => '商品分类',
'goodscategory_save' => '商品分类添加/编辑',
'goodscategory_statusupdate' => '商品分类状态更新',
'goodscategory_delete' => '商品分类删除',
'goodsparamstemplate_index' => '商品参数',
'goodsparamstemplate_delete' => '商品参数删除',
@ -1322,7 +1383,7 @@ return [
]
],
'order_index' => [
'name' => '订单管理',
'name' => '订单',
'item' => [
'order_index' => '订单管理',
'order_delete' => '订单删除',
@ -1342,7 +1403,7 @@ return [
]
],
'navigation_index' => [
'name' => '网站管理',
'name' => '网站',
'item' => [
'navigation_index' => '导航管理',
'navigation_save' => '导航添加/编辑',
@ -1376,6 +1437,7 @@ return [
'screeningprice_delete' => '筛选价格删除',
'region_index' => '地区管理',
'region_save' => '地区添加/编辑',
'region_statusupdate' => '地区状态更新',
'region_delete' => '地区删除',
'region_codedata' => '获取地区编号数据',
'express_index' => '快递管理',
@ -1406,7 +1468,7 @@ return [
]
],
'brand_index' => [
'name' => '品牌管理',
'name' => '品牌',
'item' => [
'brand_index' => '品牌管理',
'brand_saveinfo' => '品牌添加/编辑页面',
@ -1420,7 +1482,7 @@ return [
]
],
'warehouse_index' => [
'name' => '仓库管理',
'name' => '仓库',
'item' => [
'warehouse_index' => '仓库管理',
'warehouse_saveinfo' => '仓库添加/编辑页面',
@ -1440,7 +1502,7 @@ return [
]
],
'app_index' => [
'name' => '手机管理',
'name' => '手机',
'item' => [
'appconfig_index' => '基础配置',
'appconfig_save' => '基础配置保存',
@ -1468,7 +1530,7 @@ return [
]
],
'article_index' => [
'name' => '文章管理',
'name' => '文章',
'item' => [
'article_index' => '文章管理',
'article_saveinfo' => '文章添加/编辑页面',
@ -1482,7 +1544,7 @@ return [
]
],
'data_index' => [
'name' => '数据管理',
'name' => '数据',
'item' => [
'message_index' => '消息管理',
'message_delete' => '消息删除',
@ -1496,26 +1558,32 @@ return [
'refundlog_detail' => '退款日志详情',
'integrallog_index' => '积分日志',
'integrallog_detail' => '积分日志详情',
'smslog_index' => '短信日志',
'smslog_detail' => '短信日志详情',
]
],
'store_index' => [
'name' => '应用中心',
'name' => '应用',
'item' => [
'pluginsadmin_index' => '应用管理',
'plugins_index' => '应用调用管理',
'pluginsadmin_saveinfo' => '应用添加/编辑页面',
'pluginsadmin_save' => '应用添加/编辑',
'pluginsadmin_statusupdate' => '应用状态更新',
'pluginsadmin_delete' => '应用删除',
'pluginsadmin_upload' => '应用上传',
'pluginsadmin_download' => '应用打包',
'pluginsadmin_install' => '应用安装',
'pluginsadmin_uninstall' => '应用卸载',
'pluginsadmin_sortsave' => '应用排序保存',
'store_index' => '应用商店',
'packageinstall_index' => '软件包安装页面',
'packageinstall_install' => '软件包安装',
'packageupgrade_upgrade' => '软件包更新',
'pluginsadmin_index' => '应用管理',
'plugins_index' => '应用调用管理',
'pluginsadmin_saveinfo' => '应用添加/编辑页面',
'pluginsadmin_save' => '应用添加/编辑',
'pluginsadmin_statusupdate' => '应用状态更新',
'pluginsadmin_delete' => '应用删除',
'pluginsadmin_upload' => '应用上传',
'pluginsadmin_download' => '应用打包',
'pluginsadmin_install' => '应用安装',
'pluginsadmin_uninstall' => '应用卸载',
'pluginsadmin_sortsave' => '应用排序保存',
'store_index' => '应用商店',
'packageinstall_index' => '软件包安装页面',
'packageinstall_install' => '软件包安装',
'packageupgrade_upgrade' => '软件包更新',
'pluginscategory_index' => '应用分类',
'pluginscategory_save' => '应用分类添加/编辑',
'pluginscategory_statusupdate' => '应用分类状态更新',
'pluginscategory_delete' => '应用分类删除',
]
],
'tool_index' => [

View File

@ -3,7 +3,10 @@
<!-- 表单顶部操作栏 -->
{{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>
<a href="{{:MyUrl('admin/admin/saveinfo')}}" class="am-btn am-btn-primary am-radius am-btn-xs">
<i class="iconfont icon-btn-add am-show-sm-only"></i>
<span class="am-hide-sm-only">{{:MyLang('add_title')}}</span>
</a>
<!-- 父级内容 -->
{__block__}
{{/block}}
@ -11,8 +14,7 @@
<!-- 底部提示信息 -->
{{block name="form_operate_bottom"}}
{{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">
<div class="am-tips-card">
<p>{{:implode('</p><p>', MyLang('admin.top_tips_list'))}}</p>
</div>
{{/if}}

View File

@ -2,132 +2,139 @@
<!-- content start -->
<div class="account-pages">
<div class="wrapper-page">
<div class="am-text-center">
<span class="logo">{{$admin_theme_site_name}}</span>
</div>
<div class="am-margin-top-lg am-nbfc admin-login">
{{if count($admin_login_type) gt 0}}
<div data-am-widget="tabs" class="am-tabs am-tabs-d2 am-margin-0" data-am-tabs="{noSwipe: 1}">
{{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]">{{: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]">{{: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>
<div class="wrapper-page {{if empty($admin_login_ad_images)}}not-login-ad-images{{/if}}">
<div class="wrapper-page-content am-flex am-flex-justify-between">
{{if !empty($admin_login_ad_images)}}
<div class="wrapper-page-left am-flex-1 am-flex-width" style="background-image: url({{$admin_login_ad_images}});">
{{if !empty($admin_login_logo)}}
<img src="{{$admin_login_logo}}" width="154" />
{{/if}}
</div>
{{/if}}
<div class="wrapper-page-right admin-login am-flex am-flex-col am-flex-items-center">
{{if count($admin_login_type) gt 0}}
{{if count($admin_login_type) eq 1}}
<div class="am-flex am-flex-col am-flex-items-center">
<p class="am-text-xl am-font-weight am-margin-bottom-xs">{{:MyLang('admin.login_welcome_title')}}</p>
<p class="am-text-lg cr-666">{{:MyLang('common.admin_browser_title')}}</p>
</div>
{{else /}}
<img src="{{$admin_login_logo}}" width="154" class="am-show-sm-only" />
{{/if}}
<div class="am-tabs-bd am-padding-bottom-sm">
{{if in_array('username', $admin_login_type)}}
<div data-tab-panel-0 class="am-tab-panel am-active">
<!-- form start -->
<form class="am-form form-validation-username" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<label>{{:MyLang('common_service.admin.form_item_username')}}</label>
<input type="text" name="accounts" class="am-radius" placeholder="{{:MyLang('common_service.admin.form_item_username_placeholder')}}" pattern="{{:MyConst('common_regex_username')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_username_message')}}" autocomplete="off" data-is-clearout="0" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>{{:MyLang('common_service.admin.form_item_password')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="password" name="pwd" class="am-radius" placeholder="{{:MyLang('common_service.admin.form_item_password_placeholder')}}" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_password_message')}}" autocomplete="off" data-is-clearout="0" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius am-icon-eye eye-submit" type="button"></button>
</span>
<div data-am-widget="tabs" class="am-tabs am-tabs-border am-margin-bottom-0 am-margin-left-0 am-margin-right-0" data-am-tabs="{noSwipe: 1}">
{{if count($admin_login_type) gt 1}}
<ul class="am-tabs-nav am-nav am-nav-tabs">
{{if in_array('username', $admin_login_type)}}
<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]">{{: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}}
<div class="am-tabs-bd">
{{if in_array('username', $admin_login_type)}}
<div data-tab-panel-0 class="am-tab-panel am-active">
<!-- form start -->
<form class="am-form form-validation-username" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<input type="text" name="accounts" class="am-radius" placeholder="{{:MyLang('common_service.admin.form_item_username_placeholder')}}" pattern="{{:MyConst('common_regex_username')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_username_message')}}" autocomplete="off" data-is-clearout="0" required />
</div>
</div>
{{if MyC('admin_login_img_verify_state') eq 1}}
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<label>{{:MyLang('form_verify_title')}}</label>
<div class="am-input-group am-input-group-sm">
<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" data-is-clearout="0" required />
<span class="am-input-group-btn">
<span class="am-btn am-btn-default am-radius am-padding-0 form-verify">
<img src="{{:MyUrl('admin/admin/adminverifyentry')}}" class="am-radius c-p" id="form-verify-img" onClick="this.src=this.src+'&'+Math.random();" />
<a href="javascript:;" class="form-verify-tips" onClick="document.getElementById('form-verify-img').src='{{:MyUrl('admin/admin/adminverifyentry')}}&'+Math.random();">{{:MyLang('form_images_verify_button_text')}}</a>
</span>
<div class="am-form-group am-form-group-refreshing">
<div class="am-form-group am-input-material">
<input type="password" name="pwd" class="am-radius eye" placeholder="{{:MyLang('common_service.admin.form_item_password_placeholder')}}" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_password_message')}}" autocomplete="off" data-is-clearout="0" required />
<span class="am-input-group-btn eye">
<button class="am-btn am-btn-default am-radius am-icon-eye eye-submit" type="button"></button>
</span>
</div>
</div>
{{/if}}
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="username" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '{{: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('common_service.admin.form_item_mobile')}}</label>
<input type="text" name="accounts" class="am-radius" placeholder="{{:MyLang('common_service.admin.form_item_mobile_placeholder')}}" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_mobile_message')}}" autocomplete="off" data-is-clearout="0" 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" data-is-clearout="0" 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>
{{if MyC('admin_login_img_verify_state') eq 1}}
<div class="am-form-group am-form-group-refreshing">
<div class="am-form-group am-input-material">
<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" data-is-clearout="0" required />
<span class="am-input-group-btn verify-img">
<span class="am-btn am-radius am-padding-0 form-verify">
<img src="{{:MyUrl('admin/admin/adminverifyentry')}}" class="am-radius c-p" id="form-verify-img" onClick="this.src=this.src+'&'+Math.random();" />
<a href="javascript:;" class="form-verify-tips" onClick="document.getElementById('form-verify-img').src='{{:MyUrl('admin/admin/adminverifyentry')}}&'+Math.random();">{{:MyLang('form_images_verify_button_text')}}</a>
</span>
</span>
</div>
</div>
{{/if}}
<div class="am-form-group am-form-group-refreshing">
<input type="hidden" name="type" value="username" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm am-btn-sub btn-loading-example" data-am-loading="{loadingText: '{{:MyLang('processing_tips')}}'}">{{:MyLang('login_title')}}</button>
</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 -->
</div>
{{/if}}
{{if in_array('email', $admin_login_type)}}
<div data-tab-panel-2 class="am-tab-panel {{if !in_array('username', $admin_login_type)}}am-active{{/if}}">
<!-- form start -->
<form class="am-form form-validation-email" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<label>{{:MyLang('common_service.admin.form_item_email')}}</label>
<input type="email" name="accounts" class="am-radius" placeholder="{{:MyLang('common_service.admin.form_item_email_placeholder')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_email_message')}}" autocomplete="off" data-is-clearout="0" 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" data-is-clearout="0" 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-email">{{:MyLang('form_verify_button_text')}}</button>
</span>
</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">
<input type="text" name="accounts" class="am-radius" placeholder="{{:MyLang('common_service.admin.form_item_mobile_placeholder')}}" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_mobile_message')}}" autocomplete="off" data-is-clearout="0" required />
</div>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg">
<input type="hidden" name="type" value="email" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm btn-loading-example" data-am-loading="{loadingText: '{{:MyLang('processing_tips')}}'}">{{:MyLang('login_title')}}</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
<div class="am-padding-horizontal am-nbfc">
<a href="javascript:;" 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 class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<div class="am-form-group am-input-material">
<input type="number" name="verify" class="am-radius sms" placeholder="{{:MyLang('form_verify_placeholder')}}" min="0" minlength="4" maxlength="4" data-validation-message="{{:MyLang('form_verify_message')}}" autocomplete="off" data-is-clearout="0" required />
<span class="am-input-group-btn verify-sms">
<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 am-btn-sub btn-loading-example" data-am-loading="{loadingText: '{{:MyLang('processing_tips')}}'}">{{:MyLang('login_title')}}</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
{{if in_array('email', $admin_login_type)}}
<div data-tab-panel-2 class="am-tab-panel {{if !in_array('username', $admin_login_type)}}am-active{{/if}}">
<!-- form start -->
<form class="am-form form-validation-email" method="post" action="{{:MyUrl('admin/admin/login')}}" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
<div class="am-form-group am-form-group-refreshing">
<input type="email" name="accounts" class="am-radius" placeholder="{{:MyLang('common_service.admin.form_item_email_placeholder')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_email_message')}}" autocomplete="off" data-is-clearout="0" required />
</div>
<div class="am-form-group am-form-group-refreshing business-form-block am-margin-top-xs">
<div class="am-form-group am-input-material">
<input type="number" name="verify" class="am-radius email" placeholder="{{:MyLang('form_verify_placeholder')}}" min="0" minlength="4" maxlength="4" data-validation-message="{{:MyLang('form_verify_message')}}" autocomplete="off" data-is-clearout="0" required />
<span class="am-input-group-btn verify-email">
<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-email">{{: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="email" />
<button type="submit" class="am-btn am-btn-primary am-btn-block am-radius am-btn-sm am-btn-sub btn-loading-example" data-am-loading="{loadingText: '{{:MyLang('processing_tips')}}'}">{{:MyLang('login_title')}}</button>
</div>
</form>
<!-- form end -->
</div>
{{/if}}
<div class="am-padding-horizontal-lg am-nbfc am-text-right forgot_pwd">
<a href="javascript:;" class="text-muted" data-am-popover="{theme: 'sm', content: '{{:MyLang('admin.form_forget_password_tips')}}', trigger: 'hover focus'}">{{:MyLang('admin.form_forget_password_name')}}</a>
</div>
</div>
</div>
</div>
{{else /}}
<div class="am-text-center am-padding-vertical-lg register-close">
<i class="am-icon-warning"></i>
<span>{{:MyLang('admin.login_close_tips')}}</span>
</div>
{{/if}}
{{else /}}
<div class="am-text-center am-padding-vertical-lg register-close">
<i class="am-icon-warning"></i>
<span>{{:MyLang('admin.login_close_tips')}}</span>
</div>
{{/if}}
</div>
</div>
</div>
</div>
@ -141,14 +148,16 @@
<a href="javascript:;" class="am-close" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd">
<div class="base">
<div class="base am-form-group am-input-material">
<input type="text" placeholder="{{:MyLang('form_images_verify_title')}}" minlength="4" maxlength="4" id="verify-img-value" data-validation-message="{{:MyLang('form_images_verify_message')}}" class="am-form-field am-radius" />
<div class="am-fl">
<div class="am-input-group-btn verify-img">
<img src="{{:MyUrl('admin/admin/adminverifyentry')}}" class="am-radius c-p" id="verify-img" onClick="this.src=this.src+'&'+Math.random();" />
<a href="javascript:;" class="verify-tips" onClick="document.getElementById('verify-img').src='{{:MyUrl('admin/admin/adminverifyentry')}}&'+Math.random();">{{:MyLang('form_images_verify_button_text')}}</a>
</div>
</div>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block m-t-20 btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:MyLang('send_tips')}}'}" data-win="1">{{:MyLang('confirm_title')}}</button>
<div>
<button type="button" class="am-btn am-btn-primary am-radius am-btn-sm block m-t-20 btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:MyLang('send_tips')}}'}" data-win="1">{{:MyLang('confirm_title')}}</button>
</div>
</div>
</div>
</div>

View File

@ -1,5 +1,5 @@
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/admin/detail', ['id'=>$module_data['id']])}}">
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/admin/detail', ['id'=>$module_data['id']])}}" data-title="{{:MyLang('detail_title')}}">
<i class="am-icon-eye"></i>
<span>{{:MyLang('detail_title')}}</span>
</button>

View File

@ -3,102 +3,81 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<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">{{: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-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.admin.form_item_username')}}{{if empty($data)}}<span class="am-form-group-label-tips-must">*</span>{{/if}}{{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: '{{if empty($data)}}{{:MyLang('common_service.admin.form_item_username_created_tips')}}{{else /}}{{:MyLang('common_service.admin.form_item_username_edit_tips')}}{{/if}}', trigger: 'hover focus', theme: 'sm'}"></a>{{/if}}</label>
<input type="text" name="username" placeholder="{{:MyLang('common_service.admin.form_item_username_message')}}" pattern="{{:MyConst('common_regex_username')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_username_message')}}" class="am-radius" {{if !empty($data['username'])}}value="{{$data.username}}" disabled{{/if}} required />
</div>
<!-- nav start -->
{{:ModuleInclude('public/admin_nav', [
'title' => MyLang('admin.base_nav_title').(empty($data['id']) ? MyLang('created_title') : MyLang('edit_title')),
'back_url' => MyUrl('admin/admin/index', $params)
])}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-sticky" action="{{:MyUrl('admin/admin/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/admin/index', $params)}}">
<div class="am-form-group">
<label>{{:MyLang('common_service.admin.form_item_username')}}{{if empty($data)}}<span class="am-form-group-label-tips-must">*</span>{{/if}}{{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: '{{if empty($data)}}{{:MyLang('common_service.admin.form_item_username_created_tips')}}{{else /}}{{:MyLang('common_service.admin.form_item_username_edit_tips')}}{{/if}}', trigger: 'hover focus', theme: 'sm'}"></a>{{/if}}</label>
<input type="text" name="username" placeholder="{{:MyLang('common_service.admin.form_item_username_message')}}" pattern="{{:MyConst('common_regex_username')}}" data-validation-message="{{:MyLang('common_service.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>{{:MyLang('common_service.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('common_service.admin.form_item_password_edit_tips')}}</span>{{/if}}</label>
<input type="password" name="login_pwd" placeholder="{{:MyLang('common_service.admin.form_item_password')}}" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_password_message')}}" class="am-radius" autocomplete="off" {{if empty($data)}}required{{/if}} />
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.admin.form_item_mobile')}}</label>
<input type="text" name="mobile" placeholder="{{:MyLang('common_service.admin.form_item_mobile')}}" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_mobile_message')}}" class="am-radius" {{if !empty($data['mobile'])}}value="{{$data.mobile}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.admin.form_item_email')}}</label>
<input type="email" name="email" placeholder="{{:MyLang('common_service.admin.form_item_email')}}" maxlength="60" data-validation-message="{{:MyLang('common_service.admin.form_item_email_message')}}" class="am-radius" value="{{if !empty($data['email'])}}{{$data.email}}{{/if}}" />
</div>
{{if !isset($data['id']) or $admin['id'] neq $data['id']}}
<div class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.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}}
</select>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.admin.form_item_password_edit_tips')}}</span>{{/if}}</label>
<input type="password" name="login_pwd" placeholder="{{:MyLang('common_service.admin.form_item_password')}}" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_password_message')}}" class="am-radius" autocomplete="off" {{if empty($data)}}required{{/if}} />
</div>
{{/if}}
{{include file="lib/gender" /}}
<div class="am-form-group">
<label>{{:MyLang('common_service.admin.form_item_status')}}<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-radio-group">
{{foreach :MyConst('common_admin_status_list') as $v}}
<label class="am-radio-inline am-margin-right-sm">
<input type="radio" name="status" value="{{$v.value}}" {{if isset($data['status']) and $data['status'] eq $v['value']}}checked="checked"{{else /}}{{if !isset($data['status']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.admin.form_item_mobile')}}</label>
<input type="text" name="mobile" placeholder="{{:MyLang('common_service.admin.form_item_mobile')}}" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="{{:MyLang('common_service.admin.form_item_mobile_message')}}" class="am-radius" {{if !empty($data['mobile'])}}value="{{$data.mobile}}"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.admin.form_item_email')}}</label>
<input type="email" name="email" placeholder="{{:MyLang('common_service.admin.form_item_email')}}" maxlength="60" data-validation-message="{{:MyLang('common_service.admin.form_item_email_message')}}" class="am-radius" value="{{if !empty($data['email'])}}{{$data.email}}{{/if}}" />
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
{{include file="lib/gender" /}}
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.admin.form_item_status_message')}}" required>
{{foreach :MyConst('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}}
</select>
</div>
</div>
</div>
{{if !isset($data['id']) or $admin['id'] neq $data['id']}}
<div class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.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}}
</select>
</div>
{{/if}}
<!-- 插件扩展数据 start -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<!-- 插件扩展数据 start -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="plugins-tag">
<span>plugins_view_admin_admin_save</span>
</div>
{{/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">{{: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)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
</div>
</div>
{{/if}}
<!-- 插件扩展数据 end -->
{{if !empty($plugins_view_admin_admin_save_data) and is_array($plugins_view_admin_admin_save_data)}}
<div class="card-grey">
<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)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
</div>
</div>
{{/if}}
<!-- 插件扩展数据 end -->
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data['id'])}}value="{{$data.id}}"{{/if}} />
<a href="{{:MyUrl('admin/admin/index', $params)}}" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg">
<i class="am-icon-mail-reply"></i>
<span>{{:MyLang('retreat_title')}}</span>
</a>
<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 am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</div>
</form>
<!-- form end -->
</div>
</div>
@ -106,4 +85,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -2,26 +2,32 @@
<!-- right content start -->
<div class="content-right">
<!-- table nav start -->
{{include file="agreement/nav" /}}
<!-- table nav end -->
<div class="content">
<!-- nav start -->
{{:ModuleInclude('public/nav_switch_tabs', [
'nav_data' => $nav_data,
'nav_type' => $type,
'url' => 'admin/agreement/index'
])}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/agreement/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/agreement/index', ['nav_type'=>$nav_type])}}">
<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">{{:MyLang('agreement.view_detail_name')}}</a>
<form class="am-form form-validation am-form-full-screen am-form-popup-sticky" action="{{:MyUrl('admin/agreement/save')}}" method="POST" request-type="ajax-view" request-value="{{:MyUrl('admin/agreement/index', ['type'=>$type])}}">
<div class="nav-content">
<!-- table tips start -->
{{include file="agreement/tips" /}}
<!-- table tips end -->
<div class="am-form-group">
<div class="am-flex am-flex-justify-between am-flex-items-center">
<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'])}}" class="am-btn am-btn-primary-light-plain am-border-0 am-radius am-btn-xs" target="_blank">
<span>{{:MyLang('agreement.view_detail_name')}}</span>
</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>
<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-popup-submit">
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userlogout'])}}" class="am-btn am-btn-default am-radius am-btn-xs am-margin-right-lg" target="_blank">
<i class="am-icon-eye"></i>
<span>{{:MyLang('agreement.view_detail_name')}}</span>
</a>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
@ -35,4 +41,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,13 +0,0 @@
<ul class="am-nav am-nav-pills table-nav second-nav">
{{if !empty($nav_data) and is_array($nav_data)}}
{{foreach $nav_data as $v}}
<li {{if $nav_type eq $v['type']}}class="am-active"{{/if}} data-type="{{$v.type}}">
<a href="{{:MyUrl('admin/agreement/index', ['nav_type'=>$v['type']])}}">{{$v.name}}</a>
</li>
{{/foreach}}
{{/if}}
</ul>
<div class="am-alert am-radius am-margin-horizontal-sm am-margin-bottom-0" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>{{:MyLang('agreement.top_tips')}}</p>
</div>

View File

@ -2,26 +2,31 @@
<!-- right content start -->
<div class="content-right">
<!-- table nav start -->
{{include file="agreement/nav" /}}
<!-- table nav end -->
<div class="content">
<!-- nav start -->
{{:ModuleInclude('public/nav_switch_tabs', [
'nav_data' => $nav_data,
'nav_type' => $type,
'url' => 'admin/agreement/index'
])}}
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/agreement/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/agreement/index', ['nav_type'=>$nav_type])}}">
<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">{{:MyLang('agreement.view_detail_name')}}</a>
<form class="am-form form-validation am-form-full-screen am-form-popup-sticky" action="{{:MyUrl('admin/agreement/save')}}" method="POST" request-type="ajax-view" request-value="{{:MyUrl('admin/agreement/index', ['type'=>$type])}}">
<div class="nav-content">
<!-- table tips start -->
{{include file="agreement/tips" /}}
<!-- table tips end -->
<div class="am-form-group">
<div class="am-flex am-flex-justify-between am-flex-items-center">
<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'])}}" class="am-btn am-btn-primary-light-plain am-border-0 am-radius am-btn-xs" target="_blank">
<span>{{:MyLang('agreement.view_detail_name')}}</span>
</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>
<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-popup-submit">
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userprivacy'])}}" class="am-btn am-btn-default am-radius am-btn-xs am-margin-right-lg" target="_blank">
<i class="am-icon-eye"></i>
<span>{{:MyLang('agreement.view_detail_name')}}</span>
</a>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
@ -35,4 +40,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -2,25 +2,30 @@
<!-- right content start -->
<div class="content-right">
<!-- table nav start -->
{{include file="agreement/nav" /}}
<!-- table nav end -->
<div class="content">
<!-- nav start -->
{{:ModuleInclude('public/nav_switch_tabs', [
'nav_data' => $nav_data,
'nav_type' => $type,
'url' => 'admin/agreement/index'
])}}
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/agreement/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/agreement/index', ['nav_type'=>$nav_type])}}">
<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">{{:MyLang('agreement.view_detail_name')}}</a>
<form class="am-form form-validation am-form-full-screen am-form-popup-sticky" action="{{:MyUrl('admin/agreement/save')}}" method="POST" request-type="ajax-view" request-value="{{:MyUrl('admin/agreement/index', ['type'=>$type])}}">
<div class="nav-content">
<!-- table tips start -->
{{include file="agreement/tips" /}}
<!-- table tips end -->
<div class="am-form-group">
<div class="am-flex am-flex-justify-between am-flex-items-center">
<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'])}}" class="am-btn am-btn-primary-light-plain am-radius am-btn-xs am-border-0" target="_blank">
<span>{{:MyLang('agreement.view_detail_name')}}</span>
</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>
<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-popup-submit">
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userregister'])}}" class="am-btn am-btn-default am-radius am-btn-xs am-margin-right-lg" target="_blank">
<i class="am-icon-eye"></i>
<span>{{:MyLang('agreement.view_detail_name')}}</span>
</a>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
@ -34,4 +39,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -0,0 +1,8 @@
<div class="am-operate-stretch-tips">
<div class="title">
<i class="iconfont icon-tips"></i>
<strong title="{{:MyLang('operate_list_tips_msg')}}">{{:MyLang('operate_list_tips_button_text')}}</strong>
<i class="iconfont icon-contract contract" title="{{:MyLang('operate_list_tips_retract_text')}}"></i>
</div>
<p>{{:MyLang('agreement.top_tips')}}</p>
</div>

View File

@ -3,7 +3,10 @@
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/appcenternav/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> {{:MyLang('add_title')}}</a>
<a href="{{:MyUrl('admin/appcenternav/saveinfo')}}" class="am-btn am-btn-primary am-radius am-btn-xs">
<i class="iconfont icon-btn-add am-show-sm-only"></i>
<span class="am-hide-sm-only">{{:MyLang('add_title')}}</span>
</a>
<!-- 父级内容 -->
{__block__}
{{/block}}

View File

@ -1,5 +1,5 @@
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/appcenternav/detail', ['id'=>$module_data['id']])}}">
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/appcenternav/detail', ['id'=>$module_data['id']])}}" data-title="{{:MyLang('detail_title')}}">
<i class="am-icon-eye"></i>
<span>{{:MyLang('detail_title')}}</span>
</button>

View File

@ -3,96 +3,75 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" 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">{{: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>
<!-- nav start -->
{{:ModuleInclude('public/admin_nav', [
'title' => MyLang('appcenternav.base_nav_title').(empty($data['id']) ? MyLang('created_title') : MyLang('edit_title')),
'back_url' => MyUrl('admin/appcenternav/index', $params)
])}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-sticky" action="{{:MyUrl('admin/appcenternav/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appcenternav/index', $params)}}" enctype="multipart/form-data">
<div class="am-form-group">
<label>{{:MyLang('common_service.appcenternav.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('common_service.appcenternav.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('common_service.appcenternav.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<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}}
</select>
</div>
<div class="am-form-group">
<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>{{:MyLang('common_service.appcenternav.form_item_desc')}}</label>
<input type="text" name="desc" placeholder="{{:MyLang('common_service.appcenternav.form_item_desc_message')}}" data-validation-message="{{:MyLang('common_service.appcenternav.form_item_desc_message')}}" class="am-radius" {{if !empty($data['desc'])}} value="{{$data.desc}}"{{/if}} />
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.appcenternav.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('common_service.appcenternav.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('common_service.appcenternav.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>{{: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}}
</select>
</div>
</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('form_event_value_title')}}</label>
<input type="text" name="event_value" placeholder="{{:MyLang('form_event_value_message')}}" data-validation-message="{{:MyLang('common_service.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-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<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>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.appcenternav.form_item_desc')}}</label>
<input type="text" name="desc" placeholder="{{:MyLang('common_service.appcenternav.form_item_desc_message')}}" data-validation-message="{{:MyLang('common_service.appcenternav.form_item_desc_message')}}" class="am-radius" {{if !empty($data['desc'])}} value="{{$data.desc}}"{{/if}} />
</div>
</div>
</div>
<div class="am-form-group am-form-file">
<label class="am-block">{{:MyLang('common_service.appcenternav.form_item_images_url')}}<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-form-file-upload-container">
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-dialog-type="images" data-is-eye="1">
<li class="plug-file-upload-submit" data-view-tag="ul.slide-images_url-images-view">
{{if empty($data['images_url'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="images_url" value="{{$data.images_url}}" />
<img src="{{$data.images_url}}" />
<i>×</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
</ul>
</div>
</div>
{{include file="lib/sort" /}}
{{include file="lib/is_enable" /}}
<div class="am-form-group">
<label>{{:MyLang('form_event_value_title')}}</label>
<input type="text" name="event_value" placeholder="{{:MyLang('form_event_value_message')}}" data-validation-message="{{:MyLang('common_service.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-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group am-form-file">
<label class="am-block">{{:MyLang('common_service.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="{{: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">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-cf">
<div class="am-u-sm-12 am-padding-horizontal-0">
{{include file="lib/sort" /}}
</div>
<div class="am-u-sm-12 am-padding-horizontal-0">
{{include file="lib/is_enable" /}}
</div>
</div>
</div>
</div>
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<a href="{{:MyUrl('admin/appcenternav/index', $params)}}" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg">
<i class="am-icon-mail-reply"></i>
<span>{{:MyLang('retreat_title')}}</span>
</a>
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</div>
</form>
<!-- form end -->
</div>
</div>
@ -100,4 +79,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -2,49 +2,66 @@
<!-- right content start -->
<div class="content-right">
<!-- table nav start -->
{{include file="appconfig/nav" /}}
<!-- table nav end -->
<div class="content">
<!-- table nav start -->
{{:ModuleInclude('public/nav_switch_tabs', [
'nav_data' => $nav_data,
'nav_type' => $nav_type,
'url' => 'admin/appconfig/index'
])}}
<!-- table nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/appconfig/save', ['nav_type'=>$nav_type])}}" method="POST" request-type="ajax-reload">
<!-- 基础配置 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('base_config_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<form class="am-form form-validation am-form-popup-sticky" action="{{:MyUrl('admin/appconfig/save', ['nav_type'=>$nav_type])}}" method="POST" request-type="ajax-view">
{{:ModuleInclude('public/nav_switch_btn', [
'nav_data' => [
[
'name' => MyLang('base_config_title'),
'key' => 'base-config-title',
],
[
'name' => MyLang('appconfig.user_base_popup_title'),
'key' => 'user-base-popup',
]
]
])}}
<div class="nav-content">
<!-- 基础配置 -->
<div class="item am-active" data-key="base-config-title">
<div class="am-form-group">
<label class="am-block">{{$data.common_app_is_use_mobile_detail.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_use_mobile_detail.describe}}</span></label>
<select name="{{$data.common_app_is_use_mobile_detail.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_use_mobile_detail.error_tips}}" required>
<div class="am-radio-group">
{{foreach :MyConst('common_is_text_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_use_mobile_detail']['value']) and $data['common_app_is_use_mobile_detail']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
<label class="am-radio-inline">
<input type="radio" value="{{$v.id}}" name="{{$data.common_app_is_use_mobile_detail.only_tag}}" data-validation-message="{{$data.common_app_is_use_mobile_detail.error_tips}}" required {{if isset($data['common_app_is_use_mobile_detail']['value']) and $data['common_app_is_use_mobile_detail']['value'] eq $v['id']}}checked{{/if}} data-am-ucheck>{{$v.name}}
</label>
{{/foreach}}
</select>
</div>
</div>
<div class="am-form-group">
<label class="am-block">{{$data.common_user_is_mandatory_bind_mobile.name}}<span class="am-form-group-label-tips">{{$data.common_user_is_mandatory_bind_mobile.describe}}</span></label>
<select name="{{$data.common_user_is_mandatory_bind_mobile.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_user_is_mandatory_bind_mobile.error_tips}}" required>
<div class="am-radio-group">
{{foreach :MyConst('common_is_text_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['common_user_is_mandatory_bind_mobile']['value']) and $data['common_user_is_mandatory_bind_mobile']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
<label class="am-radio-inline">
<input type="radio" value="{{$v.id}}" name="{{$data.common_user_is_mandatory_bind_mobile.only_tag}}" data-validation-message="{{$data.common_user_is_mandatory_bind_mobile.error_tips}}" required {{if isset($data['common_user_is_mandatory_bind_mobile']['value']) and $data['common_user_is_mandatory_bind_mobile']['value'] eq $v['id']}}checked{{/if}} data-am-ucheck>{{$v.name}}
</label>
{{/foreach}}
</select>
</div>
</div>
<div class="am-form-group">
<label class="am-block">{{$data.common_user_onekey_bind_mobile_list.name}}<span class="am-form-group-label-tips">{{$data.common_user_onekey_bind_mobile_list.describe}}</span></label>
{{foreach :MyConst('common_platform_type') as $v}}
{{if in_array($v['value'], ['weixin', 'baidu', 'toutiao'])}}
<label class="am-checkbox-inline">
<input type="checkbox" name="{{$data.common_user_onekey_bind_mobile_list.only_tag}}" value="{{$v.value}}" {{if isset($data['common_user_onekey_bind_mobile_list']['value']) and in_array($v['value'], $data['common_user_onekey_bind_mobile_list']['value'])}}checked{{/if}} data-validation-message="{{$data.common_user_onekey_bind_mobile_list.error_tips}}" data-am-ucheck /> {{$v.name}}
</label>
{{/if}}
{{/foreach}}
<div class="am-checkbox-group am-flex am-gap-12">
{{foreach :MyConst('common_platform_type') as $v}}
{{if in_array($v['value'], ['weixin', 'baidu', 'toutiao'])}}
<label class="am-checkbox-inline">
<input type="checkbox" name="{{$data.common_user_onekey_bind_mobile_list.only_tag}}" value="{{$v.value}}" {{if !empty($data['common_user_onekey_bind_mobile_list']) and isset($data['common_user_onekey_bind_mobile_list']['value']) and is_array($data['common_user_onekey_bind_mobile_list']['value']) and in_array($v['value'], $data['common_user_onekey_bind_mobile_list']['value'])}}checked{{/if}} data-validation-message="{{$data.common_user_onekey_bind_mobile_list.error_tips}}" data-am-ucheck /> {{$v.name}}
</label>
{{/if}}
{{/foreach}}
</div>
{{if is_array(MyLang('appconfig.user_onekey_bind_mobile_tips_list'))}}
<div class="am-alert am-alert-warning" data-am-alert>
<button type="button" class="am-close">&times;</button>
<div class="am-tips-card">
<p>{{:implode('</p><p>', MyLang('appconfig.user_onekey_bind_mobile_tips_list'))}}</p>
</div>
{{/if}}
@ -52,16 +69,17 @@
<div class="am-form-group">
<label class="am-block">{{$data.common_user_address_platform_import_list.name}}<span class="am-form-group-label-tips">{{$data.common_user_address_platform_import_list.describe}}</span></label>
{{foreach :MyConst('common_platform_type') as $v}}
{{if in_array($v['value'], ['weixin', 'baidu', 'alipay', 'qq', 'toutiao'])}}
<label class="am-checkbox-inline">
<input type="checkbox" name="{{$data.common_user_address_platform_import_list.only_tag}}" value="{{$v.value}}" {{if isset($data['common_user_address_platform_import_list']['value']) and in_array($v['value'], $data['common_user_address_platform_import_list']['value'])}}checked{{/if}} data-validation-message="{{$data.common_user_address_platform_import_list.error_tips}}" data-am-ucheck /> {{$v.name}}
</label>
{{/if}}
{{/foreach}}
<div class="am-checkbox-group am-flex am-gap-12">
{{foreach :MyConst('common_platform_type') as $v}}
{{if in_array($v['value'], ['weixin', 'baidu', 'alipay', 'qq', 'toutiao'])}}
<label class="am-checkbox-inline">
<input type="checkbox" name="{{$data.common_user_address_platform_import_list.only_tag}}" value="{{$v.value}}" {{if !empty($data['common_user_address_platform_import_list']) and isset($data['common_user_address_platform_import_list']['value']) and is_array($data['common_user_address_platform_import_list']['value']) and in_array($v['value'], $data['common_user_address_platform_import_list']['value'])}}checked{{/if}} data-validation-message="{{$data.common_user_address_platform_import_list.error_tips}}" data-am-ucheck /> {{$v.name}}
</label>
{{/if}}
{{/foreach}}
</div>
{{if is_array(MyLang('appconfig.user_address_platform_import_tips_list'))}}
<div class="am-alert am-alert-warning" data-am-alert>
<button type="button" class="am-close">&times;</button>
<div class="am-tips-card">
<p>{{:implode('</p><p>', MyLang('appconfig.user_address_platform_import_tips_list'))}}</p>
</div>
{{/if}}
@ -69,80 +87,86 @@
<div class="am-form-group">
<label class="am-block">{{$data.common_app_is_enable_search.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_enable_search.describe}}</span></label>
<select name="{{$data.common_app_is_enable_search.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_enable_search.error_tips}}" required>
<div class="am-radio-group">
{{foreach :MyConst('common_is_text_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_enable_search']['value']) and $data['common_app_is_enable_search']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
<label class="am-radio-inline">
<input type="radio" value="{{$v.id}}" name="{{$data.common_app_is_enable_search.only_tag}}" data-validation-message="{{$data.common_app_is_enable_search.error_tips}}" required {{if isset($data['common_app_is_enable_search']['value']) and $data['common_app_is_enable_search']['value'] eq $v['id']}}checked{{/if}} data-am-ucheck>{{$v.name}}
</label>
{{/foreach}}
</select>
</div>
</div>
<div class="am-form-group">
<label class="am-block">{{$data.common_app_is_header_nav_fixed.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_header_nav_fixed.describe}}</span></label>
<select name="{{$data.common_app_is_header_nav_fixed.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_header_nav_fixed.error_tips}}" required>
<div class="am-radio-group">
{{foreach :MyConst('common_is_text_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_header_nav_fixed']['value']) and $data['common_app_is_header_nav_fixed']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
<label class="am-radio-inline">
<input type="radio" value="{{$v.id}}" name="{{$data.common_app_is_header_nav_fixed.only_tag}}" data-validation-message="{{$data.common_app_is_header_nav_fixed.error_tips}}" required {{if isset($data['common_app_is_header_nav_fixed']['value']) and $data['common_app_is_header_nav_fixed']['value'] eq $v['id']}}checked{{/if}} data-am-ucheck>{{$v.name}}
</label>
{{/foreach}}
</select>
</div>
</div>
<div class="am-form-group">
<label class="am-block">{{$data.common_app_is_online_service.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_online_service.describe}}</span></label>
<select name="{{$data.common_app_is_online_service.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_online_service.error_tips}}" required>
<div class="am-radio-group">
{{foreach :MyConst('common_is_text_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_online_service']['value']) and $data['common_app_is_online_service']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
<label class="am-radio-inline">
<input type="radio" value="{{$v.id}}" name="{{$data.common_app_is_online_service.only_tag}}" data-validation-message="{{$data.common_app_is_online_service.error_tips}}" required {{if isset($data['common_app_is_online_service']['value']) and $data['common_app_is_online_service']['value'] eq $v['id']}}checked{{/if}} data-am-ucheck>{{$v.name}}
</label>
{{/foreach}}
</select>
</div>
</div>
<div class="am-form-group">
<label class="am-block">{{$data.common_app_is_head_vice_nav.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_head_vice_nav.describe}}</span></label>
<select name="{{$data.common_app_is_head_vice_nav.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_head_vice_nav.error_tips}}" required>
<div class="am-radio-group">
{{foreach :MyConst('common_is_text_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_head_vice_nav']['value']) and $data['common_app_is_head_vice_nav']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
<label class="am-radio-inline">
<input type="radio" value="{{$v.id}}" name="{{$data.common_app_is_head_vice_nav.only_tag}}" data-validation-message="{{$data.common_app_is_head_vice_nav.error_tips}}" required {{if isset($data['common_app_is_head_vice_nav']['value']) and $data['common_app_is_head_vice_nav']['value'] eq $v['id']}}checked{{/if}} data-am-ucheck>{{$v.name}}
</label>
{{/foreach}}
</select>
</div>
</div>
</div>
</div>
<!-- 用户基础数据 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('appconfig.user_base_popup_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<!-- 用户基础数据 -->
<div class="item" data-key="user-base-popup">
{{if is_array(MyLang('appconfig.user_base_popup_top_tips_list'))}}
<div class="am-alert am-alert-warning am-margin-top-sm" data-am-alert>
<button type="button" class="am-close">&times;</button>
<div class="am-operate-stretch-tips">
<div class="title">
<i class="iconfont icon-tips"></i>
<strong title="{{:MyLang('operate_list_tips_msg')}}">{{:MyLang('operate_list_tips_button_text')}}</strong>
<i class="iconfont icon-contract contract" title="{{:MyLang('operate_list_tips_retract_text')}}"></i>
</div>
<p>{{:implode('</p><p>', MyLang('appconfig.user_base_popup_top_tips_list'))}}</p>
</div>
{{/if}}
<div class="am-form-group">
<label class="am-block">{{$data.common_app_user_base_popup_pages.name}}<span class="am-form-group-label-tips">{{$data.common_app_user_base_popup_pages.describe}}</span></label>
{{foreach :MyConst('common_user_base_popup_pages_list') as $v}}
<label class="am-checkbox-inline">
<input type="checkbox" name="{{$data.common_app_user_base_popup_pages.only_tag}}" value="{{$v.value}}" {{if isset($data['common_app_user_base_popup_pages']['value']) and in_array($v['value'], $data['common_app_user_base_popup_pages']['value'])}}checked{{/if}} data-validation-message="{{$data.common_app_user_base_popup_pages.error_tips}}" data-am-ucheck /> {{$v.name}}
</label>
{{/foreach}}
<div class="am-checkbox-group am-flex am-gap-12">
{{foreach :MyConst('common_user_base_popup_pages_list') as $v}}
<label class="am-checkbox-inline">
<input type="checkbox" name="{{$data.common_app_user_base_popup_pages.only_tag}}" value="{{$v.value}}" {{if isset($data['common_app_user_base_popup_pages']['value']) and in_array($v['value'], $data['common_app_user_base_popup_pages']['value'])}}checked{{/if}} data-validation-message="{{$data.common_app_user_base_popup_pages.error_tips}}" data-am-ucheck /> {{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<div class="am-form-group">
<label class="am-block">{{$data.common_app_user_base_popup_client.name}}<span class="am-form-group-label-tips">{{$data.common_app_user_base_popup_client.describe}}</span></label>
{{foreach :MyConst('common_platform_type') as $v}}
{{if !in_array($v['value'], ['pc'])}}
<label class="am-checkbox-inline">
<input type="checkbox" name="{{$data.common_app_user_base_popup_client.only_tag}}" value="{{$v.value}}" {{if isset($data['common_app_user_base_popup_client']['value']) and in_array($v['value'], $data['common_app_user_base_popup_client']['value'])}}checked{{/if}} data-validation-message="{{$data.common_app_user_base_popup_client.error_tips}}" data-am-ucheck /> {{$v.name}}
</label>
{{/if}}
{{/foreach}}
<div class="am-checkbox-group am-flex am-gap-12">
{{foreach :MyConst('common_platform_type') as $v}}
{{if !in_array($v['value'], ['pc'])}}
<label class="am-checkbox-inline">
<input type="checkbox" name="{{$data.common_app_user_base_popup_client.only_tag}}" value="{{$v.value}}" {{if isset($data['common_app_user_base_popup_client']['value']) and in_array($v['value'], $data['common_app_user_base_popup_client']['value'])}}checked{{/if}} data-validation-message="{{$data.common_app_user_base_popup_client.error_tips}}" data-am-ucheck /> {{$v.name}}
</label>
{{/if}}
{{/foreach}}
</div>
</div>
<div class="am-form-group">
<label class="am-block">{{$data.common_app_user_base_popup_interval_time.name}}<span class="am-form-group-label-tips">{{$data.common_app_user_base_popup_interval_time.describe}}</span></label>
<div class="am-input-group am-input-group-sm">
<input type="number" min="0" name="{{$data.common_app_user_base_popup_interval_time.only_tag}}" placeholder="{{$data.common_app_user_base_popup_interval_time.name}}" data-validation-message="{{$data.common_app_user_base_popup_interval_time.error_tips}}" class="am-radius am-form-field" {{if !empty($data)}}value="{{$data.common_app_user_base_popup_interval_time.value}}"{{/if}} />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default" type="button">{{:MyLang('second_title')}}</button>
</span>
</div>
<input type="number" min="0" name="{{$data.common_app_user_base_popup_interval_time.only_tag}}" placeholder="{{$data.common_app_user_base_popup_interval_time.name}}" data-validation-message="{{$data.common_app_user_base_popup_interval_time.error_tips}}" class="am-radius am-form-field" {{if !empty($data)}}value="{{$data.common_app_user_base_popup_interval_time.value}}"{{/if}} />
</div>
</div>
</div>

View File

@ -2,48 +2,53 @@
<!-- right content start -->
<div class="content-right">
<!-- table nav start -->
{{include file="appconfig/nav" /}}
<!-- table nav end -->
<div class="content">
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/appconfig/save', ['nav_type'=>$nav_type])}}" method="POST" request-type="ajax-reload">
<div class="am-form-group">
<!-- table nav start -->
{{:ModuleInclude('public/nav_switch_tabs', [
'nav_data' => $nav_data,
'nav_type' => $nav_type,
'url' => 'admin/appconfig/index'
])}}
<!-- table nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-popup-sticky" action="{{:MyUrl('admin/appconfig/save', ['nav_type'=>$nav_type])}}" method="POST" request-type="ajax-view">
<div class="am-form-group">
<label>{{$data.common_app_h5_url.name}}<span class="am-form-group-label-tips">{{$data.common_app_h5_url.describe}}</span></label>
<input type="text" name="{{$data.common_app_h5_url.only_tag}}" placeholder="{{$data.common_app_h5_url.name}}" data-validation-message="{{$data.common_app_h5_url.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_h5_url.value}}"{{/if}} />
</div>
<div class="am-form-group">
<div class="am-form-group">
<label>{{$data.common_is_mobile_concise_model.name}}<span class="am-form-group-label-tips">{{$data.common_is_mobile_concise_model.describe}}</span></label>
<select name="{{$data.common_is_mobile_concise_model.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_is_mobile_concise_model.error_tips}}" required>
<div class="am-radio-group">
{{foreach :MyConst('common_is_text_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['common_is_mobile_concise_model']['value']) and $data['common_is_mobile_concise_model']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
<label class="am-radio-inline">
<input type="radio" value="{{$v.id}}" name="{{$data.common_is_mobile_concise_model.only_tag}}" data-validation-message="{{$data.common_is_mobile_concise_model.error_tips}}" required {{if isset($data['common_is_mobile_concise_model']['value']) and $data['common_is_mobile_concise_model']['value'] eq $v['id']}}checked{{/if}} data-am-ucheck>{{$v.name}}
</label>
{{/foreach}}
</select>
</div>
</div>
<div class="am-form-group">
<label>{{$data.common_app_customer_service_tel.name}}<span class="am-form-group-label-tips">{{$data.common_app_customer_service_tel.describe}}</span></label>
<input type="text" name="{{$data.common_app_customer_service_tel.only_tag}}" placeholder="{{$data.common_app_customer_service_tel.name}}" data-validation-message="{{$data.common_app_customer_service_tel.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_customer_service_tel.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_customer_service_tel.name}}<span class="am-form-group-label-tips">{{$data.common_app_customer_service_tel.describe}}</span></label>
<input type="text" name="{{$data.common_app_customer_service_tel.only_tag}}" placeholder="{{$data.common_app_customer_service_tel.name}}" data-validation-message="{{$data.common_app_customer_service_tel.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_customer_service_tel.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_shop_notice.name}}<span class="am-form-group-label-tips">{{$data.common_shop_notice.describe}}</span></label>
<textarea rows="3" name="{{$data.common_shop_notice.only_tag}}" class="am-radius" placeholder="{{$data.common_shop_notice.name}}" data-validation-message="{{$data.common_shop_notice.error_tips}}">{{if !empty($data)}}{{$data.common_shop_notice.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_user_center_notice.name}}<span class="am-form-group-label-tips">{{$data.common_user_center_notice.describe}}</span></label>
<textarea rows="4" name="{{$data.common_user_center_notice.only_tag}}" class="am-radius" placeholder="{{$data.common_user_center_notice.name}}" data-validation-message="{{$data.common_user_center_notice.error_tips}}">{{if !empty($data)}}{{$data.common_user_center_notice.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_shop_notice.name}}<span class="am-form-group-label-tips">{{$data.common_shop_notice.describe}}</span></label>
<textarea rows="3" name="{{$data.common_shop_notice.only_tag}}" class="am-radius" placeholder="{{$data.common_shop_notice.name}}" data-validation-message="{{$data.common_shop_notice.error_tips}}">{{if !empty($data)}}{{$data.common_shop_notice.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_user_center_notice.name}}<span class="am-form-group-label-tips">{{$data.common_user_center_notice.describe}}</span></label>
<textarea rows="4" name="{{$data.common_user_center_notice.only_tag}}" class="am-radius" placeholder="{{$data.common_user_center_notice.name}}" data-validation-message="{{$data.common_user_center_notice.error_tips}}">{{if !empty($data)}}{{$data.common_user_center_notice.value}}{{/if}}</textarea>
</div>
<div class="am-form-popup-submit">
<div class="am-form-popup-submit">
<input type="hidden" name="nav_type" value="{{$nav_type}}" />
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</div>
</form>
<!-- form end -->
</div>
</div>
@ -51,4 +56,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,9 +0,0 @@
{{if !empty($nav_data) and is_array($nav_data)}}
<ul class="am-nav am-nav-pills table-nav second-nav">
{{foreach $nav_data as $v}}
<li {{if $nav_type eq $v['type']}}class="am-active"{{/if}} data-type="{{$v.type}}">
<a href="{{:MyUrl('admin/appconfig/index', ['nav_type'=>$v['type']])}}">{{$v.name}}</a>
</li>
{{/foreach}}
</ul>
{{/if}}

View File

@ -3,7 +3,10 @@
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/apphomenav/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> {{:MyLang('add_title')}}</a>
<a href="{{:MyUrl('admin/apphomenav/saveinfo')}}" class="am-btn am-btn-primary am-radius am-btn-xs">
<i class="iconfont icon-btn-add am-show-sm-only"></i>
<span class="am-hide-sm-only">{{:MyLang('add_title')}}</span>
</a>
<!-- 父级内容 -->
{__block__}
{{/block}}

View File

@ -1,5 +1,5 @@
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/apphomenav/detail', ['id'=>$module_data['id']])}}">
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/apphomenav/detail', ['id'=>$module_data['id']])}}" data-title="{{:MyLang('detail_title')}}">
<i class="am-icon-eye"></i>
<span>{{:MyLang('detail_title')}}</span>
</button>

View File

@ -3,109 +3,82 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" 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">{{: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>
<!-- nav start -->
{{:ModuleInclude('public/admin_nav', [
'title' => MyLang('apphomenav.base_nav_title').(empty($data['id']) ? MyLang('created_title') : MyLang('edit_title')),
'back_url' => MyUrl('admin/apphomenav/index', $params)
])}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-sticky" action="{{:MyUrl('admin/apphomenav/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/apphomenav/index', $params)}}" enctype="multipart/form-data">
<div class="am-form-group">
<label>{{:MyLang('common_service.apphomenav.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('common_service.apphomenav.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('common_service.apphomenav.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<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}}
</select>
</div>
<div class="am-form-group">
<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>{{:MyLang('form_bg_color_title')}}</label>
<div class="colorpicker-container">
<input type="hidden" name="bg_color" value="{{if !empty($data['bg_color'])}}{{$data.bg_color}}{{/if}}" />
<div class="colorpicker-submit" data-color="{{if !empty($data['bg_color'])}}{{$data.bg_color}}{{/if}}" data-color-style="background-color" data-color-tag="input[name='bg_color']"></div>
<img class="imitate-colorpicker-submit" src="{{$attachment_host}}/static/common/images/colorpicker.png" width="24" height="24" />
</div>
</div>
<div class="am-form-group">
<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-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.apphomenav.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('common_service.apphomenav.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('common_service.apphomenav.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>{{: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}}
</select>
</div>
</div>
</div>
<div class="am-form-group am-form-file">
<label class="am-block">{{:MyLang('common_service.apphomenav.form_item_images_url')}}<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-form-file-upload-container">
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-dialog-type="images" data-is-eye="1">
<li class="plug-file-upload-submit" data-view-tag="ul.slide-images_url-images-view">
{{if empty($data['images_url'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="images_url" value="{{$data.images_url}}" />
<img src="{{$data.images_url}}" />
<i>×</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
</ul>
</div>
</div>
{{include file="lib/sort" /}}
{{include file="lib/is_enable" /}}
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.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-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<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>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('form_bg_color_title')}}</label>
<input type="hidden" name="bg_color" value="{{if !empty($data['bg_color'])}}{{$data.bg_color}}{{/if}}" />
<button class="am-btn am-btn-default am-btn-xs colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color" {{if !empty($data)}} style="background-color:{{$data.bg_color}};"{{/if}}>
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</div>
</div>
</div>
<div class="am-form-group">
<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-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group am-form-file">
<label class="am-block">{{:MyLang('common_service.apphomenav.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="{{: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">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-cf">
<div class="am-u-sm-12 am-padding-horizontal-0">
{{include file="lib/sort" /}}
</div>
<div class="am-u-sm-12 am-padding-horizontal-0">
<div class="am-cf">
<div class="am-u-sm-12 am-u-md-6 am-padding-horizontal-0">
{{include file="lib/is_enable" /}}
</div>
<div class="am-u-sm-12 am-u-md-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.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>
</div>
</div>
</div>
</div>
</div>
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data['id'])}} value="{{$data.id}}"{{/if}} />
<a href="{{:MyUrl('admin/apphomenav/index', $params)}}" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg">
<i class="am-icon-mail-reply"></i>
<span>{{:MyLang('retreat_title')}}</span>
</a>
<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 am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</div>
</form>
<!-- form end -->
</div>
</div>
@ -113,4 +86,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -2,238 +2,223 @@
<!-- right content start -->
<div class="content-right">
<!-- second nav start -->
{{include file="appmini/nav" /}}
<!-- second nav end -->
<div class="content">
<!-- 新版本小程序主题提示 -->
<div class="am-alert am-alert-warning am-radius">
<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">{{:MyLang('appmini.nav_theme_download_name')}} <i class="am-icon-external-link"></i></a>
</p>
</div>
<!-- 新版本小程序主题提示 -->
<div class="am-operate-stretch-tips">
<div class="title">
<i class="iconfont icon-tips"></i>
<strong title="{{:MyLang('operate_list_tips_msg')}}">{{:MyLang('operate_list_tips_button_text')}}</strong>
<i class="iconfont icon-contract contract" title="{{:MyLang('operate_list_tips_retract_text')}}"></i>
</div>
<div class="am-pr">
<p class="am-text-sm">{{:MyLang('appmini.nav_theme_download_tips')}}</p>
<a class="am-fr" href="{{$store_theme_url}}" target="_blank">
<i class="iconfont icon-download-btn"></i>
<span>{{:MyLang('appmini.nav_store_theme_name')}}</span>
</a>
<p class="am-margin-top-xs">
<a href="https://uniapp.shopxo.net/" target="_blank">{{:MyLang('appmini.nav_theme_download_name')}} <i class="am-icon-external-link"></i></a>
</p>
</div>
</div>
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/appmini/save', ['nav_type'=>$nav_type])}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appmini/config', ['nav_type'=>$nav_type])}}">
{{switch $nav_type}}
{{case weixin}}
<!-- 微信 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('base_config_title')}}</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_appid.only_tag}}" placeholder="{{$data.common_app_mini_weixin_appid.name}}" data-validation-message="{{$data.common_app_mini_weixin_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_weixin_appsecret.name}}" data-validation-message="{{$data.common_app_mini_weixin_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_weixin_title.only_tag}}" placeholder="{{$data.common_app_mini_weixin_title.name}}" data-validation-message="{{$data.common_app_mini_weixin_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_weixin_describe.only_tag}}" placeholder="{{$data.common_app_mini_weixin_describe.name}}" data-validation-message="{{$data.common_app_mini_weixin_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_describe.value}}"{{/if}} />
</div>
</div>
</div>
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('extend_config_title')}}</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_privacy_content.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_privacy_content.describe}}</span></label>
<textarea rows="4" name="{{$data.common_app_mini_weixin_privacy_content.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_weixin_privacy_content.name}}" data-validation-message="{{$data.common_app_mini_weixin_privacy_content.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_weixin_privacy_content.value}}{{/if}}</textarea>
</div>
</div>
</div>
{{/case}}
{{case alipay}}
<!-- 支付宝 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('base_config_title')}}</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_appid.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_appid.only_tag}}" placeholder="{{$data.common_app_mini_alipay_appid.name}}" data-validation-message="{{$data.common_app_mini_alipay_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_rsa_public.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_rsa_public.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_rsa_public.name}}" data-validation-message="{{$data.common_app_mini_alipay_rsa_public.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_rsa_public.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_rsa_private.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_rsa_private.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_rsa_private.name}}" data-validation-message="{{$data.common_app_mini_alipay_rsa_private.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_rsa_private.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_out_rsa_public.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_out_rsa_public.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_out_rsa_public.name}}" data-validation-message="{{$data.common_app_mini_alipay_out_rsa_public.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_out_rsa_public.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_title.only_tag}}" placeholder="{{$data.common_app_mini_alipay_title.name}}" data-validation-message="{{$data.common_app_mini_alipay_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_describe.only_tag}}" placeholder="{{$data.common_app_mini_alipay_describe.name}}" data-validation-message="{{$data.common_app_mini_alipay_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_describe.value}}"{{/if}} />
</div>
</div>
</div>
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<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>{{: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">
<label>{{$data.common_app_mini_alipay_tnt_inst_id.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_alipay_tnt_inst_id.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_alipay_tnt_inst_id.only_tag}}" placeholder="{{$data.common_app_mini_alipay_tnt_inst_id.name}}" data-validation-message="{{$data.common_app_mini_alipay_tnt_inst_id.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_tnt_inst_id.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_scene.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_alipay_scene.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_alipay_scene.only_tag}}" placeholder="{{$data.common_app_mini_alipay_scene.name}}" data-validation-message="{{$data.common_app_mini_alipay_scene.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_scene.value}}"{{/if}} />
</div>
</div>
</div>
{{/case}}
{{case baidu}}
<!-- 百度 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('base_config_title')}}</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appid.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appid.name}}" data-validation-message="{{$data.common_app_mini_baidu_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appkey.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appkey.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appkey.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appkey.name}}" data-validation-message="{{$data.common_app_mini_baidu_appkey.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appkey.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appsecret.name}}" data-validation-message="{{$data.common_app_mini_baidu_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_baidu_title.only_tag}}" placeholder="{{$data.common_app_mini_baidu_title.name}}" data-validation-message="{{$data.common_app_mini_baidu_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_baidu_describe.only_tag}}" placeholder="{{$data.common_app_mini_baidu_describe.name}}" data-validation-message="{{$data.common_app_mini_baidu_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_describe.value}}"{{/if}} />
</div>
</div>
</div>
{{/case}}
{{case toutiao}}
<!-- 头条 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('base_config_title')}}</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_appid.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_appid.name}}" data-validation-message="{{$data.common_app_mini_toutiao_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_appsecret.name}}" data-validation-message="{{$data.common_app_mini_toutiao_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_toutiao_title.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_title.name}}" data-validation-message="{{$data.common_app_mini_toutiao_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_toutiao_describe.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_describe.name}}" data-validation-message="{{$data.common_app_mini_toutiao_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_describe.value}}"{{/if}} />
</div>
</div>
</div>
{{/case}}
{{case qq}}
<!-- QQ -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('base_config_title')}}</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_appid.only_tag}}" placeholder="{{$data.common_app_mini_qq_appid.name}}" data-validation-message="{{$data.common_app_mini_qq_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_qq_appsecret.name}}" data-validation-message="{{$data.common_app_mini_qq_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_apptoken.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_apptoken.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_apptoken.only_tag}}" placeholder="{{$data.common_app_mini_qq_apptoken.name}}" data-validation-message="{{$data.common_app_mini_qq_apptoken.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_apptoken.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_qq_title.only_tag}}" placeholder="{{$data.common_app_mini_qq_title.name}}" data-validation-message="{{$data.common_app_mini_qq_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_qq_describe.only_tag}}" placeholder="{{$data.common_app_mini_qq_describe.name}}" data-validation-message="{{$data.common_app_mini_qq_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_describe.value}}"{{/if}} />
</div>
</div>
</div>
{{/case}}
{{case kuaishou}}
<!-- 头条 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('base_config_title')}}</h3>
</div>
<div class="am-panel-bd">
<div class="am-form-group">
<label>{{$data.common_app_mini_kuaishou_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_kuaishou_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_kuaishou_appid.only_tag}}" placeholder="{{$data.common_app_mini_kuaishou_appid.name}}" data-validation-message="{{$data.common_app_mini_kuaishou_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_kuaishou_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_kuaishou_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_kuaishou_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_kuaishou_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_kuaishou_appsecret.name}}" data-validation-message="{{$data.common_app_mini_kuaishou_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_kuaishou_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_kuaishou_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_kuaishou_title.only_tag}}" placeholder="{{$data.common_app_mini_kuaishou_title.name}}" data-validation-message="{{$data.common_app_mini_kuaishou_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_kuaishou_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_kuaishou_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_kuaishou_describe.only_tag}}" placeholder="{{$data.common_app_mini_kuaishou_describe.name}}" data-validation-message="{{$data.common_app_mini_kuaishou_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_kuaishou_describe.value}}"{{/if}} />
</div>
</div>
</div>
{{/case}}
{{default /}}
<div class="table-no"><i class="am-icon-warning"></i> {{$nav_type}}{{:MyLang('no_config_data_tips')}}</div>
{{/switch}}
<div class="am-form-popup-submit">
<!-- form start -->
<form class="am-form form-validation am-form-popup-sticky" action="{{:MyUrl('admin/appmini/save', ['nav_type'=>$nav_type])}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appmini/config', ['nav_type'=>$nav_type])}}">
{{switch $nav_type}}
{{case weixin}}
<!-- 微信 -->
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_appid.only_tag}}" placeholder="{{$data.common_app_mini_weixin_appid.name}}" data-validation-message="{{$data.common_app_mini_weixin_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_weixin_appsecret.name}}" data-validation-message="{{$data.common_app_mini_weixin_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_weixin_title.only_tag}}" placeholder="{{$data.common_app_mini_weixin_title.name}}" data-validation-message="{{$data.common_app_mini_weixin_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_weixin_describe.only_tag}}" placeholder="{{$data.common_app_mini_weixin_describe.name}}" data-validation-message="{{$data.common_app_mini_weixin_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_describe.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_share_original_id.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_share_original_id.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_weixin_share_original_id.only_tag}}" placeholder="{{$data.common_app_mini_weixin_share_original_id.name}}" data-validation-message="{{$data.common_app_mini_weixin_share_original_id.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_weixin_share_original_id.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label class="am-block">{{$data.common_app_mini_weixin_upload_shipping_status.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_upload_shipping_status.describe}}</span></label>
<div class="am-radio-group">
{{foreach $common_close_open_list as $v}}
<label class="am-radio-inline">
<input type="radio" value="{{$v.value}}" name="{{$data.common_app_mini_weixin_upload_shipping_status.only_tag}}" data-validation-message="{{$data.common_app_mini_weixin_upload_shipping_status.error_tips}}" required {{if isset($data['common_app_mini_weixin_upload_shipping_status']['value']) and $data['common_app_mini_weixin_upload_shipping_status']['value'] eq $v['value']}}checked{{/if}} data-am-ucheck>{{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_weixin_privacy_content.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_weixin_privacy_content.describe}}</span></label>
<textarea rows="4" name="{{$data.common_app_mini_weixin_privacy_content.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_weixin_privacy_content.name}}" data-validation-message="{{$data.common_app_mini_weixin_privacy_content.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_weixin_privacy_content.value}}{{/if}}</textarea>
</div>
{{/case}}
{{case alipay}}
{{:ModuleInclude('public/nav_switch_btn', [
'nav_data' => [
[
'name' => MyLang('base_config_title'),
'key' => 'base-confit-title',
],
[
'name' => MyLang('appmini.form_alipay_extend_title'),
'key' => 'form-alipay-extend',
]
]
])}}
<!-- 支付宝 -->
<div class="nav-content">
<div class="item am-active" data-key="base-confit-title">
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_appid.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_appid.only_tag}}" placeholder="{{$data.common_app_mini_alipay_appid.name}}" data-validation-message="{{$data.common_app_mini_alipay_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_rsa_public.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_rsa_public.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_rsa_public.name}}" data-validation-message="{{$data.common_app_mini_alipay_rsa_public.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_rsa_public.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_rsa_private.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_rsa_private.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_rsa_private.name}}" data-validation-message="{{$data.common_app_mini_alipay_rsa_private.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_rsa_private.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_out_rsa_public.name}}</label>
<textarea rows="3" name="{{$data.common_app_mini_alipay_out_rsa_public.only_tag}}" class="am-radius" placeholder="{{$data.common_app_mini_alipay_out_rsa_public.name}}" data-validation-message="{{$data.common_app_mini_alipay_out_rsa_public.error_tips}}">{{if !empty($data)}}{{$data.common_app_mini_alipay_out_rsa_public.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_title.only_tag}}" placeholder="{{$data.common_app_mini_alipay_title.name}}" data-validation-message="{{$data.common_app_mini_alipay_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_alipay_describe.only_tag}}" placeholder="{{$data.common_app_mini_alipay_describe.name}}" data-validation-message="{{$data.common_app_mini_alipay_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_describe.value}}"{{/if}} />
</div>
</div>
<div class="item" data-key="form-alipay-extend">
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_tnt_inst_id.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_alipay_tnt_inst_id.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_alipay_tnt_inst_id.only_tag}}" placeholder="{{$data.common_app_mini_alipay_tnt_inst_id.name}}" data-validation-message="{{$data.common_app_mini_alipay_tnt_inst_id.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_tnt_inst_id.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_alipay_scene.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_alipay_scene.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_alipay_scene.only_tag}}" placeholder="{{$data.common_app_mini_alipay_scene.name}}" data-validation-message="{{$data.common_app_mini_alipay_scene.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_alipay_scene.value}}"{{/if}} />
</div>
<!-- tips -->
<div class="am-form-group">
<div class="am-tips-card">
<p>
<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>
</div>
</div>
{{/case}}
{{case baidu}}
<!-- 百度 -->
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appid.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appid.name}}" data-validation-message="{{$data.common_app_mini_baidu_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appkey.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appkey.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appkey.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appkey.name}}" data-validation-message="{{$data.common_app_mini_baidu_appkey.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appkey.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_baidu_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_baidu_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_baidu_appsecret.name}}" data-validation-message="{{$data.common_app_mini_baidu_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_baidu_title.only_tag}}" placeholder="{{$data.common_app_mini_baidu_title.name}}" data-validation-message="{{$data.common_app_mini_baidu_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_baidu_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_baidu_describe.only_tag}}" placeholder="{{$data.common_app_mini_baidu_describe.name}}" data-validation-message="{{$data.common_app_mini_baidu_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_baidu_describe.value}}"{{/if}} />
</div>
{{/case}}
{{case toutiao}}
<!-- 头条 -->
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_appid.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_appid.name}}" data-validation-message="{{$data.common_app_mini_toutiao_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_appsecret.name}}" data-validation-message="{{$data.common_app_mini_toutiao_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_toutiao_title.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_title.name}}" data-validation-message="{{$data.common_app_mini_toutiao_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_toutiao_describe.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_describe.name}}" data-validation-message="{{$data.common_app_mini_toutiao_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_describe.value}}"{{/if}} />
</div>
{{/case}}
{{case qq}}
<!-- QQ -->
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_appid.only_tag}}" placeholder="{{$data.common_app_mini_qq_appid.name}}" data-validation-message="{{$data.common_app_mini_qq_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_qq_appsecret.name}}" data-validation-message="{{$data.common_app_mini_qq_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_apptoken.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_qq_apptoken.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_qq_apptoken.only_tag}}" placeholder="{{$data.common_app_mini_qq_apptoken.name}}" data-validation-message="{{$data.common_app_mini_qq_apptoken.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_apptoken.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_qq_title.only_tag}}" placeholder="{{$data.common_app_mini_qq_title.name}}" data-validation-message="{{$data.common_app_mini_qq_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_qq_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_qq_describe.only_tag}}" placeholder="{{$data.common_app_mini_qq_describe.name}}" data-validation-message="{{$data.common_app_mini_qq_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_qq_describe.value}}"{{/if}} />
</div>
{{/case}}
{{case kuaishou}}
<!-- 头条 -->
<div class="am-form-group">
<label>{{$data.common_app_mini_kuaishou_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_kuaishou_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_kuaishou_appid.only_tag}}" placeholder="{{$data.common_app_mini_kuaishou_appid.name}}" data-validation-message="{{$data.common_app_mini_kuaishou_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_kuaishou_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_kuaishou_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_kuaishou_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_kuaishou_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_kuaishou_appsecret.name}}" data-validation-message="{{$data.common_app_mini_kuaishou_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_kuaishou_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_kuaishou_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_kuaishou_title.only_tag}}" placeholder="{{$data.common_app_mini_kuaishou_title.name}}" data-validation-message="{{$data.common_app_mini_kuaishou_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_kuaishou_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_kuaishou_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_kuaishou_describe.only_tag}}" placeholder="{{$data.common_app_mini_kuaishou_describe.name}}" data-validation-message="{{$data.common_app_mini_kuaishou_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_kuaishou_describe.value}}"{{/if}} />
</div>
{{/case}}
{{default /}}
<div class="table-no"><i class="am-icon-warning"></i> {{$nav_type}}{{:MyLang('no_config_data_tips')}}</div>
{{/switch}}
<div class="am-form-popup-submit">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</form>
<!-- form end -->
</div>
</div>
@ -241,4 +226,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -2,14 +2,7 @@
<!-- right content start -->
<div class="content-right">
<!-- second nav start -->
{{include file="appmini/nav" /}}
<!-- second nav end -->
<div class="content">
<!-- 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}}">
@ -60,4 +53,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,9 +0,0 @@
{{if !empty($common_appmini_type) and is_array($common_appmini_type)}}
<ul class="am-nav am-nav-pills table-nav second-nav">
{{foreach $common_appmini_type as $nav}}
<li {{if isset($nav_type) and $nav_type eq $nav['value']}}class="am-active"{{/if}} data-type="{{$nav.value}}">
<a href="{{:MyUrl('admin/appmini/'.$action_name, ['nav_type'=>$nav['value'], 'view_type'=>$view_type])}}">{{$nav.name}}</a>
</li>
{{/foreach}}
</ul>
{{/if}}

View File

@ -33,4 +33,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -3,13 +3,32 @@
<!-- 重写数据模块 -->
{{block name="detail_data"}}
<!-- 父级内容 -->
{__block__}
{{:ModuleInclude('public/detail_nav_switch_tabs', [
'nav_data' => [
[
'name' => MyLang('form_base_data_title'),
'key' => 'base',
],
[
'name' => MyLang('article.detail_content_title'),
'key' => 'detail-content',
],
[
'name' => MyLang('article.detail_images_title'),
'key' => 'detail-images',
],
[
'name' => MyLang('form_seo_data_title'),
'key' => 'seo-data',
]
]
])}}
<div class="detail-content-switch-data-item">
<!-- 父级内容 -->
{__block__}
<!-- 详情内容 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{:MyLang('article.detail_content_title')}}</div>
<div class="am-panel-bd">
<!-- 详情内容 -->
<div class="item am-padding-sm" data-key="detail-content">
{{if !empty($data['content'])}}
<div class="am-scrollable-vertical am-nowrap-initial">
{{$data.content|raw}}
@ -18,12 +37,9 @@
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
<!-- 详情图片 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{:MyLang('article.detail_images_title')}}</div>
<div class="am-panel-bd">
<!-- 详情图片 -->
<div class="item am-padding-sm" data-key="detail-images">
{{if !empty($data['images'])}}
<div data-am-widget="slider" class="am-slider am-slider-default" data-am-slider='{"controlNav":false}'>
<ul class="am-slides">
@ -47,8 +63,11 @@
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
<!-- SEO信息 -->
{{include file="lib/seo_data" /}}
<!-- SEO信息 -->
<div class="item am-padding-sm" data-key="seo-data">
{{include file="lib/seo_data" /}}
</div>
</div>
{{/block}}

View File

@ -3,7 +3,10 @@
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/article/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> {{:MyLang('add_title')}}</a>
<a href="{{:MyUrl('admin/article/saveinfo')}}" class="am-btn am-btn-primary am-radius am-btn-xs">
<i class="iconfont icon-btn-add am-show-sm-only"></i>
<span class="am-hide-sm-only">{{:MyLang('add_title')}}</span>
</a>
<!-- 父级内容 -->
{__block__}
{{/block}}

View File

@ -1,5 +1,5 @@
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/article/detail', ['id'=>$module_data['id']])}}">
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/article/detail', ['id'=>$module_data['id']])}}" data-title="{{:MyLang('detail_title')}}">
<i class="am-icon-eye"></i>
<span>{{:MyLang('detail_title')}}</span>
</button>

View File

@ -3,105 +3,80 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation 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">{{: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>{{:MyLang('common_service.article.form_item_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<!-- nav start -->
{{:ModuleInclude('public/admin_nav', [
'title' => MyLang('article.base_nav_title').(empty($data['id']) ? MyLang('created_title') : MyLang('edit_title')),
'back_url' => MyUrl('admin/article/index', $params)
])}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-sticky" action="{{:MyUrl('admin/article/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/article/index', $params)}}">
<div class="am-form-group">
<label>{{:MyLang('common_service.article.form_item_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-flex am-flex-items-center am-gap-1">
<input type="text" name="title" placeholder="{{:MyLang('common_service.article.form_item_title_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('common_service.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 />
<div class="colorpicker-container colorpicker-simple">
<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="{{:MyLang('common_service.article.form_item_title_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('common_service.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" />
</button>
</span>
</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.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}}
</select>
</div>
</div>
</div>
<div class="colorpicker-submit" data-color="{{if !empty($data['title_color'])}}{{$data.title_color}}{{/if}}" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']"></div>
<img class="imitate-colorpicker-submit" src="{{$attachment_host}}/static/common/images/colorpicker.png" width="24" height="24" />
</div>
</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.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}}
</select>
</div>
<div class="am-cf">
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.article.form_item_jump_url_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<input type="url" name="jump_url" placeholder="{{:MyLang('common_service.article.form_item_jump_url_title')}}" data-validation-message="{{:MyLang('common_service.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">
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
{{include file="lib/is_enable" /}}
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.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>
</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.article.form_item_jump_url_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<input type="url" name="jump_url" placeholder="{{:MyLang('common_service.article.form_item_jump_url_title')}}" data-validation-message="{{:MyLang('common_service.article.form_item_jump_url_message')}}" class="am-radius" {{if !empty($data['jump_url'])}} value="{{$data.jump_url}}"{{/if}} />
</div>
{{include file="lib/is_enable" /}}
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.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 class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.article.form_item_content_message')}}" {{else /}} placeholder="{{:MyLang('common_service.article.form_item_content_placeholder')}}" {{/if}} data-validation-message="{{:MyLang('common_service.article.form_item_content_message')}}" required>{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.article.form_item_content_message')}}" {{else /}} placeholder="{{:MyLang('common_service.article.form_item_content_placeholder')}}" {{/if}} data-validation-message="{{:MyLang('common_service.article.form_item_content_message')}}" required>{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
</div>
<!-- 插件扩展数据 start -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<!-- 插件扩展数据 start -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="plugins-tag">
<span>plugins_view_admin_article_save</span>
</div>
{{/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">{{: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)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
</div>
</div>
{{/if}}
<!-- 插件扩展数据 end -->
<div class="am-panel am-panel-default am-radius am-margin-horizontal-xs am-margin-top">
<div class="am-panel-bd">
{{include file="lib/seo" /}}
{{if !empty($plugins_view_admin_article_save_data) and is_array($plugins_view_admin_article_save_data)}}
<div class="card-grey am-margin-bottom-lg">
<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)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
</div>
</div>
</div>
{{/if}}
<!-- 插件扩展数据 end -->
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<a href="{{:MyUrl('admin/article/index', $params)}}" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg">
<i class="am-icon-mail-reply"></i>
<span>{{:MyLang('retreat_title')}}</span>
</a>
{{include file="lib/seo" /}}
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</div>
</form>
<!-- form end -->
</div>
</div>
@ -109,4 +84,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -3,66 +3,59 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- operation start -->
<div class="am-g">
<button class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus tree-submit-add" data-am-modal="{target: '#data-save-win'}"> {{:MyLang('add_title')}}</button>
</div>
<!-- operation end -->
<!-- save win start -->
<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="{{: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>{{:MyLang('common_service.articlecategory.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="{{:MyLang('common_service.articlecategory.form_item_name_message')}}" name="name" minlength="1" maxlength="60" data-validation-message="{{:MyLang('common_service.articlecategory.form_item_name_message')}}" class="am-radius" required />
</div>
{{include file="lib/sort" /}}
{{include file="lib/is_enable" /}}
<div class="am-form-popup-submit">
<input type="hidden" name="id" />
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs btn-loading-example am-margin-right-lg" data-am-modal-close>
<i class="am-icon-paint-brush"></i>
<span>{{:MyLang('cancel_title')}}</span>
</button>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
<!-- form end -->
</div>
</div>
</div>
<!-- save win end -->
<div class="am-popup-inner">
<div class="am-popup-hd">
<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="CardFormSaveBack">
<div class="am-form-group row">
<label>{{:MyLang('common_service.articlecategory.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="{{:MyLang('common_service.articlecategory.form_item_name_message')}}" name="name" minlength="1" maxlength="60" data-validation-message="{{:MyLang('common_service.articlecategory.form_item_name_message')}}" class="am-radius" required />
</div>
{{include file="lib/sort_row" /}}
{{include file="lib/is_enable_row" /}}
<div class="am-form-popup-submit">
<input type="hidden" name="id" />
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs btn-loading-example am-margin-right-lg" data-am-modal-close>
<i class="am-icon-paint-brush"></i>
<span>{{:MyLang('cancel_title')}}</span>
</button>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
<!-- form end -->
</div>
</div>
</div>
<!-- save win end -->
<!-- list start -->
<div id="tree" class="am-margin-top-sm" data-node-url="{{:MyUrl('admin/articlecategory/getnodeson')}}" data-del-url="{{:MyUrl('admin/articlecategory/delete')}}" data-popup-tag="#data-save-win">
{{include file="public/loading" /}}
</div>
<!-- list end -->
<div id="card" data-node-url="{{:MyUrl('admin/articlecategory/getnodeson')}}" data-del-url="{{:MyUrl('admin/articlecategory/delete')}}" data-popup-tag="#data-save-win">
{{include file="public/loading" /}}
</div>
<!-- list end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
<script type="text/javascript">
// 初始化
Tree(0, $('#tree').data('node-url'), 0);
Card(0, $('#card').data('node-url'), 0);
// 回调处理
function TreeFormSaveBack(e)
function CardFormSaveBack(e)
{
TreeFormSaveBackHandle(e);
CardFormSaveBackHandle(e);
}
</script>

View File

@ -3,7 +3,10 @@
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/brand/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> {{:MyLang('add_title')}}</a>
<a href="{{:MyUrl('admin/brand/saveinfo')}}" class="am-btn am-btn-primary am-radius am-btn-xs">
<i class="iconfont icon-btn-add am-show-sm-only"></i>
<span class="am-hide-sm-only">{{:MyLang('add_title')}}</span>
</a>
<!-- 父级内容 -->
{__block__}
{{/block}}

View File

@ -1,6 +0,0 @@
<!-- logo -->
{{if !empty($module_data) and !empty($module_data['logo'])}}
<a href="{{$module_data['logo']}}" target="_blank">
<img src="{{$module_data.logo}}" alt="{{$module_data.name}}" class="am-radius" width="100" />
</a>
{{/if}}

View File

@ -1,5 +1,5 @@
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/brand/detail', ['id'=>$module_data['id']])}}">
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/brand/detail', ['id'=>$module_data['id']])}}" data-title="{{:MyLang('detail_title')}}">
<i class="am-icon-eye"></i>
<span>{{:MyLang('detail_title')}}</span>
</button>

View File

@ -3,112 +3,89 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation 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">{{: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>{{:MyLang('common_service.brand.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('common_service.brand.form_item_name_message')}}" minlength="1" maxlength="80" data-validation-message="{{:MyLang('common_service.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>{{:MyLang('common_service.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('common_service.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}}
</select>
</div>
</div>
</div>
<!-- nav start -->
{{:ModuleInclude('public/admin_nav', [
'title' => MyLang('brand.base_nav_title').(empty($data['id']) ? MyLang('created_title') : MyLang('edit_title')),
'back_url' => MyUrl('admin/brand/index', $params)
])}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-sticky" action="{{:MyUrl('admin/brand/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/brand/index', $params)}}" enctype="multipart/form-data">
<div class="am-form-group">
<label>{{:MyLang('common_service.brand.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('common_service.brand.form_item_name_message')}}" minlength="1" maxlength="80" data-validation-message="{{:MyLang('common_service.brand.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.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('common_service.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}}
</select>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.brand.form_item_website_url')}}</label>
<input type="url" placeholder="{{:MyLang('common_service.brand.form_item_website_url_placeholder')}}" name="website_url" data-validation-message="{{:MyLang('common_service.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>{{:MyLang('common_service.brand.form_item_describe')}}</label>
<textarea rows="1" name="describe" maxlength="230" class="am-radius" placeholder="{{:MyLang('common_service.brand.form_item_describe_message')}}" data-validation-message="{{:MyLang('common_service.brand.form_item_describe_message')}}">{{if !empty($data['describe'])}} {{$data.describe}}{{/if}}</textarea>
</div>
</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.brand.form_item_website_url')}}</label>
<input type="url" placeholder="{{:MyLang('common_service.brand.form_item_website_url_placeholder')}}" name="website_url" data-validation-message="{{:MyLang('common_service.brand.form_item_website_url_message')}}" class="am-radius" {{if !empty($data['website_url'])}} value="{{$data.website_url}}"{{/if}} />
</div>
<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">{{:MyLang('common_service.brand.form_item_logo')}}<span class="am-form-group-label-tips">{{:MyLang('common_service.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>
<input type="text" name="logo" value="{{$data.logo}}" />
<img src="{{$data.logo}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<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">
<div class="am-cf">
<div class="am-u-md-6 am-padding-horizontal-0">
{{include file="lib/sort" /}}
</div>
<div class="am-u-md-6 am-padding-horizontal-0">
{{include file="lib/is_enable" /}}
</div>
</div>
</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.brand.form_item_describe')}}</label>
<textarea rows="3" name="describe" maxlength="230" class="am-radius" placeholder="{{:MyLang('common_service.brand.form_item_describe_message')}}" data-validation-message="{{:MyLang('common_service.brand.form_item_describe_message')}}">{{if !empty($data['describe'])}} {{$data.describe}}{{/if}}</textarea>
</div>
<!-- 插件扩展数据 start -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="am-form-group am-form-file">
<label class="am-block">{{:MyLang('common_service.brand.form_item_logo')}}<span class="am-form-group-label-tips">{{:MyLang('common_service.brand.form_item_logo_tips')}}</span></label>
<div class="am-form-file-upload-container plug-file-upload-view-width-auto">
<ul class="plug-file-upload-view brand-logo-images-view" data-form-name="logo" data-max-number="1" data-dialog-type="images" data-is-eye="1">
<li class="plug-file-upload-submit" data-view-tag="ul.brand-logo-images-view">
{{if empty($data['logo'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="logo" value="{{$data.logo}}" />
<img src="{{$data.logo}}" />
<i>×</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
</ul>
</div>
</div>
{{include file="lib/sort" /}}
{{include file="lib/is_enable" /}}
<!-- 插件扩展数据 start -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="plugins-tag">
<span>plugins_view_admin_brand_save</span>
</div>
{{/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">{{: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)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
</div>
</div>
{{/if}}
<!-- 插件扩展数据 end -->
{{if !empty($plugins_view_admin_brand_save_data) and is_array($plugins_view_admin_brand_save_data)}}
<div class="card-grey">
<label class="am-text-sm">{{: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)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
</div>
</div>
{{/if}}
<!-- 插件扩展数据 end -->
<div class="am-panel am-panel-default am-radius am-margin-horizontal-xs am-margin-top">
<div class="am-panel-bd">
{{include file="lib/seo" /}}
</div>
</div>
{{include file="lib/seo" /}}
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<a href="{{:MyUrl('admin/brand/index', $params)}}" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg">
<i class="am-icon-mail-reply"></i>
<span>{{:MyLang('retreat_title')}}</span>
</a>
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</div>
</form>
<!-- form end -->
</div>
</div>
@ -116,4 +93,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -3,77 +3,69 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- operation start -->
<div class="am-g">
<button class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus tree-submit-add" data-am-modal="{target: '#data-save-win'}"> {{:MyLang('add_title')}}</button>
</div>
<!-- operation end -->
<!-- save win start -->
<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="{{: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 am-form-file">
<label class="am-block">{{:MyLang('common_service.brandcategory.form_item_icon')}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.brandcategory.form_item_icon_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<ul class="plug-file-upload-view brand-category-icon-images-view" data-form-name="icon" data-max-number="1" data-dialog-type="images">
<li>
<input type="hidden" name="icon" value="" />
<img src="{{$attachment_host}}/static/common/images/default-images.jpg" />
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.brand-category-icon-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.brandcategory.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="{{:MyLang('common_service.brandcategory.form_item_name_message')}}" name="name" minlength="1" maxlength="60" data-validation-message="{{:MyLang('common_service.brandcategory.form_item_name_message')}}" class="am-radius" required />
</div>
{{include file="lib/sort" /}}
{{include file="lib/is_enable" /}}
<div class="am-form-popup-submit">
<input type="hidden" name="id" />
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs btn-loading-example am-margin-right-lg" data-am-modal-close>
<i class="am-icon-paint-brush"></i>
<span>{{:MyLang('cancel_title')}}</span>
</button>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
<!-- form end -->
</div>
</div>
</div>
<!-- save win end -->
<div class="am-popup-inner">
<div class="am-popup-hd">
<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="CardFormSaveBack">
<div class="am-form-group row am-form-file">
<label class="am-block">{{:MyLang('common_service.brandcategory.form_item_icon')}}<a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.brandcategory.form_item_icon_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<div class="am-form-file-upload-container">
<ul class="plug-file-upload-view brand-category-icon-images-view" data-form-name="icon" data-max-number="1" data-dialog-type="images">
<li class="plug-file-upload-submit" data-view-tag="ul.brand-category-icon-images-view">
<i class="iconfont icon-upload-add"></i>
</li>
</ul>
</div>
</div>
<div class="am-form-group row">
<label>{{:MyLang('common_service.brandcategory.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="{{:MyLang('common_service.brandcategory.form_item_name_message')}}" name="name" minlength="1" maxlength="60" data-validation-message="{{:MyLang('common_service.brandcategory.form_item_name_message')}}" class="am-radius" required />
</div>
{{include file="lib/sort_row" /}}
{{include file="lib/is_enable_row" /}}
<div class="am-form-popup-submit">
<input type="hidden" name="id" />
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs btn-loading-example am-margin-right-lg" data-am-modal-close>
<i class="am-icon-paint-brush"></i>
<span>{{:MyLang('cancel_title')}}</span>
</button>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
<!-- form end -->
</div>
</div>
</div>
<!-- save win end -->
<!-- list start -->
<div id="tree" class="am-margin-top-sm" data-additional='[{"field":"icon", "value":"", "type":"input"}, {"field":"icon", "value":"{{$attachment_host}}/static/common/images/default-images.jpg", "type":"attr", "tag":"ul.brand-category-icon-images-view li img", "style":"src"}]' data-node-url="{{:MyUrl('admin/brandcategory/getnodeson')}}" data-del-url="{{:MyUrl('admin/brandcategory/delete')}}" data-popup-tag="#data-save-win">
{{include file="public/loading" /}}
</div>
<!-- list end -->
<div id="card" data-prefix='{"field":"icon","type":"img"}' data-suffix="" data-additional='[{"field":"icon", "value":"", "type":"input"}, {"field":"icon", "value":"", "type":"annex", "tag":"ul.brand-category-icon-images-view", "style":"src"}]' data-node-url="{{:MyUrl('admin/brandcategory/getnodeson')}}" data-del-url="{{:MyUrl('admin/brandcategory/delete')}}" data-popup-tag="#data-save-win">
{{include file="public/loading" /}}
</div>
<!-- list end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
<script type="text/javascript">
// 初始化
Tree(0, $('#tree').data('node-url'), 0);
Card(0, $('#card').data('node-url'), 0);
// 回调处理
function TreeFormSaveBack(e)
function CardFormSaveBack(e)
{
TreeFormSaveBackHandle(e);
CardFormSaveBackHandle(e);
}
</script>

View File

@ -3,23 +3,21 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- cache list start -->
{{foreach $cache_type_list as $v}}
{{if $v['is_enable'] eq 1}}
<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">{{:MyLang('update_title')}}</button>
</a>
<div class="am-panel-bd">{{$v.desc}}</div>
</div>
{{/if}}
{{/foreach}}
<!-- cache list end -->
<!-- cache list start -->
{{foreach $cache_type_list as $v}}
{{if $v['is_enable'] eq 1}}
<div class="cache-item am-flex am-flex-col am-gap-12 am-border-bottom-f8 am-margin-bottom-xl am-padding-bottom">
<label>{{$v.name}}<span class="am-form-group-label-tips">{{$v.desc}}</span></label>
<div>
<button type="button" class="am-btn am-btn-primary am-radius am-btn-xs cache-submit submit-ajax" data-url="{{$v.url}}" data-is-confirm="0">{{:MyLang('update_title')}}</button>
</div>
</div>
{{/if}}
{{/foreach}}
<!-- cache list end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -3,14 +3,56 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/config/save', ['view_type'=>$view_type])}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/config/index')}}">
<!-- 基础配置 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('base_config_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<!-- form start -->
<form class="am-form form-validation am-form-popup-sticky" action="{{:MyUrl('admin/config/save', ['view_type'=>$view_type])}}" method="POST" request-type="ajax-view" request-value="{{:MyUrl('admin/config/index')}}">
{{:ModuleInclude('public/nav_switch_btn', [
'nav_data' => [
[
'name' => MyLang('base_config_title'),
'key' => 'base-config-title',
],
[
'name' => MyLang('config.admin_login_title'),
'key' => 'admin-login',
],
[
'name' => MyLang('goods_title'),
'key' => 'goods',
],
[
'name' => MyLang('map_title'),
'key' => 'map',
],
[
'name' => MyLang('extend_title'),
'key' => 'extend',
],
[
'name' => MyLang('safety_title'),
'key' => 'safety',
]
]
])}}
<div class="nav-content">
<!-- 基础配置 -->
<div class="item am-active" data-key="base-config-title">
<div class="am-form-group">
<label class="am-block">{{$data.admin_logo.name}}<span class="am-form-group-label-tips">{{$data.admin_logo.describe}}</span></label>
<div class="am-form-file-upload-container plug-file-upload-view-width-auto">
<ul class="plug-file-upload-view admin_logo-images-view" data-form-name="admin_logo" data-max-number="1" data-dialog-type="images" data-is-eye="1">
<li class="plug-file-upload-submit" data-view-tag="ul.admin_logo-images-view">
{{if empty($data['admin_logo']['value'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="admin_logo" value="{{$data.admin_logo.value}}" />
<img src="{{:AttachmentPathViewHandle($data.admin_logo.value)}}" />
<i>x</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
</ul>
</div>
</div>
<div class="am-form-group">
<label>{{$data.admin_excel_charset.name}}<span class="am-form-group-label-tips">{{$data.admin_excel_charset.describe}}</span></label>
<select name="{{$data.admin_excel_charset.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.admin_excel_charset.error_tips}}" required>
@ -36,14 +78,43 @@
<textarea rows="4" name="{{$data.admin_notice.only_tag}}" class="am-radius" placeholder="{{$data.admin_notice.name}}" data-validation-message="{{$data.admin_notice.error_tips}}">{{if !empty($data)}}{{$data.admin_notice.value}}{{/if}}</textarea>
</div>
</div>
</div>
<!-- 后台登录 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('config.admin_login_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<!-- 后台登录 -->
<div class="item" data-key="admin-login">
<div class="am-form-group">
<label class="am-block">{{$data.admin_login_logo.name}}<span class="am-form-group-label-tips">{{$data.admin_login_logo.describe}}</span></label>
<div class="am-form-file-upload-container plug-file-upload-view-width-auto">
<ul class="plug-file-upload-view admin_login_logo-images-view" data-form-name="admin_login_logo" data-max-number="1" data-dialog-type="images" data-is-eye="1">
<li class="plug-file-upload-submit" data-view-tag="ul.admin_login_logo-images-view">
{{if empty($data['admin_login_logo']['value'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="admin_login_logo" value="{{$data.admin_login_logo.value}}" />
<img src="{{:AttachmentPathViewHandle($data.admin_login_logo.value)}}" />
<i>x</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
</ul>
</div>
</div>
<div class="am-form-group">
<label class="am-block">{{$data.admin_login_ad_images.name}}<span class="am-form-group-label-tips">{{$data.admin_login_ad_images.describe}}</span></label>
<div class="am-form-file-upload-container plug-file-upload-view-width-auto">
<ul class="plug-file-upload-view admin_login_ad_images-images-view" data-form-name="admin_login_ad_images" data-max-number="1" data-dialog-type="images" data-is-eye="1">
<li class="plug-file-upload-submit" data-view-tag="ul.admin_login_ad_images-images-view">
{{if empty($data['admin_login_ad_images']['value'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="admin_login_ad_images" value="{{$data.admin_login_ad_images.value}}" />
<img src="{{:AttachmentPathViewHandle($data.admin_login_ad_images.value)}}" />
<i>x</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
</ul>
</div>
</div>
<div class="am-form-group">
<label>{{$data.admin_login_info_bg_images_rand.name}}<span class="am-form-group-label-tips">{{$data.admin_login_info_bg_images_rand.describe}}</span></label>
<select name="{{$data.admin_login_info_bg_images_rand.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.admin_login_info_bg_images_rand.error_tips}}" required>
@ -52,7 +123,7 @@
{{/foreach}}
</select>
{{if is_array(MyLang('config.admin_login_info_bg_images_list_tips'))}}
<div class="am-alert am-alert-warning">
<div class="am-tips-card">
<p>{{:implode('</p><p>', MyLang('config.admin_login_info_bg_images_list_tips'))}}</p>
</div>
{{/if}}
@ -74,29 +145,19 @@
</select>
</div>
</div>
</div>
<!-- 商品 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('goods_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<!-- 商品 -->
<div class="item" data-key="goods">
<div class="am-form-group">
<label>{{$data.common_spec_add_max_number.name}}<span class="am-form-group-label-tips">{{$data.common_spec_add_max_number.describe}}</span></label>
<input type="number" name="{{$data.common_spec_add_max_number.only_tag}}" placeholder="{{$data.common_spec_add_max_number.describe}}" data-validation-message="{{$data.common_spec_add_max_number.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_spec_add_max_number.value}}"{{/if}} />
</div>
</div>
</div>
<!-- 地图 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('map_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<!-- 地图 -->
<div class="item" data-key="map">
<div class="am-form-group">
<label>{{$data.common_map_type.name}}<span class="am-form-group-label-tips">{{$data.common_map_type.describe}}</span><a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:MyLang('config.map_type_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<label>{{$data.common_map_type.name}}<span class="am-form-group-label-tips">{{$data.common_map_type.describe}}</span><a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:MyLang('config.map_type_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<select name="{{$data.common_map_type.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_map_type.error_tips}}" required>
{{foreach :MyConst('common_map_type_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['common_map_type']['value']) and $data['common_map_type']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
@ -110,9 +171,7 @@
<div class="am-form-group">
<label>{{$data.common_baidu_map_ak_server.name}}<span class="am-form-group-label-tips">{{$data.common_baidu_map_ak_server.describe}}</span></label>
<input type="text" name="{{$data.common_baidu_map_ak_server.only_tag}}" placeholder="{{$data.common_baidu_map_ak_server.describe}}" data-validation-message="{{$data.common_baidu_map_ak_server.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_baidu_map_ak_server.value}}"{{/if}} />
</div>
<div class="business-form-group am-padding-top-0">
<div class="am-alert am-alert-warning am-margin-top-0">
<div class="am-tips-card">
{{: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('view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}
</div>
</div>
@ -125,9 +184,7 @@
<div class="am-form-group">
<label>{{$data.common_amap_map_ak_server.name}}<span class="am-form-group-label-tips">{{$data.common_amap_map_ak_server.describe}}</span></label>
<input type="text" name="{{$data.common_amap_map_ak_server.only_tag}}" placeholder="{{$data.common_amap_map_ak_server.describe}}" data-validation-message="{{$data.common_amap_map_ak_server.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_amap_map_ak_server.value}}"{{/if}} />
</div>
<div class="business-form-group am-padding-top-0">
<div class="am-alert am-alert-warning am-margin-top-0">
<div class="am-tips-card">
{{: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('view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}
</div>
</div>
@ -139,9 +196,7 @@
<div class="am-form-group">
<label>{{$data.common_tencent_map_ak_server.name}}<span class="am-form-group-label-tips">{{$data.common_tencent_map_ak_server.describe}}</span></label>
<input type="text" name="{{$data.common_tencent_map_ak_server.only_tag}}" placeholder="{{$data.common_tencent_map_ak_server.describe}}" data-validation-message="{{$data.common_tencent_map_ak_server.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_tencent_map_ak_server.value}}"{{/if}} />
</div>
<div class="business-form-group am-padding-top-0">
<div class="am-alert am-alert-warning am-margin-top-0">
<div class="am-tips-card">
{{: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('view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}
</div>
</div>
@ -153,21 +208,14 @@
<div class="am-form-group">
<label>{{$data.common_tianditu_map_ak_server.name}}<span class="am-form-group-label-tips">{{$data.common_tianditu_map_ak_server.describe}}</span></label>
<input type="text" name="{{$data.common_tianditu_map_ak_server.only_tag}}" placeholder="{{$data.common_tianditu_map_ak_server.describe}}" data-validation-message="{{$data.common_tianditu_map_ak_server.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_tianditu_map_ak_server.value}}"{{/if}} />
</div>
<div class="business-form-group am-padding-top-0">
<div class="am-alert am-alert-warning am-margin-top-0">
<div class="am-tips-card">
{{: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('view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}
</div>
</div>
</div>
</div>
<!-- 扩展 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('extend_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<!-- 扩展 -->
<div class="item" data-key="extend">
<div class="am-form-group">
<label>{{$data.common_is_https_connect_store.name}}<span class="am-form-group-label-tips">{{$data.common_is_https_connect_store.describe}}</span></label>
<select name="{{$data.common_is_https_connect_store.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_is_https_connect_store.error_tips}}" required>
@ -177,14 +225,9 @@
</select>
</div>
</div>
</div>
<!-- 安全 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('safety_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<!-- 安全 -->
<div class="item" data-key="safety">
<div class="am-form-group">
<label>{{$data.common_data_encryption_secret.name}}<span class="am-form-group-label-tips">{{$data.common_data_encryption_secret.describe}}</span></label>
<input type="text" name="{{$data.common_data_encryption_secret.only_tag}}" placeholder="{{$data.common_data_encryption_secret.describe}}" data-validation-message="{{$data.common_data_encryption_secret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_data_encryption_secret.value}}"{{/if}} />
@ -194,21 +237,20 @@
<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}} />
{{if is_array(MyLang('config.cookie_domain_list_tips'))}}
<div class="am-alert am-alert-warning">
<div class="am-tips-card">
<p>{{:implode('</p><p>', MyLang('config.cookie_domain_list_tips'))}}</p>
</div>
{{/if}}
</div>
</div>
</div>
<div class="am-form-popup-submit">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<div class="am-form-popup-submit">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</div>
</form>
<!-- form end -->
</div>
</div>
@ -216,4 +258,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -4,31 +4,37 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" 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}} />
</div>
<div class="am-form-group">
<label>{{$data.common_customer_store_email.name}}<span class="am-form-group-label-tips">{{$data.common_customer_store_email.describe}}</span></label>
<input type="email" name="{{$data.common_customer_store_email.only_tag}}" placeholder="{{$data.common_customer_store_email.name}}" data-validation-message="{{$data.common_customer_store_email.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_customer_store_email.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_customer_store_address.name}}<span class="am-form-group-label-tips">{{$data.common_customer_store_address.describe}}</span></label>
<input type="text" name="{{$data.common_customer_store_address.only_tag}}" placeholder="{{$data.common_customer_store_address.name}}" data-validation-message="{{$data.common_customer_store_address.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_customer_store_address.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label class="am-block">{{$data.common_customer_store_qrcode.name}}<span class="am-form-group-label-tips">{{$data.common_customer_store_qrcode.describe}}</span></label>
<ul class="plug-file-upload-view common_customer_store_qrcode-images-view" data-form-name="common_customer_store_qrcode" data-max-number="1" data-dialog-type="images">
{{if !empty($data['common_customer_store_qrcode']['value'])}}
<li>
<input type="text" name="common_customer_store_qrcode" value="{{$data.common_customer_store_qrcode.value}}" />
<img src="{{:AttachmentPathViewHandle($data.common_customer_store_qrcode.value)}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.common_customer_store_qrcode-images-view">+{{:MyLang('form_choice_images_title')}}</div>
<form class="am-form form-validation am-form-popup-sticky" action="{{:MyUrl('admin/config/save', ['view_type'=>$view_type])}}" method="POST" request-type="ajax-view" request-value="{{:MyUrl('admin/config/store')}}">
<div class="nav-content">
<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}} />
</div>
<div class="am-form-group">
<label>{{$data.common_customer_store_email.name}}<span class="am-form-group-label-tips">{{$data.common_customer_store_email.describe}}</span></label>
<input type="email" name="{{$data.common_customer_store_email.only_tag}}" placeholder="{{$data.common_customer_store_email.name}}" data-validation-message="{{$data.common_customer_store_email.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_customer_store_email.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_customer_store_address.name}}<span class="am-form-group-label-tips">{{$data.common_customer_store_address.describe}}</span></label>
<input type="text" name="{{$data.common_customer_store_address.only_tag}}" placeholder="{{$data.common_customer_store_address.name}}" data-validation-message="{{$data.common_customer_store_address.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_customer_store_address.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label class="am-block">{{$data.common_customer_store_qrcode.name}}<span class="am-form-group-label-tips">{{$data.common_customer_store_qrcode.describe}}</span></label>
<div class="am-form-file-upload-container">
<ul class="plug-file-upload-view common_customer_store_qrcode-images-view" data-form-name="common_customer_store_qrcode" data-max-number="1" data-dialog-type="images" data-is-eye="1">
<li class="plug-file-upload-submit" data-view-tag="ul.common_customer_store_qrcode-images-view">
{{if empty($data['common_customer_store_qrcode']['value'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="common_customer_store_qrcode" value="{{$data.common_customer_store_qrcode.value}}" />
<img src="{{:AttachmentPathViewHandle($data.common_customer_store_qrcode.value)}}" />
<i>x</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
</ul>
</div>
</div>
</div>
<div class="am-form-popup-submit">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
@ -44,4 +50,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -3,7 +3,10 @@
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/customview/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus" target="_blank"> {{:MyLang('add_title')}}</a>
<a href="{{:MyUrl('admin/customview/saveinfo')}}" class="am-btn am-btn-primary am-radius am-btn-xs" target="_blank">
<i class="iconfont icon-btn-add am-show-sm-only"></i>
<span class="am-hide-sm-only"></span>{{:MyLang('add_title')}}</span>
</a>
<!-- 父级内容 -->
{__block__}
{{/block}}

View File

@ -1,10 +1,12 @@
<!-- 基础信息 -->
{{if !empty($module_data)}}
<div class="am-nbfc">
<a href="{{:MyUrl('index/customview/index', ['id'=>$module_data['id']])}}" target="_blank" title="{{$module_data.name}}">
<img src="{{if empty($module_data['logo'])}}{{$attachment_host}}/static/common/images/default-images-mini.png{{else /}}{{$module_data.logo}}{{/if}}" class="am-img-thumbnail am-radius am-margin-right-sm am-fl" width="60" height="60" />
</a>
<a href="{{:MyUrl('index/customview/index', ['id'=>$module_data['id']])}}" target="_blank" title="{{$module_data.name}}">
{{if !empty($module_data['logo'])}}
<a href="{{:MyUrl('index/customview/index', ['id'=>$module_data['id']])}}" target="_blank">
<img src="{{$module_data.logo}}" class="am-img-thumbnail am-radius am-margin-right-sm am-fl" width="25" height="25" />
</a>
{{/if}}
<a href="{{:MyUrl('index/customview/index', ['id'=>$module_data['id']])}}" target="_blank">
<span class="am-nowrap-initial">{{$module_data.name}}</span>
</a>
</div>

View File

@ -13,16 +13,20 @@
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group am-form-file">
<label class="am-block">{{:MyLang('common_service.customview.form_logo_name')}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.customview.form_logo_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<ul class="plug-file-upload-view 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="{{:MyLang('form_upload_images_message')}}" />
<img src="{{$data.logo}}" />
<i>×</i>
<div class="am-form-file-upload-container">
<ul class="plug-file-upload-view logo-images-view" data-form-name="logo" data-max-number="1" data-dialog-type="images">
<li class="plug-file-upload-submit" data-view-tag="ul.logo-images-view">
{{if empty($data['logo'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="logo" value="{{$data.logo}}" />
<img src="{{:AttachmentPathViewHandle($data.logo)}}" />
<i>x</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.logo-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</ul>
</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.customview.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>

View File

@ -5,7 +5,7 @@
<img src="{{if empty($data['logo'])}}{{$attachment_host}}/static/common/images/default-images-mini.png{{else /}}{{$data.logo}}{{/if}}" class="am-img-thumbnail am-radius page-top-nav-logo" />
<span class="page-top-nav-title">
<span class="am-text-xs">{{if !empty($data['name'])}}{{$data.name}}{{/if}}</span>
<a href="javascript:;" class="am-icon-eyedropper am-text-xs am-margin-left-xs base-edit-submit"></a>
<a href="javascript:;" class="am-icon-edit am-text-xs am-margin-left-xs base-edit-submit"></a>
</span>
<div class="page-operate-container am-fr">
<button type="button" class="am-btn am-btn-warning am-btn-xs am-radius window-close-event" data-msg="{{:MyLang('save_close_page_confirm_tips')}}">
@ -35,7 +35,6 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
<script type="text/javascript">
// 基础数据保存回调处理
function FormBackSaveinfoEdit(e)

View File

@ -3,8 +3,14 @@
<!-- 表单顶部操作栏 -->
{{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'}"> {{: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>
<a href="{{:MyUrl('admin/design/saveinfo')}}" class="am-btn am-btn-primary am-radius am-btn-xs" target="_blank">
<i class="iconfont icon-btn-add am-show-sm-only"></i>
<span class="am-hide-sm-only">{{:MyLang('add_title')}}</span>
</a>
<button type="button" class="am-btn am-btn-default-plain am-btn-xs am-radius" data-am-modal="{target: '#popup-design-upload'}">
<i class="iconfont icon-import am-show-sm-only"></i>
<span class="am-hide-sm-only">{{:MyLang('import_title')}}</span>
</button>
<!-- 父级内容 -->
{__block__}
{{if $is_system_show_base eq 1 and !empty($store_design_url)}}
@ -23,17 +29,18 @@
</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">
{{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}}
<form class="am-form form-validation am-form-popup-fixed am-upload-file" action="{{:MyUrl('admin/design/upload')}}" method="POST" request-type="ajax-reload" enctype="multipart/form-data">
<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> {{:MyLang('form_choice_file_title')}}</button>
<button type="button" class="am-btn am-btn-default am-btn-sm am-radius"><i class="iconfont icon-upload-file"></i></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 class="tips am-text-xs cr-ccc am-margin-top-sm">
{{:MyLang('common_service.theme.form_item_upload_tips')}}
{{if is_array(MyLang('design.upload_list_tips'))}}
<p class="am-margin-top-xs">{{:implode('</p><p class="am-margin-top-xs">', MyLang('design.upload_list_tips'))}}</p>
{{/if}}
</div>
</div>
</div>
<div class="am-form-popup-submit">

View File

@ -1,10 +1,12 @@
<!-- 基础信息 -->
{{if !empty($module_data)}}
<div class="am-nbfc">
<a href="{{:MyUrl('index/design/index', ['id'=>$module_data['id']])}}" target="_blank" title="{{$module_data.name}}">
<img src="{{if empty($module_data['logo'])}}{{$attachment_host}}/static/common/images/default-images-mini.png{{else /}}{{$module_data.logo}}{{/if}}" class="am-img-thumbnail am-radius am-margin-right-sm am-fl" width="60" height="60" />
</a>
<a href="{{:MyUrl('index/design/index', ['id'=>$module_data['id']])}}" target="_blank" title="{{$module_data.name}}">
{{if !empty($module_data['logo'])}}
<a href="{{:MyUrl('index/design/index', ['id'=>$module_data['id']])}}" target="_blank">
<img src="{{$module_data.logo}}" class="am-img-thumbnail am-radius am-margin-right-sm am-fl" width="25" height="25" />
</a>
{{/if}}
<a href="{{:MyUrl('index/design/index', ['id'=>$module_data['id']])}}" target="_blank">
<span class="am-nowrap-initial">{{$module_data.name}}</span>
</a>
</div>

View File

@ -27,16 +27,20 @@
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group am-form-file">
<label class="am-block">{{:MyLang('common_service.design.form_logo_name')}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.design.form_logo_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<ul class="plug-file-upload-view 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="{{:MyLang('form_upload_images_message')}}" />
<img src="{{$data.logo}}" />
<i>×</i>
<div class="am-form-file-upload-container">
<ul class="plug-file-upload-view logo-images-view" data-form-name="logo" data-max-number="1" data-dialog-type="images">
<li class="plug-file-upload-submit" data-view-tag="ul.logo-images-view">
{{if empty($data['logo'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="logo" value="{{$data.logo}}" />
<img src="{{:AttachmentPathViewHandle($data.logo)}}" />
<i>x</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.logo-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</ul>
</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
@ -65,7 +69,7 @@
<i class="am-icon-paint-brush"></i>
<span>{{:MyLang('cancel_title')}}</span>
</button>
<button type="submit" class="am-btn am-btn-primary am-btn-xs am-radius btn-loading-example am-margin-left-lg" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">
<button type="submit" class="am-btn am-btn-primary am-btn-xs am-radius btn-loading-example" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">
<i class="am-icon-check"></i>
<span>{{:MyLang('confirm_title')}}</span>
</button>

View File

@ -5,7 +5,7 @@
<img src="{{if empty($data['logo'])}}{{$attachment_host}}/static/common/images/default-images-mini.png{{else /}}{{$data.logo}}{{/if}}" class="am-img-thumbnail am-radius page-top-nav-logo" />
<span class="page-top-nav-title">
<span class="am-text-xs">{{if !empty($data['name'])}}{{$data.name}}{{/if}}</span>
<a href="javascript:;" class="am-icon-eyedropper am-text-xs am-margin-left-xs" data-am-modal="{target: '#popup-saveinfo'}"></a>
<a href="javascript:;" class="am-icon-edit 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">{{:MyLang('view_title')}} >></a>
</legend>
@ -34,7 +34,6 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
<script type="text/javascript">
// 基础数据保存回调处理
function FormBackSaveinfoEdit(e)

View File

@ -2,61 +2,72 @@
<!-- right content start -->
<div class="content-right">
<!-- table nav start -->
{{include file="email/nav"" /}}
<!-- table nav end -->
<div class="content">
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/email/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/email/index', ['type'=>'index'])}}">
<div class="am-form-group">
<label>{{$data.common_email_smtp_host.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_host.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_host.only_tag}}" placeholder="{{$data.common_email_smtp_host.name}}" data-validation-message="{{$data.common_email_smtp_host.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_host.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_port.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_port.describe}}</span></label>
<input type="number" name="{{$data.common_email_smtp_port.only_tag}}" placeholder="{{$data.common_email_smtp_port.name}}" data-validation-message="{{$data.common_email_smtp_port.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_port.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_account.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_account.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_account.only_tag}}" placeholder="{{$data.common_email_smtp_account.name}}" data-validation-message="{{$data.common_email_smtp_account.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_account.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_name.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_name.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_name.only_tag}}" placeholder="{{$data.common_email_smtp_name.name}}" data-validation-message="{{$data.common_email_smtp_name.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_name.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_pwd.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_pwd.describe}}</span></label>
<input type="password" name="{{$data.common_email_smtp_pwd.only_tag}}" placeholder="{{$data.common_email_smtp_pwd.name}}" data-validation-message="{{$data.common_email_smtp_pwd.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_pwd.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_is_use_ssl.name}}</label>
<select name="{{$data.common_email_is_use_ssl.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_email_is_use_ssl.error_tips}}" required>
{{foreach :MyConst('common_is_text_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['common_email_is_use_ssl']['value']) and $data['common_email_is_use_ssl']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<!-- nav start -->
{{:ModuleInclude('public/nav_switch_tabs', [
'nav_data' => $nav_data,
'nav_type' => $type,
'url' => 'admin/email/index'
])}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-popup-sticky" action="{{:MyUrl('admin/email/save')}}" method="POST" request-type="ajax-view" request-value="{{:MyUrl('admin/email/index', ['type'=>'index'])}}">
<div class="nav-content">
<!-- table tips start -->
{{include file="email/tips"" /}}
<!-- table tips end -->
<div class="am-form-group">
<label>{{$data.common_email_smtp_host.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_host.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_host.only_tag}}" placeholder="{{$data.common_email_smtp_host.name}}" data-validation-message="{{$data.common_email_smtp_host.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_host.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_port.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_port.describe}}</span></label>
<input type="number" name="{{$data.common_email_smtp_port.only_tag}}" placeholder="{{$data.common_email_smtp_port.name}}" data-validation-message="{{$data.common_email_smtp_port.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_port.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_account.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_account.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_account.only_tag}}" placeholder="{{$data.common_email_smtp_account.name}}" data-validation-message="{{$data.common_email_smtp_account.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_account.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_name.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_name.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_name.only_tag}}" placeholder="{{$data.common_email_smtp_name.name}}" data-validation-message="{{$data.common_email_smtp_name.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_name.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_pwd.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_pwd.describe}}</span></label>
<input type="password" name="{{$data.common_email_smtp_pwd.only_tag}}" placeholder="{{$data.common_email_smtp_pwd.name}}" data-validation-message="{{$data.common_email_smtp_pwd.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_pwd.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_email_is_use_ssl.name}}</label>
<div class="am-radio-group">
{{foreach :MyConst('common_is_text_list') as $v}}
<label class="am-radio-inline">
<input type="radio" value="{{$v.id}}" name="{{$data.common_email_is_use_ssl.only_tag}}" data-validation-message="{{$data.common_email_is_use_ssl.error_tips}}" required {{if isset($data['common_email_is_use_ssl']['value']) and $data['common_email_is_use_ssl']['value'] eq $v['id']}}checked{{/if}} data-am-ucheck>{{$v.name}}
</label>
{{/foreach}}
</div>
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_send_name.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_send_name.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_send_name.only_tag}}" placeholder="{{$data.common_email_smtp_send_name.name}}" data-validation-message="{{$data.common_email_smtp_send_name.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_send_name.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{:MyLang('email.form_item_test')}}<span class="am-form-group-label-tips">{{:MyLang('email.form_item_test_tips')}}</span></label>
<div class="am-flex am-gap-1">
<input type="text" placeholder="{{:MyLang('email.form_item_test')}}" class="am-radius test-email-value" />
<button class="am-btn am-btn-primary-plain am-radius test-email-submit" type="button" data-url="{{:MyUrl('admin/email/emailtest')}}">
<i class="iconfont icon-check"></i>
{{:MyLang('email.form_item_test_button_title')}}
</button>
</div>
</div>
</div>
<div class="am-form-group">
<label>{{$data.common_email_smtp_send_name.name}}<span class="am-form-group-label-tips">{{$data.common_email_smtp_send_name.describe}}</span></label>
<input type="text" name="{{$data.common_email_smtp_send_name.only_tag}}" placeholder="{{$data.common_email_smtp_send_name.name}}" data-validation-message="{{$data.common_email_smtp_send_name.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_email_smtp_send_name.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{: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="{{: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')}}">{{:MyLang('email.form_item_test_button_title')}}</button>
</span>
</div>
</div>
<div class="am-form-popup-submit">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<div class="am-form-popup-submit">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</div>
</form>
<!-- form end -->
</div>
</div>
@ -64,4 +75,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -2,61 +2,57 @@
<!-- right content start -->
<div class="content-right">
<!-- table nav start -->
{{include file="email/nav"" /}}
<!-- table nav end -->
<div class="content">
<!-- form start -->
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/email/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/email/index', ['type'=>'message'])}}">
<!-- 后台 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{:MyLang('email.base_item_admin_title')}}</h3>
<!-- nav start -->
{{:ModuleInclude('public/nav_switch_tabs', [
'nav_data' => $nav_data,
'nav_type' => $type,
'url' => 'admin/email/index'
])}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-popup-sticky" action="{{:MyUrl('admin/email/save')}}" method="POST" request-type="ajax-view" request-value="{{:MyUrl('admin/email/index', ['type'=>'message'])}}">
<div class="nav-content rich-text">
<!-- table tips start -->
{{include file="email/tips"" /}}
<!-- table tips end -->
<!-- 后台 -->
<p class="am-margin-bottom-xl am-text-sm cr-333">{{:MyLang('email.base_item_admin_title')}}</p>
<div class="am-form-group">
<label>{{$data.admin_email_login_template.name}}<span class="am-form-group-label-tips">{{$data.admin_email_login_template.describe}}</span></label>
<textarea id="admin_email_login_template" name="{{$data.admin_email_login_template.only_tag}}">{{if !empty($data)}}{{$data.admin_email_login_template.value}}{{/if}}</textarea>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
<label>{{$data.admin_email_login_template.name}}<span class="am-form-group-label-tips">{{$data.admin_email_login_template.describe}}</span></label>
<textarea id="admin_email_login_template" name="{{$data.admin_email_login_template.only_tag}}">{{if !empty($data)}}{{$data.admin_email_login_template.value}}{{/if}}</textarea>
</div>
<!-- 前端 -->
<p class="am-margin-bottom-xl am-text-sm cr-333">{{:MyLang('email.base_item_index_title')}}</p>
<div class="am-form-group">
<label>{{$data.common_email_currency_template.name}}<span class="am-form-group-label-tips">{{$data.common_email_currency_template.describe}}</span></label>
<textarea id="common_email_currency_template" name="{{$data.common_email_currency_template.only_tag}}">{{if !empty($data)}}{{$data.common_email_currency_template.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.home_email_login_template.name}}<span class="am-form-group-label-tips">{{$data.home_email_login_template.describe}}</span></label>
<textarea id="home_email_login_template" name="{{$data.home_email_login_template.only_tag}}">{{if !empty($data)}}{{$data.home_email_login_template.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.home_email_user_reg_template.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_reg_template.describe}}</span></label>
<textarea id="email_user_reg" name="{{$data.home_email_user_reg_template.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_reg_template.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.home_email_user_forget_pwd_template.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_forget_pwd_template.describe}}</span></label>
<textarea id="email_user_forget_pwd" name="{{$data.home_email_user_forget_pwd_template.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_forget_pwd_template.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.home_email_user_email_binding_template.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_email_binding_template.describe}}</span></label>
<textarea id="email_user_email_binding" name="{{$data.home_email_user_email_binding_template.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_email_binding_template.value}}{{/if}}</textarea>
</div>
</div>
<!-- 前端 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">
<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">
<label>{{$data.common_email_currency_template.name}}<span class="am-form-group-label-tips">{{$data.common_email_currency_template.describe}}</span></label>
<textarea id="common_email_currency_template" name="{{$data.common_email_currency_template.only_tag}}">{{if !empty($data)}}{{$data.common_email_currency_template.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.home_email_login_template.name}}<span class="am-form-group-label-tips">{{$data.home_email_login_template.describe}}</span></label>
<textarea id="home_email_login_template" name="{{$data.home_email_login_template.only_tag}}">{{if !empty($data)}}{{$data.home_email_login_template.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.home_email_user_reg.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_reg.describe}}</span></label>
<textarea id="email_user_reg" name="{{$data.home_email_user_reg.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_reg.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.home_email_user_forget_pwd.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_forget_pwd.describe}}</span></label>
<textarea id="email_user_forget_pwd" name="{{$data.home_email_user_forget_pwd.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_forget_pwd.value}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>{{$data.home_email_user_email_binding.name}}<span class="am-form-group-label-tips">{{$data.home_email_user_email_binding.describe}}</span></label>
<textarea id="email_user_email_binding" name="{{$data.home_email_user_email_binding.only_tag}}">{{if !empty($data)}}{{$data.home_email_user_email_binding.value}}{{/if}}</textarea>
</div>
</div>
</div>
<div class="am-form-popup-submit">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<div class="am-form-popup-submit">
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</div>
</form>
<!-- form end -->
</div>
</div>
@ -64,4 +60,3 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,13 +0,0 @@
<ul class="am-nav am-nav-pills table-nav second-nav">
{{if !empty($nav_data) and is_array($nav_data)}}
{{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}}
{{/if}}
</ul>
<div class="am-alert am-alert-warning am-radius am-margin-horizontal-sm am-margin-bottom-0" data-am-alert>
<button type="button" class="am-close">&times;</button>
<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('view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}</p>
</div>

View File

@ -0,0 +1,8 @@
<div class="am-operate-stretch-tips">
<div class="title">
<i class="iconfont icon-tips"></i>
<strong title="{{:MyLang('operate_list_tips_msg')}}">{{:MyLang('operate_list_tips_button_text')}}</strong>
<i class="iconfont icon-contract contract" title="{{:MyLang('operate_list_tips_retract_text')}}"></i>
</div>
<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('view_config_course_name')}} <i class="am-icon-external-link"></i></a>{{/if}}</p>
</div>

View File

@ -0,0 +1,2 @@
<!-- 继承公共的 form -->
{{extend name="public/module/detail" /}}

View File

@ -0,0 +1,13 @@
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-default-plain am-btn-xs am-radius submit-ajax" data-url="{{:MyUrl('admin/emaillog/alldelete')}}" data-view="reload">
<i class="iconfont icon-clear-session am-show-sm-only"></i>
<span class="am-hide-sm-only">{{:MyLang('delete_all_title')}}</span>
</button>
<!-- 父级内容 -->
{__block__}
{{/block}}

View File

@ -0,0 +1,9 @@
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/emaillog/detail', ['id'=>$module_data['id']])}}" data-title="{{:MyLang('detail_title')}}">
<i class="am-icon-eye"></i>
<span>{{:MyLang('detail_title')}}</span>
</button>
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete" data-url="{{:MyUrl('admin/emaillog/delete')}}" data-id="{{$module_data.id}}" data-key="ids">
<i class="am-icon-trash-o"></i>
<span>{{:MyLang('delete_title')}}</span>
</button>

View File

@ -0,0 +1,3 @@
{{if !empty($module_data) and !empty($module_data['template_value'])}}
<pre class="am-scrollable-vertical am-scrollable-horizontal am-padding-xs am-radius pre-container">{{$module_data.template_value|raw}}</pre>
{{/if}}

View File

@ -0,0 +1,3 @@
{{if !empty($module_data) and !empty($module_data['template_var'])}}
<pre class="am-scrollable-vertical am-scrollable-horizontal am-padding-xs am-radius pre-container">{{$module_data.template_var}}</pre>
{{/if}}

View File

@ -3,81 +3,73 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- operation start -->
<div class="am-g">
<button class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus tree-submit-add" data-am-modal="{target: '#data-save-win'}"> {{:MyLang('add_title')}}</button>
</div>
<!-- operation end -->
<!-- save win start -->
<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="{{: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">{{:MyLang('common_service.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="" />
<img src="{{$attachment_host}}/static/common/images/default-images.jpg" />
<i>×</i>
</li>
</ul>
<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>{{:MyLang('common_service.express.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="{{:MyLang('common_service.express.form_item_name_message')}}" name="name" minlength="1" maxlength="60" data-validation-message="{{:MyLang('common_service.express.form_item_name_message')}}" class="am-radius" required />
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.express.form_item_website_url')}}</label>
<input type="url" placeholder="{{:MyLang('common_service.express.form_item_website_url_placeholder')}}" name="website_url" data-validation-message="{{:MyLang('common_service.express.form_item_website_url_message')}}" class="am-radius" {{if !empty($data['website_url'])}} value="{{$data.website_url}}"{{/if}} />
</div>
{{include file="lib/sort" /}}
{{include file="lib/is_enable" /}}
<div class="am-form-popup-submit">
<input type="hidden" name="id" />
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs btn-loading-example am-margin-right-lg" data-am-modal-close>
<i class="am-icon-paint-brush"></i>
<span>{{:MyLang('cancel_title')}}</span>
</button>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
<!-- form end -->
</div>
</div>
</div>
<!-- save win end -->
<div class="am-popup-inner">
<div class="am-popup-hd">
<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="CardFormSaveBack">
<div class="am-form-group row am-form-file">
<label class="am-block">{{:MyLang('common_service.express.form_item_icon')}}</label>
<div class="am-form-file-upload-container">
<ul class="plug-file-upload-view express-icon-images-view" data-form-name="icon" data-max-number="1" data-dialog-type="images">
<li class="plug-file-upload-submit" data-view-tag="ul.express-icon-images-view">
<i class="iconfont icon-upload-add"></i>
</li>
</ul>
</div>
</div>
<div class="am-form-group row">
<label>{{:MyLang('common_service.express.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" placeholder="{{:MyLang('common_service.express.form_item_name_message')}}" name="name" minlength="1" maxlength="60" data-validation-message="{{:MyLang('common_service.express.form_item_name_message')}}" class="am-radius" required />
</div>
<div class="am-form-group row">
<label>{{:MyLang('common_service.express.form_item_website_url')}}</label>
<input type="url" placeholder="{{:MyLang('common_service.express.form_item_website_url_placeholder')}}" name="website_url" data-validation-message="{{:MyLang('common_service.express.form_item_website_url_message')}}" class="am-radius" {{if !empty($data['website_url'])}} value="{{$data.website_url}}"{{/if}} />
</div>
{{include file="lib/sort_row" /}}
{{include file="lib/is_enable_row" /}}
<div class="am-form-popup-submit">
<input type="hidden" name="id" />
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs btn-loading-example am-margin-right-lg" data-am-modal-close>
<i class="am-icon-paint-brush"></i>
<span>{{:MyLang('cancel_title')}}</span>
</button>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
<!-- form end -->
</div>
</div>
</div>
<!-- save win end -->
<!-- list start -->
<div id="tree" class="am-margin-top-sm" data-additional='[{"field":"icon", "value":"", "type":"input"}, {"field":"icon", "value":"{{$attachment_host}}/static/common/images/default-images.jpg", "type":"attr", "tag":"ul.express-icon-images-view li img", "style":"src"}]' data-node-url="{{:MyUrl('admin/express/getnodeson')}}" data-del-url="{{:MyUrl('admin/express/delete')}}" data-popup-tag="#data-save-win">
{{include file="public/loading" /}}
</div>
<!-- list end -->
<div id="card" data-prefix='{"name":"{{$currency_symbol}}","field":"icon","type":"img"}' data-suffix="" data-additional='[{"field":"icon", "value":"", "type":"input"}, {"field":"icon", "value":"", "type":"annex", "tag":"ul.express-icon-images-view", "style":"src"}]' data-node-url="{{:MyUrl('admin/express/getnodeson')}}" data-del-url="{{:MyUrl('admin/express/delete')}}" data-popup-tag="#data-save-win">
{{include file="public/loading" /}}
</div>
<!-- list end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
<script type="text/javascript">
// 初始化
Tree(0, $('#tree').data('node-url'), 0);
Card(0, $('#card').data('node-url'), 0);
// 回调处理
function TreeFormSaveBack(e)
function CardFormSaveBack(e)
{
TreeFormSaveBackHandle(e);
CardFormSaveBackHandle(e);
}
</script>

View File

@ -3,13 +3,56 @@
<!-- 重写数据模块 -->
{{block name="detail_data"}}
<!-- 父级内容 -->
{__block__}
{{:ModuleInclude('public/detail_nav_switch_tabs', [
'nav_data' => [
[
'name' => MyLang('form_base_data_title'),
'key' => 'base',
],
[
'name' => $goods_nav_list.video.name,
'key' => 'video',
],
[
'name' => $goods_nav_list.photo.name,
'key' => 'photo',
],
[
'name' => $goods_nav_list.spec.name,
'key' => 'spec',
],
[
'name' => $goods_nav_list.spec_images.name,
'key' => 'spec-images',
],
[
'name' => $goods_nav_list.parameters.name,
'key' => 'parameters',
],
[
'name' => $goods_nav_list.web.name,
'key' => 'web',
],
[
'name' => $goods_nav_list.app.name,
'key' => 'app',
],
[
'name' => $goods_nav_list.fictitious.name,
'key' => 'fictitious',
],
[
'name' => $goods_nav_list.seo.name,
'key' => 'seo-data-title',
]
]
])}}
<div class="detail-content-switch-data-item">
<!-- 父级内容 -->
{__block__}
<!-- 商品视频 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{$goods_nav_list.video.name}}</div>
<div class="am-panel-bd">
<!-- 商品视频 -->
<div class="item" data-key="video">
{{if !empty($data['video'])}}
<video src="{{$data.video}}" class="am-img-responsive" controls="controls" preload="auto">
your browser does not support the video tag
@ -18,38 +61,30 @@
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
<!-- 商品相册 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{$goods_nav_list.photo.name}}</div>
<div class="am-panel-bd">
<!-- 商品相册 -->
<div class="item" data-key="photo">
{{if !empty($data['photo']) and is_array($data['photo'])}}
<div class="am-scrollable-vertical am-nowrap-initial">
<div data-am-widget="slider" class="am-slider am-slider-default" data-am-slider='{"animation":"slide","animationLoop":false,"itemWidth":200,"itemMargin":5}'>
<ul class="am-slides">
{{foreach $data.photo as $v}}
<li>
<a href="{{$v.images}}" target="_blank">
<img src="{{$v.images}}" height="225" />
</a>
</li>
{{/foreach}}
</ul>
</div>
</div>
<ul data-am-widget="gallery" class="am-gallery am-avg-sm-4 am-avg-md-4 am-avg-lg-4 am-gallery-default am-padding-0" data-am-gallery="{ pureview: true }">
{{foreach $data.photo as $k=>$v}}
<li class="am-padding-0 {{if $k gt 0}}am-margin-left-sm{{/if}}">
<div class="am-gallery-item am-nbfc">
<a href="javascript:;">
<img src="{{$v.images}}" />
</a>
</div>
</li>
{{/foreach}}
</ul>
{{else /}}
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
<!-- 商品规格 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{$goods_nav_list.specifications.name}}</div>
<div class="am-panel-bd">
<!-- 商品规格 -->
<div class="item" data-key="spec">
{{if !empty($specifications) and is_array($specifications)}}
<div class="am-scrollable-vertical am-scrollable-horizontal">
<div class="am-scrollable-horizontal">
<table class="am-table am-table-bordered am-table-striped am-text-nowrap">
<thead>
<tr>
@ -104,65 +139,51 @@
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
<!-- 商品规格图片 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{:MyLang('common_service.goods.form_spec_images_title')}}</div>
<div class="am-panel-bd am-padding-xs">
<!-- 商品规格图片 -->
<div class="item" data-key="spec-images">
{{if !empty($specifications) and is_array($specifications)}}
<div class="am-scrollable-vertical">
<ul data-am-widget="gallery" class="am-gallery am-avg-sm-2 am-avg-md-4 am-avg-lg-6 am-gallery-bordered am-padding-0">
{{foreach $specifications.type as $line_k=>$line_v}}
{{foreach $line_v.value as $v}}
{{if !empty($v['images'])}}
<li>
<div class="am-gallery-item">
<a href="{{$v.images}}" target="_blank">
<img src="{{$v.images}}" alt="{{$v.name}}"/>
<h3 class="am-gallery-title am-text-center">{{$v.name}}</h3>
</a>
</div>
</li>
{{/if}}
{{/foreach}}
<ul data-am-widget="gallery" class="am-gallery am-avg-sm-4 am-avg-md-4 am-avg-lg-4 am-gallery-default am-padding-0" data-am-gallery="{ pureview: true }">
{{foreach $specifications.type as $line_k=>$line_v}}
{{foreach $line_v.value as $v}}
{{if !empty($v['images'])}}
<li>
<div class="am-gallery-item">
<a href="{{$v.images}}" target="_blank">
<img src="{{$v.images}}" alt="{{$v.name}}"/>
<h3 class="am-gallery-title am-text-center">{{$v.name}}</h3>
</a>
</div>
</li>
{{/if}}
{{/foreach}}
</ul>
</div>
{{/foreach}}
</ul>
{{else /}}
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
<!-- 商品参数 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{$goods_nav_list.parameters.name}}</div>
<div class="am-panel-bd">
<!-- 商品参数 -->
<div class="item" data-key="parameters">
{{include file="public/goodsparamstemplate/detail" /}}
</div>
</div>
<!-- 电脑端详情 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{$goods_nav_list.web.name}}</div>
<div class="am-panel-bd">
<!-- 电脑端详情 -->
<div class="item" data-key="web">
{{if !empty($data['content_web'])}}
<div class="am-scrollable-vertical am-nowrap-initial am-img-responsive">
<div class="am-nowrap-initial am-img-responsive">
{{$data.content_web|raw}}
</div>
{{else /}}
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
<!-- 手机端详情 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{$goods_nav_list.app.name}}</div>
<div class="am-panel-bd">
<!-- 手机端详情 -->
<div class="item" data-key="app">
{{if !empty($data['content_app']) and is_array($data['content_app'])}}
<div class="am-scrollable-vertical am-nowrap-initial am-img-responsive">
<div class="am-nowrap-initial am-img-responsive">
<ul>
{{foreach $data.content_app as $v}}
<li class="am-margin-bottom-sm">
@ -184,22 +205,19 @@
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
<!-- 虚拟商品展示数据 -->
<div class="am-panel am-panel-default am-radius">
<div class="am-panel-hd">{{$goods_nav_list.fictitious.name}}</div>
<div class="am-panel-bd">
<!-- 虚拟商品展示数据 -->
<div class="item" data-key="fictitious">
{{if !empty($data['fictitious_goods_value'])}}
<div class="am-scrollable-vertical am-nowrap-initial am-img-responsive">
<div class="am-nowrap-initial am-img-responsive">
{{$data.fictitious_goods_value|raw}}
</div>
{{else /}}
{{include file="public/not_data" /}}
{{/if}}
</div>
</div>
<!-- SEO信息 -->
{{include file="lib/seo_data" /}}
<!-- SEO信息 -->
{{include file="lib/seo_data" /}}
</div>
{{/block}}

View File

@ -3,7 +3,10 @@
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/goods/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> {{:MyLang('add_title')}}</a>
<a href="{{:MyUrl('admin/goods/saveinfo')}}" class="am-btn am-btn-primary am-radius am-btn-xs">
<i class="iconfont icon-btn-add am-show-sm-only"></i>
<span class="am-hide-sm-only">{{:MyLang('add_title')}}</span>
</a>
<!-- 父级内容 -->
{__block__}
{{/block}}

View File

@ -1,5 +1,5 @@
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/goods/detail', ['id'=>$module_data['id']])}}">
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/goods/detail', ['id'=>$module_data['id']])}}" data-title="{{:MyLang('detail_title')}}">
<i class="am-icon-eye"></i>
<span>{{:MyLang('detail_title')}}</span>
</button>
@ -11,13 +11,13 @@
<i class="am-icon-copy"></i>
<span>{{:MyLang('copy_title')}}</span>
</a>
<div class="am-dropdown am-dropdown-up am-btn am-btn-danger am-btn-xs am-radius am-btn-block" data-am-dropdown>
<div class="am-dropdown am-dropdown-down am-btn am-btn-danger am-btn-xs am-radius am-btn-block" data-am-dropdown>
<div class="am-dropdown-toggle">
<i class="am-icon-trash-o"></i>
<span>{{:MyLang('delete_title')}}</span>
</div>
<div class="am-dropdown-content am-radius">
<a href="javascript:;" class="am-badge am-badge-warning am-radius submit-delete" data-url="{{:MyUrl('admin/goods/delete')}}" data-id="{{$module_data.id}}" data-key="ids">{{:MyLang('goods.delete_only_goods_text')}}</a>
<a href="javascript:;" class="am-badge am-badge-danger am-radius am-margin-left-sm submit-delete" data-url="{{:MyUrl('admin/goods/delete', ['is_del_images'=>1])}}" data-id="{{$module_data.id}}" data-key="ids">{{:MyLang('goods.delete_goods_and_images_text')}}</a>
<div class="am-dropdown-content am-padding-sm am-radius">
<a href="javascript:;" class="am-badge am-badge-warning am-radius am-margin-bottom-0 submit-delete" data-url="{{:MyUrl('admin/goods/delete')}}" data-id="{{$module_data.id}}" data-key="ids">{{:MyLang('goods.delete_only_goods_text')}}</a>
<a href="javascript:;" class="am-badge am-badge-danger am-radius am-margin-bottom-0 am-margin-left-sm submit-delete" data-url="{{:MyUrl('admin/goods/delete', ['is_del_images'=>1])}}" data-id="{{$module_data.id}}" data-key="ids">{{:MyLang('goods.delete_goods_and_images_text')}}</a>
</div>
</div>

View File

@ -3,428 +3,409 @@
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation 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">{{: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>
<!-- 右侧快捷导航 -->
{{if !empty($goods_nav_list) and is_array($goods_nav_list)}}
<nav class="goods-nav goods-nav-retract" style="right:-110px;">
<ul>
{{foreach $goods_nav_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 am-radius" id="goods-nav-base">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{$goods_nav_list.base.name}}</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>{{:MyLang('common_service.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="{{:MyLang('common_service.goods.form_item_title_message')}}" minlength="2" maxlength="160" data-validation-message="{{:MyLang('common_service.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" />
</button>
</span>
</div>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.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="{{:MyLang('please_select_tips')}}" data-validation-message="{{:MyLang('common_service.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>
{{if !empty($v['items'])}}
{{foreach $v.items as $vs}}
<option style="padding-left: 20px;" value="{{$vs.id}}" {{if !empty($data['category_ids']) and in_array($vs['id'], $data['category_ids'])}}selected{{/if}}>{{if empty($vs['items'])}}├{{else /}}└{{/if}}² {{$vs.name}}</option>
{{if !empty($vs['items'])}}
{{foreach $vs.items as $kss=>$vss}}
<option style="padding-left: 40px;" value="{{$vss.id}}" {{if !empty($data['category_ids']) and in_array($vss['id'], $data['category_ids'])}}selected{{/if}}>{{if $kss eq count($vs['items'])-1}}└{{else /}}├{{/if}}³ {{$vss.name}}</option>
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
</select>
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.goods.form_item_simple_desc')}}</label>
<input type="text" name="simple_desc" placeholder="{{:MyLang('common_service.goods.form_item_simple_desc_message')}}" maxlength="230" data-validation-message="{{:MyLang('common_service.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>{{:MyLang('common_service.goods.form_item_model')}}</label>
<input type="text" name="model" placeholder="{{:MyLang('common_service.goods.form_item_model_message')}}" maxlength="30" data-validation-message="{{:MyLang('common_service.goods.form_item_model_message')}}" class="am-radius" {{if !empty($data['model'])}} value="{{$data.model}}"{{/if}} />
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_item_brand')}}</label>
<select name="brand_id" class="am-radius chosen-select" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="{{:MyLang('common_service.goods.form_item_brand_message')}}">
{{if !empty($brand_list)}}
<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}}
{{/if}}
</select>
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.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('common_service.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>
{{/foreach}}
{{/if}}
</select>
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.goods.form_item_inventory_unit')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="inventory_unit" placeholder="{{:MyLang('common_service.goods.form_item_inventory_unit_message')}}" minlength="1" maxlength="6" data-validation-message="{{:MyLang('common_service.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>{{:MyLang('common_service.goods.form_item_give_integral')}}{{if is_array(MyLang('common_service.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('common_service.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="{{:MyLang('common_service.goods.form_item_give_integral_placeholder')}}" min="0" max="100" data-validation-message="{{:MyLang('common_service.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>
</div>
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-md-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('common_service.goods.form_item_site_type')}}</label>
{{if is_array(MyLang('common_service.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('common_service.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('common_service.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>
{{/foreach}}
{{/if}}
</select>
</div>
</div>
<div class="am-u-md-6 am-padding-horizontal-0">
<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">{{:MyLang('common_service.goods.form_item_images')}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.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>
<input type="text" name="images" value="{{$data.images}}" />
<img src="{{$data.images}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<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">{{:MyLang('common_service.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('common_service.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">{{:MyLang('common_service.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('common_service.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>
</div>
</div>
</div>
</div>
<!-- 商品规格 -->
<div class="am-panel am-panel-default am-radius" id="goods-nav-specifications">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{$goods_nav_list.specifications.name}}<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">
{{include file="goods/spec" /}}
<!-- nav start -->
{{:ModuleInclude('public/admin_nav', [
'title' => MyLang('goods.base_nav_title').(empty($data['id']) ? MyLang('created_title') : MyLang('edit_title')),
'back_url' => MyUrl('admin/goods/index', $params)
])}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-sticky" action="{{:MyUrl('admin/goods/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/goods/index', $params)}}" enctype="multipart/form-data">
{{:ModuleInclude('public/nav_switch_btn', [
'nav_data' => [
[
'name' => $goods_nav_list.base.name,
'key' => 'base',
],
[
'name' => $goods_nav_list.spec.name,
'key' => 'spec',
],
[
'name' => $goods_nav_list.parameters.name,
'key' => 'parameters',
],
[
'name' => $goods_nav_list.photo.name . '/' . $goods_nav_list.video.name,
'key' => 'photo-video',
],
[
'name' => $goods_nav_list.app.name,
'key' => 'app',
],
[
'name' => $goods_nav_list.web.name,
'key' => 'web',
],
[
'name' => $goods_nav_list.fictitious.name,
'key' => 'fictitious',
],
[
'name' => $goods_nav_list.extends.name,
'key' => 'extends',
],
[
'name' => $goods_nav_list.seo.name,
'key' => 'seo',
]
]
])}}
<!-- nav end -->
<div class="nav-content">
<!-- 基础信息 -->
<div id="goods-nav-base" class="item am-active" data-key="base">
<div class="am-form-group">
<label>{{:MyLang('common_service.goods.form_item_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-flex am-flex-items-center am-gap-1">
<input type="text" name="title" placeholder="{{:MyLang('common_service.goods.form_item_title_message')}}" minlength="2" maxlength="160" data-validation-message="{{:MyLang('common_service.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 />
<div class="colorpicker-container colorpicker-simple">
<input type="hidden" name="title_color" value="{{if !empty($data['title_color'])}}{{$data.title_color}}{{/if}}" />
<div class="colorpicker-submit" data-color="{{if !empty($data['title_color'])}}{{$data.title_color}}{{/if}}" data-input-tag="input[name='title']" data-color-tag="input[name='title_color']"></div>
<img class="imitate-colorpicker-submit" src="{{$attachment_host}}/static/common/images/colorpicker.png" width="24" height="24" />
</div>
</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.goods.form_item_category_id')}}<span class="am-form-group-label-tips-must">*</span></label>
<select name="category_id" class="am-radius chosen-select" multiple="multiple" minchecked="1" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="{{:MyLang('common_service.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>
{{if !empty($v['items'])}}
{{foreach $v.items as $vs}}
<option style="padding-left: 20px;" value="{{$vs.id}}" {{if !empty($data['category_ids']) and in_array($vs['id'], $data['category_ids'])}}selected{{/if}}>{{if empty($vs['items'])}}├{{else /}}└{{/if}}² {{$vs.name}}</option>
{{if !empty($vs['items'])}}
{{foreach $vs.items as $kss=>$vss}}
<option style="padding-left: 40px;" value="{{$vss.id}}" {{if !empty($data['category_ids']) and in_array($vss['id'], $data['category_ids'])}}selected{{/if}}>{{if $kss eq count($vs['items'])-1}}└{{else /}}├{{/if}}³ {{$vss.name}}</option>
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
</select>
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.goods.form_item_simple_desc')}}</label>
<input type="text" name="simple_desc" placeholder="{{:MyLang('common_service.goods.form_item_simple_desc_message')}}" maxlength="230" data-validation-message="{{:MyLang('common_service.goods.form_item_simple_desc_message')}}" class="am-radius" {{if !empty($data['simple_desc'])}} value="{{$data.simple_desc}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.goods.form_item_model')}}</label>
<input type="text" name="model" placeholder="{{:MyLang('common_service.goods.form_item_model_message')}}" maxlength="30" data-validation-message="{{:MyLang('common_service.goods.form_item_model_message')}}" class="am-radius" {{if !empty($data['model'])}} value="{{$data.model}}"{{/if}} />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_item_brand')}}</label>
<select name="brand_id" class="am-radius chosen-select" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="{{:MyLang('common_service.goods.form_item_brand_message')}}">
{{if !empty($brand_list)}}
<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}}
{{/if}}
</select>
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.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('common_service.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>
{{/foreach}}
{{/if}}
</select>
</div>
<div class="am-form-group">
<label>{{:MyLang('common_service.goods.form_item_inventory_unit')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="inventory_unit" placeholder="{{:MyLang('common_service.goods.form_item_inventory_unit_message')}}" minlength="1" maxlength="6" data-validation-message="{{:MyLang('common_service.goods.form_item_inventory_unit_message')}}" class="am-radius" {{if !empty($data['inventory_unit'])}} value="{{$data.inventory_unit}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>
{{:MyLang('common_service.goods.form_item_give_integral')}}
{{if is_array(MyLang('common_service.goods.form_item_give_integral_tips'))}}
<a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:implode('<br />', MyLang('common_service.goods.form_item_give_integral_tips'))}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
</label>
<input type="number" name="give_integral" placeholder="{{:MyLang('common_service.goods.form_item_give_integral_placeholder')}}(%)" min="0" max="100" data-validation-message="{{:MyLang('common_service.goods.form_item_give_integral_message')}}" class="am-form-field am-radius" {{if !empty($data['give_integral'])}} value="{{$data.give_integral}}"{{/if}} />
</div>
<div class="am-form-group">
<label>
{{:MyLang('common_service.goods.form_item_site_type')}}
{{if is_array(MyLang('common_service.goods.form_item_site_type_tips'))}}
<a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:implode('</p><p>', MyLang('common_service.goods.form_item_site_type_tips'))}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
</label>
<select name="site_type" class="am-radius chosen-select am-margin-top-xs" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('common_service.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>
{{/foreach}}
{{/if}}
</select>
</div>
<div class="am-form-group am-form-file">
<label class="am-block">{{:MyLang('common_service.goods.form_item_images')}}<a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.goods.form_item_images_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<div class="am-form-file-upload-container">
<ul class="plug-file-upload-view goods-recommended-images-view" data-form-name="images" data-max-number="1" data-dialog-type="images" data-is-eye="1">
<li class="plug-file-upload-submit" data-view-tag="ul.goods-recommended-images-view">
{{if empty($data['images'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="images" value="{{$data.images}}" />
<img src="{{$data.images}}" />
<i>×</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
</ul>
</div>
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_item_is_deduction_inventory')}}<a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.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">{{:MyLang('common_service.goods.form_item_is_shelves')}}<a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.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>
<!-- 商品参数 -->
<div class="am-panel am-panel-default am-radius" id="goods-nav-parameters">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{$goods_nav_list.parameters.name}}</h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
{{include file="public/goodsparamstemplate/tips" /}}
<!-- 通过配置生成商品参数 -->
<div class="am-dropdown" id="parameters-quick-container" data-am-dropdown>
<span class="business-operations-submit am-dropdown-toggle parameters-quick-add">
<span>{{:MyLang('common_service.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="{{:MyLang('common_service.goods.form_params_select_placeholder')}}" data-validation-message="{{:MyLang('common_service.goods.form_params_select_message')}}">
<option value="">{{:MyLang('common_service.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>
{{/foreach}}
{{/if}}
</select>
</div>
<textarea rows="5" placeholder="{{:MyLang('common_service.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>{{:MyLang('common_service.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>{{:MyLang('common_service.goods.form_params_config_empty_title')}}</span>
</span>
<span class="am-text-warning am-margin-left-sm">{{:MyLang('common_service.goods.form_params_list_content_tips')}}</span>
<!-- 参数表格 -->
{{include file="public/goodsparamstemplate/table" /}}
</div>
</div>
</div>
<!-- 相册 -->
<div class="am-panel am-panel-default am-radius" id="goods-nav-photo">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{$goods_nav_list.photo.name}}<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>{{:MyLang('common_service.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'])}}
{{foreach $data.photo as $v}}
<li>
<input type="text" name="photo[]" value="{{$v.images_old}}" />
<img src="{{$v.images}}" />
<i>×</i>
</li>
{{/foreach}}
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-photo-view">+ {{:MyLang('common_service.goods.form_photo_button_add_name')}}</div>
<!-- 商品规格 -->
<div id="goods-nav-spec" class="item" data-key="spec">
{{if is_array(MyLang('common_service.goods.form_spec_top_list_tips'))}}
<div class="am-operate-stretch-tips">
<div class="title">
<i class="iconfont icon-tips"></i>
<strong title="{{:MyLang('operate_list_tips_msg')}}">{{:MyLang('operate_list_tips_button_text')}}</strong>
<i class="iconfont icon-contract contract" title="{{:MyLang('operate_list_tips_retract_text')}}"></i>
</div>
<p>{{:implode('</p><p>', MyLang('common_service.goods.form_spec_top_list_tips'))}}</p>
</div>
{{/if}}
<div class="am-form-group">
<label>{{$goods_nav_list.spec.name}}<span class="am-form-group-label-tips-must">*</span></label>
<div>
{{include file="goods/spec" /}}
</div>
</div>
</div>
</div>
<!-- 视频 -->
<div class="am-panel am-panel-default am-radius" id="goods-nav-video">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{$goods_nav_list.video.name}}</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>{{:MyLang('common_service.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'])}}
<li>
<input type="text" name="video" value="{{$data.video}}" />
<video src="{{$data.video}}" controls>your browser does not support the video tag</video>
<i>×</i>
</li>
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-video-view">+ {{:MyLang('common_service.goods.form_video_button_add_name')}}</div>
</div>
</div>
</div>
<!-- 商品参数 -->
<div id="goods-nav-parameters" class="item" data-key="parameters">
<div class="am-form-group">
<label>选择参数<a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.goods.form_params_list_content_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<div class="am-flex am-flex-items-center am-gap-2">
<!-- 通过配置生成商品参数 -->
<div class="am-dropdown goods-params" id="parameters-quick-container" data-am-dropdown>
<span class="business-operations-submit am-dropdown-toggle parameters-quick-add">
<span>{{:MyLang('common_service.goods.form_params_select_title')}}</span>
<i class="am-icon-caret-down"></i>
</span>
<div class="am-dropdown-content am-radius parameters-quick-config">
<div class="am-margin-bottom-sm">
<select class="am-radius chosen-select" data-placeholder="{{:MyLang('common_service.goods.form_params_select_placeholder')}}" data-validation-message="{{:MyLang('common_service.goods.form_params_select_message')}}">
<option value="">{{:MyLang('common_service.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>
{{/foreach}}
{{/if}}
</select>
</div>
<textarea rows="5" placeholder="{{:MyLang('common_service.goods.form_params_value_placeholder')}}"></textarea>
<button type="button" class="am-btn am-btn-primary am-btn-xs am-radius am-btn-block am-margin-top-sm">{{:MyLang('confirm_title')}}</button>
</div>
</div>
<!-- 复制操作 -->
<span class="business-operations-submit parameters-quick-copy">
<i class="iconfont icon-copy"></i>
<span>{{:MyLang('common_service.goods.form_params_config_copy_title')}}</span>
</span>
<!-- 清空操作 -->
<span class="business-operations-submit parameters-quick-remove">
<i class="iconfont icon-clear"></i>
<span>{{:MyLang('common_service.goods.form_params_config_empty_title')}}</span>
</span>
</div>
<!-- 手机详情 -->
<div class="am-panel am-panel-default am-radius" id="goods-nav-app">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{$goods_nav_list.app.name}}</h3>
<!-- 参数表格 -->
{{include file="public/goodsparamstemplate/table" /}}
</div>
<div class="am-form-group">
{{include file="public/goodsparamstemplate/tips" /}}
</div>
</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>{{:MyLang('common_service.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="{{:MyLang('form_upload_images_title')}}"
data-content-title="{{:MyLang('common_service.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">{{: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>
<input type="text" name="content_app_images_{{$v.id}}" value="{{$v.images_old}}" />
<img src="{{$v.images}}" />
<i>×</i>
</li>
{{/if}}
</ul>
<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>{{:MyLang('common_service.goods.form_app_value_title')}}</label>
<textarea rows="5" name="content_app_text_{{$v.id}}" maxlength="105000" class="am-radius" placeholder="{{:MyLang('common_service.goods.form_app_value_title')}}" data-validation-message="{{:MyLang('common_service.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"> {{: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">+ {{:MyLang('common_service.goods.form_app_button_add_name')}}</span>
</div>
</div>
</div>
<!-- 电脑详情 -->
<div class="am-panel am-panel-default am-radius" id="goods-nav-web">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{$goods_nav_list.web.name}}<span class="am-form-group-label-tips-must">*</span></h3>
<!-- 相册/视频 -->
<div class="item" data-key="photo-video">
<div id="goods-nav-photo" class="am-form-group">
<label>{{$goods_nav_list.photo.name}}<span class="am-form-group-label-tips-must">*</span><a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.goods.form_photo_top_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a>
</label>
<div class="am-panel-bd business-form-group">
<div class="am-form-file-upload-container">
<ul class="plug-file-upload-view goods-photo-view" data-form-name="photo[]" data-max-number="30" data-dialog-type="images" data-is-eye="1">
{{if !empty($data['photo'])}}
{{foreach $data.photo as $v}}
<li>
<input type="text" name="photo[]" value="{{$v.images_old}}" />
<img src="{{$v.images}}" />
<i>×</i>
<i class="iconfont icon-eye"></i>
</li>
{{/foreach}}
{{/if}}
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.goods-photo-view">
<i class="iconfont icon-upload-add"></i>
</div>
</div>
</div>
</div>
<!-- 视频 -->
<div id="goods-nav-video" class="am-form-group">
<label>{{$goods_nav_list.video.name}}<a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.goods.form_video_top_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a>
</label>
<div class="am-form-file-upload-container">
<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" data-is-eye="1">
<li class="plug-file-upload-submit" data-view-tag="ul.goods-video-view">
{{if empty($data['video'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="video" value="{{$data.video}}" />
<video src="{{$data.video}}" controls>your browser does not support the video tag</video>
<i>×</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
</ul>
</div>
</div>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
<!-- 手机详情 -->
<div id="goods-nav-app" class="item" data-key="app">
<div class="am-operate-stretch-tips">
<div class="title">
<i class="iconfont icon-tips"></i>
<strong title="{{:MyLang('operate_list_tips_msg')}}">{{:MyLang('operate_list_tips_button_text')}}</strong>
<i class="iconfont icon-contract contract" title="{{:MyLang('operate_list_tips_retract_text')}}"></i>
</div>
<p>{{:MyLang('common_service.goods.form_app_top_tips')}}</p>
</div>
<div class="am-form-group">
<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="{{:MyLang('form_upload_images_title')}}"
data-content-title="{{:MyLang('common_service.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 class="am-flex am-flex-warp am-gap-32">
<div class="am-form-group content-app-left">
<label class="am-block">{{:MyLang('images_title')}}</label>
<div class="am-form-file-upload-container">
<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" data-is-eye="1">
<li class="plug-file-upload-submit" data-view-tag="ul.goods-content-app-images-view-{{$v.id}}">
{{if empty($v['images'])}}
<i class="iconfont icon-upload-add"></i>
{{else /}}
<input type="text" name="content_app_images_{{$v.id}}" value="{{$v.images_old}}" />
<img src="{{$v.images}}" />
<i>×</i>
<i class="iconfont icon-eye"></i>
{{/if}}
</li>
</ul>
</div>
</div>
<div class="am-form-group content-app-right">
<label>{{:MyLang('common_service.goods.form_app_value_title')}}</label>
<textarea rows="5" name="content_app_text_{{$v.id}}" maxlength="105000" class="am-radius" placeholder="{{:MyLang('common_service.goods.form_app_value_title')}}" data-validation-message="{{:MyLang('common_service.goods.form_app_value_message')}}">{{if !empty($v)}}{{$v.content_old|raw}}{{/if}}</textarea>
</div>
</div>
<div class="am-flex am-flex-items-center am-gap-32">
<a href="javascript:;" class="am-text-xs am-text-danger content-app-items-rem-sub am-flex am-flex-items-center">
<i class="iconfont icon-delete"></i>
{{:MyLang('delete_title')}}
</a>
<a href="javascript:;" class="am-text-xs drag-sort-submit am-flex am-flex-items-center">
<i class="iconfont icon-sort"></i>
{{:MyLang('sort_title')}}
</a>
</div>
</li>
{{/foreach}}
{{/if}}
</ul>
<span class="business-operations-submit content-app-items-add-sub am-border-0 am-text-sm">
<i class="iconfont icon-add"></i>
{{:MyLang('common_service.goods.form_app_button_add_name')}}
</span>
</div>
</div>
<!-- 电脑详情 -->
<div id="goods-nav-web" class="item" data-key="web">
<div class="am-form-group">
<label>{{$goods_nav_list.web.name}}<span class="am-form-group-label-tips-must">*</span></label>
<textarea class="am-radius" name="content_web" maxlength="105000" id="editor-tag" data-validation-message="{{:MyLang('common_service.goods.form_web_content_message')}}">{{if !empty($data['content_web'])}}{{$data.content_web}}{{/if}}</textarea>
</div>
</div>
</div>
<!-- 虚拟信息 -->
<div class="am-panel am-panel-default am-radius" id="goods-nav-fictitious">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{$goods_nav_list.fictitious.name}}</h3>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
<!-- 虚拟信息 -->
<div id="goods-nav-fictitious" class="item" data-key="fictitious">
<div class="am-form-group">
<label>{{$goods_nav_list.fictitious.name}}</label>
<textarea id="goods-fictitious-container" name="fictitious_goods_value">{{if !empty($data['fictitious_goods_value'])}}{{$data.fictitious_goods_value|raw}}{{/if}}</textarea>
</div>
</div>
</div>
<!-- 扩展数据 -->
<div class="am-panel am-panel-default am-radius" id="goods-nav-extends">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{$goods_nav_list.extends.name}}<span class="am-form-group-label-tips">{{:MyLang('plugins_view_region_config_tips')}}</span></h3>
<!-- 扩展数据 -->
<div id="goods-nav-extends" class="item" data-key="extends">
<div class="am-form-group">
<label>{{$goods_nav_list.extends.name}}<a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:MyLang('plugins_view_region_config_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<div class="am-flex am-flex-col am-gap-32">
<!-- 插件扩展数据 start -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="plugins-tag">
<span>plugins_view_admin_goods_save</span>
</div>
{{/if}}
{{if !empty($plugins_view_admin_goods_save_data) and is_array($plugins_view_admin_goods_save_data) and !empty(array_filter($plugins_view_admin_goods_save_data))}}
{{foreach $plugins_view_admin_goods_save_data as $hook}}
{{if is_string($hook) or is_int($hook)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
{{else /}}
{{include file="public/not_data" /}}
{{/if}}
<!-- 插件扩展数据 end -->
</div>
</div>
</div>
<div class="am-panel-bd business-form-group">
<div class="am-margin-horizontal-sm">
<!-- 插件扩展数据 start -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="plugins-tag">
<span>plugins_view_admin_goods_save</span>
</div>
{{/if}}
{{if !empty($plugins_view_admin_goods_save_data) and is_array($plugins_view_admin_goods_save_data) and !empty(array_filter($plugins_view_admin_goods_save_data))}}
{{foreach $plugins_view_admin_goods_save_data as $hook}}
{{if is_string($hook) or is_int($hook)}}
{{$hook|raw}}
{{/if}}
{{/foreach}}
{{else /}}
{{include file="public/not_data" /}}
{{/if}}
<!-- 插件扩展数据 end -->
</div>
</div>
</div>
<!-- SEO信息 -->
<div class="am-panel am-panel-default am-radius" id="goods-nav-seo">
<div class="am-panel-hd">
<h3 class="am-panel-title">{{$goods_nav_list.seo.name}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<!-- SEO信息 -->
<div id="goods-nav-seo" class="item" data-key="seo">
{{include file="lib/seo" /}}
</div>
</div>
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if isset($data) and !empty($data['id']) and (!isset($is_copy) or $is_copy neq 1)}} value="{{$data.id}}"{{/if}} />
<a href="{{:MyUrl('admin/goods/index', $params)}}" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg">
<i class="am-icon-mail-reply"></i>
<span>{{:MyLang('retreat_title')}}</span>
</a>
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if isset($data) and !empty($data['id']) and (!isset($is_copy) or $is_copy neq 1)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<i class="am-icon-save"></i>
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</form>
</div>
</form>
<!-- form end -->
</div>
</div>
@ -435,7 +416,6 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
<script type="text/javascript">
// 规格扩展返回处理

View File

@ -1,12 +1,6 @@
<!-- 规格快捷操作 -->
<div class="spec-quick am-margin-bottom-lg">
<div>
{{if is_array(MyLang('common_service.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('common_service.goods.form_spec_top_list_tips'))}}</p>
</div>
{{/if}}
<div class="am-flex am-gap-32">
<!-- 规格模板 -->
<div class="am-inline-block business-operations-submit" id="specifications-quick-container"
data-spec-template-tips="{{:MyLang('common_service.goods.form_spec_template_tips')}}"
@ -21,11 +15,19 @@
{{/if}}
</select>
</div>
<span class="business-operations-submit am-margin-left-sm quick-spec-title-add">+ {{:MyLang('common_service.goods.form_spec_quick_add_title')}}</span>
<span class="business-operations-submit am-margin-left-sm am-icon-gg quick-spec-created"> {{:MyLang('common_service.goods.form_spec_quick_generate_title')}}</span>
<div class="am-flex am-gap-2">
<span class="business-operations-submit quick-spec-title-add">
<i class="iconfont icon-add"></i>
{{:MyLang('common_service.goods.form_spec_quick_add_title')}}
</span>
<span class="business-operations-submit quick-spec-created">
<i class="iconfont icon-check"></i>
{{:MyLang('common_service.goods.form_spec_quick_generate_title')}}
</span>
</div>
</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">
<table class="am-table am-table-bordered am-table-centered am-table-striped am-table-hover table-thead-beautify am-border-0">
<thead>
<tr>
<th class="spec-quick-th-title">{{:MyLang('common_service.goods.form_spec_type_title')}}</th>
@ -37,19 +39,25 @@
{{foreach $data.spec_base as $spec_base_key=>$spec_base}}
<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="{{:MyLang('common_service.goods.form_spec_type_title')}}" class="am-radius" />
<div class="am-flex am-flex-items-center am-gap-1">
<input type="text" value="{{$spec_base.title}}" name="spec_base_title_{{$spec_base_key}}" placeholder="{{:MyLang('common_service.goods.form_spec_type_title')}}" class="am-radius" />
<i class="am-close quick-title-remove iconfont icon-delete cr-red"></i>
</div>
</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 am-radius" name="spec_base_value_{{$spec_base_key}}[]" value="{{$value}}" placeholder="{{:MyLang('common_service.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}}">+ {{:MyLang('common_service.goods.form_spec_value_add_title')}}</span>
<div class="am-flex am-flex-warp am-gap-1">
{{if !empty($spec_base['value'])}}
{{foreach $spec_base.value as $value}}
<div class="am-fl value-item">
<div class="am-flex am-flex-items-center am-gap-1">
<input type="text" class="am-fl am-radius" name="spec_base_value_{{$spec_base_key}}[]" value="{{$value}}" placeholder="{{:MyLang('common_service.goods.form_spec_value_title')}}" />
<i class="am-close quick-value-remove iconfont icon-delete cr-red"></i>
</div>
</div>
{{/foreach}}
{{/if}}
<div class="am-fl value-item am-text-left"><span class="business-operations-submit quick-spec-value-add" data-index="{{$spec_base_key}}">+ {{:MyLang('common_service.goods.form_spec_value_add_title')}}</span>
</div>
</div>
</td>
</tr>
@ -61,211 +69,228 @@
</div>
<!-- 规格常规操作 -->
<div>
<span class="business-operations-submit specifications-nav-title-add">+ {{:MyLang('common_service.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('common_service.goods.form_spec_advanced_batch_setup_title')}}</span>
<span class="am-text-warning am-margin-left-sm">{{:MyLang('common_service.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="{{:MyLang('common_service.goods.form_spec_max_error')}}"
data-spec-type-name="{{:MyLang('common_service.goods.form_spec_type_title')}}"
data-spec-value-name="{{:MyLang('common_service.goods.form_spec_value_title')}}"
data-spec-type-message="{{:MyLang('common_service.goods.form_spec_type_message')}}"
data-spec-value-message="{{:MyLang('common_service.goods.form_spec_value_message')}}"
data-spec-empty-data-tips="{{:MyLang('common_service.goods.form_spec_empty_data_tips')}}"
data-spec-empty-fill-tips="{{:MyLang('common_service.goods.form_spec_empty_fill_tips')}}"
data-spec-images-name="{{:MyLang('form_upload_images_title')}}"
data-spec-images-message="{{:MyLang('common_service.goods.form_spec_images_message')}}"
data-spec-add-value-message="{{:MyLang('common_service.goods.form_spec_value_add_title')}}"
data-spec-min-tips-message="{{:MyLang('common_service.goods.form_spec_min_tips_message')}}"
data-spec-all-name="{{:MyLang('all_title')}}"
data-spec-quick-error="{{:MyLang('common_service.goods.form_spec_quick_error')}}"
data-spec-quick-tips-title="{{:MyLang('reminder_title')}}"
data-spec-quick-tips-msg="{{:MyLang('common_service.goods.form_spec_quick_tips_msg')}}"
data-spec-quick-success="{{:MyLang('created_success')}}"
data-move-type-tips="{{:MyLang('common_service.goods.form_spec_move_type_tips')}}"
data-move-top-tips="{{:MyLang('common_service.goods.form_spec_move_top_tips')}}"
data-move-bottom-tips="{{:MyLang('common_service.goods.form_spec_move_bottom_tips')}}"
>
<thead class="title-nav">
<tr>
{{if !empty($specifications['type'])}}
{{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="{{:MyLang('common_service.goods.form_spec_type_title')}}" value="{{$type_v.name}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_type_message')}}" class="am-radius" required />
</th>
<div class="am-form-group am-padding-0">
<label>批量设置<a href="javascript:;" class="am-icon-question-circle am-text-primary am-margin-left-sm" data-am-popover="{content: '{{:MyLang('common_service.goods.form_spec_list_content_tips')}}', trigger: 'hover focus', theme: 'sm'}"></a></label>
<div>
<span class="business-operations-submit specifications-nav-title-add">
<i class="iconfont icon-add"></i>
{{:MyLang('common_service.goods.form_spec_add_column_title')}}
</span>
<span class="business-operations-submit am-margin-left-sm specifications-nav-set-all" data-am-modal="{target: '#spec-popup-all-operation'}">
<i class="iconfont icon-cog"></i>
{{:MyLang('common_service.goods.form_spec_advanced_batch_setup_title')}}
</span>
<span class="am-text-warning am-margin-left-sm"></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="{{:MyLang('common_service.goods.form_spec_max_error')}}"
data-spec-type-name="{{:MyLang('common_service.goods.form_spec_type_title')}}"
data-spec-value-name="{{:MyLang('common_service.goods.form_spec_value_title')}}"
data-spec-type-message="{{:MyLang('common_service.goods.form_spec_type_message')}}"
data-spec-value-message="{{:MyLang('common_service.goods.form_spec_value_message')}}"
data-spec-empty-data-tips="{{:MyLang('common_service.goods.form_spec_empty_data_tips')}}"
data-spec-empty-fill-tips="{{:MyLang('common_service.goods.form_spec_empty_fill_tips')}}"
data-spec-images-name="{{:MyLang('form_upload_images_title')}}"
data-spec-images-message="{{:MyLang('common_service.goods.form_spec_images_message')}}"
data-spec-add-value-message="{{:MyLang('common_service.goods.form_spec_value_add_title')}}"
data-spec-min-tips-message="{{:MyLang('common_service.goods.form_spec_min_tips_message')}}"
data-spec-all-name="{{:MyLang('all_title')}}"
data-spec-quick-error="{{:MyLang('common_service.goods.form_spec_quick_error')}}"
data-spec-quick-tips-title="{{:MyLang('reminder_title')}}"
data-spec-quick-tips-msg="{{:MyLang('common_service.goods.form_spec_quick_tips_msg')}}"
data-spec-quick-success="{{:MyLang('created_success')}}"
data-move-type-tips="{{:MyLang('common_service.goods.form_spec_move_type_tips')}}"
data-move-top-tips="{{:MyLang('common_service.goods.form_spec_move_top_tips')}}"
data-move-bottom-tips="{{:MyLang('common_service.goods.form_spec_move_bottom_tips')}}"
>
<thead class="title-nav">
<tr>
{{if !empty($specifications['type'])}}
{{foreach $specifications.type as $type_v}}
<th class="table-title table-title-{{$type_v.id}}">
<div class="am-flex am-am-flex-items-center am-gap-1">
<input type="text" name="specifications_name_{{$type_v.id}}" placeholder="{{:MyLang('common_service.goods.form_spec_type_title')}}" value="{{$type_v.name}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_type_message')}}" class="am-radius" data-is-clearout="0" required />
<i class="am-close title-nav-remove iconfont icon-delete cr-red" data-index="{{$type_v.id}}"></i>
</div>
</th>
{{/foreach}}
{{/if}}
<th class="title-start">
<span>{{:MyLang('common_service.goods.form_spec_thead_price_title')}}</span>
<i class="iconfont icon-edit am-fr"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}</span>
<i class="iconfont icon-edit am-fr"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_title')}}</span>
<i class="iconfont icon-edit am-fr"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_title')}}</span>
<i class="iconfont icon-edit am-fr"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}</span>
<i class="iconfont icon-edit am-fr"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}</span>
<i class="iconfont icon-edit am-fr"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}</span>
<i class="iconfont icon-edit am-fr"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}</span>
<i class="iconfont icon-edit am-fr"></i>
</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="{{:MyLang('common_service.goods.form_spec_thead_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_price_message')}}" data-is-clearout="0" required />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_original_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_original_price_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_buy_min_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_buy_max_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_weight[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_weight_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_volume[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_volume_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_coding[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_coding_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_barcode[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_barcode_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="hidden" name="specifications_extends[]" class="line-extend-input" />
<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">{{: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}}
{{if !empty($specifications['value'])}}
{{foreach $specifications.value as $line_k=>$line_v}}
<tr class="line-{{$line_k}} {{if $line_k gt 0}} line-not-first{{/if}}" data-line-tag=".line-{{$line_k}}">
{{foreach $line_v as $v}}
{{if isset($v['data_type'])}}
{{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="{{:MyLang('common_service.goods.form_spec_value_title')}}" value="{{$v.data.value}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_value_message')}}" class="am-radius" data-is-clearout="0" required />
</td>
{{/case}}
{{case base}}
<td class="am-text-middle value-start">
<input type="text" name="specifications_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_price_message')}}" value="{{if isset($v['data']['price'])}}{{$v.data.price}}{{/if}}" data-is-clearout="0" required />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_original_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_original_price_message')}}" value="{{if $v['data']['original_price'] gt 0}}{{$v.data.original_price}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_buy_min_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_message')}}" value="{{if !empty($v['data']['buy_min_number'])}}{{$v.data.buy_min_number}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_buy_max_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_message')}}" value="{{if !empty($v['data']['buy_max_number'])}}{{$v.data.buy_max_number}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_weight[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_weight_message')}}" value="{{if isset($v['data']['weight']) and $v['data']['weight'] gt 0}}{{$v.data.weight}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_volume[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}" class="am-radius" max="100000000" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_volume_message')}}" value="{{if isset($v['data']['volume']) and $v['data']['volume'] gt 0}}{{$v.data.volume}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_coding[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_coding_message')}}" value="{{if isset($v['data']['coding'])}}{{$v.data.coding}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_barcode[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_barcode_message')}}" value="{{if isset($v['data']['barcode'])}}{{$v.data.barcode}}{{/if}}" data-is-clearout="0" />
</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">{{: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">{{: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-secondary line-remove">{{:MyLang('remove_title')}}</a>
</td>
{{/case}}
{{/switch}}
{{/if}}
{{/foreach}}
</tr>
{{/foreach}}
{{/if}}
<th class="title-start">
<span>{{:MyLang('common_service.goods.form_spec_thead_price_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}</span>
<i class="am-icon-edit"></i>
</th>
<th>
<span>{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}</span>
<i class="am-icon-edit"></i>
</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="{{:MyLang('common_service.goods.form_spec_thead_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_price_message')}}" data-is-clearout="0" required />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_original_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_original_price_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_buy_min_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_buy_max_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_weight[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_weight_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_volume[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_volume_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_coding[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_coding_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_barcode[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_barcode_message')}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="hidden" name="specifications_extends[]" class="line-extend-input" />
<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">{{: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}}
{{if !empty($specifications['value'])}}
{{foreach $specifications.value as $line_k=>$line_v}}
<tr class="line-{{$line_k}} {{if $line_k gt 0}} line-not-first{{/if}}" data-line-tag=".line-{{$line_k}}">
{{foreach $line_v as $v}}
{{if isset($v['data_type'])}}
{{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="{{:MyLang('common_service.goods.form_spec_value_title')}}" value="{{$v.data.value}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_value_message')}}" class="am-radius" data-is-clearout="0" required />
</td>
{{/case}}
{{case base}}
<td class="am-text-middle value-start">
<input type="text" name="specifications_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_price_message')}}" value="{{if isset($v['data']['price'])}}{{$v.data.price}}{{/if}}" data-is-clearout="0" required />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_original_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_original_price_message')}}" value="{{if $v['data']['original_price'] gt 0}}{{$v.data.original_price}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_buy_min_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_message')}}" value="{{if !empty($v['data']['buy_min_number'])}}{{$v.data.buy_min_number}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_buy_max_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_message')}}" value="{{if !empty($v['data']['buy_max_number'])}}{{$v.data.buy_max_number}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_weight[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_weight_message')}}" value="{{if isset($v['data']['weight']) and $v['data']['weight'] gt 0}}{{$v.data.weight}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="number" name="specifications_volume[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}" class="am-radius" max="100000000" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_volume_message')}}" value="{{if isset($v['data']['volume']) and $v['data']['volume'] gt 0}}{{$v.data.volume}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_coding[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_coding_message')}}" value="{{if isset($v['data']['coding'])}}{{$v.data.coding}}{{/if}}" data-is-clearout="0" />
</td>
<td class="am-text-middle">
<input type="text" name="specifications_barcode[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_barcode_message')}}" value="{{if isset($v['data']['barcode'])}}{{$v.data.barcode}}{{/if}}" data-is-clearout="0" />
</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">{{: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">{{: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}}
{{/if}}
{{/foreach}}
</tr>
</tbody>
</table>
</div>
<div class="am-margin-top-sm am-border-bottom-table">
<span class="business-operations-submit specifications-line-add am-border-0 am-text-sm">
<i class="iconfont icon-add"></i>
{{:MyLang('common_service.goods.form_spec_row_add_title')}}
</span>
</div>
<div class="spec-images-list">
<div class="am-alert am-radius">
<span>{{:MyLang('common_service.goods.form_spec_images_tips')}}</span>
<span class="business-operations-submit specifications-line-images-add">
<i class="iconfont icon-add"></i>
{{:MyLang('common_service.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('common_service.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" data-is-clearout="0" />{{:MyLang('common_service.goods.form_spec_images_add_auto_last')}}</span>
</div>
<ul class="spec-images-content am-margin-top-sm">
{{if !empty($specifications['type'])}}
{{foreach $specifications.type as $type}}
{{if !empty($type['value'])}}
{{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="{{:MyLang('common_service.goods.form_spec_images_type_title')}}" class="am-radius am-text-center" data-validation-message="{{:MyLang('common_service.goods.form_spec_images_type_message')}}" value="{{$spec.name}}" data-is-clearout="0" 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-dialog-type="images">
<li>
<input type="hidden" name="spec_images[{{$type.id}}{{$spec_key}}]" value="{{$spec.images_old}}" data-validation-message="{{:MyLang('common_service.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}}">+ {{:MyLang('form_upload_images_title')}}</div>
</li>
{{/if}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
</tbody>
</table>
</div>
<div class="am-margin-top-sm">
<span class="business-operations-submit specifications-line-add">+ {{:MyLang('common_service.goods.form_spec_row_add_title')}}</span>
</div>
<div class="spec-images-list">
<div class="am-alert am-radius">
<span>{{:MyLang('common_service.goods.form_spec_images_tips')}}</span>
<span class="business-operations-submit specifications-line-images-add">+ {{:MyLang('common_service.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('common_service.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('common_service.goods.form_spec_images_add_auto_last')}}</span>
</ul>
</div>
<ul class="spec-images-content">
{{if !empty($specifications['type'])}}
{{foreach $specifications.type as $type}}
{{if !empty($type['value'])}}
{{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="{{:MyLang('common_service.goods.form_spec_images_type_title')}}" class="am-radius am-text-center" data-validation-message="{{:MyLang('common_service.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="{{:MyLang('common_service.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}}">+ {{:MyLang('form_upload_images_title')}}</div>
</li>
{{/if}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
</ul>
</div>
</div>
@ -277,35 +302,37 @@
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<div class="am-alert am-alert-secondary am-radius spec-title-container"></div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_price_title')}}</label>
<input type="text" placeholder="{{:MyLang('common_service.goods.form_spec_thead_price_title')}}" class="am-radius popup_all_price" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_price_message')}}" />
<div class="form-content">
<div class="am-tips-card spec-title-container"></div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_price_title')}}</label>
<input type="text" placeholder="{{:MyLang('common_service.goods.form_spec_thead_price_title')}}" class="am-radius popup_all_price" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_price_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}</label>
<input type="text" placeholder="{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}" class="am-radius popup_all_original_price" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_original_price_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}</label>
<input type="number" placeholder="{{:MyLang('common_service.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('common_service.goods.form_spec_thead_weight_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}</label>
<input type="number" placeholder="{{:MyLang('common_service.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('common_service.goods.form_spec_thead_volume_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}</label>
<input type="text" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius popup_all_coding" maxlength="80" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_coding_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}</label>
<input type="text" placeholder="{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}" class="am-radius popup_all_barcode" maxlength="80" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_barcode_message')}}" />
</div>
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}</label>
<input type="text" placeholder="{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}" class="am-radius popup_all_original_price" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_original_price_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}</label>
<input type="number" placeholder="{{:MyLang('common_service.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('common_service.goods.form_spec_thead_weight_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}</label>
<input type="number" placeholder="{{:MyLang('common_service.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('common_service.goods.form_spec_thead_volume_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}</label>
<input type="text" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius popup_all_coding" maxlength="80" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_coding_message')}}" />
</div>
<div class="am-form-group">
<label class="am-block">{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}</label>
<input type="text" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius popup_all_barcode" maxlength="80" data-validation-message="{{:MyLang('common_service.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">
<button type="button" class="am-btn am-btn-warning am-radius am-btn-sm am-margin-right-lg" data-am-modal-close>{{:MyLang('cancel_title')}}</button>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm am-margin-left-lg">{{:MyLang('confirm_title')}}</button>
<div class="am-form-popup-submit">
<div class="am-flex am-flex-justify-right am-flex-items-center am-gap-2">
<button type="button" class="am-btn am-btn-warning am-radius am-btn-sm" data-am-modal-close>{{:MyLang('cancel_title')}}</button>
<button type="button" class="am-btn am-btn-primary am-radius am-btn-sm">{{:MyLang('confirm_title')}}</button>
</div>
</div>
</div>
@ -315,15 +342,18 @@
<!-- 单个规格批量操作弹层 -->
<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 am-radius">{{:MyLang('common_service.goods.form_spec_all_operate_title')}}
<div class="am-modal-hd am-radius">
<span>{{:MyLang('common_service.goods.form_spec_all_operate_title')}}</span>
<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="{{:MyLang('common_service.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>
<div class="am-padding-top am-padding-horizontal-sm">
<div class="am-input-group am-input-group-sm">
<input type="text" class="am-form-field am-radius" placeholder="{{:MyLang('common_service.goods.form_spec_all_operate_placeholder')}}" />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default am-radius">{{:MyLang('confirm_title')}}</button>
</span>
</div>
</div>
</div>
</div>

View File

@ -1,5 +1,5 @@
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/goodsbrowse/detail', ['id'=>$module_data['id']])}}">
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/goodsbrowse/detail', ['id'=>$module_data['id']])}}" data-title="{{:MyLang('detail_title')}}">
<i class="am-icon-eye"></i>
<span>{{:MyLang('detail_title')}}</span>
</button>

View File

@ -1,5 +1,5 @@
<!-- 操作栏 -->
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/goodscart/detail', ['id'=>$module_data['id']])}}">
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('admin/goodscart/detail', ['id'=>$module_data['id']])}}" data-title="{{:MyLang('detail_title')}}">
<i class="am-icon-eye"></i>
<span>{{:MyLang('detail_title')}}</span>
</button>

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