提交 05d34233 编写于 作者: D Devil

新增用户隐私政策、动态表格层级样式优化、细节优化

上级 a7a813d9
...@@ -57,6 +57,19 @@ class Agreement extends Common ...@@ -57,6 +57,19 @@ class Agreement extends Common
// 编辑器文件存放地址 // 编辑器文件存放地址
$this->assign('editor_path_type', ResourcesService::EditorPathTypeValue('agreement')); $this->assign('editor_path_type', ResourcesService::EditorPathTypeValue('agreement'));
// 导航数据
$nav_data = [
[
'name' => '用户注册协议',
'type' => 'register',
],
[
'name' => '用户隐私政策',
'type' => 'privacy',
]
];
$this->assign('nav_data', $nav_data);
// 导航/视图 // 导航/视图
$nav_type = input('nav_type', 'register'); $nav_type = input('nav_type', 'register');
$this->assign('nav_type', $nav_type); $this->assign('nav_type', $nav_type);
......
<ul class="am-nav am-nav-pills table-nav second-nav"> <ul class="am-nav am-nav-pills table-nav second-nav">
<li {{if $nav_type eq 'register'}}class="am-active"{{/if}} data-type="register"> {{foreach $nav_data as $v}}
<a href="{{:MyUrl('admin/agreement/index', ['nav_type'=>'register'])}}">用户注册协议</a> <li {{if $nav_type eq $v['type']}}class="am-active"{{/if}} data-type="{{$v.type}}">
</li> <a href="{{:MyUrl('admin/agreement/index', ['nav_type'=>$v['type']])}}">{{$v.name}}</a>
</ul> </li>
\ No newline at end of file {{/foreach}}
</ul>
<div class="am-alert am-margin-sm" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>前端访问协议地址增加参数 is_content=0 则仅展示纯协议内容</p>
</div>
\ No newline at end of file
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<!-- table nav start -->
{{include file="agreement/nav" /}}
<!-- table nav end -->
<div class="content">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/agreement/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/agreement/index', ['nav_type'=>$nav_type])}}">
<div class="am-form-group">
<div class="am-cf">
<label><span class="am-form-group-label-tips am-margin-left-0">{{$data.common_agreement_userprivacy.describe}}</span></label>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userprivacy'])}}" target="_blank" class="am-fr">查看详情</a>
</div>
<textarea class="am-radius am-validate" name="{{$data.common_agreement_userprivacy.only_tag}}" maxlength="105000" id="editor-tag" data-validation-message="{{$data.common_agreement_userprivacy.error_tips}}">{{if !empty($data)}}{{$data.common_agreement_userprivacy.value|raw}}{{/if}}</textarea>
</div>
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userprivacy'])}}" target="_blank">
<button type="button" class="am-btn am-btn-default am-btn-xs am-btn-block am-margin-top-sm">查看详情</button>
</a>
</div>
</form>
<!-- form end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
\ No newline at end of file
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<div class="content"> <div class="content">
<!-- form start --> <!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/agreement/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/agreement/index', ['type'=>$nav_type])}}"> <form class="am-form form-validation view-save" action="{{:MyUrl('admin/agreement/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/agreement/index', ['nav_type'=>$nav_type])}}">
<div class="am-form-group"> <div class="am-form-group">
<div class="am-cf"> <div class="am-cf">
<label><span class="am-form-group-label-tips am-margin-left-0">{{$data.common_agreement_userregister.describe}}</span></label> <label><span class="am-form-group-label-tips am-margin-left-0">{{$data.common_agreement_userregister.describe}}</span></label>
......
...@@ -79,6 +79,7 @@ ...@@ -79,6 +79,7 @@
<input type="text" name="idcard_front" value="{{$data.idcard_front_old}}" /> <input type="text" name="idcard_front" value="{{$data.idcard_front_old}}" />
{{/if}} {{/if}}
<img src="{{if empty($data['idcard_front'])}}{{$attachment_host}}/static/common/images/default-idcard-front.jpg{{else /}}{{$data.idcard_front}}{{/if}}" /> <img src="{{if empty($data['idcard_front'])}}{{$attachment_host}}/static/common/images/default-idcard-front.jpg{{else /}}{{$data.idcard_front}}{{/if}}" />
<i>×</i>
</li> </li>
</ul> </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">+上传人像面图片</div>
...@@ -90,6 +91,7 @@ ...@@ -90,6 +91,7 @@
<input type="text" name="idcard_back" value="{{$data.idcard_back_old}}" /> <input type="text" name="idcard_back" value="{{$data.idcard_back_old}}" />
{{/if}} {{/if}}
<img src="{{if empty($data['idcard_back'])}}{{$attachment_host}}/static/common/images/default-idcard-back.jpg{{else /}}{{$data.idcard_back}}{{/if}}" /> <img src="{{if empty($data['idcard_back'])}}{{$attachment_host}}/static/common/images/default-idcard-back.jpg{{else /}}{{$data.idcard_back}}{{/if}}" />
<i>×</i>
</li> </li>
</ul> </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">+上传国微面图片</div>
......
...@@ -62,6 +62,11 @@ class Agreement extends Common ...@@ -62,6 +62,11 @@ class Agreement extends Common
} }
$data = $ret['data']; $data = $ret['data'];
} }
// 是否隐藏头尾、默认显示
$is_content = isset($params['is_content']) ? intval($params['is_content']) : 1;
$this->assign('is_header', $is_content);
$this->assign('is_footer', $is_content);
$this->assign('data', $data); $this->assign('data', $data);
return $this->fetch(); return $this->fetch();
} }
......
{{include file="public/header" /}} {{include file="public/header" /}}
<!-- header top nav --> <!-- header nav start -->
{{include file="public/header_top_nav" /}} {{if isset($is_header) and $is_header eq 1}}
<!-- header top nav -->
{{include file="public/header_top_nav" /}}
<!-- search --> <!-- search -->
{{include file="public/nav_search" /}} {{include file="public/nav_search" /}}
<!-- header nav --> <!-- header nav -->
{{include file="public/header_nav" /}} {{include file="public/header_nav" /}}
<!-- goods category --> <!-- goods category -->
{{include file="public/goods_category" /}} {{include file="public/goods_category" /}}
{{/if}}
<!-- header nav end -->
<!-- content --> <!-- content -->
<div class="am-container"> <div class="am-container">
......
...@@ -137,4 +137,4 @@ ...@@ -137,4 +137,4 @@
</ul> </ul>
</div> </div>
</div> </div>
<!-- 顶部导航条 end <!-- 顶部导航条 end -->
\ No newline at end of file \ No newline at end of file
...@@ -103,9 +103,11 @@ ...@@ -103,9 +103,11 @@
{{if MyC('home_is_enable_userregister_agreement') eq 1}} {{if MyC('home_is_enable_userregister_agreement') eq 1}}
<div class="agreement am-padding-horizontal-sm"> <div class="agreement am-padding-horizontal-sm">
<label class="am-checkbox am-success c-p"> <label class="am-checkbox am-success c-p">
<input type="checkbox" value="1" name="is_agree_agreement" data-validation-message="请同意注册协议" data-am-ucheck required /> 阅读并同意 <input type="checkbox" value="1" name="is_agree_agreement" data-validation-message="请同意协议" data-am-ucheck required /> 阅读并同意
</label> </label>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userregister'])}}" target="_blank">《服务协议》</a> <a href="{{:MyUrl('index/agreement/index', ['document'=>'userregister'])}}" target="_blank">《服务协议》</a>
<span></span>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userprivacy'])}}" target="_blank">《隐私政策》</a>
</div> </div>
{{/if}} {{/if}}
...@@ -149,7 +151,7 @@ ...@@ -149,7 +151,7 @@
{{if MyC('home_is_enable_userregister_agreement') eq 1}} {{if MyC('home_is_enable_userregister_agreement') eq 1}}
<div class="agreement am-padding-horizontal-sm"> <div class="agreement am-padding-horizontal-sm">
<label class="am-checkbox am-success c-p"> <label class="am-checkbox am-success c-p">
<input type="checkbox" value="1" name="is_agree_agreement" data-validation-message="请同意注册协议" data-am-ucheck required /> 阅读并同意 <input type="checkbox" value="1" name="is_agree_agreement" data-validation-message="请同意协议" data-am-ucheck required /> 阅读并同意
</label> </label>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userregister'])}}" target="_blank">《服务协议》</a> <a href="{{:MyUrl('index/agreement/index', ['document'=>'userregister'])}}" target="_blank">《服务协议》</a>
</div> </div>
...@@ -195,7 +197,7 @@ ...@@ -195,7 +197,7 @@
{{if MyC('home_is_enable_userregister_agreement') eq 1}} {{if MyC('home_is_enable_userregister_agreement') eq 1}}
<div class="agreement am-padding-horizontal-sm"> <div class="agreement am-padding-horizontal-sm">
<label class="am-checkbox am-success c-p"> <label class="am-checkbox am-success c-p">
<input type="checkbox" value="1" name="is_agree_agreement" data-validation-message="请同意注册协议" data-am-ucheck required /> 阅读并同意 <input type="checkbox" value="1" name="is_agree_agreement" data-validation-message="请同意协议" data-am-ucheck required /> 阅读并同意
</label> </label>
<a href="{{:MyUrl('index/agreement/index', ['document'=>'userregister'])}}" target="_blank">《服务协议》</a> <a href="{{:MyUrl('index/agreement/index', ['document'=>'userregister'])}}" target="_blank">《服务协议》</a>
</div> </div>
......
...@@ -59,6 +59,7 @@ ...@@ -59,6 +59,7 @@
<input type="text" name="idcard_front" value="{{$data.idcard_front_old}}" /> <input type="text" name="idcard_front" value="{{$data.idcard_front_old}}" />
{{/if}} {{/if}}
<img src="{{if empty($data['idcard_front'])}}{{$attachment_host}}/static/common/images/default-idcard-front.jpg{{else /}}{{$data.idcard_front}}{{/if}}" /> <img src="{{if empty($data['idcard_front'])}}{{$attachment_host}}/static/common/images/default-idcard-front.jpg{{else /}}{{$data.idcard_front}}{{/if}}" />
<i>×</i>
</li> </li>
</ul> </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">+上传人像面图片</div>
...@@ -70,6 +71,7 @@ ...@@ -70,6 +71,7 @@
<input type="text" name="idcard_back" value="{{$data.idcard_back_old}}" /> <input type="text" name="idcard_back" value="{{$data.idcard_back_old}}" />
{{/if}} {{/if}}
<img src="{{if empty($data['idcard_back'])}}{{$attachment_host}}/static/common/images/default-idcard-back.jpg{{else /}}{{$data.idcard_back}}{{/if}}" /> <img src="{{if empty($data['idcard_back'])}}{{$attachment_host}}/static/common/images/default-idcard-back.jpg{{else /}}{{$data.idcard_back}}{{/if}}" />
<i>×</i>
</li> </li>
</ul> </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">+上传国微面图片</div>
......
...@@ -32,6 +32,7 @@ class ConfigService ...@@ -32,6 +32,7 @@ class ConfigService
'home_email_user_email_binding', 'home_email_user_email_binding',
'home_site_close_reason', 'home_site_close_reason',
'common_agreement_userregister', 'common_agreement_userregister',
'common_agreement_userprivacy',
'common_self_extraction_address', 'common_self_extraction_address',
'home_index_floor_top_right_keywords', 'home_index_floor_top_right_keywords',
'home_index_floor_manual_mode_goods', 'home_index_floor_manual_mode_goods',
......
...@@ -207,6 +207,21 @@ class OrderService ...@@ -207,6 +207,21 @@ class OrderService
} }
} }
// 是否指定同步回调地址
if(!empty($params['redirect_url']))
{
$redirect_url = base64_decode(urldecode($params['redirect_url']));
if(!empty($redirect_url))
{
// 赋值同步返回地址
$call_back_url = $redirect_url;
}
}
if(empty($redirect_url))
{
$redirect_url = MyUrl('index/order/index');
}
// 新增支付日志 // 新增支付日志
$pay_log = self::OrderPayLogInsert([ $pay_log = self::OrderPayLogInsert([
'user_id' => $params['user']['id'], 'user_id' => $params['user']['id'],
...@@ -235,7 +250,7 @@ class OrderService ...@@ -235,7 +250,7 @@ class OrderService
'client_type' => $client_type, 'client_type' => $client_type,
'notify_url' => $url.'_notify.php', 'notify_url' => $url.'_notify.php',
'call_back_url' => $call_back_url, 'call_back_url' => $call_back_url,
'redirect_url' => MyUrl('index/order/index'), 'redirect_url' => $redirect_url,
'site_name' => MyC('home_site_name', 'ShopXO', true), 'site_name' => MyC('home_site_name', 'ShopXO', true),
'ajax_url' => MyUrl('index/order/paycheck'), 'ajax_url' => MyUrl('index/order/paycheck'),
]; ];
......
...@@ -65,7 +65,7 @@ class ResourcesService ...@@ -65,7 +65,7 @@ class ResourcesService
/** /**
* 附件路径处理 * 附件路径处理
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 1.0.0 * @version 1.0.0
* @date 2018-12-12 * @date 2018-12-12
...@@ -89,12 +89,12 @@ class ResourcesService ...@@ -89,12 +89,12 @@ class ResourcesService
/** /**
* 附件集合处理 * 附件集合处理
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 1.0.0 * @version 1.0.0
* @date 2018-08-07 * @date 2018-08-07
* @desc description * @desc description
* @param [array] $params [输入参数] * @param [array] $params [输入参数]
* @param [array] $data [字段列表] * @param [array] $data [字段列表]
*/ */
public static function AttachmentParams($params, $data) public static function AttachmentParams($params, $data)
...@@ -117,7 +117,7 @@ class ResourcesService ...@@ -117,7 +117,7 @@ class ResourcesService
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 1.0.0 * @version 1.0.0
* @datetime 2019-01-13T15:13:30+0800 * @datetime 2019-01-13T15:13:30+0800
* @param [type] $value [description] * @param [string] $value [description]
*/ */
public static function AttachmentPathViewHandle($value) public static function AttachmentPathViewHandle($value)
{ {
......
...@@ -362,37 +362,15 @@ class UserAddressService ...@@ -362,37 +362,15 @@ class UserAddressService
'city' => intval($params['city']), 'city' => intval($params['city']),
'county' => isset($params['county']) ? intval($params['county']) : 0, 'county' => isset($params['county']) ? intval($params['county']) : 0,
'address' => $params['address'], 'address' => $params['address'],
'lng' => isset($params['lng']) ? floatval($params['lng']) : 0,
'lat' => isset($params['lat']) ? floatval($params['lat']) : 0 ,
'idcard_name' => empty($params['idcard_name']) ? '' : $params['idcard_name'],
'idcard_number' => empty($params['idcard_number']) ? '' : $params['idcard_number'],
'idcard_front' => $attachment['data']['idcard_front'],
'idcard_back' => $attachment['data']['idcard_back'],
'is_default' => $is_default, 'is_default' => $is_default,
]; ];
// 坐标
if(!empty($params['lng']) && $params['lng'] != 0)
{
$data['lng'] = floatval($params['lng']);
}
if(!empty($params['lat']) && $params['lat'] != 0)
{
$data['lat'] = floatval($params['lat']);
}
// 身份证信息
if(!empty($params['idcard_name']))
{
$data['idcard_name'] = $params['idcard_name'];
}
if(!empty($params['idcard_number']))
{
$data['idcard_number'] = $params['idcard_number'];
}
if(!empty($attachment['data']['idcard_front']))
{
$data['idcard_front'] = $attachment['data']['idcard_front'];
}
if(!empty($attachment['data']['idcard_back']))
{
$data['idcard_back'] = $attachment['data']['idcard_back'];
}
// 用户地址保存前钩子 // 用户地址保存前钩子
$hook_name = 'plugins_service_user_address_save_begin'; $hook_name = 'plugins_service_user_address_save_begin';
$ret = HookReturnHandle(Hook::listen($hook_name, [ $ret = HookReturnHandle(Hook::listen($hook_name, [
......
...@@ -32,5 +32,219 @@ return array ( ...@@ -32,5 +32,219 @@ return array (
'log_write' => 'log_write' =>
array ( array (
), ),
'plugins_admin_css' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_css' =>
array (
0 => 'app\\plugins\\shop\\Hook',
1 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
2 => 'app\\plugins\\coupon\\Hook',
3 => 'app\\plugins\\distribution\\Hook',
),
'plugins_js' =>
array (
0 => 'app\\plugins\\shop\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
2 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_navigation_header_handle' =>
array (
0 => 'app\\plugins\\shop\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_users_center_left_menu_handle' =>
array (
0 => 'app\\plugins\\shop\\Hook',
1 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
2 => 'app\\plugins\\coupon\\Hook',
3 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_header_navigation_top_right_handle' =>
array (
0 => 'app\\plugins\\shop\\Hook',
1 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
2 => 'app\\plugins\\coupon\\Hook',
3 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_goods_save_handle' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_service_editor_path_type_admin_goods_saveinfo' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_view_goods_detail_right_content_bottom' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_view_goods_detail_base_bottom' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_view_goods_detail_base_buy_nav_min_inside_begin' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_service_warehouse_handle_end' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_service_buy_handle' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_service_buy_order_insert_begin' =>
array (
0 => 'app\\plugins\\shop\\Hook',
1 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
),
'plugins_service_buy_order_insert_end' =>
array (
0 => 'app\\plugins\\shop\\Hook',
1 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
2 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_order_status_change_history_success_handle' =>
array (
0 => 'app\\plugins\\shop\\Hook',
1 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
2 => 'app\\plugins\\coupon\\Hook',
3 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_order_aftersale_audit_handle_end' =>
array (
0 => 'app\\plugins\\shop\\Hook',
1 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
2 => 'app\\plugins\\distribution\\Hook',
),
'plugins_view_admin_goods_save' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_service_goods_handle_end' =>
array (
0 => 'app\\plugins\\shop\\Hook',
1 => 'app\\plugins\\distribution\\Hook',
),
'plugins_module_form_admin_goods_index' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_module_form_admin_goods_detail' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_service_goods_buy_nav_button_handle' =>
array (
0 => 'app\\plugins\\shop\\Hook',
),
'plugins_view_goods_detail_panel_bottom' =>
array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
),
'plugins_view_goods_detail_title' =>
array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
),
'plugins_view_buy_group_goods_inside_bottom' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_buy_group_goods_handle' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_view_buy_form_inside' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_buy_order_insert_success' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_user_register_end' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_base_data_return_api_goods_detail' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_base_data_return_api_buy_index' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_view_admin_goods_list_operate' =>
array (
0 => 'app\\plugins\\intellectstools\\Hook',
),
'plugins_view_admin_order_list_operate' =>
array (
0 => 'app\\plugins\\intellectstools\\Hook',
),
'plugins_service_site_extraction_address_list' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_goods_spec_extends_handle' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_view_admin_user_save' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_user_save_handle' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_goods_spec_base' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_view_goods_detail_panel_price_top' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_module_form_admin_user_index' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_module_form_admin_user_detail' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_quick_navigation_pc' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_quick_navigation_h5' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_quick_navigation_weixin' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_quick_navigation_alipay' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_quick_navigation_baidu' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_quick_navigation_qq' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_quick_navigation_toutiao' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
); );
?> ?>
\ No newline at end of file
+=========================================================+
ShopXO 2.0.3 Release 000000 http://shopxo.net
+=========================================================+
全局
1.
web端
1. 系统更新+插件更新优化
2. 支付宝支付金额兼容性优化、支持异步返回
3. 后台左侧菜单宽度调整
4. 插件/主题打包新增版本号
5. 商品编辑优化
6. api接口新增更多配置信息
7. 用户注册新增用户隐私协议
插件
1. 优购返现插件新增按照订单金额返券
2. 优惠券插件修复web端未登录点击领取无响应
3. 新增智能工具箱插件
+=========================================================+ +=========================================================+
ShopXO 2.0.2 Release 20210426 http://shopxo.net ShopXO 2.0.2 Release 20210426 http://shopxo.net
+=========================================================+ +=========================================================+
......
...@@ -19,7 +19,7 @@ return [ ...@@ -19,7 +19,7 @@ return [
// 应用地址 // 应用地址
'app_host' => '', 'app_host' => '',
// 应用调试模式 // 应用调试模式
'app_debug' => false, 'app_debug' => true,
// 应用Trace // 应用Trace
'app_trace' => false, 'app_trace' => false,
// 是否支持多模块 // 是否支持多模块
......
/**
* 地址添加/编辑
*/
.user-address-idcard-images ul li {
margin: 0;
}
@media only screen and (min-width: 641px) {
.user-address-idcard-images ul li,
.user-address-idcard-images .plug-file-upload-submit {
width: 200px;
}
.user-address-idcard-images ul li {
height: 132px;
}
}
@media only screen and (max-width: 641px) {
.user-address-idcard-images ul li,
.user-address-idcard-images .plug-file-upload-submit {
width: 128px;
}
.user-address-idcard-images ul li {
height: 85px;
}
}
\ No newline at end of file
...@@ -97,7 +97,8 @@ form.am-form .am-form-group-refreshing, .plug-file-upload-view { border-bottom: ...@@ -97,7 +97,8 @@ form.am-form .am-form-group-refreshing, .plug-file-upload-view { border-bottom:
-webkit-box-shadow: 0 0 30px rgba(0,0,0,0.4); -webkit-box-shadow: 0 0 30px rgba(0,0,0,0.4);
box-shadow: 0 0 30px rgba(0,0,0,0.4); box-shadow: 0 0 30px rgba(0,0,0,0.4);
} }
.popup-not-title .am-close { .popup-not-title .am-close,
.modal-dialog-not-title .am-close {
position: absolute; position: absolute;
right: 10px; right: 10px;
top: 10px; top: 10px;
...@@ -112,7 +113,12 @@ form.am-form .am-form-group-refreshing, .plug-file-upload-view { border-bottom: ...@@ -112,7 +113,12 @@ form.am-form .am-form-group-refreshing, .plug-file-upload-view { border-bottom:
height: 32px; height: 32px;
z-index: 1; z-index: 1;
} }
.popup-not-title .am-close:hover { .modal-dialog-not-title .am-close {
top: -15px;
right: -15px;
}
.popup-not-title .am-close:hover,
.modal-dialog-not-title .am-close:hover {
background: #f22a30; background: #f22a30;
} }
.am-popup-hd .am-close, .am-popup-hd .am-full { .am-popup-hd .am-close, .am-popup-hd .am-full {
...@@ -585,7 +591,7 @@ button.colorpicker-submit img { ...@@ -585,7 +591,7 @@ button.colorpicker-submit img {
background: #e8e6e6; background: #e8e6e6;
min-width: 100px; min-width: 100px;
position: sticky; position: sticky;
z-index: 1011; z-index: 1;
top: 0; top: 0;
} }
.am-table-scrollable-horizontal .am-table tr .am-grid-xxxl { .am-table-scrollable-horizontal .am-table tr .am-grid-xxxl {
...@@ -621,11 +627,11 @@ button.colorpicker-submit img { ...@@ -621,11 +627,11 @@ button.colorpicker-submit img {
.am-table-scrollable-horizontal .am-table tr td.am-grid-fixed-left, .am-table-scrollable-horizontal .am-table tr td.am-grid-fixed-left,
.am-table-scrollable-horizontal .am-table tr td.am-grid-fixed-right { .am-table-scrollable-horizontal .am-table tr td.am-grid-fixed-right {
background: #fff; background: #fff;
z-index: 1011; z-index: 1;
} }
.am-table-scrollable-horizontal .am-table tr th.am-grid-fixed-left, .am-table-scrollable-horizontal .am-table tr th.am-grid-fixed-left,
.am-table-scrollable-horizontal .am-table tr th.am-grid-fixed-right { .am-table-scrollable-horizontal .am-table tr th.am-grid-fixed-right {
z-index: 1012; z-index: 2;
} }
.am-table-scrollable-horizontal .am-table tr .am-grid-fixed-left { .am-table-scrollable-horizontal .am-table tr .am-grid-fixed-left {
-webkit-box-shadow: 1px 0px 1px #ddd; -webkit-box-shadow: 1px 0px 1px #ddd;
......
...@@ -2556,16 +2556,27 @@ $(function() ...@@ -2556,16 +2556,27 @@ $(function()
fillcolor:true, fillcolor:true,
success:function(o, color) success:function(o, color)
{ {
var style = o.context.dataset.colorStyle || 'color'; var style_arr = (o.context.dataset.colorStyle || 'color').split('|');
$(o.context.dataset.inputTag).css(style, color); var style_value = {};
for(var i in style_arr)
{
style_value[style_arr[i]] = color;
}
$(o.context.dataset.inputTag).css(style_value);
$(o.context.dataset.colorTag).val(color); $(o.context.dataset.colorTag).val(color);
$(o.context.dataset.colorTag).trigger('change'); $(o.context.dataset.colorTag).trigger('change');
}, },
reset:function(o) reset:function(o)
{ {
var style = o.context.dataset.colorStyle || 'color'; var color = '';
$(o.context.dataset.inputTag).css(style, ''); var style_arr = (o.context.dataset.colorStyle || 'color').split('|');
$(o.context.dataset.colorTag).val(''); var style_value = {};
for(var i in style_arr)
{
style_value[style_arr[i]] = color;
}
$(o.context.dataset.inputTag).css(style_value);
$(o.context.dataset.colorTag).val(color);
$(o.context.dataset.colorTag).trigger('change'); $(o.context.dataset.colorTag).trigger('change');
} }
}); });
......
...@@ -15,13 +15,21 @@ ...@@ -15,13 +15,21 @@
return this.each(function(){ return this.each(function(){
var obj = $(this); var obj = $(this);
obj.bind(opts.event,function(){ obj.bind(opts.event,function(){
//定位 // 上、左距离、浮动类型处理
var top_inc = parseInt($(this).data('top-inc')) || 0;
var top_dec = parseInt($(this).data('top-dec')) || 0;
var left_inc = parseInt($(this).data('left-inc')) || 0;
var left_dec = $(this).data('left-inc') == undefined ? 1 : parseInt($(this).data('left-dec')) || 0;
var position = $(this).data('position') || 'absolute';
// 定位
var ttop = $(this).offset().top; //控件的定位点高 var ttop = $(this).offset().top; //控件的定位点高
var thei = $(this).height(); //控件本身的高 var thei = $(this).outerHeight(); //控件本身的高
var tleft = $(this).offset().left+$(this).outerWidth()-232; //控件的定位点宽 var tleft = $(this).offset().left+$(this).outerWidth()-232; //控件的定位点宽
$("#colorpanel").css({ $("#colorpanel").css({
top:ttop+thei+16, "top":ttop+thei+top_inc-top_dec,
left:tleft "left":tleft+left_inc-left_dec,
"position":position
}).show(); }).show();
var target = opts.target ? $(opts.target) : obj; var target = opts.target ? $(opts.target) : obj;
if(target.data("color") == null){ if(target.data("color") == null){
...@@ -82,12 +90,12 @@ ...@@ -82,12 +90,12 @@
} }
} }
} }
colorTable='<table width=232 border="0" cellspacing="0" cellpadding="0" style="border:1px solid #000;height: 24px;line-height: 21px;">' colorTable='<table width=232 border="0" cellspacing="0" cellpadding="0" style="border:1px solid #333;height: 24px;line-height: 21px;">'
+'<tr><td colspan=21 bgcolor=#cccccc>' +'<tr><td colspan=21 bgcolor=#cccccc>'
+'<table cellpadding="0" cellspacing="1" border="0" style="border-collapse: collapse">' +'<table cellpadding="0" cellspacing="1" border="0" style="border-collapse: collapse">'
+'<tr><td width="3"><td><input type="text" id="DisColor" size="3" disabled style="border:solid 1px #000000;background-color:#ffff00"></td>' +'<tr><td width="3"><td><input type="text" id="DisColor" size="3" disabled style="border:solid 1px #000000;background-color:#000000;padding:0;"></td>'
+'<td width="3"><td><input type="text" id="HexColor" size="7" style="border:inset 1px;font-family:Arial;" value="#000000"><a href="javascript:void(0);" id="_determine">确定</a> | <a href="javascript:void(0);" id="_cclose">关闭</a> | <a href="javascript:void(0);" id="_creset">清除</a></td></tr></table></td></table>' +'<td width="3"><td><input type="text" id="HexColor" style="border:inset 1px;font-family:Arial;width:58px;" value="#000000"><a href="javascript:void(0);" id="_determine">确定</a> | <a href="javascript:void(0);" id="_cclose">关闭</a> | <a href="javascript:void(0);" id="_creset">清除</a></td></tr></table></td></table>'
+'<table id="CT" border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="000000" style="cursor:pointer;">' +'<table id="CT" border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse;border-color:#333;border-width:0 1px 1px 1px;border-style:solid;">'
+colorTable+'</table>'; +colorTable+'</table>';
$("#colorpanel").html(colorTable); $("#colorpanel").html(colorTable);
$("#_cclose").on('click',function(){ $("#_cclose").on('click',function(){
......
...@@ -98,7 +98,7 @@ input.add,input.min{width:15px} ...@@ -98,7 +98,7 @@ input.add,input.min{width:15px}
.mobile-navigation li.active a{ color:#d2364c; } .mobile-navigation li.active a{ color:#d2364c; }
.hot-icon { position: absolute; top: 1%; left: 53%; z-index: 2; border: 1px solid #fff; } .hot-icon { position: absolute; top: 1%; left: 53%; z-index: 2; border: 1px solid #fff; }
@media only screen and (min-width: 640px) { @media only screen and (min-width: 641px) {
.am-container {padding-left:0px;padding-right:0px ;} .am-container {padding-left:0px;padding-right:0px ;}
.nav-search{background: #fff; margin: 20px 0 5px 0;} .nav-search{background: #fff; margin: 20px 0 5px 0;}
.header-top { display:block;} .header-top { display:block;}
...@@ -455,7 +455,7 @@ ul.am-dropdown-content > .am-active > a:focus, ...@@ -455,7 +455,7 @@ ul.am-dropdown-content > .am-active > a:focus,
margin-top: 0; margin-top: 0;
} }
} }
@media only screen and (max-width: 641px) { @media only screen and (max-width: 640px) {
.common-login-modal { .common-login-modal {
height: 410px; height: 410px;
top: calc(50% - 210px); top: calc(50% - 210px);
...@@ -811,7 +811,7 @@ table.am-table .am-btn-danger:hover { ...@@ -811,7 +811,7 @@ table.am-table .am-btn-danger:hover {
width: 100%; width: 100%;
} }
} }
@media only screen and (max-width:641px) { @media only screen and (max-width:640px) {
.shop-navigation { .shop-navigation {
background: #d2354c; background: #d2354c;
margin-top: 0; margin-top: 0;
...@@ -889,7 +889,7 @@ img.common-user-icon { ...@@ -889,7 +889,7 @@ img.common-user-icon {
.user-content {display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background:#fff;} .user-content {display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background:#fff;}
.user-offcanvas-bar { z-index: 900; } .user-offcanvas-bar { z-index: 900; }
@media only screen and (min-width:640px) { @media only screen and (min-width:641px) {
.user-sidebar {display:block;position:relative;background:none; border-top: 5px solid #ED5564;z-index: 0;} .user-sidebar {display:block;position:relative;background:none; border-top: 5px solid #ED5564;z-index: 0;}
.user-offcanvas-bar {position:static;width:auto;background:none;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);overflow-y:hidden;} .user-offcanvas-bar {position:static;width:auto;background:none;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);overflow-y:hidden;}
.user-offcanvas-bar:after {content:none;} .user-offcanvas-bar:after {content:none;}
...@@ -934,7 +934,7 @@ button { outline: none !important; } ...@@ -934,7 +934,7 @@ button { outline: none !important; }
.common-cropper-popup .am-form-group { width: auto; } .common-cropper-popup .am-form-group { width: auto; }
.common-cropper-popup form.am-form .am-form-group-refreshing { padding: 0 !important; } .common-cropper-popup form.am-form .am-form-group-refreshing { padding: 0 !important; }
.common-cropper-popup .am-form-file input[type="file"] { width: 106px !important; top: 0; } .common-cropper-popup .am-form-file input[type="file"] { width: 106px !important; top: 0; }
@media only screen and (max-width:641px){ @media only screen and (max-width:640px){
.common-cropper-popup .img-preview { margin-left:10px; } .common-cropper-popup .img-preview { margin-left:10px; }
.common-cropper-popup .preview-md, .common-cropper-popup .preview-md,
.common-cropper-popup .preview-sm { margin:0 0 5px 8px; } .common-cropper-popup .preview-sm { margin:0 0 5px 8px; }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册