diff --git a/frontend/src/views/OverviewView.vue b/frontend/src/views/OverviewView.vue index b97ccdb..36cc337 100644 --- a/frontend/src/views/OverviewView.vue +++ b/frontend/src/views/OverviewView.vue @@ -31,6 +31,11 @@ const top30WithIcon = computed(() => stats.value.top30.map(p => ({ ...p, emoji: iconOf(p.name) })), ) +// 概览只展示需关注项(预警 + 异常),完整列表去检索页 +const attentionPackages = computed(() => + state.packages.filter(p => p.status === 'warn' || p.status === 'broken'), +) + async function openDrawer(pkg) { drawerPkg.value = pkg drawerVisible.value = true @@ -91,29 +96,33 @@ function quickClean() { - +
- 🎁缓存包列表 - 共 {{ stats.pkgCount }} 个包 · 预警置顶 · 同状态按版本数降序 + ⚠️需要关注 + 共 {{ attentionPackages.length }} 个需关注 · 预警置顶 +
⏳ 加载中…
-
- -
-
+
暂无缓存包,请检查 Verdaccio 缓存目录配置
+
@@ -142,6 +151,8 @@ function quickClean() { .sec-title { font-size: 17px; font-weight: 700; display: flex; align-items: center; gap: 10px; } .sec-title .emo { font-size: 19px; } .sec-sub { font-family: var(--num); font-size: 12px; color: var(--ink-faint); font-weight: 600; } +.link-all { padding: 6px 14px; border: none; border-radius: 999px; background: var(--panel-soft); color: var(--orange); font-size: 13px; font-weight: 600; cursor: pointer; transition: transform .2s, box-shadow .2s; } +.link-all:hover { transform: translateY(-1px); box-shadow: var(--shadow); } .pkg-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } .loading-tip { text-align: center; padding: 40px 0; color: var(--ink-faint); font-size: 13px; } .empty-box { text-align: center; padding: 60px 0; color: var(--ink-faint); font-size: 13px; }