<template>
|
<div class="weizhang-box">
|
<!--<div class="weizhang-header">-->
|
<!--<div class="iconfont leftjiantou"></div>-->
|
<!--<div class="text"><h1>峰峰矿区综合行政执法局</h1></div>-->
|
<!--<div class="right"></div>-->
|
<!--</div>-->
|
<div class="weizhang-main-box">
|
<div class="weizhang-main-top">
|
<img class="logoPhone" src="../../assets/images/logoImg.png" alt="">
|
<span class="weizhang">测试收费</span>
|
<span class="money">¥{{this.statisticData.price}}</span>
|
</div>
|
<div class="weizhang-main-bootom">
|
<div class="weizhang-main-form">
|
<el-form label-width="80px" :model="statisticData" label-position="left">
|
<el-form-item label="车牌号" style="margin-left: 25px;">
|
{{this.statisticData.carNo}}
|
</el-form-item>
|
<el-form-item label="进场时间" style="margin-left: 25px;">
|
{{this.statisticData.enterTime}}
|
</el-form-item>
|
<el-form-item label="出场时间" style="margin-left: 25px;">
|
{{this.statisticData.createTime}}
|
</el-form-item>
|
<el-form-item label="停留时间" style="margin-left: 25px;">
|
{{this.statisticData.timeStr}}
|
</el-form-item>
|
<el-form-item label="位置" style="margin-left: 25px;">
|
{{this.statisticData.parkName}}
|
</el-form-item>
|
<el-form-item label="订单号" style="margin-left: 25px;">
|
{{this.statisticData.code}}
|
<!--<el-input v-model="statisticData.code" readonly></el-input>-->
|
</el-form-item>
|
<el-form-item class="weizhang-footer-box" style="display: flex;justify-content: center;margin-top: 4.498vh" label-width="0" v-show="showFlag">
|
<el-button class="jiaofei-btn" type="primary" @click="pay()" :loading="payFlag">去缴费</el-button>
|
</el-form-item>
|
</el-form>
|
<!-- <el-form label-width="100px" label-position="left">-->
|
<!-- <el-form-item label="请输入手机号" style="margin-left: 5px;">-->
|
<!-- <el-input v-model="carNo" placeholder="请输入手机号"></el-input>-->
|
<!-- </el-form-item>-->
|
<!-- <el-form-item style="display: flex;justify-content: center;margin-top: 2px" label-width="0">-->
|
<!-- <el-button class="jiaofei-btn" type="primary" @click="noCarOut()" v-show="showFlag">无牌出场缴费</el-button>-->
|
<!-- </el-form-item>-->
|
<!-- </el-form>-->
|
|
</div>
|
|
</div>
|
</div>
|
<div class="dialog-box">
|
<el-dialog
|
title="支付"
|
:close-on-click-modal="false"
|
:visible.sync="dialogVisible"
|
width="100%">
|
<div class="dialog-main-box">
|
<div class="dialog-main-line">
|
<h1>合计费用</h1>
|
<h1>{{this.statisticData.price}}元</h1>
|
</div>
|
<div class="dialog-main-line">
|
<h1>停车时长</h1>
|
<h1>{{this.statisticData.timeStr}}</h1>
|
</div>
|
<div class="dialog-main-line-middle">
|
<h1>{{this.statisticData.price}}<font>元</font></h1>
|
</div>
|
<div class="wx-img-box">
|
<div class="wx-img-l">
|
<img src="../../assets/images/wxIcon.png" alt="">
|
<h1>微信支付</h1>
|
</div>
|
<div class="wx-img-r">
|
<img src="../../assets/images/duigouIcon.png" alt="">
|
</div>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button type="primary" @click="pay()" :loading="payNowFlag">立 即 支 付</el-button>
|
</span>
|
</el-dialog>
|
</div>
|
|
</div>
|
</template>
|
|
<script>
|
import wx from 'weixin-js-sdk'
|
export default {
|
name: 'dashboard',
|
data() {
|
return {
|
dialogVisible:false,
|
payFlag:false,
|
payNowFlag:false,
|
outParkId:"",
|
type:null,
|
statisticData:{
|
|
},
|
showFlag:true,
|
showFlag2:true,
|
status3:0,
|
carNo:"",
|
code2:"",
|
code:""
|
}
|
},
|
created(){
|
let ua = window.navigator.userAgent.toLowerCase();
|
//判断是不是微信
|
if (ua.match(/MicroMessenger/i) == "micromessenger") {
|
// 微信
|
this.type = 0
|
}
|
//判断是不是支付宝
|
if (ua.match(/AlipayClient/i) == "alipayclient") {
|
//支付宝
|
this.type = 1
|
}
|
if(this.type == null){
|
this.$message.error("请用微信或支付宝扫描二维码")
|
return;
|
}
|
|
var url = window.location.href;
|
var count = url.split('?').length-1;
|
if(count >1){
|
this.code = this.getCodeFromUrl(url)
|
this.code2 = this.getCode2FromUrl(url)
|
window.location.href = "http://hesuancj.cn/#/indexTest?code="+this.code+"&state=STATE&code2="+this.code2
|
}
|
var cs = url.split('?')[1];
|
var cs_arr = cs.split('&');
|
var cs={};
|
for(var i=0;i<cs_arr.length;i++){
|
cs[cs_arr[i].split('=')[0]] = cs_arr[i].split('=')[1]
|
}
|
//this.outParkId = cs.code;
|
this.code2 = cs.code2;
|
this.code = cs.code;
|
if(this.code2 == null || this.code2 == ''){
|
window.location.href = "http://hesuancj.cn/#/indexTest?code2="+this.code
|
}
|
if(this.code != null && this.code != '') {
|
this.dialogVisible = true
|
}else {
|
this.dialogVisible = false
|
}
|
this.$byutil.postData(this, this.$systemconfig.basePath + '/ffzf/outpark/findByBarrierCode', {code2:cs.code2}, res => {
|
this.statisticData = res.data;
|
this.outParkId = this.statisticData.id;
|
this.status3 = this.statisticData.status3;
|
this.oldCarNo = this.statisticData.carNo;
|
this.payFlag = false
|
if(this.status3==1){
|
this.$message({
|
message: '您有违章未处理,请先处理或联系停车场管理人员',
|
type: 'error',
|
duration:5000,
|
});
|
}
|
})
|
},
|
methods: {
|
pay(){
|
this.payFlag = true;
|
this.payNowFlag = true;
|
if(this.status3==1){
|
this.$message({
|
message: '您有违章未处理,请先处理或联系停车场管理人员',
|
type: 'error',
|
duration:3000,
|
});
|
return;
|
}
|
this.$byutil.postData(this, this.$systemconfig.basePath + '/ffzf/api/parkXT', {id:this.outParkId}, res => {
|
if(res.code === 0){
|
this.getCode()
|
this.showFlag = false
|
}
|
})
|
},
|
noCarOut(){
|
if(this.carNo){
|
this.$byutil.postData(this, this.$systemconfig.basePath + '/outPark/outPark2', {code2:this.code2,carNo:this.carNo}, res => {
|
if(res.success){
|
this.outParkId = res.data.id;
|
this.pay();
|
this.showFlag = false;
|
}else{
|
this.$message({
|
message: res.msg, type: 'error', duration:2000,
|
});
|
}
|
|
})
|
}else{
|
this.$message({
|
message: '请输入手机号',
|
type: 'error',
|
duration:2000,
|
});
|
}
|
|
},
|
GetQueryString(name) {
|
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
|
var r = window.location.search.substr(1).match(reg);
|
if (r != null) return unescape(r[2]); return null;
|
},
|
/**
|
* 解析微信redirect_uri地址中的code
|
*/
|
getCodeFromUrl (cur_url) {
|
let index = cur_url.split('?')[1]
|
let paramStr =index.split('&')[0];
|
let code =paramStr.split('=')[1];
|
return code
|
},
|
/**
|
* 解析微信redirect_uri地址中的code2
|
*/
|
getCode2FromUrl (cur_url) {
|
let index = cur_url.split('?')[2]
|
let code2 =index.split('=')[1];
|
return code2
|
},
|
|
getCode(){
|
if(this.type == 0 ){
|
//微信,获取code
|
if(this.code==null||this.code==""){
|
var url = encodeURIComponent("http://hesuancj.cn/#/indexTest?code2="+this.code2);
|
window.location.href ="https://open.weixin.qq.com/connect/oauth2/authorize?" +
|
"appid=wx46e756aed958f895&redirect_uri="+url+"&response_type=code" +
|
"&scope=snsapi_userinfo&state=STATE#wechat_redirect";
|
//"&scope=SCOPE&state=STATE#wechat_redirect";
|
}else{
|
this.$byutil.postData(this, this.$systemconfig.basePath + '/ffzf/api/getOpenId', {id:this.outParkId,code:this.code}, res => {
|
if(res.code === 0){
|
var param = res.data;
|
// 点击支付时候调用
|
if (typeof WeixinJSBridge === 'undefined') {
|
if (document.addEventListener) {
|
document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady(param), false)
|
} else if (document.attachEvent) {
|
document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady(param))
|
document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady(param))
|
}
|
} else {
|
this.onBridgeReady(param)
|
}
|
|
this.showFlag = false
|
}else {
|
alert('微信支付调起失败!')
|
}
|
})
|
}
|
}else if(this.type == 1){
|
//支付宝,不获取code
|
this.$byutil.postData(this, this.$systemconfig.basePath + '/ffzf/api/payByAli', {id:this.outParkId}, res => {
|
if(res.code != 0){
|
alert(res.data)
|
this.showFlag = false
|
}else {
|
this.$message({
|
message: '2秒后自动跳转到支付页面,防止内外网数据同步延迟,请稍等',
|
type: 'success',
|
duration:2000,
|
});
|
setTimeout(function(){window.location.href = res.msg;},2000);
|
this.showFlag = false;
|
}
|
})
|
|
}
|
},
|
onBridgeReady (params) {
|
const that = this
|
WeixinJSBridge.invoke(
|
'getBrandWCPayRequest',
|
{
|
appId: params.appId, // 公众号名称,由商户传入
|
timeStamp: params.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
|
nonceStr: params.nonceStr, // 支付签名随机串,不长于 32 位
|
package: params.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
|
signType: params.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
|
paySign: params.paySign // 支付签名
|
},
|
(res) => {
|
if (res.err_msg === 'get_brand_wcpay_request:ok') {
|
that.queryOrder() // 这里是查询订单是否支付完成,然后执行成功和失败的业务逻辑
|
} else if (res.err_msg === 'get_brand_wcpay_request:fail') {
|
alert('支付失败!')
|
} else if (res.err_msg === 'get_brand_wcpay_request:cancel') {
|
alert('支付取消!')
|
}
|
}
|
)
|
},
|
queryOrder() {
|
this.$byutil.postData(this, this.$systemconfig.basePath + '/ffzf/outpark/getById', {id: this.outParkId}, res => {
|
if (res.code == 0) {
|
let outpark = res.data
|
if(outpark.status == 1){
|
window.location.href = "http://hesuancj.cn/#/indexOk?code2="+this.code2
|
}else {
|
window.location.href = "http://hesuancj.cn/#/indexFail?code2="+this.code2
|
}
|
}
|
})
|
}
|
}
|
|
}
|
|
</script>
|
|
|
<style lang="scss">
|
.weizhang-main-bootom{
|
.el-input__inner{
|
border:none;
|
}
|
.el-form-item__label{
|
color: #000;
|
font-weight: 600;
|
}
|
}
|
.weizhang-footer-box{
|
.el-form-item__content{
|
width: 100%;
|
display: flex;
|
justify-content: center;
|
}
|
.el-button--small{
|
padding: 11px 15px;
|
font-size: 0.347rem /* 26/75 */;
|
}
|
}
|
.dialog-box{
|
.el-dialog{
|
bottom: 0;
|
position: fixed;
|
left: 0;
|
margin: 0;
|
}
|
.el-dialog__body{
|
padding: 2.67vw /* 20/7.5 */ 5.33vw /* 40/7.5 */;
|
}
|
.el-dialog__header{
|
width: 100%;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
padding: 1.87vw /* 14/7.5 */;
|
background: rgba(103,201,122,0.1);
|
}
|
.el-dialog__title{
|
font-size: 4vw /* 30/7.5 */;
|
}
|
.el-dialog__headerbtn{
|
top: 2.67vw /* 20/7.5 */;
|
}
|
.dialog-footer{
|
display: flex;
|
width: 100% !important;
|
.el-button{
|
width: 100%;
|
background: rgba(74,76,89,1);
|
}
|
}
|
}
|
|
</style>
|
<style lang="scss" scoped>
|
h1,h2,h3,h4,h5{
|
font-family: '苹方 中等';
|
font-weight: normal;
|
}
|
.weizhang-header{
|
display: flex;
|
height: 12.8vw /* 96/7.5 */;
|
align-items: center;
|
border-bottom:1px solid rgba(154,154,154,0.2);
|
.text{
|
flex: 1;
|
text-align: center;
|
h1{
|
font-size: 2.699vh /* 36/13.34 */;
|
}
|
}
|
.right{
|
width: 6.747vh /* 90/13.34 */;
|
}
|
.leftjiantou{
|
font-size: 5.33vw;
|
width: 6.747vh /* 90/13.34 */;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
}
|
}
|
.weizhang-main-box{
|
width: 100%;
|
display: flex;
|
flex-direction: column;
|
padding:5.33vw /* 40/7.5 */;
|
}
|
.weizhang-main-top{
|
height: 22.489vh /* 300/13.34 */;
|
display: flex;
|
flex-direction: column;
|
justify-content: center;
|
align-items: center;
|
border-bottom: 1px solid #f0f0f0;
|
.money{
|
font-size: 6.93vw /* 52/7.5 */;
|
font-weight: 550;
|
color: #000;
|
}
|
.weizhang{
|
font-size: 0.4rem /* 30/75 */;
|
line-height: 2;
|
font-weight: normal;
|
margin-top:1.33vw /* 10/7.5 */;
|
color: #000;
|
}
|
}
|
.weizhang-main-form{
|
}
|
.weizhang-tiaokuan{
|
margin-top: 2.67vw /* 20/7.5 */;
|
h1{
|
font-size:3.2vw /* 24/7.5 */;
|
color: #999999;
|
text-indent: 2.5em;
|
line-height: 2;
|
}
|
}
|
.jiaofei-btn{
|
width: 80%;
|
border-radius: 5.33vw /* 40/7.5 */;
|
background-image: linear-gradient(to right,#33b1fe,#0679dc);
|
}
|
|
.logoPhone{
|
margin-top: 0.67vw;
|
width: 1.333rem /* 100/75 */;
|
height: 1.333rem /* 100/75 */;
|
}
|
.el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
|
margin-bottom: 10px;
|
}
|
.weizhang-main-bootom{
|
margin-top: 0.333rem /* 25/75 */;
|
}
|
.dialog-main-box{
|
.dialog-main-line{
|
display: flex;
|
justify-content: space-between;
|
h1{
|
font-size: 3.2vw /* 24/7.5 */;
|
color: rgba(0,0,0,0.9);
|
line-height: 2;
|
}
|
}
|
.dialog-main-line-middle{
|
width: 100%;
|
display: flex;
|
justify-content: center;
|
padding: 2.67vw /* 20/7.5 */ 0;
|
h1{
|
font-size: 8vw /* 60/7.5 */;
|
line-height: 2;
|
color: rgba(0,0,0,1);
|
font{
|
font-size: 3.73vw /* 28/7.5 */;
|
margin-left: 0.67vw /* 5/7.5 */;
|
}
|
}
|
}
|
.wx-img-box{
|
width: 100%;
|
display: flex;
|
justify-content: space-between;
|
.wx-img-l{
|
display: flex;
|
img{
|
width: 5.33vw /* 40/7.5 */;
|
object-fit: contain;
|
}
|
h1{
|
font-size: 3.47vw /* 26/7.5 */;
|
margin-left: 1.33vw /* 10/7.5 */;
|
}
|
}
|
.wx-img-r{
|
width: 4vw /* 30/7.5 */;
|
height: 4vw /* 30/7.5 */;
|
img{
|
width: 100%;
|
}
|
}
|
}
|
}
|
</style>
|