vue 停车场车牌号键盘微信支付(改版)

因项目需求改动整个停车缴费已大改,整个布局修改了一下,现支持微信支付,整个逻辑处理基于后台接口

 

 

 

 

<template>
  <div id="dispense" navbar-fixed style="width:100%;">
      <van-dialog
  v-model="show"
  show-cancel-button
   @confirm="confirm"
   :before-close="beforeClose"
>
<p class="toastti">请输入该车牌绑定的手机号码</p>
  <van-field
    v-model="username"
    ref="tellphone"
    clearable
    placeholder="请输入手机号码"
  />
</van-dialog>
    <div class="content-car-number">
      <div class="car-content-title">
        <span class="titlespan">请输入车牌号查询停车费</span>
      </div>
      <div class="content-section">
        <div class="content-section-flex flex-card">
          <div class="content-section-flex flex-card-border">
            <button id="font" class="flex-btn" @click="btnClickYue" v-bind:class="{isClick: isYue }">
              {{areaName}}
            </button>
            <span class="blank-border blank-border-first"></span>
            <button id='letter' class="flex-btn" @click="btnClickA" v-bind:class="{isClick: isA}">
              {{areaLetter}}
            </button>
            <span class="blank-border blank-border-first"></span>
            <div class="flex-btns">
              <button id='numOne' @click="btnClickNum('one')" v-bind:class="{isNumClick: isNumOne }">{{numOne}}</button>
              <span class="blank-border"></span>
              <button id='numTwo' @click="btnClickNum('two')" v-bind:class="{isNumClick: isNumTwo }">{{numTwo}}</button>
              <span class="blank-border"></span>
              <button id='numThree' @click="btnClickNum('three')" v-bind:class="{isNumClick: isNumThree }">{{numThree}}
              </button>
              <span class="blank-border"></span>
              <button id='numFour' @click="btnClickNum('four')" v-bind:class="{isNumClick: isNumFour }">{{numFour}}
              </button>
              <span class="blank-border"></span>
              <button id='numFive' @click="btnClickNum('five')" v-bind:class="{isNumClick: isNumFive }">{{numFive}}
              </button>
              <span class="blank-border" v-if="checkbox"></span>
              <button v-if="checkbox" id='numSix' @click="btnClickNum('six')"
                      v-bind:class="{isNumClick: isNumSix }">{{numSix}}
              </button>
              <!-- <span class="blank-border"></span> -->
            </div>
          </div>
        </div>
      </div>
      <div class="flex-btns latbens">
                <van-checkbox v-model="checkbox" @change="carTypeChange">
                    新能源
                </van-checkbox>
            </div>
    </div>
    <div class="paymentcontent" v-if="statesh===false">
        <div class="notats">
          <img src="./../../assets/nocard.png" alt="">
          <p v-bind:class="{ active: isActive }">{{msg}}</p>
        </div>
    </div>
    <div  v-else-if="statesh===true">
        <div class="paymentcontent">
            <div >
              <p>停车详情</p>
              <van-cell-group>
                  <van-cell title="停车场:" v-model="parkingName" />
                  <van-cell title="停车时长:" v-model="timeDifferences" />
                  <van-cell title="驾入时间:" v-model="entranceTime" />
                  <van-cell title="停车费:" v-model="remainingFee"/>
              </van-cell-group>
            </div>
        </div>
        <div class="surepay">
            <p>还需支付<span class="paynum">¥{{remainingFee}}</span></p>
        </div>
        <div class="searchPay-btn">
            <van-button type="primary" @click="addCar" class="paybtn">支付</van-button>
        </div>
    </div>
    
    <div class="keyboard" v-if="keyboardShow" :class='{animationDown:isDown,animationUp:isUp}'>
      <button class="btn-complete" @click="completeClick"><span>完成</span></button>
      <div v-if="keyboard == 'txt'">
        <div class="keyboard-row" v-for="(item,rows) in carTxt">
          <button class="keyboard-row-item" v-for="(i,index) in item.name" @click="btnWordClick(rows,index,i)">{{i}}
          </button>
        </div>
        <div class="keyboard-row">
          <button class="keyboard-row-item bottom" @click="btnBottomClick('鲁')">鲁</button>
          <button v-for="j in noneBottom" class="none-botton">{{j}}</button>
          <div class="keyboard-row-item clear" @click="clearClick">
               <img src="../../assets/icon_input_delete.png" alt="删除">
          </div>
        </div>
      </div>
      <div v-if="keyboard == 'num'">
        <div class="keyboard-row keybyn" v-for="(item,rows) in carNum">
          <button :disabled="!isSelectl?isDisable && i<10 :isDisable&& rows!=0 " class="keyboard-row-item"
                  v-for="(i,index) in item.name" @click="btnWordClick(rows,index,i)">{{i}}
          </button>
        </div>
        <div class="keyboard-row keynts">
          <button :disabled="isSelectl" v-for="item in carNumBottom" class="keyboard-row-item bottom"
                  @click="btnBottomNumClick(item)">{{item}}
          </button>
          <div class="keyboard-row-item clear" @click="clearClick">
               <img src="../../assets/icon_input_delete.png" alt="删除">
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>

import { NavBar,Toast,Dialog,Icon } from 'vant';
    export default{
        name: 'Dispense',
        data () {
            return {
                isActive:false,
                msg:"暂无停车缴费信息",
                externalOrderId:"",
                verificationInfo:"",
                payTime:"",
                payment:"",
                orderId:"",
                token:"",
                appId:"",
                timeStamp:"",
                nonceStr:"",
                packages:"",
                signType:"",
                paySign:"",
                mobilePhone:"",
                remainingFee:"",
                plateNumber:"",//完整车牌号
                outTradeNo:"",//商户订单号
                cardnum:"",//输入的车牌号
                statesh:false,
                parkingName:"",//停车场地名字
                timeDifferences:"",//停车时间
                entranceTime:"",//进场时间
                parkingFee:"",//总停车费
                openid:"",
                show: false,
                username: '',
                password: '',
                numlist:true,
                carNum:"",
                isFeeHourClick: false,
                checkbox: false,
                isDown: false,
                isUp: false,
                selected: null,
                isSelectx: false,
                isSelectl: false,
                key: 1,
                areaName:'渝',
                areaLetter: '',
                numOne: '',
                numTwo: '',
                numThree: '',
                numFour: '',
                numFive: '',
                numSix: '',
                isYue: false,
                keyboardShow: false,
                keyboard: false,
                isA: false,
                isNumOne: false,
                isNumTwo: false,
                isNumThree: false,
                isNumFour: false,
                isNumFive: false,
                isNumSix: false,
                isDisable: false,
                isOne: false,
                isTwo: false,
                isThree: false,
                isFour: false,
                isFive: false,
                isSix: false,
                isSeven: false,
                isEight: false,
                isOther: false,
                typechagel:false,
                carTxt: [
                    { name: ['渝', '京', '泸','鄂', '湘', '川', '粤','闽','晋', '黑'] },
                    { name: [ '津','浙', '豫', '赣', '贵','青', '琼','宁','吉', '蒙'] },
                    { name: [ '翼', '苏', '皖','桂','云', '陕','甘' ,'藏','新','辽'] }
                ],
                carNumBottom: ['Z', 'X', 'C', 'V', 'B', 'N', 'M', '学'],
                noneBottom: ['','','','','','','',''],
                noneBottomtxt: ['', ''],
                carNum: [
                    { name: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'] },
                    { name: ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'O', 'P','澳'] },
                    { name: ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L','港'] },
                ],
                addedCarNum: '',
                carnump:""
            }
        },
        watch: {
            checkbox: function (val) {
                this.typechagel=val;
                this.isNumOne = false
                this.isNumTwo = false
                this.isNumThree = false
                this.isNumFour = false
                this.isNumFive = false
                this.isNumSix = false
                 this.numSix = ''
                const vm = this
                if (!val) { // 切换到普通车牌
                    if (vm.numFour) {
                        vm.isNumFive = true
                        vm.key = 7
                    }
                } else { // 切换到新能源车牌
                    if (vm.numFive) {
                        vm.isNumSix = true
                        vm.key = 8
                    }
                }
            }
        }, 
        mounted () {
            this.openid=this.getParam("openid");
            this.btnClickYue();
        },
        methods: {
            // *
             mul:function(a, b) {//主体
                var c = 0,
                d = a.toString(),
                e = b.toString();
                try {
                c += d.split(".")[1].length;
                } catch (f) { }
                try {
                c += e.split(".")[1].length;
                } catch (f) { }
                return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
            },
          timeDifference:function(olddata,newdata){
                var date3 = new Date(newdata).getTime() - new Date(olddata).getTime();   //时间差的毫秒数      
                //计算出相差天数
                var days=Math.floor(date3/(24*3600*1000))
                //计算出小时数
                var leave1=date3%(24*3600*1000)    //计算天数后剩余的毫秒数
                var hours=Math.floor(leave1/(3600*1000))
                //计算相差分钟数
                var leave2=leave1%(3600*1000)        //计算小时数后剩余的毫秒数
                var minutes=Math.floor(leave2/(60*1000))
                //计算相差秒数
                var leave3=leave2%(60*1000)      //计算分钟数后剩余的毫秒数
                var seconds=Math.round(leave3/1000)
                if(days==0){
                  return hours+"时"+minutes+"分"+seconds+"秒"
                }else{
                  return days+"天"+hours+"时"+minutes+"分"+seconds+"秒"
                }
          },
          callpay:function(){
              if (typeof WeixinJSBridge == "undefined"){
                  if( document.addEventListener ){
                      document.addEventListener('WeixinJSBridgeReady', this.jsApiCall, false);
                  }else if (document.attachEvent){
                      document.attachEvent('WeixinJSBridgeReady', this.jsApiCall); 
                      document.attachEvent('onWeixinJSBridgeReady', this.jsApiCall);
                  }
              }else{
                  this.jsApiCall();
              }
          },
          query_order_pay_info:function(){
                this.axios.get('接口地址',{params:{}})
                                    .then((response)=> {
                                        let datapayinfo=response.data.body;
                                        if(datapayinfo.tradeState==0){
                                            this.payTime=datapayinfo.payTime;
                                             
                                                this.axios.post('',params)
                                                .then( (response)=> {
                                                    if(response.data.code=="0"){
                                                         this.queryFeeByPhone(true);
                                                    }
                                                })
                                                .catch(function (error) {
                                                    console.log(error);
                                                })
                                        }else if(datapayinfo.tradeState==1){
                                            Toast('进行中');
                                        }else if(datapayinfo.tradeState==2){
                                            Toast('未开始');
                                        }else if(datapayinfo.tradeState==3){
                                            Toast('失败');
                                        }
                                    })
                                    .catch(function (error) {
                                        console.log(error);
                                    })
          },
          jsApiCall:function(){
              var thisl=this;
                  WeixinJSBridge.invoke(
                        'getBrandWCPayRequest',
                        {
                      "appId": this.appId,
                      "timeStamp": this.timeStamp,
                      "nonceStr": this.nonceStr,
                      "package": this.packages,
                      "signType": this.signType,
                      "paySign": this.paySign
                    },
                        function(res){
                          WeixinJSBridge.log(res.err_msg);
                            if (res.err_msg == "get_brand_wcpay_request:ok") {
                                //支付成功
                                thisl.query_order_pay_info();
                            }else if (res.err_msg === 'get_brand_wcpay_request:cancel') {
                               thisl.statesh=true;
                            } else {
                                thisl.statesh=false;
                                Toast("支付失败!");
                            }
                        }
                    );
          },
          createprepaidinfo:function(){
            //创建预支付订单
            var params = new URLSearchParams();
            
            this.axios.post('',params)
            .then( (response)=> {
                var data=response.data.body;
                this.appId=data.appId;
                this.outTradeNo=data.outTradeNo;
                this.timeStamp=data.timeStamp;
                this.nonceStr=data.nonceStr;
                this.packages=data.packages;
                this.signType=data.signType;
                this.paySign=data.paySign;
            })
            .catch(function (error) {
                console.log(error);
            })
          },
          adddateist:function(response,flg){
                Toast.clear();
                  if(response.data.code=="0"){
                    this.statesh=true;
                    this.remainingFee=response.data.body.orderInfo[0].remainingFee;
                    this.mobilePhone=response.data.body.mobilePhone;
                    this.verificationInfo=response.data.body.orderInfo[0].verificationInfo;
                    this.payment=response.data.body.orderInfo[0].parkingFee;
                    this.orderId=response.data.body.orderInfo[0].orderId;
                    this.token=response.data.body.orderInfo[0].token;
                    this.parkingName=response.data.body.orderInfo[0].parkingName;
                    let entranceTime=response.data.body.orderInfo[0].entranceTime.replace(/-/g, "/");
                    let exitTime=response.data.body.orderInfo[0].exitTime.replace(/-/g, "/");
                    this.timeDifferences=this.timeDifference(entranceTime,exitTime);
                    this.entranceTime=response.data.body.orderInfo[0].entranceTime;
                    this.parkingFee=response.data.body.orderInfo[0].parkingFee;
                    if(this.remainingFee!=""&&this.remainingFee>0){
                        this.createprepaidinfo();
                    }
                  }else if(response.data.code=="20802"){//该车辆已被他人绑定->手机号窗口
                    this.statesh=false;
                    if(flg==true){
                        this.show=true;
                    }
                  }else if(response.data.code=="20904"){//用户未绑定该查费车牌->无结果
                     Toast(response.data.message);
                     this.statesh=false;
                  }else if(response.data.code=="90001"){//未查询到该车的停车费用,请手动缴费!->无结果
                     Toast(response.data.message);
                     this.statesh=false;
                  }else if(response.data.code=="20901"){//未查询到该车的停车费用,请手动缴费!->无结果
                     Toast(response.data.message);
                     this.statesh=false;
                  }else if(response.data.code=="20909"){//未查询到该车的停车费用,请手动缴费!->无结果
                     Toast(response.data.message);
                     this.statesh=false;
                  }else if(response.data.code=="20904"){//未查询到该车的停车费用,请手动缴费!->无结果
                     Toast(response.data.message);
                     this.statesh=false;
                  }else{
                      Toast(response.data.message);
                     this.statesh=false;
                  }
          },
          queryFee:function(num,flg){
            Toast.loading({
              mask: true,
              message: '查询中...'
            });
            this.plateNumber=num;
            //查询停车费用
            this.axios.get('',{params:{"plateNumber":num}})
              .then((response)=>{
                  this.adddateist(response,flg);
              })
              .catch(function (error) {
                  console.log(error);
              })
          },
          getParam:function(name){
              var search = document.location.search;
              var pattern = new RegExp("[?&]"+name+"\=([^&]+)", "g");
              var matcher = pattern.exec(search);
              var items = null;
              if(null != matcher){
                  try{
                      items = decodeURIComponent(decodeURIComponent(matcher[1]));
                  }catch(e){
                      try{
                          items = decodeURIComponent(matcher[1]);
                      }catch(e){
                          items = matcher[1];
                      }
                  }
              }
              return items;
            },
            beforeClose(action, done) {
                var keyNumlength=this.username.length;
                var tell=/^1[0|3|4|5|7|8][0-9]\d{8}$/;
                if (action === 'confirm') {
                    if(keyNumlength>11||keyNumlength<11){
                        Toast('请输入正确的手机号!');
                        done(false);
                    }else if(keyNumlength==11&&tell.test(this.username)){
                       done();
                    }
                } else  if (action === 'cancel'){
                    done();
                }
            },
            queryFeeByPhone(flg){
                    this.axios.get('',{})
                        .then((response)=>{
                            if(flg==true){
                                if(response.data.code=="20904"){
                                        this.statesh=false;
                                        this.isActive=true;
                                        Toast('支付已完成,请尽快离场!');
                                        this.msg="支付已完成,请尽快离场!"
                                }else if(response.data.code=="20901"){
                                        this.statesh=false;
                                        this.isActive=true;
                                        Toast('支付已完成,请尽快离场!');
                                        this.msg="支付已完成,请尽快离场!"
                                }else if(response.data.body.orderInfo[0].remainingFee==0){
                                        this.statesh=false;
                                        this.isActive=true;
                                        Toast('支付已完成,请尽快离场!');
                                        this.msg="支付已完成,请尽快离场!"
                                }else{
                                    this.adddateist(response);
                                }
                            }else{
                                this.adddateist(response);
                                this.queryFee(this.cardnum,false);
                                this.username="";
                            }
                        })
                        .catch(function (error) {
                            console.log(error);
                        })
            },
            confirm:function(value){
                this.queryFeeByPhone();
            },
            carnumclick(carnum){
                var numlist=carnum.split("");
                for(var i=0; i<numlist.length;i++){
                    this.areaName=numlist[0];
                    this.areaLetter=numlist[1];
                    this.numOne=numlist[2];
                    this.numTwo=numlist[3];
                    this.numThree=numlist[4];
                    this.numFour=numlist[5];
                    this.numFive=numlist[6];
                    this.numSix=numlist[7];
                }
            },
            feeHourClick (val) {
                if (this.areaName && this.areaLetter && this.numOne && this.numTwo && this.numThree && this.numFour && this.numFive) {
                    if (this.checkbox && this.numSix) {
                        this.isFeeHourClick = true
                    } else if (!this.checkbox) {
                        this.isFeeHourClick = true
                    }
                }
                this.keyboardShow = false
                if (val === 'one') {
                    this.isOne = true
                    this.isTwo = false
                    this.isThree = false
                    this.isFour = false
                    this.isFive = false
                    this.isSix = false
                    this.isSeven = false
                    this.isEight = false
                    this.isOther = false
                } else if (val === 'two') {
                    this.isTwo = true
                    this.isOne = false
                    this.isThree = false
                    this.isFour = false
                    this.isFive = false
                    this.isSix = false
                    this.isSeven = false
                    this.isEight = false
                    this.isOther = false
                } else if (val === 'three') {
                    this.isThree = true
                    this.isTwo = false
                    this.isOne = false
                    this.isFour = false
                    this.isFive = false
                    this.isSix = false
                    this.isSeven = false
                    this.isEight = false
                    this.isOther = false
                } else if (val === 'four') {
                    this.isFour = true
                    this.isTwo = false
                    this.isThree = false
                    this.isOne = false
                    this.isFive = false
                    this.isSix = false
                    this.isSeven = false
                    this.isEight = false
                    this.isOther = false
                } else if (val === 'five') {
                    this.isFive = true
                    this.isTwo = false
                    this.isThree = false
                    this.isFour = false
                    this.isOne = false
                    this.isSix = false
                    this.isSeven = false
                    this.isEight = false
                    this.isOther = false
                } else if (val === 'six') {
                    this.isSix = true
                    this.isTwo = false
                    this.isThree = false
                    this.isFour = false
                    this.isFive = false
                    this.isOne = false
                    this.isSeven = false
                    this.isEight = false
                    this.isOther = false
                } else if (val === 'seven') {
                    this.isSeven = true
                    this.isTwo = false
                    this.isThree = false
                    this.isFour = false
                    this.isFive = false
                    this.isSix = false
                    this.isOne = false
                    this.isEight = false
                    this.isOther = false
                } else if (val === 'eight') {
                    this.isEight = true
                    this.isTwo = false
                    this.isThree = false
                    this.isFour = false
                    this.isFive = false
                    this.isSix = false
                    this.isSeven = false
                    this.isOne = false
                    this.isOther = false
                } else if (val === 'other') {
                    this.isOther = true
                    this.isTwo = false
                    this.isThree = false
                    this.isFour = false
                    this.isFive = false
                    this.isSix = false
                    this.isSeven = false
                    this.isEight = false
                    this.isOne = false
                }
            },
            carTypeChange (val) {
                this.isNumOne = false
                this.isNumTwo = false
                this.isNumThree = false
                this.isNumFour = false
                this.isNumFive = false
                this.isNumSix = false
                if (!val) { // 切换到普通车牌
                    if (this.numFour) {
                        this.isNumFive = true
                        this.key = 7
                    }
                } else { // 切换到新能源车牌
                    if (this.numFive) {
                        this.isNumSix = true
                        this.key = 8
                    }
                }
            },
            btnClickYue () {
                this.isYue = true
                this.isA = false
                this.isUp = true
                this.isNumOne = false
                this.isNumTwo = false
                this.isNumThree = false
                this.isNumFour = false
                this.isNumFive = false
                this.isNumSix = false
                this.keyboardShow = true
                this.keyboard = 'txt'
                this.key = 1
            },
            btnWordClick (rows, index, i) {
                console.log(index);
                console.log(i);
                var num = this.areaName + this.areaLetter + this.numOne + this.numTwo + this.numThree + this.numFour + this.numFive + this.numSix+i;
                console.log(num);
                console.log(num.length);
                this.cardnum=num;
                console.log(this.cardnum);
                this.selected = i;
                if(this.typechagel==true){
                    if(num.length==8){
                        this.keyboardShow = false;
                        this.queryFee(num,true);
                    }
                }else{
                    if(num.length>=7){
                        this.keyboardShow = false;
                        // this.queryFee(num,true);
                         setTimeout(()=>{
                            this.completeClick();
                        },100)
                    }
                }
                
                if (this.key === 1) {
                    if (this.areaName === '临') {
                        this.areaLetter = ''
                        this.numOne = ''
                        this.numTwo = ''
                        this.numThree = ''
                        this.numFour = ''
                        this.numFive = ''
                        this.numSix = ''
                    }
                    this.areaName = i
                    this.isSelectl = false
                    document.getElementById('letter').click()
                } else if (this.key === 2) {
                    this.areaLetter = i
                    document.getElementById('numOne').click()
                } else if (this.key === 3) {
                    this.numOne = i
                    document.getElementById('numTwo').click()
                } else if (this.key === 4) {
                    this.numTwo = i
                    document.getElementById('numThree').click()
                } else if (this.key === 5) {
                    this.numThree = i
                    document.getElementById('numFour').click()
                } else if (this.key === 6) {
                    this.numFour = i
                    document.getElementById('numFive').click()
                } else if (this.key === 7) {
                    this.numFive = i
                    if (this.checkbox) {
                        document.getElementById('numSix').click()
                    }
                } else if (this.key === 8) {
                    this.numSix = i
                }
                if (this.key === 7 || this.key === 8) {
                    this.carNumBottom = ['Z', 'X', 'C', 'V', 'B', 'N', 'M', '学']
                } else if (this.key === 3 || this.key === 4 || this.key === 5 || this.key === 6) {
                    this.carNumBottom = ['Z', 'X', 'C', 'V', 'B', 'N', 'M', '学']
                }
            },
            btnBottomClick (val) {
                if (val === '新') {
                    if (this.areaName === '临') {
                        this.areaLetter = ''
                        this.numOne = ''
                        this.numTwo = ''
                        this.numThree = ''
                        this.numFour = ''
                        this.numFive = ''
                        this.numSix = ''
                    }
                    this.areaName = '新'
                    this.isSelectx = true
                    this.isSelectl = false
                    document.getElementById('letter').click()
                } else if (val === '使') {
                    this.areaName = '使'
                    this.areaLetter = ''
                    this.numOne = ''
                    this.numTwo = ''
                    this.numThree = ''
                    this.numFour = ''
                    this.numFive = ''
                    this.numSix = ''
                    document.getElementById('letter').click('isLin')
                }else if (val === '民') {
                    this.areaName = '民'
                    this.isSelectl = true
                    this.isSelectx = false
                    this.isDisable = true
                    this.areaLetter = '航'
                    this.numOne = ''
                    this.numTwo = ''
                    this.numThree = ''
                    this.numFour = ''
                    this.numFive = ''
                    this.numSix = ''
                    document.getElementById('letter').click('isLin')
                }
            },
            btnBottomNumClick (i) {
                this.selected = i
                if (this.key === 2) {
                    this.areaLetter = i
                    document.getElementById('numOne').click()
                } else if (this.key === 3) {
                    this.numOne = i
                    document.getElementById('numTwo').click()
                } else if (this.key === 4) {
                    this.numTwo = i
                    document.getElementById('numThree').click()
                } else if (this.key === 5) {
                    this.numThree = i
                    document.getElementById('numFour').click()
                } else if (this.key === 6) {
                    this.numFour = i
                    document.getElementById('numFive').click()
                } else if (this.key === 7) {
                    this.numFive = i
                    if (this.checkbox) {
                        document.getElementById('numSix').click()
                    }
                } else if (this.key === 8) {
                    this.numSix = i
                }
            },
            btnClickA () {
                this.isDisable = true
                this.isA = true
                this.isYue = false
                this.isUp = true
                this.isNumOne = false
                this.isNumTwo = false
                this.isNumThree = false
                this.isNumFour = false
                this.isNumFive = false
                this.isNumSix = false
                this.keyboardShow = true
                this.keyboard = 'num'
                this.key = 2
            },
            btnClickNum (name) {
                if (this.isSelectl) {
                    this.isDisable = true
                } else {
                    this.isDisable = false
                }
                this.keyboard = 'num'
                this.keyboardShow = true
                this.isYue = false
                this.isA = false
                this.isNumOne = false
                this.isNumTwo = false
                this.isNumThree = false
                this.isNumFour = false
                this.isNumFive = false
                this.isNumSix = false
                this.isUp = true
                if (name === 'one') {
                    this.isNumOne = true
                    this.key = 3
                } else if (name === 'two') {
                    this.isNumTwo = true
                    this.key = 4
                } else if (name === 'three') {
                    this.isNumThree = true
                    this.key = 5
                } else if (name === 'four') {
                    this.isNumFour = true
                    this.key = 6
                } else if (name === 'five') {
                    this.isNumFive = true
                    this.key = 7
                } else if (name === 'six') {
                    this.isNumSix = true
                    this.key = 8
                }
                if (name === 'five' || name === 'six') {
                    this.carNumBottom = ['Z', 'X', 'C', 'V', 'B', 'N', 'M', '学']
                } else {
                    this.carNumBottom = ['Z', 'X', 'C', 'V', 'B', 'N', 'M', '学']
                }
            },
            completeClick () {
                this.isYue = false
                this.isA = false
                this.isNumOne = false
                this.isNumTwo = false
                this.isNumThree = false
                this.isNumFour = false
                this.isNumFive = false
                this.isNumSix = false
                this.isUp = false
                this.isDown = true
                this.keyboardShow = false

                var num
                if (!this.checkbox) {
                    num = this.areaName + this.areaLetter + this.numOne + this.numTwo + this.numThree + this.numFour + this.numFive
                } else if (this.checkbox) {
                    num = this.areaName + this.areaLetter + this.numOne + this.numTwo + this.numThree + this.numFour + this.numFive + this.numSix
                }
                if (num === '') {
                    Toast('请输入车牌');
                } else if (!this.checkbox && (this.areaName === '' || this.areaLetter === '' || this.numOne === '' || this.numTwo === '' || this.numThree === '' || this.numFour === '' || this.numFive === '')) {
                    Toast('请输入完整车牌');
                } else if (this.checkbox && (this.areaName === '' || this.areaLetter === '' || this.numOne === '' || this.numTwo === '' || this.numThree === '' || this.numFour === '' || this.numFive === '' || this.numSix === '')) {
                    Toast('请输入完整车牌');
                } else {
                    this.queryFee(num,true);
                    this.cardnum=num;
                }
            },
            clearClick () {
                if (this.key === 1) {
                    this.areaName = ''
                } else if (this.key === 2) {
                    document.getElementById('font').click()
                    this.areaLetter = ''
                } else if (this.key === 3) {
                    document.getElementById('letter').click()
                    this.numOne = ''
                } else if (this.key === 4) {
                    document.getElementById('numOne').click()
                    this.numTwo = ''
                } else if (this.key === 5) {
                    document.getElementById('numTwo').click()
                    this.numThree = ''
                } else if (this.key === 6) {
                    document.getElementById('numThree').click()
                    this.numFour = ''
                } else if (this.key === 7) {
                    document.getElementById('numFour').click()
                    this.numFive = ''
                } else if (this.key === 8) {
                    document.getElementById('numFive').click()
                    this.numSix = ''
                }
            },
            addCar () {
                var num
                if (!this.checkbox) {
                    num = this.areaName + this.areaLetter + this.numOne + this.numTwo + this.numThree + this.numFour + this.numFive
                } else if (this.checkbox) {
                    num = this.areaName + this.areaLetter + this.numOne + this.numTwo + this.numThree + this.numFour + this.numFive + this.numSix
                }
                if (num === '') {
                    Toast('请输入车牌');
                } else if (!this.checkbox && (this.areaName === '' || this.areaLetter === '' || this.numOne === '' || this.numTwo === '' || this.numThree === '' || this.numFour === '' || this.numFive === '')) {
                    Toast('请输入完整车牌');
                } else if (this.checkbox && (this.areaName === '' || this.areaLetter === '' || this.numOne === '' || this.numTwo === '' || this.numThree === '' || this.numFour === '' || this.numFive === '' || this.numSix === '')) {
                    Toast('请输入完整车牌');
                } else {
                    this.callpay();
                }
            }
        },
       
        beforeRouteEnter (to, from, next) {
            next(vm => {
                vm.areaName = '渝'
                vm.areaLetter = ''
                vm.numOne = ''
                vm.numTwo = ''
                vm.numThree = ''
                vm.numFour = ''
                vm.numFive = ''
                vm.numSix = ''
            })
        }
    }
</script>

<style rel="stylesheet/scss" lang="scss">
@media (max-width: 360px){

}
@media (max-width: 480px){
    
}
.van-field__control {
    border: 1px solid #f5f5f5;
    margin: 0;
    padding: 7px;
    width: 100%;
    resize: none;
    display: block;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    background-color: transparent;
    
}
.van-dialog,.van-cell{
        background: rgba(252,252,252,0.8);
}
.van-cell__value--alone{
        margin-bottom: 10px;
    background: #fff;
}
.latbens{
        margin-left: 6px;
    background: #f9fafb !important;
}
.van-checkbox{
        float: right;
    padding-right: 6px;
    font-size: 12px;
}
.keybyn,.keynts{
}
.keybyn:nth-child(4){
        margin-left: 20px;
    margin-right: 20px;
}
.toastti{
    font-family: PingFangSC-Regular;
    font-size: 14px;
    color: #646464;
    letter-spacing: -0.68px;
    text-align: center;
    padding: 16px 0;
    background: rgba(252,252,252,0.80);
}
.van-checkbox__icon, .van-checkbox__label{
    line-height: 15px;
}
.van-checkbox__label{
  margin-left:2px !important;
  color: #999;
}
.ze-checkbox-text{
    font-size:13px;
        padding-right: 10px;
}
.ze-checkbox{
        float: right;
}
.van-cell{
        padding: 5px 15px;
}
.surepay{
    font-family: PingFangSC-Regular;
font-size: 14px;
color: #8C8C8C;
letter-spacing: -0.34px;
    text-align: center;
    margin: 4px 0;
}
.paynum{
    font-family: PingFangSC-Regular;
font-size: 28px;
color: #EA2929;
letter-spacing: -0.7px;
    padding-left: 10px;
}
.van-checkbox__icon .van-icon {
    width: 11px !important;
    height: 11px !important;
    position: relative;
    top: 6px;
}
.van-icon-success::before {
    position: relative;
    top: -6px;
}
.paybtn{
         height: 40px;
    line-height: 37px;
    background: #0290FF;
    border: 1px solid #0290FF;
    width: 100%;
    float: right;
}
.titlespan{
    font-family: PingFangSC-Regular;
font-size: 14px;
color: #8C8C8C;
letter-spacing: -0.34px;
}
.active{
    color:#f00 !important;
        opacity: 1 !important;
    font-size: 15px !important;
}
.paymentcontent{
        margin-top: 15px;
    margin: 5px 10px 16px 16px;
    border: 1px solid #E8E8E8;
    color: #4386BF !important;
    background: #fff;
}
.paymentcontent p{
        opacity: 0.28;
    font-family: PingFangSC-Regular;
    font-size: 13px;
    color: #121212;
    letter-spacing: -0.2px;
    text-align: center;
    padding: 8px;
    background: #fff;
}
.van-cell{
    color: #4386BF !important;
}
.notats{
      text-align: center;
    margin: 40px;
}
  #dispense {
    .navbar {
      .right{
        a{
          font-size: 30px;
          color: #ffc200;
        }
      }
    }
    .ze-checkbox > input[type=checkbox] {
      position: absolute;
      left: -9999em;
    }
    .yuxradis{
        width: 5px;
        height: 5px;
        background: #ccc;
        border-radius: 50%;
        display: inline-block;
        position: relative;
        top: -2px;
        margin-right: 5px;
    }
    .ze-checkbox > input[type=checkbox]:checked + .ze-checkbox-icon {
      background-color: currentColor;
      border-color: #ffC400;
    }
    .paytext img{
        width: 25px;
        padding: 10px 4px;
    }
    .paytext{
            display: flex;
        width: 100%;
        font-size: 13px;
        text-align: left;
        border-top: 1px solid #E8E8E8;
            padding-top: 10px;
    }
    .addresstexy{
        opacity: 0.8;
        font-family: PingFangSC-Regular;
        font-size: 12px;
        color: #909191;
        line-height: 20px;
    }
    .xqstop{
            font-family: PingFangSC-Regular;
    font-size: 16px;
    color: #212223;
    }
    .paytonst ul li{
        float: left;
        line-height: 30px;
        padding-left: 10px;
        color: #346df1;
    }
    .paytonst{
        padding: 5px 10px;
        position: absolute;
        top: 50px;
        z-index: 99999;
        border: 1px solid #ccc;
        left: 0;
        font-size: 13px;
        width: 220px;
        background: #fff;
        box-shadow: 0 6px 10px 0 rgba(0,0,0,0.14), 0 1px 18px 0 rgba(0,0,0,0.12), 0 3px 5px -1px rgba(0,0,0,0.20);
    }
    .paytonst:after{
        content:"";
         width:0;
        height:0;
        border-width:0 10px 10px;
        border-style:solid;
        border-color:transparent transparent #fff;/*透明 透明  灰*/
        position: absolute;
        top: -5px;
        left: 10px;
    }
    .ze-checkbox-icon {
      border: 1px solid #ccc; /*no*/
      border-radius: 2px;
      display: inline-block;
      position: relative;
      z-index: 10;
      vertical-align: bottom;
      pointer-events: none;
      > i {
        content: "";
        position: absolute;
        top: 45%;
        left: 50%;
        border: 3px solid #ffC400; /*no*/
        border-top: 0;
        border-left: 0;
        -webkit-transform: translate(-50%, -50%) rotate(45deg) scale(0);
        transform: translate(-50%, -50%) rotate(45deg) scale(0);
      }
    }

    .ze-checkbox > input[type=checkbox]:checked + .ze-checkbox-icon > i {
      -webkit-transform: translate(-50%, -50%) rotate(45deg) scale(1);
      transform: translate(-50%, -50%) rotate(45deg) scale(1);
      -webkit-transition: all .2s ease-in-out;
      transition: all .2s ease-in-out;
    }
    .van-checkbox__icon--round img{
        width: 25px;
    }
    .content-car-number {
        text-align: center;
        height:110px;
      .car-content-title {
        display: block;
        justify-content: space-between;
        padding: 0 32px;
        margin-bottom: 10px;
        span {
          font-size: 15px;
        }
        .ze-checkbox {
          display: flex;
          align-items: center;
        }
        .ze-radio-text {
          font-size: 13px;
        }
        .ze-checkbox-icon {
          color: #FFEDB1 !important;
          margin-right: 8px;
        }
      }
      .content-section {
        .content-section-flex {
          display: flex;
          justify-content: center;
          align-items: center;
          font-size: 20px;
          margin-bottom: 5px;
          .blank-border {
                height: 34px;
                width: 1px;
                border-right: 1px solid #E8E8E8;
                float: left;
                margin-left: 0px;
                z-index: 1;
                margin-top: 3px;
            &.blank-border-first {
              margin-top: 3px;
              position: relative;
                top: -3px;
            }
          }
          &.flex-card {
            color: #000;
            .flex-btn {
              width: 35px;
              height: 40px;
              border: none;
              text-align: center;
              background: #fff;
              font-size: 20px;
              color: #000;
    border-radius: 10px;
            }
            .flex-btns {
              text-align: center;
              background: #fff;
              width: fit-content;
              position: relative;
              height: 40px;
              border-radius: 10px;
              button {
                width: 35px;
                height: 40px;
                border: none;
                font-size: 20px;
                color: #000;
                border-radius: 50%;
                background: transparent;
                float: left;
                margin-left: 0px;
                z-index: 2;
                position: relative;
                &:first-child {
                  margin-left: 0;
                }
              }
            }
            .flex-mid {
              margin: 0 0.1rem;
              span {
                display: block;
                width: 10px;
                height: 10px;
                border-radius: 50%;
                background: #ddd;
              }
            }
            .isClick {
              border: 1px solid #ffc200; /*no*/
              z-index: 50;
              border-radius: 0px;
            }
            .isNumClick {
              border-radius: 0px !important;
              border: 1px solid #ffc200 !important; /*no*/
              z-index: 10;
              background-color: #fff !important;
            }
          }
          .flex-card-border {
            border: 1px solid #ddd; /*no*/
            border-radius: 8px;
            background: #fff;
            position: relative;
          }
        }
      }
    }
    .fee-hours {
      padding: 0 32px;
      margin-bottom: 80px;
      .fee-hours-title {
        margin-bottom: 16px;
        font-size: 15px;
      }
      .fee-hours-content {
        display: flex;
        justify-content: space-between;
        margin-bottom: 32px;
        &.fee-hours-num {
          display: block;
        }
      }
      .fee-hours-num {
        width: 102px;
        height: 34px;
        font-size: 13px;
        background: #ececec;
        border-radius: 8px;
        text-align: center;
        line-height: 34px;
      }
      .isFeeHour {
        background: #ffeeb1;
      }
    }
    .searchPay-btn {
      text-align: center;
      /*background-color: #f6f6f6;*/
      margin: 0 32px 0;
      button {
        border-radius: 8px;
        margin-bottom:20px;
        &.searchPay-btn-click {
          box-shadow: 0px 5px 10px 0px rgba(255, 227, 135, 1);
          background: #ffc200;
          color: #101010;
        }
      }
    }
    .keyboard {
      width: 100%;
      height: 250px;
      position: fixed;
      bottom: -300px;
      background: #eeeeee;
      z-index: 10;
      &.animationDown {
        animation: slide_dowms 0.3s ease-out;
        animation-fill-mode: forwards;
      }
      &.animationUp {
        animation: slide_ups 0.3s ease-out;
        animation-fill-mode: forwards;
      }
      .btn-complete {
        height: 40px;
        text-align: right;
        color: #ffc200;
        font-size: 16px;
        width: 100%;
        background: #fff;
        border: none;
        border-top: 1px solid #eee;
        margin-bottom: 10px;
        span {
          margin-right: 15px;
        }
      }
      .keyboard-row {
        margin-top: 10px;
        display: flex;
        justify-content: space-between;
        padding: 0 8px;
        color: #333;
        &:first-child {
          margin-top: 5px;
        }
        .keyboard-row-items {
          display: flex;
          justify-content: left;
        }
        .keyboard-row-bottom {
          display: flex;
          justify-content: space-between;
        }
        .keyboard-row-item {
          width: 35px;
          height: 40px;
          background: #fff;
          font-size: 15px;
          text-align: center;
          border: 1px solid #ccc; /*no*/
          border-radius: 5px;
          color: #333;
          &.bottom {
            height: 35px;
            width: 68px;
            line-height: 35px;
            background: #fff;
            color: #333;
            /*margin-right: 0.08rem;*/
          }
          &.clear {
            width: 85px;
            height: 35px;
            display: flex;
            align-items: center;
            justify-content: center;
            img {
              width: 30px;
            }
          }
        }
        .none-botton {
          border: none;
          height: 40px;
          width: 66px;
          visibility: hidden;
        }
      }
      button {
        &:active {
          background: #f4f4f4 !important;
          color: #999 !important;
        }
      }
    }
    @keyframes slide_ups {
      from {
        bottom: -300px;
      }
      to {
        bottom: 0px;
      }
    }
    @keyframes slide_dowms {
      from {
        bottom: 0px;
      }
      to {
        bottom: -320px;
      }
    }
    button:disabled {
      background: #f4f4f4 !important;
      color: #8f8f8f !important;
    }
    .active {
      &:active {
        background: #f4f4f4 !important;
        color: #999 !important;
      }
    }
  }
</style>

各位有什么不懂的可以评论问问!写的不好的地方请指教!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值