后台多语言处理

This commit is contained in:
gongfuxiang 2023-02-01 22:41:26 +08:00
parent b355bb315a
commit 0070b30683
87 changed files with 1787 additions and 597 deletions

View File

@ -32,22 +32,18 @@ class AppConfig extends Base
*/
public function Index()
{
// 模板数据
// 导航
$type = empty($this->data_request['type']) ? 'index' : $this->data_request['type'];
$assign = [
// 配置数据
'data' => ConfigService::ConfigList(),
// 静态数据
'common_platform_type' => MyLang('common_platform_type'),
'common_is_text_list' => MyLang('common_is_text_list'),
'data' => ConfigService::ConfigList(),
// 管理导航
'nav_data' => MyLang('appconfig.base_nav_list'),
// 页面导航
'nav_type' => $type,
];
// 导航/视图
$nav_type = empty($this->data_request['nav_type']) ? 'base' : $this->data_request['nav_type'];
$assign['nav_type'] = $nav_type;
// 模板赋值
MyViewAssign($assign);
return MyView($nav_type);
return MyView($type);
}
/**

View File

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

View File

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

View File

@ -56,6 +56,8 @@ class Theme extends Base
$assign = [
// 导航参数
'view_type' => $this->view_type,
// 基础导航
'base_nav' => MyLang('appmini.base_nav_list'),
// 应用商店
'store_theme_url' => StoreService::StoreThemeUrl(),
];

View File

@ -36,6 +36,7 @@ class Admin
*/
public function Run($params = [])
{
$lang = MyLang('admin.form_table');
return [
// 基础配置
'base' => [
@ -58,7 +59,7 @@ class Admin
'width' => 80,
],
[
'label' => '管理员',
'label' => $lang['username'],
'view_type' => 'field',
'view_key' => 'username',
'is_sort' => 1,
@ -68,7 +69,7 @@ class Admin
],
],
[
'label' => '状态',
'label' => $lang['username'],
'view_type' => 'field',
'view_key' => 'status',
'view_data_key' => 'name',
@ -84,7 +85,7 @@ class Admin
],
],
[
'label' => '性别',
'label' => $lang['username'],
'view_type' => 'field',
'view_key' => 'gender',
'view_data_key' => 'name',
@ -100,7 +101,7 @@ class Admin
],
],
[
'label' => '手机',
'label' => $lang['mobile'],
'view_type' => 'field',
'view_key' => 'mobile',
'is_sort' => 1,
@ -110,7 +111,7 @@ class Admin
],
],
[
'label' => '邮箱',
'label' => $lang['email'],
'view_type' => 'field',
'view_key' => 'email',
'is_sort' => 1,
@ -120,7 +121,7 @@ class Admin
],
],
[
'label' => '角色组',
'label' => $lang['role_name'],
'view_type' => 'field',
'view_key' => 'role_name',
'is_sort' => 1,
@ -135,7 +136,7 @@ class Admin
],
],
[
'label' => '登录次数',
'label' => $lang['login_total'],
'view_type' => 'field',
'view_key' => 'login_total',
'is_sort' => 1,
@ -144,7 +145,7 @@ class Admin
],
],
[
'label' => '最后登录时间',
'label' => $lang['login_time'],
'view_type' => 'field',
'view_key' => 'login_time',
'is_sort' => 1,
@ -153,7 +154,7 @@ class Admin
],
],
[
'label' => '创建时间',
'label' => $lang['add_time'],
'view_type' => 'field',
'view_key' => 'add_time',
'is_sort' => 1,
@ -162,7 +163,7 @@ class Admin
],
],
[
'label' => '更新时间',
'label' => $lang['upd_time'],
'view_type' => 'field',
'view_key' => 'upd_time',
'is_sort' => 1,

View File

@ -145,7 +145,7 @@ class UserAddress
'label' => '经纬度',
'view_type' => 'module',
'view_key' => 'useraddress/module/position',
'grid_size' => 'sm',
'width' => 260,
],
[
'label' => '身份证信息',

View File

@ -180,7 +180,7 @@ class Warehouse
'label' => '经纬度',
'view_type' => 'module',
'view_key' => 'warehouse/module/position',
'grid_size' => 'sm',
'width' => 260,
],
[
'label' => '创建时间',

View File

@ -129,6 +129,7 @@ class WarehouseGoods
'view_key' => 'warehousegoods/module/spec_inventory',
'is_sort' => 1,
'grid_size' => 'lg',
'is_detail' => 0,
'params_where_name' => 'spec_inventory',
'search_config' => [
'form_type' => 'section',

View File

@ -79,6 +79,93 @@ return [
],
],
// 用户
'user' => [
'base_nav_title' => 'User',
// 表单
'form_item_system_type' => 'System Type',
'form_item_system_type_tips' => 'default',
'form_item_system_type_message' => 'System type 2~60 characters',
'form_item_username' => 'Username',
'form_item_username_message' => 'User name 2~30 characters',
'form_item_nickname' => 'Nickname',
'form_item_nickname_message' => 'Nickname can be up to 30 characters',
'form_item_mobile' => 'Phone Number',
'form_item_mobile_message' => 'Mobile number format error',
'form_item_email' => 'E-mail',
'form_item_email_message' => 'Email format error',
'form_item_alipay_openid' => 'Alipay openid',
'form_item_alipay_openid_message' => 'Please fill in Alipay openid',
'form_item_baidu_openid' => 'Baidu openid',
'form_item_baidu_openid_message' => 'Please fill in Baidu openid',
'form_item_toutiao_openid' => 'Toutiao openid',
'form_item_toutiao_openid_message' => 'Please fill in the header openid',
'form_item_toutiao_unionid' => 'Toutiao unionid',
'form_item_toutiao_unionid_message' => 'Please fill in the headline unionid',
'form_item_qq_openid' => 'QQopenid',
'form_item_qq_openid_message' => 'Please fill in QQ openid',
'form_item_qq_unionid' => 'QQunionid',
'form_item_qq_unionid_message' => 'Please fill in QQuinonid',
'form_item_weixin_openid' => 'WeChat openid',
'form_item_weixin_openid_message' => 'Please fill in WeChat openid',
'form_item_weixin_unionid' => 'WeChat unionid',
'form_item_weixin_unionid_message' => 'Please fill in WeChat unionid',
'form_item_web_weixin_openid' => 'WeChat webopenid',
'form_item_web_weixin_openid_message' => 'Please fill in WeChat webopenid',
'form_item_kuaishou_openid' => 'Kwai openid',
'form_item_kuaishou_openid_message' => 'Please fill in the Kwai openid',
'form_item_province' => 'Province',
'form_item_province_message' => 'Maximum 60 characters in the province',
'form_item_city' => 'City',
'form_item_city_message' => 'Maximum 60 characters in the city',
'form_item_county' => 'District/County',
'form_item_county_message' => '60 characters at most in the district/county',
'form_item_address' => 'Detail Address',
'form_item_address_message' => 'Detail Address format is up to 80 characters',
'form_item_integral' => 'Valid Integral',
'form_item_integral_message' => 'Please enter valid points',
'form_item_locking_integral' => 'Lock Integral',
'form_item_locking_integral_message' => 'Please enter locked points',
'form_item_birthday' => 'Birthday',
'form_item_birthday_message' => 'Incorrect birthday format',
'form_item_referrer' => 'Invite User ID',
'form_item_referrer_message' => 'Please enter the invitation user ID',
'form_item_pwd' => 'Login Password',
'form_item_pwd_tips' => 'Enter to change the password',
'form_item_pwd_message' => 'Login password format is between 6 and 18 characters',
],
// 用户地址
'useraddress' => [
'base_nav_title' => 'User Address',
// 表单
'form_item_user_id' => 'User ID',
'form_item_user_id_message' => 'Please fill in user id',
'form_item_name' => 'Full Name',
'form_item_name_message' => 'Name format is between 2 and 16 characters',
'form_item_alias' => 'Alias',
'form_item_alias_message' => 'Alias format can be up to 16 characters',
'form_item_tel' => 'Telephone',
'form_item_tel_message' => 'Incorrect phone format',
'form_item_address' => 'Detailed Address',
'form_item_address_message' => 'Detailed address format is between 1 and 80 characters',
'form_item_idcard_name' => 'ID Card Name',
'form_item_idcard_name_tips' => 'Optional, please be consistent with the uploaded ID name',
'form_item_idcard_name_message' => 'The name format of ID card can be up to 16 characters',
'form_item_idcard_number' => 'ID No',
'form_item_idcard_number_tips' => 'Optional, please be consistent with the uploaded ID number',
'form_item_idcard_number_message' => 'ID card number format can be up to 18 characters',
'form_item_idcard_images' => 'ID Card Photo',
'form_item_idcard_images_tips' => 'For selective transmission, please use the original ID card to shoot, and the picture should be clear',
'form_item_idcard_front_button_name' => 'Upload IDCard Front Pictures',
'form_item_idcard_back_button_name' => 'Upload IDCard Back Pictures',
'form_item_idcard_no_user_tips' => 'Associate users before uploading ID card images',
// 详情
'detail_user_address_idcard_name' => 'Full Name',
'detail_user_address_idcard_number' => 'Number',
'detail_user_address_idcard_pic' => 'Photo',
],
// 站点设置
'site' => [
// 页面公共
@ -303,12 +390,45 @@ return [
'form_is_reply' => 'Reply or not',
],
// 仓库管理
'warehouse' => [
'base_nav_title' => 'Warehouse',
'top_tips_list' => [
'1. The higher the weight value is, the higher the weight is. The inventory is deducted according to the weight.)',
'2. The warehouse can only be soft-deleted, will not be available after deletion, and only the data in the database can be retained), and the associated commodity data can be deleted by itself',
'3. The warehouse will be deactivated and deleted, and the associated commodity inventory will be released immediately',
],
// 表单
'form_item_name' => 'Full Name',
'form_item_name_message' => 'Name format is between 2 and 30 characters',
'form_item_alias' => 'Alias',
'form_item_alias_message' => 'Alias format can be up to 16 characters',
'form_item_level' => 'Weight',
'form_item_level_tips' => 'The higher the weight value, the higher the weight',
'form_item_level_message' => 'Please enter a valid weight value',
'form_item_contacts_name' => 'Contacts Name',
'form_item_contacts_name_message' => 'Contact format is between 2 and 16 characters',
'form_item_contacts_tel' => 'Contact Tel',
'form_item_contacts_tel_message' => 'Please fill in the contact number',
'form_item_address' => 'Detail Address',
'form_item_address_message' => 'Address format is between 1 and 80 characters',
],
// 仓库商品
'warehousegoods' => [
// 页面公共
'page_common' => [
'warehouse_choice_tips' => 'Please select a warehouse',
],
// 基础
'no_spec_data_tips' => 'No specification data',
'batch_setup_inventory_placeholder' => 'Batch set value',
'base_spec_inventory_title' => 'Specification Inventory',
// 表单
'add_goods_title' => 'Goods Add',
'form_item_warehouseg_placeholder' => 'Warehouse...',
'form_item_warehouseg_message' => 'Please select a warehouse',
'form_item_inventory_message' => 'Inventory quantity 0~100000000',
],
// 管理员
@ -348,6 +468,19 @@ return [
'form_item_password_edit_tips' => 'Enter to change the password',
'form_item_status' => 'Status',
'form_item_status_message' => 'Please select user status',
// 动态表格
'form_table' => [
'username' => 'Admin',
'status' => 'Status',
'gender' => 'Gender',
'mobile' => 'Mobile',
'email' => 'Email',
'role_name' => 'Role Group',
'login_total' => 'Number of Logins',
'login_time' => 'Last Login Time',
'add_time' => 'Creation Time',
'upd_time' => 'Update Time',
],
],
// 协议
@ -362,6 +495,15 @@ return [
'view_detail_name' => 'View Details',
],
// 手机配置
'appconfig' => [
// 基础导航
'base_nav_list' => [
['name' => 'BaseConfig', 'type' => 'index'],
['name' => 'APP/Applet', 'type' => 'app'],
],
],
// 小程序管理
'appmini' => [
// 基础导航
@ -381,11 +523,24 @@ return [
'package_generate_tips' => 'The generation time is relatively long, please do not close the browser window!',
],
// 短信设置
'sms' => [
// 基础导航
'base_nav_list' => [
['name' => 'Sms Settings', 'type' => 'index'],
['name' => 'Message Template', 'type' => 'message'],
],
'top_tips' => 'AliCloud SMS management address',
'top_to_aliyun_tips' => 'Click to buy SMS from AliCloud',
'base_item_admin_title' => 'Admin',
'base_item_index_title' => 'Home',
],
// 邮箱设置
'email' => [
// 基础导航
'base_nav_list' => [
['name' => 'Mailbox Settings', 'type' => 'index'],
['name' => 'Email Settings', 'type' => 'index'],
['name' => 'Message Template', 'type' => 'message'],
],
'top_tips' => 'Due to some differences between different mailbox platforms and different configurations, the specific configuration of the mailbox platform is subject to the tutorial',
@ -744,7 +899,7 @@ return [
],
]
],
'upload_top_tips_ps' => 'PS: If the above conditions are not met, the plug-in cannot be viewed. Put the plug-in into the. zip compression package to upload, and support multiple payment plug-ins in one compression',
'upload_top_tips_ps' => 'PS: If the above conditions are not met, the plug-in cannot be viewed. Put the plug-in into the. zip compression package to upload, and support multiple payment plugins in one compression',
// 表单
'form_item_name' => 'Name',
'form_item_name_message' => 'Name format 2~30 characters',
@ -766,6 +921,18 @@ return [
'form_item_website_url_message' => 'Incorrect format of official website address',
],
// 主题管理
'theme' => [
'base_nav_list' => [
['name' => 'Current Theme', 'type' => 'index'],
['name' => 'Theme Install', 'type' => 'upload'],
],
'nav_store_theme_name' => 'More topic downloads',
'list_author_title' => 'Author',
'list_version_title' => 'Applicable Version',
'form_item_upload_tips' => 'Upload an application installation package in zip compression format',
],
// 用户中心导航
'appcenternav' => [
'base_nav_title' => 'Mobile User Center Navigation',
@ -821,11 +988,11 @@ return [
'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_open_sort_title' => 'Enable sorting',
'data_list_author_title' => 'Author',
'data_list_author_url_title' => 'HomePage',
'data_list_version_title' => 'Version',
'data_list_author_title' => 'Author',
'data_list_author_url_title' => 'HomePage',
'data_list_version_title' => 'Version',
'uninstall_confirm_tips' => 'Uninstallation may lose the basic configuration data of the plug-in. Is it unrecoverable and confirm the operation?',
'not_install_divide_title' => 'The following plug-ins are not installed',
'not_install_divide_title' => 'The following plugins are not installed',
'delete_plugins_text' => '1. Delete apps only',
'delete_plugins_text_tips' => '(Only delete the application code and keep the application data)',
'delete_plugins_data_text' => '2. Delete app and delete data',
@ -834,7 +1001,7 @@ return [
'delete_plugins_button_name' => 'Delete apps only',
'delete_plugins_data_button_name' => 'Delete apps and data',
'cancel_delete_plugins_button_name' => 'Think again',
'more_plugins_store_to_text' => 'Go to the app store to select more plug-ins to enrich the site >>',
'more_plugins_store_to_text' => 'Go to the app store to select more plugins to enrich the site >>',
'no_data_store_to_text' => 'Go to the app store to select plug-in rich sites >>',
'plugins_no_data_tips' => 'There is no relevant application yet',
// 表单
@ -967,11 +1134,40 @@ return [
'form_item_max_price_message' => 'Incorrect maximum price',
],
// 首页轮播
'slide' => [
'base_nav_title' => 'Slide',
// 表单
'form_item_name' => 'Name',
'form_item_name_message' => 'Name format: 2~60 characters',
'form_item_images_url' => 'Slide Pictures',
'form_item_images_url_tips' => [
'1. Recommended size of PC end: 1920 * 480px',
'2. Recommended size of mobile terminal: 1200 * 360px',
],
],
// 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.',
'form_sql_placeholder' => 'SQL Statement',
'form_sql_message' => 'Please fill in the SQL statement to be executed',
'form_dev_tips' => 'If you need to execute SQL statements, change the [is_develop] value in the [config/shopxo. php] file to [true] to enable developer mode.',
],
// 应用商店
'store' => [
'top_tips' => 'ShopXO excellent application list, where the most senior, technically capable and reliable ShopXO developers are gathered to provide a comprehensive escort for your plug-in, style and template customization.',
'to_store_name' => 'Go to the app store to select plugins >>',
],
// 公共
'common' => [
// 公共
'admin_browser_title' => 'Background management system',
'remove_cache_title' => 'Clear Cache',
'user_status_title' => 'User Status',
'user_status_message' => 'Please select user status',
// 商店绑定
'store_check_update_name' => 'Check for update',
'store_bind_accounts_name' => 'Bind ShopXO store account',
@ -1008,5 +1204,333 @@ return [
'4. The shortcut operation will clear the original data and reload the page to restore the original data (only effective after saving the product)',
],
],
// 后台权限菜单
'admin_power_menu_list' => [
'config_index' => [
'name' => 'System Setup',
'item' => [
'config_index' => 'System config',
'config_store' => 'Store info',
'config_save' => 'Configuration save',
'index_storeaccountsbind' => 'App store account binding',
'index_inspectupgrade' => 'System update check',
'index_inspectupgradeconfirm' => 'System update confirmation',
'index_stats' => 'Home page statistics',
'index_income' => 'Home page Statistics (income statistics]',
]
],
'site_index' => [
'name' => 'Site Config',
'item' => [
'site_index' => 'Site setup',
'site_save' => 'Site setup editing',
'site_goodssearch' => 'Site setup and product search',
'layout_layoutindexhomesave' => 'Homepage layout admin',
'sms_index' => 'SMS setup',
'sms_save' => 'SMS setup editing',
'email_index' => 'Email setup',
'email_save' => 'Email setup / editing',
'email_emailtest' => 'Mail sending test',
'seo_index' => 'SEO setup',
'seo_save' => 'SEO setup editing',
'agreement_index' => 'Agreement admin',
'agreement_save' => 'Protocol setup editing',
]
],
'power_index' => [
'name' => 'Power Control',
'item' => [
'admin_index' => 'Admin list',
'admin_saveinfo' => 'Admin add/edit page',
'admin_save' => 'Admin add/edit',
'admin_delete' => 'Admin delete',
'admin_detail' => 'Admin details',
'role_index' => 'Role admin',
'role_saveinfo' => 'Role group add/edit page',
'role_save' => 'Role group add/edit',
'role_delete' => 'Role delete',
'role_statusupdate' => 'Role status update',
'role_detail' => 'Role details',
'power_index' => 'Power divide',
'power_save' => 'Power add/edit',
'power_delete' => 'Power delete',
]
],
'user_index' => [
'name' => 'User Admin',
'item' => [
'user_index' => 'User list',
'user_saveinfo' => 'User edit / add page',
'user_save' => 'User add/edit',
'user_delete' => 'User delete',
'user_detail' => 'User details',
'useraddress_index' => 'User address',
'useraddress_saveinfo' => 'User address edit page',
'useraddress_save' => 'User address editing',
'useraddress_delete' => 'User address delete',
'useraddress_detail' => 'User address details',
]
],
'goods_index' => [
'name' => 'Goods Admin',
'item' => [
'goods_index' => 'Goods admin',
'goods_saveinfo' => 'Goods add/edit page',
'goods_save' => 'Item add/edit',
'goods_delete' => 'Goods delete',
'goods_statusupdate' => 'Goods status update',
'goods_basetemplate' => 'Get commodity base template',
'goods_detail' => 'Goods details',
'goodscategory_index' => 'Goods category',
'goodscategory_save' => 'Goods category add/edit',
'goodscategory_delete' => 'Goods category delete',
'goodsparamstemplate_index' => 'Goods params',
'goodsparamstemplate_delete' => 'Delete commodity params',
'goodsparamstemplate_statusupdate' => 'Goods params status update',
'goodsparamstemplate_saveinfo' => 'Goods params add/edit page',
'goodsparamstemplate_save' => 'Goods params add/edit ',
'goodsparamstemplate_detail' => 'Goods params details',
'goodsspectemplate_index' => 'Goods spec',
'goodsspectemplate_delete' => 'Item spec delete',
'goodsspectemplate_statusupdate' => 'Goods spec status update',
'goodsspectemplate_saveinfo' => 'Goods spec add/edit page',
'goodsspectemplate_save' => 'Goods spec add/edit',
'goodsspectemplate_detail' => 'Goods spec details',
'goodscomments_detail' => 'Goods review details',
'goodscomments_index' => 'Goods review',
'goodscomments_reply' => 'Goods comment reply',
'goodscomments_delete' => 'Goods comment delete',
'goodscomments_statusupdate' => 'Goods review status update',
'goodscomments_saveinfo' => 'Goods comment add/edit page',
'goodscomments_save' => 'Goods comments add/edit',
'goodsbrowse_index' => 'Goods browsing',
'goodsbrowse_delete' => 'Goods browse delete',
'goodsbrowse_detail' => 'Goods browsing details',
'goodsfavor_index' => 'Goods favor',
'goodsfavor_delete' => 'Delete item favor',
'goodsfavor_detail' => 'Collection details',
'goodscart_index' => 'Shopping cart',
'goodscart_delete' => 'Item Cart Delete',
'goodscart_detail' => 'Shopping Cart Details',
]
],
'order_index' => [
'name' => 'Order Admin',
'item' => [
'order_index' => 'Order admin',
'order_delete' => 'Order delete',
'order_cancel' => 'Order cancellation',
'order_delivery' => 'Order delivery',
'order_collect' => 'Order receipt',
'order_pay' => 'Order payment',
'order_confirm' => 'acknowledgement of order',
'order_detail' => 'Order details',
'orderaftersale_index' => 'Order after sales',
'orderaftersale_delete' => 'After sales order delete',
'orderaftersale_cancel' => 'Order after-sales cancellation',
'orderaftersale_audit' => 'Order after sales review',
'orderaftersale_confirm' => 'Order after sales confirmation',
'orderaftersale_refuse' => 'After sales rejection of order',
'orderaftersale_detail' => 'Order after sales details',
]
],
'navigation_index' => [
'name' => 'Website Admin',
'item' => [
'navigation_index' => 'Navigation admin',
'navigation_save' => 'Navigation add/edit',
'navigation_delete' => 'Navigation delete',
'navigation_statusupdate' => 'Navigation status update',
'customview_index' => 'Custom page',
'customview_saveinfo' => 'Custom page add/edit page',
'customview_save' => 'Custom page add/edit',
'customview_delete' => 'Custom page delete',
'customview_statusupdate' => 'Custom page status update',
'customview_detail' => 'Custom page details',
'link_index' => 'Links',
'link_saveinfo' => 'Link add/edit page',
'link_save' => 'Add / Edit Links',
'link_delete' => 'Link delete',
'link_statusupdate' => 'Link status update',
'link_detail' => 'Link details',
'theme_index' => 'Theme admin',
'theme_save' => 'Topic admin add/edit',
'theme_upload' => 'Theme upload and installation',
'theme_delete' => 'Subject delete',
'theme_download' => 'Theme download',
'slide_index' => 'Home page rotation',
'slide_saveinfo' => 'Carousel add/edit page',
'slide_save' => 'Carousel add/edit',
'slide_statusupdate' => 'Rotation status update',
'slide_delete' => 'Rotation delete',
'slide_detail' => 'Rotation details',
'screeningprice_index' => 'Screening price',
'screeningprice_save' => 'Filter price add/edit',
'screeningprice_delete' => 'Filter price delete',
'region_index' => 'Regional admin',
'region_save' => 'Region add/edit',
'region_delete' => 'Region delete',
'region_codedata' => 'Get area number data',
'express_index' => 'Express Management',
'express_save' => 'Express add/edit',
'express_delete' => 'Express delete',
'payment_index' => 'Payment method',
'payment_saveinfo' => 'Payment method installation / editing page',
'payment_save' => 'Payment method installation / editing',
'payment_delete' => 'Payment method delete',
'payment_install' => 'Payment method installation',
'payment_statusupdate' => 'Payment method status update',
'payment_uninstall' => 'Payment method unloading',
'payment_upload' => 'Payment method upload',
'quicknav_index' => 'Quick navigation',
'quicknav_saveinfo' => 'Quick navigation add/edit page',
'quicknav_save' => 'Quick navigation add/edit',
'quicknav_statusupdate' => 'Quick navigation status update',
'quicknav_delete' => 'Quick navigation delete',
'quicknav_detail' => 'Quick navigation details',
'design_index' => 'Page design',
'design_saveinfo' => 'Page design add/edit page',
'design_save' => 'Page design add/edit',
'design_statusupdate' => 'Page design status update',
'design_upload' => 'Page design import',
'design_download' => 'Page Design Download',
'design_sync' => 'Page design synchronization home page',
'design_delete' => 'Page design delete',
]
],
'brand_index' => [
'name' => 'Brand Admin',
'item' => [
'brand_index' => 'Brand admin',
'brand_saveinfo' => 'Brand add/edit page',
'brand_save' => 'Brand add/edit',
'brand_statusupdate' => 'Brand status update',
'brand_delete' => 'Brand delete',
'brand_detail' => 'Brand details',
'brandcategory_index' => 'Brand classification',
'brandcategory_save' => 'Brand category add/edit',
'brandcategory_delete' => 'Brand classification delete',
]
],
'warehouse_index' => [
'name' => 'Warehouse Admin',
'item' => [
'warehouse_index' => 'Warehouse admin',
'warehouse_saveinfo' => 'Warehouse add/edit page',
'warehouse_save' => 'Warehouse add/edit',
'warehouse_delete' => 'Warehouse delete',
'warehouse_statusupdate' => 'Warehouse status update',
'warehouse_detail' => 'Warehouse details',
'warehousegoods_index' => 'Warehouse commodity admin',
'warehousegoods_detail' => 'Warehouse item details',
'warehousegoods_delete' => 'Warehouse Item Deletion',
'warehousegoods_statusupdate' => 'Warehouse commodity status update',
'warehousegoods_goodssearch' => 'Warehouse item search',
'warehousegoods_goodsadd' => 'Warehouse item search add',
'warehousegoods_goodsdel' => 'Warehouse item search delete',
'warehousegoods_inventoryinfo' => 'Warehouse commodity inventory editing page',
'warehousegoods_inventorysave' => 'Edit warehouse inventory',
]
],
'app_index' => [
'name' => 'Mobile Admin',
'item' => [
'appconfig_index' => 'Basic config',
'appconfig_save' => 'Basic config saving',
'apphomenav_index' => 'Home page navigation',
'apphomenav_saveinfo' => 'Home navigation add/edit page',
'apphomenav_save' => 'Home page navigation add/edit',
'apphomenav_statusupdate' => 'Homepage navigation status update',
'apphomenav_delete' => 'Home page navigation delete',
'apphomenav_detail' => 'Home page navigation details',
'appcenternav_index' => 'User center navigation',
'appcenternav_saveinfo' => 'User center navigation add/edit page',
'appcenternav_save' => 'User center navigation add/edit',
'appcenternav_statusupdate' => 'User center navigation status update',
'appcenternav_delete' => 'User center navigation delete',
'appcenternav_detail' => 'User center navigation details',
'appmini_index' => 'Applet list',
'appmini_created' => 'Applet package generation',
'appmini_delete' => 'Applet package delete',
'appmini_themeupload' => 'Applet theme upload',
'appmini_themesave' => 'Applet theme switching',
'appmini_themedelete' => 'Applet theme switching',
'appmini_themedownload' => 'Applet theme download',
'appmini_config' => 'Applet config',
'appmini_save' => 'Applet config save',
]
],
'article_index' => [
'name' => 'Article Admin',
'item' => [
'article_index' => 'Article admin',
'article_saveinfo' => 'Article add/edit page',
'article_save' => 'Article add/edit',
'article_delete' => 'Article delete',
'article_statusupdate' => 'Article status update',
'article_detail' => 'Article details',
'articlecategory_index' => 'Article classification',
'articlecategory_save' => 'Article classification editing / adding',
'articlecategory_delete' => 'Article classification delete',
]
],
'data_index' => [
'name' => 'data Admin',
'item' => [
'answer_index' => 'Q&A message',
'answer_reply' => 'Q&A message reply',
'answer_delete' => 'Q&A message delete',
'answer_statusupdate' => 'Update message status',
'answer_saveinfo' => 'Q&A add/edit page',
'answer_save' => 'Q&A add/edit',
'answer_detail' => 'Q&A message details',
'message_index' => 'Message admin',
'message_delete' => 'Message delete',
'message_detail' => 'Message details',
'paylog_index' => 'Payment log',
'paylog_detail' => 'Payment log details',
'paylog_close' => 'Payment log closed',
'payrequestlog_index' => 'Payment request log list',
'payrequestlog_detail' => 'Payment request log details',
'refundlog_index' => 'Refund log',
'refundlog_detail' => 'Refund log details',
'integrallog_index' => 'Integral log',
'integrallog_detail' => 'Points log details',
]
],
'store_index' => [
'name' => 'Application Center',
'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',
]
],
'tool_index' => [
'name' => 'Tools',
'item' => [
'cache_index' => 'Cache admin',
'cache_statusupdate' => 'Site cache update',
'cache_templateupdate' => 'Template cache update',
'cache_moduleupdate' => 'Module cache update',
'cache_logdelete' => 'Log delete',
'sqlconsole_index' => 'SQL console',
'sqlconsole_implement' => 'SQL execution',
]
],
],
];
?>

View File

@ -79,6 +79,93 @@ return [
],
],
// 用户
'user' => [
'base_nav_title' => '用户',
// 表单
'form_item_system_type' => '系统类型',
'form_item_system_type_tips' => '默认 default',
'form_item_system_type_message' => '系统类型2~60字符',
'form_item_username' => '用户名',
'form_item_username_message' => '用户名2~30个字符',
'form_item_nickname' => '昵称',
'form_item_nickname_message' => '昵称最多30个字符',
'form_item_mobile' => '手机号码',
'form_item_mobile_message' => '手机号码格式错误',
'form_item_email' => '电子邮箱',
'form_item_email_message' => '电子邮箱格式错误',
'form_item_alipay_openid' => '支付宝openid',
'form_item_alipay_openid_message' => '请填写支付宝openid',
'form_item_baidu_openid' => '百度openid',
'form_item_baidu_openid_message' => '请填写百度openid',
'form_item_toutiao_openid' => '头条openid',
'form_item_toutiao_openid_message' => '请填写头条openid',
'form_item_toutiao_unionid' => '头条unionid',
'form_item_toutiao_unionid_message' => '请填写头条unionid',
'form_item_qq_openid' => 'QQopenid',
'form_item_qq_openid_message' => '请填写QQopenid',
'form_item_qq_unionid' => 'QQunionid',
'form_item_qq_unionid_message' => '请填写QQunionid',
'form_item_weixin_openid' => '微信openid',
'form_item_weixin_openid_message' => '请填写微信openid',
'form_item_weixin_unionid' => '微信unionid',
'form_item_weixin_unionid_message' => '请填写微信unionid',
'form_item_web_weixin_openid' => '微信webopenid',
'form_item_web_weixin_openid_message' => '请填写微信webopenid',
'form_item_kuaishou_openid' => '快手openid',
'form_item_kuaishou_openid_message' => '请填写快手openid',
'form_item_province' => '所在省',
'form_item_province_message' => '所在省最多60个字符',
'form_item_city' => '所在市',
'form_item_city_message' => '所在市最多60个字符',
'form_item_county' => '所在区/县',
'form_item_county_message' => '所在区/县最多60个字符',
'form_item_address' => '详细地址',
'form_item_address_message' => '地址格式最多80个字符',
'form_item_integral' => '有效积分',
'form_item_integral_message' => '请输入有效积分',
'form_item_locking_integral' => '锁定积分',
'form_item_locking_integral_message' => '请输入锁定积分',
'form_item_birthday' => '生日',
'form_item_birthday_message' => '生日格式有误',
'form_item_referrer' => '邀请用户ID',
'form_item_referrer_message' => '请输入邀请用户ID',
'form_item_pwd' => '登录密码',
'form_item_pwd_tips' => '输入则修改密码',
'form_item_pwd_message' => '登录密码格式6~18个字符之间',
],
// 用户地址
'useraddress' => [
'base_nav_title' => '用户地址',
// 表单
'form_item_user_id' => '用户id',
'form_item_user_id_message' => '请填写用户id',
'form_item_name' => '姓名',
'form_item_name_message' => '姓名格式2~16个字符之间',
'form_item_alias' => '别名',
'form_item_alias_message' => '别名格式最多16个字符',
'form_item_tel' => '电话',
'form_item_tel_message' => '电话格式有误',
'form_item_address' => '详细地址',
'form_item_address_message' => '详细地址格式1~80个字符之间',
'form_item_idcard_name' => '身份证姓名',
'form_item_idcard_name_tips' => '选填,请务必与上传的身份证件姓名保持一致',
'form_item_idcard_name_message' => '身份证姓名格式最多16个字符',
'form_item_idcard_number' => '身份证号码',
'form_item_idcard_number_tips' => '选填,请务必与上传的身份证件号码保持一致',
'form_item_idcard_number_message' => '身份证号码格式最多18个字符',
'form_item_idcard_images' => '身份证照片',
'form_item_idcard_images_tips' => '选传,请使用身份证原件拍摄,图片要清晰',
'form_item_idcard_front_button_name' => '上传人像面图片',
'form_item_idcard_back_button_name' => '上传国微面图片',
'form_item_idcard_no_user_tips' => '先关联用户后再上传身份证图片',
// 详情
'detail_user_address_idcard_name' => '姓名',
'detail_user_address_idcard_number' => '号码',
'detail_user_address_idcard_pic' => '照片',
],
// 站点设置
'site' => [
// 页面公共
@ -303,12 +390,45 @@ return [
'form_is_reply' => '是否已回复',
],
// 仓库管理
'warehouse' => [
'base_nav_title' => '仓库',
'top_tips_list' => [
'1. 权重数值越大代表权重越高、扣除库存按照权重依次扣除)',
'2. 仓库仅软删除、删除后将不可用、仅数据库中保留数据)可以自行删除关联的商品数据',
'3. 仓库停用和删除、关联的商品库存会立即释放',
],
// 表单
'form_item_name' => '姓名',
'form_item_name_message' => '姓名格式2~30个字符之间',
'form_item_alias' => '别名',
'form_item_alias_message' => '别名格式最多16个字符',
'form_item_level' => '权重',
'form_item_level_tips' => '权重数值越大代表权重越高',
'form_item_level_message' => '请输入有效权重数值',
'form_item_contacts_name' => '联系人',
'form_item_contacts_name_message' => '联系人格式2~16个字符之间',
'form_item_contacts_tel' => '联系电话',
'form_item_contacts_tel_message' => '请填写联系电话',
'form_item_address' => '详细地址',
'form_item_address_message' => '地址格式1~80个字符之间',
],
// 仓库商品
'warehousegoods' => [
// 页面公共
'page_common' => [
'warehouse_choice_tips' => '请选择仓库',
],
// 基础
'no_spec_data_tips' => '无规格数据',
'batch_setup_inventory_placeholder' => '批量设置的值',
'base_spec_inventory_title' => '规格库存',
// 表单
'add_goods_title' => '商品添加',
'form_item_warehouseg_placeholder' => '仓库...',
'form_item_warehouseg_message' => '请选择仓库',
'form_item_inventory_message' => '库存数量0~100000000',
],
// 管理员
@ -348,6 +468,19 @@ return [
'form_item_password_edit_tips' => '输入则修改密码',
'form_item_status' => '状态',
'form_item_status_message' => '请选择用户状态',
// 动态表格
'form_table' => [
'username' => '管理员',
'status' => '状态',
'gender' => '性别',
'mobile' => '手机',
'email' => '邮箱',
'role_name' => '角色组',
'login_total' => '登录次数',
'login_time' => '最后登录时间',
'add_time' => '创建时间',
'upd_time' => '更新时间',
],
],
// 协议
@ -362,6 +495,15 @@ return [
'view_detail_name' => '查看详情',
],
// 手机配置
'appconfig' => [
// 基础导航
'base_nav_list' => [
['name' => '基础配置', 'type' => 'index'],
['name' => 'APP/小程序', 'type' => 'app'],
],
],
// 小程序管理
'appmini' => [
// 基础导航
@ -381,6 +523,19 @@ return [
'package_generate_tips' => '生成时间比较长,请不要关闭浏览器窗口!',
],
// 短信设置
'sms' => [
// 基础导航
'base_nav_list' => [
['name' => '短信设置', 'type' => 'index'],
['name' => '消息模板', 'type' => 'message'],
],
'top_tips' => '阿里云短信管理地址',
'top_to_aliyun_tips' => '点击去阿里云购买短信',
'base_item_admin_title' => '后台',
'base_item_index_title' => '前端',
],
// 邮箱设置
'email' => [
// 基础导航
@ -684,7 +839,7 @@ return [
'detail_user_address_value' => '详细地址',
'detail_user_address_idcard' => '身份证信息',
'detail_user_address_idcard_name' => '姓名',
'detail_user_address_idcard_number' => '姓名',
'detail_user_address_idcard_number' => '号码',
'detail_user_address_idcard_pic' => '照片',
'detail_take_address_title' => '取货地址',
'detail_take_address_contact' => '联系信息',
@ -766,6 +921,18 @@ return [
'form_item_website_url_message' => '官网地址格式有误',
],
// 主题管理
'theme' => [
'base_nav_list' => [
['name' => '当前主题', 'type' => 'index'],
['name' => '主题安装', 'type' => 'upload'],
],
'nav_store_theme_name' => '更多主题下载',
'list_author_title' => '作者:',
'list_version_title' => '适用版本:',
'form_item_upload_tips' => '上传一个zip压缩格式的应用安装包',
],
// 用户中心导航
'appcenternav' => [
'base_nav_title' => '手机用户中心导航',
@ -821,9 +988,9 @@ return [
'base_top_tips_one' => '列表排序方式[ 自定义排序 -> 最早安装 ]',
'base_top_tips_two' => '可点击拖动图标按钮调整插件调用和展示顺序',
'base_open_sort_title' => '开启排序',
'data_list_author_title' => '作者',
'data_list_author_url_title' => '主页',
'data_list_version_title' => '版本',
'data_list_author_title' => '作者',
'data_list_author_url_title' => '主页',
'data_list_version_title' => '版本',
'uninstall_confirm_tips' => '卸载可能会丢失插件基础配置数据不可恢复、确认操作吗?',
'not_install_divide_title' => '以下插件未安装',
'delete_plugins_text' => '1. 仅删除应用',
@ -967,6 +1134,33 @@ return [
'form_item_max_price_message' => '最大价格有误',
],
// 首页轮播
'slide' => [
'base_nav_title' => '轮播',
// 表单
'form_item_name' => '名称',
'form_item_name_message' => '名称格式2~60个字符',
'form_item_images_url' => '轮播图片',
'form_item_images_url_tips' => [
'1. PC端建议尺寸1920*480px',
'2. 手机端建议尺寸1200*360px',
],
],
// sql控制台
'sqlconsole' => [
'top_tips' => 'PS非开发人员请不要随意执行任何SQL语句操作可能导致将整个系统数据库被删除。',
'form_sql_placeholder' => 'SQL语句',
'form_sql_message' => '请填写需要执行的SQL语句',
'form_dev_tips' => '如需要执行SQL 语句,请在[ config/shopxo.php ]文件中[ is_develop ]值改为[ true ]开启开发者模式。',
],
// 应用商店
'store' => [
'top_tips' => 'ShopXO优秀应用列表这里云集了最资深技术能力最强最可信赖的ShopXO开发者为您的插件、风格、模板定制全面护航。',
'to_store_name' => '去应用商店挑选插件 >>',
],
// 公共
'common' => [
// 公共
@ -1010,5 +1204,333 @@ return [
'4. 快捷操作将会清除原来的数据、重载页面便可恢复原来的数据(仅保存商品后生效)',
],
],
// 后台权限菜单
'admin_power_menu_list' => [
'config_index' => [
'name' => '系统设置',
'item' => [
'config_index' => '系统配置',
'config_store' => '商店信息',
'config_save' => '配置保存',
'index_storeaccountsbind' => '应用商店帐号绑定',
'index_inspectupgrade' => '系统更新检查',
'index_inspectupgradeconfirm' => '系统更新确认',
'index_stats' => '首页统计数据',
'index_income' => '首页统计数据(收入统计)',
]
],
'site_index' => [
'name' => '站点配置',
'item' => [
'site_index' => '站点设置',
'site_save' => '站点设置编辑',
'site_goodssearch' => '站点设置商品搜索',
'layout_layoutindexhomesave' => '首页布局管理',
'sms_index' => '短信设置',
'sms_save' => '短信设置编辑',
'email_index' => '邮箱设置',
'email_save' => '邮箱设置/编辑',
'email_emailtest' => '邮件发送测试',
'seo_index' => 'SEO设置',
'seo_save' => 'SEO设置编辑',
'agreement_index' => '协议管理',
'agreement_save' => '协议设置编辑',
]
],
'power_index' => [
'name' => '权限控制',
'item' => [
'admin_index' => '管理员列表',
'admin_saveinfo' => '管理员添加/编辑页面',
'admin_save' => '管理员添加/编辑',
'admin_delete' => '管理员删除',
'admin_detail' => '管理员详情',
'role_index' => '角色管理',
'role_saveinfo' => '角色组添加/编辑页面',
'role_save' => '角色组添加/编辑',
'role_delete' => '角色删除',
'role_statusupdate' => '角色状态更新',
'role_detail' => '角色详情',
'power_index' => '权限分配',
'power_save' => '权限添加/编辑',
'power_delete' => '权限删除',
]
],
'user_index' => [
'name' => '用户管理',
'item' => [
'user_index' => '用户列表',
'user_saveinfo' => '用户编辑/添加页面',
'user_save' => '用户添加/编辑',
'user_delete' => '用户删除',
'user_detail' => '用户详情',
'useraddress_index' => '用户地址',
'useraddress_saveinfo' => '用户地址编辑页面',
'useraddress_save' => '用户地址编辑',
'useraddress_delete' => '用户地址删除',
'useraddress_detail' => '用户地址详情',
]
],
'goods_index' => [
'name' => '商品管理',
'item' => [
'goods_index' => '商品管理',
'goods_saveinfo' => '商品添加/编辑页面',
'goods_save' => '商品添加/编辑',
'goods_delete' => '商品删除',
'goods_statusupdate' => '商品状态更新',
'goods_basetemplate' => '获取商品基础模板',
'goods_detail' => '商品详情',
'goodscategory_index' => '商品分类',
'goodscategory_save' => '商品分类添加/编辑',
'goodscategory_delete' => '商品分类删除',
'goodsparamstemplate_index' => '商品参数',
'goodsparamstemplate_delete' => '商品参数删除',
'goodsparamstemplate_statusupdate' => '商品参数状态更新',
'goodsparamstemplate_saveinfo' => '商品参数添加/编辑页面',
'goodsparamstemplate_save' => '商品参数添加/编辑',
'goodsparamstemplate_detail' => '商品参数详情',
'goodsspectemplate_index' => '商品规格',
'goodsspectemplate_delete' => '商品规格删除',
'goodsspectemplate_statusupdate' => '商品规格状态更新',
'goodsspectemplate_saveinfo' => '商品规格添加/编辑页面',
'goodsspectemplate_save' => '商品规格添加/编辑',
'goodsspectemplate_detail' => '商品规格详情',
'goodscomments_detail' => '商品评论详情',
'goodscomments_index' => '商品评论',
'goodscomments_reply' => '商品评论回复',
'goodscomments_delete' => '商品评论删除',
'goodscomments_statusupdate' => '商品评论状态更新',
'goodscomments_saveinfo' => '商品评论添加/编辑页面',
'goodscomments_save' => '商品评论添加/编辑',
'goodsbrowse_index' => '商品浏览',
'goodsbrowse_delete' => '商品浏览删除',
'goodsbrowse_detail' => '商品浏览详情',
'goodsfavor_index' => '商品收藏',
'goodsfavor_delete' => '商品收藏删除',
'goodsfavor_detail' => '商品收藏详情',
'goodscart_index' => '商品购物车',
'goodscart_delete' => '商品购物车删除',
'goodscart_detail' => '商品购物车详情',
]
],
'order_index' => [
'name' => '订单管理',
'item' => [
'order_index' => '订单管理',
'order_delete' => '订单删除',
'order_cancel' => '订单取消',
'order_delivery' => '订单发货',
'order_collect' => '订单收货',
'order_pay' => '订单支付',
'order_confirm' => '订单确认',
'order_detail' => '订单详情',
'orderaftersale_index' => '订单售后',
'orderaftersale_delete' => '订单售后删除',
'orderaftersale_cancel' => '订单售后取消',
'orderaftersale_audit' => '订单售后审核',
'orderaftersale_confirm' => '订单售后确认',
'orderaftersale_refuse' => '订单售后拒绝',
'orderaftersale_detail' => '订单售后详情',
]
],
'navigation_index' => [
'name' => '网站管理',
'item' => [
'navigation_index' => '导航管理',
'navigation_save' => '导航添加/编辑',
'navigation_delete' => '导航删除',
'navigation_statusupdate' => '导航状态更新',
'customview_index' => '自定义页面',
'customview_saveinfo' => '自定义页面添加/编辑页面',
'customview_save' => '自定义页面添加/编辑',
'customview_delete' => '自定义页面删除',
'customview_statusupdate' => '自定义页面状态更新',
'customview_detail' => '自定义页面详情',
'link_index' => '友情链接',
'link_saveinfo' => '友情链接添加/编辑页面',
'link_save' => '友情链接添加/编辑',
'link_delete' => '友情链接删除',
'link_statusupdate' => '友情链接状态更新',
'link_detail' => '友情链接详情',
'theme_index' => '主题管理',
'theme_save' => '主题管理添加/编辑',
'theme_upload' => '主题上传安装',
'theme_delete' => '主题删除',
'theme_download' => '主题下载',
'slide_index' => '首页轮播',
'slide_saveinfo' => '轮播添加/编辑页面',
'slide_save' => '轮播添加/编辑',
'slide_statusupdate' => '轮播状态更新',
'slide_delete' => '轮播删除',
'slide_detail' => '轮播详情',
'screeningprice_index' => '筛选价格',
'screeningprice_save' => '筛选价格添加/编辑',
'screeningprice_delete' => '筛选价格删除',
'region_index' => '地区管理',
'region_save' => '地区添加/编辑',
'region_delete' => '地区删除',
'region_codedata' => '获取地区编号数据',
'express_index' => '快递管理',
'express_save' => '快递添加/编辑',
'express_delete' => '快递删除',
'payment_index' => '支付方式',
'payment_saveinfo' => '支付方式安装/编辑页面',
'payment_save' => '支付方式安装/编辑',
'payment_delete' => '支付方式删除',
'payment_install' => '支付方式安装',
'payment_statusupdate' => '支付方式状态更新',
'payment_uninstall' => '支付方式卸载',
'payment_upload' => '支付方式上传',
'quicknav_index' => '快捷导航',
'quicknav_saveinfo' => '快捷导航添加/编辑页面',
'quicknav_save' => '快捷导航添加/编辑',
'quicknav_statusupdate' => '快捷导航状态更新',
'quicknav_delete' => '快捷导航删除',
'quicknav_detail' => '快捷导航详情',
'design_index' => '页面设计',
'design_saveinfo' => '页面设计添加/编辑页面',
'design_save' => '页面设计添加/编辑',
'design_statusupdate' => '页面设计状态更新',
'design_upload' => '页面设计导入',
'design_download' => '页面设计下载',
'design_sync' => '页面设计同步首页',
'design_delete' => '页面设计删除',
]
],
'brand_index' => [
'name' => '品牌管理',
'item' => [
'brand_index' => '品牌管理',
'brand_saveinfo' => '品牌添加/编辑页面',
'brand_save' => '品牌添加/编辑',
'brand_statusupdate' => '品牌状态更新',
'brand_delete' => '品牌删除',
'brand_detail' => '品牌详情',
'brandcategory_index' => '品牌分类',
'brandcategory_save' => '品牌分类添加/编辑',
'brandcategory_delete' => '品牌分类删除',
]
],
'warehouse_index' => [
'name' => '仓库管理',
'item' => [
'warehouse_index' => '仓库管理',
'warehouse_saveinfo' => '仓库添加/编辑页面',
'warehouse_save' => '仓库添加/编辑',
'warehouse_delete' => '仓库删除',
'warehouse_statusupdate' => '仓库状态更新',
'warehouse_detail' => '仓库详情',
'warehousegoods_index' => '仓库商品管理',
'warehousegoods_detail' => '仓库商品详情',
'warehousegoods_delete' => '仓库商品删除',
'warehousegoods_statusupdate' => '仓库商品状态更新',
'warehousegoods_goodssearch' => '仓库商品搜索',
'warehousegoods_goodsadd' => '仓库商品搜索添加',
'warehousegoods_goodsdel' => '仓库商品搜索删除',
'warehousegoods_inventoryinfo' => '仓库商品库存编辑页面',
'warehousegoods_inventorysave' => '仓库商品库存编辑',
]
],
'app_index' => [
'name' => '手机管理',
'item' => [
'appconfig_index' => '基础配置',
'appconfig_save' => '基础配置保存',
'apphomenav_index' => '首页导航',
'apphomenav_saveinfo' => '首页导航添加/编辑页面',
'apphomenav_save' => '首页导航添加/编辑',
'apphomenav_statusupdate' => '首页导航状态更新',
'apphomenav_delete' => '首页导航删除',
'apphomenav_detail' => '首页导航详情',
'appcenternav_index' => '用户中心导航',
'appcenternav_saveinfo' => '用户中心导航添加/编辑页面',
'appcenternav_save' => '用户中心导航添加/编辑',
'appcenternav_statusupdate' => '用户中心导航状态更新',
'appcenternav_delete' => '用户中心导航删除',
'appcenternav_detail' => '用户中心导航详情',
'appmini_index' => '小程序列表',
'appmini_created' => '小程序包生成',
'appmini_delete' => '小程序包删除',
'appmini_themeupload' => '小程序主题上传',
'appmini_themesave' => '小程序主题切换',
'appmini_themedelete' => '小程序主题切换',
'appmini_themedownload' => '小程序主题下载',
'appmini_config' => '小程序配置',
'appmini_save' => '小程序配置保存',
]
],
'article_index' => [
'name' => '文章管理',
'item' => [
'article_index' => '文章管理',
'article_saveinfo' => '文章添加/编辑页面',
'article_save' => '文章添加/编辑',
'article_delete' => '文章删除',
'article_statusupdate' => '文章状态更新',
'article_detail' => '文章详情',
'articlecategory_index' => '文章分类',
'articlecategory_save' => '文章分类编辑/添加',
'articlecategory_delete' => '文章分类删除',
]
],
'data_index' => [
'name' => '数据管理',
'item' => [
'answer_index' => '问答留言',
'answer_reply' => '问答留言回复',
'answer_delete' => '问答留言删除',
'answer_statusupdate' => '问答留言状态更新',
'answer_saveinfo' => '问答添加/编辑页面',
'answer_save' => '问答添加/编辑',
'answer_detail' => '问答留言详情',
'message_index' => '消息管理',
'message_delete' => '消息删除',
'message_detail' => '消息详情',
'paylog_index' => '支付日志',
'paylog_detail' => '支付日志详情',
'paylog_close' => '支付日志关闭',
'payrequestlog_index' => '支付请求日志列表',
'payrequestlog_detail' => '支付请求日志详情',
'refundlog_index' => '退款日志',
'refundlog_detail' => '退款日志详情',
'integrallog_index' => '积分日志',
'integrallog_detail' => '积分日志详情',
]
],
'store_index' => [
'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' => '软件包更新',
]
],
'tool_index' => [
'name' => '工具',
'item' => [
'cache_index' => '缓存管理',
'cache_statusupdate' => '站点缓存更新',
'cache_templateupdate' => '模板缓存更新',
'cache_moduleupdate' => '模块缓存更新',
'cache_logdelete' => '日志删除',
'sqlconsole_index' => 'SQL控制台',
'sqlconsole_implement' => 'SQL执行',
]
],
],
];
?>

View File

@ -1,20 +1,19 @@
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 公共导航容器 -->
{{block name="form_navigation"}}
{{if isset($admin) and isset($admin['id']) and $admin['id'] eq 1 and is_array(MyLang('admin.top_tips_list'))}}
<!-- 仅超级管理员显示的温馨提示 -->
<div class="am-alert am-alert-danger" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>{{:implode('</p><p>', MyLang('admin.top_tips_list'))}}</p>
</div>
{{/if}}
{{/block}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/admin/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> {{:MyLang('add_title')}}</a>
<!-- 父级内容 -->
{__block__}
{{/block}}
<!-- 底部提示信息 -->
{{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">
<p>{{:implode('</p><p>', MyLang('admin.top_tips_list'))}}</p>
</div>
{{/if}}
{{/block}}

View File

@ -101,7 +101,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,5 +1,5 @@
<ul class="am-nav am-nav-pills table-nav second-nav">
{{if !empty($nav_data)}}
{{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>

View File

@ -4,59 +4,84 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/appcenternav/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appcenternav/index', $params)}}" enctype="multipart/form-data">
<form class="am-form form-validation am-form-pure 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>
<div class="am-form-group">
<label>{{:MyLang('appcenternav.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('appcenternav.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('appcenternav.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{: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-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('appcenternav.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('appcenternav.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('appcenternav.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
</div>
<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_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">
<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('appcenternav.form_item_desc')}}</label>
<input type="text" name="desc" placeholder="{{:MyLang('appcenternav.form_item_desc_message')}}" data-validation-message="{{:MyLang('appcenternav.form_item_desc_message')}}" class="am-radius" {{if !empty($data['desc'])}} value="{{$data.desc}}"{{/if}} />
</div>
</div>
</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('appcenternav.form_item_event_value_message')}}" class="am-radius" {{if !empty($data['event_value'])}} value="{{$data.event_value}}"{{/if}} />
{{include file="public/event_value_tips" /}}
</div>
<div class="am-form-group">
<label>{{:MyLang('appcenternav.form_item_desc')}}</label>
<input type="text" name="desc" placeholder="{{:MyLang('appcenternav.form_item_desc_message')}}" data-validation-message="{{:MyLang('appcenternav.form_item_desc_message')}}" class="am-radius" {{if !empty($data['desc'])}} value="{{$data.desc}}"{{/if}} />
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group am-form-file">
<label class="am-block">{{:MyLang('appcenternav.form_item_images_url')}}<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="{{: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-group am-form-file">
<label class="am-block">{{:MyLang('appcenternav.form_item_images_url')}}<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="{{: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>
{{include file="lib/sort" /}}
{{include file="lib/is_enable" /}}
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('save_title')}}</button>
</div>
@ -65,7 +90,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -12,7 +12,7 @@
<div class="am-form-group">
<label>{{$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>
{{foreach $common_is_text_list as $v}}
{{foreach :MyLang('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>
{{/foreach}}
</select>
@ -21,7 +21,7 @@
<div class="am-form-group">
<label>{{$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>
{{foreach $common_is_text_list as $v}}
{{foreach :MyLang('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>
{{/foreach}}
</select>
@ -30,7 +30,7 @@
<div class="am-form-group">
<label>{{$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>
<select name="{{$data.common_user_onekey_bind_mobile_list.only_tag}}" class="am-radius chosen-select" data-placeholder="{{$data.common_user_onekey_bind_mobile_list.name}}" multiple data-validation-message="{{$data.common_user_onekey_bind_mobile_list.error_tips}}">
{{foreach $common_platform_type as $v}}
{{foreach :MyLang('common_platform_type') as $v}}
{{if in_array($v['value'], ['weixin', 'baidu', 'toutiao'])}}
<option 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'])}}selected{{/if}}>{{$v.name}}</option>
{{/if}}
@ -47,7 +47,7 @@
<div class="am-form-group">
<label>{{$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>
<select name="{{$data.common_user_address_platform_import_list.only_tag}}" class="am-radius chosen-select" data-placeholder="{{$data.common_user_address_platform_import_list.name}}" multiple data-validation-message="{{$data.common_user_address_platform_import_list.error_tips}}">
{{foreach $common_platform_type as $v}}
{{foreach :MyLang('common_platform_type') as $v}}
{{if in_array($v['value'], ['weixin', 'baidu', 'alipay', 'qq', 'toutiao'])}}
<option 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'])}}selected{{/if}}>{{$v.name}}</option>
{{/if}}
@ -64,7 +64,7 @@
<div class="am-form-group">
<label>{{$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>
{{foreach $common_is_text_list as $v}}
{{foreach :MyLang('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>
{{/foreach}}
</select>
@ -73,7 +73,7 @@
<div class="am-form-group">
<label>{{$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>
{{foreach $common_is_text_list as $v}}
{{foreach :MyLang('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>
{{/foreach}}
</select>
@ -82,7 +82,7 @@
<div class="am-form-group">
<label>{{$data.common_app_is_enable_answer.name}}<span class="am-form-group-label-tips">{{$data.common_app_is_enable_answer.describe}}</span></label>
<select name="{{$data.common_app_is_enable_answer.only_tag}}" class="am-radius chosen-select" data-validation-message="{{$data.common_app_is_enable_answer.error_tips}}" required>
{{foreach $common_is_text_list as $v}}
{{foreach :MyLang('common_is_text_list') as $v}}
<option value="{{$v.id}}" {{if isset($data['common_app_is_enable_answer']['value']) and $data['common_app_is_enable_answer']['value'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
@ -91,7 +91,7 @@
<div class="am-form-group">
<label>{{$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>
{{foreach $common_is_text_list as $v}}
{{foreach :MyLang('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>
{{/foreach}}
</select>
@ -100,7 +100,7 @@
<div class="am-form-group">
<label>{{$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>
{{foreach $common_is_text_list as $v}}
{{foreach :MyLang('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>
{{/foreach}}
</select>

View File

@ -16,7 +16,7 @@
<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>
{{foreach $common_is_text_list as $v}}
{{foreach :MyLang('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>
{{/foreach}}
</select>
@ -44,7 +44,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,8 +1,9 @@
<ul class="am-nav am-nav-pills table-nav second-nav">
<li {{if $nav_type eq 'base'}}class="am-active"{{/if}} data-type="base">
<a href="{{:MyUrl('admin/appconfig/index', ['nav_type'=>'base'])}}">{{:MyLang('base_config_title')}}</a>
</li>
<li {{if $nav_type eq 'app'}}class="am-active"{{/if}} data-type="app">
<a href="{{:MyUrl('admin/appconfig/index', ['nav_type'=>'app'])}}">APP/小程序</a>
</li>
</ul>
{{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', ['type'=>$v['type']])}}">{{$v.name}}</a>
</li>
{{/foreach}}
</ul>
{{/if}}

View File

@ -4,66 +4,98 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/apphomenav/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/apphomenav/index', $params)}}" enctype="multipart/form-data">
<form class="am-form form-validation am-form-pure 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>
<div class="am-form-group">
<label>{{:MyLang('apphomenav.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('apphomenav.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('apphomenav.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
<div class="am-form-group">
<label>{{: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-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('apphomenav.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('apphomenav.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('apphomenav.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
</div>
<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_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">
<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-form-group am-form-file">
<label class="am-block">{{:MyLang('form_item_images_url')}}<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="{{: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 class="am-form-group">
<label>{{:MyLang('form_bg_color_title')}}</label>
<input type="hidden" name="bg_color" value="{{if !empty($data)}}{{$data.bg_color}}{{/if}}" />
<button class="am-btn am-btn-default am-btn-xs colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color" {{if !empty($data)}} style="background-color:{{$data.bg_color}};"{{/if}}>
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</div>
{{include file="lib/sort" /}}
{{include file="lib/is_enable" /}}
<div class="am-form-group">
<label class="am-block">{{:MyLang('apphomenav.form_item_is_need_login')}}</label>
<input name="is_need_login" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_need_login'] eq 1}} checked="true"{{/if}} />
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<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('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('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}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('save_title')}}</button>
</div>
</form>
@ -71,7 +103,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -224,7 +224,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -44,7 +44,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -104,7 +104,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -44,7 +44,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -19,7 +19,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -186,7 +186,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -32,7 +32,7 @@
<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 $common_is_text_list as $v}}
{{foreach :MyLang('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>

View File

@ -1,5 +1,5 @@
<ul class="am-nav am-nav-pills table-nav second-nav">
{{if !empty($nav_data)}}
{{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>

View File

@ -59,7 +59,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -85,7 +85,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -64,7 +64,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,4 +1,4 @@
{{if !empty($nav_data)}}
{{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}}">

View File

@ -165,7 +165,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -110,11 +110,11 @@
<img src="{{$v.logo}}" class="icon" />
<div class="base">
<h3 class="name">{{$v.name}}</h3>
<p>{{:MyLang('pluginsadmin.data_list_author_title')}}{{$v.author}}</p>
<p>{{:MyLang('pluginsadmin.data_list_author_title')}}{{$v.author}}</p>
{{if empty($site_store_info) or empty($site_store_info['vip']) or !isset($site_store_info['vip']['status']) or $site_store_info['vip']['status'] eq 0}}
<p>{{:MyLang('pluginsadmin.data_list_author_url_title')}}<a href="{{$v.author_url}}" target="_blank">{{$v.author_url}}</a></p>
<p>{{:MyLang('pluginsadmin.data_list_author_url_title')}}<a href="{{$v.author_url}}" target="_blank">{{$v.author_url}}</a></p>
{{/if}}
<p>{{:MyLang('pluginsadmin.data_list_version_title')}}{{$v.version}}</p>
<p>{{:MyLang('pluginsadmin.data_list_version_title')}}{{$v.version}}</p>
</div>
<div class="desc">{{$v.desc}}</div>
<div class="operation">

View File

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

View File

@ -143,7 +143,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -33,8 +33,8 @@
<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')}}<span class="am-form-group-label-tips-must">*</span></label>
<select name="event_type" class="am-radius chosen-select" data-placeholder="{{:MyLang('optional_tips')}}" data-validation-message="{{:MyLang('form_event_type_message')}}" required>
<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>

View File

@ -1,18 +1,16 @@
<!-- 继承公共的 form -->
{{extend name="public/module/form" /}}
<!-- 公共导航容器 -->
{{block name="form_navigation"}}
<!-- 仅超级管理员显示的温馨提示 -->
<div class="am-alert am-alert-danger" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>{{:MyLang('role.admin_not_modify_tips')}}</p>
</div>
{{/block}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/role/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> {{:MyLang('add_title')}}</a>
<!-- 父级内容 -->
{__block__}
{{/block}}
<!-- 底部提示信息 -->
{{block name="form_operate_bottom"}}
<div class="am-alert am-alert-danger">
<p>{{:MyLang('role.admin_not_modify_tips')}}</p>
</div>
{{/block}}

View File

@ -104,7 +104,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -4,68 +4,88 @@
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/slide/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/slide/index', $params)}}" enctype="multipart/form-data">
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/slide/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/slide/index', $params)}}" enctype="multipart/form-data">
<legend>
<span class="am-text-default">轮播{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<span class="am-text-default">{{:MyLang('slide.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/slide/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="60" data-validation-message="名称格式 2~60 个字符" class="am-radius" {{if !empty($data['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 :MyLang('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 :MyLang('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-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('slide.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('slide.form_item_name_message')}}" minlength="2" maxlength="60" data-validation-message="{{:MyLang('slide.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 :MyLang('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-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 :MyLang('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-form-group am-form-file">
<label class="am-block">轮播图片<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 class="am-alert am-alert-warning" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>1. PC端建议尺寸1920x480px</p>
<p>2. 手机端建议尺寸1200x360px</p>
</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('form_bg_color_title')}}</label>
<input type="hidden" name="bg_color" value="{{if !empty($data)}}{{$data.bg_color}}{{/if}}" />
<button class="am-btn am-btn-default am-btn-xs colorpicker-submit bg-color-tag am-btn-block bk-cr-white t-r" type="button" data-input-tag="button.bg-color-tag" data-color-tag="input[name='bg_color']" data-color-style="background-color" {{if !empty($data)}} style="background-color:{{$data.bg_color}};"{{/if}}>
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>
</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('slide.form_item_images_url')}}<span class="am-form-group-label-tips-must">*</span>{{if is_array(MyLang('slide.form_item_images_url_tips'))}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:implode('<br />', MyLang('slide.form_item_images_url_tips'))}}', trigger: 'hover focus', theme: 'sm'}"></a>{{/if}}</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>
{{include file="lib/sort" /}}
{{include file="lib/is_enable" /}}
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<input type="hidden" name="id" {{if !empty($data)}} value="{{$data.id}}"{{/if}} />
<div class="am-form-popup-submit">
<input type="hidden" name="id" {{if !empty($data['id'])}} value="{{$data.id}}"{{/if}} />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('save_title')}}</button>
</div>
</form>
@ -73,7 +93,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -29,7 +29,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -12,7 +12,7 @@
<!-- 后台 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">后台</h3>
<h3 class="am-panel-title">{{:MyLang('sms.base_item_admin_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
@ -25,7 +25,7 @@
<!-- 前端 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">
<h3 class="am-panel-title">前端</h3>
<h3 class="am-panel-title">{{:MyLang('sms.base_item_index_title')}}</h3>
</div>
<div class="am-panel-bd am-padding-vertical-xs">
<div class="am-form-group">
@ -58,7 +58,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,13 +1,14 @@
<ul class="am-nav am-nav-pills table-nav second-nav">
<li {{if $nav_type eq 'index'}}class="am-active"{{/if}} data-type="index">
<a href="{{:MyUrl('admin/sms/index', ['type'=>'index'])}}">短信设置</a>
</li>
<li {{if $nav_type eq 'message'}}class="am-active"{{/if}} data-type="message">
<a href="{{:MyUrl('admin/sms/index', ['type'=>'message'])}}">消息模板</a>
</li>
{{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/sms/index', ['type'=>$v['type']])}}">{{$v.name}}</a>
</li>
{{/foreach}}
{{/if}}
</ul>
<div class="am-alert am-alert-warning am-radius am-margin-bottom-0" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p class="am-text-xs">阿里云短信管理地址 <a href="https://www.aliyun.com/acts/alicomcloud/new-discount?userCode=iub0dy6g" class="am-margin-left-sm" target="_blank">点击去阿里云购买短信 <i class="am-icon-external-link"></i></a> </p>
<p class="am-text-xs">{{:MyLang('sms.top_tips')}} <a href="https://www.aliyun.com/acts/alicomcloud/new-discount?userCode=iub0dy6g" class="am-margin-left-sm" target="_blank">{{:MyLang('sms.top_to_aliyun_tips')}} <i class="am-icon-external-link"></i></a> </p>
</div>

View File

@ -5,23 +5,23 @@
<div class="content">
<div class="am-alert am-alert-warning am-radius" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p class="am-text-xs">PS非开发人员请不要随意执行任何SQL语句操作可能导致将整个系统数据库被删除。</p>
<p>{{:MyLang('sqlconsole.top_tips')}}</p>
</div>
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<!-- form start -->
<form class="am-form form-validation" action="{{:MyUrl('admin/sqlconsole/implement')}}" method="POST" request-type="ajax-fun" request-value="ViewImplementBack">
<div class="am-form-group">
<textarea rows="16" name="sql" class="am-radius" placeholder="SQL语句" data-validation-message="请填写需要执行的SQL语句" required></textarea>
<textarea rows="16" name="sql" class="am-radius" placeholder="{{:MyLang('sqlconsole.form_sql_placeholder')}}" data-validation-message="{{:MyLang('sqlconsole.form_sql_message')}}" required></textarea>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">执行</button>
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:MyLang('processing_tips')}}'}">{{:MyLang('execute_title')}}</button>
</div>
</form>
<!-- form end -->
{{else /}}
<div class="am-alert">
<p>如需要执行SQL 语句,请在 config/shopxo.php 文件中 is_develop值改为true开启开发者模式。</p>
<p>{{:MyLang('sqlconsole.form_dev_tips')}}</p>
</div>
{{/if}}

View File

@ -3,9 +3,9 @@
<!-- right content -->
<div class="content-right">
<div class="content am-text-center am-margin-top-xl">
<p>ShopXO优秀应用列表这里云集了最资深技术能力最强最可信赖的ShopXO开发者为您的插件、风格、模板定制全面护航。</p>
<p>{{:MyLang('store.top_tips')}}</p>
<div class="am-margin-top-xl">
<a href="{{$store_url}}" class="am-btn am-btn-secondary am-btn-xs am-radius" target="_blank">去应用商店挑选插件 >></a>
<a href="{{$store_url}}" class="am-btn am-btn-secondary am-btn-xs am-radius" target="_blank">{{:MyLang('store.to_store_name')}}</a>
</div>
</div>
</div>

View File

@ -21,24 +21,24 @@
{{$v.name}}
<div class="am-fr am-text-right">
{{if !empty($upgrade_info) and isset($upgrade_info[$v['theme']]) and $upgrade_info[$v['theme']]['version_new'] neq $v['ver']}}
<a href="javascript:;" class="am-icon-refresh am-text-danger package-upgrade-event" title="更新" data-type="webtheme" data-name="{{$v.name}}" data-value="{{$v.theme}}" data-json="{{:urlencode(json_encode($upgrade_info[$v['theme']]))}}"></a>
<a href="javascript:;" class="am-icon-refresh am-text-danger package-upgrade-event" title="{{:MyLang('update_title')}}" data-type="webtheme" data-name="{{$v.name}}" data-value="{{$v.theme}}" data-json="{{:urlencode(json_encode($upgrade_info[$v['theme']]))}}"></a>
{{/if}}
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<a href="{{:MyUrl('admin/theme/download', ['id'=>$v['theme']])}}" class="am-icon-trash-o am-icon-download am-margin-left-sm" title="打包"></a>
<a href="{{:MyUrl('admin/theme/download', ['id'=>$v['theme']])}}" class="am-icon-trash-o am-icon-download am-margin-left-sm" title="{{:MyLang('download_title')}}"></a>
{{/if}}
{{if $v.is_delete eq 1}}
<a href="javascript:;" class="am-icon-trash-o submit-delete am-margin-left-sm am-text-warning" title="删除" data-url="{{:MyUrl('admin/theme/delete')}}" data-id="{{$v.theme}}"></a>
<a href="javascript:;" class="am-icon-trash-o submit-delete am-margin-left-sm am-text-warning" title="{{:MyLang('delete_title')}}" data-url="{{:MyUrl('admin/theme/delete')}}" data-id="{{$v.theme}}"></a>
{{/if}}
</div>
</h3>
<div class="am-gallery-desc">作者:
<div class="am-gallery-desc">{{:MyLang('theme.list_author_title')}}
{{if empty($v['home'])}}
{{$v.author}}
{{else /}}
<a href="{{$v.home}}" target="_blank">{{$v.author}}</a>
{{/if}}
</div>
<div class="am-gallery-desc">适用版本:{{$v.ver}}</div>
<div class="am-gallery-desc">{{:MyLang('theme.list_version_title')}}{{$v.ver}}</div>
</div>
</div>
</li>

View File

@ -1,13 +1,14 @@
<ul class="am-nav am-nav-pills table-nav">
<li {{if $view_type eq 'index'}}class="am-active"{{/if}}>
<a href="{{:MyUrl('admin/theme/index', ['view_type'=>'index'])}}">当前主题</a>
</li>
<li {{if $view_type eq 'upload'}}class="am-active"{{/if}}>
<a href="{{:MyUrl('admin/theme/index', ['view_type'=>'upload'])}}">主题安装</a>
</li>
{{if !empty($store_theme_url)}}
<li class="am-fr">
<a class="am-margin-left-sm" href="{{$store_theme_url}}" target="_blank">更多主题下载 <i class="am-icon-external-link"></i></a>
</li>
{{if !empty($base_nav)}}
{{foreach $base_nav as $v}}
<li {{if $view_type eq $v['type']}}class="am-active"{{/if}}>
<a href="{{:MyUrl('admin/theme/index', ['view_type'=>$v['type']])}}">{{$v.name}}</a>
</li>
{{/foreach}}
{{/if}}
{{if !empty($store_theme_url)}}
<li class="am-fr">
<a class="am-margin-left-sm" href="{{$store_theme_url}}" target="_blank">{{:MyLang('theme.nav_store_theme_name')}} <i class="am-icon-external-link"></i></a>
</li>
{{/if}}
</ul>

View File

@ -6,7 +6,7 @@
<!-- nav start -->
{{include file="theme/nav" /}}
<!-- nav end -->
<!-- form start -->
<form class="am-form form-validation am-margin-top-sm" action="{{:MyUrl('admin/theme/upload')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/theme/index')}}" enctype="multipart/form-data">
<div class="am-form-group am-form-group-refreshing am-margin-bottom-0">
@ -14,7 +14,7 @@
<button type="button" class="am-btn am-btn-default am-btn-sm am-radius">
<i class="am-icon-cloud-upload"></i> {{:MyLang('form_choice_images_title')}}</button>
<input type="file" name="theme" class="file-event" data-tips-tag="#form-theme-tips" data-validation-message="{{:MyLang('form_upload_file_message')}}" accept=".zip" required />
<span class="tips am-text-xs">上传一个zip压缩格式的主题安装包</span>
<span class="tips am-text-xs">{{:MyLang('theme.form_item_upload_tips')}}</span>
<div id="form-theme-tips" class="am-margin-top-xs"></div>
</div>
</div>

View File

@ -1,8 +0,0 @@
<!-- 用户头像信息 -->
{{if !empty($module_data)}}
{{if !empty($module_data['avatar'])}}
<img src="{{$module_data['avatar']}}" class="am-img-thumbnail am-radius" width="80" height="80" />
{{else /}}
<span class="cr-ddd">暂无头像</span>
{{/if}}
{{/if}}

View File

@ -5,7 +5,7 @@
<li class="am-text-truncate">{{$module_data.referrer_info.user_name_view}}</li>
<li>
{{if !empty($module_data['referrer_info']['username'])}}
<a href="javascript:;" class="am-icon-user am-text-grey am-margin-right-sm" data-am-popover="{content: '账号{{$module_data.referrer_info.username}}{{if !empty($module_data['referrer_info']['nickname'])}}<br />昵称{{$module_data.referrer_info.nickname}}{{/if}}', trigger: 'hover focus', theme: 'sm'}"></a>
<a href="javascript:;" class="am-icon-user am-text-grey am-margin-right-sm" data-am-popover="{content: '{{:MyLang('user_username_title')}}{{$module_data.referrer_info.username}}{{if !empty($module_data['referrer_info']['nickname'])}}<br />{{:MyLang('user_nickname_title')}}{{$module_data.referrer_info.nickname}}{{/if}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['referrer_info']['mobile'])}}
<a href="javascript:;" class="am-icon-phone-square am-text-grey am-margin-right-sm" data-am-popover="{content: '{{$module_data.referrer_info.mobile}}', trigger: 'hover focus', theme: 'sm'}"></a>

View File

@ -4,30 +4,30 @@
<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/user/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/user/index', $params)}}">
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/user/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/user/index', $params)}}">
<legend>
<span class="am-text-default">用户{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<span class="am-text-default">{{:MyLang('user.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/user/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>系统类型</label>
<input type="text" name="system_type_name" class="am-radius" placeholder="系统类型" data-validation-message="系统类型2~60字符" value="{{if empty($data['system_type'])}}default{{else /}}{{$data.system_type}}{{/if}}" />
<label>{{:MyLang('user.form_item_system_type')}}<span class="am-form-group-label-tips">{{:MyLang('user.form_item_system_type_tips')}}</span></label>
<input type="text" name="system_type_name" class="am-radius" placeholder="{{:MyLang('user.form_item_system_type_message')}}" data-validation-message="{{:MyLang('user.form_item_system_type_message')}}" value="{{if empty($data['system_type'])}}default{{else /}}{{$data.system_type}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>用户名</label>
<input type="text" name="username" class="am-radius" placeholder="用户名" data-validation-message="用户名2~30个字符" value="{{if !empty($data['username'])}}{{$data.username}}{{/if}}" />
<label>{{:MyLang('user.form_item_username')}}</label>
<input type="text" name="username" class="am-radius" placeholder="{{:MyLang('user.form_item_username_message')}}" data-validation-message="{{:MyLang('user.form_item_username_message')}}" value="{{if !empty($data['username'])}}{{$data.username}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>昵称</label>
<input type="text" name="nickname" class="am-radius" placeholder="昵称" data-validation-message="昵称最多 30 个字符" value="{{if !empty($data['nickname'])}}{{$data.nickname}}{{/if}}" />
<label>{{:MyLang('user.form_item_nickname')}}</label>
<input type="text" name="nickname" class="am-radius" placeholder="{{:MyLang('user.form_item_nickname_message')}}" data-validation-message="{{:MyLang('user.form_item_nickname_message')}}" value="{{if !empty($data['nickname'])}}{{$data.nickname}}{{/if}}" />
</div>
</div>
</div>
@ -36,84 +36,84 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>手机号码</label>
<input type="text" name="mobile" class="am-radius" placeholder="手机号码" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="手机号码格式错误" value="{{if !empty($data['mobile'])}}{{$data.mobile}}{{/if}}" />
<label>{{:MyLang('user.form_item_mobile')}}</label>
<input type="text" name="mobile" class="am-radius" placeholder="{{:MyLang('user.form_item_mobile')}}" pattern="{{:MyConst('common_regex_mobile')}}" data-validation-message="{{:MyLang('user.form_item_mobile_message')}}" value="{{if !empty($data['mobile'])}}{{$data.mobile}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>电子邮箱</label>
<input type="email" name="email" class="am-radius" placeholder="电子邮箱" data-validation-message="电子邮箱格式错误" value="{{if !empty($data['email'])}}{{$data.email}}{{/if}}" />
<label>{{:MyLang('user.form_item_email')}}</label>
<input type="email" name="email" class="am-radius" placeholder="{{:MyLang('user.form_item_email')}}" data-validation-message="{{:MyLang('user.form_item_email_message')}}" 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">
<div class="am-form-group">
<label>支付宝openid</label>
<input type="text" name="alipay_openid" class="am-radius" placeholder="支付宝openid" data-validation-message="请填写支付宝openid" value="{{if !empty($data['alipay_openid'])}}{{$data.alipay_openid}}{{/if}}" />
<label>{{:MyLang('user.form_item_alipay_openid')}}</label>
<input type="text" name="alipay_openid" class="am-radius" placeholder="{{:MyLang('user.form_item_alipay_openid')}}" data-validation-message="{{:MyLang('user.form_item_alipay_openid_message')}}" value="{{if !empty($data['alipay_openid'])}}{{$data.alipay_openid}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>百度openid</label>
<input type="text" name="baidu_openid" class="am-radius" placeholder="百度openid" data-validation-message="请填写百度openid" value="{{if !empty($data['baidu_openid'])}}{{$data.baidu_openid}}{{/if}}" />
<label>{{:MyLang('user.form_item_baidu_openid')}}</label>
<input type="text" name="baidu_openid" class="am-radius" placeholder="{{:MyLang('user.form_item_baidu_openid')}}" data-validation-message="{{:MyLang('user.form_item_baidu_openid_message')}}" value="{{if !empty($data['baidu_openid'])}}{{$data.baidu_openid}}{{/if}}" />
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>头条openid</label>
<input type="text" name="toutiao_openid" class="am-radius" placeholder="头条openid" data-validation-message="请填写头条openid" value="{{if !empty($data['toutiao_openid'])}}{{$data.toutiao_openid}}{{/if}}" />
<label>{{:MyLang('user.form_item_toutiao_openid')}}</label>
<input type="text" name="toutiao_openid" class="am-radius" placeholder="{{:MyLang('user.form_item_toutiao_openid')}}" data-validation-message="{{:MyLang('user.form_item_toutiao_openid_message')}}" value="{{if !empty($data['toutiao_openid'])}}{{$data.toutiao_openid}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>头条unionid</label>
<input type="text" name="toutiao_unionid" class="am-radius" placeholder="头条unionid" data-validation-message="请填写头条unionid" value="{{if !empty($data['toutiao_unionid'])}}{{$data.toutiao_unionid}}{{/if}}" />
<label>{{:MyLang('user.form_item_toutiao_unionid')}}</label>
<input type="text" name="toutiao_unionid" class="am-radius" placeholder="{{:MyLang('user.form_item_toutiao_unionid')}}" data-validation-message="{{:MyLang('user.form_item_toutiao_unionid_message')}}" value="{{if !empty($data['toutiao_unionid'])}}{{$data.toutiao_unionid}}{{/if}}" />
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>QQopenid</label>
<input type="text" name="qq_openid" class="am-radius" placeholder="QQopenid" data-validation-message="请填写QQopenid" value="{{if !empty($data['qq_openid'])}}{{$data.qq_openid}}{{/if}}" />
<label>{{:MyLang('user.form_item_qq_openid')}}</label>
<input type="text" name="qq_openid" class="am-radius" placeholder="{{:MyLang('user.form_item_qq_openid')}}" data-validation-message="{{:MyLang('user.form_item_qq_openid_message')}}" value="{{if !empty($data['qq_openid'])}}{{$data.qq_openid}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>QQunionid</label>
<input type="text" name="qq_unionid" class="am-radius" placeholder="QQunionid" data-validation-message="请填写QQunionid" value="{{if !empty($data['qq_unionid'])}}{{$data.qq_unionid}}{{/if}}" />
<label>{{:MyLang('user.form_item_qq_unionid')}}</label>
<input type="text" name="qq_unionid" class="am-radius" placeholder="{{:MyLang('user.form_item_qq_unionid')}}" data-validation-message="{{:MyLang('user.form_item_qq_unionid_message')}}" value="{{if !empty($data['qq_unionid'])}}{{$data.qq_unionid}}{{/if}}" />
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>微信openid</label>
<input type="text" name="weixin_openid" class="am-radius" placeholder="微信openid" data-validation-message="请填写微信openid" value="{{if !empty($data['weixin_openid'])}}{{$data.weixin_openid}}{{/if}}" />
<label>{{:MyLang('user.form_item_weixin_openid')}}</label>
<input type="text" name="weixin_openid" class="am-radius" placeholder="{{:MyLang('user.form_item_weixin_openid')}}" data-validation-message="{{:MyLang('user.form_item_weixin_openid_message')}}" value="{{if !empty($data['weixin_openid'])}}{{$data.weixin_openid}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>微信unionid</label>
<input type="text" name="weixin_unionid" class="am-radius" placeholder="微信unionid" data-validation-message="请填写微信unionid" value="{{if !empty($data['weixin_unionid'])}}{{$data.weixin_unionid}}{{/if}}" />
<label>{{:MyLang('user.form_item_weixin_unionid')}}</label>
<input type="text" name="weixin_unionid" class="am-radius" placeholder="{{:MyLang('user.form_item_weixin_unionid')}}" data-validation-message="{{:MyLang('user.form_item_weixin_unionid_message')}}" value="{{if !empty($data['weixin_unionid'])}}{{$data.weixin_unionid}}{{/if}}" />
</div>
</div>
</div>
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>微信webopenid</label>
<input type="text" name="weixin_web_openid" class="am-radius" placeholder="微信webopenid" data-validation-message="请填写微信webopenid" value="{{if !empty($data['weixin_web_openid'])}}{{$data.weixin_web_openid}}{{/if}}" />
<label>{{:MyLang('user.form_item_web_weixin_openid')}}</label>
<input type="text" name="weixin_web_openid" class="am-radius" placeholder="{{:MyLang('user.form_item_web_weixin_openid')}}" data-validation-message="{{:MyLang('user.form_item_web_weixin_openid_message')}}" value="{{if !empty($data['weixin_web_openid'])}}{{$data.weixin_web_openid}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>快手openid</label>
<input type="text" name="kuaishou_openid" class="am-radius" placeholder="快手openid" data-validation-message="请填写快手openid" value="{{if !empty($data['kuaishou_openid'])}}{{$data.kuaishou_openid}}{{/if}}" />
<label>{{:MyLang('user.form_item_kuaishou_openid')}}</label>
<input type="text" name="kuaishou_openid" class="am-radius" placeholder="{{:MyLang('user.form_item_kuaishou_openid')}}" data-validation-message="{{:MyLang('user.form_item_kuaishou_openid_message')}}" value="{{if !empty($data['kuaishou_openid'])}}{{$data.kuaishou_openid}}{{/if}}" />
</div>
</div>
</div>
@ -121,26 +121,26 @@
<div class="am-cf">
<div class="am-u-sm-3 am-padding-horizontal-0">
<div class="am-form-group">
<label>所在省</label>
<input type="text" placeholder="所在省" name="province" data-validation-message="所在省最多60个字符" class="am-radius" value="{{if !empty($data['province'])}}{{$data.province}}{{/if}}" />
<label>{{:MyLang('user.form_item_province')}}</label>
<input type="text" placeholder="{{:MyLang('user.form_item_province')}}" name="province" data-validation-message="{{:MyLang('user.form_item_province_message')}}" class="am-radius" value="{{if !empty($data['province'])}}{{$data.province}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-3 am-padding-horizontal-0">
<div class="am-form-group">
<label>所在市</label>
<input type="text" placeholder="所在市" name="city" data-validation-message="所在市最多60个字符" class="am-radius" value="{{if !empty($data['city'])}}{{$data.city}}{{/if}}" />
<label>{{:MyLang('user.form_item_city')}}</label>
<input type="text" placeholder="{{:MyLang('user.form_item_city')}}" name="city" data-validation-message="{{:MyLang('user.form_item_city_message')}}" class="am-radius" value="{{if !empty($data['city'])}}{{$data.city}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-3 am-padding-horizontal-0">
<div class="am-form-group">
<label>所在区/县</label>
<input type="text" placeholder="所在区/县" name="county" data-validation-message="所在区/县最多60个字符" class="am-radius" value="{{if !empty($data['county'])}}{{$data.county}}{{/if}}" />
<label>{{:MyLang('user.form_item_county')}}</label>
<input type="text" placeholder="{{:MyLang('user.form_item_county')}}" name="county" data-validation-message="{{:MyLang('user.form_item_county_message')}}" class="am-radius" value="{{if !empty($data['county'])}}{{$data.county}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-3 am-padding-horizontal-0">
<div class="am-form-group">
<label>详细地址</label>
<input type="text" placeholder="详细地址" name="address" data-validation-message="详细地址2~60个字符" class="am-radius" value="{{if !empty($data['address'])}}{{$data.address}}{{/if}}" />
<label>{{:MyLang('user.form_item_address')}}</label>
<input type="text" placeholder="{{:MyLang('user.form_item_address')}}" name="address" data-validation-message="{{:MyLang('user.form_item_address_message')}}" class="am-radius" value="{{if !empty($data['address'])}}{{$data.address}}{{/if}}" />
</div>
</div>
</div>
@ -148,14 +148,14 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>有效积分</label>
<input type="number" placeholder="有效积分" name="integral" min="0" data-validation-message="请输入有效积分" class="am-radius" value="{{if !empty($data['integral'])}}{{$data.integral}}{{/if}}" />
<label>{{:MyLang('user.form_item_integral')}}</label>
<input type="number" placeholder="{{:MyLang('user.form_item_integral')}}" name="integral" min="0" data-validation-message="{{:MyLang('user.form_item_integral_message')}}" class="am-radius" value="{{if !empty($data['integral'])}}{{$data.integral}}{{/if}}" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>锁定积分</label>
<input type="number" placeholder="锁定积分" name="locking_integral" min="0" data-validation-message="请输入锁定积分" class="am-radius" value="{{if !empty($data['locking_integral'])}}{{$data.locking_integral}}{{/if}}" />
<label>{{:MyLang('user.form_item_locking_integral')}}</label>
<input type="number" placeholder="{{:MyLang('user.form_item_locking_integral')}}" name="locking_integral" min="0" data-validation-message="{{:MyLang('user.form_item_locking_integral_message')}}" class="am-radius" value="{{if !empty($data['locking_integral'])}}{{$data.locking_integral}}{{/if}}" />
</div>
</div>
</div>
@ -163,14 +163,14 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>生日</label>
<input type="text" name="birthday" class="am-radius Wdate" placeholder="生日" pattern="{{:MyConst('common_regex_date')}}" data-validation-message="生日格式有误" value="{{if !empty($data['birthday'])}}{{$data.birthday}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" />
<label>{{:MyLang('user.form_item_birthday')}}</label>
<input type="text" name="birthday" class="am-radius Wdate" placeholder="{{:MyLang('user.form_item_birthday')}}" pattern="{{:MyConst('common_regex_date')}}" data-validation-message="{{:MyLang('user.form_item_birthday_message')}}" value="{{if !empty($data['birthday'])}}{{$data.birthday}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>邀请用户ID</label>
<input type="number" placeholder="邀请用户ID" name="referrer" data-validation-message="请输入邀请用户ID" min="0" class="am-radius" value="{{if !empty($data['referrer'])}}{{$data.referrer}}{{/if}}" />
<label>{{:MyLang('user.form_item_referrer')}}</label>
<input type="number" placeholder="{{:MyLang('user.form_item_referrer')}}" name="referrer" data-validation-message="{{:MyLang('user.form_item_referrer_message')}}" min="0" class="am-radius" value="{{if !empty($data['referrer'])}}{{$data.referrer}}{{/if}}" />
</div>
</div>
</div>
@ -181,8 +181,8 @@
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>登录密码</label>
<input type="text" placeholder="登录密码" name="pwd" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="登录密码格式 6~18 个字符之间" class="am-radius" value="" />
<label>{{:MyLang('user.form_item_pwd')}}<span class="am-form-group-label-tips">{{:MyLang('user.form_item_pwd_tips')}}</span></label>
<input type="text" placeholder="{{:MyLang('user.form_item_pwd')}}" name="pwd" pattern="{{:MyConst('common_regex_pwd')}}" data-validation-message="{{:MyLang('user.form_item_pwd_message')}}" class="am-radius" value="" />
</div>
</div>
</div>
@ -218,7 +218,7 @@
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -1,8 +1,12 @@
<!-- 身份证信息 -->
{{if !empty($module_data)}}
<p>姓名:{{$module_data.idcard_name}}</p>
<p>号码:{{$module_data.idcard_number}}</p>
{{if !empty($module_data['idcard_name'])}}
<p>{{:MyLang('useraddress.detail_user_address_idcard_name')}}{{$module_data.idcard_name}}</p>
{{/if}}
{{if !empty($module_data['idcard_number'])}}
<p>{{:MyLang('useraddress.detail_user_address_idcard_number')}}{{$module_data.idcard_number}}</p>
{{/if}}
{{if !empty($module_data['idcard_front']) or !empty($module_data['idcard_back'])}}
<p class="am-nbfc"><span class="am-fl">照片:</span>{{if !empty($module_data['idcard_front'])}}<a href="{{$module_data.idcard_front}}" target="_blank" class="am-fl"><img width="35" height="27" src="{{$module_data.idcard_front}}" alt="身份证人像面" class="am-img-thumbnail am-radius am-block" /></a>{{/if}} {{if !empty($module_data['idcard_back'])}}<a href="{{$module_data.idcard_back}}" target="_blank" class="am-fl am-margin-left-xs"><img width="35" height="27" src="{{$module_data.idcard_back}}" alt="身份证人像面" class="am-img-thumbnail am-radius am-block" /></a>{{/if}}</p>
<p class="am-nbfc"><span class="am-fl">{{:MyLang('useraddress.detail_user_address_idcard_pic')}}</span>{{if !empty($module_data['idcard_front'])}}<a href="{{$module_data.idcard_front}}" target="_blank" class="am-fl"><img width="35" height="27" src="{{$module_data.idcard_front}}" class="am-img-thumbnail am-radius am-block" /></a>{{/if}} {{if !empty($module_data['idcard_back'])}}<a href="{{$module_data.idcard_back}}" target="_blank" class="am-fl am-margin-left-xs"><img width="35" height="27" src="{{$module_data.idcard_back}}" class="am-img-thumbnail am-radius am-block" /></a>{{/if}}</p>
{{/if}}
{{/if}}

View File

@ -1,6 +1,6 @@
<!-- 是否默认 -->
{{if isset($module_data['is_default']) and $module_data['is_default'] eq 1}}
<span class="am-badge am-badge-success-plain am-round">默认</span>
<span class="am-badge am-badge-success-plain am-round">{{:MyLang('default_title')}}</span>
{{else /}}
<span class="am-badge am-badge-default-plain am-round"></span>
<span class="am-badge am-badge-default-plain am-round">{{:MyLang('no_title')}}</span>
{{/if}}

View File

@ -1,12 +1,10 @@
<!-- 经纬度 -->
{{if !empty($module_data['lng'])}}
<p><span>经度:</span>{{$module_data.lng}}</p>
{{/if}}
{{if !empty($module_data['lat'])}}
<p class="am-margin-top-xs"><span>纬度:</span>{{$module_data.lat}}</p>
{{/if}}
{{if isset($module_data['lng']) and isset($module_data['lat']) and $module_data['lng'] neq 0 and $module_data['lat'] neq 0}}
<div class="am-margin-top-xs">
<button type="button" class="am-btn am-btn-success am-btn-xs am-radius am-icon-map-marker am-padding-xs submit-map-popup" data-lng="{{$module_data.lng}}" data-lat="{{$module_data.lat}}"> 查看位置</button>
</div>
<button type="button" class="am-btn am-btn-success am-btn-xs am-radius am-icon-map-marker am-padding-xs am-fr submit-map-popup" data-lng="{{$module_data.lng}}" data-lat="{{$module_data.lat}}"> {{:MyLang('view_title')}}</button>
{{if !empty($module_data['lng'])}}
<p><span>{{:MyLang('lan_title')}}</span>{{$module_data.lng}}</p>
{{/if}}
{{if !empty($module_data['lat'])}}
<p><span>{{:MyLang('lat_title')}}</span>{{$module_data.lat}}</p>
{{/if}}
{{/if}}

View File

@ -6,53 +6,53 @@
<!-- form start -->
<form class="am-form form-validation am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/useraddress/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/useraddress/index', $params)}}">
<legend>
<span class="am-text-default">用户地址{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<span class="am-text-default">{{:MyLang('useraddress.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/useraddress/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
{{if !empty($data) and !empty($data['user'])}}
<div class="am-alert am-alert-secondary am-nbfc am-margin-top-0">
<img src="{{$data.user.avatar}}" alt="{{$data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="75" height="75" />
<ul class="user-base">
<li>{{:MyLang('user_username_title')}}{{if empty($data['user']['username'])}}<span class="am-text-grey"></span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>{{:MyLang('user_nickname_title')}}{{if empty($data['user']['nickname'])}}<span class="am-text-grey"></span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>{{:MyLang('user_mobile_title')}}{{if empty($data['user']['mobile'])}}<span class="am-text-grey"></span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>{{:MyLang('user_email_title')}}{{if empty($data['user']['email'])}}<span class="am-text-grey"></span>{{else /}}{{$data.user.email}}{{/if}}</li>
<li>{{:MyLang('user_username_title')}}{{if empty($data['user']['username'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>{{:MyLang('user_nickname_title')}}{{if empty($data['user']['nickname'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>{{:MyLang('user_mobile_title')}}{{if empty($data['user']['mobile'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>{{:MyLang('user_email_title')}}{{if empty($data['user']['email'])}}<span class="am-text-grey">{{:MyLang('no_filled_tips')}}</span>{{else /}}{{$data.user.email}}{{/if}}</li>
</ul>
</div>
{{/if}}
<div class="am-form-group">
<label>用户id<span class="am-form-group-label-tips-must">*</span></label>
<input type="number" name="user_id" placeholder="用户id" min="0" data-validation-message="请填写用户id" class="am-radius" {{if !empty($data['user_id'])}} value="{{$data.user_id}}"{{/if}} required />
<label>{{:MyLang('useraddress.form_item_user_id')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="number" name="user_id" placeholder="{{:MyLang('useraddress.form_item_user_id')}}" min="0" data-validation-message="{{:MyLang('useraddress.form_item_user_id_message')}}" class="am-radius" {{if !empty($data['user_id'])}} value="{{$data.user_id}}"{{/if}} required />
</div>
<div class="am-cf">
<div class="am-u-sm-8 am-padding-horizontal-0">
<div class="am-form-group">
<label>姓名<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="姓名" minlength="2" maxlength="16" data-validation-message="姓名格式 2~16 个字符之间" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
<label>{{:MyLang('useraddress.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('useraddress.form_item_name_message')}}" minlength="2" maxlength="16" data-validation-message="{{:MyLang('useraddress.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
</div>
<div class="am-u-sm-4 am-padding-horizontal-0">
<div class="am-form-group">
<label>别名</label>
<input type="text" name="alias" placeholder="别名" minlength="0" maxlength="16" data-validation-message="别名格式最多 16 个字符" class="am-radius" {{if !empty($data['alias'])}} value="{{$data.alias}}"{{/if}} />
<label>{{:MyLang('useraddress.form_item_alias')}}</label>
<input type="text" name="alias" placeholder="{{:MyLang('useraddress.form_item_alias_message')}}" minlength="0" maxlength="16" data-validation-message="{{:MyLang('useraddress.form_item_alias_message')}}" class="am-radius" {{if !empty($data['alias'])}} value="{{$data.alias}}"{{/if}} />
</div>
</div>
</div>
<div class="am-form-group">
<label>电话<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="tel" placeholder="电话" minlength="6" maxlength="30" data-validation-message="电话格式有误" class="am-radius" {{if !empty($data['tel'])}} value="{{$data.tel}}"{{/if}} required />
<label>{{:MyLang('useraddress.form_item_tel')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="tel" placeholder="{{:MyLang('useraddress.form_item_tel')}}" minlength="6" maxlength="30" data-validation-message="{{:MyLang('useraddress.form_item_tel_message')}}" class="am-radius" {{if !empty($data['tel'])}} value="{{$data.tel}}"{{/if}} required />
</div>
{{include file="lib/region_linkage" /}}
<div class="am-form-group">
<label>详细地址<span class="am-form-group-label-tips-must">*</span></label>
<label>{{:MyLang('useraddress.form_item_address')}}<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-input-group am-input-group-sm">
<input type="hidden" name="lng" id="form-lng" {{if !empty($data['lng'])}} value="{{$data.lng}}"{{/if}} />
<input type="hidden" name="lat" id="form-lat" {{if !empty($data['lat'])}} value="{{$data.lat}}"{{/if}} />
<input type="text" name="address" id="form-address" placeholder="详细地址" minlength="2" maxlength="80" data-validation-message="详细地址格式 1~80 个字符之间" class="am-radius am-form-field" {{if !empty($data['address'])}} value="{{$data.address}}"{{/if}} required />
<input type="text" name="address" id="form-address" placeholder="{{:MyLang('useraddress.form_item_address_message')}}" minlength="2" maxlength="80" data-validation-message="{{:MyLang('useraddress.form_item_address_message')}}" class="am-radius am-form-field" {{if !empty($data['address'])}} value="{{$data.address}}"{{/if}} required />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default am-radius" id="map-location-submit">
<i class="am-icon-map-marker"></i>
@ -69,18 +69,18 @@
</div>
<div class="am-alert am-alert-secondary">
<div class="am-form-group">
<label>身份证姓名<span class="am-form-group-label-tips">请务必与上传的身份证件姓名保持一致</span></label>
<input type="text" name="idcard_name" placeholder="身份证姓名" minlength="0" maxlength="16" data-validation-message="身份证姓名格式最多 16 个字符" class="am-radius" {{if !empty($data['idcard_name'])}} value="{{$data.idcard_name}}"{{/if}} />
<label>{{:MyLang('useraddress.form_item_idcard_name')}}<span class="am-form-group-label-tips">{{:MyLang('useraddress.form_item_idcard_name_tips')}}</span></label>
<input type="text" name="idcard_name" placeholder="{{:MyLang('useraddress.form_item_idcard_name_message')}}" minlength="0" maxlength="16" data-validation-message="{{:MyLang('useraddress.form_item_idcard_name_message')}}" class="am-radius" {{if !empty($data['idcard_name'])}} value="{{$data.idcard_name}}"{{/if}} />
</div>
<div class="am-form-group">
<label>身份证号码<span class="am-form-group-label-tips">请务必与上传的身份证件号码保持一致</span></label>
<input type="text" name="idcard_number" placeholder="身份证号码" minlength="0" maxlength="18" data-validation-message="身份证号码格式最多 18 个字符" class="am-radius" {{if !empty($data['idcard_number'])}} value="{{$data.idcard_number}}"{{/if}} />
<label>{{:MyLang('useraddress.form_item_idcard_number')}}<span class="am-form-group-label-tips">{{:MyLang('useraddress.form_item_idcard_number_tips')}}</span></label>
<input type="text" name="idcard_number" placeholder="{{:MyLang('useraddress.form_item_idcard_number_message')}}" minlength="0" maxlength="18" data-validation-message="{{:MyLang('useraddress.form_item_idcard_number_message')}}" class="am-radius" {{if !empty($data['idcard_number'])}} value="{{$data.idcard_number}}"{{/if}} />
</div>
{{if empty($data) or empty($data['user_id'])}}
<p class="am-text-center am-text-warning am-margin-top-sm">先关联用户后再上传身份证图片</p>
<p class="am-text-center am-text-warning am-margin-top-sm">{{:MyLang('useraddress.form_item_idcard_no_user_tips')}}</p>
{{else /}}
<div class="am-form-group plug-file-upload-view">
<label>身份证照片<span class="am-form-group-label-tips">请使用身份证原件拍摄,图片要清晰</span></label>
<label>{{:MyLang('useraddress.form_item_idcard_images')}}<span class="am-form-group-label-tips">{{:MyLang('useraddress.form_item_idcard_images_tips')}}</span></label>
<div class="am-nbfc user-address-idcard-images">
<div class="am-fl">
<ul class="plug-file-upload-view images-idcard_front" data-form-name="idcard_front" data-max-number="1" data-dialog-type="images">
@ -92,7 +92,7 @@
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.images-idcard_front">+上传人像面图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.images-idcard_front">+ {{:MyLang('useraddress.form_item_idcard_front_button_name')}}</div>
</div>
<div class="am-fl am-margin-left-lg">
<ul class="plug-file-upload-view images-idcard_back" data-form-name="idcard_back" data-max-number="1" data-dialog-type="images">
@ -104,7 +104,7 @@
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.images-idcard_back">+上传国微面图片</div>
<div class="plug-file-upload-submit" data-view-tag="ul.images-idcard_back">+ {{:MyLang('useraddress.form_item_idcard_back_button_name')}}</div>
</div>
</div>
</div>

View File

@ -10,9 +10,9 @@
<!-- 底部提示信息 -->
{{block name="form_operate_bottom"}}
<div class="am-alert am-alert-warning">
<p>1. 权重数值越大代表权重越高、扣除库存按照权重依次扣除)</p>
<p>2. 仓库仅软删除、删除后将不可用、仅数据库中保留数据)可以自行删除关联的商品数据</p>
<p>3. 仓库停用和删除、关联的商品库存会立即释放</p>
</div>
{{if is_array(MyLang('warehouse.top_tips_list'))}}
<div class="am-alert am-alert-warning">
<p>{{:implode('</p><p>', MyLang('warehouse.top_tips_list'))}}</p>
</div>
{{/if}}
{{/block}}

View File

@ -1,9 +1,9 @@
<!-- 基础信息 -->
{{if !empty($module_data)}}
{{if !empty($module_data['name'])}}
<p>{{$module_data.name}}{{if isset($module_data['is_default']) and $module_data['is_default'] eq 1}}<span class="am-badge am-badge-success-plain am-round am-margin-left-xs">默认</span>{{/if}}</p>
<p>{{$module_data.name}}{{if isset($module_data['is_default']) and $module_data['is_default'] eq 1}}<span class="am-badge am-badge-success-plain am-round am-margin-left-xs">{{:MyLang('default_title')}}</span>{{/if}}</p>
{{/if}}
{{if !empty($module_data['alias'])}}
<p class="am-badge am-badge-secondary-plain am-radius">{{$module_data.alias}}</p>
<p class="am-badge am-badge-secondary-plain am-round">{{$module_data.alias}}</p>
{{/if}}
{{/if}}

View File

@ -1,12 +1,10 @@
<!-- 经纬度 -->
{{if !empty($module_data['lng'])}}
<p><span>经度:</span>{{$module_data.lng}}</p>
{{/if}}
{{if !empty($module_data['lat'])}}
<p class="am-margin-top-xs"><span>纬度:</span>{{$module_data.lat}}</p>
{{/if}}
{{if isset($module_data['lng']) and isset($module_data['lat']) and $module_data['lng'] neq 0 and $module_data['lat'] neq 0}}
<div class="am-margin-top-xs">
<button type="button" class="am-btn am-btn-success am-btn-xs am-radius am-icon-map-marker am-padding-xs submit-map-popup" data-lng="{{$module_data.lng}}" data-lat="{{$module_data.lat}}"> 查看位置</button>
</div>
<button type="button" class="am-btn am-btn-success am-btn-xs am-radius am-icon-map-marker am-padding-xs am-fr submit-map-popup" data-lng="{{$module_data.lng}}" data-lat="{{$module_data.lat}}"> {{:MyLang('view_title')}}</button>
{{if !empty($module_data['lng'])}}
<p><span>{{:MyLang('lan_title')}}</span>{{$module_data.lng}}</p>
{{/if}}
{{if !empty($module_data['lat'])}}
<p><span>{{:MyLang('lat_title')}}</span>{{$module_data.lat}}</p>
{{/if}}
{{/if}}

View File

@ -6,7 +6,7 @@
<!-- form start -->
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/warehouse/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/warehouse/index', $params)}}">
<legend>
<span class="am-text-default">仓库{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<span class="am-text-default">{{:MyLang('warehouse.base_nav_title')}}{{if empty($data['id'])}}{{:MyLang('created_title')}}{{else /}}{{:MyLang('edit_title')}}{{/if}}</span>
<a href="{{:MyUrl('admin/warehouse/index', $params)}}" class="am-fr am-text-sm am-margin-top-sm am-icon-mail-reply"> {{:MyLang('retreat_title')}}</a>
</legend>
@ -15,14 +15,14 @@
<div class="am-cf">
<div class="am-u-sm-8 am-padding-horizontal-0">
<div class="am-form-group">
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="名称" minlength="2" maxlength="30" data-validation-message="名称格式 2~30 个字符之间" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
<label>{{:MyLang('warehouse.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('warehouse.form_item_name_message')}}" minlength="2" maxlength="30" data-validation-message="{{:MyLang('warehouse.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
</div>
<div class="am-u-sm-4 am-padding-horizontal-0">
<div class="am-form-group">
<label>别名</label>
<input type="text" name="alias" placeholder="别名" minlength="0" maxlength="16" data-validation-message="别名格式最多 16 个字符" class="am-radius" {{if !empty($data)}} value="{{$data.alias}}"{{/if}} />
<label>{{:MyLang('warehouse.form_item_alias')}}</label>
<input type="text" name="alias" placeholder="{{:MyLang('warehouse.form_item_alias_message')}}" minlength="0" maxlength="16" data-validation-message="{{:MyLang('warehouse.form_item_alias_message')}}" class="am-radius" {{if !empty($data['alias'])}} value="{{$data.alias}}"{{/if}} />
</div>
</div>
</div>
@ -45,22 +45,22 @@
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>权重<span class="am-form-group-label-tips">权重数值越大代表权重越高</span></label>
<input type="number" name="level" placeholder="权重" minlength="0" maxlength="16" data-validation-message="请输入有效权重数值" class="am-radius" {{if !empty($data)}} value="{{$data.level}}"{{/if}} />
<label>{{:MyLang('warehouse.form_item_level')}}<span class="am-form-group-label-tips">{{:MyLang('warehouse.form_item_level_tips')}}</span></label>
<input type="number" name="level" placeholder="{{:MyLang('warehouse.form_item_level')}}" minlength="0" maxlength="16" data-validation-message="{{:MyLang('warehouse.form_item_level_message')}}" class="am-radius" {{if !empty($data['level'])}} value="{{$data.level}}"{{/if}} />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-cf">
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>联系人<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="contacts_name" placeholder="联系人" minlength="2" maxlength="16" data-validation-message="联系人格式 2~16 个字符之间" class="am-radius" {{if !empty($data)}} value="{{$data.contacts_name}}"{{/if}} required />
<label>{{:MyLang('warehouse.form_item_contacts_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="contacts_name" placeholder="{{:MyLang('warehouse.form_item_contacts_name_message')}}" minlength="2" maxlength="16" data-validation-message="{{:MyLang('warehouse.form_item_contacts_name_message')}}" class="am-radius" {{if !empty($data['contacts_name'])}} value="{{$data.contacts_name}}"{{/if}} required />
</div>
</div>
<div class="am-u-sm-6 am-padding-horizontal-0">
<div class="am-form-group">
<label>联系电话<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="contacts_tel" placeholder="电话" minlength="6" maxlength="30" data-validation-message="电话格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.contacts_tel}}"{{/if}} required />
<label>{{:MyLang('warehouse.form_item_contacts_tel')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="contacts_tel" placeholder="{{:MyLang('warehouse.form_item_contacts_name')}}" minlength="6" maxlength="30" data-validation-message="{{:MyLang('warehouse.form_item_contacts_tel_message')}}" class="am-radius" {{if !empty($data['contacts_tel'])}} value="{{$data.contacts_tel}}"{{/if}} required />
</div>
</div>
</div>
@ -69,11 +69,11 @@
{{include file="lib/region_linkage" /}}
<div class="am-form-group">
<label>详细地址<span class="am-form-group-label-tips-must">*</span></label>
<label>{{:MyLang('warehouse.form_item_address')}}<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-input-group am-input-group-sm">
<input type="hidden" name="lng" id="form-lng" {{if !empty($data)}} value="{{$data.lng}}"{{/if}} />
<input type="hidden" name="lat" id="form-lat" {{if !empty($data)}} value="{{$data.lat}}"{{/if}} />
<input type="text" name="address" id="form-address" placeholder="详细地址" minlength="2" maxlength="80" data-validation-message="详细地址格式 1~80 个字符之间" class="am-radius" {{if !empty($data)}} value="{{$data.address}}"{{/if}} required />
<input type="text" name="address" id="form-address" placeholder="{{:MyLang('warehouse.form_item_address_message')}}" minlength="1" maxlength="80" data-validation-message="{{:MyLang('warehouse.form_item_address_message')}}" class="am-radius" {{if !empty($data)}} value="{{$data.address}}"{{/if}} required />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default am-radius" id="map-location-submit">
<i class="am-icon-map-marker"></i>

View File

@ -5,29 +5,24 @@
{{block name="detail_data"}}
<!-- 父级内容 -->
{__block__}
<!-- 规格 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">规格库存</div>
<div class="am-panel-hd">{{:MyLang('warehousegoods.base_spec_inventory_title')}}</div>
<div class="am-panel-bd">
{{if !empty($spec)}}
<table class="am-table am-table-striped am-table-hover form-inventory-container">
<thead>
<tr>
<th>规格</th>
<th>库存</th>
<th>{{:MyLang('spec_title')}}</th>
<th>{{:MyLang('inventory_title')}}</th>
</tr>
</thead>
<tbody>
{{foreach $spec as $v}}
<tr>
<td>{{$v.name}}</td>
<td>
{{if empty($v['inventory'])}}
<span class="am-text-grey"></span>
{{else /}}
{{$v.inventory}}
{{/if}}
<td>{{if !empty($v['inventory'])}}{{$v.inventory}}{{/if}}</td>
</tr>
{{/foreach}}
</tbody>

View File

@ -27,7 +27,7 @@
{{/if}}
</div>
<div class="am-margin-top-sm">
<div class="spec-title number">库存</div>
<div class="spec-title number">{{:MyLang('inventory_title')}}</div>
<div class="inventory-number am-margin-top-sm">
<div class="am-input-group am-input-group-sm inventory-container">
<button class="am-input-group-label" id="min" type="button">-</button>

View File

@ -3,7 +3,7 @@
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus add-goods-submit"> 添加</button>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus add-goods-submit"> {{:MyLang('created_title')}}</button>
<!-- 父级内容 -->
{__block__}
{{/block}}
@ -14,7 +14,7 @@
<div class="am-popup" id="warehouse-goods-popup">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">商品添加</h4>
<h4 class="am-popup-title">{{:MyLang('warehousegoods.add_goods_title')}}</h4>
<span class="am-icon-arrows-alt am-full"></span>
<span data-am-modal-close class="am-close">&times;</span>
</div>
@ -22,8 +22,8 @@
<form class="am-form am-padding-sm goods-add-container">
<!-- 搜索 -->
<div class="forth-selection-container" data-search-url="{{:MyUrl('admin/warehousegoods/goodssearch')}}">
<select class="am-radius chosen-select forth-selection-form-warehouse" data-placeholder="仓库..." data-validation-message="请选择仓库">
<option value="">仓库...</option>
<select class="am-radius chosen-select forth-selection-form-warehouse" data-placeholder="{{:MyLang('warehousegoods.form_item_warehouseg_placeholder')}}" data-validation-message="{{:MyLang('warehousegoods.form_item_warehouseg_message')}}">
<option value="">{{:MyLang('warehousegoods.form_item_warehouseg_placeholder')}}</option>
{{if !empty($warehouse_list)}}
{{foreach $warehouse_list as $v}}
<option value="{{$v.id}}">{{$v.name}}</option>
@ -54,9 +54,7 @@
<!-- 商品列表 -->
<div class="am-scrollable-vertical am-margin-top-sm am-padding-bottom-xs goods-list-container" data-loading-msg="{{:MyLang('searching_tips')}}" data-add-url="{{:MyUrl('admin/warehousegoods/goodsadd')}}" data-del-url="{{:MyUrl('admin/warehousegoods/goodsdel')}}">
<ul class="am-gallery am-avg-sm-3 am-avg-md-4 am-avg-lg-5 am-gallery-bordered">
<div class="table-no"><i class="am-icon-warning"></i> 请搜索商品</div>
</ul>
<ul class="am-gallery am-avg-sm-3 am-avg-md-4 am-avg-lg-5 am-gallery-bordered"></ul>
</div>
<!-- 分页 -->

View File

@ -9,7 +9,7 @@
<table class="am-table am-table-striped am-table-hover form-inventory-container">
<thead>
<tr>
<th>规格</th>
<th>{{:MyLang('spec_title')}}</th>
<th>
<span>{{:MyLang('inventory_title')}}</span>
<!-- 批量设置 -->
@ -17,7 +17,7 @@
<a href="javascript:;" class="am-icon-edit am-dropdown-toggle"></a>
<div class="am-dropdown-content">
<div class="am-input-group am-input-group-sm">
<input type="text" class="am-form-field" placeholder="批量设置的值" />
<input type="text" class="am-form-field" placeholder="{{:MyLang('warehousegoods.batch_setup_inventory_placeholder')}}" />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default inventory-all-submit">{{:MyLang('confirm_title')}}</button>
</span>
@ -32,7 +32,7 @@
<tr>
<td>{{$v.name}}</td>
<td>
<input type="number" name="specifications_inventory[]" value="{{if !empty($v['inventory'])}}{{$v.inventory}}{{/if}}" placeholder="库存" class="am-radius" min="0" max="100000000" pattern="^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$" data-validation-message="库存数量 0~100000000" />
<input type="number" name="specifications_inventory[]" value="{{if !empty($v['inventory'])}}{{$v.inventory}}{{/if}}" placeholder="{{:MyLang('inventory_title')}}" class="am-radius" min="0" max="100000000" pattern="^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$" data-validation-message="{{:MyLang('warehousegoods.form_item_inventory_message')}}" />
<input type="hidden" name="specifications_md5_key[]" value="{{$v.md5_key}}" />
<input type="hidden" name="specifications_spec[]" value="{{$v.spec}}" />
</td>
@ -47,7 +47,7 @@
</form>
<!-- form end -->
{{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 无规格数据</div>
<div class="table-no"><i class="am-icon-warning"></i> {{:MyLang('warehousegoods.no_spec_data_tips')}}</div>
{{/if}}
</div>
</div>

View File

@ -3,11 +3,10 @@
{{if !empty($module_data['goods'])}}
<div class="am-nbfc">
<a href="{{$module_data.goods.goods_url}}" target="_blank">
<img src="{{$module_data.goods.images}}" alt="{{$module_data.goods.title}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-fl" width="60" height="60" />
<img src="{{$module_data.goods.images}}" alt="{{$module_data.goods.title}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-fl" width="35" height="35" />
</a>
<a class="am-text-top am-nowrap-initial" href="{{$module_data.goods.goods_url}}" target="_blank">{{$module_data.goods.title}}</a>
</div>
<p>{{$currency_symbol}}{{$module_data.goods.price}}</p>
{{else /}}
{{:MyLang('gods_info_abnormal_tips')}}
{{/if}}

View File

@ -71,7 +71,7 @@ class CustomView extends Common
return MyView();
}
}
MyViewAssign('msg', MyLang('custom_view.custom_view_no_data_tips'));
MyViewAssign('msg', MyLang('customview.custom_view_no_data_tips'));
return MyView('public/tips_error');
}
}

View File

@ -52,7 +52,7 @@ class UserAddress extends Common
// 模板数据
$assign = [
// 浏览器名称
'home_seo_site_title' => SeoService::BrowserSeoTitle(MyLang('user_address.browser_seo_title'), 1),
'home_seo_site_title' => SeoService::BrowserSeoTitle(MyLang('useraddress.browser_seo_title'), 1),
];
// 用户地址列表
$data = UserAddressService::UserAddressList(['user'=>$this->user]);

View File

@ -50,7 +50,7 @@ class UserGoodsBrowse extends Common
public function Index()
{
// 浏览器名称
MyViewAssign('home_seo_site_title', SeoService::BrowserSeoTitle(MyLang('user_goods_browse.browser_seo_title'), 1));
MyViewAssign('home_seo_site_title', SeoService::BrowserSeoTitle(MyLang('usergoodsbrowse.browser_seo_title'), 1));
return MyView();
}

View File

@ -50,7 +50,7 @@ class UserGoodsFavor extends Common
public function Index()
{
// 浏览器名称
MyViewAssign('home_seo_site_title', SeoService::BrowserSeoTitle(MyLang('user_goods_favor.browser_seo_title'), 1));
MyViewAssign('home_seo_site_title', SeoService::BrowserSeoTitle(MyLang('usergoodsfavor.browser_seo_title'), 1));
return MyView();
}

View File

@ -55,7 +55,7 @@ class UserIntegral extends Common
'user_integral_data' => IntegralService::UserIntegral($this->user['id']),
// 浏览器名称
'home_seo_site_title' => SeoService::BrowserSeoTitle(MyLang('user_integral.browser_seo_title'), 1),
'home_seo_site_title' => SeoService::BrowserSeoTitle(MyLang('userintegral.browser_seo_title'), 1),
];
MyViewAssign($assign);
return MyView();

View File

@ -53,6 +53,7 @@ class OrderAftersale
*/
public function Run($params = [])
{
$lang = MyLang('orderaftersale.form_table');
return [
// 基础配置
'base' => [
@ -63,7 +64,7 @@ class OrderAftersale
// 表单配置
'form' => [
[
'label' => '基础信息',
'label' => $lang['goods'],
'view_type' => 'module',
'view_key' => 'orderaftersale/module/goods',
'grid_size' => 'lg',
@ -74,11 +75,11 @@ class OrderAftersale
'form_name' => 'id',
'where_type_custom' => 'in',
'where_value_custom' => 'WhereBaseGoodsInfo',
'placeholder' => '请输入订单号/商品名称/型号',
'placeholder' => $lang['goods_placeholder'],
],
],
[
'label' => '状态',
'label' => $lang['status'],
'view_type' => 'field',
'view_key' => 'status',
'view_data_key' => 'name',
@ -95,7 +96,7 @@ class OrderAftersale
],
],
[
'label' => '申请类型',
'label' => $lang['type'],
'view_type' => 'field',
'view_key' => 'type',
'view_data_key' => 'name',
@ -112,7 +113,7 @@ class OrderAftersale
],
],
[
'label' => '原因',
'label' => $lang['reason'],
'view_type' => 'field',
'view_key' => 'reason',
'is_sort' => 1,
@ -122,7 +123,7 @@ class OrderAftersale
],
],
[
'label' => '退款金额(元)',
'label' => $lang['price'],
'view_type' => 'field',
'view_key' => 'price',
'is_sort' => 1,
@ -132,7 +133,7 @@ class OrderAftersale
],
],
[
'label' => '退货数量',
'label' => $lang['number'],
'view_type' => 'field',
'view_key' => 'number',
'is_sort' => 1,
@ -141,7 +142,7 @@ class OrderAftersale
],
],
[
'label' => '退款说明',
'label' => $lang['msg'],
'view_type' => 'field',
'view_key' => 'msg',
'grid_size' => 'sm',
@ -152,7 +153,7 @@ class OrderAftersale
],
],
[
'label' => '退款类型',
'label' => $lang['refundment'],
'view_type' => 'field',
'view_key' => 'refundment',
'view_data_key' => 'name',
@ -169,7 +170,7 @@ class OrderAftersale
],
],
[
'label' => '快递公司',
'label' => $lang['express_name'],
'view_type' => 'field',
'view_key' => 'express_name',
'is_sort' => 1,
@ -179,7 +180,7 @@ class OrderAftersale
],
],
[
'label' => '快递单号',
'label' => $lang['express_number'],
'view_type' => 'field',
'view_key' => 'express_number',
'is_sort' => 1,
@ -189,7 +190,7 @@ class OrderAftersale
],
],
[
'label' => '申请时间',
'label' => $lang['apply_time'],
'view_type' => 'field',
'view_key' => 'apply_time',
'is_sort' => 1,
@ -199,7 +200,7 @@ class OrderAftersale
],
],
[
'label' => '确认时间',
'label' => $lang['confirm_time'],
'view_type' => 'field',
'view_key' => 'confirm_time',
'is_sort' => 1,
@ -209,7 +210,7 @@ class OrderAftersale
],
],
[
'label' => '退货时间',
'label' => $lang['delivery_time'],
'view_type' => 'field',
'view_key' => 'delivery_time',
'is_sort' => 1,
@ -219,7 +220,7 @@ class OrderAftersale
],
],
[
'label' => '审核时间',
'label' => $lang['audit_time'],
'view_type' => 'field',
'view_key' => 'audit_time',
'is_sort' => 1,
@ -229,7 +230,7 @@ class OrderAftersale
],
],
[
'label' => '创建时间',
'label' => $lang['add_time'],
'view_type' => 'field',
'view_key' => 'add_time',
'is_sort' => 1,
@ -239,7 +240,7 @@ class OrderAftersale
],
],
[
'label' => '更新时间',
'label' => $lang['upd_time'],
'view_type' => 'field',
'view_key' => 'upd_time',
'is_sort' => 1,

View File

@ -53,7 +53,7 @@ class UserGoodsBrowse
*/
public function Run($params = [])
{
$lang = MyLang('user_goods_browse.form_table');
$lang = MyLang('usergoodsbrowse.form_table');
return [
// 基础配置
'base' => [

View File

@ -53,7 +53,7 @@ class UserGoodsFavor
*/
public function Run($params = [])
{
$lang = MyLang('user_goods_favor.form_table');
$lang = MyLang('usergoodsfavor.form_table');
return [
// 基础配置
'base' => [

View File

@ -53,7 +53,7 @@ class UserIntegral
*/
public function Run($params = [])
{
$lang = MyLang('user_integral.form_table');
$lang = MyLang('userintegral.form_table');
return [
// 基础配置
'base' => [

View File

@ -169,7 +169,7 @@ return [
],
// 自定义页面
'custom_view' => [
'customview' => [
'custom_view_no_data_tips' => 'Page does not exist or has been deleted',
],
@ -342,6 +342,26 @@ return [
'form_item_express_number_message' => 'The format of express bill number is between 1 and 60 characters',
'form_delivery_title' => 'Return Operate',
'form_delivery_address_name' => 'Return Address:',
// 动态表格
'form_table' => [
'goods' => 'Base Info',
'goods_placeholder' => 'Please enter the order number/product name/model',
'status' => 'Status',
'type' => 'Apply Type',
'reason' => 'Reason',
'price' => 'Refund Amount (yuan)',
'number' => 'Return Quantity',
'msg' => 'Refund instructions',
'refundment' => 'Refund Type',
'express_name' => 'Express Company',
'express_number' => 'Express Number',
'apply_time' => 'Apply Time',
'confirm_time' => 'Confirm Time',
'delivery_time' => 'Return Time',
'audit_time' => 'Audit Time',
'add_time' => 'Creation Time',
'upd_time' => 'Update Time',
],
],
// 用户
@ -412,7 +432,7 @@ return [
],
// 用户地址
'user_address' => [
'useraddress' => [
'browser_seo_title' => 'My Address',
// 表单
'form_item_name' => 'Full Name',
@ -436,7 +456,7 @@ return [
],
// 用户足迹
'user_goods_browse' => [
'usergoodsbrowse' => [
'browser_seo_title' => 'My Browse',
// 动态表格统计数据
'form_table' => [
@ -450,7 +470,7 @@ return [
],
// 用户商品收藏
'user_goods_favor' => [
'usergoodsfavor' => [
'browser_seo_title' => 'Goods Favor',
// 动态表格统计数据
'form_table' => [
@ -464,7 +484,7 @@ return [
],
// 用户积分
'user_integral' => [
'userintegral' => [
'browser_seo_title' => 'My Integral',
// 页面
'base_normal_title' => 'Normal Availability',

View File

@ -169,7 +169,7 @@ return [
],
// 自定义页面
'custom_view' => [
'customview' => [
'custom_view_no_data_tips' => '页面不存在或已删除',
],
@ -342,6 +342,26 @@ return [
'form_item_express_number_message' => '快递单号格式1~60个字符之间',
'form_delivery_title' => '退货操作',
'form_delivery_address_name' => '退货地址:',
// 动态表格
'form_table' => [
'goods' => '基础信息',
'goods_placeholder' => '请输入订单号/商品名称/型号',
'status' => '状态',
'type' => '申请类型',
'reason' => '原因',
'price' => '退款金额(元)',
'number' => '退货数量',
'msg' => '退款说明',
'refundment' => '退款类型',
'express_name' => '快递公司',
'express_number' => '快递单号',
'apply_time' => '申请时间',
'confirm_time' => '确认时间',
'delivery_time' => '退货时间',
'audit_time' => '审核时间',
'add_time' => '创建时间',
'upd_time' => '更新时间',
],
],
// 用户
@ -412,7 +432,7 @@ return [
],
// 用户地址
'user_address' => [
'useraddress' => [
'browser_seo_title' => '我的地址',
// 表单
'form_item_name' => '姓名',
@ -436,7 +456,7 @@ return [
],
// 用户足迹
'user_goods_browse' => [
'usergoodsbrowse' => [
'browser_seo_title' => '我的足迹',
// 动态表格统计数据
'form_table' => [
@ -459,12 +479,12 @@ return [
],
// 用户商品收藏
'user_goods_favor' => [
'usergoodsfavor' => [
'browser_seo_title' => '商品收藏',
],
// 用户积分
'user_integral' => [
'userintegral' => [
'browser_seo_title' => '我的积分',
// 页面
'base_normal_title' => '正常可用',

View File

@ -7,31 +7,31 @@
<div class="am-cf">
<div class="am-u-sm-8 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('user_address.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('user_address.form_item_name_message')}}" minlength="2" maxlength="16" data-validation-message="{{:MyLang('user_address.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
<label>{{:MyLang('useraddress.form_item_name')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="name" placeholder="{{:MyLang('useraddress.form_item_name_message')}}" minlength="2" maxlength="16" data-validation-message="{{:MyLang('useraddress.form_item_name_message')}}" class="am-radius" {{if !empty($data['name'])}} value="{{$data.name}}"{{/if}} required />
</div>
</div>
<div class="am-u-sm-4 am-padding-horizontal-0">
<div class="am-form-group">
<label>{{:MyLang('user_address.form_item_alias')}}</label>
<input type="text" name="alias" placeholder="{{:MyLang('user_address.form_item_alias_message')}}" minlength="0" maxlength="16" data-validation-message="{{:MyLang('user_address.form_item_alias_message')}}" class="am-radius" {{if !empty($data['alias'])}} value="{{$data.alias}}"{{/if}} />
<label>{{:MyLang('useraddress.form_item_alias')}}</label>
<input type="text" name="alias" placeholder="{{:MyLang('useraddress.form_item_alias_message')}}" minlength="0" maxlength="16" data-validation-message="{{:MyLang('useraddress.form_item_alias_message')}}" class="am-radius" {{if !empty($data['alias'])}} value="{{$data.alias}}"{{/if}} />
</div>
</div>
</div>
<div class="am-form-group">
<label>{{:MyLang('user_address.form_item_tel')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="tel" placeholder="{{:MyLang('user_address.form_item_tel')}}" minlength="6" maxlength="30" data-validation-message="{{:MyLang('user_address.form_item_tel_message')}}" class="am-radius" {{if !empty($data['tel'])}} value="{{$data.tel}}"{{/if}} required />
<label>{{:MyLang('useraddress.form_item_tel')}}<span class="am-form-group-label-tips-must">*</span></label>
<input type="text" name="tel" placeholder="{{:MyLang('useraddress.form_item_tel')}}" minlength="6" maxlength="30" data-validation-message="{{:MyLang('useraddress.form_item_tel_message')}}" class="am-radius" {{if !empty($data['tel'])}} value="{{$data.tel}}"{{/if}} required />
</div>
{{include file="lib/region_linkage" /}}
<div class="am-form-group">
<label>{{:MyLang('user_address.form_item_address')}}<span class="am-form-group-label-tips-must">*</span></label>
<label>{{:MyLang('useraddress.form_item_address')}}<span class="am-form-group-label-tips-must">*</span></label>
{{if MyC('home_user_address_map_status') eq 1}}
<div class="am-input-group am-input-group-sm">
<input type="hidden" name="lng" id="form-lng" {{if !empty($data['lng'])}} value="{{$data.lng}}"{{/if}} />
<input type="hidden" name="lat" id="form-lat" {{if !empty($data['lat'])}} value="{{$data.lat}}"{{/if}} />
<input type="text" name="address" id="form-address" placeholder="{{:MyLang('user_address.form_item_address_message')}}" minlength="2" maxlength="80" data-validation-message="{{:MyLang('user_address.form_item_address_message')}}" class="am-radius am-form-field" {{if !empty($data['address'])}} value="{{$data.address}}"{{/if}} required />
<input type="text" name="address" id="form-address" placeholder="{{:MyLang('useraddress.form_item_address_message')}}" minlength="2" maxlength="80" data-validation-message="{{:MyLang('useraddress.form_item_address_message')}}" class="am-radius am-form-field" {{if !empty($data['address'])}} value="{{$data.address}}"{{/if}} required />
<span class="am-input-group-btn">
<button type="button" class="am-btn am-btn-default am-radius" id="map-location-submit">
<i class="am-icon-map-marker"></i>
@ -41,7 +41,7 @@
</div>
<div id="map" data-level="17" class="am-margin-top-xs"></div>
{{else /}}
<input type="text" name="address" id="form-address" placeholder="{{:MyLang('user_address.form_item_address_message')}}" minlength="2" maxlength="80" data-validation-message="{{:MyLang('user_address.form_item_address_message')}}" class="am-radius" {{if !empty($data['address'])}} value="{{$data.address}}"{{/if}} required />
<input type="text" name="address" id="form-address" placeholder="{{:MyLang('useraddress.form_item_address_message')}}" minlength="2" maxlength="80" data-validation-message="{{:MyLang('useraddress.form_item_address_message')}}" class="am-radius" {{if !empty($data['address'])}} value="{{$data.address}}"{{/if}} required />
{{/if}}
</div>
@ -52,15 +52,15 @@
{{if MyC('home_user_address_idcard_status') eq 1}}
<div class="am-alert am-alert-secondary">
<div class="am-form-group">
<label>{{:MyLang('user_address.form_item_idcard_name')}}<span class="am-form-group-label-tips">{{:MyLang('user_address.form_item_idcard_name_tips')}}</span></label>
<input type="text" name="idcard_name" placeholder="{{:MyLang('user_address.form_item_idcard_name')}}" minlength="0" maxlength="16" data-validation-message="{{:MyLang('user_address.form_item_idcard_name_message')}}" class="am-radius" {{if !empty($data['idcard_name'])}} value="{{$data.idcard_name}}"{{/if}} />
<label>{{:MyLang('useraddress.form_item_idcard_name')}}<span class="am-form-group-label-tips">{{:MyLang('useraddress.form_item_idcard_name_tips')}}</span></label>
<input type="text" name="idcard_name" placeholder="{{:MyLang('useraddress.form_item_idcard_name')}}" minlength="0" maxlength="16" data-validation-message="{{:MyLang('useraddress.form_item_idcard_name_message')}}" class="am-radius" {{if !empty($data['idcard_name'])}} value="{{$data.idcard_name}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{:MyLang('user_address.form_item_idcard_number')}}<span class="am-form-group-label-tips">{{:MyLang('user_address.form_item_idcard_number_tips')}}</span></label>
<input type="text" name="idcard_number" placeholder="{{:MyLang('user_address.form_item_idcard_number')}}" minlength="0" maxlength="18" data-validation-message="{{:MyLang('user_address.form_item_idcard_number_message')}}" class="am-radius" {{if !empty($data['idcard_number'])}} value="{{$data.idcard_number}}"{{/if}} />
<label>{{:MyLang('useraddress.form_item_idcard_number')}}<span class="am-form-group-label-tips">{{:MyLang('useraddress.form_item_idcard_number_tips')}}</span></label>
<input type="text" name="idcard_number" placeholder="{{:MyLang('useraddress.form_item_idcard_number')}}" minlength="0" maxlength="18" data-validation-message="{{:MyLang('useraddress.form_item_idcard_number_message')}}" class="am-radius" {{if !empty($data['idcard_number'])}} value="{{$data.idcard_number}}"{{/if}} />
</div>
<div class="am-form-group plug-file-upload-view">
<label>{{:MyLang('user_address.form_item_idcard_images')}}<span class="am-form-group-label-tips">{{:MyLang('user_address.form_item_idcard_images_tips')}}</span></label>
<label>{{:MyLang('useraddress.form_item_idcard_images')}}<span class="am-form-group-label-tips">{{:MyLang('useraddress.form_item_idcard_images_tips')}}</span></label>
<div class="am-nbfc user-address-idcard-images">
<div class="am-fl">
<ul class="plug-file-upload-view images-idcard_front" data-form-name="idcard_front" data-max-number="1" data-dialog-type="images">
@ -72,7 +72,7 @@
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.images-idcard_front">+{{:MyLang('user_address.form_item_idcard_front_button_name')}}</div>
<div class="plug-file-upload-submit" data-view-tag="ul.images-idcard_front">+{{:MyLang('useraddress.form_item_idcard_front_button_name')}}</div>
</div>
<div class="am-fl am-margin-left-lg">
<ul class="plug-file-upload-view images-idcard_back" data-form-name="idcard_back" data-max-number="1" data-dialog-type="images">
@ -84,7 +84,7 @@
<i>×</i>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.images-idcard_back">+{{:MyLang('user_address.form_item_idcard_back_button_name')}}</div>
<div class="plug-file-upload-submit" data-view-tag="ul.images-idcard_back">+{{:MyLang('useraddress.form_item_idcard_back_button_name')}}</div>
</div>
</div>
</div>

View File

@ -5,16 +5,16 @@
{{block name="form_navigation"}}
<div class="am-alert am-alert-secondary" data-am-alert>
<div class="available">
<span>{{:MyLang('user_integral.base_normal_title')}}</span>
<span>{{:MyLang('userintegral.base_normal_title')}}</span>
<span class="panel-value">{{$user_integral_data.integral}}</span>
<em>{{:MyLang('user_integral.base_integral_unit')}}</em>
<span class="panel-tips">{{:MyLang('user_integral.base_normal_tips')}}</span>
<em>{{:MyLang('userintegral.base_integral_unit')}}</em>
<span class="panel-tips">{{:MyLang('userintegral.base_normal_tips')}}</span>
</div>
<div class="locking">
<span>{{:MyLang('user_integral.base_locking_title')}}</span>
<span>{{:MyLang('userintegral.base_locking_title')}}</span>
<span class="panel-value">{{$user_integral_data.locking_integral}}</span>
<em>{{:MyLang('user_integral.base_integral_unit')}}</em>
<span class="panel-tips">{{:MyLang('user_integral.base_locking_tips')}}</span>
<em>{{:MyLang('userintegral.base_integral_unit')}}</em>
<span class="panel-tips">{{:MyLang('userintegral.base_locking_tips')}}</span>
</div>
</div>
{{/block}}

View File

@ -26,6 +26,8 @@ return [
'operate_params_error' => 'Incorrect operation parameters',
'not_operate_error' => 'No related operation',
'not_data_error' => 'No relevant data',
'confirm_name' => 'Confirm',
'cancel_name' => 'Cancel',
'select_reverse_name' => 'Cancel',
'select_all_name' => 'All',
'loading_tips' => 'Loading...',
@ -197,6 +199,7 @@ return [
'cancel_title' => 'Cancel',
'search_title' => 'Search',
'query_title' => 'Query',
'execute_title' => 'Execute',
'setup_title' => 'Setup',
'save_title' => 'Save',
'edit_title' => 'Edit',
@ -330,6 +333,8 @@ return [
'images_title' => 'Images',
'text_title' => 'Text',
'loading_title' => 'Loading',
'lan_title' => 'Longitude',
'lat_title' => 'Latitude',
// 商品基础相关
'goods_name' => 'Goods Name',
'goods_stop_sale_title' => 'Stop Sale',

View File

@ -26,6 +26,8 @@ return [
'operate_params_error' => '操作参数有误',
'not_operate_error' => '没有相关操作',
'not_data_error' => '没有相关数据',
'confirm_name' => '确认',
'cancel_name' => '取消',
'select_reverse_name' => '反选',
'select_all_name' => '全选',
'loading_tips' => '加载中...',
@ -198,6 +200,7 @@ return [
'cancel_title' => '取消',
'search_title' => '搜索',
'query_title' => '查询',
'execute_title' => '执行',
'setup_title' => '设置',
'save_title' => '保存',
'edit_title' => '编辑',
@ -331,6 +334,8 @@ return [
'images_title' => '图片',
'text_title' => '文本',
'loading_title' => '加载',
'lan_title' => '经度',
'lat_title' => '纬度',
// 商品基础相关
'goods_name' => '商品名称',
'goods_stop_sale_title' => '暂停销售',

View File

@ -221,19 +221,14 @@ class AdminPowerService
// 缓存没数据则从数据库重新读取
if((($role_id > 0 || $admin_id == 1) && (empty($admin_left_menu) || empty($admin_power))) || $is_refresh || MyEnv('app_debug'))
{
// 获取一级数据
if($admin_id == 1 || $role_id == 1)
{
$field = 'id,name,control,action,url,is_show,icon';
$admin_left_menu = Db::name('Power')->where(array('pid' => 0))->field($field)->order('sort')->select()->toArray();
} else {
$field = 'p.id,p.name,p.control,p.action,p.url,p.is_show,p.icon';
$admin_left_menu = Db::name('Power')->alias('p')->join('role_power rp', 'p.id=rp.power_id')->where(array('rp.role_id' => $role_id, 'p.pid' => 0))->field($field)->order('p.sort')->select()->toArray();
}
// 有数据,则处理子级数据
// 获取一级数据、有数据,则处理子级数据
$admin_left_menu = self::AdminPowerMenuData($admin_id, $role_id);
if(!empty($admin_left_menu))
{
// 语言数据
$lang = MyLang('admin_power_menu_list');
$temp_lang = [];
// 菜单权限
foreach($admin_left_menu as $k=>$v)
{
@ -241,24 +236,25 @@ class AdminPowerService
if(!empty($v['control']) && !empty($v['action']))
{
// 权限
$admin_power[$v['id']] = strtolower($v['control'].'_'.$v['action']);
$key = strtolower($v['control'].'_'.$v['action']);
$admin_power[$v['id']] = $key;
// url、存在自定义url则不覆盖
if(empty($v['url']))
{
$admin_left_menu[$k]['url'] = MyUrl('admin/'.strtolower($v['control']).'/'.strtolower($v['action']));
}
// 语言处理
if(!empty($lang) && is_array($lang) && array_key_exists($key, $lang))
{
$temp_lang = $lang[$key];
$admin_left_menu[$k]['name'] = $temp_lang['name'];
}
}
// 获取子权限
if(($admin_id == 1 || $role_id == 1) && !empty($v['id']))
{
$items = Db::name('Power')->where(['pid'=>intval($v['id'])])->field($field)->order('sort')->select()->toArray();
} else {
$items = Db::name('Power')->alias('p')->join('role_power rp', 'p.id=rp.power_id')->where(['rp.role_id'=>$role_id, 'p.pid'=>intval($v['id'])])->field($field)->order('p.sort')->select()->toArray();
}
// 权限列表
$items = self::AdminPowerMenuData($admin_id, $role_id, $v['id']);
$is_show_parent = isset($v['is_show']) ? $v['is_show'] : 0;
if(!empty($items))
{
@ -268,13 +264,20 @@ class AdminPowerService
if(!empty($vs['control']) && !empty($vs['action']))
{
// 权限
$admin_power[$vs['id']] = strtolower($vs['control'].'_'.$vs['action']);
$key = strtolower($vs['control'].'_'.$vs['action']);
$admin_power[$vs['id']] = $key;
// url、存在自定义url则不覆盖
if(empty($vs['url']))
{
$items[$ks]['url'] = MyUrl('admin/'.strtolower($vs['control']).'/'.strtolower($vs['action']));
}
// 语言处理
if(!empty($temp_lang['item']) && is_array($temp_lang['item']) && array_key_exists($key, $temp_lang['item']))
{
$items[$ks]['name'] = $temp_lang['item'][$key];
}
}
// 是否显示视图
@ -333,5 +336,29 @@ class AdminPowerService
'admin_plugins' => $admin_plugins,
];
}
/**
* 权限菜单读取
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2023-02-01
* @desc description
* @param [int] $admin_id [管理员id]
* @param [int] $role_id [角色id]
* @param [int] $pid [父id]
*/
public static function AdminPowerMenuData($admin_id, $role_id, $pid = 0)
{
if($admin_id == 1 || $role_id == 1)
{
$field = 'id,name,control,action,url,is_show,icon';
$data = Db::name('Power')->where(['pid' => $pid])->field($field)->order('sort')->select()->toArray();
} else {
$field = 'p.id,p.name,p.control,p.action,p.url,p.is_show,p.icon';
$data = Db::name('Power')->alias('p')->join('role_power rp', 'p.id=rp.power_id')->where(['rp.role_id' => $role_id, 'p.pid' => $pid])->field($field)->order('p.sort')->select()->toArray();
}
return $data;
}
}
?>

View File

@ -144,7 +144,7 @@ class AppCenterNavService
$data = [
'name' => $params['name'],
'platform' => $params['platform'],
'event_type' => isset($params['event_type']) ? intval($params['event_type']) : -1,
'event_type' => (isset($params['event_type']) && $params['event_type'] != '') ? intval($params['event_type']) : -1,
'event_value' => $params['event_value'],
'images_url' => $attachment['data']['images_url'],
'desc' => empty($params['desc']) ? '' : $params['desc'],

View File

@ -138,7 +138,7 @@ class AppHomeNavService
$data = [
'name' => $params['name'],
'platform' => $params['platform'],
'event_type' => isset($params['event_type']) ? intval($params['event_type']) : -1,
'event_type' => (isset($params['event_type']) && $params['event_type'] != '') ? intval($params['event_type']) : -1,
'event_value' => $params['event_value'],
'images_url' => $attachment['data']['images_url'],
'bg_color' => isset($params['bg_color']) ? $params['bg_color'] : '',

View File

@ -602,9 +602,66 @@ class DesignService
return DataReturn('压缩包打开失败['.$resource.']', -11);
}
// 文件处理
// 配置信息
$config = [];
$data_id = 0;
for($i=0; $i<$zip->numFiles; $i++)
{
$file = $zip->getNameIndex($i);
if(stripos($file, 'config.json') !== false)
{
$stream = $zip->getStream($file);
if($stream === false)
{
$zip->close();
return DataReturn('配置信息读取失败', -1);
}
// 获取配置信息并解析
$file_content = stream_get_contents($stream);
$config = empty($file_content) ? [] : json_decode($file_content, true);
if(empty($config) || empty($config['data_id']) || empty($config['name']))
{
$zip->close();
return DataReturn('配置信息为空或有误', -1);
}
// 数据添加
$data = [
'name' => $config['name'],
'is_header' => (isset($config['is_header']) && $config['is_header'] == 1) ? 1 : 0,
'is_footer' => (isset($config['is_footer']) && $config['is_footer'] == 1) ? 1 : 0,
'add_time' => time(),
];
$data_id = Db::name('Design')->insertGetId($data);
if($data_id <= 0)
{
$zip->close();
return DataReturn('数据添加失败', -1);
}
// 更新配置信息和logo
if(!empty($config['config']) || !empty($config['logo']))
{
$upd_data = [
'logo' => empty($config['logo']) ? '' : str_replace($config['data_id'], $data_id, $config['logo']),
'config' => empty($config['config']) ? '' : str_replace($config['data_id'], $data_id, json_encode($config['config'], JSON_UNESCAPED_UNICODE)),
'upd_time' => time(),
];
if(!Db::name('Design')->where(['id'=>$data_id])->update($upd_data))
{
$zip->close();
return DataReturn('数据更新失败', -1);
}
}
break;
}
}
if(empty($config) || empty($data_id))
{
return DataReturn('配置文件处理失败', -1);
}
// 文件处理
$success = 0;
for($i=0; $i<$zip->numFiles; $i++)
{
@ -616,88 +673,34 @@ class DesignService
{
// 去除第一个目录为原始数据的id
$temp_file = substr($file, strpos($file, '/')+1);
if(empty($temp_file) || in_array($temp_file, ['static/', 'static/upload/']))
if(empty($temp_file) || in_array($temp_file, ['static/', 'static/upload/', 'config.json']))
{
continue;
}
// 是否配置文件
if($temp_file == 'config.json')
// 截取文件路径
$new_file = ROOT.'public'.DS.str_replace($config['data_id'], $data_id, $temp_file);
$file_path = substr($new_file, 0, strrpos($new_file, '/'));
// 路径不存在则创建
\base\FileUtil::CreateDir($file_path);
// 如果不是目录则写入文件
if(!is_dir($new_file))
{
// 读取这个文件
$stream = $zip->getStream($file);
if($stream === false)
if($stream !== false)
{
$zip->close();
return DataReturn('配置信息读取失败', -1);
}
// 获取配置信息并解析
$file_content = stream_get_contents($stream);
$config = empty($file_content) ? [] : json_decode($file_content, true);
if(empty($config) || empty($config['data_id']) || empty($config['name']))
{
$zip->close();
return DataReturn('配置信息为空或有误', -1);
}
// 数据添加
$data = [
'name' => $config['name'],
'is_header' => (isset($config['is_header']) && $config['is_header'] == 1) ? 1 : 0,
'is_footer' => (isset($config['is_footer']) && $config['is_footer'] == 1) ? 1 : 0,
'add_time' => time(),
];
$data_id = Db::name('Design')->insertGetId($data);
if($data_id <= 0)
{
$zip->close();
return DataReturn('数据添加失败', -1);
}
// 更新配置信息和logo
if(!empty($config['config']) || !empty($config['logo']))
{
$upd_data = [
'logo' => empty($config['logo']) ? '' : str_replace($config['data_id'], $data_id, $config['logo']),
'config' => empty($config['config']) ? '' : str_replace($config['data_id'], $data_id, json_encode($config['config'], JSON_UNESCAPED_UNICODE)),
'upd_time' => time(),
];
if(!Db::name('Design')->where(['id'=>$data_id])->update($upd_data))
$file_content = stream_get_contents($stream);
if($file_content !== false)
{
$zip->close();
return DataReturn('数据更新失败', -1);
}
}
$success++;
continue;
}
// 配置信息和新的数据id必须存在
if(!empty($config) && !empty($data_id))
{
// 截取文件路径
$new_file = ROOT.'public'.DS.str_replace($config['data_id'], $data_id, $temp_file);
$file_path = substr($new_file, 0, strrpos($new_file, '/'));
// 路径不存在则创建
\base\FileUtil::CreateDir($file_path);
// 如果不是目录则写入文件
if(!is_dir($new_file))
{
// 读取这个文件
$stream = $zip->getStream($file);
if($stream !== false)
{
$file_content = stream_get_contents($stream);
if($file_content !== false)
if(file_put_contents($new_file, $file_content))
{
if(file_put_contents($new_file, $file_content))
{
$success++;
}
$success++;
}
fclose($stream);
}
fclose($stream);
}
}
}

View File

@ -139,7 +139,7 @@ class QuickNavService
$data = [
'name' => $params['name'],
'platform' => $params['platform'],
'event_type' => isset($params['event_type']) ? intval($params['event_type']) : -1,
'event_type' => (isset($params['event_type']) && $params['event_type'] != '') ? intval($params['event_type']) : -1,
'event_value' => $params['event_value'],
'images_url' => $attachment['data']['images_url'],
'bg_color' => isset($params['bg_color']) ? $params['bg_color'] : '',

View File

@ -147,7 +147,7 @@ class SlideService
$data = [
'name' => $params['name'],
'platform' => $params['platform'],
'event_type' => isset($params['event_type']) ? intval($params['event_type']) : -1,
'event_type' => (isset($params['event_type']) && $params['event_type'] != '') ? intval($params['event_type']) : -1,
'event_value' => $params['event_value'],
'images_url' => $attachment['data']['images_url'],
'bg_color' => isset($params['bg_color']) ? $params['bg_color'] : '',

View File

@ -345,7 +345,7 @@ class UserService
'key_name' => 'address',
'checked_data' => '80',
'is_checked' => 1,
'error_msg' => '地址格式最多 80 个字符之间',
'error_msg' => '地址格式最多80个字符',
],
[
'checked_type' => 'fun',

View File

@ -61,7 +61,8 @@
* 数据列表规格展示
*/
.spec-inventory-list {
height: 100px;
max-height: 75px;
height: auto;
}
.spec-inventory-list ul li .spec-name {
width: calc(100% - 75px);

View File

@ -14,6 +14,7 @@ $(function()
// 关闭刷新页面
window.location.reload();
});
$popup.find('.search-submit').trigger('click');
});
// 搜索商品

View File

@ -17,7 +17,7 @@ dialog.alert = function(options) {
options.class = options.class || '';
options.title = options.title || null;
options.content = options.content || '提示内容';
options.confirmText = options.confirmText || '确定';
options.confirmText = options.confirmText || window['lang_confirm_name'] || '确定';
options.isClose = options.isClose || false;
options.isBtn = options.isBtn || false;
options.config = options.config || {};
@ -67,10 +67,10 @@ dialog.alert = function(options) {
dialog.confirm = function(options) {
options = options || {};
options.title = options.title || '提示';
options.title = options.title || window['lang_operate_params_error'] || '提示';
options.content = options.content || '提示内容';
options.cancelText = options.cancelText || '取消';
options.confirmText = options.confirmText || '确定';
options.cancelText = options.cancelText || window['lang_cancel_name'] || '取消';
options.confirmText = options.confirmText || window['lang_confirm_name'] || '确定';
options.onConfirm = options.onConfirm || function() {};
options.onCancel = options.onCancel || function() {};
@ -80,7 +80,7 @@ dialog.confirm = function(options) {
html.push('<div class="am-modal-hd">' + options.title + '</div>');
html.push('<div class="am-modal-bd"><div class="am-padding-horizontal-xl am-padding-vertical-xs">' + options.content + '</div></div>');
html.push('<div class="am-modal-footer">');
html.push('<span class="am-modal-btn" data-am-modal-cancel>'+options.cancelText+'</span>');
html.push('<span class="am-modal-btn am-text-danger" data-am-modal-cancel>'+options.cancelText+'</span>');
html.push('<span class="am-modal-btn" data-am-modal-confirm>'+options.confirmText+'</span>');
html.push('</div>');
html.push('</div>');
@ -107,7 +107,7 @@ dialog.loading = function(options) {
$('#my-modal-loading').modal('close');
} else {
options = options || {};
options.title = options.title || '正在载入...';
options.title = options.title || window['lang_loading_tips'] || '正在载入...';
if($('#my-modal-loading').length > 0)
{
@ -134,8 +134,8 @@ dialog.loading = function(options) {
dialog.actions = function(options) {
options = options || {};
options.title = options.title || '您想整咋样?';
options.cancelText = options.cancelText || '取消';
options.title = options.title || window['lang_operate_params_error'] || '您想整咋样?';
options.cancelText = options.cancelText || window['lang_cancel_name'] || '取消';
options.items = options.items || [];
var html = [];
html.push('<div class="am-modal-actions">');