Browse Source

优化商品详情、我的订单列表部分内容、支付宝支付、确认订单切换地址

master
ltlzx 4 years ago
parent
commit
52f8614e9a
  1. 11
      manifest.json
  2. 24
      pages/account/address.vue
  3. 186
      pages/account/myOrders.vue
  4. 82
      pages/order/confirmation.vue
  5. 9
      pages/productDetails/index.vue

11
manifest.json

@ -17,7 +17,9 @@
"delay" : 0
},
/* */
"modules" : {},
"modules" : {
"Payment" : {}
},
/* */
"distribute" : {
/* android */
@ -44,7 +46,12 @@
"ios" : {},
/* SDK */
"sdkConfigs" : {
"ad" : {}
"ad" : {},
"payment" : {
"alipay" : {
"__platform__" : [ "ios", "android" ]
}
}
}
}
},

24
pages/account/address.vue

@ -1,6 +1,6 @@
<template>
<view>
<view class="address_item" v-for="(item,index) in list" :key="index">
<view class="address_item" v-for="(item,index) in list" :key="index" @click="selectAddress(item)">
<view class="address_info">
<view class="address_info_title">
<view class="info_title_span">{{item.consignee}}</view>
@ -11,17 +11,17 @@
<view>{{item.sign_building}} </view>
<text>{{item.country_name}} {{item.province_name}} {{item.city_name}} {{item.address}} {{item.mobile}}</text>
</view>
<image src="../../static/img/update.png" mode="" @click="updateAddress(item)"></image>
<image src="../../static/img/update.png" mode="" @click.stop="updateAddress(item)"></image>
</view>
</view>
<view class="address_default">
<view class="address_default_left">
<image src="../../static/img/select4.png" mode="" v-if="item.default_address_id==item.address_id"></image>
<image src="../../static/img/select2.png" mode="" v-else @click="setDefault(item.address_id)"></image>
<image src="../../static/img/select2.png" mode="" v-else @click.stop="setDefault(item.address_id)"></image>
<text>Default address</text>
</view>
<text @click="deleteAddress(item.address_id)">Delete</text>
<text @click.stop="deleteAddress(item.address_id)">Delete</text>
</view>
</view>
@ -43,10 +43,18 @@
data() {
return {
list:[],
address_id:''
address_id:'',
type:0
}
},
methods:{
//
selectAddress(item){
if(this.type==1){
uni.$emit('query' , {consignee : item,type:'address'});
uni.navigateBack()
}
},
//
updateAddress(item){
uni.navigateTo({
@ -93,7 +101,13 @@
},
onShow() {
this.getList()
},
onLoad(e) {
if(e.type==1){
this.type=1
}
}
}
</script>
<style>

186
pages/account/myOrders.vue

@ -8,7 +8,8 @@
<view class="body">
<template v-if="isList==true && scroll_active==0">
<view class="" v-for="(item,idnex) in orderList" :key="item.order_id">
<view class="order" v-if="item.pay_status_code==0">
<!-- 待支付订单 -->
<view class="order" v-if="item.pay_status_code==0 && item.order_status_code==0">
<view class="order_title">
<text>Waiting for payment</text>
<view class="order_title_right">
@ -34,11 +35,41 @@
<text>Reward 10 points</text>
</view>
<view class="order_button">
<button class="cancel">CANCEL ORDER</button>
<button class="pay">PAY NOW</button>
<button class="cancel" @click="cancelorder(item.order_id)">CANCEL ORDER</button>
<button class="pay" @click="payNow(item.order_id)">PAY NOW</button>
</view>
</view>
</view>
<!-- 已取消订单 -->
<view class="order" v-if="item.order_status_code==2" @click="goDetails(1)">
<view class="order_title">
<text>cancelled</text>
<view class="order_title_right">
<text>order#{{item.order_sn}}</text>
<image src="../../static/img/right.png" mode=""></image>
</view>
</view>
<view class="order_content">
<view class="good_info">
<view class="good_info_left">
<view class="good_info_image" v-for="(item1,index1) in item.order_goods" :key="index1">
<image :src="item.goods_img" mode=""></image>
</view>
</view>
<view class="good_info_right">
<text>{{item.order_goods.length}} ltems</text>
<image src="../../static/img/right.png" mode=""></image>
</view>
</view>
<view class="good_price">total:US${{item.order_amount}}</view>
<view class="order_button">
<button class="cancel">DELETE ORDER</button>
</view>
</view>
</view>
</view>
@ -151,32 +182,6 @@
</view>
</view>
<navigator url="/pages/order/details?details_index=1">
<view class="order">
<view class="order_title">
<text>cancelled</text>
<view class="order_title_right">
<text>order#20245512141212</text>
<image src="../../static/img/right.png" mode=""></image>
</view>
</view>
<view class="order_content">
<view class="good_info">
<view class="good_info_left">
<view class="good_info_image" v-for="(item,index) in 4" :key="index"></view>
</view>
<view class="good_info_right">
<text>4 ltems</text>
<image src="../../static/img/right.png" mode=""></image>
</view>
</view>
<view class="good_price">total:US$12.5</view>
<view class="order_button">
<button class="cancel">DELETE ORDER</button>
</view>
</view>
</view>
</navigator>
</template>
<template v-if="isList==true && scroll_active==2">
<navigator url="/pages/order/details?details_index=0">
@ -296,8 +301,57 @@
</view>
</template>
</view>
<view class="mask" v-show="isPay" @click="isShow=false"></view>
<view class="order_popup" v-show="isPay">
<view class="order_popup_title">
<text>
Payment Method
</text>
<image src="../../static/img/close1.png" mode="" @click="isPay=false"></image>
</view>
<view class="order_popup_pay" >
<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="getPayDate">PAY NOW</button>
<!-- </navigator> -->
</view>
</view>
<uni-popup ref="alertDialog" type="dialog">
<uni-popup-dialog type="error" cancelText="Close" confirmText="CancelOrder" title="Tips"
content="Are you sure you want to cancel this order? This order will be regarded as invalid after cancellation"
@confirm="dialogConfirm" ></uni-popup-dialog>
</uni-popup>
</view>
</template>
@ -309,10 +363,78 @@
scrollList:[{text:'All'},{text:'Unpaid'},{text:'Processing'},{text:'Shipped'},{text:'Returns'},{text:'Completed'},{text:'Closed'}],
scroll_active:0,
isList:true,
orderList:[]
orderList:[],
isPay:false,
payQuery:{
_action:'payorder',
order_id:'',
order_type:'GOODSBUY',
payment_method:'alipay.native'
},
pay_index:0,
cancelQuery:{
_action:'cancelorder',
order_id:''
}
}
},
methods:{
//
goDetails(index){
uni.navigateTo({
url:'../order/details?details_index='+index
})
},
//
selectPay(index){
this.pay_index=index
},
//
getPayDate(){
defaultRequest2(this.payQuery).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?order_id='+this.payQuery.order_id
});
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err));
uni.showToast({
title:'Payment failed',
icon:'none'
})
}
});
}
})
},
payNow(id){
this.payQuery.order_id=id
this.isPay=true
},
//
cancelorder(id){
this.cancelQuery.order_id=id
this.$refs.alertDialog.open()
},
//
dialogConfirm(){
defaultRequest2(this.cancelQuery).then(res=>{
console.info(res)
if(res.error==0){
this.getList()
}
})
},
getList(){
let data={_action:'getuserorders',page_index:1,page_size:10,payingstatus:'',status:''}
defaultRequest2(data).then(res=>{

82
pages/order/confirmation.vue

@ -1,6 +1,6 @@
<template>
<view>
<view class="address">
<view class="address" @click="goAddress">
<view class="address_left">
<view class="address_title">
<image src="../../static/img/address.png" mode=""></image>
@ -29,8 +29,9 @@
</view>
</view>
<view class="method">
<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>
@ -142,29 +143,33 @@
</view>
<view class="order_popup_pay" v-show="popup_index==2">
<view class="pay_item">
<image src="../../static/img/select1.png" mode="" class="pay_item_select"></image>
<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">
<image src="../../static/img/select2.png" mode="" class="pay_item_select"></image>
<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">
<image src="../../static/img/select2.png" mode="" class="pay_item_select"></image>
<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">
<image src="../../static/img/select2.png" mode="" class="pay_item_select"></image>
<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>
@ -211,10 +216,52 @@
shipping_list:[],
bonus_list:[],
total:{},
order:{}
order:{},
// : 0 1 2 4
pay_index:0
}
},
methods:{
//
getPayDate(id){
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?order_id='+id
});
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err));
uni.showToast({
title:'Payment failed',
icon:'none'
})
uni.navigateBack()
}
});
}
})
},
//
selectPay(index){
this.pay_index=index
},
goAddress(){
uni.navigateTo({
url:'../account/address?type=1'
})
},
//
submitorder(){
let data={
@ -229,6 +276,7 @@
defaultRequest3(data).then(res=>{
console.info(res)
if(res.error==0){
this.getPayDate(res.data.order.order_id)
}
})
},
@ -244,7 +292,7 @@
})
},
getList(){
defaultRequest2(this.query).then(res=>{
defaultRequest3(this.query).then(res=>{
console.info(res)
if(res.error==0){
this.orderDate=res.data
@ -292,6 +340,16 @@
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,';');

9
pages/productDetails/index.vue

@ -656,7 +656,7 @@
flex-wrap: wrap;
.select_size_item{
background-color: #F8F8F8;
width: 121.33rpx;
min-width: 121.33rpx;
height: 54.67rpx;
display: flex;
align-items: center;
@ -667,10 +667,11 @@
margin-right: 18.67rpx;
border: 1px solid #F8F8F8;
padding: 0 10rpx;
margin-bottom: 16.67rpx;
&:nth-child(-n+2){
margin-bottom: 16.67rpx;
}
// &:nth-child(-n+2){
// margin-bottom: 16.67rpx;
// }
}
}
.addCard{

Loading…
Cancel
Save