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.

425 lines
13 KiB

3 months ago
<template>
<view :style="colorStyle">
<view class="w-full relative z-99" :style="{'padding-top': sysHeight + 'px'}">
<!-- <view class="w-full px-20 pl-20 h-80 flex-between-center" @tap="goIndex()">
<text class="iconfont icon-ic_leftarrow fs-40 text--w111-fff"></text>
<text class="fs-34 fw-500 text--w111-fff">订单支付</text>
<text></text>
</view> -->
<view @click="goPage(3)">
<text class="iconfont icon-ic_leftarrow fs-40 text--w111-fff"></text>
<text class="colorfff fs-34">订单支付</text>
</view>
<view class="flex-col flex-center mt-50">
<view class="flex-y-center">
<text class="iconfont icon-ic-complete1 fs-52 text--w111-fff"
v-if="order_pay_info.paid || order_pay_info.pay_type == 'offline'"></text>
<view v-else class="iconfont icon-ic_close1 fs-52 text--w111-fff"></view>
<text class="fs-40 fw-500 text--w111-fff pl-16" v-if="order_pay_info.pay_type == 'offline' && !order_pay_info.paid">订单创建成功</text>
<text class="fs-40 fw-500 text--w111-fff pl-16" v-else>{{order_pay_info.paid ? '订单支付成功':'等待支付...'}}</text>
</view>
<view class="flex-center mt118">
<view class="w-192 h-64 rd-40rpx flex-center fs-24 colorhuang " @tap="goIndex" style="border: 1px solid #FAAD35;">返回首页</view>
<view class="w-192 h-64 rd-40rpx flex-center fs-24 colorhei bg-color-huang ml-48" @tap="goOrderDetails">查看订单</view>
</view>
</view>
<view class="h-216"></view>
</view>
<!-- <view class="relative content bg--w111-fff w-full pt-32 pl-20 pr-20">
<view class="card bg--w111-fff rd-24rpx h-468 pl-20 pr-20"
v-if="order_pay_info.paid && order_pay_info.pay_type != 'offline' && loading && lotteryLoading">
<gridsLottery :prizeData="prize" @get_winingIndex='getWiningIndex'
@luck_draw_finish='luck_draw_finish' :lotteryNum="lottery_num" :lotteryType='1' :datatime="datatime">
</gridsLottery>
</view>
<view class="card bg--w111-fff rd-24rpx px-32" v-if="showGift">
<view class="cell flex-between-center py-32" v-for="(item,index) in couponList" :key="index + 'n'" @click="goPage(1,'/pages/users/user_coupon/index')">
<view class="flex-y-center">
<image :src="imgHost + '/statics/images/order/prize_coupon_icon.png'" class="w-76 h-76 rd-40rpx"></image>
<view class="ml-24">
<view class="fs-28 text--w111-333 lh-38rpx">下单得{{item.coupon_price}}元优惠券</view>
<view class="fs-22 text--w111-999 lh-30rpx mt-8" v-if="parseInt(item.use_min_price > 0)">{{item.use_min_price}}元可用</view>
<view class="fs-22 text--w111-999 lh-30rpx mt-8" v-else>无门槛优惠券</view>
</view>
</view>
<view class="card_btn flex-center font-color fs-22">去使用</view>
</view>
<view class="cell flex-between-center py-32" v-for="(item,index) in giftList" :key="index + 'o'">
<view class="flex-y-center">
<image :src="imgHost + '/statics/images/order/prize_gift_icon.png'" class="w-76 h-76 rd-40rpx"></image>
<view class="ml-24">
<view class="fs-28 text--w111-333 line2 w-400">{{item.store_name}}</view>
</view>
</view>
<view class="card_btn flex-center font-color fs-22" @tap="goOrderDetails">去使用</view>
</view>
<view class="cell flex-between-center py-32" v-if="prize_integral > 0" @click="goPage(1,'/pages/users/user_integral/index')">
<view class="flex-y-center">
<image :src="imgHost + '/statics/images/order/prize_integral_icon.png'" class="w-76 h-76 rd-40rpx"></image>
<view class="ml-24">
<view class="fs-28 text--w111-333 line2 w-400">获得{{prize_integral}}积分</view>
<view class="fs-22 text--w111-999 lh-30rpx mt-8">下单即可抵扣</view>
</view>
</view>
<view class="card_btn flex-center font-color fs-22" @tap="goOrderDetails">去使用</view>
</view>
<view class="cell flex-between-center py-32" v-if="prize_exp > 0">
<view class="flex-y-center">
<image :src="imgHost + '/statics/images/order/prize_exp_icon.png'" class="w-76 h-76 rd-40rpx"></image>
<view class="ml-24">
<view class="fs-28 text--w111-333 line2 w-400">获得{{prize_exp}}经验</view>
<view class="fs-22 text--w111-999 lh-30rpx mt-8">下单即可抵扣</view>
</view>
</view>
<view class="card_btn flex-center font-color fs-22" @tap="goOrderDetails">去使用</view>
</view>
</view>
<recommend :hostProduct='hostProduct'></recommend>
</view> -->
<lotteryAleart
:aleartStatus="aleartStatus"
:alData="alData"
theme
:aleartType="aleartType"
@close="closeLottery" >
</lotteryAleart>
<view class="mask" v-if="aleartStatus || addressModel" @touchmove.stop.prevent="moveHandle"></view>
</view>
</template>
<script>
let sysHeight = uni.getSystemInfoSync().statusBarHeight;
// import lotteryModel from './payLottery.vue'
import gridsLottery from '../components/lottery/payLottery.vue';
import lotteryAleart from '../components/lotteryAleart/index.vue'
import recommend from '@/components/recommend';
import { getOrderDetail,orderCoupon, getOrderPrizeApi } from '@/api/order.js';
import { openOrderSubscribe } from '@/utils/SubscribeMessage.js';
import {
getLotteryData,
startLottery,
receiveLottery
} from '@/api/lottery.js';
import { getProductHot, postCartAdd} from '@/api/store.js';
import { toLogin} from '@/libs/login.js';
import { mapGetters } from "vuex";
import colors from "@/mixins/color";
import { HTTP_REQUEST_URL } from '@/config/app';
export default {
components: {
gridsLottery,
lotteryAleart,
recommend
},
mixins: [colors],
data() {
return {
imgHost: HTTP_REQUEST_URL,
sysHeight: sysHeight,
loading: false,
lotteryLoading: false,
orderLottery: false,
orderId: '',
order_pay_info: {
paid: 1,
_status: {}
},
isAuto: false, //没有授权的不会自动授权
isShowAuth: false, //是否隐藏授权
status: 0,
msg: '',
couponsHidden: true,
couponList: [],
giftList:[],
options: {},
prize: [],
datatime:0,
totalPrice: 0,
type:'',
lottery_draw_param: {
startIndex: 3, //开始抽奖位置,从0开始
totalCount: 3, //一共要转的圈数
winingIndex: 1, //中奖的位置,从0开始
speed: 100 //抽奖动画的速度 [数字越大越慢,默认100]
},
aleartType: 0,
aleartStatus: false,
addressModel:false,
lottery_num:0,
alData: {},
hostProduct:[],
hotScroll: false,
hotPage: 1,
hotLimit: 10,
prize_integral:0,
prize_exp:0,
};
},
computed: {
...mapGetters(['isLogin', 'cartNum']),
showGift(){
if(!this.couponList.length && !this.giftList.length && this.prize_integral == 0 && this.prize_exp == 0){
return false
}else{
return true
}
}
},
watch: {
isLogin: {
handler: function(newV, oldV) {
if (newV) {
//#ifndef MP
this.getOrderPayInfo();
//#endif
}
},
deep: true
}
},
onLoad: function(options) {
this.options = options
if (!options.order_id) return this.$util.Tips({
title: '缺少参数无法查看订单支付状态'
}, {
tab: 3,
url: 1
});
this.orderId = options.order_id;
this.status = options.status || 0;
this.msg = options.msg || '';
this.type = this.options.type;
this.totalPrice = this.options.totalPrice;
this.getLotteryData(this.type);
this.getHostProduct();
},
onShow() {
uni.setStorageSync('form_type_cart', 1);
if (this.isLogin) {
this.getOrderPayInfo();
} else {
toLogin()
}
},
methods: {
moveHandle(){
return false
},
// 授权关闭
authColse: function(e) {
this.isShowAuth = e
},
openTap() {
this.$set(this, 'couponsHidden', !this.couponsHidden);
},
onLoadFun: function() {
this.getOrderPayInfo();
this.isShowAuth = false;
},
/**
*
* 支付完成查询支付状态
*
*/
getOrderPayInfo: function() {
let that = this;
uni.showLoading({
title: '正在加载中'
});
getOrderDetail(that.orderId).then(res => {
uni.hideLoading();
that.$set(that, 'order_pay_info', res.data);
uni.setNavigationBarTitle({
title: res.data.paid ? '支付成功' : '未支付'
});
this.loading = true
setTimeout(function(){
that.getOrderPrize()
}, 1000);
}).catch(err => {
this.loading = true
uni.hideLoading();
});
},
getOrderPrize() {
getOrderPrizeApi(this.orderId).then(res=>{
this.couponList = res.data.coupons;
this.giftList = res.data.gift;
this.prize_integral =res.data.integral;
this.prize_exp =res.data.exp;
});
},
/**
* 去首页关闭当前所有页面
*/
goIndex: function(e) {
uni.switchTab({
url: '/pages/index/index'
});
},
// 去参团页面;
goPink: function(id) {
uni.navigateTo({
url: '/pages/activity/goods_combination_status/index?id=' + id
});
},
/**
*
* 去订单详情页面
*/
goOrderDetails: function(e) {
let that = this;
// #ifdef MP
uni.showLoading({
title: '正在加载',
})
openOrderSubscribe().then(res => {
uni.hideLoading();
uni.navigateTo({
url: '/pages/goods/order_details/index?order_id=' + that.orderId
});
}).catch(() => {
nui.hideLoading();
});
// #endif
// #ifndef MP
uni.navigateTo({
url: '/pages/goods/order_details/index?order_id=' + that.orderId
})
// #endif
},
getLotteryData(type) {
getLotteryData(type).then(res => {
this.factor_num = res.data.lottery.factor_num
this.id = res.data.lottery.id
this.prize = res.data.lottery.prize
this.lottery_num = res.data.lottery_num
this.prize.push({
a: 1
})
this.lotteryLoading = true;
this.datatime = parseInt(res.data.cache_time);
if(res.data.lottery.type == 6){
uni.navigateTo({
url:"/pages/goods/lottery/grids/record"
})
}
}).catch(err => {
this.lotteryLoading = false;
})
},
getWiningIndex(callback){
this.aleartType = 0
startLottery({
id: this.id
}).then(res => {
this.prize.forEach((item, index) => {
if (res.data.id === item.id) {
this.alData = res.data
this.lottery_draw_param.winingIndex = index;
callback(this.lottery_draw_param);
}
})
}).catch(err => {
this.$util.Tips({
title: err
});
})
},
// 抽奖完成
luck_draw_finish(param) {
this.aleartType = 2
this.aleartStatus = true
},
closeLottery(status) {
this.aleartStatus = false;
if (this.alData.type === 6) {
postCartAdd({
cartNum: 1,
new: 1,
is_new: 1,
productId: this.alData.product_id,
uniqueId: this.alData.unique,
luckRecordId: this.alData.lottery_record_id,
}).then(res => {
uni.navigateTo({
url: `/pages/goods/order_confirm/index?new=1&luckRecordId=${this.alData.lottery_record_id}&cartId=${res.data.cartId}&product_id=${this.alData.product_id}`
});
}).catch(err => {
this.$util.Tips({
title: `${err},请联系客服`
});
});
}
this.getLotteryData(this.type)
},
getHostProduct: function() {
let that = this;
if (that.hotScroll) return
getProductHot(
that.hotPage,
that.hotLimit,
).then(res => {
that.hotPage++
that.hotScroll = res.data.length < that.hotLimit
that.hostProduct = that.hostProduct.concat(res.data)
});
},
goPage(type, url){
if(type == 1){
uni.navigateTo({
url
})
}else if(type == 2){
uni.switchTab({
url
})
}else if(type == 3){
uni.navigateBack();
}
}
},
onPageScroll(e) {
uni.$emit('scroll');
},
}
</script>
<style>
.fs-52{
font-size:52rpx;
}
.white-border{
border: 1rpx solid #fff;
}
.ml-48{
margin-left: 48rpx;
}
.h-216{
height:216rpx;
}
.content{
background: #f5f5f5;
border-radius: 40rpx 40rpx 0 0;
left:0;
top: -164rpx;
min-height:500rpx;
}
.card ~ .card{
margin-top: 20rpx;
}
.h-76{
height:76rpx;
}
.cell ~ .cell {
border-top: 1px solid #eee;
}
.card_btn{
width: 114rpx;
height: 52rpx;
border-radius: 26rpx;
border: 1px solid #E93323;
}
</style>