diff --git a/src/views/app/AppMarket.vue b/src/views/app/AppMarket.vue index d9bc79f..eaecd41 100644 --- a/src/views/app/AppMarket.vue +++ b/src/views/app/AppMarket.vue @@ -275,6 +275,31 @@ function openConfig(a: AppItem): void { router.push({ path: '/app/config', query: { AppUUID: a.AppUUID, AppName: a.AppName } }) } +// ==================== 应用详情抽屉(仿 VSCode 扩展详情:右侧展开) ==================== +const detailVisible = ref(false) +/** 当前在抽屉中查看的应用 */ +const detailApp = ref(null) + +/** 点击卡片主体:右侧抽屉展示 icon / 名称 / 简介 / 安装管理 */ +function openDetail(a: AppItem): void { + detailApp.value = a + detailVisible.value = true +} + +/** 抽屉内「打开应用」:先收抽屉再跳转(页面被 tab 缓存,避免返回时抽屉仍开着) */ +function OpenAppFromDetail(): void { + const a = detailApp.value + detailVisible.value = false + if (a) openApp(a) +} + +/** 抽屉内「配置」:配置仍走原本的独立页面(/app/config) */ +function OpenConfigFromDetail(): void { + const a = detailApp.value + detailVisible.value = false + if (a) openConfig(a) +} + // ==================== 应用-职务绑定(管理员) ==================== const bindDialogVisible = ref(false) /** 绑定弹窗 Tab:direct=直接职务 / virtual=虚拟职务 */ @@ -326,7 +351,7 @@ onMounted(loadMarket)
-
+
@@ -360,7 +385,8 @@ onMounted(loadMarket) :class="{ ok: a.ApplyStatus === 2, err: a.ApplyStatus === 3 }" >{{ statusRowText(a) }}
-
+ +
@@ -425,6 +451,133 @@ onMounted(loadMarket)
+ + + + +