You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
540 lines
14 KiB
540 lines
14 KiB
<template>
|
|
<view>
|
|
<view class="address" @click="goAddress">
|
|
<view class="address_left">
|
|
<view class="address_title">
|
|
<image src="../../static/img/address.png" mode=""></image>
|
|
<view class="address_title_name">{{address.consignee}}</view>
|
|
<text>{{address.mobile}}</text>
|
|
</view>
|
|
<view class="address_content">
|
|
{{address.sign_building}}
|
|
{{address.country_name}}{{address.province_name}}{{address.city_name}}{{address.address}}{{address.zipcode}}
|
|
</view>
|
|
</view>
|
|
<image src="../../static/img/right.png" class="address_more"></image>
|
|
<image src="../../static/img/address_xian.png" class="address_xian" mode=""></image>
|
|
</view>
|
|
|
|
<view class="order_info" @click="openMore(0)">
|
|
<view class="info_title">
|
|
<text>Items in cart</text>
|
|
<view class="info_title_right">
|
|
<text>{{goods_list.length}} ltems</text>
|
|
<image src="../../static/img/right.png" class="address_more"></image>
|
|
</view>
|
|
</view>
|
|
<view class="info_image">
|
|
<image class="info_image_item" :src="item.goods_thumb" v-for="(item,index) in goods_list" :key="index"/>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="method" v-if="shipping_list">
|
|
<view class="method_title">Shipping Method</view>
|
|
|
|
<view class="method_item" v-for="(item,index) in shipping_list " :key="index">
|
|
<view class="method_item_image" @click="cartselectshipping(item.shipping_id)">
|
|
<image src="../../static/img/select1.png" style="width: 30rpx;height: 30rpx;" v-if="order.shipping_id==item.shipping_id"></image>
|
|
<image src="../../static/img/select2.png" style="width: 30rpx;height: 30rpx;"v-else ></image>
|
|
</view>
|
|
|
|
<view class="method_item_right">
|
|
<view class="item_price">
|
|
<text>{{item.shipping_name}}:</text>
|
|
<text class="item_price_span">US${{item.shipping_fee}}</text>
|
|
</view>
|
|
<view class="item_time">
|
|
<text class="item_time_span">{{item.shipping_desc}} </text>
|
|
<!-- <text> 15/05/2022-04/05/2022</text> -->
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="discount">
|
|
<view class="discount_item" @click="openMore(1)">
|
|
<text>Coupons</text>
|
|
<view class="discount_item_right">
|
|
<text v-show="isCoupons">-US$12.5</text>
|
|
<image src="../../static/img/right.png" mode="" class="address_more"></image>
|
|
</view>
|
|
</view>
|
|
<view class="discount_item" @click="openMore(3)">
|
|
<view class="discount_item_left">
|
|
<text>Points</text>
|
|
<text class="discount_item_left_span">({{orderDate.your_integral || 0}})</text>
|
|
</view>
|
|
<view class="discount_item_right">
|
|
<text v-show="isPoints">-US$2.5</text>
|
|
<image src="../../static/img/right.png" mode="" class="address_more"></image>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="settlement">
|
|
<view class="settlement_item">
|
|
<text>Subtotal:</text>
|
|
<text class="settlement_item_right">US${{total.goods_price}}</text>
|
|
</view>
|
|
<view class="settlement_item">
|
|
<text>Shipping fee:</text>
|
|
<text class="settlement_item_right">US${{total.shipping_fee}}</text>
|
|
</view>
|
|
<view class="settlement_item">
|
|
<text>Discount :</text>
|
|
<text class="settlement_item_right1">-US${{total.discount || 0}}</text>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="total">
|
|
<text>Total: US${{total.amount}}</text>
|
|
<button @click="openMore(2)">PLACE ORDER</button>
|
|
</view>
|
|
|
|
<view class="mask" v-show="isShow" @click="isShow=false"></view>
|
|
<view class="order_popup" v-show="isShow">
|
|
<view class="order_popup_title">
|
|
<text>
|
|
{{popup_index==0?'Commodity information':popup_index==1?'Coupons':popup_index==2?'Payment Method':'Points'}}<text v-show="popup_index==3">(total:<text class="order_popup_title_span" >{{orderDate.your_integral || 0}}</text>)</text>
|
|
</text>
|
|
<image src="../../static/img/close1.png" mode="" @click="isShow=false"></image>
|
|
</view>
|
|
|
|
<view class="order_popup_commodity" v-show="popup_index==0">
|
|
|
|
<view class="good_info" v-for="(item,index) in goods_list " :key="index">
|
|
<view class="good_info_left ">
|
|
<view class="good_info_image" >
|
|
<image :src="item.goods_thumb" mode=""></image>
|
|
</view>
|
|
<view class="left_info">
|
|
<view class="info_name">{{item.goods_name}}</view>
|
|
<view class="left_info_bottom">
|
|
<view class="info_lable">
|
|
<text>{{item.goods_attr |goodsAttr}}</text>
|
|
<image src="/static/img/bottom.png" mode=""></image>
|
|
</view>
|
|
<text>x{{item.goods_number}}</text>
|
|
</view>
|
|
<view class="info_price">US${{item.goods_price}}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="order_popup_coupons" v-show="popup_index==1">
|
|
<view class="coupons_item" v-for="(item,index) in 3 " :key="index">
|
|
<view class="coupons_item_left">
|
|
<view class="item_left_prcie">$20.00</view>
|
|
<text class="item_left_span">Min.spend</text>
|
|
<view>$200.00</view>
|
|
</view>
|
|
<view class="coupons_item_right">
|
|
<view class="coupons_right_info">
|
|
<view class="coupons_right_info_title">All-purpose</view>
|
|
<text>The tide zone is available</text>
|
|
<view class="coupons_right_info_time">2022.09.23 10:37 - 2022.12.23 10:37</view>
|
|
</view>
|
|
<button>Use Now</button>
|
|
<image src="../../static/img/select3.png" mode="" class="coupons_item_right_select"></image>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="order_popup_pay" v-show="popup_index==2">
|
|
<view class="pay_item" @click="selectPay(0)">
|
|
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==0"></image>
|
|
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image>
|
|
<view class="pay_item_right">
|
|
<image src="../../static/img/pay_pal.png" mode=""></image>
|
|
<text>Pay Pal</text>
|
|
</view>
|
|
</view>
|
|
<view class="pay_item" @click="selectPay(1)">
|
|
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==1"></image>
|
|
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image>
|
|
<view class="pay_item_right">
|
|
<image src="../../static/img/card.png" mode=""></image>
|
|
<text>Credit/Debit Card</text>
|
|
</view>
|
|
</view>
|
|
<view class="pay_item" @click="selectPay(2)">
|
|
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==2"></image>
|
|
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image>
|
|
<view class="pay_item_right">
|
|
<image src="../../static/img/GPay.png" mode=""></image>
|
|
<text>Google Pay</text>
|
|
</view>
|
|
</view>
|
|
<view class="pay_item" @click="selectPay(3)">
|
|
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==3"></image>
|
|
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image>
|
|
<view class="pay_item_right">
|
|
<image src="../../static/img/APay.png" mode=""></image>
|
|
<text>Apple pay</text>
|
|
</view>
|
|
</view>
|
|
<!-- <navigator url="/pages/order/paySuccess"> -->
|
|
<button @click="submitorder">PAY NOW</button>
|
|
<!-- </navigator> -->
|
|
</view>
|
|
|
|
<view class="order_popup_points" v-show="popup_index==3">
|
|
<view class="points_item">
|
|
<image src="../../static/img/select2.png" mode=""></image>
|
|
<text>Use points</text>
|
|
</view>
|
|
<view class="points_item">
|
|
<image src="../../static/img/select1.png" mode=""></image>
|
|
<text>Do not use points</text>
|
|
</view>
|
|
</view>
|
|
|
|
</view>
|
|
<!-- <pay :payShow="" :orderId=""></pay> -->
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import {defaultRequest2,defaultRequest3} from '../../api/index.js'
|
|
export default {
|
|
data() {
|
|
return {
|
|
isShow:false,
|
|
popup_index:'',
|
|
isCoupons:false,
|
|
isPoints:false,
|
|
query:{
|
|
_action:'cartcheckout',
|
|
is_new:0,
|
|
direct_shopping:0,
|
|
consignee:''
|
|
},
|
|
orderDate:{},
|
|
address:{},
|
|
goods_list:[],
|
|
shipping_list:[],
|
|
bonus_list:[],
|
|
total:{},
|
|
order:{},
|
|
// 支付方式: 0、支付宝 1、银行卡、信用卡 2、谷歌支付 4、苹果支付
|
|
pay_index:0
|
|
}
|
|
},
|
|
methods:{
|
|
|
|
// 获取调用支付信息数据
|
|
getPayDate(id,will_get_integral){
|
|
let data={_action:'payorder',order_id:id,order_type:'GOODSBUY',payment_method:'alipay.native'}
|
|
defaultRequest2(data).then(res=>{
|
|
console.info(res)
|
|
if(res.error==0){
|
|
//订单对象,从服务器获取
|
|
if(res.data.need_pay_amount==0) return
|
|
uni.requestPayment({
|
|
provider: 'alipay',
|
|
orderInfo: res.data.prepay_data.order_info, //支付宝订单数据
|
|
success: function (res) {
|
|
console.log('success:' + JSON.stringify(res));
|
|
uni.redirectTo({
|
|
url: 'paySuccess?type=0&order_id='+id+'&will_get_integral='+will_get_integral
|
|
});
|
|
},
|
|
fail: function (err) {
|
|
console.log('fail:' + JSON.stringify(err));
|
|
uni.redirectTo({
|
|
url: 'paySuccess?type=1&order_id='+id+'&will_get_integral='+will_get_integral
|
|
});
|
|
}
|
|
});
|
|
}
|
|
})
|
|
|
|
},
|
|
// 选择支付方式
|
|
selectPay(index){
|
|
this.pay_index=index
|
|
},
|
|
goAddress(){
|
|
uni.navigateTo({
|
|
url:'../account/address?type=1'
|
|
})
|
|
},
|
|
// 提交订单
|
|
submitorder(){
|
|
let data={
|
|
_action:'submitorder',
|
|
consignee:this.address,
|
|
postscript:'',
|
|
bonus:this.order.bonus,
|
|
surplus:this.order.surplus,
|
|
shipping_id:this.order.shipping_id,
|
|
directshopping:0,
|
|
}
|
|
defaultRequest3(data,'consignee').then(res=>{
|
|
console.info(res)
|
|
if(res.error==0){
|
|
this.getPayDate(res.data.order.order_id,res.data.will_get_integral)
|
|
}
|
|
})
|
|
},
|
|
// 变更配送方式
|
|
cartselectshipping(id){
|
|
let data={_action:'cartselectshipping',shipping_id:id,consignee:this.address}
|
|
defaultRequest3(data,'consignee').then(res=>{
|
|
console.info(res)
|
|
if(res.error==0){
|
|
this.total=res.data.total
|
|
this.order=res.data.order
|
|
}
|
|
})
|
|
},
|
|
getList(){
|
|
defaultRequest3(this.query,'consignee').then(res=>{
|
|
console.info(res)
|
|
if(res.error==0){
|
|
this.orderDate=res.data
|
|
this.address=res.data.consignee
|
|
this.goods_list=res.data.goods_list
|
|
this.shipping_list=res.data.shipping_list
|
|
if(res.data.bonus_list){
|
|
this.bonus_list=res.data.bonus_list
|
|
}
|
|
this.total=res.data.total
|
|
this.order=res.data.order
|
|
}
|
|
})
|
|
},
|
|
openMore(i){
|
|
this.popup_index=i
|
|
if(i==1){
|
|
if(this.bonus_list.length==0){
|
|
uni.showToast({
|
|
icon:'none',
|
|
title:'No coupon available'
|
|
})
|
|
return
|
|
}
|
|
if(this.orderDate.allow_use_bonus==0){
|
|
uni.showToast({
|
|
icon:'none',
|
|
title:'Coupon cannot be used for this product'
|
|
})
|
|
return
|
|
}
|
|
}else if(i==3){
|
|
if(this.orderDate.allow_use_integral==0){
|
|
uni.showToast({
|
|
icon:'none',
|
|
title:'Points cannot be used for this product'
|
|
})
|
|
return
|
|
}
|
|
}
|
|
this.isShow=true
|
|
}
|
|
},
|
|
onLoad(e) {
|
|
this.query=JSON.parse(e.query)
|
|
this.getList()
|
|
},
|
|
onShow() {
|
|
uni.$once('query' ,(query)=>{
|
|
console.info(query)
|
|
if(query.type=='address'){
|
|
this.query.consignee=query.consignee
|
|
this.query.is_new=0
|
|
this.getList()
|
|
}
|
|
});
|
|
},
|
|
filters:{
|
|
goodsAttr(e){
|
|
return e.replace(/\s\n/g,';');
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style>
|
|
page{
|
|
border-top:14.67rpx #F6F5FA solid ;
|
|
padding-bottom: 140rpx;
|
|
}
|
|
</style>
|
|
<style lang="scss" scoped>
|
|
@import "@/common/scss/order.scss";
|
|
|
|
|
|
|
|
.order_info{
|
|
padding-left: 26.67rpx;
|
|
padding-right: 22.67rpx;
|
|
padding-top: 50.67rpx;
|
|
padding-bottom: 42.67rpx;
|
|
border-bottom:14.67rpx #F6F5FA solid ;
|
|
.info_title{
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
font-weight: bold;
|
|
font-size: 26.67rpx;
|
|
|
|
.info_title_right{
|
|
display: flex;
|
|
align-items: center;
|
|
color: #666666;
|
|
font-size: 24rpx;
|
|
|
|
image{
|
|
margin-left: 33.33rpx;
|
|
}
|
|
}
|
|
}
|
|
.info_image{
|
|
display: flex;
|
|
margin-top: 26.67rpx;
|
|
.info_image_item{
|
|
width: 133.33rpx;
|
|
height: 133.33rpx;
|
|
margin-right: 12rpx;
|
|
background-color: #999999;
|
|
}
|
|
}
|
|
}
|
|
.method{
|
|
border-bottom:14.67rpx #F6F5FA solid ;
|
|
padding-top: 50rpx;
|
|
|
|
.method_title{
|
|
font-size: 26.67rpx;
|
|
font-weight: bold;
|
|
padding-left: 25.33rpx;
|
|
}
|
|
.method_item{
|
|
padding:41.33rpx 0 ;
|
|
border-bottom: 1px #E2E2E2 solid;
|
|
padding-left: 42.67rpx;
|
|
padding-right: 29.33rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
&:last-child{
|
|
border-bottom: none;
|
|
}
|
|
.method_item_image{
|
|
width: 30rpx;
|
|
height: 30rpx;
|
|
image{
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
|
|
.method_item_right{
|
|
margin-left: 30.67rpx;
|
|
.item_price{
|
|
font-size: 28rpx;
|
|
margin-bottom: 14rpx;
|
|
|
|
.item_price_span{
|
|
color: #B22234;
|
|
}
|
|
}
|
|
.item_time{
|
|
font-size: 25.33rpx;
|
|
font-weight: 400;
|
|
.item_time_span{
|
|
color: #555555;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.discount{
|
|
border-bottom:14.67rpx #F6F5FA solid ;
|
|
padding-left: 26rpx;
|
|
padding-right: 22.67rpx;
|
|
padding-top: 42rpx;
|
|
padding-bottom: 45.33rpx;
|
|
|
|
.discount_item{
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
font-size: 28rpx;
|
|
margin-bottom: 42rpx;
|
|
&:last-child{
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.discount_item_left{
|
|
.discount_item_left_span{
|
|
color: #666666;
|
|
}
|
|
}
|
|
.discount_item_right{
|
|
display: flex;
|
|
align-items: center;
|
|
color: #B22234;
|
|
font-weight: bold;
|
|
|
|
image{
|
|
margin-left: 14rpx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.settlement{
|
|
border-bottom:14.67rpx #F6F5FA solid ;
|
|
padding: 44rpx 26rpx;
|
|
|
|
.settlement_item{
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
font-size: 28rpx;
|
|
margin-bottom: 44rpx;
|
|
&:last-child{
|
|
margin-bottom: 0;
|
|
}
|
|
.settlement_item_right{
|
|
color: #3C3B6E;
|
|
font-weight: bold;
|
|
}
|
|
.settlement_item_right1{
|
|
color: #B22234;
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
}
|
|
.total{
|
|
padding: 30.67rpx 0;
|
|
padding-left: 26rpx;
|
|
padding-right: 19.33rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
position: fixed;
|
|
bottom: 0;
|
|
left: 0;
|
|
background-color: white;
|
|
z-index: 99;
|
|
box-sizing: border-box;
|
|
font-size: 36rpx;
|
|
font-weight: 600;
|
|
|
|
button{
|
|
font-size: 26.67rpx;
|
|
color: white;
|
|
height: 73.33rpx;
|
|
line-height: 73.33rpx;
|
|
border-radius: 0;
|
|
border: none;
|
|
background-color: black;
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
</style>
|