feat(store): separate login phone from public contactPhone
Store.phone stays login/boss; contactPhone is C-end dial. Public store APIs keep phone compat via publicDial mapping. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -56,6 +56,7 @@ type StoreCategoryNode = {
|
||||
|
||||
type FieldErrors = {
|
||||
phone?: string;
|
||||
contactPhone?: string;
|
||||
};
|
||||
|
||||
|
||||
@@ -237,9 +238,17 @@ export default function StoreCreatePage() {
|
||||
|
||||
setSubmitError('');
|
||||
|
||||
if ('phone' in patch) {
|
||||
if ('phone' in patch || 'contactPhone' in patch) {
|
||||
|
||||
setFieldErrors((prev) => ({ ...prev, phone: undefined }));
|
||||
setFieldErrors((prev) => ({
|
||||
|
||||
...prev,
|
||||
|
||||
...('phone' in patch ? { phone: undefined } : {}),
|
||||
|
||||
...('contactPhone' in patch ? { contactPhone: undefined } : {}),
|
||||
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
@@ -315,7 +324,9 @@ export default function StoreCreatePage() {
|
||||
const msg = validateStoreStep3(form);
|
||||
if (msg) {
|
||||
if (isPhoneValidationMessage(msg)) {
|
||||
setFieldErrors({ phone: msg });
|
||||
setFieldErrors(
|
||||
msg.includes('联系电话') ? { contactPhone: msg } : { phone: msg },
|
||||
);
|
||||
reportStepError(msg);
|
||||
return;
|
||||
}
|
||||
@@ -336,7 +347,9 @@ export default function StoreCreatePage() {
|
||||
|
||||
if (msg) {
|
||||
if (isPhoneValidationMessage(msg)) {
|
||||
setFieldErrors({ phone: msg });
|
||||
setFieldErrors(
|
||||
msg.includes('联系电话') ? { contactPhone: msg } : { phone: msg },
|
||||
);
|
||||
return;
|
||||
}
|
||||
reportFormError(msg);
|
||||
@@ -441,6 +454,8 @@ export default function StoreCreatePage() {
|
||||
|
||||
phone: form.phone.trim(),
|
||||
|
||||
contactPhone: form.contactPhone.trim() || form.phone.trim(),
|
||||
|
||||
district: form.district.trim(),
|
||||
|
||||
address: form.address.trim(),
|
||||
@@ -1089,7 +1104,43 @@ export default function StoreCreatePage() {
|
||||
|
||||
<p className="label-md text-muted" style={{ marginTop: 8 }}>
|
||||
|
||||
该手机号将作为门店端登录账号。
|
||||
老板手机号,作为门店端主账号登录凭证。
|
||||
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div className="partner-field">
|
||||
|
||||
<label>联系电话 <span className="text-primary">*</span></label>
|
||||
|
||||
<div className="partner-field-input">
|
||||
|
||||
<span className="material-symbols-outlined">phone_in_talk</span>
|
||||
|
||||
<input
|
||||
|
||||
type="tel"
|
||||
|
||||
placeholder="店长或对外可拨打号码"
|
||||
|
||||
value={form.contactPhone}
|
||||
|
||||
onChange={(e) => patchForm({ contactPhone: e.target.value })}
|
||||
|
||||
/>
|
||||
|
||||
</div>
|
||||
|
||||
{fieldErrors.contactPhone && (
|
||||
|
||||
<p className="partner-field-error" role="alert">{fieldErrors.contactPhone}</p>
|
||||
|
||||
)}
|
||||
|
||||
<p className="label-md text-muted" style={{ marginTop: 8 }}>
|
||||
|
||||
用户端门店详情展示与拨号使用此号码,可与登录号不同。
|
||||
|
||||
</p>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user