下订单自提地址处理

feat/task1-c-wallet
devil_gong 2019-11-18 18:34:53 +08:00
parent 7f8ca29777
commit 321aba9650
7 changed files with 262 additions and 58 deletions

View File

@ -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']);

View File

@ -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>&times;</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)}}

View File

@ -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);
}
}
?>

View File

@ -15,7 +15,7 @@
return [
// 开发模式
'is_develop' => true,
'is_develop' => false,
// 默认编码
'default_charset' => 'utf-8',

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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();
}
});
});