fix(admin): save packages when clicking store 保存修改

HQ users were uploading package images then clicking drawer 保存修改, which only persisted store media and never PUT packages.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-07 21:36:28 +08:00
parent df546ff39f
commit a598d1cd30
3 changed files with 307 additions and 254 deletions
@@ -39,9 +39,19 @@ export default function MultiOssUploadField({
const [error, setError] = useState('');
const urls = normalizeUrls(value);
const urlsRef = useRef(urls);
const onChangeRef = useRef(onChange);
const remaining = Math.max(0, maxCount - urls.length);
const inWechat = isWechatEnv();
useEffect(() => {
urlsRef.current = urls;
}, [urls]);
useEffect(() => {
onChangeRef.current = onChange;
}, [onChange]);
useEffect(() => {
if (!inWechat) return;
void weixinSdk.init().catch(() => {});
@@ -53,7 +63,7 @@ export default function MultiOssUploadField({
}
async function uploadFiles(files: File[]) {
const current = normalizeUrls(value);
const current = urlsRef.current;
const room = Math.max(0, maxCount - current.length);
const picked = files.slice(0, room);
if (!picked.length) {
@@ -70,7 +80,9 @@ export default function MultiOssUploadField({
appended.push(result.url);
}
if (appended.length) {
onChange?.([...current, ...appended]);
const next = [...urlsRef.current, ...appended];
urlsRef.current = next;
onChangeRef.current?.(next);
toastSuccess(`已上传 ${appended.length}`);
}
} catch (e) {