feat(v3.4.15): HQ store media edit and package images up to 20

Allow HQ to replace/delete store photos; support multi-image packages with a 20-image cap.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-07 19:24:07 +08:00
parent 0692bebf07
commit 76375eff83
19 changed files with 657 additions and 302 deletions
@@ -1,6 +1,7 @@
import { useCallback, useState } from 'react';
import { View, Text, Image } from '@tarojs/components';
import Taro, { useLoad, useRouter } from '@tarojs/taro';
import { normalizeStorePackageImageUrls } from '@dukang/shared-types';
import PageShell from '../../components/PageShell';
import PageNavBar from '../../components/PageNavBar';
import { request, toast } from '../../lib/api';
@@ -12,6 +13,7 @@ type StorePackage = {
usableTime?: string | null;
otherNotes?: string | null;
imageUrl?: string | null;
imageUrls?: string[] | null;
};
type Store = {
@@ -97,8 +99,8 @@ export default function StorePackageDetailPage() {
}
}
function previewImage(url: string) {
Taro.previewImage({ urls: [url], current: url }).catch(() => toast('无法预览图片'));
function previewImage(urls: string[], current: string) {
Taro.previewImage({ urls, current }).catch(() => toast('无法预览图片'));
}
if (loading) {
@@ -119,7 +121,7 @@ export default function StorePackageDetailPage() {
);
}
const imageUrl = (pkg.imageUrl || '').trim();
const imageUrls = normalizeStorePackageImageUrls(pkg);
return (
<PageShell variant="scroll" className="store-package-detail-page">
@@ -137,18 +139,19 @@ export default function StorePackageDetailPage() {
) : null}
</View>
{imageUrl ? (
{imageUrls.map((url) => (
<View
key={url}
className="store-package-detail-photo"
onClick={() => previewImage(imageUrl)}
onClick={() => previewImage(imageUrls, url)}
>
<Image
className="store-package-detail-photo-image"
src={imageUrl}
src={url}
mode="widthFix"
/>
</View>
) : null}
))}
<View className="store-package-detail-content">
<View className="store-detail-package-field">