123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- <template>
- <div class="app-container" v-loading="loading">
- <el-form :model="form" :rules="rules" ref="form" label-width="140px">
- <el-form-item label="姓名:" prop="userName">
- <el-input
- v-model.trim="form.userName"
- placeholder="请输入姓名"
- clearable
- :readonly=true
- />
- </el-form-item>
- <el-form-item label="手机号码:" prop="userPhone">
- <el-input
- v-model.trim="form.userPhone"
- placeholder="请输入手机号码"
- clearable
- maxlength="11"
- minlength="11"
- type="text"
- onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')"
- />
- </el-form-item>
- <el-form-item label="充值金额:" prop="money">
- <el-input v-model.trim="form.money" placeholder="请输入充值金额" type="tel" @input="inputMoney" min="0.10" />
- <!-- <el-input
- v-model.trim="form.money"
- placeholder="请输入充值金额"
- clearable
- onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')"
- /> -->
- </el-form-item>
- <el-form-item label="充值到账比例:" prop="proportion">
- <el-input
- v-model.trim="form.proportion"
- placeholder="充值到账比例"
- clearable
- :disabled="true"
- />
- </el-form-item>
- <el-form-item label-width="0" style="margin-top:50px;" class="payTypeClass" prop="payType">
- <img src="../../../assets/images/xj.png" alt="" @click="form.payType = 1" v-if="form.payType !== 1">
- <img src="../../../assets/images/xj-c.png" alt="" v-if="form.payType === 1">
- <img src="../../../assets/images/wx.png" alt="" @click="form.payType = 2" v-if="form.payType !== 2">
- <img src="../../../assets/images/wx-c.png" alt="" v-if="form.payType === 2">
- <img src="../../../assets/images/zfb.png" alt="" @click="form.payType = 3" v-if="form.payType !== 3">
- <img src="../../../assets/images/zfb-c.png" alt="" v-if="form.payType === 3">
- </el-form-item>
- <el-form-item label-width="0" style="margin-top:50px;">
- <el-button type="primary" @click="submitForm" style="width:100%">充值</el-button>
- </el-form-item>
- </el-form>
- <div class="qrcode" ref="qrCodeUrl"></div>
- <img :src="codeUrl" alt="请扫描二维码支付" v-if="codeUrl" title="请扫描二维码支付">
- </div>
- </template>
- <script>
- import QRCode from 'qrcodejs2'
- import { order, topScanPayApi } from "@/api/recharge/userRecharge";
- import { validatePhone } from "@/utils/validate2";
- export default {
- name: "admin",
- data() {
- return {
- loading:true,
- // 表单参数
- form: {
- userPhone:'',
- userName:'',
- money:'',
- proportion:'',
- payType:0,
- userId:undefined,
- scene:1
- },
- formSubmit:{
- userPhone:'',
- userName:'',
- money:'',
- payType:0,
- userId:undefined,
- scene:1
- },
- codeUrl:null,
- // 表单校验
- rules: {
- userPhone: [
- { required: true, message: "手机号码不能为空", trigger: "blur", },
- { validator: validatePhone, trigger: "blur" },
- ],
- userName: [
- { required: true, message: "姓名不能为空", trigger: "blur" }
- ],
- money: [
- { required: true, message: "充值金额不能为空", trigger: "blur" },
- ],
- // proportion: [
- // { required: true, message: "充值到账比例不能为空,请返回页面绑定比例关系", trigger: "blur" }
- // ],
- payType: [
- { required: true, message: "请选择支付方式", trigger: "blur" }
- ],
- }
- };
- },
- created(){
- if(localStorage.getItem("chongzhi")){
- this.loading = false
- let obj = JSON.parse(localStorage.getItem("chongzhi"))
- this.form.userName = obj.name
- this.form.proportion = obj.proportion
- this.form.userId = obj.sid
- this.form.userPhone = obj.contacts
- localStorage.removeItem('chongzhi')
- }else{
- this.$message.error('请从人员信息充值入口进入该页面')
- setTimeout(() =>{
- this.$router.push({path:'personnel'})
- },1500)
- }
- },
- methods: {
- creatQrCode(url) {
- var qrcode = new QRCode(this.$refs.qrCodeUrl, {
- text: url, // 需要转换为二维码的内容
- width: 250,
- height: 250,
- colorDark: '#000000',
- colorLight: '#ffffff',
- correctLevel: QRCode.CorrectLevel.H
- })
- this.msgSuccess("已生成支付二维码,请扫描二维码进行支付。");
- this.loading = false
- },
- inputMoney(e){ //金额充值效验
- var val = e.replace(/(^\s*)|(\s*$)/g, "")
- if (!val) {
- this.form.money = '';
- return
- }
- var reg = /[^\d.]/g
- // 只能是数字和小数点,不能是其他输入
- val = val.replace(reg, "")
- // // 保证第一位只能是数字,不能是点
- val = val.replace(/^\./g, "");
- // // 小数只能出现1位
- val = val.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
- // // 小数点后面保留2位
- val = val.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
- if(val.indexOf("0") == 0){
- if(val.length == 2){
- val = "0."
- }
- }
- this.$nextTick(() => {
- this.form.money = val;
- })
- },
- forceUpdate(){ //重置form
- this.form = JSON.parse(JSON.stringify(this.form));
- },
- /** 提交按钮 */
- submitForm(row) {
- if(this.form.money == 0){
- this.msgError("充值金额不能为0元")
- }else{
- this.$refs["form"].validate(valid => {
- if (valid) {
- if(!this.form.payType) return this.msgError("请选择支付方式");
- this.loading = true
- this.formSubmit.userPhone = this.form.userPhone
- this.formSubmit.userName = this.form.userName
- this.formSubmit.money = Number(this.form.money).toFixed(2)
- this.formSubmit.payType = this.form.payType
- this.formSubmit.userId = this.form.userId
- this.formSubmit.userId = this.form.userId
- if (this.form.payType === 1) { //后台现金
- order(this.formSubmit).then(response => {
- this.msgSuccess("已生成支付订单");
- this.codeUrl = '';
- this.loading = false
- });
- } else {
- //移除二维码
- var div = document.getElementsByClassName("qrcode")[0];
- // 获取 div 标签下的所有子节点
- var pObjs = div.childNodes;
- for (var i = pObjs.length - 1; i >= 0; i--) { // 一定要倒序,正序是删不干净的,可自行尝试
- div.removeChild(pObjs[i]);
- }
- topScanPayApi(this.formSubmit).then(response => {
- this.creatQrCode(response.data)
- })
- // scanPayQr(this.form).then(response => {
- // this.codeUrl = "data:image/gif;base64," + response.msg;
- // this.msgSuccess("已生成支付二维码,请扫描二维码进行支付。");
- // this.loading = false
- // });
- }
- this.reset()
- }
- })
- }
- },
- // 表单重置
- reset() {
- this.form = {
- userPhone:'',
- userName:'',
- money:'',
- payType:0,
- };
- this.resetForm("form");
- },
- },
- }
- </script>
- <style lang="scss" scoped>
- .app-container{
- padding-top: 50px;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- }
- .payTypeClass{
- img{
- width: 120px;
- height: 90px;
- margin: 0 10px;
- }
- }
- </style>
|