Commit cae6654e authored by pengyunqian's avatar pengyunqian

Merge branch 'pyq_withdrawal2' into test

parents 54222e7f 2f08dfcc
...@@ -71,6 +71,50 @@ exports.getApplyDetail = async ctx => { ...@@ -71,6 +71,50 @@ exports.getApplyDetail = async ctx => {
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts)
} }
// 提现审核迭代
// 获取钱包账户列表
exports.getAccountList = async ctx => {
const url = `${WITHDRAWAL_URI}/wallet/background/account_list`;
const opts = {
url,
method: "GET",
qs: ctx.request.query
}
ctx.body = await req(ctx, opts)
}
// 获取钱包账户流水列表
exports.getRecordList = async ctx => {
const url = `${WITHDRAWAL_URI}/wallet/background/record_list`;
const opts = {
url,
method: "GET",
qs: ctx.request.query
}
ctx.body = await req(ctx, opts)
}
// 钱包账户黑名单
exports.getAccountBlackList = async ctx => {
const url = `${WITHDRAWAL_URI}/wallet/background/blacklist`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
}
ctx.body = await req(ctx, opts)
}
// 钱包账户释放
exports.getReblackList = async ctx => {
const url = `${WITHDRAWAL_URI}/wallet/background/reblacklist`;
const opts = {
url,
method: "POST",
json: true,
body: ctx.request.body
}
ctx.body = await req(ctx, opts)
}
const getUserPermission = async (ctx) => { const getUserPermission = async (ctx) => {
const url = `${WITHDRAWAL_URI}/merchant/authority/get_role_list`; const url = `${WITHDRAWAL_URI}/merchant/authority/get_role_list`;
const { email, op_cur_user } = ctx.request.query; const { email, op_cur_user } = ctx.request.query;
......
...@@ -112,11 +112,16 @@ router.get(`${API_VERSION}/order/background/order_item_list`, groupmeal.newOrder ...@@ -112,11 +112,16 @@ router.get(`${API_VERSION}/order/background/order_item_list`, groupmeal.newOrder
router.get(`${API_VERSION}/order/background/order_refund_reject`, groupmeal.newOrderRefundReject); router.get(`${API_VERSION}/order/background/order_refund_reject`, groupmeal.newOrderRefundReject);
router.post(`${API_VERSION}/order/background/order_refund`, groupmeal.newOrderRefund); router.post(`${API_VERSION}/order/background/order_refund`, groupmeal.newOrderRefund);
// 钱包提现审核 wallet/background/apply_detail // 钱包提现审核
router.get(`${API_VERSION}/get_withdrawal_apply_list`, withdrawal.getApplyList) router.get(`${API_VERSION}/get_withdrawal_apply_list`, withdrawal.getApplyList)
router.post(`${API_VERSION}/get_withdrawal_black_list`, withdrawal.getBlackList) router.post(`${API_VERSION}/get_withdrawal_black_list`, withdrawal.getBlackList)
router.post(`${API_VERSION}/get_withdraw_audit`, withdrawal.getWithdrawAudit) router.post(`${API_VERSION}/get_withdraw_audit`, withdrawal.getWithdrawAudit)
router.post(`${API_VERSION}/get_freezing_fund`, withdrawal.getFreezingFund) router.post(`${API_VERSION}/get_freezing_fund`, withdrawal.getFreezingFund)
router.get(`${API_VERSION}/get_apply_detail`, withdrawal.getApplyDetail) router.get(`${API_VERSION}/get_apply_detail`, withdrawal.getApplyDetail)
// 钱包账户
router.get(`${API_VERSION}/get_account_list`, withdrawal.getAccountList)
router.get(`${API_VERSION}/get_record_list`, withdrawal.getRecordList)
router.post(`${API_VERSION}/get_account_black_list`, withdrawal.getAccountBlackList)
router.post(`${API_VERSION}/get_reblack_list`, withdrawal.getReblackList)
module.exports = router; module.exports = router;
\ No newline at end of file
...@@ -450,7 +450,7 @@ ...@@ -450,7 +450,7 @@
">购买后不允许退款</span> ">购买后不允许退款</span>
<span v-else-if=" <span v-else-if="
$route.params.operation !== 'EDIT' && goodsObj.rule_refund === 3 $route.params.operation !== 'EDIT' && goodsObj.rule_refund === 3
">到期后不退款</span> ">到期后不允许退款</span>
</el-form-item> </el-form-item>
<el-form-item label="使用日期:"> <el-form-item label="使用日期:">
<el-radio-group <el-radio-group
...@@ -737,9 +737,9 @@ export default { ...@@ -737,9 +737,9 @@ export default {
rulesForm: { rulesForm: {
// 退款选项 // 退款选项
rulesOptions: [ rulesOptions: [
{ value: 1, label: "到期自动退款" }, { value: 1, label: "到期自动退款" },
{ value: 2, label: "购买后不允许退款" }, { value: 2, label: "购买后不允许退款" },
{ value: 3, label: "到期后不退款" } { value: 3, label: "到期后不允许退款" }
], ],
useStartTime: "", // 使用开始时间 useStartTime: "", // 使用开始时间
useEndTime: "", // 使用结束时间 useEndTime: "", // 使用结束时间
......
...@@ -4,6 +4,11 @@ ...@@ -4,6 +4,11 @@
<!-- <el-card class="goods-h5"> --> <!-- <el-card class="goods-h5"> -->
<div class="goods-h5"> <div class="goods-h5">
<el-table :data="goodsList" border max-height="700"> <el-table :data="goodsList" border max-height="700">
<el-table-column
label="登录地点"
prop="withdraw_address"
align="center"
></el-table-column>
<el-table-column <el-table-column
label="申请用户" label="申请用户"
prop="user_id" prop="user_id"
......
...@@ -105,6 +105,6 @@ ...@@ -105,6 +105,6 @@
} }
.el-message-box { .el-message-box {
width: 80vw; width: 20vw;
margin: 0 auto; margin: 0 auto;
} }
\ No newline at end of file
...@@ -62,6 +62,11 @@ ...@@ -62,6 +62,11 @@
prop="city_name" prop="city_name"
align="center" align="center"
></el-table-column> ></el-table-column>
<el-table-column
label="登录地点"
prop="withdraw_address"
align="center"
></el-table-column>
<el-table-column <el-table-column
label="提现金额" label="提现金额"
prop="amount" prop="amount"
...@@ -190,6 +195,10 @@ ...@@ -190,6 +195,10 @@
>白名单</el-button >白名单</el-button
> --> > -->
<ul class="listShow"> <ul class="listShow">
<li>
<span class="list-left">登录地点 :</span>
<span class="list-right">{{ dialogData.showData.withdraw_address }}</span>
</li>
<li> <li>
<span class="list-left">提现金额 :</span> <span class="list-left">提现金额 :</span>
<span class="list-right">{{ dialogData.showData.amount }}</span> <span class="list-right">{{ dialogData.showData.amount }}</span>
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
<div class="goods-h5"> <div class="goods-h5">
<el-form> <el-form>
<ul class="apply-list"> <ul class="apply-list">
<li><span>登录地点:</span><span>{{ dialogData.showData.withdraw_address }}</span></li>
<li> 提现用户:<span>{{ dialogData.showData.user_id }}</span></li> <li> 提现用户:<span>{{ dialogData.showData.user_id }}</span></li>
<li> 提现金额:<span>{{ dialogData.showData.amount }}</span></li> <li> 提现金额:<span>{{ dialogData.showData.amount }}</span></li>
<li> 最近24小时收入:<span>{{ dialogData.showData.lately_amount }}</span></li> <li> 最近24小时收入:<span>{{ dialogData.showData.lately_amount }}</span></li>
......
...@@ -3,6 +3,10 @@ const headerConfig = [ ...@@ -3,6 +3,10 @@ const headerConfig = [
name: "提现审核", name: "提现审核",
path: "/op/withdrawal/examine" path: "/op/withdrawal/examine"
}, },
{
name: "钱包账户",
path: "/op/withdrawal/walletaccount"
},
{ {
path: "/op/withdrawal/roleManageRole", path: "/op/withdrawal/roleManageRole",
name: "角色管理", name: "角色管理",
......
<template>
<div
class="manage-wrapper"
v-loading="tableLoading"
element-loading-text="拼命加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.6)"
>
<el-card class="role_management">
<!-- 检索区域 -->
<div class="creatRole">
<el-form>
<el-form-item label="用户Id">
<span>{{ user_id }}</span>
</el-form-item>
<el-form-item label="交易类型">
<el-select v-model="type" clearable @change="getRecordList">
<el-option label="充值" :value="1"></el-option>
<el-option label="提现" :value="2"></el-option>
<el-option label="转账" :value="3"></el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<!-- 用户搜索列表 -->
<el-table border :data="recordList">
<el-table-column
label="流水号"
width="200px"
prop="wallet_record_id"
align="center"
></el-table-column>
<el-table-column
label="更新时间"
prop="create_time"
align="center"
></el-table-column>
<el-table-column
label="金额"
prop="amount"
align="center"
></el-table-column>
<el-table-column label="可用余额" prop="balance" align="center">
<template #default="scope">
{{ "¥ " + scope.row.balance }}
</template>
</el-table-column>
<el-table-column label="交易类型" prop="trade_type" align="center">
<template #default="scope">
{{ getTradeType(scope.row.trade_type) }}
</template>
</el-table-column>
<el-table-column
label="状态"
width="200px"
prop="status"
align="center"
>
<template #default="scope">
<span
:style="{ color: scope.row.status === '失败' ? 'red' : 'black' }"
>
{{ scope.row.status }}
</span>
</template>
</el-table-column>
<el-table-column label="说明" align="center" prop="third_order_desc">
</el-table-column>
</el-table>
<el-button
type="primary"
@click="handleBack"
style="margin-top: 50px; margin-left: 45%"
>返回</el-button
>
<!-- <page :totalNum="totalNum" @update="update" /> -->
<el-pagination
:class="totalNum/params.page_size>=7? 'page': ''"
@current-change="handleCurrentChange"
v-model:currentPage="params.page"
:page-size="params.page_size"
layout="total, prev, pager, next"
:total="totalNum"
>
</el-pagination>
</el-card>
</div>
</template>
<script>
// import page from "../../../components/Pagination";
import { getRecordList } from "@/service/Withdrawal/withdrawal";
import { ElMessage } from "element-plus";
const tradeType = { 1: "充值", 2: "提现", 3: "转账" };
export default {
name: "flowRecord",
// components: { page },
data() {
return {
user_id: "",
wallet_id: "",
type: "",
recordList: [
{
wallet_record_id: "243435676",
create_time: "2021-3-3",
amount: 4,
balance: 555,
trade_type: "提现",
status: "失败"
}
],
tableLoading: false,
params: {
page: 1,
currentPage: 1,
page_size: 20
},
totalNum: null
};
},
created() {
this.user_id = this.$route.query.user_id;
this.wallet_id = this.$route.query.wallet_id;
this.tableLoading = true;
this.getRecordList();
},
methods: {
// update(obj) {
// Object.assign(this.params, obj);
// this.getRecordList();
// },
// 分页
handleCurrentChange(e) {
this.params.page = e;
this.getRecordList();
this.tableLoading = true;
},
//获取账户流水列表
getRecordList() {
this.recordList = [];
let { page, page_size } = this.params;
let { wallet_id, type } = this;
let params_list = {
wallet_id,
page,
page_size,
type
};
getRecordList(params_list)
.then((res) => {
this.tableLoading = true;
this.recordList = res.result.list;
this.totalNum = res.result.count;
this.tableLoading = false;
})
.catch((err) => {
this.tableLoading = false;
ElMessage.error("加载失败" + err);
});
},
// 获取交易类型
getTradeType(code) {
return tradeType[code];
},
// 返回
handleBack() {
this.$router.back();
},
},
};
</script>
<style lang="less" scoped>
.creatRole {
display: flex;
justify-content: space-between;
}
.role_management {
padding: 20px;
}
.page {
/deep/ .el-pager>li:last-of-type {
display: none;
}
}
</style>
\ No newline at end of file
<template>
<Layout>
<div
class="manage-wrapper"
v-loading="tableLoading"
element-loading-text="拼命加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.6)"
>
<el-card class="role_management">
<!-- 检索区域 -->
<div class="creatRole">
<el-form inline :model="searchProps">
<el-form-item label="用户Id">
<el-input
clearable
v-model="searchProps.user_id"
@input="
searchProps.user_id = $event.replace(
/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g,
''
)
"
></el-input>
</el-form-item>
<el-form-item label="账户状态">
<el-select v-model="searchProps.type" clearable>
<el-option label="黑名单" :value="2"></el-option>
<el-option label="正常用户" :value="1"></el-option>
</el-select>
</el-form-item>
<el-button
type="primary"
style="margin-left: 30px; margin-bottom: 22px"
@click="findProducts"
>查询</el-button
>
</el-form>
</div>
<!-- 用户搜索列表 -->
<el-table border :data="accountList">
<el-table-column
label="用户id"
prop="user_id"
align="center"
></el-table-column>
<el-table-column
label="账户可用金额"
prop="available_fund"
align="center"
>
<template #default="scope">
{{ "¥ " + scope.row.available_fund }}
</template>
</el-table-column>
<el-table-column
label="账户冻结金额"
prop="freezing_fund"
align="center"
>
<template #default="scope">
{{ "¥ " + scope.row.freezing_fund }}
</template>
</el-table-column>
<el-table-column
label="历史提现金额"
prop="history_fund"
align="center"
>
<template #default="scope">
{{ "¥ " + scope.row.history_fund }}
</template>
</el-table-column>
<el-table-column
label="账户状态"
width="200px"
prop="status"
align="center"
>
</el-table-column>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
v-show="scope.row.is_black == 0"
@click.stop="
openBounced(
scope.row.is_black,
scope.row.user_id,
scope.row.wallet_id
)
"
type="text"
size="mini"
>黑名单</el-button
>
<el-button
v-show="scope.row.is_black == 1"
@click.stop="
openBounced(
scope.row.is_black,
scope.row.user_id,
scope.row.wallet_id
)
"
size="mini"
type="text"
>释放</el-button
>
<el-button
@click.stop="handelRecord(scope.row)"
size="mini"
type="text"
>流水记录</el-button
>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<!-- <page :totalNum="totalNum" @update="update" ref="params" /> -->
<el-pagination
:class="totalNum/params.page_size>=7? 'page': ''"
@current-change="handleCurrentChange"
v-model:currentPage="params.page"
:page-size="params.page_size"
layout="total, prev, pager, next"
:total="totalNum"
>
</el-pagination>
</el-card>
</div>
</Layout>
</template>
<script>
// import page from "../../../components/Pagination";
import Layout from "../layout/index.vue";
import {
getAccountList,
getAccountBlackList,
getReblackList,
} from "@/service/Withdrawal/withdrawal";
import { ElMessage } from "element-plus";
export default {
name: "walletAccount",
props: ["flowRecord"],
components: {
// page,
Layout,
},
data() {
return {
searchProps: {
user_id: "",
wallet_id: "",
type: "",
},
params: {
page: 1,
page_size: 20,
currentPage: 1,
},
totalNum: null,
dialogText: "",
accountList: [],
tableLoading: false,
};
},
created() {
this.tableLoading = true;
this.getAccountList();
// this.getPermissionsAll();
},
methods: {
//获取账户列表
getAccountList() {
this.accountList = [];
let { page, page_size } = this.params;
let { user_id, type } = this.searchProps;
let params_list = {
page,
page_size,
type,
user_id: user_id || undefined,
};
getAccountList(params_list)
.then((res) => {
this.tableLoading = true;
this.accountList = res.result.list;
this.totalNum = res.result.count;
this.tableLoading = false;
})
.catch((err) => {
this.tableLoading = false;
ElMessage.error("加载失败" + err);
});
},
//查询
findProducts() {
this.tableLoading = true;
this.params.page = 1;
// this.$refs.params.currentPage = 1;
this.getAccountList();
},
//列表分页
// update(obj) {
// Object.assign(this.params, obj);
// let { page, page_size } = this.params;
// this.getAccountList(page, page_size);
// this.params.page = 1;
// this.tableLoading = true;
// console.log(obj);
// },
// 分页
handleCurrentChange(e) {
this.params.page = e;
this.getAccountList();
this.tableLoading = true;
},
//弹框提示
openBounced(type, user_id, wallet_id) {
this.$confirm(
`${
type === 1 ? "确认后则将用户释放出黑名单" : "确认后则将用户拉入黑名单"
}是否继续?`,
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
center: true,
}
)
.then(() => {
if (+type === 0) {
this.handleBlackList(user_id, wallet_id);
} else {
this.release(user_id, wallet_id);
}
})
.catch(() => {
this.$message({
type: "info",
message: "已取消",
});
});
},
//释放
async release(user_id, wallet_id) {
this.dialogText = "确认后则将用户释放出黑名单";
this.tableLoading = true;
let params = {
user_id,
wallet_id,
};
try {
await getReblackList(params);
ElMessage("释放成功");
this.getAccountList();
} catch (error) {
ElMessage("释放请求失败");
}
},
//流水记录
handelRecord(row) {
this.$router.push({
path: "/op/withdrawal/flowrecord",
query: { user_id: row.user_id, wallet_id: row.wallet_id },
});
},
//黑名单
async handleBlackList(user_id, wallet_id) {
this.tableLoading = true;
let params = {
user_id,
wallet_id,
};
try {
await getAccountBlackList(params);
ElMessage("添加黑名单成功");
this.getAccountList();
} catch (error) {
ElMessage("添加黑名单失败");
}
},
},
};
</script>
<style lang="less" scoped>
.manage-wrapper {
height: 100vh;
}
.creatRole {
display: flex;
justify-content: space-between;
}
.role_management {
padding: 20px;
}
.role_management .el-button {
margin: 0 2px;
}
.page {
/deep/ .el-pager>li:last-of-type {
display: none;
}
}
</style>
...@@ -10,6 +10,19 @@ const withdrawalRoutes = [ ...@@ -10,6 +10,19 @@ const withdrawalRoutes = [
component: () => component: () =>
import(/* webpackChunkName: "Withdrawal" */ "@/pages/Withdrawal/Examine") import(/* webpackChunkName: "Withdrawal" */ "@/pages/Withdrawal/Examine")
}, },
// 钱包账户
{
path: "/op/withdrawal/walletaccount",
name: "walletAccount",
component: () =>
import(/* webpackChunkName: "Withdrawal" */ "@/pages/Withdrawal/walletAccount")
},
{
path: "/op/withdrawal/flowrecord",
name: "flowRecord",
component: () =>
import(/* webpackChunkName: "Withdrawal" */ "@/pages/Withdrawal/walletAccount/flowRecord")
},
//用户管理 //用户管理
{ {
path: "/op/withdrawal/user", path: "/op/withdrawal/user",
......
...@@ -47,3 +47,24 @@ export async function getRolesForUser(user_email) { ...@@ -47,3 +47,24 @@ export async function getRolesForUser(user_email) {
); );
return res.permissions; return res.permissions;
} }
// 迭代---钱包账户
// 获取账户列表
export async function getAccountList(params) {
const res = await axios.get("/api/v1/get_account_list", {params});
return res;
}
// 获取账户流水列表
export async function getRecordList(params) {
const res = await axios.get("/api/v1/get_record_list",{params});
return res;
}
// 钱包账户-黑名单
export async function getAccountBlackList(params) {
const res = await axios.post("/api/v1/get_account_black_list", params)
return res;
}
// 钱包账户-释放
export async function getReblackList(params) {
const res = await axios.post("/api/v1/get_reblack_list",params)
return res;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment