Browse Source

feat:标准化报告 && 遗留问题修改

linchengzhe 1 year ago
parent
commit
6aec359aac

+ 11 - 12
src/router/index.js

@@ -7,7 +7,6 @@ import algorithmsLibrary from "./algorithmsLibrary"; // 算法库
 import sceneLibrary from "./sceneLibrary"; // 场景库
 import systemManagement from "./systemManagement"; // 账户管理
 import workManagement from "./workManagement"; // 工作管理
-import multimodeSimulation from './multimodeSimulation'; // 多模式仿真
 import personalInformation from "./personalInformation"
 
 Vue.use(VueRouter);
@@ -77,17 +76,17 @@ const routes = [{
       redirect: '/index',
       children: sceneLibrary,
     },
-    {
-      path: "/multimodeSimulation",
-      name: "multimodeSimulation",
-      meta: {
-        tabname: "多模式仿真",
-        login: true
-      },
-      component: () => import("@/views/multimodeSimulation/index"),
-      redirect: '/index',
-      children: multimodeSimulation,
-    },
+    // {
+    //   path: "/multimodeSimulation",
+    //   name: "multimodeSimulation",
+    //   meta: {
+    //     tabname: "工作管理",
+    //     login: true
+    //   },
+    //   component: () => import("@/views/multimodeSimulation/index"),
+    //   redirect: '/index',
+    //   children: multimodeSimulation,
+    // },
     {
       path: "/workManagement",
       name: "workManagement",

+ 12 - 10
src/router/multimodeSimulation.js

@@ -9,16 +9,18 @@ export default [
             login: true
         },
         component: () => import("@/views/multimodeSimulation/simulationHome.vue"),
-    },
-    {
-        path: "/simulationEdit",
-        name: "simulationEdit",
-        meta: {
-            tabname: "多模式仿真详情",
-            menuKind: "simulationEdit",
-            login: true
-        },
-        component: () => import("@/views/multimodeSimulation/simulationEdit.vue"),
+        children:[
+            {
+                path: "simulationEdit",
+                name: "simulationEdit",
+                meta: {
+                    tabname: "多模式仿真详情",
+                    menuKind: "multimodeSimulation",
+                    login: true
+                },
+                component: () => import("@/views/multimodeSimulation/simulationEdit.vue"),
+            },
+        ]
     },
     {
         path: "/evaluationResults",

+ 99 - 42
src/router/workManagement.js

@@ -1,4 +1,5 @@
-export default [{
+export default [
+    {
         path: "/manualRunProjectList",
         name: "manualRunProjectList",
         meta: {
@@ -7,16 +8,17 @@ export default [{
             login: true
         },
         component: () => import("@/views/workManagement/manualRunProjectList"),
-        children: [{
-            path: "projectInfo",
-            name: "projectInfo",
-            meta: {
-                tabname: "项目详情",
-                menuKind: "workManagement",
-                login: true
-            },
-            component: () => import("@/views/workManagement/projectInfo"),
-            children: [{
+        children: [
+            {
+                path: "projectInfo",
+                name: "projectInfo",
+                meta: {
+                    tabname: "项目详情",
+                    menuKind: "workManagement",
+                    login: true
+                },
+                component: () => import("@/views/workManagement/projectInfo"),
+                children: [{
                     path: "taskInfo",
                     name: "taskInfo",
                     meta: {
@@ -36,8 +38,8 @@ export default [{
                     },
                     component: () => import("@/views/workManagement/evaluationReport")
                 },
-            ]
-        }, ]
+                ]
+            },]
     },
     {
         path: "/manualRunProjectDetail",
@@ -49,16 +51,6 @@ export default [{
         },
         component: () => import("@/views/workManagement/manualRunProjectDetail")
     },
-	{
-	    path: "/multimodeSimulationEdit",
-	    name: "multimodeSimulationEdit",
-	    meta: {
-	        tabname: "场景编辑",
-	        menuKind: "workManagement",
-	        login: true
-	    },
-	    component: () => import("@/views/workManagement/multimodeSimulationEdit")
-	},
     {
         path: "/autoRunProjectList",
         name: "autoRunProjectList",
@@ -87,28 +79,28 @@ export default [{
                 },
                 component: () => import("@/views/workManagement/projectInfo"),
                 children: [{
-                        path: "taskInfo",
-                        name: "taskInfo",
-                        meta: {
-                            tabname: "任务详情",
-                            menuKind: "workManagement",
-                            login: true
-                        },
-                        component: () => import("@/views/workManagement/taskInfo")
+                    path: "taskInfo",
+                    name: "taskInfo",
+                    meta: {
+                        tabname: "任务详情",
+                        menuKind: "workManagement",
+                        login: true
                     },
-                    {
-                        path: "evaluationReport",
-                        name: "evaluationReport",
-                        meta: {
-                            tabname: "评价报告",
-                            menuKind: "workManagement",
-                            login: true
-                        },
-                        component: () => import("@/views/workManagement/evaluationReport")
+                    component: () => import("@/views/workManagement/taskInfo")
+                },
+                {
+                    path: "evaluationReport",
+                    name: "evaluationReport",
+                    meta: {
+                        tabname: "评价报告",
+                        menuKind: "workManagement",
+                        login: true
                     },
+                    component: () => import("@/views/workManagement/evaluationReport")
+                },
                 ]
-            }, ]
-        }, ]
+            },]
+        },]
     },
     {
         path: "/autoRunProjectDetail",
@@ -120,4 +112,69 @@ export default [{
         },
         component: () => import("@/views/workManagement/autoRunProjectDetail")
     },
+    // 仿真模式
+    {
+        path: "/multimodeSimulation",
+        name: "multimodeSimulation",
+        meta: {
+            tabname: "多模式仿真",
+            menuKind: "workManagement",
+            login: true
+        },
+        component: () => import("@/views/workManagement/simulationHome.vue"),
+        children: [{
+            path: "simulationMap",
+            name: "simulationMap",
+            meta: {
+                tabname: "地图管理",
+                menuKind: "workManagement",
+                login: true
+            },
+            component: () => import("@/views/workManagement/simulationMap")
+        },
+        {
+            path: "simulationEdit",
+            name: "simulationEdit",
+            meta: {
+                tabname: "多模式仿真详情",
+                menuKind: "workManagement",
+                login: true
+            },
+            component: () => import("@/views/workManagement/simulationEdit.vue"),
+            children:[
+                {
+                    path: "multimodeSimulationEdit",
+                    name: "multimodeSimulationEdit",
+                    meta: {
+                        tabname: "场景编辑",
+                        menuKind: "workManagement",
+                        login: true
+                    },
+                    component: () => import("@/views/workManagement/multimodeSimulationEdit")
+                },
+            ]
+        },
+        {
+            path: "simulationEvaluate",
+            name: "simulationEvaluate",
+            meta: {
+                tabname: "多模式仿真评价",
+                menuKind: "workManagement",
+                login: true
+            },
+            component: () => import("@/views/workManagement/simulationEvaluate.vue"),
+            children:[
+                {
+                    path: "evaluationResults",
+                    meta: {
+                        tabname: "评价结果",
+                        menuKind: "workManagement",
+                        login: true
+                    },
+                    component: () => import("@/views/workManagement/evaluationResults.vue"),
+                },
+            ]
+        }]
+    },
+
 ]

+ 4 - 0
src/store/index.js

@@ -20,6 +20,7 @@ export default new Vuex.Store({
     useType: '', //独占类型
     scale: 1.5, // 物体加载换算倍数
     scaleRate: 1.8, // 处理矿车等需要微调的
+    evaluateTabname:"",
     projectInfoTabname: "",
     taskInfoTabname: "",
     vehicleConfigurationDetailTabName: "", // 车辆配置详情
@@ -54,6 +55,9 @@ export default new Vuex.Store({
     getProjectInfoTabname (state, data) {
       state.projectInfoTabname = data
     },
+    getEvaluateTabname(state,data){
+      state.evaluateTabname = data
+    },
     getTaskInfoTabname (state, data) {
       state.taskInfoTabname = data
     },

File diff suppressed because it is too large
+ 827 - 111
src/views/demo.vue


+ 0 - 26
src/views/multimodeSimulation/index.vue

@@ -1,26 +0,0 @@
-<template>
-  <div>
-      <router-view></router-view>
-  </div>
-</template>
-
-<script>
-//import  from '';
-
-export default {
-  name: "multimodeSimulation", // 场景库
-  components: {},
-  data() {
-      return {};
-  },
-
-  computed: {},
-
-  methods: {},
-
-  // mounted: {},
-};
-</script>
-
-<style lang='less' scoped>
-</style>

+ 262 - 231
src/views/page/breadCrumb.vue

@@ -1,265 +1,296 @@
 <template>
-    <div class="breadCrumbPanel">
-        <div class="contentClass">
-            <el-breadcrumb separator="/">
-                <transition-group name="breadcrumb">
-                    <el-breadcrumb-item v-for="(item, index) in list" :key="item.path + item.name">
-                        <router-link v-if="!disabledRoutes.includes(item.name)" @click="console.log(item)" :to="
-                            item.name !== $route.name
-                                ? item.fullPath
-                                    ? item.fullPath
-                                    : item.path
-                                        ? item.path
-                                        : '/'
-                                : $route.fullPath
-                        ">
-                            <i class="el-icon-folder-opened" v-if="index > 0 && index === list.length - 1"></i>
-                            {{ item.meta.tabname }}
-                        </router-link>
-                        <span v-else style="line-height: 20px">{{
-                            item.meta.tabname
-                        }}</span>
-                    </el-breadcrumb-item>
-                </transition-group>
-            </el-breadcrumb>
-        </div>
+  <div class="breadCrumbPanel">
+    <div class="contentClass">
+      <el-breadcrumb separator="/">
+        <transition-group name="breadcrumb">
+          <el-breadcrumb-item
+            v-for="(item, index) in list"
+            :key="item.path + item.name"
+          >
+            <router-link
+              v-if="!disabledRoutes.includes(item.name)"
+              @click="console.log(item)"
+              :to="
+                item.name !== $route.name
+                  ? item.fullPath
+                    ? item.fullPath
+                    : item.path
+                    ? item.path
+                    : '/'
+                  : $route.fullPath
+              "
+            >
+              <i
+                class="el-icon-folder-opened"
+                v-if="index > 0 && index === list.length - 1"
+              ></i>
+              {{ item.meta.tabname }}
+            </router-link>
+            <span v-else style="line-height: 20px">{{
+              item.meta.tabname
+            }}</span>
+          </el-breadcrumb-item>
+        </transition-group>
+      </el-breadcrumb>
+    </div>
 
-        <div class="nameBox">
-            <div>{{ $store.state.username }}</div>
-            <div class="el-icon-switch-button exit" @click="exit"></div>
-        </div>
+    <div class="nameBox">
+      <div>{{ $store.state.username }}</div>
+      <div class="el-icon-switch-button exit" @click="exit"></div>
     </div>
+  </div>
 </template>
 
 <script>
-import { mapState } from "vuex";
+import { mapState } from 'vuex'
 export default {
-    name: "breadCrumb",
-    data() {
-        return {
-            // 相关页面只为占位,页面是空白,无法展示
-            disabledRoutes: [
-                "modelLibrary",
-                "algorithmsLibrary",
-                "sceneLibrary",
-                "systemManagement",
-                "workManagement",
-            ],
-        };
-    },
-    methods: {
-        exit() {
-            this.$confirm("是否确定退出系统?", "提示", {
-                confirmButtonText: "确定",
-                cancelButtonText: "取消",
-                type: "warning",
-            })
-                .then(() => {
-                    localStorage.clear();
-                    // let loginUrl = window.location.origin + "/login";
-                    // window.location.href = loginUrl;
-                    this.$router.push({
-                        path: "/login",
-                    });
-                })
-                .catch(() => { });
-        },
+  name: 'breadCrumb',
+  data() {
+    return {
+      // 相关页面只为占位,页面是空白,无法展示
+      disabledRoutes: [
+        'modelLibrary',
+        'algorithmsLibrary',
+        'sceneLibrary',
+        'systemManagement',
+        'workManagement',
+      ],
+    }
+  },
+  methods: {
+    exit() {
+      this.$confirm('是否确定退出系统?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+        .then(() => {
+          localStorage.clear()
+          // let loginUrl = window.location.origin + "/login";
+          // window.location.href = loginUrl;
+          this.$router.push({
+            path: '/login',
+          })
+        })
+        .catch(() => {})
     },
-    computed: {
-        ...mapState([
-            "projectInfoTabname", "taskInfoTabname", "vehicleConfigurationDetailTabName",
-            "exportAlgorithmsTabName", "gitAlgorithmsTabName", "gradingRuleDetailTabName",
-            "scenePacketListTabName", "parameterDetailTabName", "clusteringDetailTabName",
-            "scenePacketDetailTabName", "scenePacketDistributionDetailTabName", "editAccountTabName",
-            "vehicleModelDetailTabName",
-        ]),
-        list() {
-            // console.log(this.$route);
-            let isMainPage = false;
-            this.$route.matched.filter((item) => {
-                // 项目详情和任务详情的tabname需要动态获取
-                if (item.name === "projectInfo") {
-                    item.meta.tabname =
-                        this.projectInfoTabname ||
-                        localStorage.getItem("projectInfoTabname") ||
-                        "项目详情";
-                }
+  },
+  computed: {
+    ...mapState([
+      'projectInfoTabname',
+      'taskInfoTabname',
+      'vehicleConfigurationDetailTabName',
+      'exportAlgorithmsTabName',
+      'gitAlgorithmsTabName',
+      'gradingRuleDetailTabName',
+      'scenePacketListTabName',
+      'parameterDetailTabName',
+      'clusteringDetailTabName',
+      'scenePacketDetailTabName',
+      'scenePacketDistributionDetailTabName',
+      'editAccountTabName',
+      'vehicleModelDetailTabName',
+      'evaluateTabname'
+    ]),
+    list() {
+      let isMainPage = false
+      this.$route.matched.filter((item) => {
+        if (item.name === 'simulationEdit') {
+          item.meta.tabname =
+            this.evaluateTabname ||
+            localStorage.getItem('evaluateTabname') ||
+            '多模式仿真详情'
+        }
 
-                if (item.name === "taskInfo") {
-                    item.meta.tabname =
-                        this.taskInfoTabname ||
-                        localStorage.getItem("taskInfoTabname") ||
-                        "任务详情";
-                }
+        if (item.name === 'simulationEvaluate') {
+          item.meta.tabname =
+            this.evaluateTabname ||
+            localStorage.getItem('evaluateTabname') ||
+            '多模式仿真评价'
+        }
 
-                if (item.name === "vehicleConfigurationDetail") {
-                    item.meta.tabname =
-                        this.vehicleConfigurationDetailTabName ||
-                        localStorage.getItem("vehicleConfigurationDetailTabName") ||
-                        "车辆配置详情";
-                } else if (item.name === "exportAlgorithms") {
-                    item.meta.tabname =
-                        this.exportAlgorithmsTabName ||
-                        localStorage.getItem("exportAlgorithmsTabName") ||
-                        "导入算法";
-                } else if (item.name === "gitAlgorithms") {
-                    item.meta.tabname =
-                        this.gitAlgorithmsTabName ||
-                        localStorage.getItem("gitAlgorithmsTabName") ||
-                        "仓库算法";
-                } else if (item.name === "gradingRuleDetail") {
-                    item.meta.tabname =
-                        this.gradingRuleDetailTabName ||
-                        localStorage.getItem("gradingRuleDetailTabName") ||
-                        "评分规则详情";
-                } else if (item.name === "scenePacketList") {
-                    item.meta.tabname =
-                        this.scenePacketListTabName ||
-                        localStorage.getItem("scenePacketListTabName") ||
-                        "场景测试包";
-                } else if (item.name === "parameterDetail") {
-                    item.meta.tabname =
-                        this.parameterDetailTabName ||
-                        localStorage.getItem("parameterDetailTabName") ||
-                        "编辑参数配置";
-                } else if (item.name === "clusteringDetail") {
-                    item.meta.tabname =
-                        this.clusteringDetailTabName ||
-                        localStorage.getItem("clusteringDetailTabName") ||
-                        "编辑集群配置";
-                } else if (item.name === "scenePacketDetail") {
-                    item.meta.tabname =
-                        this.scenePacketDetailTabName ||
-                        localStorage.getItem("scenePacketDetailTabName") ||
-                        "场景包详情";
-                } else if (item.name === "scenePacketDistributionDetail") {
-                    item.meta.tabname =
-                        this.scenePacketDistributionDetailTabName ||
-                        localStorage.getItem("scenePacketDistributionDetailTabName") ||
-                        "场景包分配详情";
-                } else if (item.name === "editAccount") {
-                    item.meta.tabname =
-                        this.editAccountTabName ||
-                        localStorage.getItem("editAccountTabName") ||
-                        "编辑账户";
-                } else if (item.name === "vehicleModelDetail") {
-                    item.meta.tabname =
-                        this.vehicleModelDetailTabName ||
-                        localStorage.getItem("vehicleModelDetailTabName") ||
-                        "车辆设置详情";
-                }
+        // 项目详情和任务详情的tabname需要动态获取
+        if (item.name === 'projectInfo') {
+          item.meta.tabname =
+            this.projectInfoTabname ||
+            localStorage.getItem('projectInfoTabname') ||
+            '项目详情'
+        }
+
+        if (item.name === 'taskInfo') {
+          item.meta.tabname =
+            this.taskInfoTabname ||
+            localStorage.getItem('taskInfoTabname') ||
+            '任务详情'
+        }
 
-                if (item.name === this.$route.name) {
-                    item.fullPath = this.$route.fullPath;
-                }
+        if (item.name === 'vehicleConfigurationDetail') {
+          item.meta.tabname =
+            this.vehicleConfigurationDetailTabName ||
+            localStorage.getItem('vehicleConfigurationDetailTabName') ||
+            '车辆配置详情'
+        } else if (item.name === 'exportAlgorithms') {
+          item.meta.tabname =
+            this.exportAlgorithmsTabName ||
+            localStorage.getItem('exportAlgorithmsTabName') ||
+            '导入算法'
+        } else if (item.name === 'gitAlgorithms') {
+          item.meta.tabname =
+            this.gitAlgorithmsTabName ||
+            localStorage.getItem('gitAlgorithmsTabName') ||
+            '仓库算法'
+        } else if (item.name === 'gradingRuleDetail') {
+          item.meta.tabname =
+            this.gradingRuleDetailTabName ||
+            localStorage.getItem('gradingRuleDetailTabName') ||
+            '评分规则详情'
+        } else if (item.name === 'scenePacketList') {
+          item.meta.tabname =
+            this.scenePacketListTabName ||
+            localStorage.getItem('scenePacketListTabName') ||
+            '场景测试包'
+        } else if (item.name === 'parameterDetail') {
+          item.meta.tabname =
+            this.parameterDetailTabName ||
+            localStorage.getItem('parameterDetailTabName') ||
+            '编辑参数配置'
+        } else if (item.name === 'clusteringDetail') {
+          item.meta.tabname =
+            this.clusteringDetailTabName ||
+            localStorage.getItem('clusteringDetailTabName') ||
+            '编辑集群配置'
+        } else if (item.name === 'scenePacketDetail') {
+          item.meta.tabname =
+            this.scenePacketDetailTabName ||
+            localStorage.getItem('scenePacketDetailTabName') ||
+            '场景包详情'
+        } else if (item.name === 'scenePacketDistributionDetail') {
+          item.meta.tabname =
+            this.scenePacketDistributionDetailTabName ||
+            localStorage.getItem('scenePacketDistributionDetailTabName') ||
+            '场景包分配详情'
+        } else if (item.name === 'editAccount') {
+          item.meta.tabname =
+            this.editAccountTabName ||
+            localStorage.getItem('editAccountTabName') ||
+            '编辑账户'
+        } else if (item.name === 'vehicleModelDetail') {
+          item.meta.tabname =
+            this.vehicleModelDetailTabName ||
+            localStorage.getItem('vehicleModelDetailTabName') ||
+            '车辆设置详情'
+        }
 
-                if (item.name === "mainPage") {
-                    isMainPage = true;
-                }
-            });
-            if (isMainPage) {
-                // 如果跳转首页,会有 / 需要去掉
-                return this.$route.matched.slice(0, 1);
-            } else {
-                // 不要第一个显示首页的
-                return this.$route.matched.slice(1);
-            }
-        },
+        if (item.name === this.$route.name) {
+          item.fullPath = this.$route.fullPath
+        }
+
+        if (item.name === 'mainPage') {
+          isMainPage = true
+        }
+      })
+      if (isMainPage) {
+        // 如果跳转首页,会有 / 需要去掉
+        return this.$route.matched.slice(0, 1)
+      } else {
+        // 不要第一个显示首页的
+        return this.$route.matched.slice(1)
+      }
     },
-};
+  },
+}
 </script>
 
 <style lang="less" scoped>
 .breadCrumbPanel {
-    position: fixed;
-    top: 0;
-    left: 150px;
-    right: 0;
-    bottom: 0;
-    z-index: 666;
-    height: 50px;
-    line-height: 48px;
-    border-bottom: 2px solid #f5f7fa;
-    background-color: #ffffff;
-    overflow: hidden;
+  position: fixed;
+  top: 0;
+  left: 150px;
+  right: 0;
+  bottom: 0;
+  z-index: 666;
+  height: 50px;
+  line-height: 48px;
+  border-bottom: 2px solid #f5f7fa;
+  background-color: #ffffff;
+  overflow: hidden;
 
-    .contentClass {
-        // width: 1100px;
-        // margin: 0 auto;
-        // flex: 1;
-        padding-top: 15px;
-        padding-left: 12px;
+  .contentClass {
+    // width: 1100px;
+    // margin: 0 auto;
+    // flex: 1;
+    padding-top: 15px;
+    padding-left: 12px;
 
-        // .breadcrumb {
-        //     height: 30px;
-        //     border-radius: 4px;
-        //     margin-bottom: 0px;
-        //     position: relative;
-        // }
+    // .breadcrumb {
+    //     height: 30px;
+    //     border-radius: 4px;
+    //     margin-bottom: 0px;
+    //     position: relative;
+    // }
 
-        /deep/ .el-breadcrumb {
-            
-            >span {
-                display: block;
-                width: 3000px;
-            }
-        }
+    /deep/ .el-breadcrumb {
+      > span {
+        display: block;
+        width: 3000px;
+      }
+    }
 
-        /deep/ .el-breadcrumb__inner a {
-            color: #333;
-            font-weight: normal;
-            user-select: none;
-            line-height: 20px;
+    /deep/ .el-breadcrumb__inner a {
+      color: #333;
+      font-weight: normal;
+      user-select: none;
+      line-height: 20px;
 
-            &:hover {
-                color: @themeColor;
-            }
-        }
+      &:hover {
+        color: @themeColor;
+      }
+    }
 
-        /deep/ .el-breadcrumb__item:last-child .el-breadcrumb__inner,
-        .el-breadcrumb__item:last-child .el-breadcrumb__inner a,
-        .el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,
-        .el-breadcrumb__item:last-child .el-breadcrumb__inner:hover {
-            /*font-weight: 700;*/
-            color: @themeColor;
-            user-select: none;
-            line-height: 20px;
-            cursor: pointer;
-        }
+    /deep/ .el-breadcrumb__item:last-child .el-breadcrumb__inner,
+    .el-breadcrumb__item:last-child .el-breadcrumb__inner a,
+    .el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,
+    .el-breadcrumb__item:last-child .el-breadcrumb__inner:hover {
+      /*font-weight: 700;*/
+      color: @themeColor;
+      user-select: none;
+      line-height: 20px;
+      cursor: pointer;
+    }
 
-        /deep/ .el-breadcrumb__separator[class*="el-icon-arrow-right"] {
-            margin: 0px 3px 0px 1px;
-        }
+    /deep/ .el-breadcrumb__separator[class*='el-icon-arrow-right'] {
+      margin: 0px 3px 0px 1px;
     }
+  }
 
-    .nameBox {
-        position: absolute;
-        top: 4px;
-        // right: 20px;
-        right: 0;
-        z-index: 669;
-        display: flex;
-        height: 40px;
-        padding: 0 20px;
-        background-color: #ffffff;
+  .nameBox {
+    position: absolute;
+    top: 4px;
+    // right: 20px;
+    right: 0;
+    z-index: 669;
+    display: flex;
+    height: 40px;
+    padding: 0 20px;
+    background-color: #ffffff;
 
-        div {
-            height: 40px;
-            line-height: 40px;
-        }
+    div {
+      height: 40px;
+      line-height: 40px;
+    }
 
-        .exit {
-            margin-left: 10px;
-            font-size: 20px;
-            cursor: pointer;
-        }
+    .exit {
+      margin-left: 10px;
+      font-size: 20px;
+      cursor: pointer;
+    }
 
-        .exit:hover {
-            color: @themeColor;
-        }
+    .exit:hover {
+      color: @themeColor;
     }
+  }
 
-    /* .avatarBox {
+  /* .avatarBox {
         position: absolute;
         top: 4px;
         right: 20px;

+ 25 - 25
src/views/sceneLibrary/benchmarkScenarioList.vue

@@ -16,7 +16,7 @@
       <template slot="searchItem1">
         <span class="label">主车动作</span>
         <el-select
-          v-model="searchParams.mainBehavior[0][1]"
+          v-model="searchParams.mainBehavior[0]"
           size="small"
           clearable
         >
@@ -31,7 +31,7 @@
       <template slot="searchItem2">
         <span class="label">他车动作</span>
         <el-select
-          v-model="searchParams.otherBehavior[0][1]"
+          v-model="searchParams.otherBehavior[0]"
           size="small"
           clearable
         >
@@ -45,7 +45,7 @@
       </template>
       <template slot="searchItem2">
         <span class="label">天气</span>
-        <el-select v-model="searchParams.weather[0][1]" size="small" clearable>
+        <el-select v-model="searchParams.weather[0]" size="small" clearable>
           <el-option
             v-for="item in dictionaryList['sceneLibWeather']"
             :label="item.dictName"
@@ -56,7 +56,7 @@
       </template>
       <template slot="searchItem3">
         <span class="label">道路类型</span>
-        <el-select v-model="searchParams.roadType[0][1]" size="small" clearable>
+        <el-select v-model="searchParams.roadType[0]" size="small" clearable>
           <el-option
             v-for="item in dictionaryList['sceneLibrodeType']"
             :label="item.dictName"
@@ -68,7 +68,7 @@
       <template slot="searchItem3">
         <span class="label">道路几何-平面</span>
         <el-select
-          v-model="searchParams.roadGeometryPlane[0][1]"
+          v-model="searchParams.roadGeometryPlane[0]"
           size="small"
           clearable
         >
@@ -83,7 +83,7 @@
       <template slot="searchItem4">
         <span class="label">道路几何-纵断面</span>
         <el-select
-          v-model="searchParams.roadGeometryVertical[0][1]"
+          v-model="searchParams.roadGeometryVertical[0]"
           size="small"
           clearable
         >
@@ -98,7 +98,7 @@
       <template slot="searchItem4">
         <span class="label">智能驾驶</span>
         <el-select
-          v-model="searchParams.autoDriveFunction[0][1]"
+          v-model="searchParams.autoDriveFunction[0]"
           size="small"
           clearable
         >
@@ -113,7 +113,7 @@
       <template slot="searchItem5">
         <span class="label">运行区域</span>
         <el-select
-          v-model="searchParams.operationArea[0][1]"
+          v-model="searchParams.operationArea[0]"
           size="small"
           clearable
         >
@@ -412,14 +412,14 @@ export default {
       searchParams: {
         sceneName: '', // 场景名称
         share: '0',
-        mainBehavior: [['mainBehavior', '']], // 主车动作
-        otherBehavior: [['otherBehavior', '']],
-        weather: [['weather', '']],
-        roadType: [['roadType', '']],
-        roadGeometryPlane: [['roadGeometryPlane', '']],
-        roadGeometryVertical: [['roadGeometryVertical', '']],
-        autoDriveFunction: [['autoDriveFunction', '']],
-        operationArea: [['operationArea', '']],
+        mainBehavior: [''], // 主车动作
+        otherBehavior: [''],
+        weather: [''],
+        roadType: [''],
+        roadGeometryPlane: [''],
+        roadGeometryVertical: [''],
+        autoDriveFunction: [''],
+        operationArea: [''],
         minComplexity: '',
         maxComplexity: '',
         minRisk: '',
@@ -597,7 +597,7 @@ export default {
       const obj = JSON.parse(JSON.stringify(this.searchParams))
       Object.keys(obj).forEach((item) => {
         if(specialParams.includes(item)){
-          if(!obj[item][0][1]){
+          if(!obj[item][0]){
             obj[item] = []
           }
         }
@@ -614,14 +614,14 @@ export default {
       this.searchParams = {
         sceneName: '', // 场景名称
         share: '0',
-        mainBehavior: [['mainBehavior', '']], // 主车动作
-        otherBehavior: [['otherBehavior', '']],
-        weather: [['weather', '']],
-        roadType: [['roadType', '']],
-        roadGeometryPlane: [['roadGeometryPlane', '']],
-        roadGeometryVertical: [['roadGeometryVertical', '']],
-        autoDriveFunction: [['autoDriveFunction', '']],
-        operationArea: [['operationArea', '']],
+        mainBehavior: [''], // 主车动作
+        otherBehavior: [''],
+        weather: [''],
+        roadType: [''],
+        roadGeometryPlane: [''],
+        roadGeometryVertical: [''],
+        autoDriveFunction: [''],
+        operationArea: [''],
         minComplexity: '',
         maxComplexity: '',
         minRisk: '',

+ 25 - 25
src/views/sceneLibrary/components/realSceneList.vue

@@ -569,7 +569,7 @@
           <template slot="searchItem2">
             <span class="label">主车动作</span>
             <el-select
-              v-model="searchParamsD.mainBehavior[0][1]"
+              v-model="searchParamsD.mainBehavior[0]"
               size="small"
               placeholder="请输入"
               clearable
@@ -585,7 +585,7 @@
           <template slot="searchItem2">
             <span class="label">他车动作</span>
             <el-select
-              v-model="searchParamsD.otherBehavior[0][1]"
+              v-model="searchParamsD.otherBehavior[0]"
               size="small"
               clearable
             >
@@ -600,7 +600,7 @@
           <template slot="searchItem1">
             <span class="label">天气</span>
             <el-select
-              v-model="searchParamsD.weather[0][1]"
+              v-model="searchParamsD.weather[0]"
               size="small"
               clearable
             >
@@ -615,7 +615,7 @@
           <template slot="searchItem3">
             <span class="label">道路类型</span>
             <el-select
-              v-model="searchParamsD.roadType[0][1]"
+              v-model="searchParamsD.roadType[0]"
               size="small"
               clearable
             >
@@ -630,7 +630,7 @@
           <template slot="searchItem3">
             <span class="label">道路几何-平面</span>
             <el-select
-              v-model="searchParamsD.roadGeometryPlane[0][1]"
+              v-model="searchParamsD.roadGeometryPlane[0]"
               size="small"
               clearable
             >
@@ -645,7 +645,7 @@
           <template slot="searchItem4">
             <span class="label">道路几何-纵断面</span>
             <el-select
-              v-model="searchParamsD.roadGeometryVertical[0][1]"
+              v-model="searchParamsD.roadGeometryVertical[0]"
               size="small"
               clearable
             >
@@ -660,7 +660,7 @@
           <template slot="searchItem4">
             <span class="label">智能驾驶</span>
             <el-select
-              v-model="searchParamsD.autoDriveFunction[0][1]"
+              v-model="searchParamsD.autoDriveFunction[0]"
               size="small"
               clearable
             >
@@ -675,7 +675,7 @@
           <template slot="searchItem5">
             <span class="label">运行区域</span>
             <el-select
-              v-model="searchParamsD.operationArea[0][1]"
+              v-model="searchParamsD.operationArea[0]"
               size="small"
               clearable
             >
@@ -1086,14 +1086,14 @@ export default {
       searchParamsD: {
         sceneName: '', // 场景名称
         share: '0',
-        mainBehavior: [['mainBehavior', '']], // 主车动作
-        otherBehavior: [['otherBehavior', '']],
-        weather: [['weather', '']],
-        roadType: [['roadType', '']],
-        roadGeometryPlane: [['roadGeometryPlane', '']],
-        roadGeometryVertical: [['roadGeometryVertical', '']],
-        autoDriveFunction: [['autoDriveFunction', '']],
-        operationArea: [['operationArea', '']],
+        mainBehavior: [''], // 主车动作
+        otherBehavior: [''],
+        weather: [''],
+        roadType: [''],
+        roadGeometryPlane: [''],
+        roadGeometryVertical: [''],
+        autoDriveFunction: [''],
+        operationArea: [''],
         minComplexity: '',
         maxComplexity: '',
         minRisk: '',
@@ -1457,7 +1457,7 @@ export default {
       const obj = JSON.parse(JSON.stringify(this.searchParamsD))
       Object.keys(obj).forEach((item) => {
         if (specialParams.includes(item)) {
-          if (!obj[item][0][1]) {
+          if (!obj[item][0]) {
             obj[item] = []
           }
         }
@@ -1480,14 +1480,14 @@ export default {
     doResetD() {
       this.searchParamsD = {
         sceneName: '', // 场景名称
-        mainBehavior: [['mainBehavior', '']], // 主车动作
-        otherBehavior: [['otherBehavior', '']],
-        weather: [['weather', '']],
-        roadType: [['roadType', '']],
-        roadGeometryPlane: [['roadGeometryPlane', '']],
-        roadGeometryVertical: [['roadGeometryVertical', '']],
-        autoDriveFunction: [['autoDriveFunction', '']],
-        operationArea: [['operationArea', '']],
+        mainBehavior: [''], // 主车动作
+        otherBehavior: [''],
+        weather: [''],
+        roadType: [''],
+        roadGeometryPlane: [''],
+        roadGeometryVertical: [''],
+        autoDriveFunction: [''],
+        operationArea: [''],
         minComplexity: '',
         maxComplexity: '',
         minRisk: '',

+ 17 - 1
src/views/sceneLibrary/gradingRulesList.vue

@@ -215,6 +215,23 @@ export default {
           prop: 'ruleType',
           template: true,
         },
+        {
+          label: '上传状态',
+          prop: 'status',
+          formatter(row) {
+            switch(row.status){
+              case '0':
+                return '未上传'
+                case '1':
+                return '上传中'
+                case '2':
+                return '上传完成'
+                case '5':
+                return '上传失败'
+                default: return '-'
+            }
+          },
+        },
         {
           label: '创建时间',
           prop: 'createTime',
@@ -398,7 +415,6 @@ export default {
       })
     },
     editRow(row) {
-      console.log('row', row)
       this.$store.commit('getTabname', 'gradingRuleDetailTabName', row.ruleName)
       localStorage.setItem('gradingRuleDetailTabName', row.ruleName)
       if (this.activeName == '3') {

+ 36 - 25
src/views/systemManagement/sceneLibraryManagement/benchmarkScenario.vue

@@ -16,7 +16,7 @@
       <template slot="searchItem1">
         <span class="label">主车动作</span>
         <el-select
-          v-model="searchParams.mainBehavior[0][1]"
+          v-model="searchParams.mainBehavior[0]"
           size="small"
           clearable
         >
@@ -31,7 +31,7 @@
       <template slot="searchItem2">
         <span class="label">他车动作</span>
         <el-select
-          v-model="searchParams.otherBehavior[0][1]"
+          v-model="searchParams.otherBehavior[0]"
           size="small"
           clearable
         >
@@ -45,7 +45,7 @@
       </template>
       <template slot="searchItem2">
         <span class="label">天气</span>
-        <el-select v-model="searchParams.weather[0][1]" size="small" clearable>
+        <el-select v-model="searchParams.weather[0]" size="small" clearable>
           <el-option
           v-for="item in dictionaryList['sceneLibWeather']"
             :label="item.dictName"
@@ -56,7 +56,7 @@
       </template>
       <template slot="searchItem3">
         <span class="label">道路类型</span>
-        <el-select v-model="searchParams.roadType[0][1]" size="small" clearable>
+        <el-select v-model="searchParams.roadType[0]" size="small" clearable>
           <el-option
           v-for="item in dictionaryList['sceneLibrodeType']"
             :label="item.dictName"
@@ -68,7 +68,7 @@
       <template slot="searchItem3">
         <span class="label">道路几何-平面</span>
         <el-select
-          v-model="searchParams.roadGeometryPlane[0][1]"
+          v-model="searchParams.roadGeometryPlane[0]"
           size="small"
           clearable
         >
@@ -83,7 +83,7 @@
       <template slot="searchItem4">
         <span class="label">道路几何-纵断面</span>
         <el-select
-          v-model="searchParams.roadGeometryVertical[0][1]"
+          v-model="searchParams.roadGeometryVertical[0]"
           size="small"
           clearable
         >
@@ -98,7 +98,7 @@
       <template slot="searchItem4">
         <span class="label">智能驾驶</span>
         <el-select
-          v-model="searchParams.autoDriveFunction[0][1]"
+          v-model="searchParams.autoDriveFunction[0]"
           size="small"
           clearable
         >
@@ -113,7 +113,7 @@
       <template slot="searchItem5">
         <span class="label">运行区域</span>
         <el-select
-          v-model="searchParams.operationArea[0][1]"
+          v-model="searchParams.operationArea[0]"
           size="small"
           clearable
         >
@@ -343,7 +343,7 @@
       </el-form>
       <div style="width: 100%; display: flex; justify-content: center">
         <el-button @click="editVisible = false">取消</el-button>
-        <el-button type="primary" @click="onSubmit">立即创建</el-button>
+        <el-button type="primary" @click="">立即创建</el-button>
       </div>
     </el-dialog>
   </div>
@@ -362,14 +362,14 @@ export default {
       searchParams: {
         sceneName: '', // 场景名称
         share: '0',
-        mainBehavior: [['mainBehavior', '']], // 主车动作
-        otherBehavior: [['otherBehavior', '']],
-        weather: [['weather', '']],
-        roadType: [['roadType', '']],
-        roadGeometryPlane: [['roadGeometryPlane', '']],
-        roadGeometryVertical: [['roadGeometryVertical', '']],
-        autoDriveFunction: [['autoDriveFunction', '']],
-        operationArea: [['operationArea', '']],
+        mainBehavior: [''], // 主车动作
+        otherBehavior: [''],
+        weather: [''],
+        roadType: [''],
+        roadGeometryPlane: [''],
+        roadGeometryVertical: [''],
+        autoDriveFunction: [''],
+        operationArea: [''],
         minComplexity: '',
         maxComplexity: '',
         minRisk: '',
@@ -522,7 +522,7 @@ export default {
       const obj = JSON.parse(JSON.stringify(this.searchParams))
       Object.keys(obj).forEach((item) => {
         if (specialParams.includes(item)) {
-          if (!obj[item][0][1]) {
+          if (!obj[item][0]) {
             obj[item] = []
           }
         }
@@ -537,13 +537,24 @@ export default {
     },
     doReset() {
       this.searchParams = {
-        sceneId: '',
-        fileName: [],
-        scenarioRoadType: [],
-        scenarioResume: '',
-        share: this.activeName === '1' ? '1' : '0',
-        // scenarioWeather: [],
-        // scenarioTime: "",
+        sceneName: '', // 场景名称
+        share: '0',
+        mainBehavior: [''], // 主车动作
+        otherBehavior: [''],
+        weather: [''],
+        roadType: [''],
+        roadGeometryPlane: [''],
+        roadGeometryVertical: [''],
+        autoDriveFunction: [''],
+        operationArea: [''],
+        minComplexity: '',
+        maxComplexity: '',
+        minRisk: '',
+        maxRisk: '',
+        complexityLevel: '',
+        riskLevel: '',
+        sceneDescription: '',
+        label: '',
       }
       this.doSearch()
     },

+ 19 - 0
src/views/systemManagement/sceneUploadList.vue

@@ -71,6 +71,11 @@
       :pagination="pagination"
       index
     >
+    <el-table-column label="评价结果" align="center" slot="evaluate_result">
+      <template  v-slot="scope">
+        <span>{{ evaluateStatusMap[scope.row.evaluationStatus] || '-' }}</span>
+      </template>
+      </el-table-column>
       <el-table-column label="操作" slot="cgInfos" align="center">
         <template v-slot="scope">
           <!-- <span
@@ -237,6 +242,7 @@ export default {
         timeEnd: '', // 上传时间止
       },
       uploadDate: '',
+      evaluateStatusMap:['未评价','评价中','评价完成','评价失败'],
       columns: [
         {
           label: '任务名称',
@@ -264,6 +270,19 @@ export default {
               }
           },
         },
+        {
+          label: '评价开始时间',
+          prop: 'startEvaluationTime',
+        },
+        {
+          label: '评价结束时间',
+          prop: 'endEvaluationTime',
+        },
+        {
+          label: '评价结果',
+          prop: 'evaluate_result',
+          template: true,
+        },
         {
           label: '操作',
           prop: 'cgInfos',

+ 0 - 0
src/views/multimodeSimulation/evaluationResults.vue → src/views/workManagement/evaluationResults.vue


+ 48 - 4
src/views/workManagement/manualRunProjectList.vue

@@ -147,12 +147,12 @@
                 selection
                 index
             >
-                <el-table-column label="操作" slot="cgInfos" align="center">
+                <el-table-column label="操作" slot="cgInfos" align="center" width="150" fixed="right">
                     <template v-slot="scope">
                         <i
                             v-if="scope.row.nowRunState !== '10'"
                             @click="
-                                viewRow(scope.row.id, scope.row.projectName)
+                                viewRow(scope.row.id, scope.row.projectName,scope)
                             "
                             class="el-icon-view elIcon"
                             title="查看"
@@ -315,6 +315,50 @@ export default {
                     // },
                 },
                 // {
+                //     label: "复杂度评价结果",
+                //     prop: "simulationManualProjectEvaluation",
+                //     formatter(row){
+                //         if(row.simulationManualProjectEvaluation){
+                //             switch (row.simulationManualProjectEvaluation.complexityEvaluationStatus) {
+                //                 case '0':
+                //                     return '未开始';
+                //                 case '1':
+                //                     return '评价中';
+                //                 case '2':
+                //                     return '评价完成';
+                //                 case '3':
+                //                     return '评价失败';
+                //                 default :
+                //                     return '-'
+                //             }
+                //         }else{
+                //             return '-'
+                //         }
+                //     }
+                // },
+                // {
+                //     label: "危险度评价结果",
+                //     prop: "simulationManualProjectEvaluation1",
+                //     formatter(row){
+                //         if(row.simulationManualProjectEvaluation){
+                //             switch (row.simulationManualProjectEvaluation.riskEvaluationStatus) {
+                //                 case '0':
+                //                     return '未开始';
+                //                 case '1':
+                //                     return '评价中';
+                //                 case '2':
+                //                     return '评价完成';
+                //                 case '3':
+                //                     return '评价失败';
+                //                 default :
+                //                     return '-'
+                //             }
+                //         }else{
+                //             return '-'
+                //         }
+                //     }
+                // },
+                // {
                 //     label: "停/启用",
                 //     prop: "asd",
                 //     template: true,
@@ -561,10 +605,11 @@ export default {
             this.delRow(arr.join(","));
         },
 
-        viewRow(id, name) {
+        viewRow(id, name,opt) {
             // 修改项目详情的tabname
             this.$store.commit("getProjectInfoTabname", name);
             localStorage.setItem("projectInfoTabname", name);
+            localStorage.setItem("evaluateOpt", JSON.stringify(opt.row.simulationManualProjectEvaluation || {}));
 
             this.$router.push({
                 path: "/manualRunProjectList/projectInfo",
@@ -642,7 +687,6 @@ export default {
             if (this.$refs["table"]) this.doSearch(true);
         }, 1000 * 60);
 
-        // console.log(666);
         await this.$dicsListsInit({
             nowRunStateList: "projectRunState",
             evaluationLevelList: "evaluationLevel",

+ 38 - 6
src/views/workManagement/projectInfo.vue

@@ -74,10 +74,18 @@
                         <span>危险度规则:</span>
                         <b>{{ ruleDetailInfo.riskEvaluationRuleName || '-' }}</b>
                     </div>
+                    <!-- <div class="info">
+                        <span>危险度评价结果:</span>
+                        <b>{{ JSON.stringify(evaluateOpt)!='{}'?evaluateStatusMap[evaluateOpt.riskEvaluationStatus]:'-'}}</b>
+                    </div> -->
                     <div class="info">
                         <span>复杂度规则:</span>
                         <b>{{ ruleDetailInfo.complexityEvaluationRuleName || '-' }}</b>
                     </div>
+                    <!-- <div class="info">
+                        <span>复杂度评价结果:</span>
+                        <b>{{ JSON.stringify(evaluateOpt)!='{}'?evaluateStatusMap[evaluateOpt.complexityEvaluationStatus]:'-'}}</b>
+                    </div> -->
                     <div class="info">
                         <span>覆盖率规则:</span>
                         <b>{{ ruleDetailInfo.coverageRateEvaluationRuleName || '-' }}</b>
@@ -144,13 +152,13 @@
                             </div>
                         </div>
                         <div v-if="info.reportForReferenceLib"  class="cbox" @click="jumpReport" style="margin-left: 20px">
-                            <img src="../../assets/common/image/others/hasDoc.png" width="100%" v-bind:class="{
-                                cursor: true,
+                            <img :src="downImgSrc" width="100%" v-bind:class="{
+                                cursor: info.nowRunState === '30',
                             }" />
                             <div v-bind:class="{
-                                cursor: true,
+                                cursor: info.nowRunState === '30',
                             }">
-                                标准化测试报告
+                                场景评价报告
                             </div>
                         </div>
                     </div>
@@ -275,6 +283,16 @@
                     </div>
                     <div>
                         <tableList ref="table" :columns="columns" :getDataWay="getDataWay" :pagination="pagination">
+                            <el-table-column label="危险度进度" slot="risk" align="center">
+                                <template v-slot="scope">
+                                   <span>{{JSON.stringify(evaluateOpt)!='{}'?evaluateStatusMap[evaluateOpt.riskEvaluationStatus]:'-'}}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="复杂度进度" slot="complex" align="center">
+                                <template v-slot="scope">
+                                   <span>{{JSON.stringify(evaluateOpt)!='{}'?evaluateStatusMap[evaluateOpt.complexityEvaluationStatus]:'-'}}</span>
+                                </template>
+                            </el-table-column>
                             <el-table-column label="操作" slot="cgInfos" align="center">
                                 <template v-slot="scope">
                                     <i @click="viewRow(scope.row)" class="el-icon-view elIcon" title="查看"></i>
@@ -314,6 +332,8 @@ export default {
             projectType: "", // 1手动 2自动
             info: {},
             evaluationLevel: "",
+            evaluateOpt:{}, // 评价结果信息
+            evaluateStatusMap:['未评级','评价中','评价完成','评价失败'],
             ruleDetailInfo: {}, // 规则详情列表
             columns: [
                 {
@@ -344,6 +364,16 @@ export default {
                     label: "得分",
                     prop: "score",
                 },
+                {
+                    label: "危险度进度",
+                    prop: "risk",
+                    template: true,
+                },
+                {
+                    label: "复杂度进度",
+                    prop: "complex",
+                    template: true,
+                },
                 {
                     label: "操作",
                     prop: "cgInfos",
@@ -483,10 +513,12 @@ export default {
 
     methods: {
         jumpReport(){
-            this.$router.push({
+            if(this.info.nowRunState === '30'){
+                this.$router.push({
                     path: "/demo",
                     query: { id: this.id,projectType:this.projectType },
                 });
+            }
         },
         viewRow(row) {
             let path = "/manualRunProjectList/projectInfo/taskInfo";
@@ -662,7 +694,7 @@ export default {
         if (this.$route.query.id) {
             this.id = this.$route.query.id;
             this.projectType = this.$route.query.projectType || "1";
-
+            this.evaluateOpt = JSON.parse(localStorage.getItem('evaluateOpt'))
             this.$axios({
                 method: "post",
                 url: this.$api.workManagement.selectProjectDetailsById,

+ 25 - 7
src/views/multimodeSimulation/simulationEdit.vue → src/views/workManagement/simulationEdit.vue

@@ -1,5 +1,8 @@
 <template>
-  <div style="
+  <router-view v-if="$route.path.includes('multimodeSimulationEdit')"></router-view>
+  <div
+      v-else 
+      style="
       width: 100%;
       display: flex;
       flex-direction: column;
@@ -54,10 +57,6 @@
       :selectedAllCallBack="selectedAllCallBackB">
       <el-table-column label="操作" slot="cgInfos" align="center" width="180">
         <template v-slot="scope">
-          <span v-if="!isEdit && ![2, 4, 6, null].includes(scope.row.taskStatus)" @click="toEvaluate(scope.row)"
-            class="elIcon">
-            评价结果
-          </span>
           <i v-if="isEdit" @click="navigatorEdit(scope.row.id)" class="elIcon el-icon-edit-outline" title="编辑">
           </i>
           <i v-if="isEdit" @click="deleteScene(scope.row.id)" class="elIcon el-icon-delete" title="删除">
@@ -103,7 +102,19 @@ export default {
           prop: 'carNums',
         },
         {
-          label: '创建时间',
+          label: '运行开始时间',
+          prop: 'createTime',
+        },
+        {
+          label: '运行结束时间',
+          prop: 'createTime',
+        },
+        {
+          label: '运行状态',
+          prop: 'createTime',
+        },
+        {
+          label: '运行结果',
           prop: 'createTime',
         },
         {
@@ -143,6 +154,9 @@ export default {
     if (this.$route.query.id) {
       this.projectId = this.$route.query.id
       this.getTaskDetailById(this.$route.query.id)
+    }else{
+      this.$store.commit("getEvaluateTabname", '多仿真任务详情');
+      localStorage.setItem("evaluateTabname", '多仿真任务详情');
     }
   },
   methods: {
@@ -161,6 +175,8 @@ export default {
             projectMaxSeconds: res.info.projectMaxSeconds, // 最大仿真时间
             projectDescription: res.info.projectDescription, // 项目描述
           }
+          this.$store.commit("getEvaluateTabname", res.info.projectName);
+          localStorage.setItem("evaluateTabname", res.info.projectName);
         } else {
           this.$message.error(res.message || '查询信息失败')
         }
@@ -332,11 +348,13 @@ export default {
     // 跳转场景评价
     toEvaluate (row) {
       this.$router.push({
-        path: '/evaluationResults',
+        path: '/multimodeSimulation/simulationEvaluate/evaluationResults',
         query: { id: row.id },
       })
     },
     navigatorEdit (id) {
+      this.$store.commit("getEvaluateTabname", this.baseInfo.projectName);
+      localStorage.setItem("evaluateTabname", this.baseInfo.projectName);
       this.$router.push({
         name: 'multimodeSimulationEdit',
         query: {

+ 435 - 0
src/views/workManagement/simulationEvaluate.vue

@@ -0,0 +1,435 @@
+<template>
+  <router-view v-if="$route.path.includes('evaluationResults')"></router-view>
+  <div
+    v-else
+    style="
+      width: 100%;
+      display: flex;
+      flex-direction: column;
+      padding: 20px 50px;
+    "
+  >
+    <p
+      style="
+        font-size: 18px;
+        font-weight: bold;
+        border-bottom: 1px solid #ccc;
+        padding-bottom: 15px;
+      "
+    >
+      基础信息
+    </p>
+    <search-layout :needBox="true">
+      <template slot="searchItem1">
+        <span class="label">项目名称</span>
+        <el-input
+          v-model="baseInfo.projectName"
+          size="small"
+          clearable
+          placeholder="请输入"
+          maxlength="60"
+          :disabled="!isEdit"
+        >
+        </el-input>
+      </template>
+      <template slot="searchItem3">
+        <span class="label">最大仿真时间(s)</span>
+        <el-input
+          v-model="baseInfo.projectMaxSeconds"
+          size="small"
+          clearable
+          placeholder="请输入"
+          maxlength="60"
+          :disabled="!isEdit"
+        >
+        </el-input>
+        <span style="color: red" class="label">(最小是5,最大4500)</span>
+      </template>
+      <template slot="searchItem8">
+        <span class="label">项目描述</span>
+        <el-input
+          v-model="baseInfo.projectDescription"
+          size="small"
+          clearable
+          placeholder="请输入"
+          maxlength="60"
+          :disabled="!isEdit"
+        >
+        </el-input>
+      </template>
+    </search-layout>
+    <p
+      style="
+        font-size: 18px;
+        font-weight: bold;
+        border-bottom: 1px solid #ccc;
+        padding-bottom: 15px;
+        margin-top: 30px;
+      "
+    >
+      场景详情
+    </p>
+    <div style="display: flex; justify-content: end; margin: 20px 50px">
+      <el-button
+        v-if="configBtnShow"
+        class="addBtn"
+        icon="el-icon-circle-plus-outline"
+        @click="addConfig"
+        type="primary"
+        >添加</el-button
+      >
+      <el-button
+        v-if="configBtnShow"
+        class="addBtn"
+        icon="el-icon-circle-plus-outline"
+        @click="copyConfig"
+        type="primary"
+        >复制配置</el-button
+      >
+    </div>
+    <tableList
+      v-if="tableShow"
+      ref="table"
+      style="margin: 0 30px 30px"
+      :columns="columns"
+      :getDataWay="getDataWay"
+      :pagination="pagination"
+      selection
+      index
+      :needSelectedCallBack="true"
+      :selectedCallBack="selectedCallBackB"
+      :selectedAllCallBack="selectedAllCallBackB"
+    >
+      <el-table-column label="操作" slot="cgInfos" align="center" width="180">
+        <template v-slot="scope">
+          <span
+            v-if="!isEdit && ![2, 4, 6, null].includes(scope.row.taskStatus)"
+            @click="toEvaluate(scope.row)"
+            class="elIcon"
+          >
+            评价结果
+          </span>
+          <span v-else>-</span>
+        </template>
+      </el-table-column>
+    </tableList>
+    <!-- <div style="display: flex; justify-content: center; margin-top: 30px">
+      <el-button type="primary" @click="createTask">保存</el-button>
+      <el-button type="primary" @click="saveTask">提交</el-button>
+      <el-button @click="cancelHandle">取消</el-button>
+    </div> -->
+  </div>
+</template>
+
+<script>
+import searchLayout from '@/components/grid/searchLayout'
+import tableList from '@/components/grid/TableList'
+export default {
+  name: 'simulationEvaluate',
+  components: { searchLayout, tableList },
+
+  data() {
+    return {
+      isEdit: true, // 模式, 默认编辑模式 false 预览
+      isUpdate: false, //  更新模式
+      tableShow: false, // 是否显示表格,新增默认不显示
+      configBtnShow: false,
+      projectId: '', // 仿真任务id
+      baseInfo: {
+        projectName: '', // 项目名称
+        projectMaxSeconds: '', // 最大仿真时间
+        projectDescription: '', // 项目描述
+      },
+      selectSceneIds: [], // 选中ids
+      columns: [
+        {
+          label: '地图文件',
+          prop: 'mapName',
+        },
+        {
+          label: '车辆数量',
+          prop: 'carNums',
+        },
+        {
+          label: '运行开始时间',
+          prop: 'startTimeStr',
+        },
+        {
+          label: '运行结束时间',
+          prop: 'endTimeStr',
+        },
+        {
+          label: '运行状态',
+          prop: 'taskStatus',
+          formatter(row) {
+            switch (Number(row.taskStatus)) {
+              case 2:
+                return '手动终止'
+              case 3:
+                return '完成'
+              case 4:
+                return '自动终止'
+              case 5:
+                return '待分析'
+              case 6:
+                return 'terminated'
+              default:
+                return '-'
+            }
+          },
+        },
+        {
+          label: '运行结果',
+          prop: 'taskStatus',
+          formatter(row) {
+            if ([3, 5, '3', '5'].includes(row.taskStatus)) {
+              return '成功'
+            } else {
+              return '-'
+            }
+          },
+        },
+        {
+          label: '操作',
+          prop: 'cgInfos',
+          template: true,
+        },
+      ],
+      pagination: {
+        //分页使用
+        currentPage: 1,
+        pageSize: 10,
+        position: 'right',
+        pageSizes: [10, 30, 50, 100, 200],
+        layout: 'sizes, total, prev, pager, next, jumper',
+      },
+      getDataWay: {
+        //加载表格数据
+        dataType: 'url',
+        type: 'post',
+        data: this.$api.multimode.queryMulationSceneList,
+        param: {
+          projectId: this.$route.query.id || '',
+        },
+      },
+    }
+  },
+  mounted() {
+    this.isEdit = ['edit', 'add'].includes(this.$route.query.mode)
+      ? true
+      : false
+    this.isUpdate = ['edit', 'preview'].includes(this.$route.query.mode)
+      ? true
+      : false
+    this.configBtnShow = this.$route.query.mode == 'edit' ? true : false
+    if (['edit', 'preview'].includes(this.$route.query.mode)) {
+      this.tableShow = true
+    }
+    if (this.$route.query.id) {
+      this.projectId = this.$route.query.id
+      this.getTaskDetailById(this.$route.query.id)
+    }
+  },
+  methods: {
+    // 获取任务详情信息
+    getTaskDetailById(id) {
+      this.$axios({
+        method: 'post',
+        url: this.$api.multimode.queryMulationDetailById,
+        data: {
+          projectId: id,
+        },
+      }).then((res) => {
+        if (res.code == 200) {
+          this.baseInfo = {
+            projectName: res.info.projectName, // 项目名称
+            projectMaxSeconds: res.info.projectMaxSeconds, // 最大仿真时间
+            projectDescription: res.info.projectDescription, // 项目描述
+          }
+        } else {
+          this.$message.error(res.message || '查询信息失败')
+        }
+      })
+    },
+    deleteScene(id) {
+      this.$axios({
+        method: 'post',
+        url: this.$api.multimode.deleteMulationScene,
+        data: {
+          sceneId: id,
+        },
+      }).then((res) => {
+        if (res.code == 200) {
+          this.refreshList({ projectId: this.projectId })
+          this.$message.success('删除成功')
+        } else {
+          this.$message.error(res.message || '删除失败')
+        }
+      })
+    },
+    // 提交
+    saveTask() {
+      this.$axios({
+        method: 'post',
+        url: this.$api.multimode.saveMulationTask,
+        data: {
+          projectId: this.projectId,
+          projectName: this.baseInfo.projectName,
+          projectMaxSeconds: this.baseInfo.projectMaxSeconds,
+          projectDescription: this.baseInfo.projectDescription,
+        },
+      }).then((res) => {
+        if (res.code == 200) {
+          this.$message.success('提交成功')
+          this.$router.push({
+            path: '/multimodeSimulation',
+          })
+        } else {
+          this.$message.error(res.message || '提交失败')
+        }
+      })
+    },
+    // 刷新场景列表
+    refreshList(param) {
+      param
+        ? this.$refs['table'].loadData(param)
+        : this.$refs['table'].loadData()
+    },
+    // 复制场景列表
+    copyConfig() {
+      if (this.selectSceneIds.length <= 0) {
+        this.$message.warning('请选择要复制的列表')
+        return
+      } else {
+        this.$axios({
+          method: 'post',
+          url: this.$api.multimode.copyMulationScene,
+          data: {
+            sceneIdList: this.selectSceneIds,
+          },
+        }).then((res) => {
+          if (res.code == 200) {
+            this.$message.success('复制成功')
+            this.refreshList({ projectId: this.projectId })
+          } else {
+            this.$message.error(res.message || '复制失败')
+          }
+        })
+      }
+    },
+    // 新增场景列表
+    addConfig() {
+      this.$axios({
+        method: 'post',
+        url: this.$api.multimode.addMulationSceneList,
+        data: {
+          projectId: this.projectId,
+        },
+      }).then((res) => {
+        if (res.code == 200) {
+          this.isEdit = true
+          this.$message.success('添加成功')
+          this.selectSceneIds = []
+          this.refreshList({ projectId: this.projectId })
+        } else {
+          this.$message.error(res.message || '添加失败')
+        }
+      })
+    },
+    // 单列表选中
+    selectedCallBackB(row, type) {
+      // 选中
+      if (type == 1) {
+        const arr = this.selectSceneIds
+        arr.push(row.id)
+        this.selectSceneIds = arr
+      } else {
+        // 取消选中
+        this.selectSceneIds = this.selectSceneIds.filter(
+          (item) => item !== row.id
+        )
+      }
+    },
+    // 全选
+    selectedAllCallBackB(row) {
+      const arr = []
+      row.forEach((item) => {
+        arr.push(item.id)
+      })
+      this.selectSceneIds = arr
+    },
+    // 创建仿真任务
+    createTask() {
+      // 编辑,更新
+      if (this.isUpdate) {
+        this.$axios({
+          method: 'post',
+          url: this.$api.multimode.updateMulationSceneList,
+          data: {
+            projectId: this.projectId,
+            projectName: this.baseInfo.projectName,
+            projectMaxSeconds: this.baseInfo.projectMaxSeconds,
+            projectDescription: this.baseInfo.projectDescription,
+          },
+        }).then((res) => {
+          if (res.code == 200) {
+            this.$message.success('仿真任务更新成功')
+          } else {
+            this.$message.error(res.message || '任务更新失败')
+          }
+        })
+      } else {
+        // 创建
+        if (
+          this.baseInfo.projectName &&
+          this.baseInfo.projectMaxSeconds &&
+          this.baseInfo.projectDescription
+        ) {
+          this.$axios({
+            method: 'post',
+            url: this.$api.multimode.createMulationTask,
+            data: {
+              projectName: this.baseInfo.projectName,
+              projectMaxSeconds: this.baseInfo.projectMaxSeconds,
+              projectDescription: this.baseInfo.projectDescription,
+            },
+          }).then((res) => {
+            if (res.code == 200) {
+              this.$message.success('仿真任务创建成功')
+              this.getDataWay.param.projectId = res.info.projectId
+              this.projectId = res.info.projectId
+              this.isEdit = false
+              this.configBtnShow = true
+              this.tableShow = true
+              this.isUpdate = true
+            } else {
+              this.$message.error(res.message || '查询信息失败')
+            }
+          })
+        } else {
+          this.$message.warning('请填写完整信息后再保存')
+        }
+      }
+    },
+    cancelHandle() {
+      this.$router.back()
+    },
+    // 跳转场景评价
+    toEvaluate(row) {
+      this.$router.push({
+        path: '/multimodeSimulation/simulationEvaluate/evaluationResults',
+        query: { id: row.id },
+      })
+    },
+    navigatorEdit(id) {
+      this.$router.push({
+        name: 'multimodeSimulationEdit',
+        query: {
+          sceneId: id,
+          projectId: this.projectId,
+        },
+      })
+    },
+  },
+}
+</script>

+ 20 - 6
src/views/multimodeSimulation/simulationHome.vue → src/views/workManagement/simulationHome.vue

@@ -1,5 +1,10 @@
 <template>
-  <div class="multimodeSimulation">
+    <router-view v-if="$route.path.includes('simulationMap')"></router-view>
+    <router-view v-else-if="$route.path.includes('simulationEdit')"></router-view>
+    <router-view v-else-if="$route.path.includes('simulationEvaluate')"></router-view>
+
+    
+  <div v-else class="multimodeSimulation">
     <search-layout :needBox="true">
       <template slot="searchItem1">
         <span class="label">项目ID</span>
@@ -79,7 +84,7 @@
           <!-- <span v-if="scope.row.projectStatus==1" @click="" class="elIcon"> 查看 </span> -->
           <i
             v-if="scope.row.projectStatus == '3'"
-            @click="jumpDetailPage('preview',scope.row.id)"
+            @click="jumpEvaluate('preview',scope.row.id,scope)"
             class="el-icon-view elIcon"
             title="查看"
           >
@@ -120,7 +125,7 @@ import searchLayout from '@/components/grid/searchLayout'
 import tableList from '@/components/grid/TableList'
 import { mapState } from 'vuex'
 export default {
-  name: 'simulationHome', // 多模式仿真
+  name: 'multimodeSimulation', // 多模式仿真
   components: { searchLayout, tableList },
   data() {
     return {
@@ -238,19 +243,28 @@ export default {
     },
     addConfig() {
       this.$router.push({
-        path: '/simulationEdit',
+        path: '/multimodeSimulation/simulationEdit',
         query: { mode: 'add' },
       })
     },
     // 跳转地图管理
     mapConfig(){
       this.$router.push({
-        path: '/simulationMap',
+        path: "/multimodeSimulation/simulationMap",
+      })
+    },
+    // 跳转评价页面
+    jumpEvaluate(mode,id,opt){
+      this.$store.commit("getEvaluateTabname", opt.row.projectName);
+      localStorage.setItem("evaluateTabname", opt.row.projectName);
+      this.$router.push({
+        path: '/multimodeSimulation/simulationEvaluate',
+        query: { mode,id },
       })
     },
     jumpDetailPage(mode,id) {
       this.$router.push({
-        path: '/simulationEdit',
+        path: '/multimodeSimulation/simulationEdit',
         query: { mode,id },
       })
     },

+ 1 - 1
src/views/multimodeSimulation/simulationMap.vue → src/views/workManagement/simulationMap.vue

@@ -140,7 +140,7 @@
 import searchLayout from '@/components/grid/searchLayout'
 import tableList from '@/components/grid/TableList'
 export default {
-  name: 'simulationHome', // 多模式仿真
+  name: 'simulationMap', // 多模式仿真地图
   components: { searchLayout, tableList },
   data() {
     return {

Some files were not shown because too many files changed in this diff