fix: 提现展示并校验可提现余额
排除处理中提现金额,防止重复提现超过总额。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -20,10 +20,13 @@
|
||||
</view>
|
||||
<view class="merchant-side">
|
||||
<view class="merchant-balance">¥{{ formatMoney(item.balance) }}</view>
|
||||
<view class="merchant-meta" v-if="Number(item.pendingAmount || 0) > 0">
|
||||
处理中提现:¥{{ formatMoney(item.pendingAmount) }},可提现:¥{{ formatMoney(item.availableBalance) }}
|
||||
</view>
|
||||
<view class="summary-actions">
|
||||
<el-button size="small" :loading="balanceQuery[item.accNo]" @click="queryBalance(item)">查询余额</el-button>
|
||||
<el-button type="warning" size="small" icon="el-icon-wallet"
|
||||
:disabled="Number(item.balance || 0) <= 0"
|
||||
:disabled="Number(item.availableBalance || 0) <= 0"
|
||||
@click="openWithdrawDialog(item)">提现</el-button>
|
||||
</view>
|
||||
</view>
|
||||
@@ -53,8 +56,15 @@
|
||||
<el-form-item label="当前余额">
|
||||
<view class="withdraw-balance">¥{{ formatMoney(withdrawDialog.form.balance) }}</view>
|
||||
</el-form-item>
|
||||
<el-form-item label="处理中提现" v-if="Number(withdrawDialog.form.pendingAmount || 0) > 0">
|
||||
<view class="withdraw-company">¥{{ formatMoney(withdrawDialog.form.pendingAmount) }}</view>
|
||||
</el-form-item>
|
||||
<el-form-item label="可提现余额">
|
||||
<view class="withdraw-balance">¥{{ formatMoney(withdrawDialog.form.availableBalance) }}</view>
|
||||
</el-form-item>
|
||||
<el-form-item label="提现金额" required>
|
||||
<el-input-number v-model="withdrawDialog.form.amount" :min="0" :precision="2" :step="100"
|
||||
:max="Number(withdrawDialog.form.availableBalance || 0)"
|
||||
controls-position="right" style="width: 100%;"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="说明">
|
||||
@@ -109,6 +119,8 @@ export default {
|
||||
accNo: item.accNo,
|
||||
merchantName: item.label,
|
||||
balance: 0,
|
||||
pendingAmount: 0,
|
||||
availableBalance: 0,
|
||||
updateTime: ""
|
||||
})),
|
||||
table1: {
|
||||
@@ -197,6 +209,8 @@ export default {
|
||||
merchantId: "",
|
||||
merchantName: "",
|
||||
balance: 0,
|
||||
pendingAmount: 0,
|
||||
availableBalance: 0,
|
||||
amount: 0,
|
||||
description: ""
|
||||
}
|
||||
@@ -250,10 +264,17 @@ export default {
|
||||
}, {});
|
||||
that.balanceInfoList = merchantOptions.map(item => {
|
||||
const current = serverMap[item.accNo] || {};
|
||||
const balance = Number(current.balance || 0);
|
||||
const pendingAmount = Number(current.pendingAmount || 0);
|
||||
const availableBalance = current.availableBalance !== undefined && current.availableBalance !== null
|
||||
? Number(current.availableBalance || 0)
|
||||
: Math.max(0, balance - pendingAmount);
|
||||
return {
|
||||
accNo: item.accNo,
|
||||
merchantName: current.merchantName || item.label,
|
||||
balance: Number(current.balance || 0),
|
||||
balance,
|
||||
pendingAmount,
|
||||
availableBalance,
|
||||
updateTime: current.updateTime || ""
|
||||
};
|
||||
});
|
||||
@@ -279,14 +300,22 @@ export default {
|
||||
}
|
||||
},
|
||||
openWithdrawDialog(item) {
|
||||
if (Number(item.balance || 0) <= 0) {
|
||||
vk.toast("当前企业余额小于等于0,无法提现");
|
||||
const availableBalance = Number(item.availableBalance || 0);
|
||||
if (availableBalance <= 0) {
|
||||
const pendingAmount = Number(item.pendingAmount || 0);
|
||||
vk.toast(
|
||||
pendingAmount > 0
|
||||
? `可提现余额不足(处理中提现¥${that.formatMoney(pendingAmount)}已占用)`
|
||||
: "当前企业余额小于等于0,无法提现"
|
||||
);
|
||||
return;
|
||||
}
|
||||
that.withdrawDialog.form = {
|
||||
merchantId: item.accNo,
|
||||
merchantName: item.merchantName,
|
||||
balance: Number(item.balance || 0),
|
||||
pendingAmount: Number(item.pendingAmount || 0),
|
||||
availableBalance,
|
||||
amount: 0,
|
||||
description: ""
|
||||
};
|
||||
@@ -309,38 +338,25 @@ export default {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const res = await vk.request({
|
||||
method: "POST",
|
||||
url: "http://jjx-union-pay.gxwebsoft.com/api/union-pay-jjx/getActionLog",
|
||||
header: {
|
||||
"content-type": "application/json; charset=utf-8"
|
||||
},
|
||||
const res = await vk.callFunction({
|
||||
url: "admin/finance/balance/sys/getActionLog",
|
||||
data: {
|
||||
accNo,
|
||||
reqDate,
|
||||
reqJournalNo
|
||||
},
|
||||
timeout: 60000
|
||||
reqJournalNo,
|
||||
logId: row && row._id ? row._id : ""
|
||||
}
|
||||
});
|
||||
const code = Number(res && res.code);
|
||||
const success = res && (
|
||||
code === 0 ||
|
||||
code === 200 ||
|
||||
res.success === true ||
|
||||
(typeof res.code === "undefined" && !res.msg && !res.message)
|
||||
const status = that.getActionStatusValue(res) || (
|
||||
res && res.data && res.data.status !== undefined && res.data.status !== null
|
||||
? Number(res.data.status)
|
||||
: ""
|
||||
);
|
||||
if (!success) {
|
||||
throw new Error(
|
||||
(res && (res.msg || res.message)) ||
|
||||
(res && res.content && (res.content.msg || res.content.message)) ||
|
||||
"查询状态失败"
|
||||
);
|
||||
}
|
||||
const status = that.getActionStatusValue(res);
|
||||
const statusText = that.formatStatus(status);
|
||||
const statusText = that.formatStatus(status) || (res && res.data && res.data.statusText) || "";
|
||||
if (status !== "" && row && row._id) {
|
||||
row.status = status;
|
||||
}
|
||||
await that.getBalanceSummary();
|
||||
vk.toast(statusText || "未识别到状态");
|
||||
console.log("getActionLog", res);
|
||||
} catch (err) {
|
||||
@@ -348,7 +364,7 @@ export default {
|
||||
}
|
||||
},
|
||||
async submitWithdraw() {
|
||||
const { amount, description, merchantId, balance } = that.withdrawDialog.form;
|
||||
const { amount, description, merchantId, availableBalance, pendingAmount } = that.withdrawDialog.form;
|
||||
if (!merchantId) {
|
||||
vk.toast("提现账号不能为空");
|
||||
return;
|
||||
@@ -357,12 +373,20 @@ export default {
|
||||
vk.toast("提现金额必须大于0");
|
||||
return;
|
||||
}
|
||||
if (Number(balance || 0) <= 0) {
|
||||
vk.toast("当前企业余额小于等于0,无法提现");
|
||||
if (Number(availableBalance || 0) <= 0) {
|
||||
vk.toast(
|
||||
Number(pendingAmount || 0) > 0
|
||||
? `可提现余额不足(处理中提现¥${that.formatMoney(pendingAmount)}已占用)`
|
||||
: "当前企业余额小于等于0,无法提现"
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (Number(amount) > Number(balance || 0)) {
|
||||
vk.toast("提现金额不能大于当前企业余额");
|
||||
if (Number(amount) > Number(availableBalance || 0)) {
|
||||
vk.toast(
|
||||
Number(pendingAmount || 0) > 0
|
||||
? `提现金额不能大于可提现余额¥${that.formatMoney(availableBalance)}(已排除处理中提现)`
|
||||
: "提现金额不能大于当前企业余额"
|
||||
);
|
||||
return;
|
||||
}
|
||||
that.withdrawDialog.loading = true;
|
||||
|
||||
Reference in New Issue
Block a user