下订单自提地址处理
parent
7f8ca29777
commit
321aba9650
|
|
@ -15,7 +15,6 @@ use app\service\GoodsService;
|
|||
use app\service\UserService;
|
||||
use app\service\PaymentService;
|
||||
use app\service\BuyService;
|
||||
use app\service\ConfigService;
|
||||
|
||||
/**
|
||||
* 购买
|
||||
|
|
@ -87,7 +86,8 @@ class Buy extends Common
|
|||
$this->assign('payment_list', PaymentService::BuyPaymentList(['is_enable'=>1, 'is_open_user'=>1]));
|
||||
|
||||
// 站点类型 - 自提模式下提货地址
|
||||
$this->assign('common_self_extraction_address', ConfigService::SiteTypeExtractionAddressList());
|
||||
$extraction_address = BuyService::SiteExtractionAddress($params);
|
||||
$this->assign('self_extraction_address', $extraction_address['data']);
|
||||
|
||||
// 页面数据
|
||||
$this->assign('base', $ret['data']['base']);
|
||||
|
|
|
|||
|
|
@ -43,59 +43,144 @@
|
|||
{{/foreach}}
|
||||
{{/if}}
|
||||
|
||||
<!-- 地址 -->
|
||||
<div class="address">
|
||||
<div class="control">
|
||||
<h3>确认收货地址</h3>
|
||||
{{if !empty($user_address_list)}}
|
||||
<button class="am-btn am-btn-primary am-btn-xs address-submit-save" type="button" data-url="{{:MyUrl('index/useraddress/saveinfo')}}" data-popup-title="新增地址">使用新地址</button>
|
||||
<!-- 自提地址, 用户地址 -->
|
||||
{{if $common_site_type eq 2}}
|
||||
<!-- 自提地址 -->
|
||||
<div class="address extraction-address">
|
||||
<div class="control">
|
||||
<h3>确认自提点地址</h3>
|
||||
{{if !empty($self_extraction_address['default'])}}
|
||||
<button type="button" class="am-btn am-btn-default am-btn-secondary am-radius" data-am-modal="{target: '#extraction-address-popup'}">选择地址</button>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{if empty($self_extraction_address['data_list'])}}
|
||||
<p class="am-text-danger am-text-center am-margin-top-lg">请联系管理员配置自提点地址</p>
|
||||
{{else /}}
|
||||
<!-- 选中地址 -->
|
||||
{{if !empty($self_extraction_address['default'])}}
|
||||
<div class="am-panel am-panel-default extraction-default">
|
||||
<div class="am-panel-bd extraction-address-item am-cf am-vertical-align">
|
||||
<div class="first-icon am-fl am-vertical-align-middle">
|
||||
<i class="am-icon-map-marker"></i>
|
||||
</div>
|
||||
<div class="am-fl am-vertical-align-middle">
|
||||
<p>
|
||||
{{if !empty($self_extraction_address['default']['alias'])}}
|
||||
<span class="am-badge am-badge-secondary am-radius am-margin-right-xs">{{$self_extraction_address.default.alias}}</span>
|
||||
{{/if}}
|
||||
<span>{{$self_extraction_address.default.name}}</span>
|
||||
<span>{{$self_extraction_address.default.tel}}</span>
|
||||
</p>
|
||||
<p class="address-detail">
|
||||
<span>{{$self_extraction_address.default.province_name}}</span>
|
||||
<span>{{$self_extraction_address.default.city_name}}</span>
|
||||
<span>{{$self_extraction_address.default.county_name}}</span>
|
||||
<span>{{$self_extraction_address.default.address}}</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="address-right">
|
||||
<span class="am-icon-angle-right am-icon-md"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else /}}
|
||||
<div class="table-no">
|
||||
<i class="am-icon-warning"></i>
|
||||
<span>没有地址</span>
|
||||
<button type="button" class="am-btn am-btn-default am-btn-secondary am-radius am-margin-left-sm" data-am-modal="{target: '#extraction-address-popup'}">选择地址</button>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<!-- 自提地址选择弹层 -->
|
||||
<div class="am-popup" id="extraction-address-popup">
|
||||
<div class="am-popup-inner">
|
||||
<div class="am-popup-hd">
|
||||
<h4 class="am-popup-title">自提点选择</h4>
|
||||
<span class="am-close" data-am-modal-close>×</span>
|
||||
</div>
|
||||
<div class="am-popup-bd">
|
||||
<ul class="am-list">
|
||||
{{foreach $self_extraction_address.data_list as $key=>$address}}
|
||||
<li class="extraction-address-item" data-value="{{$key}}">
|
||||
<p>
|
||||
{{if !empty($address['alias'])}}
|
||||
<span class="am-badge am-badge-secondary am-radius am-margin-right-xs">{{$address.alias}}</span>
|
||||
{{/if}}
|
||||
<span>{{$address.name}}</span>
|
||||
<span>{{$address.tel}}</span>
|
||||
</p>
|
||||
<p class="address-detail">
|
||||
<span>{{$address.province_name}}</span>
|
||||
<span>{{$address.city_name}}</span>
|
||||
<span>{{$address.county_name}}</span>
|
||||
<span>{{$address.address}}</span>
|
||||
</p>
|
||||
{{if !isset($params['address_id']) or $params['address_id'] neq $key}}
|
||||
<button type="button" class="am-btn am-btn-default am-radius" data-value="{{$key}}">选择</button>
|
||||
{{/if}}
|
||||
</li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{if !empty($user_address_list)}}
|
||||
<ul class="address-list">
|
||||
{{foreach $user_address_list as $address}}
|
||||
<li class="{{if (isset($params['address_id']) and $params['address_id'] eq $address['id']) or (!isset($params['address_id']) and isset($address['is_default']) and $address['is_default'] eq 1) or (count($user_address_list) eq 1)}}address-default{{/if}}" id="data-list-{{$address.id}}" data-value="{{$address.id}}">
|
||||
<div class="address-left">
|
||||
<div class="user-base">
|
||||
{{if !empty($address.alias)}}
|
||||
<span class="am-badge am-badge-danger am-radius">{{$address.alias}}</span>
|
||||
{{/if}}
|
||||
{{if isset($address['is_default']) and $address['is_default'] eq 1}}
|
||||
<span class="am-badge am-badge-success am-radius">默认</span>
|
||||
{{/if}}
|
||||
<span class="address-detail">
|
||||
<span class="user">{{$address.name}}</span>
|
||||
<span class="phone">{{$address.tel}}</span>
|
||||
</span>
|
||||
{{else /}}
|
||||
<!-- 用户地址 -->
|
||||
<div class="address">
|
||||
<div class="control">
|
||||
<h3>确认收货地址</h3>
|
||||
{{if !empty($user_address_list)}}
|
||||
<button class="am-btn am-btn-primary am-btn-xs address-submit-save" type="button" data-url="{{:MyUrl('index/useraddress/saveinfo')}}" data-popup-title="新增地址">使用新地址</button>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{if !empty($user_address_list)}}
|
||||
<ul class="address-list">
|
||||
{{foreach $user_address_list as $address}}
|
||||
<li class="{{if (isset($params['address_id']) and $params['address_id'] eq $address['id']) or (!isset($params['address_id']) and isset($address['is_default']) and $address['is_default'] eq 1) or (count($user_address_list) eq 1)}}address-default{{/if}}" id="data-list-{{$address.id}}" data-value="{{$address.id}}">
|
||||
<div class="address-left">
|
||||
<div class="user-base">
|
||||
{{if !empty($address.alias)}}
|
||||
<span class="am-badge am-badge-danger am-radius">{{$address.alias}}</span>
|
||||
{{/if}}
|
||||
{{if isset($address['is_default']) and $address['is_default'] eq 1}}
|
||||
<span class="am-badge am-badge-success am-radius">默认</span>
|
||||
{{/if}}
|
||||
<span class="address-detail">
|
||||
<span class="user">{{$address.name}}</span>
|
||||
<span class="phone">{{$address.tel}}</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="region">
|
||||
<span class="province">{{$address.province_name}}</span>
|
||||
<span class="city">{{$address.city_name}}</span>
|
||||
<span class="dist">{{$address.county_name}}</span>
|
||||
<span class="street">{{$address.address}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region">
|
||||
<span class="province">{{$address.province_name}}</span>
|
||||
<span class="city">{{$address.city_name}}</span>
|
||||
<span class="dist">{{$address.county_name}}</span>
|
||||
<span class="street">{{$address.address}}</span>
|
||||
<div class="address-right">
|
||||
<span class="am-icon-angle-right am-icon-md"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="address-right">
|
||||
<span class="am-icon-angle-right am-icon-md"></span>
|
||||
</div>
|
||||
<div class="address-operation-btn">
|
||||
<a href="javascript:;" class="am-icon-check-circle-o address-default-submit" data-url="{{:MyUrl('index/useraddress/setdefault')}}" data-id="{{$address.id}}" data-view="reload"> 设为默认</a>
|
||||
<span class="cut">|</span>
|
||||
<a href="javascript:;" class="am-icon-edit address-submit-save" data-url="{{:MyUrl('index/useraddress/saveinfo', ['id'=>$address['id']])}}" data-popup-title="编辑地址"> 编辑</a>
|
||||
<span class="cut">|</span>
|
||||
<a href="javascript:;" class="am-icon-trash-o address-submit-delete" data-url="{{:MyUrl('index/useraddress/delete')}}" data-id="{{$address.id}}"> 删除</a>
|
||||
</div>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
{{if empty($user_address_list)}}
|
||||
<div class="table-no">
|
||||
<i class="am-icon-warning"></i>
|
||||
没有地址
|
||||
<button class="am-btn am-btn-secondary am-btn-xs address-submit-save" type="button" data-url="{{:MyUrl('index/useraddress/saveinfo')}}" data-popup-title="新增地址">使用新地址</button></div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="address-operation-btn">
|
||||
<a href="javascript:;" class="am-icon-check-circle-o address-default-submit" data-url="{{:MyUrl('index/useraddress/setdefault')}}" data-id="{{$address.id}}" data-view="reload"> 设为默认</a>
|
||||
<span class="cut">|</span>
|
||||
<a href="javascript:;" class="am-icon-edit address-submit-save" data-url="{{:MyUrl('index/useraddress/saveinfo', ['id'=>$address['id']])}}" data-popup-title="编辑地址"> 编辑</a>
|
||||
<span class="cut">|</span>
|
||||
<a href="javascript:;" class="am-icon-trash-o address-submit-delete" data-url="{{:MyUrl('index/useraddress/delete')}}" data-id="{{$address.id}}"> 删除</a>
|
||||
</div>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
{{else /}}
|
||||
<div class="table-no">
|
||||
<i class="am-icon-warning"></i>
|
||||
<span>没有地址</span>
|
||||
<button class="am-btn am-btn-secondary am-btn-xs am-margin-left-sm address-submit-save" type="button" data-url="{{:MyUrl('index/useraddress/saveinfo')}}" data-popup-title="新增地址">使用新地址</button>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<!-- 订单确认页面地址底部钩子 -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ use think\facade\Hook;
|
|||
use app\service\GoodsService;
|
||||
use app\service\UserService;
|
||||
use app\service\ResourcesService;
|
||||
use app\service\ConfigService;
|
||||
|
||||
/**
|
||||
* 购买服务层
|
||||
|
|
@ -1243,5 +1244,38 @@ class BuyService
|
|||
}
|
||||
return DataReturn('没有需要回滚的数据', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 自提点地址选中地址获取
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2019-11-18
|
||||
* @desc description
|
||||
* @param [int] $params['address_id'] [自提点地址索引值]
|
||||
* @param [array] $params['address_id'] [自提点地址列表]
|
||||
*/
|
||||
public static function SiteExtractionAddress($params = [])
|
||||
{
|
||||
// 自提地址列表
|
||||
$address = ConfigService::SiteTypeExtractionAddressList();
|
||||
|
||||
// 选中地址处理
|
||||
$default = null;
|
||||
if(isset($params['address_id']) && !empty($address['data']) && is_array($address['data']))
|
||||
{
|
||||
if(isset($address['data'][$params['address_id']]))
|
||||
{
|
||||
$default = $address['data'][$params['address_id']];
|
||||
}
|
||||
}
|
||||
|
||||
// 返回数据
|
||||
$result = [
|
||||
'data_list' => $address['data'],
|
||||
'default' => $default,
|
||||
];
|
||||
return DataReturn('操作成功', 0, $result);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
return [
|
||||
// 开发模式
|
||||
'is_develop' => true,
|
||||
'is_develop' => false,
|
||||
|
||||
// 默认编码
|
||||
'default_charset' => 'utf-8',
|
||||
|
|
|
|||
|
|
@ -49,10 +49,24 @@ ul.home_site_user_register_bg_images-images-view li {
|
|||
.address-detail, #map {
|
||||
border-bottom: 0 !important;
|
||||
}
|
||||
.address-list {
|
||||
padding: 0 20% 0 0 !important;
|
||||
}
|
||||
.address-list .edit-submit,
|
||||
.address-list .delete-submit {
|
||||
cursor: pointer;
|
||||
}
|
||||
@media only screen and (min-width:640px) {
|
||||
.address-list {
|
||||
padding: 0 20% 0 0 !important;
|
||||
}
|
||||
}
|
||||
@media only screen and (max-width:640px) {
|
||||
.address-list .edit-submit,
|
||||
.address-list .delete-submit {
|
||||
position: absolute;
|
||||
top: 12px;
|
||||
right: 5px;
|
||||
float: none !important;
|
||||
}
|
||||
.address-list .delete-submit {
|
||||
right: 70px;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*页面*/
|
||||
.buy-items h3{border-bottom: 3px solid #e3e3e3; margin-top:15px;}
|
||||
.buy-items h3{border-bottom: 2px solid #e3e3e3; margin-top:15px;}
|
||||
|
||||
/*地址管理*/
|
||||
h3 { font-size: 14px;font-weight: 700;}
|
||||
|
|
@ -161,7 +161,7 @@ ul.address-list, .business-item ul { overflow: hidden; }
|
|||
.pay-confirm .nav-total-price { color: #d2364c; font-weight: 700; }
|
||||
.order-nav { background: #f5f5f5; z-index: 100; }
|
||||
.am-footer { padding-bottom: 45px; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -190,5 +190,62 @@ strong.total-price-content { color: #d2364c; font-size: 16px; }
|
|||
.cart-content table tr .number { width: 20%; }
|
||||
.cart-content table tr .total-price { width: 20%; }
|
||||
.cart-content { margin-top: 20px; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 自提地址
|
||||
*/
|
||||
.extraction-address-item {
|
||||
box-shadow: none;
|
||||
}
|
||||
.extraction-address-item .first-icon {
|
||||
width: 15px;
|
||||
}
|
||||
.extraction-address-item .first-icon i {
|
||||
color: #666;
|
||||
}
|
||||
.extraction-address-item .address-detail {
|
||||
margin-top: 2px;
|
||||
}
|
||||
@media only screen and (min-width: 640px) {
|
||||
.extraction-address {
|
||||
padding: 0 5px;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 1025px) {
|
||||
.extraction-address {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
@media only screen and (max-width: 640px) {
|
||||
.extraction-default {
|
||||
background: url(../images/buy-peraddress.png) repeat-x;
|
||||
background-position: bottom;
|
||||
border: 0;
|
||||
}
|
||||
.extraction-default .am-panel-bd {
|
||||
padding: 20px 5px;
|
||||
}
|
||||
.extraction-default .am-panel-bd .address-right {
|
||||
padding-top: 5px;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 自提地址-弹层
|
||||
*/
|
||||
#extraction-address-popup .am-list {
|
||||
margin-top: 0;
|
||||
}
|
||||
#extraction-address-popup .am-list > li {
|
||||
padding: 10px 5px;
|
||||
border-color: #eee;
|
||||
}
|
||||
#extraction-address-popup .am-list > li:first-child {
|
||||
border-top: 0;
|
||||
}
|
||||
#extraction-address-popup .extraction-address-item button {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 5px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -119,5 +119,19 @@ $(function()
|
|||
$('form.nav-buy input[name=payment_id]').val(payment_id);
|
||||
$('form.nav-buy input[name=user_note]').val($('.order-user-info input.memo-input').val());
|
||||
});
|
||||
|
||||
// 自提点地址
|
||||
$extraction_popup = $('#extraction-address-popup');
|
||||
$extraction_popup.find('.extraction-address-item button').on('click', function()
|
||||
{
|
||||
window.location.href = UrlFieldReplace('address_id', $(this).data('value'));
|
||||
});
|
||||
$('.extraction-default .extraction-address-item').on('click', function(e)
|
||||
{
|
||||
if($(window).width() < 640)
|
||||
{
|
||||
$extraction_popup.modal();
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
Loading…
Reference in New Issue