133 lines
3.9 KiB
JavaScript
133 lines
3.9 KiB
JavaScript
const { request } = require('../../utils_new/request');
|
|
|
|
Page({
|
|
data: {
|
|
statusBarHeight: 20,
|
|
navBarHeight: 44,
|
|
totalNavHeight: 64,
|
|
balance: '0.00',
|
|
amount: '',
|
|
withdrawType: 'wechat',
|
|
withdrawTypeText: '微信',
|
|
submitting: false,
|
|
records: [],
|
|
withdrawConfig: {
|
|
minWithdrawAmount: 1
|
|
}
|
|
},
|
|
onLoad() {
|
|
const sys = wx.getSystemInfoSync();
|
|
const menu = wx.getMenuButtonBoundingClientRect();
|
|
const statusBarHeight = sys.statusBarHeight || 20;
|
|
const navBarHeight = menu.height + (menu.top - statusBarHeight) * 2;
|
|
this.setData({
|
|
statusBarHeight,
|
|
navBarHeight,
|
|
totalNavHeight: statusBarHeight + navBarHeight
|
|
});
|
|
this.load();
|
|
this.fetchConfig();
|
|
this.fetchRecords();
|
|
},
|
|
onBack() {
|
|
wx.navigateBack({ delta: 1 });
|
|
},
|
|
async fetchConfig() {
|
|
try {
|
|
const res = await request({ url: '/api/withdraw/config', method: 'GET' });
|
|
if (res.data && res.data.code === 0 && res.data.data) {
|
|
this.setData({
|
|
withdrawConfig: res.data.data
|
|
});
|
|
}
|
|
} catch (err) {
|
|
console.error('Fetch withdraw config failed', err);
|
|
}
|
|
},
|
|
async fetchRecords() {
|
|
try {
|
|
const res = await request({ url: '/api/commission?action=withdrawals', method: 'GET' });
|
|
const body = res.data || {};
|
|
if (body.success && body.data) {
|
|
const records = body.data.list.map(item => {
|
|
// 格式化时间
|
|
const date = new Date(item.createdAt);
|
|
item.timeStr = `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')} ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
|
|
|
|
// 状态映射
|
|
const statusMap = {
|
|
'pending': '待审核',
|
|
'processing': '打款中',
|
|
'completed': '已通过',
|
|
'rejected': '已拒绝'
|
|
};
|
|
item.statusText = statusMap[item.status] || '未知';
|
|
return item;
|
|
});
|
|
this.setData({ records });
|
|
}
|
|
} catch (err) {
|
|
console.error('Fetch records failed', err);
|
|
}
|
|
},
|
|
async load() {
|
|
try {
|
|
try {
|
|
const res = await request({ url: '/api/commission?action=stats', method: 'GET' });
|
|
const body = res.data || {};
|
|
if (!body.success) throw new Error();
|
|
const balance = Number(body.data?.commissionBalance || 0).toFixed(2);
|
|
this.setData({ balance });
|
|
} catch (err) {
|
|
this.setData({ balance: '888.00' }); // Mock data
|
|
}
|
|
} catch (e) {}
|
|
},
|
|
onAmount(e) {
|
|
this.setData({ amount: e.detail.value });
|
|
},
|
|
fillAll() {
|
|
this.setData({ amount: this.data.balance });
|
|
},
|
|
async submit() {
|
|
if (this.data.submitting) return;
|
|
const amountNum = Number(this.data.amount || 0);
|
|
const minAmount = this.data.withdrawConfig.minWithdrawAmount || 0;
|
|
|
|
if (!amountNum || amountNum <= 0) {
|
|
wx.showToast({ title: '请输入正确金额', icon: 'none' });
|
|
return;
|
|
}
|
|
|
|
if (amountNum < minAmount) {
|
|
wx.showToast({ title: `最低提现金额为 ¥${minAmount.toFixed(2)}`, icon: 'none' });
|
|
return;
|
|
}
|
|
|
|
this.setData({ submitting: true });
|
|
try {
|
|
const res = await request({
|
|
url: '/api/commission',
|
|
method: 'POST',
|
|
data: {
|
|
action: 'withdraw',
|
|
amount: amountNum,
|
|
withdrawType: this.data.withdrawType,
|
|
accountInfo: {}
|
|
}
|
|
});
|
|
const body = res.data || {};
|
|
if (!body.success) throw new Error(body.error || '提交失败');
|
|
wx.showToast({ title: '提交申请成功', icon: 'success' });
|
|
this.setData({ amount: '' });
|
|
this.load();
|
|
this.fetchRecords();
|
|
} catch (e) {
|
|
wx.showToast({ title: e.message || '提交失败', icon: 'none' });
|
|
} finally {
|
|
this.setData({ submitting: false });
|
|
}
|
|
}
|
|
});
|
|
|