From 51d9f9b0a1a399503185fe7b7ec1059b95d02756 Mon Sep 17 00:00:00 2001 From: jingrow Date: Sun, 26 Oct 2025 19:31:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=94=E7=94=A8=E5=AE=89=E8=A3=85=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E5=8F=B3=E4=B8=8A=E8=A7=92=E5=A2=9E=E5=8A=A0=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E5=B8=82=E5=9C=BA=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/shared/stores/menu.ts | 4 +- .../frontend/src/views/dev/AppInstaller.vue | 37 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/apps/jingrow/frontend/src/shared/stores/menu.ts b/apps/jingrow/frontend/src/shared/stores/menu.ts index 33529af..4e270a6 100644 --- a/apps/jingrow/frontend/src/shared/stores/menu.ts +++ b/apps/jingrow/frontend/src/shared/stores/menu.ts @@ -60,8 +60,8 @@ function getDefaultMenus(): AppMenuItem[] { { id: 'package-release', key: 'package-release', label: 'Package Release', icon: 'tabler:package-export', type: 'pagetype', pagetype: 'Package Release', parentId: 'dev-group', order: 3 }, { id: 'package-import', key: 'package-import', label: 'Package Import', icon: 'tabler:package-import', type: 'pagetype', pagetype: 'Package Import', parentId: 'dev-group', order: 4 }, { id: 'app-installer', key: 'AppInstaller', label: 'App Installer', icon: 'tabler:upload', type: 'route', routeName: 'AppInstaller', parentId: 'dev-group', order: 5 }, - { id: 'installed-apps', key: 'InstalledApps', label: 'Installed Apps', icon: 'ix:apps', type: 'route', routeName: 'InstalledApps', parentId: 'dev-group', order: 6 }, - { id: 'app-marketplace', key: 'AppMarketplace', label: 'App Marketplace', icon: 'tabler:apps', type: 'route', routeName: 'AppMarketplace', parentId: 'dev-group', order: 7 }, + { id: 'installed-apps', key: 'InstalledApps', label: 'Installed Apps', icon: 'tabler:apps', type: 'route', routeName: 'InstalledApps', parentId: 'dev-group', order: 6 }, + { id: 'app-marketplace', key: 'AppMarketplace', label: 'App Marketplace', icon: 'tabler:shopping-cart', type: 'route', routeName: 'AppMarketplace', parentId: 'dev-group', order: 7 }, { id: 'menuManager', key: 'MenuManager', label: 'Menu Management', icon: 'tabler:menu-2', type: 'route', routeName: 'MenuManager', order: 10 }, { id: 'settings', key: 'Settings', label: 'Settings', icon: 'tabler:settings', routeName: 'Settings', order: 11, type: 'route' } ] diff --git a/apps/jingrow/frontend/src/views/dev/AppInstaller.vue b/apps/jingrow/frontend/src/views/dev/AppInstaller.vue index fe16c79..2ce5ee6 100644 --- a/apps/jingrow/frontend/src/views/dev/AppInstaller.vue +++ b/apps/jingrow/frontend/src/views/dev/AppInstaller.vue @@ -8,6 +8,18 @@

{{ t('Upload and install applications to your local Jingrow environment') }}

+
+ + + {{ t('App Marketplace') }} + +
@@ -130,6 +142,7 @@ import { } from 'naive-ui' import { Icon } from '@iconify/vue' import axios from 'axios' +import { useRouter } from 'vue-router' import { get_session_api_headers } from '@/shared/api/auth' import { t } from '@/shared/i18n' @@ -148,6 +161,11 @@ const loadingLocalApps = ref(false) const message = useMessage() const uploadRef = ref() +const router = useRouter() + +const goToMarket = () => { + router.push('/app-marketplace') +} const localAppsColumns: DataTableColumns = [ { @@ -435,12 +453,21 @@ onMounted(() => { .page-header { margin-bottom: 32px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 24px; } .header-content { + flex: 1; text-align: center; } +.header-actions { + flex-shrink: 0; +} + .page-title { display: flex; align-items: center; @@ -532,6 +559,16 @@ onMounted(() => { .page-header { margin-bottom: 16px; + flex-direction: column; + align-items: stretch; + } + + .header-content { + margin-bottom: 16px; + } + + .header-actions { + align-self: center; } .upload-section {