From 24ac4cbc08c4f1ff1f8a6ae1a13b3cd8bc4c8ed2 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Sat, 4 Jul 2026 02:13:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(update):=20=E4=B8=8B=E8=BD=BD=E9=A1=B5?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=8E=86=E5=8F=B2=E7=89=88=E6=9C=AC=20+=20?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=8F=B0=E6=96=B0=E5=A2=9E=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E9=A1=B5=E9=93=BE=E6=8E=A5=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 下载页支持展开查看/下载全部曾发布过的历史版本 APK,不再只显示最新版本 - 版本管理页工具栏新增"复制对外下载页链接"按钮,方便管理员查找和分享对外下载页地址 Co-Authored-By: Claude Sonnet 5 --- tenant-platform/src/api/update.ts | 10 +++ .../src/views/download/DownloadView.vue | 77 +++++++++++++++++++ .../views/update/VersionManagementView.vue | 15 ++++ 3 files changed, 102 insertions(+) diff --git a/tenant-platform/src/api/update.ts b/tenant-platform/src/api/update.ts index 9d7141c..b1ae6db 100644 --- a/tenant-platform/src/api/update.ts +++ b/tenant-platform/src/api/update.ts @@ -241,6 +241,15 @@ export interface UnifiedReleaseManifest { rnBundles: UnifiedRnUploadItem[] } +export interface DownloadPageHistoryItem { + versionName: string + versionCode: number + downloadUrl?: string + changeLog?: string + publishedAt: string + current: boolean +} + export interface DownloadPageAppInfo { versionName: string versionCode: number @@ -249,6 +258,7 @@ export interface DownloadPageAppInfo { storeUrl?: string storeLinks?: Record publishedAt: string + history?: DownloadPageHistoryItem[] } export interface DownloadPageInfo { diff --git a/tenant-platform/src/views/download/DownloadView.vue b/tenant-platform/src/views/download/DownloadView.vue index 55e40af..efdfbd1 100644 --- a/tenant-platform/src/views/download/DownloadView.vue +++ b/tenant-platform/src/views/download/DownloadView.vue @@ -51,6 +51,22 @@ rel="noopener" >{{ link.label }} + +
+ +
+
+
+ {{ item.versionName }} + ({{ item.versionCode }}) + {{ formatDate(item.publishedAt) }} +
+ 下载 +
+
+
当前应用无可用安装包
@@ -145,6 +161,20 @@ const otherStoreLinks = computed(() => { })) }) +const historyOpen = ref(false) + +const olderHistory = computed(() => { + const history = data.value?.android?.history + if (!history) return [] + return history.filter((item) => !item.current) +}) + +function formatDate(iso: string): string { + const d = new Date(iso) + if (Number.isNaN(d.getTime())) return '' + return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}` +} + onMounted(async () => { if (!appKey) { loadError.value = '缺少应用标识' @@ -258,4 +288,51 @@ onMounted(async () => { color: #999; font-size: 14px; } + +.history { + margin-top: 16px; + border-top: 1px solid #eee; + padding-top: 12px; +} + +.history-toggle { + background: none; + border: none; + color: #409eff; + font-size: 13px; + cursor: pointer; + padding: 0; +} + +.history-list { + margin-top: 10px; + display: flex; + flex-direction: column; + gap: 10px; +} + +.history-item { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + font-size: 13px; +} + +.history-item-info { + display: flex; + flex-direction: column; + gap: 2px; +} + +.history-date { + color: #999; + font-size: 12px; +} + +.btn-small { + padding: 6px 14px; + font-size: 13px; + flex-shrink: 0; +} diff --git a/tenant-platform/src/views/update/VersionManagementView.vue b/tenant-platform/src/views/update/VersionManagementView.vue index 2aa4312..68f5df9 100644 --- a/tenant-platform/src/views/update/VersionManagementView.vue +++ b/tenant-platform/src/views/update/VersionManagementView.vue @@ -47,6 +47,7 @@ 上传新版本 刷新 + 复制对外下载页链接