123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- <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>
|