feat(store): benefit coupon usage rules and show env photos on store detail
CI / verify (pull_request) Has been cancelled

Add benefitUsageRule on store create/edit (HQ + partner) and C-end detail between intro and env gallery.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-27 23:25:18 +08:00
parent ea8152ebf3
commit fc03905777
10 changed files with 119 additions and 6 deletions
+5
View File
@@ -14,6 +14,7 @@ export type StoreCreateForm = {
latitude?: number | null;
longitude?: number | null;
intro?: string;
benefitUsageRule?: string;
openTime?: string;
closeTime?: string;
openTime2?: string;
@@ -48,6 +49,7 @@ export function validateStoreCreateStep1(
| 'phone'
| 'address'
| 'intro'
| 'benefitUsageRule'
| 'openTime'
| 'closeTime'
| 'openTime2'
@@ -88,6 +90,9 @@ export function validateStoreCreateStep1(
const len = form.intro.trim().length;
if (len < 2 || len > 500) return '门店简介须为 2~500 字';
}
if (form.benefitUsageRule?.trim() && form.benefitUsageRule.trim().length > 1000) {
return '好客权益券使用规则最多 1000 字';
}
return null;
}
+18 -1
View File
@@ -504,6 +504,7 @@ export default function StoresPage() {
}
: {}),
intro: values.intro?.trim() || undefined,
benefitUsageRule: values.benefitUsageRule?.trim() || undefined,
openTime: values.openTime?.trim() || '10:00',
closeTime: values.closeTime?.trim() || '22:00',
...(values.openTime2?.trim() && values.closeTime2?.trim()
@@ -585,6 +586,7 @@ export default function StoresPage() {
name: d.name,
phone: d.phone,
intro: d.intro,
benefitUsageRule: d.benefitUsageRule,
coverUrl: d.coverUrl,
address: d.address,
district: d.district,
@@ -688,6 +690,7 @@ export default function StoresPage() {
phone: v.phone,
coverUrl: v.coverUrl,
intro: v.intro,
benefitUsageRule: v.benefitUsageRule ?? null,
district: v.district,
address: v.address,
avgPrice: v.avgPrice,
@@ -797,7 +800,14 @@ export default function StoresPage() {
<Form.Item name="coverUrl" label="封面图">
<OssUpload bizType="STORE_TITLE" mediaType="IMAGE" />
</Form.Item>
<Form.Item name="intro" label="介绍"><Input.TextArea rows={4} /></Form.Item>
<Form.Item name="intro" label="介绍"><Input.TextArea rows={4} showCount maxLength={500} /></Form.Item>
<Form.Item
name="benefitUsageRule"
label="好客权益券使用规则"
extra="展示在用户端门店详情「门店详情」下方"
>
<Input.TextArea rows={4} placeholder="选填,最多1000字" showCount maxLength={1000} />
</Form.Item>
<Form.Item name="district" label="区县"><Input /></Form.Item>
<Form.Item name="address" label="详细地址"><Input /></Form.Item>
<Space wrap style={{ width: '100%' }}>
@@ -1031,6 +1041,13 @@ export default function StoresPage() {
<Form.Item name="intro" label="门店简介">
<Input.TextArea rows={3} placeholder="选填,2~500字" showCount maxLength={500} />
</Form.Item>
<Form.Item
name="benefitUsageRule"
label="好客权益券使用规则"
extra="展示在用户端门店详情"
>
<Input.TextArea rows={3} placeholder="选填,最多1000字" showCount maxLength={1000} />
</Form.Item>
</div>
<div style={{ display: createStep === 1 ? 'block' : 'none' }}>
<Typography.Paragraph type="secondary">