diff --git a/apps/jingrow/frontend/src/views/dev/AppDetail.vue b/apps/jingrow/frontend/src/views/dev/AppDetail.vue index 89bbca0..e32ac81 100644 --- a/apps/jingrow/frontend/src/views/dev/AppDetail.vue +++ b/apps/jingrow/frontend/src/views/dev/AppDetail.vue @@ -115,26 +115,13 @@ - - - -
- - {{ installMessage }} -
- - -
+ @@ -142,10 +129,11 @@ import { ref, onMounted, computed } from 'vue' import { useRoute, useRouter } from 'vue-router' import { get_session_api_headers } from '@/shared/api/auth' -import { NButton, NIcon, NSpin, NEmpty, useMessage, NModal, NProgress, NText } from 'naive-ui' +import { NButton, NIcon, NSpin, NEmpty, useMessage } from 'naive-ui' import { Icon } from '@iconify/vue' import axios from 'axios' import { t } from '@/shared/i18n' +import InstallProgressModal from './InstallProgressModal.vue' const route = useRoute() const router = useRouter() @@ -216,11 +204,14 @@ async function installApp() { installStatus.value = 'info' showProgressModal.value = true - // 更新进度 + // 下载阶段 setTimeout(() => { - installProgress.value = 30 - installMessage.value = t('正在安装应用...') - }, 500) + installProgress.value = 20 + }, 300) + + // 下载并安装 + installProgress.value = 30 + installMessage.value = t('正在安装应用...') const response = await axios.post('/jingrow/install-from-url', new URLSearchParams({ url: app.value.file_url @@ -231,16 +222,12 @@ async function installApp() { } }) - setTimeout(() => { - installProgress.value = 80 - installMessage.value = t('正在同步数据库...') - }, 1000) - - setTimeout(() => { - installProgress.value = 100 - }, 1500) + // 更新进度到安装完成 + installProgress.value = 100 if (response.data.success) { + // 所有步骤完成后才显示成功 + installing.value = false installStatus.value = 'success' installMessage.value = t('应用安装成功!') message.success(t('应用安装成功')) @@ -253,6 +240,7 @@ async function installApp() { } } catch (error: any) { console.error('Install app error:', error) + installing.value = false installStatus.value = 'error' installMessage.value = error.response?.data?.detail || error.message || t('安装失败') message.error(error.response?.data?.detail || t('安装失败')) @@ -260,8 +248,6 @@ async function installApp() { setTimeout(() => { showProgressModal.value = false }, 3000) - } finally { - installing.value = false } } @@ -492,18 +478,6 @@ onMounted(() => { font-style: italic; } -.progress-content { - display: flex; - flex-direction: column; - gap: 16px; - padding: 20px 0; -} - -.progress-text { - text-align: center; - color: #666; -} - @media (max-width: 768px) { .app-card { padding: 20px; diff --git a/apps/jingrow/frontend/src/views/dev/AppMarketplace.vue b/apps/jingrow/frontend/src/views/dev/AppMarketplace.vue index ff5030f..9d9a00e 100644 --- a/apps/jingrow/frontend/src/views/dev/AppMarketplace.vue +++ b/apps/jingrow/frontend/src/views/dev/AppMarketplace.vue @@ -132,37 +132,25 @@ - - - -
- - {{ installMessage }} -
- - -
+ + +