diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 07aa56a..d9fb1f7 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -12,8 +12,8 @@ declare module 'vue' { AppSidebar: typeof import('./src/components/Layout/AppSidebar.vue')['default'] AuditLogTable: typeof import('./src/components/AuditLogTable.vue')['default'] BusinessLineSwitcher: typeof import('./src/components/BusinessLineSwitcher.vue')['default'] - ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete'] ElButton: typeof import('element-plus/es')['ElButton'] + ElDialog: typeof import('element-plus/es')['ElDialog'] ElForm: typeof import('element-plus/es')['ElForm'] ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElIcon: typeof import('element-plus/es')['ElIcon'] @@ -22,9 +22,12 @@ declare module 'vue' { ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSlider: typeof import('element-plus/es')['ElSlider'] ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElTable: typeof import('element-plus/es')['ElTable'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SubsystemCard: typeof import('./src/components/SubsystemCard.vue')['default'] diff --git a/frontend/src/components/Layout/AppHeader.vue b/frontend/src/components/Layout/AppHeader.vue index 41ca71d..a4930f2 100644 --- a/frontend/src/components/Layout/AppHeader.vue +++ b/frontend/src/components/Layout/AppHeader.vue @@ -196,4 +196,39 @@ const handleLogout = () => { .theme-switch:hover .el-icon { transform: rotate(15deg); } + +@media (max-width: 760px) { + .topbar { + grid-column: 1; + min-width: 0; + padding: 0 12px; + gap: 8px; + } + + .brand { + flex: 0 0 auto; + font-size: 16px; + } + + .brand .mark-img { + width: 30px; + height: 30px; + } + + .brand .sub, + .env-pill, + .search-box, + .identity > div:not(.avatar), + .logout-button { + display: none; + } + + .spacer { + min-width: 0; + } + + .identity { + gap: 0; + } +} diff --git a/frontend/src/components/Layout/AppMain.vue b/frontend/src/components/Layout/AppMain.vue index 2627672..a9f9f6e 100644 --- a/frontend/src/components/Layout/AppMain.vue +++ b/frontend/src/components/Layout/AppMain.vue @@ -12,4 +12,11 @@ overflow-y: auto; padding: 22px 26px 60px; } + +@media (max-width: 760px) { + .main { + min-width: 0; + padding: 16px 14px 40px; + } +} diff --git a/frontend/src/layouts/DefaultLayout.vue b/frontend/src/layouts/DefaultLayout.vue index ee88ed7..11296cf 100644 --- a/frontend/src/layouts/DefaultLayout.vue +++ b/frontend/src/layouts/DefaultLayout.vue @@ -19,4 +19,15 @@ import AppMain from '@/components/Layout/AppMain.vue' grid-template-rows: 70px 1fr; height: 100vh; } + +@media (max-width: 760px) { + .shell { + grid-template-columns: minmax(0, 1fr); + grid-template-rows: 58px minmax(0, 1fr); + } + + .shell :deep(.sidebar) { + display: none; + } +} diff --git a/frontend/src/views/service/Management.vue b/frontend/src/views/service/Management.vue index 6664250..dada1ae 100644 --- a/frontend/src/views/service/Management.vue +++ b/frontend/src/views/service/Management.vue @@ -5,9 +5,15 @@
同步基础服务实例台账,统一查看服务名 / 服务 IP / 业务标签 / 实例数
-| 实例名称 | +任务编号 | +连接地址 | +命名空间 | +交付状态 | +凭证 | +创建时间 | +操作 | +
|---|---|---|---|---|---|---|---|
| 暂无交付记录 | +|||||||
| {{ task.instance_name }} | +{{ task.id }} | +{{ deliveryEndpoint(task) }} | +{{ task.namespace }} | +{{ deliveryStatusText(task.status) }} | +{{ credentialStatusText(task) }} | +{{ formatDeliveryTime(task.created_at) }} | +
+ |
+
{{ selectedDeliveryTask.error_message }}
+ +凭证仅展示一次;请立即复制或下载,关闭弹窗后平台不再提供明文密码。
+{{ item.username }}@{{ item.host }} {{ item.password }}
+ 凭证仅可领取一次,领取后服务端立即销毁明文。
+该任务的一次性凭证已领取或不可用,平台不再提供明文密码。
+仅交付成功的任务提供一次性凭证。
+