<template> <view class="container p-bottom"> <!-- 清单列表 --> <view class="m-top20"> <view v-for="(item, index) in storeRule" :key="index" class="checkout_list"> <view class="flow-shopList dis-flex"> <view class="flow-list-right flex-box"> <text class="goods-name twolist-hidden">预存¥{{ item.store }} 到账 ¥{{ item.upStore }}</text> <view class="flow-list-cont dis-flex flex-x-between flex-y-center"> <text class="small">X{{ item.num }} </text> <text class="flow-cont">¥{{ item.amount.toFixed(2) }}</text> </view> </view> </view> </view> <view class="flow-num-box b-f"> <text>共{{ totalNum }}张,合计:</text> <text class="flow-money col-m">¥{{ totalAmount.toFixed(2) }}</text> </view> </view> <!-- 支付方式 --> <view class="pay-method flow-all-money b-f m-top20"> <view class="flow-all-list dis-flex"> <text class="flex-five">支付方式</text> </view> <!-- 微信支付 --> <view class="pay-item dis-flex flex-x-between" @click="handleSelectPayType(PayTypeEnum.WECHAT.value)"> <view class="item-left dis-flex flex-y-center"> <view class="item-left_icon wechat"> <text class="iconfont icon-weixinzhifu"></text> </view> <view class="item-left_text"> <text>{{ PayTypeEnum.WECHAT.name }}</text> </view> </view> <view class="item-right col-m" v-if="curPayType == PayTypeEnum.WECHAT.value"> <text class="iconfont icon-duihao"></text> </view> </view> </view> <!-- 买家留言 --> <view class="flow-all-money b-f m-top20"> <view class="ipt-wrapper"> <textarea v-model="remark" rows="3" maxlength=100 placeholder="买家留言 (选填,100字以内)" type="text"></textarea> </view> </view> <!-- 提交订单 --> <view class="flow-fixed-footer b-f m-top10"> <view class="dis-flex chackout-box"> <view class="chackout-left pl-12"> <view class="col-amount-do">应付金额:¥{{ totalAmount.toFixed(2) }}</view> <view class="col-amount-view">实得金额:¥{{ getTotalAmount.toFixed(2) }}</view> </view> <view class="chackout-right" @click="onSubmitOrder()"> <view class="flow-btn f-32" :class="{ disabled }">提交订单</view> </view> </view> </view> </view> </template> <script> import * as Verify from '@/utils/verify' import * as CouponApi from '@/api/coupon' import * as SettlementApi from '@/api/settlement' import PayTypeEnum from '@/common/enum/order/PayType' import { wxPayment } from '@/utils/app' export default { data() { return { // 枚举类 PayTypeEnum, // 当前页面参数 options: {}, // 当前选中的支付方式 curPayType: PayTypeEnum.WECHAT.value, // 买家留言 remark: '', // 禁用submit按钮 disabled: false, // 按钮禁用 disabled: false, couponId: 0, selectNum: "", storeRule: [], totalAmount: 0, getTotalAmount: 0, totalNum: 0 } }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { this.options = options this.couponId = options.couponId this.selectNum = options.selectNum }, /** * 生命周期函数--监听页面显示 */ onShow() { // 获取当前订单信息 this.getCouponDetail() }, methods: { // 获取卡券信息 getCouponDetail() { const app = this return new Promise((resolve, reject) => { CouponApi.detail(app.couponId) .then(result => { app.initData() app.couponInfo = result.data let ruleItem = app.couponInfo.inRule.split(",") let selected = app.selectNum.split(",") ruleItem.forEach(function(item, index) { let rule = item.split("_") let num = selected[index] let amount = parseFloat(rule[0]) * num app.totalAmount += parseFloat(amount) app.getTotalAmount += parseFloat(rule[1] * num) app.totalNum += parseInt(num) if (num > 0) { app.storeRule.push({"store": parseFloat(rule[0]), "num": parseInt(num), "amount": parseFloat(amount), "upStore": parseFloat(rule[1])}) } }) resolve(result) }) .catch(err => reject(err)) }) }, initData() { this.storeRule = [], this.totalAmount = 0, this.getTotalAmount = 0, this.totalNum = 0 }, // 选择支付方式 handleSelectPayType(value) { this.curPayType = value }, // 订单提交 onSubmitOrder() { const app = this if (app.disabled) { app.$toast('请勿重复提交订单哦'); return false } // 表单验证 if (!app.onVerifyFrom()) { return false } // 按钮禁用 app.disabled = true // 请求api SettlementApi.submit(app.couponId, app.selectNum, "prestore", app.remark, 0, 0, 0, "", 0, 0, 0, "", "JSAPI") .then(result => app.onSubmitCallback(result)) .catch(err => { if (err.result) { const errData = err.result.data if (errData.isCreated) { app.navToMyOrder(errData.orderInfo.id) return false } } app.disabled = false }) }, // 订单提交成功后回调 onSubmitCallback(result) { const app = this // 发起微信支付 if (result.data.payType == PayTypeEnum.WECHAT.value) { wxPayment(result.data.payment) .then(() => app.$success('支付成功')) .catch(err => app.$error('支付失败')) .finally(() => { app.disabled = false app.navToMyOrder(result.data.orderInfo.id) }) } // 余额支付 if (result.data.payType == PayTypeEnum.BALANCE.value) { app.$success('支付成功') app.disabled = false app.navToMyOrder(result.data.orderInfo.id) } }, // 跳转到我的订单(等待1秒) navToMyOrder(orderId) { setTimeout(() => { this.$navTo('pages/order/detail?orderId='+orderId) }, 1000) }, // 表单验证 onVerifyFrom() { const app = this if (app.hasError) { app.$toast(app.errorMsg) return false } return true }, } } </script> <style lang="scss" scoped> @import "./style.scss"; </style>