fix: restore payment account details

This commit is contained in:
richjohnrambo
2026-10-19 11:14:09 +08:00
parent 21371061ed
commit 1c11c0fa82
5 changed files with 126 additions and 86 deletions
+2 -13
View File
@@ -52,15 +52,10 @@
<AsyncState v-else-if="formType === 'bank'" :loading="bankLoading" :error="bankLoadError" @retry="loadPaymentAccounts">
<form class="m-plain-form m-bank-form" @submit.prevent="saveBank">
<p v-if="existingAccount?.masked" class="m-bound-account-hint">历史资料无法完整读取,请重新填写姓名、身份证号和银行卡号后保存</p>
<p v-if="existingAccount?.masked" class="m-bound-account-hint">历史资料无法完整读取,请重新填写姓名和银行卡号后保存</p>
<label
><span>姓名</span><input v-model.trim="bank.holder_name" placeholder="请输入姓名"
/></label>
<label
><span>身份证号</span
><input v-model.trim="bank.identity_no" maxlength="18" placeholder="请输入你的身份证号"
/></label>
<div class="m-bank-form__divider"></div>
<label
><span>银行卡号</span
><input v-model.trim="bank.account_no" inputmode="numeric" placeholder="请输入你的银行卡号"
@@ -266,7 +261,6 @@
id: number;
bank_name: string;
holder_name: string;
identity_no: string;
account_no: string;
digital_rmb_code: string;
wechat_qr_url: string;
@@ -282,7 +276,6 @@
const bank = reactive({
bank_name: '',
holder_name: '',
identity_no: '',
account_no: '',
digital_rmb_code: '',
wechat_qr_attachment_id: 0,
@@ -344,7 +337,7 @@
bankLoadError.value = '';
error.value = '';
existingAccount.value = null;
Object.assign(bank, { bank_name: '', holder_name: '', identity_no: '', account_no: '', digital_rmb_code: '',
Object.assign(bank, { bank_name: '', holder_name: '', account_no: '', digital_rmb_code: '',
wechat_qr_attachment_id: 0, alipay_qr_attachment_id: 0 });
qr.wechat.url = '';
qr.alipay.url = '';
@@ -359,7 +352,6 @@
bank.alipay_qr_attachment_id = account.alipay_qr_attachment_id;
if (!account.masked) {
bank.holder_name = account.holder_name;
bank.identity_no = account.identity_no;
bank.account_no = account.account_no;
bank.digital_rmb_code = account.digital_rmb_code;
}
@@ -371,14 +363,11 @@
}
async function saveBank() {
error.value = '';
const identityNo = bank.identity_no.replace(/[ -]/g, '');
const accountNo = bank.account_no.replace(/[ -]/g, '');
const digitalRMBCode = bank.digital_rmb_code.replace(/[ -]/g, '');
const validationError =
bank.holder_name.length < 2
? '请输入至少 2 个字符的姓名'
: !/^[1-9]\d{14}(?:\d{2}[\dXx])?$/.test(identityNo)
? '请输入正确的 15 位或 18 位身份证号'
: !/^\d{8,32}$/.test(accountNo)
? '请输入 8 至 32 位银行卡号'
: bank.bank_name.length < 2