我的钱包

This commit is contained in:
余同学 2024-12-08 16:15:27 +08:00
parent b66f585487
commit 943a7e54f6
4 changed files with 426 additions and 0 deletions

20
src/api/modules/wallet.js Normal file
View File

@ -0,0 +1,20 @@
import $http from "@/utils/httpRequest.js";
export const wallet = {
//钱包管理
myWallet: (data) => {
return $http.request({
url: `/merchant-api/wallet/wallet`,
method: "post",
data,
});
},
//钱包明细
Withdrawal: (data) => {
return $http.request({
url: `/merchant-api/walletDrawCashOrder/apply`,
method: "post",
data,
});
},
};

View File

@ -410,6 +410,33 @@ export default {
}, },
], ],
}, },
{
menuId: getUUID(),
parentId: 0,
parentName: null,
name: "钱包管理",
url: "local-course/resources",
perms: "",
type: 0,
elIcon: "el-icon-menu",
orderNum: 0,
open: null,
list: [
{
menuId: getUUID(),
parentId: 0,
parentName: null,
name: "我的钱包",
url: "wallet/index",
perms: "",
type: 1,
elIcon: "el-icon-menu",
orderNum: 0,
open: null,
list: [],
},
],
},
], ],
code: 0, code: 0,
permissions: [], permissions: [],

View File

@ -0,0 +1,251 @@
<template>
<div>
<el-row :gutter="20">
<el-col :span="15"
><div class="grid-content bg-purple">
<div class="userInfo">
<div class="userInfo">
<el-avatar
:size="60"
src="https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png"
></el-avatar>
<span class="userName">用户名{{ userInfo.userName }}</span>
</div>
<el-button @click="addWithdrawal" type="primary" round
>发起提现</el-button
>
</div>
<div class="userInfo">
<el-card class="box-card">
<div style="font-size: 18px; font-weight: 600">可用金额</div>
<div style="margin-top: 20px; font-size: 18px">
{{
userInfo.availableAmount ? userInfo.availableAmount : "0"
}}
</div>
<div class="userTime">{{ userInfo.updateTime }}</div>
</el-card>
<el-card class="box-card">
<div style="font-size: 18px; font-weight: 600">冻结金额</div>
<div style="margin-top: 20px; font-size: 18px">
{{ userInfo.freezeAmount ? userInfo.freezeAmount : "0" }}
</div>
<div class="userTime">{{ userInfo.updateTime }}</div>
</el-card>
</div>
<div style="margin: 10px">
<div style="font-size: 16px; margin: 0 0 20px 0; font-weight: 600">
钱包提现记录
</div>
<el-form
:inline="true"
:model="formInline"
class="demo-form-inline"
>
<el-form-item label="申请状态">
<el-select
v-model="formInline.cashOutStatus"
placeholder="请选择"
>
<el-option
v-for="item in [
{
label: '审核中',
value: '1',
},
{
label: '审核不通过',
value: '2',
},
{
label: '审核成功',
value: '3',
},
{
label: '提现中',
value: '4',
},
{
label: '提现失败',
value: '5',
},
{
label: '提现成功',
value: '6',
},
]"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="申请时间">
<el-date-picker
v-model="value1"
type="datetimerange"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="queryList">查询</el-button>
<el-button type="primary" @click="Reset">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="提现申请订单号" width="180">
</el-table-column>
<el-table-column prop="name" label="提现申请金额" width="180">
</el-table-column>
<el-table-column prop="address" label="申请状态">
</el-table-column>
<el-table-column prop="address" label="提现申请时间">
</el-table-column>
<el-table-column prop="address" label="交易到账时间">
</el-table-column>
</el-table>
</div>
<div class="pagination-container">
<el-pagination
:current-page="query.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="query.pageSize"
:total="total"
background
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</div>
</el-col>
<el-col :span="9"><div class="grid-content bg-purple">2</div> </el-col>
</el-row>
<!-- 提现 -->
<withdrawal @init="init" ref="withdrawal"></withdrawal>
</div>
</template>
<script>
import withdrawal from "./popup/withdrawal";
export default {
components: { withdrawal },
data() {
return {
value1: [],
userInfo: {},
tableData: [
{
date: "2016-05-02",
name: "王小虎",
address: "上海市普陀区金沙江路 1518 弄",
},
{
date: "2016-05-04",
name: "王小虎",
address: "上海市普陀区金沙江路 1517 弄",
},
{
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
},
{
date: "2016-05-03",
name: "王小虎",
address: "上海市普陀区金沙江路 1516 弄",
},
],
query: {
pageNumber: 1,
pageSize: 10,
},
formInline: {},
total: 0,
};
},
created() {
this.init();
},
methods: {
init() {
console.log("1213");
this.$api.wallet.myWallet().then((res) => {
console.log(res);
this.userInfo = res.data.data;
});
},
handleSizeChange(val) {
this.query.pageSize = val;
this.init();
},
handleCurrentChange(val) {
this.query.pageNumber = val;
this.init();
},
queryList() {},
Reset() {},
addWithdrawal() {
this.$api.mer_admin
.bankCardPage({
pageNumber: 1,
pageSize: 10,
linkId: JSON.parse(sessionStorage.getItem("userInfo")).managerId
? JSON.parse(sessionStorage.getItem("userInfo")).managerId
: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
status: "1",
})
.then((res) => {
if (res.data.data.data.length > 0) {
this.$refs.withdrawal.toggle().add();
} else {
this.$message.error("请先绑定银行卡");
}
})
.catch((err) => {
this.$message.error("获取银行卡失败");
});
},
},
};
</script>
<style lang="scss" scoped>
.el-col {
border-radius: 4px;
}
.bg-purple {
background: #f1f8fe;
}
.grid-content {
border-radius: 4px;
padding: 20px;
height: 85vh;
}
.userInfo {
display: flex;
align-items: center;
justify-content: space-between;
}
.userName {
margin-left: 30px;
font-size: 16px;
color: #303e9f;
}
.box-card {
margin: 20px;
width: 50%;
height: 200px;
border-radius: 10px;
position: relative;
}
.userTime {
position: absolute;
bottom: 10px;
right: 20px;
font-size: 16px;
}
</style>

View File

@ -0,0 +1,128 @@
<template>
<div>
<obj-modal
ref="modal"
labelWidth="150px"
:modalConfig="modalConfig"
:modalData="modalData"
:modalHandles="modalHandles"
>
<div slot="dialog__content">
<el-form
:model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="150px"
class="demo-ruleForm"
>
<el-form-item label="提现金额:" prop="isRefundEarnestMoney">
<el-input-number
v-model="ruleForm.amount"
:min="0"
:step="1"
label="描述文字"
></el-input-number>
</el-form-item>
</el-form>
</div>
<!-- 选择商品 -->
</obj-modal>
</div>
</template>
<script>
import { debounce, cloneDeep } from "lodash";
export default {
components: {},
props: {},
data() {
return {
isAdd: true,
//
modalConfig: {
title: "提现",
show: false,
width: "600px",
},
modalData: {},
ruleForm: {
amount: "",
},
rules: {
amount: [
{
required: true,
message: "请输入提现金额",
trigger: ["blur", "change"],
},
],
},
};
},
watch: {
"modalConfig.show"(newVal) {
if (newVal) {
//
setTimeout(() => {
this.$refs.ruleForm.resetFields();
});
}
},
},
methods: {
queryTableData(pageNo, pageSize) {},
toggle(e) {
if (this.modalConfig.show == false) {
this.modalConfig.show = true;
} else {
this.modalConfig.show = false;
}
if (e) {
this.init(cloneDeep(e));
}
return {
add: () => {
this.modalConfig.title = "提现金额";
this.isAdd = true;
},
update: () => {
this.isAdd = false;
},
};
},
init(row) {},
},
computed: {
modalHandles() {
return [
{
label: "取消",
handle: () => {
this.toggle();
},
},
{
label: "确认",
type: "primary",
// submit: true,
handle: () => {
if (this.isAdd) {
this.$refs.ruleForm.validate((valid) => {
if (valid) {
console.log(valid);
this.$api.wallet.Withdrawal(this.ruleForm).then((res) => {
this.$emit("init");
this.toggle();
});
}
});
}
},
},
];
},
},
asyncComputed: {},
};
</script>
<style lang="scss" scoped>
</style>