<template> <div class="app-container"> <el-card> <!-- 商品信息 --> <div class="card-header-custom"> <div class="card-header-title"> <span class="blue-block blue-block-goods-title"></span>账户资产 </div> <div class="card-header-handle"> <el-button plain type="primary" size="small" @click="explainWithdrawal">提现说明</el-button> <el-button plain type="primary" size="small" @click="goToWithdrawlog">提现记录</el-button> </div> </div> <div class="row-flex-center"> <div class="current-balance"> <dl class="balance-dl"> <dt>当前余额(元)</dt> <dd>¥{{ currentBalance }}</dd> </dl> <p class="in-details-balance" @click="goToBalance">收支明细</p> </div> <div class="withdrawal-balance"> <dl class=" balance-dl dl-border"> <dt>可提现余额(元)</dt> <dd>¥{{ withdrawalBalance }}</dd> </dl> </div> <div class="withdrawal-progress"> <dl class=" balance-dl"> <dt>提现中的金额(元)</dt> <dd>¥{{ withdrawalProgress }}</dd> </dl> </div> </div> <div class="row-flex-center" style="margin: 0 0 20px;"> <el-button :disabled="isAllowWithdraw" type="primary" size="small" style="padding: 10px 30px; margin: 20px 0;" @click="handleWithdraw">提 现</el-button> <span v-if="isAllowWithdraw" class="spe-tip"><i class="el-icon-warning h-warning"></i>温馨提示:您的账户被禁止提现,请联系工作人员</span> </div> <!-- 账号管理 --> <div class="card-header-custom"> <div class="card-header-title"> <span class="blue-block blue-block-goods-title"></span>账户管理 </div> </div> <div class="row-flex-space-around"> <div class="card-con" v-for="(item,index) in bankcardList" :key="index"> <div class="card-info-con"> <div class="card-name">{{ item.bank_name }}</div> <div class="bank-detail"> <p>对公账户名称:{{ item.corporate_account_name }}</p> <p>银行名称:{{ item.bank_name }}</p> <p>对公银行账号:{{ item.bank_account_sn }}</p> <p>开户行(支行):{{ item.bank_branch_name }}</p> </div> </div> <div class="card-info-handle"> <el-button plain type="primary" size="mini" style="padding: 10px 30px; margin: 20px 40px 40px 0;" @click="editBankcard(item.id)">编 辑</el-button> <el-button plain type="primary" size="mini" style="padding: 10px 30px; margin: 20px 0 40px;" @click="delBankcard(item.id)">删 除</el-button> </div> </div> <div v-if="bankcardList.length < 3" class="hh-card-con" :class="{ 'only-add-con' : bankcardList.length == 0 ? true: false }"> <div class="add-card-con"> <div class="add-card-btn" @click="addBankcard">+</div> </div> </div> </div> </el-card> <!-- 添加、编辑 银行卡 信息 --> <el-dialog :title="bankcardTitle" :visible.sync="addBankcardInfoDialog" :before-close="cancelSubmitBankcard" center > <el-form ref="bankcardForm" :model="bankcardForm" :rules="bankcardRule" size="small" label-width="180px"> <el-form-item label="账号类型:"> <el-input type="text" placeholder="银行对公账户" :disabled="true" style="width: 70%;"></el-input> <p class="withdraw-tip"> 根据要求,提现仅支持公对公账户 </p> </el-form-item> <el-form-item label="银行名称:" prop="bank_name" > <el-select v-model="bankcardForm.bank_name" placeholder="请选择" style="width: 70%;"> <el-option v-for="item in bankOptions" :key="item.code" :label="item.name" :value="item.code"> </el-option> </el-select> </el-form-item> <el-form-item label="对公账户名称:" style="width:100%"> <el-input v-model="bankAccountName" placeholder="对公账户名称,不能输入和修改" :disabled="true" style="width: 70%"></el-input> <p class="withdraw-tip"> 银行卡必须为对公账户,且与提交的公司名称相一致,不允许修改 </p> </el-form-item> <el-form-item label="开户行(支行):" prop="bank_branch_name"> <el-input v-model="bankcardForm.bank_branch_name" placeholder="请输入开户行" style="width: 70%"></el-input> </el-form-item> <el-form-item label="对公银行账号:" prop="bank_account_sn"> <el-input v-model="bankcardForm.bank_account_sn" placeholder="请输入对公银行账号" style="width: 70%"></el-input> </el-form-item> <el-form-item> <span class="withdraw-tip">温馨提示:所有项均为必填项,请正确填写相关信息,信息填写错将导致提现无法成功</span> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <el-button size="small" type="primary" @click="submitBankcard">确 定</el-button> <el-button size="small" @click="cancelSubmitBankcard">取 消</el-button> </span> </el-dialog> </div> </template> <script> import { getMyAssetListData,getOrganizationData, getBankDetailsData,getBankcardListData, addBankcardData,editBankcardData ,delBankcardData } from '@/api/module/bankcard' export default { name: "Index", data() { return { seller_id: '', currentBalance: 0, withdrawalBalance: 0, withdrawalProgress: 0, isAllowWithdraw: false, // 能否操作提现,sys可设置 bankcardList: [], addBankcardInfoDialog: false, bankcardTitle: '', bankAccountName: '', // 主体信息 公司名称 bankcardForm: { bank_name: '', bank_branch_name: '', bank_account_sn: '', }, bankcardRule: { bank_name: [{required: true,message: '银行名称不能为空',trigger: 'change'}], bank_branch_name: [{required: true,message: '开户行支行不能为空',trigger: 'blur'}], bank_account_sn: [{ required: true,message: '银行账号不能为空',trigger: 'blur'}] }, bankOptions: [], // 银行卡列表 indexId: 0, } // return end },// data end created() { /** 获取 seller_id*/ this.seller_id = this.$store.state.user.sellerid; /** 我的资产 所有数据 */ this.getMyAssetList() /** 获取 银行卡列表 */ // this.getBankcardList() /** 获取主体信息 */ this.getOrganization(); }, methods: { /** 我的资产 所有数据 */ getMyAssetList() { getMyAssetListData( {seller_id:this.seller_id} ).then(res=> { if(res.code == 1 && res.data) { // 账号资产 if(res.data.account_info ) { this.withdrawalBalance = Number(res.data.account_info.new_balance) / 100; this.withdrawalProgress = Number(res.data.account_info.new_frozen_money) / 100; this.currentBalance = this.add(this.withdrawalBalance,this.withdrawalProgress); if ( res.data.account_info.is_allow_withdraw == 0) { this.isAllowWithdraw = true; }else { this.isAllowWithdraw = false; } } // 账户管理 if(res.data.bank_list) { this.bankcardList = res.data.bank_list; } }else { this.$message({type:'error',message: res.message ? res.message : '获取用户列表失败'}); } }); }, /** 获取主体信息 */ getOrganization() { getOrganizationData().then(res=> { if(res.code == 1 && res.data) { this.bankAccountName = res.data.organization_name; } }); }, /** 编辑 银行卡信息 */ editBankcard(id) { this.bankcardTitle = '编辑账户' this.indexId = id; /** 获取 银行卡列表 */ this.bankOptions = []; this.getBankcardList() getBankDetailsData({ id: id }).then(res=> { if(res.code == 1 && res.data) { this.addBankcardInfoDialog = true; this.bankcardForm.bank_name = res.data.bank_name this.bankcardForm.bankAccountName = res.data.corporate_account_name; this.bankcardForm.bank_branch_name = res.data.bank_branch_name; this.bankcardForm.bank_account_sn = res.data.bank_account_sn; }else { let msg = res.message ? res.message : '获取银行卡信息失败' this.$message({type:'error',message: msg}); } }); }, /** 删除 银行卡信息 */ delBankcard(id) { const indexId = id; this.$confirm('确定要删除该账户信息吗?','警告',{ confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(async ()=> { let delResult = await delBankcardData({id: indexId}); // console.log('删除结果',delResult); if (delResult.code == 1) { this.$message({type:'success',message:'删除成功'}); this.getMyAssetList(); } if (delResult.code == 0) { let msg = delResult.message ? delResult.message : '删除失败' this.$message({type:'error',message: msg }); } }).catch(()=> {}); }, /** 添加 银行卡信息 */ addBankcard() { this.bankcardTitle = '添加账户' this.addBankcardInfoDialog = true; this.indexId = 0; /** 获取 银行卡列表 */ this.bankOptions = []; this.getBankcardList() }, /** 提交 添加银行卡信息 */ submitBankcard() { let params = { bank_name: this.bankcardForm.bank_name, bank_branch_name: this.bankcardForm.bank_branch_name, bank_account_sn: this.bankcardForm.bank_account_sn } for (let i = 0; i < this.bankOptions.length; i++) { if (this.bankcardForm.bank_name == this.bankOptions[i].code) { params.bank_name = this.bankOptions[i].name break } } this.$refs.bankcardForm.validate((valid)=> { if (valid) { // 新增 if (this.indexId == 0) { params['seller_id'] = this.seller_id; addBankcardData(params).then(res=> { if(res.code == 1) { this.$message({type:'success',message: '新增成功'}); this.resetAddBankcardForm(); this.addBankcardInfoDialog = false; this.getMyAssetList(); // 更新数据 }else { this.$message({type:'error',message: res.message ? res.message : '新增失败' }); } }); }else { params['id'] = this.indexId editBankcardData(params).then(res=> { if(res.code == 1) { this.$message({type:'success',message: '修改成功'}); this.resetAddBankcardForm(); this.addBankcardInfoDialog = false; this.getMyAssetList(); // 更新数据 }else { this.$message({type:'error',message: res.message ? res.message : '修改失败' }); } }); } } // valid end }); }, /** 取消 提交 添加银行卡信息*/ cancelSubmitBankcard() { this.resetAddBankcardForm(); this.addBankcardInfoDialog = false; }, /** 初始化 添加 银行卡 数据 */ resetAddBankcardForm() { this.bankcardForm = { bank_name: '', bank_branch_name: '', bank_account_sn: '', } this.$refs['bankcardForm'].resetFields(); }, /** 提现 操作 */ handleWithdraw() { this.$router.push({ path: "/system/asset/withdraw" }); }, /** 收支明细 跳转 */ goToBalance() { this.$router.push({ path: "/system/asset/balance" }); }, /** 提现记录*/ goToWithdrawlog() { this.$router.push({ path: "/system/asset/withdrawlog" }); }, /** 提现说明 */ explainWithdrawal() { this.$router.push({ path: "/system/asset/explain" }); }, /** 获取 银行列表 */ getBankcardList() { getBankcardListData().then(res=> { if(res.code == 1 && res.data) { this.bankOptions = res.data }else { let msg = res.message ? res.message : '获取银行列表失败' this.$message({type:'error',message: msg}); } }); }, // 自定义高精度浮点数运算 // 加法 add(arg1, arg2) { let r1, r2, m, result; try { //取小数位长度 r1 = arg1.toString().split(".")[1].length; r2 = arg2.toString().split(".")[1].length; } catch (e) { r1 = 0; r2 = 0; } m = Math.pow(10, Math.max(r1, r2)); //计算因子 result = (arg1 * m + arg2 * m) / m; result = result.toFixed(2); return result; }, // 减法 minus(arg1, arg2) { return this.add(arg1, -arg2); }, } // methods end } </script> <style scoped> .app-container { overflow: auto; } /* el-card title hxz 样式统一 start */ .card-header-custom { display: flex; flex-direction: row; justify-content: space-between; align-items: center; border-bottom: 1px solid #F6F6F8; padding-bottom: 15px; } .card-header-title { line-height: 24px; font-size: 18px; color: #000; font-weight: bold; } .blue-block { display: inline-block; width: 5px; height: 24px; background: #3A84FF; margin: 0 9px 0 0; border-radius: 2px; vertical-align: bottom; } .current-balance,.withdrawal-balance,.withdrawal-progress { flex: 1; margin: 30px 0; background-color: #F8FBFD; } .current-balance { position: relative; } .balance-dl { padding: 20px 0; margin: 20px 0; } .dl-border { border-right: 2px solid #E8E7E7; border-left: 2px solid #E8E7E7; } .balance-dl > dt,.balance-dl > dd { text-align: center; margin: 20px 0; padding: 0; } .balance-dl > dt { height: 36px; font-size: 16px; font-weight: bold; color: #333333; line-height: 36px; padding-left: 16px; } .balance-dl > dd { height: 36px; font-size: 34px; font-weight: bold; color: #40A3FC; line-height: 36px; } .in-details-balance { position: absolute; height: 20px; line-height: 20px; font-size: 14px; font-weight: 400; color: #40A3FC; cursor: pointer; bottom: 6px; left: calc(50% - 26px); } .spe-tip { font-size: 12px; color: #909399; padding: 0 0 0 10px; } .h-warning:before { color: #e3c300; padding: 0 3px; } /* el-card title hxz 样式统一 end */ .row-flex-center { display: flex; flex-direction: row; justify-content: center; align-items: center; text-align: center; } .row-flex-space-around { display: flex; flex-direction: row; justify-content: start; align-items: center; flex-wrap: wrap; } .mp20 { margin: 30px; padding: 10px 20px; } .card-con { } .card-info-con { width: 468px; height: 274px; margin: 20px; box-shadow :0 2px 10px 0 rgba(0,0,0,0.05); } .hh-card-con { width: 468px; height: 366px; } .only-add-con { margin: 20px 0; } .add-card-con { width: 468px; height: 274px; box-shadow :0 2px 10px 0 rgba(0,0,0,0.05); } .card-name { height: 60px; line-height: 60px; text-align: center; color: #fff; border-radius: 5px 5px 0px 0px; background: #40A3FC; } .bank-detail { padding: 10px 20px; font-size: 14px; font-weight: 400; color: #333333; line-height: 30px; } .add-card-con { background: #F8FBFD; border: 1px dashed #D7D7D8; border-radius: 5px; display: flex; flex-direction: row; align-items: center; justify-content: center; } .add-card-btn { padding: 50px; line-height: 30px; text-align: center; font-size: 24px; cursor: pointer; color: #666; } .card-info-handle { display: flex; flex-direction: row; align-items: center; justify-content: center; } .withdraw-tip { font-size:12px; color: #999; margin: 5px; line-height: 26px; } </style>