From fd6384191cfbe57f8a278097664c8b4f44295753 Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 3 Jun 2026 04:12:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=89=88=E6=9C=AC=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=B7=BB=E5=8A=A0=E4=B8=8B=E8=BD=BD=E8=A1=A5?= =?UTF-8?q?=E4=B8=81=E5=8C=85=E5=92=8C=E5=AE=8C=E6=95=B4=E5=8C=85=E7=9A=84?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 补丁类型版本显示两个下载按钮:下载补丁包、下载完整包 - 全量版本显示一个下载按钮 - 添加相应的中英文翻译 Co-Authored-By: Claude Opus 4.8 --- .../admin/versions/components/columns.ts | 36 ++++++++++++++++--- frontend/src/pages/admin/versions/index.vue | 10 ++++++ frontend/src/plugins/i18n/en.json | 2 ++ frontend/src/plugins/i18n/zh.json | 2 ++ 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/admin/versions/components/columns.ts b/frontend/src/pages/admin/versions/components/columns.ts index d3e46da..42229bb 100644 --- a/frontend/src/pages/admin/versions/components/columns.ts +++ b/frontend/src/pages/admin/versions/components/columns.ts @@ -1,4 +1,4 @@ -import { Download, Edit, Trash2, Upload, Archive, ArrowDownToLine } from 'lucide-vue-next' +import { Download, Edit, Trash2, Upload, Archive, ArrowDownToLine, Package } from 'lucide-vue-next' import type { ColumnDef } from '@tanstack/vue-table' import { h } from 'vue' @@ -10,6 +10,7 @@ import Button from '@/components/ui/button/Button.vue' interface ColumnOptions { onDownload: (row: Version) => void + onDownloadFullPackage?: (row: Version) => void onEdit: (row: Version) => void onDelete: (row: Version) => void onPublish?: (row: Version) => void @@ -135,8 +136,35 @@ export function getColumns(options: ColumnOptions, t: (key: string) => string): cell: ({ row }) => { const buttons = [] - // 下载按钮 - if (row.original.file_path) { + // 下载按钮逻辑 + if (row.original.update_type === 'patch') { + // 补丁版本:显示下载补丁包和下载完整包两个按钮 + if (row.original.file_path) { + buttons.push( + h(Button, { + variant: 'ghost', + size: 'sm', + title: t('admin.versions.actions.downloadPatch'), + onClick: () => options.onDownload(row.original), + }, () => [ + h(Download, { class: 'h-4 w-4 text-orange-500' }), + ]), + ) + } + if (row.original.full_package_path && options.onDownloadFullPackage) { + buttons.push( + h(Button, { + variant: 'ghost', + size: 'sm', + title: t('admin.versions.actions.downloadFullPackage'), + onClick: () => options.onDownloadFullPackage?.(row.original), + }, () => [ + h(Package, { class: 'h-4 w-4 text-green-500' }), + ]), + ) + } + } else if (row.original.file_path) { + // 全量版本:只显示一个下载按钮 buttons.push( h(Button, { variant: 'ghost', @@ -158,7 +186,7 @@ export function getColumns(options: ColumnOptions, t: (key: string) => string): title: t('admin.versions.actions.downloadDelta'), onClick: () => options.onDownloadDelta?.(row.original), }, () => [ - h(ArrowDownToLine, { class: 'h-4 w-4 text-orange-500' }), + h(ArrowDownToLine, { class: 'h-4 w-4 text-blue-500' }), ]), ) } diff --git a/frontend/src/pages/admin/versions/index.vue b/frontend/src/pages/admin/versions/index.vue index acd799c..3dcc219 100644 --- a/frontend/src/pages/admin/versions/index.vue +++ b/frontend/src/pages/admin/versions/index.vue @@ -162,6 +162,15 @@ function downloadVersion(version: Version) { window.open(downloadUrl, '_blank') } +function downloadFullPackage(version: Version) { + const path = version.full_package_path || version.file_path + if (!path) + return + const token = localStorage.getItem('token') + const downloadUrl = `${path}?token=${token}` + window.open(downloadUrl, '_blank') +} + function confirmDelete(version: Version) { deleteTarget.value = version deleteDialogOpen.value = true @@ -408,6 +417,7 @@ watch([appFilter, strategyFilter, typeFilter, methodFilter, searchFilter], () => :data="versions" :server-pagination="serverPagination" :on-download="downloadVersion" + :on-download-full-package="downloadFullPackage" :on-edit="goToEdit" :on-delete="confirmDelete" :on-publish="confirmPublish" diff --git a/frontend/src/plugins/i18n/en.json b/frontend/src/plugins/i18n/en.json index 40fada7..6ab17f3 100644 --- a/frontend/src/plugins/i18n/en.json +++ b/frontend/src/plugins/i18n/en.json @@ -1440,6 +1440,8 @@ }, "actions": { "download": "Download", + "downloadPatch": "Download Patch", + "downloadFullPackage": "Download Full Package", "downloadDelta": "Download Delta", "edit": "Edit", "delete": "Delete", diff --git a/frontend/src/plugins/i18n/zh.json b/frontend/src/plugins/i18n/zh.json index 88bb582..9a7c12c 100644 --- a/frontend/src/plugins/i18n/zh.json +++ b/frontend/src/plugins/i18n/zh.json @@ -1418,6 +1418,8 @@ }, "actions": { "download": "下载", + "downloadPatch": "下载补丁包", + "downloadFullPackage": "下载完整包", "downloadDelta": "下载增量包", "edit": "编辑", "delete": "删除",