feat: 版本管理页面添加下载补丁包和完整包的操作按钮
- 补丁类型版本显示两个下载按钮:下载补丁包、下载完整包 - 全量版本显示一个下载按钮 - 添加相应的中英文翻译 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -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' }),
|
||||
]),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -1440,6 +1440,8 @@
|
||||
},
|
||||
"actions": {
|
||||
"download": "Download",
|
||||
"downloadPatch": "Download Patch",
|
||||
"downloadFullPackage": "Download Full Package",
|
||||
"downloadDelta": "Download Delta",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
|
||||
@@ -1418,6 +1418,8 @@
|
||||
},
|
||||
"actions": {
|
||||
"download": "下载",
|
||||
"downloadPatch": "下载补丁包",
|
||||
"downloadFullPackage": "下载完整包",
|
||||
"downloadDelta": "下载增量包",
|
||||
"edit": "编辑",
|
||||
"delete": "删除",
|
||||
|
||||
Reference in New Issue
Block a user