• vue中控制浏览器前进和后退


    <template>
      <div class="pay-wrap">
        <fed-navbar
          v-if="!elongFlag"
          :left="[{'tagname':'tag_click_back'}]"
          :center="[{'value': payTitle}]"
          :callback="pageCB"
        ></fed-navbar>
        <newTab :orderId="this.$route.query.orderId"></newTab>
        <div class="pay-time">
            <p>请在{{ minute }}:{{ second }}秒内完成支付</p>
        </div>
        <div class="pay-info">
            <p>付款金额:<span>¥{{ payDetail.totalPrice || payDetail.displayAmount }}</span></p>
            <p>商品名称:<span>够谱打车订单</span></p>
        </div>
        <div class="item-wrap">
            <div class="item row cen-space" @click="getNewWxPay">
                <div class="row cen-center">
                <img class="item-icon" :src="wxicon"/>
                <span>微信支付</span>
                </div>
                <span><i class="right"></i></span>
            </div>
            <div class="item row cen-space" @click="getNewPay">
                <div class="row cen-center">
                <img class="item-icon" :src="payicon"/>
                <span>支付宝支付</span>
                </div>
                <span><i class="right"></i></span>
            </div>
        </div>
        <!-- <toast ref="toast"></toast> -->
        <popConfirm v-on:popTriget="popTriget" :popInfo.sync="popInfo" v-if="showConfirm"></popConfirm>
      </div>
    </template>
    <script>
    import wxicon from '@/assets/images/wxicon.png'
    import payicon from '@/assets/images/payicon.png'
    import newTab from '@/components/common/newTab'
    import { PageModul } from '@/utils/commonUtils'
    import popConfirm from '../airTransfer/component/popconfirm'
    // import { processService } from '@/model/internalapi/carorder/process/processService'
    const { payService } = require('../../../model/internalapi/carorder/pay/payService')
    export default {
      components: {
          newTab,
          popConfirm
      },
      data() {
        return {
            wxicon,
            payicon,
            elongFlag: false,
            payTitle: '收银台',
            payDetail: {},
            minutes: 5,
            seconds: 0,
            showConfirm: false, // 控制是否显示支付取消弹窗
            popInfo: { //取消支付弹窗提示
                closeIcon: true,
                title: '支付状态',
                content: '是否已完成支付。',
                leftButton: '继续支付',
                rightButton: '已支付',
                lefttext: 'cancelOrder',
                righttext: 'car'
            }
        }
      },
      watch: {
        // 监听数值变化
        second: {
            handler(newVal) {
                this.num(newVal)
            }
        },
        minute: {
            handler(newVal) {
                this.num(newVal)
            }
        }
      },
      computed: {
        // 初始化数据
        second() {
            return this.num(this.seconds)
        },
        minute() {
            return this.num(this.minutes)
        }
      },
      methods: {
        // 回退
        pageCB() {
            PageModule.closePage()
        },
        // 微信支付
        getNewWxPay() {
            payService.getIp({}, res => {
                let data = {
                    body: `${this.$route.query.orderId}`,
                    clientIp: res.ipAddress,
                    orderId: this.$route.query.orderId,
                    returnUrl: `https://goupu.t.ly.com/internalCarMerchantH5/order/index#/pay?orderId=${this.$route.query.orderId}`,
                    subject: `够谱打车订单`,
                    timeoutMinutes: '5'
                }
                payService.newWxPay(data, res => {
                    window.location = res.mweb_url
                    this.getQueryPayOrder(res)
                    // processService.queryOrderSimple(this.$route.query.orderId, res => {
                    //   if(res.data.orderStatus > 5) {
                    //   }
                    // }, error => {
                    // })
                })
            })
        },
        // 支付宝
        getNewPay() {
             payService.getIp({}, res => {
                let data = {
                    body: `${this.$route.query.orderId}`,
                    clientIp: res.ipAddress,
                    orderId: this.$route.query.orderId,
                    returnUrl: `https://goupu.t.ly.com/internalCarMerchantH5/order/index#/pay?orderId=${this.$route.query.orderId}`,
                    subject: `够谱打车订单`,
                    timeoutMinutes: '5'
                }
                payService.newWxPay(data, res => {
                    let form= res.form
                    const div = document.createElement('div')
                    div.innerHTML = form
                    document.body.appendChild(div)
                    document.forms[0].acceptCharset='UTF-8'
                    document.forms[0].submit()
                    this.getQueryPayOrder(res)
                })
            })
        },
        popTriget(data) {
            this.showConfirm = false
            if (data === 'cancelOrder') {
                this.showConfirm = false
                return
            } else if(data === 'car') {
              this.$router.replace({
                   path: '/OrderDetailOld',
                   query: {
                       orderId: this.$route.query.orderId
                   }
               })
            }
        },
        // 查询接口
        getQueryPayOrder() {
            let data = {
                orderId: this.$route.query.orderId
            }
            payService.queryPayOrder(data, res => {
                if (res.return_code === 'SUCCESS') {
                    // this.$refs.toast.showoast('支付成功')
                    // , totalAmount: this.$route.query.totalAmount, paymentCarTypeName: this.$route.query.paymentCarTypeName
                    this.showConfirm = true
                    this.$router.push({path: '/pay', query: {orderId: this.$route.query.orderId}})
               }
            })
        },
        // 防止数值小于10时,出现一位数
        num(n) {
            return n < 10 ? '0' + n : '' + n
        },
        // 倒计时函数
        payCountDown() {
            let time = window.setInterval(() => {
              if (this.minutes !== 0 && this.seconds === 0) {
                    this.minutes -= 1
                    this.seconds = 59
                } else if (this.minutes === 0 && this.seconds === 0) {
                    this.seconds = 0
                    window.clearInterval(time)
                } else if (this.minutes !== 0 && this.seconds === 0) {
                    this.minutes -= 1
                    this.seconds = 59
                } else {
                    this.seconds -= 1
                }
            }, 1000)
        },
        // getBack() {
        //   if (this.$route.query.orderId) {
        //     this.$router.push({
        //         path: '/OrderDetailOld',
        //         query: {
        //             orderId: this.$route.query.orderId
        //         }
        //     })
        //   } else {
        //    this.$router.go(-1)
        //   }
        // }
      },
      created() {
         this.getQueryPayOrder()
         setTimeout(() => {
           this.showConfirm = true
         }, 5000)
      },
      mounted() {
          this.payDetail = this.$route.query
          this.payCountDown()
          // if (window.history && window.history.pushState) {
          //    history.pushState(null, null, document.URL)
          //    window.addEventListener('popstate', this.getBack, false)
          // }
      },
      destroyed() {
          // window.removeEventListener('popstate', this.getBack, false)
          clearTimeout(() => {
             this.showConfirm = false
          }, 5000)
      }
    }
    </script>
    <style lang="less" scoped>
    @import url("../transfer/common/base.css");
    .pay-wrap {
      height: 100%;
      min-height: 100vh;
       100%;
      overflow: scroll;
      box-sizing: border-box;
      -webkit-overflow-scrolling: touch;
      .pay-time {
        background-color: #FFF6D5;
        height: 2.6rem;
        line-height: 2.6rem;
        text-align: center;
        border-top: 0.1rem solid #F2E7BC;
        border-bottom: 0.1rem solid #F2E7BC;
        p {
          font-size: 0.7rem;
          color: #B59935;
        }
      }
      .pay-info {
        background: #fff;
        padding: 1rem 0.85rem 0.75rem 0.81rem;
        box-shadow: 0 1rem 0.5rem -1rem #BDBDBD;
        -webkit-box-shadow: 0 1rem 0.5rem -1rem #BDBDBD;
        -moz-box-shadow: 0 1rem 0.5rem -1rem #BDBDBD;
        p {
            color: #969696;
            font-size: 0.9rem;
            padding-bottom: 0.5rem;
            span {
                color: #001D24;
            }
        }
      }
    .item-wrap {
      flex: auto;
      margin-top: 0.7rem;
      background-color: #fff;
      box-shadow: 0 1rem 0.5rem -1rem #BDBDBD;
      -webkit-box-shadow: 0 1rem 0.5rem -1rem #BDBDBD;
      -moz-box-shadow: 0 1rem 0.5rem -1rem #BDBDBD;
    }
    .item {
      padding: 0 1rem 0 1.25rem;
      font-family: PingFangSC-Regular;
      font-size: 16px;
      color: #333333;
      letter-spacing: 0;
      height: 3rem;
       100%;
      border-bottom: 1px solid #f4f4f4;
    }
    .item-icon {
       0.9rem;
      height: 0.9rem;
      margin-right: 0.6rem;
    }
    i {
      border: solid black;
      border- 0 1px 1px 0;
      display: inline-block;
      padding: 3px;
    }
    .right {
      transform: rotate(-45deg);
      -webkit-transform: rotate(-45deg);
    }
    }
    </style>
  • 相关阅读:
    Codeforces 627A XOR Equation(思路)
    Codeforces 633C Spy Syndrome 2(DP + Trie树)
    BZOJ 1982 [Spoj 2021]Moving Pebbles(博弈论)
    BZOJ 3676 [Apio2014]回文串(回文树)
    BZOJ 3790 神奇项链(manacher+DP+树状数组)
    Codeforces 449D Jzzhu and Numbers(高维前缀和)
    SPOJ Time Limit Exceeded(高维前缀和)
    BZOJ 4031 [HEOI2015]小Z的房间(Matrix-Tree定理)
    BZOJ 3809 Gty的二逼妹子序列(莫队+分块)
    BZOJ 3544 [ONTAK2010]Creative Accounting(set)
  • 原文地址:https://www.cnblogs.com/amujoe/p/14007036.html
Copyright © 2020-2023  润新知