Files
Arbitrate-Frontend/src/views/caseManagement/components/payDialog.vue
T

138 lines
3.4 KiB
Vue
Raw Normal View History

2023-09-20 14:23:32 +08:00
<template>
<div>
<el-dialog
:title="payTitle"
:visible.sync="openPay"
v-if="openPay"
width="800px"
append-to-body
:destroy-on-close="true"
>
<el-descriptions title="订单信息">
<el-descriptions-item label="案件编号:">{{
form.caseNum
}}</el-descriptions-item>
<el-descriptions-item label="申请人:">{{
form.applicant
}}</el-descriptions-item>
<el-descriptions-item label="案件标的:">{{
form.caseSubjectAmount
}}</el-descriptions-item>
<el-descriptions-item label="案件应缴费用:">{{
form.feePayable
}}</el-descriptions-item>
<el-descriptions-item label="被申请人:">{{
form.respondent
}}</el-descriptions-item>
<el-descriptions-item label="申请人仲裁诉求:">{{
form.arbitratClaims
}}</el-descriptions-item>
<el-descriptions-item label="案件状态:">{{
form.caseStatusName
}}</el-descriptions-item>
</el-descriptions>
<div class="payType">
<span>请选择支付方式:</span>
<i class="iconfont icon-weixinzhifu" @click="pay(0)"></i>
<i class="iconfont icon-zhifubao" @click="pay(1)"></i>
</div>
<div class="payImg">
<div id="qrcodeImg"></div>
</div>
<div class="payTitle">{{ payMain }}</div>
<div slot="footer" class="dialog-footer">
<el-button @click="payCancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { casePay } from "@/api/pay/pay";
import QRCode from "qrcodejs2";
export default {
props: ["openPay", "payTitle", "form", "payForm"],
data() {
return {
// key: value
// 支付文字
payMain: "",
};
},
methods: {
// 生成二维码
qrcode(url) {
// 前端根据 URL 生成微信支付二维码
document.getElementById("qrcodeImg").innerHTML = "";
return new QRCode("qrcodeImg", {
width: 200,
height: 200,
text: url,
colorDark: "#000",
colorLight: "#fff",
});
},
// 支付
pay(val) {
if (this.payForm.feePayable == 0 || !this.payForm.feePayable) {
this.$message({
message: "此案件无需缴费",
type: "error",
});
return;
}
let payType = "";
if (val == 0) {
payType = "wxpay";
this.payMain = "请使用微信扫二维码支付";
} else if (val == 1) {
payType = "alipay";
this.payMain = "请使用支付宝扫二维码支付";
}
casePay({
totalFee: this.payForm.feePayable * 100,
caseId: this.payForm.caseId,
tradeType: "native",
platform: payType,
}).then((res) => {
this.paySrc = res.data.code_url;
this.qrcode(this.paySrc);
});
},
payCancel() {
this.$emit("paycancelRow");
this.payMain = "";
},
},
};
</script>
<style lang="scss" scoped>
.payType {
height: 80px;
line-height: 80px;
.icon-weixinzhifu {
font-size: 24px;
color: #27a56f;
margin-right: 15px;
}
.icon-zhifubao {
font-size: 24px;
color: #1d76cc;
}
}
.payImg {
width: 100%;
display: flex;
justify-content: center;
}
.payTitle {
margin-top: 20px;
width: 100%;
text-align: center;
}
</style>