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, ): 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): 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; }