dengrui/pagesA/confirmOrder/confirmOrder.vue

343 lines
14 KiB
Vue

<template>
<view class="">
<!-- 使用标题栏 -->
<status-nav :statusBackw="true" :statusTitle="true" :whereCome="whereCome" :title-val="'订单确认'" :tabcolor="'#ffffff'"></status-nav>
<!-- 地址信息 -->
<view @tap="chooseAddress" class=" bacb disba padding-zy30 posir" :style="{paddingTop:(statusHNH+10)+'px'}" v-if="listAddress!=null">
<view class="margin-sx40">
<view class="fon28 color33 disac">
<view v-if="listAddress.is_default==1" class="fon24 colorb margin-y20 btnaddress" style="background-color: #e91111;">默认</view>
<!-- <view class="fon24 colorb margin-y20 btnaddress" style="background-color: #ffc600;">公司</view> -->
{{listAddress.province_str}} {{listAddress.city_str}} {{listAddress.county_str}}
</view>
<view class="fon36 bold margin-sx20">{{listAddress.address}}</view>
<view class="fon28 color33">{{listAddress.name}} {{listAddress.phone}}</view>
</view>
<image class="youj" src="/static/img/my/youj.png" mode=""></image>
<image class="posia lanh" src="/static/img/order/oaddressx.png" mode=""></image>
</view>
<view v-if="listAddress==null" @tap="chooseAddress" class="ptwo-box konga">添加地址</view>
<!-- 商品列表 -->
<view class="bacb margin-s20 padding-zy30 padding-x30">
<view class="disba borbot padding-sx40" v-for="(itemOr,indexOr) in listInfo" :key="indexOr">
<image class="flexs gouwcimg margin-y20" :src="itemOr.main_image" mode="aspectFill"></image>
<view>
<view class="clips2 fon28">{{itemOr.spu_name}}</view>
<view class="fon24 color9 margin-sx10">{{itemOr.sub_title}}</view>
<view class="disba margin-s20">
<view class="bold colorf78">{{itemOr.price/100}}.0</view>
<view class="fon28">X{{itemOr.num}}</view>
</view>
</view>
</view>
</view>
<!-- 商品下单金额相关与留言 -->
<view class="margin-s20 padding-zy30 bacb">
<view @tap="clickfen(index)" v-for="(item,index) in infoArr" :key="index" class="disba padding-s40">
<view class="fon30 color33 flexs">{{item.title}}</view>
<view v-if="item.price!=''" class="disac width100 jcend">
<view :class="index==0?'bold':''" class="fon26 margin-y30" v-if="item.price!=''"><text :class="index==1?'colorf78':''">¥{{item.price}}</text></view>
<image v-if="item.src!=''" class="youj" :src="item.src" style="margin-left: -15rpx;" mode="aspectFill"></image>
</view>
<input class="borbot width100 margin-z20 fon24 padding-sx10" v-if="item.title=='订单备注'" type="text" v-model="orderBZ" placeholder="可以再这里给商家留言(*^▽^*)哟" placeholder-style="color:#9a9a9a;font-size:24rpx;font-weight:bold;"/>
<view class="borbot"></view>
</view>
<view class="bold fon30 padding-sx20 textr">合计: <text class="colorf78 fon36">¥{{hPrice}}</text></view>
</view>
<view class="margin-s20 padding-zy30 color9 fon24 marb-box12 textr">本单商品可以获得{{percentage}}%的分红金额</view>
<!-- 提交订单 -->
<view class="disba bacb padding-sx10 padding-zy30 posi-bzy" style="border-top: 1rpx solid #eeeeee;">
<view>
<view class="fon28">合计: <text class="fon32 bold colorf78">¥{{hPrice}}</text></view>
<view class="fon24" style="color: #353535;">已使用分红金额¥{{infoArr[1].price}}</view>
</view>
<!-- 发起支付 -->
<button @tap="confirm" :disabled="disabled" class="bold btntj">{{btncon}}</button>
</view>
<!-- 底部弹框 -->
<view @touchmove.stop.prevent="" v-if="isBtn" class="posiall zIn5" style="background-color: rgba(0,0,0,.6);">
<view class="posi-bzy padding20 animated bounceInUp" style="border-top-left-radius: 30rpx;border-top-right-radius: 30rpx;background-color: #FFFFFF;z-index: 6;">
<view class="margin-s20 disba">
<view>分红抵扣</view>
<view @tap="isBtn=false" class="close-box">
<view style="transform: rotate(45deg);"></view>
<view style="transform: rotate(-45deg);"></view>
</view>
</view>
<view class="margin-sx20 width94" style="background-color: #f3f3f3;border-radius: 41rpx;">
<input @input="inputev" :disabled="disf" type="number" class="fon24 margin-zy30" :maxlength="len" style="height: 82rpx;" :value="fhprice" :placeholder="placeCon" />
</view>
<view class="fon24 color9">可用分红金额:¥{{usableAmount}},实际获得金额:¥{{shijPrice}}</view>
<view class="disbc">
<view @tap="tankEv" style="height: 86rpx;line-height: 86rpx;background-color: #FF7800;border-radius: 42.5rpx;text-align: center;color: #FFFFFF;font-weight: bold;width: 90%;margin-top: 40rpx;margin-bottom: 60rpx;">立即使用</view>
</view>
</view>
</view>
<successpopu :isShow="isShow" :isSuccess="isSuccess" :title="title" :content="content" :typeNum="typeNum" @change="changepopu"></successpopu>
</view>
</template>
<script>
import successpopu from '@/components/successpopu.vue';
export default {
components:{
successpopu
},
data() {
return {
infoArr:[
{title:'商品总额',price:'0.00',src:''},
{title:'分红抵扣',price:'0.00',src:'/static/img/my/youj.png'},
{title:'配送费',price:'0.00',src:''},
{title:'本单分红',price:'0.00',src:''},
{title:'订单备注',price:'',src:''},
],
orderBZ:'',
isBtn:false,
fhprice:'',
isShow:false,
isSuccess:true,
title:'',
content:'',
disabled:false,
btncon:'确认提交',
usableAmount:'',//可用的分红抵扣金额
zBig:'',//最大可抵扣实际金额
percentage:0,//抵扣比例
len:10,
placeCon:'请输入您想要抵扣的金额',
disf:false,
listInfo:[],
listAddress:'',
hPrice:'',//合计金额
shijPrice:'0.0',//实际获得金额
orderInfo:'',//订单信息
typeNum:'1',
lenaddr:0,
whereCome:0,
newsku_list:[],
statusHNH:uni.getStorageSync('statusHNH')
}
},
onUnload() {
uni.removeStorageSync('isAddr')
},
onShow() {
this.$toolAll.tools.guoq()
this.checkAddress()// 查询地址
},
onLoad(option) {
// console.log(this.infoArr[3].price);
// this.checkFHE()
if(option.index!=undefined) this.whereCome = option.index
this.orderInfo = uni.getStorageSync('orderInfo')
// console.log('订单:',this.orderInfo);
this.orderInfo.list.forEach(item=>{
let obj = {
coding:item.coding,
id:item.id,
main_image:this.$http + item.main_image,
num:item.num,
original_price:item.original_price,
price:item.price,
sku_name:item.sku_name,
spec_summary:item.spec_summary,
spu_id:item.spu_id,
spu_name:item.spu_name,
stock:item.stock,
sub_title:item.sub_title
}
this.listInfo.push(obj)
})
this.listInfo.forEach(iteml=>{
let nskObj = {
sku_coding: iteml.coding,
num: iteml.num
}
this.newsku_list.push(nskObj)
})
// console.log('参数',this.orderInfo);
//商品总额
this.infoArr[0].price = (this.orderInfo.original_total/100).toFixed(2)
//运费
this.infoArr[2].price = (this.orderInfo.freight/100).toFixed(2)
//可用分红额度
this.usableAmount = (this.orderInfo.bonus_amount/100).toFixed(2)
if(this.usableAmount==0){
this.placeCon = '暂无可用分红金额'
this.disf = true
}
//抵扣比例
this.percentage = this.orderInfo.bonus_rate
// 实际金额
// console.log('总金额+运费=',this.infoArr[0].price*1 + this.infoArr[2].price*1);//没问题
this.hPrice = this.infoArr[0].price*1 + this.infoArr[2].price*1 - this.infoArr[1].price*1
// 本单分红
this.infoArr[3].price = (this.hPrice * (this.percentage/100)).toFixed(2)
// 实际获得金额
// this.shijPrice = (this.orderInfo.bonus_amount * this.orderInfo.deduction_rate/100).toFixed(2)
// 地址
this.listAddress = this.orderInfo.address
let getisAddr = uni.getStorageSync('isAddr')
if(getisAddr!='') this.listAddress = getisAddr
// console.log(this.listAddress);
},
methods: {
// checkFHE(){//查询可用分红额度
// this.$requst.post('order/bonus-info').then(res=>{
// if(res.code==0){
// this.usableAmount = res.data.bonus
// this.percentage = res.data.bonus_deduction_rate
// if(this.usableAmount==0){
// this.placeCon = '暂无可用分红金额'
// this.disf = true
// }
// this.infoArr[3].price = this.infoArr[0].price*(this.percentage/100)
// // console.log(this.infoArr);
// }
// // console.log(res);
// },error=>{})
// },
checkAddress(){//查询地址列表事件
this.$requst.post('user/address').then(res=>{
if(res.code==0){
this.lenaddr = res.data.length
if(this.listAddress==''){
if(this.lenaddr!=0){
res.data.forEach(item=>{
if(item.is_default==1){
this.listAddress = item
}
})
}
}
}
},error=>{})
},
confirm(){//提交订单事件
let ya = this
// console.log(this.listAddress);
if(this.lenaddr!=0){
this.disabled = true
this.btncon = '正在提交...'
// console.log('数据:',this.orderInfo);
// console.log('订单参数:',this.newsku_list);
let orderObj = {
sku_list: this.newsku_list,
total: this.hPrice*100,
address_id: this.listAddress.id,
original_total: this.infoArr[0].price*100,
bonus_amount: this.fhprice*100,
bonus_deduction: this.infoArr[1].price*100,
freight: this.orderInfo.freight,
bonus: this.infoArr[3].price*100,
remarks: this.orderBZ//买家备注
}
console.log('创建订单参数',orderObj);
// console.log('随机数',this.$toolAll.tools.randomStr());
this.$requst.post('order/create',orderObj).then(res=>{
// console.log('调起结果',res);
let dataInfo = res
if(res.code==0){
if(dataInfo.data.needPay){
uni.requestPayment({
provider: 'wxpay',
appId:dataInfo.data.payment_params.appId,//appId
timeStamp: dataInfo.data.payment_params.timeStamp,//时间戳
nonceStr: dataInfo.data.payment_params.nonceStr,//随机字符串
package: dataInfo.data.payment_params.package,//package
signType: dataInfo.data.payment_params.signType,//MD5
paySign: dataInfo.data.payment_params.sign,//签名
success:(res)=> {
this.btncon = '确认提交'
this.isShow = true
this.isSuccess = true
this.title = '恭喜你,购买成功'
this.content = '可以在个人中心--我的订单查看订单详情'
// console.log('success:' + JSON.stringify(res));
this.$requst.post('order/paid',{order_id:dataInfo.data.order_id}).then(result=>{
// console.log('成功通知',result);
},error=>{})
},
fail: (err)=> {
// console.log('fail:' + JSON.stringify(err));
this.disabled = false
this.btncon = '确认提交'
}
});
} else {
this.btncon = '确认提交'
this.isShow = true
this.isSuccess = true
this.title = '恭喜你,购买成功'
this.content = '可以在个人中心--我的订单查看订单详情'
// console.log('success:' + JSON.stringify(res));
this.$requst.post('order/paid',{order_id:dataInfo.data.order_id}).then(result=>{
// console.log('成功通知',result);
},error=>{})
}
}
},error=>{})
}else {
this.$toolAll.tools.showToast('请先完善地址信息')
setTimeout(function(){
ya.chooseAddress()
},500)
}
},
changepopu(){
this.isShow = false
},
clickfen(index){
if(index==1){this.fhprice=''}
index==1?this.isBtn = true : this.isBtn = false
},
chooseAddress(){
uni.navigateTo({
url:'/pagesB/adManagement/adManagement?isOrder=0'
})
},
inputev(e){//分红金额输入框
let val = e.target.value
let ya =this
let result = this.$toolAll.tools.checkPrice(val,ya.usableAmount)
ya.len = result.len;
ya.fhprice = result.val
// if(ya.fhprice>=100){
ya.shijPrice = (ya.fhprice * ya.orderInfo.deduction_rate/100).toFixed(2)
// } else {
// ya.shijPrice = (ya.fhprice * ya.orderInfo.deduction_rate/100).toFixed(2)
// }
},
tankEv(){//立即使用事件
if(this.shijPrice==''){this.shijPrice = '0.0'}
if(this.fhprice<100){
this.$toolAll.tools.showToast(' 100')
} else {
this.infoArr[1].price = this.shijPrice
if((this.infoArr[0].price - this.shijPrice)<=0){
this.hPrice = 0
} else {
this.hPrice = this.infoArr[0].price - this.shijPrice
}
if((this.hPrice * this.percentage/100)==0){
this.infoArr[3].price = '0.00'
} else {
this.infoArr[3].price = this.hPrice * this.percentage/100
}
this.isBtn = false
}
}
}
}
</script>
<style>
</style>