diff --git a/backend/src/main/java/io/metersphere/track/dto/testplan/TestPlanReportRunInfoDTO.java b/backend/src/main/java/io/metersphere/track/dto/testplan/TestPlanReportRunInfoDTO.java
index 382a0d5747..d88da1f5d8 100644
--- a/backend/src/main/java/io/metersphere/track/dto/testplan/TestPlanReportRunInfoDTO.java
+++ b/backend/src/main/java/io/metersphere/track/dto/testplan/TestPlanReportRunInfoDTO.java
@@ -3,7 +3,9 @@ package io.metersphere.track.dto.testplan;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @Getter
@@ -14,24 +16,38 @@ public class TestPlanReportRunInfoDTO {
 
     private String runMode;
     // <测试计划场景关联表ID, <项目ID,环境ID>>
-    private Map<String, Map<String,String>> scenarioRunInfo;
+    private Map<String, Map<String, List<String>>> scenarioRunInfo;
     // <测试计划用例关联表ID, <项目ID,环境ID>>
-    private Map<String, Map<String,String>> apiCaseRunInfo;
+    private Map<String, Map<String, String>> apiCaseRunInfo;
 
-    public TestPlanReportRunInfoDTO(){
+    public TestPlanReportRunInfoDTO() {
         scenarioRunInfo = new HashMap<>();
         apiCaseRunInfo = new HashMap<>();
     }
 
-    public void putScenarioRunInfo(String scenarioResourceId,String projectId,String environmentId){
-        scenarioRunInfo.put(scenarioResourceId,new HashMap<>(){{
-            this.put(projectId,environmentId);
-        }});
+    public void putScenarioRunInfo(String scenarioResourceId, String projectId, String environmentId) {
+        if (scenarioRunInfo.containsKey(scenarioResourceId)) {
+            if (scenarioRunInfo.get(scenarioResourceId).containsKey(projectId)) {
+                if (!scenarioRunInfo.get(scenarioResourceId).get(projectId).contains(environmentId)) {
+                    scenarioRunInfo.get(scenarioResourceId).get(projectId).add(environmentId);
+                }
+            } else {
+                scenarioRunInfo.get(scenarioResourceId).put(projectId, new ArrayList<>() {{
+                    this.add(environmentId);
+                }});
+            }
+        } else {
+            scenarioRunInfo.put(scenarioResourceId, new HashMap<>() {{
+                this.put(projectId, new ArrayList<>() {{
+                    this.add(environmentId);
+                }});
+            }});
+        }
     }
 
-    public void putApiCaseRunInfo(String apiCaseResourceId,String projectId,String environmentId){
-        apiCaseRunInfo.put(apiCaseResourceId,new HashMap<>(){{
-            this.put(projectId,environmentId);
+    public void putApiCaseRunInfo(String apiCaseResourceId, String projectId, String environmentId) {
+        apiCaseRunInfo.put(apiCaseResourceId, new HashMap<>() {{
+            this.put(projectId, environmentId);
         }});
     }
 }
\ No newline at end of file
diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanReportService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanReportService.java
index 595da1db02..b072422644 100644
--- a/backend/src/main/java/io/metersphere/track/service/TestPlanReportService.java
+++ b/backend/src/main/java/io/metersphere/track/service/TestPlanReportService.java
@@ -226,7 +226,7 @@ public class TestPlanReportService {
     }
 
     public TestPlanScheduleReportInfoDTO genTestPlanReportBySchedule(String planReportId, String planId, String userId, String triggerMode, RunModeConfigDTO runModeConfigDTO) {
-         TestPlanReport testPlanReport = this.getTestPlanReport(planReportId);
+        TestPlanReport testPlanReport = this.getTestPlanReport(planReportId);
         TestPlanScheduleReportInfoDTO returnDTO = new TestPlanScheduleReportInfoDTO();
         if (testPlanReport != null) {
             returnDTO.setTestPlanReport(testPlanReport);
@@ -305,11 +305,11 @@ public class TestPlanReportService {
                 try {
                     Map<String, String> envMap = JSONObject.parseObject(model.getEnvironment(), Map.class);
                     if (MapUtils.isNotEmpty(envMap)) {
-                        String envId = null;
-                        for (String envIdStr : envMap.values()) {
-                            envId = envIdStr;
+                        for (Map.Entry<String, String> entry : envMap.entrySet()) {
+                            String projectId = entry.getKey();
+                            String envIdStr = entry.getValue();
+                            runInfoDTO.putScenarioRunInfo(model.getId(), projectId, envIdStr);
                         }
-                        runInfoDTO.putScenarioRunInfo(model.getId(), model.getProjectId(), envId);
                     }
                 } catch (Exception ignore) {
                 }
@@ -991,10 +991,10 @@ public class TestPlanReportService {
             testPlanReportDTO.setRunMode(StringUtils.equalsIgnoreCase(runInfoDTO.getRunMode(), "serial") ? Translator.get("serial") : Translator.get("parallel"));
             Map<String, Set<String>> projectEnvMap = new LinkedHashMap<>();
             if (MapUtils.isNotEmpty(runInfoDTO.getApiCaseRunInfo())) {
-                this.setProjectEnvMap(projectEnvMap, runInfoDTO.getApiCaseRunInfo());
+                this.setApiCaseProjectEnvMap(projectEnvMap, runInfoDTO.getApiCaseRunInfo());
             }
             if (MapUtils.isNotEmpty(runInfoDTO.getScenarioRunInfo())) {
-                this.setProjectEnvMap(projectEnvMap, runInfoDTO.getScenarioRunInfo());
+                this.setScenarioProjectEnvMap(projectEnvMap, runInfoDTO.getScenarioRunInfo());
             }
             Map<String, List<String>> showProjectEnvMap = new LinkedHashMap<>();
             for (Map.Entry<String, Set<String>> entry : projectEnvMap.entrySet()) {
@@ -1012,7 +1012,33 @@ public class TestPlanReportService {
         }
     }
 
-    private void setProjectEnvMap(Map<String, Set<String>> projectEnvMap, Map<String, Map<String, String>> caseEnvironmentMap) {
+    private void setScenarioProjectEnvMap(Map<String, Set<String>> projectEnvMap, Map<String, Map<String, List<String>>> caseEnvironmentMap) {
+        if (projectEnvMap == null || caseEnvironmentMap == null) {
+            return;
+        }
+        for (Map<String, List<String>> map : caseEnvironmentMap.values()) {
+            if (MapUtils.isEmpty(map)) {
+                continue;
+            }
+            for (Map.Entry<String, List<String>> entry : map.entrySet()) {
+                String projectId = entry.getKey();
+                List<String> envIdList = entry.getValue();
+                if (CollectionUtils.isNotEmpty(envIdList)) {
+                    envIdList.forEach(envId -> {
+                        if (projectEnvMap.containsKey(projectId)) {
+                            projectEnvMap.get(projectId).add(envId);
+                        } else {
+                            projectEnvMap.put(projectId, new LinkedHashSet<>() {{
+                                this.add(envId);
+                            }});
+                        }
+                    });
+                }
+            }
+        }
+    }
+
+    private void setApiCaseProjectEnvMap(Map<String, Set<String>> projectEnvMap, Map<String, Map<String, String>> caseEnvironmentMap) {
         if (projectEnvMap == null || caseEnvironmentMap == null) {
             return;
         }
diff --git a/frontend/src/business/components/track/plan/view/comonents/report/detail/TestPlanOverviewReport.vue b/frontend/src/business/components/track/plan/view/comonents/report/detail/TestPlanOverviewReport.vue
index d116c0b5df..3a9eceb8d2 100644
--- a/frontend/src/business/components/track/plan/view/comonents/report/detail/TestPlanOverviewReport.vue
+++ b/frontend/src/business/components/track/plan/view/comonents/report/detail/TestPlanOverviewReport.vue
@@ -8,11 +8,11 @@
               v-if="report.envGroupName || report.projectEnvMap" style="display:inline-block">
         <div>
           <div style="float: left">
-            {{$t('commons.environment') + ':'}}
+            {{ $t('commons.environment') + ':' }}
           </div>
           <div style="float: right">
             <div v-if="report.envGroupName" style="margin-left: 42px">
-              <ms-tag type="danger" :content="$t('commons.group')"></ms-tag>
+              <ms-tag type="danger" :content="$t('workspace.env_group.name')"></ms-tag>
               {{ report.envGroupName }}
             </div>
             <div v-else-if="report.projectEnvMap" style="margin-left: 42px">