49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
export type StoreCreateForm = {
|
|
partnerAccountId: string;
|
|
cityId: string;
|
|
regionCodes?: string[];
|
|
province?: string;
|
|
city?: string;
|
|
district: string;
|
|
districtCode?: string;
|
|
name: string;
|
|
phone: string;
|
|
address: string;
|
|
intro?: string;
|
|
coverUrl?: string;
|
|
envPhotoUrls?: string[];
|
|
contractUrl?: string;
|
|
bankAccountName: string;
|
|
bankAccountNo: string;
|
|
bankBranch: string;
|
|
settlementRate?: number;
|
|
};
|
|
|
|
const PHONE_RE = /^1\d{10}$/;
|
|
const BANK_RE = /^\d{16,19}$/;
|
|
|
|
export function validateStoreCreateStep1(
|
|
form: Pick<StoreCreateForm, 'partnerAccountId' | 'cityId' | 'regionCodes' | 'name' | 'phone' | 'address' | 'intro'>,
|
|
): string | null {
|
|
if (!form.partnerAccountId) return '请选择开城合伙人';
|
|
if (!form.regionCodes || form.regionCodes.length < 3) return '请选择省 / 市 / 区县';
|
|
if (!form.cityId) return '所选地区未匹配到开城城市,请先在「开城 → 城市」配置对应区划';
|
|
if (!form.name?.trim()) return '请填写门店名称';
|
|
if (!form.phone?.trim()) return '请填写门店手机号';
|
|
if (!PHONE_RE.test(form.phone.trim())) return '门店手机号须为11位手机号';
|
|
if (!form.address?.trim()) return '请填写详细地址';
|
|
if (form.intro?.trim()) {
|
|
const len = form.intro.trim().length;
|
|
if (len < 10 || len > 500) return '门店简介须为 10~500 字';
|
|
}
|
|
return null;
|
|
}
|
|
|
|
export function validateStoreCreateStep3(form: Pick<StoreCreateForm, 'bankAccountName' | 'bankAccountNo' | 'bankBranch'>): string | null {
|
|
if (!form.bankAccountName?.trim()) return '请填写户主姓名';
|
|
if (!form.bankAccountNo?.trim()) return '请填写银行卡号';
|
|
if (!BANK_RE.test(form.bankAccountNo.replace(/\s/g, ''))) return '银行卡号须为 16~19 位数字';
|
|
if (!form.bankBranch?.trim()) return '请填写开户支行';
|
|
return null;
|
|
}
|