<template> <div class="cash-out"> <van-cell-group style="margin-bottom: 10px"> <van-cell is-link title="所属银行" :value="bank" @click="jumpToBank" /> </van-cell-group> <div class="detail"> <p style="font-size: 24px">提现金额</p> <van-field v-model="money" type="number" label="¥" class="money" /> <div class="remain"> <span style="color: #666666" >可提现金额{{ remainMoney.toFixed(2) }}元</span > <span class="all" @click="allIn">全部提现</span> </div> <div class="real"> <p class="real-item"> <span>实际到账</span> <span>94.19</span> </p> <p class="real-item"> <span>税款</span> <span>6.34</span> </p> <p class="explain"> <span>扣税说明</span> <img class="explain-img" src="@/assets/images/explain.png" alt="解释" /> </p> </div> </div> <div style="padding: 10px 16px"> <van-button type="primary" size="large" @click="onCashOut" >提现</van-button > </div> <base-dialog base-dialog-title="提现" base-dialog-btn="提交" :base-dialog-show="validCodeDialogShow" :base-dialog-show-close="true" @onClick="onSubmit" > <div slot="content"> <p class="content-text">请输入手机号{{ userPhone }}的动态验证码</p> <van-field v-model="validCode" type="number" class="validCodeInput" placeholder="请输入" > <img slot="left-icon" class="valid-code" src="@/assets/images/验证码.png" /> </van-field> </div> </base-dialog> <base-dialog :base-dialog-title="resultDialogTitle" :base-dialog-show="resultDialog" @onClick="onSuccess" > <div slot="content" style="text-align:center"> <img :src="resultDialogImg" style="width: 70px; height: 76px" alt /> <p style="margin:0;font-size:14px;color:#999999"> {{ resultDialogTip }} </p> </div> <div></div> </base-dialog> </div> </template> <script> import { getUserBankInfo, sendSms, cashOut } from "@/api/bank"; import BaseDialog from "@/components/BaseDialog.vue"; export default { components: { BaseDialog }, name: "CashOut", data() { return { userPhone: "13100911369", bank: "", money: null, remainMoney: 100, resultDialogTitle: "", resultDialogTip: "", resultDialogImg: "", resultDialog: false, validCodeDialogShow: false, validCode: null }; }, created() { this.getUserInfo(); }, methods: { jumpToBank() { console.log("1"); this.$router.push("/bank"); }, // 全部提现 allIn() { this.money = this.remainMoney; }, // 点击提现 onCashOut() { if (!this.money) { this.$toast.fail("未输入提现金额"); return; } const params = { userId: this.userPhone }; sendSms(params).then(); this.validCode = null; this.validCodeDialogShow = true; }, getUserInfo() { const params = { userId: "13100911369" }; getUserBankInfo(params).then(res => { if (res.code === 0) { this.bank = res.data.bankName; } }); }, onSubmit() { this.validCodeDialogShow = false; const params = { code: this.validCode, money: this.money }; cashOut(params) .then(res => { this.resultDialog = true; if (res.code === 0) { this.resultDialogTitle = "提现成功"; this.resultDialogTip = "提现成功,请及时查收"; this.resultDialogImg = require("@/assets/images/成功.png"); } else { this.resultDialogTitle = "提现失败"; this.resultDialogTip = "提现失败,验证码错误"; this.resultDialogImg = require("@/assets/images/叉号.png"); } }) .catch(err => { this.$toast.fail(err.response.data.error); }); }, onSuccess() { this.resultDialog = false; } } }; </script> <style lang="scss" scoped> .cash-out { padding: 10px 0; font-family: PingFang-SC-Medium; .bank { ::v-deep .van-field__control { text-align: right; } } .detail { height: 380px; padding: 10px 16px; background-color: #ffffff; .money { box-sizing: border-box; margin: 0 0 10px; border-bottom: 1px solid #eeeeee; ::v-deep .van-field__label { width: 16px; height: 21px; font-size: 28px; line-height: 20px; color: #333333; } ::v-deep .van-field__control { font-size: 23px; color: #333333; } } .remain { padding: 10px 16px; font-size: 12px; .all { padding-left: 20px; color: #88c678; } } .real { padding: 10px 16px; font-size: 14px; background-color: #f9f9f9; .real-item { display: flex; flex-wrap: nowrap; justify-content: space-between; align-items: center; } .explain { position: relative; span { color: #999999; } .explain-img { position: absolute; top: 50%; transform: translateY(-50%); width: 14px; height: 14px; margin-left: 8px; } } } } } .content-text { width: 185px; margin: 25px auto; text-align: center; font-family: PingFang-SC-Medium; font-size: 14px; color: #333333; } .validCodeInput { width: 245px; margin: 10px auto; background-color: #f9f9f9; border-radius: 20px; .van-field__left-icon { display: flex; align-items: center; } .valid-code { width: 16px; height: 18px; } } </style>