From 7e77e3e31c98d0e27fe834aac32ec05f719073e6 Mon Sep 17 00:00:00 2001 From: Timothy Yin Date: Sun, 11 Jan 2026 17:18:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=89=87=E5=A4=B4=E7=89=87=E5=B0=BE?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E3=80=81=E7=94=A8=E6=88=B7=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/generation/admin/index.vue | 9 + pages/generation/admin/materials.vue | 1436 ++++++++++++++++++++++++++ pages/generation/materials.vue | 48 +- 3 files changed, 1491 insertions(+), 2 deletions(-) create mode 100644 pages/generation/admin/materials.vue diff --git a/pages/generation/admin/index.vue b/pages/generation/admin/index.vue index 9157cc8..10ea654 100644 --- a/pages/generation/admin/index.vue +++ b/pages/generation/admin/index.vue @@ -29,6 +29,13 @@ const adminPages = [ path: '/generation/admin/digital-human-train', color: 'amber', }, + { + title: '片头片尾管理', + description: '管理用户提交的片头片尾制作请求', + icon: 'i-tabler-movie', + path: '/generation/admin/materials', + color: 'green', + }, ] const navigateToPage = (path: string) => { @@ -66,6 +73,7 @@ const navigateToPage = (path: string) => { :class="{ 'bg-blue-100 dark:bg-blue-900/30': page.color === 'blue', 'bg-amber-100 dark:bg-amber-900/30': page.color === 'amber', + 'bg-green-100 dark:bg-green-900/30': page.color === 'green', }" > { :class="{ 'text-blue-600 dark:text-blue-400': page.color === 'blue', 'text-amber-600 dark:text-amber-400': page.color === 'amber', + 'text-green-600 dark:text-green-400': page.color === 'green', }" /> diff --git a/pages/generation/admin/materials.vue b/pages/generation/admin/materials.vue new file mode 100644 index 0000000..18c0aa5 --- /dev/null +++ b/pages/generation/admin/materials.vue @@ -0,0 +1,1436 @@ + + + + + diff --git a/pages/generation/materials.vue b/pages/generation/materials.vue index 9cb9741..25202df 100644 --- a/pages/generation/materials.vue +++ b/pages/generation/materials.vue @@ -18,8 +18,11 @@ const userPagination = reactive({ pageSize: 15, }) -const { data: systemTitlesTemplate, status: systemTitlesTemplateStatus } = - useAsyncData( +const { + data: systemTitlesTemplate, + status: systemTitlesTemplateStatus, + refresh: refreshSystemTitlesTemplate, +} = useAsyncData( 'systemTitlesTemplate', () => useFetchWrapped< @@ -93,6 +96,46 @@ const onUserTitlesRequest = (titles: TitlesTemplate) => { isUserTitlesRequestModalActive.value = true } +const onSystemTitlesDelete = (titles: TitlesTemplate) => { + useFetchWrapped< + { title_id: number } & AuthedRequest, + BaseResponse<{ code: 0 | 1 }> + >('App.Digital_Titles.Delete', { + token: loginState.token!, + user_id: loginState.user.id, + title_id: titles.id, + }) + .then((res) => { + if (res.ret === 200 && res.data.code === 1) { + toast.add({ + title: '删除成功', + description: '已删除系统片头模板', + color: 'green', + icon: 'i-tabler-check', + }) + } else { + toast.add({ + title: '删除失败', + description: res.msg || '未知错误', + color: 'red', + icon: 'i-tabler-alert-triangle', + }) + } + }) + .catch((error) => { + toast.add({ + title: '删除失败', + description: error instanceof Error ? error.message : '未知错误', + color: 'red', + icon: 'i-tabler-alert-triangle', + }) + }) + .finally(() => { + systemPagination.page = 1 + refreshSystemTitlesTemplate() + }) +} + const onUserTitlesDelete = (titles: TitlesTemplate) => { useFetchWrapped< Pick & { @@ -217,6 +260,7 @@ const onUserTitlesSubmit = (event: FormSubmitEvent) => { type="system" :key="titles.id" @user-titles-request="onUserTitlesRequest" + @system-titles-delete="onSystemTitlesDelete" />