From fd94fb80c19f7823335d2168d7a4ba7ad3a8fd66 Mon Sep 17 00:00:00 2001 From: shanshanzhong Date: Fri, 17 Jul 2026 00:18:02 -0700 Subject: [PATCH] =?UTF-8?q?feat(=E6=8A=BD=E5=A5=96):=20=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8C=89=E9=92=AE=20+=20=E6=A0=BC=E5=AD=90?= =?UTF-8?q?=E6=95=B0=E5=8F=AF=E9=80=89(8/9,=E9=BB=98=E8=AE=A48)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 活动列表加"删除"(ConfirmButton→DELETE /activities/:id) - activity-form 格子数选项 [8,9],新建默认 8(原来写死只有 9) - service: deleteLotteryActivity;i18n 删除文案 Co-Authored-By: Claude Opus 4.8 (1M context) --- .../public/assets/locales/en-US/lottery.json | 6 ++++- .../public/assets/locales/zh-CN/lottery.json | 6 ++++- .../src/sections/lottery/activity-form.tsx | 2 +- apps/admin/src/sections/lottery/index.tsx | 27 ++++++++++++++++++- packages/ui/src/services/admin/lottery.ts | 17 ++++++++++++ 5 files changed, 54 insertions(+), 4 deletions(-) diff --git a/apps/admin/public/assets/locales/en-US/lottery.json b/apps/admin/public/assets/locales/en-US/lottery.json index 26a80ee..b8acb76 100644 --- a/apps/admin/public/assets/locales/en-US/lottery.json +++ b/apps/admin/public/assets/locales/en-US/lottery.json @@ -265,5 +265,9 @@ "tableTitle": "Draw records", "user": "User", "winOnly": "Won" - } + }, + "delete": "Delete", + "deleteSuccess": "Deleted", + "confirmDeleteActivity": "Delete this activity?", + "confirmDeleteActivityDesc": "This permanently deletes the activity and its prizes. A running activity must be paused first. This cannot be undone." } diff --git a/apps/admin/public/assets/locales/zh-CN/lottery.json b/apps/admin/public/assets/locales/zh-CN/lottery.json index 1a226a9..02117f4 100644 --- a/apps/admin/public/assets/locales/zh-CN/lottery.json +++ b/apps/admin/public/assets/locales/zh-CN/lottery.json @@ -265,5 +265,9 @@ "tableTitle": "抽奖记录", "user": "用户", "winOnly": "已中奖" - } + }, + "delete": "删除", + "deleteSuccess": "删除成功", + "confirmDeleteActivity": "确定删除该活动吗?", + "confirmDeleteActivityDesc": "将永久删除该活动及其奖品。运行中的活动请先暂停。此操作不可撤销。" } diff --git a/apps/admin/src/sections/lottery/activity-form.tsx b/apps/admin/src/sections/lottery/activity-form.tsx index 3348337..cc367ef 100644 --- a/apps/admin/src/sections/lottery/activity-form.tsx +++ b/apps/admin/src/sections/lottery/activity-form.tsx @@ -33,7 +33,7 @@ import { useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { z } from "zod"; -const GRID_SIZE_OPTIONS = [9] as const; +const GRID_SIZE_OPTIONS = [8, 9] as const; const getFormSchema = (t: (key: string, defaultValue: string) => string) => z diff --git a/apps/admin/src/sections/lottery/index.tsx b/apps/admin/src/sections/lottery/index.tsx index 21609bf..2e40684 100644 --- a/apps/admin/src/sections/lottery/index.tsx +++ b/apps/admin/src/sections/lottery/index.tsx @@ -7,6 +7,7 @@ import { } from "@workspace/ui/composed/pro-table/pro-table"; import { createLotteryActivity, + deleteLotteryActivity, getLotteryActivityList, pauseLotteryActivity, publishLotteryActivity, @@ -166,7 +167,31 @@ export default function Lottery() { variant="outline" > {t("grantChances", "Grant Chances")} - + , + { + try { + await deleteLotteryActivity({ id: row.id }); + toast.success(t("deleteSuccess", "Deleted")); + ref.current?.refresh(); + } catch { + // Request layer already surfaces the error toast + } + }} + title={t("confirmDeleteActivity", "Delete this activity?")} + trigger={ + + } + /> ); return rowActions; }, diff --git a/packages/ui/src/services/admin/lottery.ts b/packages/ui/src/services/admin/lottery.ts index 215ec5b..273d577 100644 --- a/packages/ui/src/services/admin/lottery.ts +++ b/packages/ui/src/services/admin/lottery.ts @@ -391,3 +391,20 @@ export async function getLotteryDrawList( } ); } + +/** + * 删除抽奖活动(软删;运行中需先暂停) + * DELETE /v1/admin/lottery/activities/:id + */ +export async function deleteLotteryActivity( + body: { id: number }, + options?: { [key: string]: any } +) { + return request( + `${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/lottery/activities/${body.id}`, + { + method: "DELETE", + ...(options || {}), + } + ); +}