diff --git a/apps/web/src/pages/health/PointsProductList.tsx b/apps/web/src/pages/health/PointsProductList.tsx index ce4e09f..941cb67 100644 --- a/apps/web/src/pages/health/PointsProductList.tsx +++ b/apps/web/src/pages/health/PointsProductList.tsx @@ -128,10 +128,12 @@ export default function PointsProductList() { description?: string; sort_order?: number; }; + // 保存时去掉 URL 中的 ?token= 参数(token 是临时的,不应持久化) + const cleanImageUrl = imageUrl ? imageUrl.replace(/\?token=.*$/, '') : undefined; if (editing) { await pointsApi.updateProduct(editing.id, { ...typed, - image_url: imageUrl || undefined, + image_url: cleanImageUrl, version: editing.version, }); } else { @@ -141,7 +143,7 @@ export default function PointsProductList() { points_cost: typed.points_cost, stock: typed.stock, description: typed.description, - image_url: imageUrl || undefined, + image_url: cleanImageUrl, sort_order: typed.sort_order, }; await pointsApi.createProduct(req); @@ -149,8 +151,9 @@ export default function PointsProductList() { message.success(editing ? '更新成功' : '创建成功'); handleCloseDrawer(); refresh(page); - } catch { - message.error(editing ? '更新失败' : '创建失败'); + } catch (err: unknown) { + const apiMsg = (err as { response?: { data?: { message?: string } } })?.response?.data?.message; + message.error(apiMsg || (editing ? '更新失败' : '创建失败')); } };