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
+
+
+
+ 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<{