diff --git a/src/api/agent.js b/src/api/agent.js index 474543d..c6c387b 100644 --- a/src/api/agent.js +++ b/src/api/agent.js @@ -218,8 +218,12 @@ export function getWithdrawalList(params) { * 申请提现 * @param {object} params - 提现参数 * @param {number} params.amount - 提现金额 - * @param {string} params.payee_account - 收款账户 - * @param {string} params.payee_name - 收款人姓名 + * @param {number} params.withdraw_method - 提现方式:1=支付宝,2=银行卡 + * @param {string} params.payee_account - 收款账户(支付宝) + * @param {string} params.payee_name - 收款人姓名/持卡人姓名 + * @param {string} params.bank_name - 开户行(银行卡) + * @param {string} params.bank_card_no - 银行卡号(银行卡) + * @param {string} params.bank_reserved_mobile - 银行预留手机号(银行卡) */ export function applyWithdrawal(params) { return useApiFetch("/agent/withdrawal/apply").post(params).json(); diff --git a/src/views/Withdraw.vue b/src/views/Withdraw.vue index 83a7a8f..49963d0 100644 --- a/src/views/Withdraw.vue +++ b/src/views/Withdraw.vue @@ -23,26 +23,32 @@
- 已向 - {{ - alipayAccount - }} - 转账 + 已提交至 + {{ transferTargetText }}
¥{{ amount }} @@ -326,10 +360,17 @@ const statusMessages = { }; // 表单数据 +const withdrawMethod = ref(1); const alipayAccount = ref(""); +const bankCardNo = ref(""); +const bankName = ref(""); +const bankReservedMobile = ref(""); const amount = ref(0); const availableAmount = ref(null); const realName = ref(""); +const transferTargetText = computed(() => + withdrawMethod.value === 1 ? alipayAccount.value : `银行卡(${bankCardNo.value})` +); const getData = async () => { const { data, error } = await getRevenueInfo(); @@ -359,8 +400,24 @@ const validateForm = () => { return false; } if (!alipayAccount.value.trim()) { - showToast("请输入支付宝账号"); - return false; + if (withdrawMethod.value === 1) { + showToast("请输入支付宝账号"); + return false; + } + } + if (withdrawMethod.value === 2) { + if (!/^\d{13,19}$/.test((bankCardNo.value || "").trim())) { + showToast("请输入正确的银行卡号"); + return false; + } + if (!bankName.value.trim()) { + showToast("请输入开户行"); + return false; + } + if (!/^1[3-9]\d{9}$/.test((bankReservedMobile.value || "").trim())) { + showToast("请输入正确的预留手机号"); + return false; + } } const amountNum = Number(amount.value); @@ -409,10 +466,17 @@ const confirmWithdraw = async () => { isSubmitting.value = true; try { const { applyWithdrawal } = await import('@/api/agent'); - const { data, error } = await applyWithdrawal({ - payee_account: alipayAccount.value, + const payload = { + withdraw_method: Number(withdrawMethod.value), amount: Number(amount.value), payee_name: realName.value, + payee_account: withdrawMethod.value === 1 ? alipayAccount.value : "", + bank_name: withdrawMethod.value === 2 ? bankName.value : "", + bank_card_no: withdrawMethod.value === 2 ? bankCardNo.value : "", + bank_reserved_mobile: withdrawMethod.value === 2 ? bankReservedMobile.value : "", + }; + const { data, error } = await applyWithdrawal({ + ...payload, }); if (data.value?.code === 200 && !error.value) { status.value = 1; // 新系统:申请后状态为1(待审核) @@ -448,6 +512,9 @@ const fillMaxAmount = () => { const resetForm = () => { status.value = null; alipayAccount.value = ""; + bankCardNo.value = ""; + bankName.value = ""; + bankReservedMobile.value = ""; amount.value = ""; realName.value = ""; }; @@ -506,4 +573,24 @@ const resetForm = () => { .pointer-events-none { pointer-events: none; } + +.withdraw-method-btn { + min-width: 108px; + height: 38px; + padding: 0 16px; + border-radius: 9999px; + border: 1px solid var(--van-border-color); + background: #ffffff; + color: var(--van-text-color-2); + font-size: 14px; + font-weight: 600; + transition: all 0.2s ease; +} + +.withdraw-method-btn.active { + border-color: var(--van-theme-primary); + background: var(--van-theme-primary); + color: #fff; + box-shadow: 0 4px 12px rgba(16, 185, 129, 0.25); +}