diff --git a/src/App.vue b/src/App.vue index 58386271..ded589d8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -59,6 +59,7 @@ diff --git a/src/components/AppCard.vue b/src/components/AppCard.vue index ed0e3b35..347127fd 100644 --- a/src/components/AppCard.vue +++ b/src/components/AppCard.vue @@ -21,20 +21,30 @@ > {{ app.name || "" }} - +
+ - Spark - - - APM + SPARK/APM + +
@@ -56,9 +66,8 @@ import type { App } from "../global/typedefinition"; const props = defineProps<{ app: App; - // 从外部传入的 Spark/APM 可用性信息 - sparkAvailable?: boolean; - apmAvailable?: boolean; + // 是否显示来源标识(仅在混合模式下显示) + showOrigin?: boolean; }>(); const emit = defineEmits<{ @@ -71,20 +80,26 @@ const loadedIcon = ref( 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"%3E%3Crect fill="%23f0f0f0" width="100" height="100"/%3E%3C/svg%3E', ); +// 是否显示合并标识(两个来源都有) +const showMergedBadge = computed(() => { + // 只有在 showOrigin 为 true 且 isMerged 为 true 时才显示合并标识 + return props.showOrigin === true && props.app.isMerged === true; +}); + // 是否显示 Spark 标识 const showSparkBadge = computed(() => { - // 如果明确指定了 sparkAvailable,使用它 - if (props.sparkAvailable !== undefined) return props.sparkAvailable; - // 否则根据 app 的 origin 或 isMerged 判断 - return props.app.origin === "spark" || props.app.isMerged === true; + // 只有在 showOrigin 为 true 且不是合并状态时才显示单独标识 + if (props.showOrigin !== true || props.app.isMerged === true) return false; + // 根据 app 的 origin 判断 + return props.app.origin === "spark"; }); // 是否显示 APM 标识 const showApmBadge = computed(() => { - // 如果明确指定了 apmAvailable,使用它 - if (props.apmAvailable !== undefined) return props.apmAvailable; - // 否则根据 app 的 origin 或 isMerged 判断 - return props.app.origin === "apm" || props.app.isMerged === true; + // 只有在 showOrigin 为 true 且不是合并状态时才显示单独标识 + if (props.showOrigin !== true || props.app.isMerged === true) return false; + // 根据 app 的 origin 判断 + return props.app.origin === "apm"; }); const iconPath = computed(() => { diff --git a/src/components/AppGrid.vue b/src/components/AppGrid.vue index e82acc0a..5a7ae691 100644 --- a/src/components/AppGrid.vue +++ b/src/components/AppGrid.vue @@ -24,6 +24,7 @@ v-for="(app, index) in apps" :key="index" :app="app" + :show-origin="storeFilter === 'both'" @open-detail="$emit('open-detail', app)" />
@@ -58,6 +59,7 @@ import type { App } from "../global/typedefinition"; defineProps<{ apps: App[]; loading: boolean; + storeFilter?: "spark" | "apm" | "both"; }>(); defineEmits<{