Browse Source

feat: 仿真镜像接口联调、增加仿真镜像选择列表、增加仿真镜像选择的相关信息

guolei 1 year ago
parent
commit
37009c78e5

+ 13 - 1
src/api/systemManagement.js

@@ -53,6 +53,12 @@ const getSystemLogPageList = basePart + '/log/getSystemLogPageList' // 系统列
 //字典管理
 const refreshDictsByTypes = basePart + '/dict/refreshDictsByTypes' // 刷新字典
 
+//镜像组
+const selectSimulationMapList =  basePart + '/simulationMageGroup/selectSimulationMapList';
+const addSimulationMageGroup =  basePart + '/simulationMageGroup/addSimulationMageGroup';
+const updateSimulationMageGroup = basePart + '/simulationMageGroup/updateSimulationMageGroup';
+const getSimulationMageGroup = basePart + '/simulationMageGroup/getSimulationMageGroup';
+const deleteSimulationMageGroup = basePart + '/simulationMageGroup/deleteSimulationMageGroup';
 
 export default {
     getUserPageList,
@@ -95,5 +101,11 @@ export default {
     getOperationLogPageList,
     getSystemLogPageList,
 
-    refreshDictsByTypes
+    refreshDictsByTypes,
+	
+	selectSimulationMapList,
+	addSimulationMageGroup,
+	updateSimulationMageGroup,
+	getSimulationMageGroup,
+	deleteSimulationMageGroup
 }

+ 5 - 0
src/api/workManagement.js

@@ -42,6 +42,9 @@ const settingsSimulation = basePart + '/simulationProject/setMultiSimulationScen
 const saveOrUpdateSceneCarList = basePart + '/simulationProject/addOrUpdateMultiSimulationSceneCarList';//设置仿真视角
 const getMultiSimulationSceneDetail = basePart + '/simulationProject/getMultiSimulationSceneDetail';//获取多模式仿真场景详情
 const getStandardTestReport =  basePart + '/simulationProject/getProjectReportForAllReferenceScene'; // 标准化测试报告
+
+const selectAllSimulationMageGroupList =  basePart + '/simulationMageGroup/selectAllSimulationMageGroupList';
+
 export default {
     addOrUpdateProject,
     selectProjectById,
@@ -85,4 +88,6 @@ export default {
     getEvaluationRuleDetail,
     querySceneEvaluationDetail,
     getStandardTestReport,
+	
+	selectAllSimulationMageGroupList
 }

+ 0 - 10
src/router/index.js

@@ -8,7 +8,6 @@ import sceneLibrary from "./sceneLibrary"; // 场景库
 import systemManagement from "./systemManagement"; // 账户管理
 import workManagement from "./workManagement"; // 工作管理
 import personalInformation from "./personalInformation"
-import simulationSceneGroup from "@/views/systemManagement/SimulationSceneGroup"
 Vue.use(VueRouter);
 
 const routes = [{
@@ -67,15 +66,6 @@ const routes = [{
       redirect: '/index',
       children: sceneLibrary,
     },
-     {
-       path: "/simulationSceneGroup",
-       name: "simulationSceneGroup",
-       meta: {
-         tabname: "仿真景象组",
-         login: true
-       },
-       component: simulationSceneGroup,
-     },
     {
       path: "/workManagement",
       name: "workManagement",

+ 11 - 1
src/router/systemManagement.js

@@ -1,4 +1,14 @@
-export default [{
+export default [
+	{
+	  path: "/simulationSceneGroup",
+	  name: "simulationSceneGroup",
+	  meta: {
+	    tabname: "仿真镜象组",
+	    login: true
+	  },
+	  component: () => import("@/views/systemManagement/simulationSceneGroup")
+	},
+	{
     path: "/accountManagement",
     name: "accountManagement",
     meta: {

+ 284 - 95
src/views/systemManagement/SimulationSceneGroup.vue

@@ -3,83 +3,70 @@
 		<el-card class="box-card">
 			<el-form :inline="true" :model="formInline" class="demo-form-inline">
 				<el-form-item label="名称">
-					<el-input v-model="formInline.name" placeholder=""></el-input>
+					<el-input v-model="formInline.groupName" placeholder=""></el-input>
 				</el-form-item>
 
 				<el-form-item label="描述">
-					<el-input v-model="formInline.desc" placeholder=""></el-input>
+					<el-input v-model="formInline.groupDescription" placeholder=""></el-input>
 				</el-form-item>
 				<el-form-item>
-					<el-button type="primary" @click="onSubmit">查询</el-button>
-					<el-button type="primary" @click="onSubmit">重置</el-button>
+					<el-button type="primary" @click="search">查询</el-button>
+					<el-button type="primary" @click="reset">重置</el-button>
 				</el-form-item>
 			</el-form>
 		</el-card>
 		<div class="cus-table">
 			<div class="operator">
-				<el-button type="danger" class="delete-btn">批量删除</el-button>
-				<el-button type="primary" class="add-btn">新增</el-button>
+				<el-button type="danger" class="delete-btn" @click="deleteRecordsConfirm(0)">批量删除</el-button>
+				<el-button type="primary" class="add-btn" @click="changeDialogFormShow(0)">新增</el-button>
 			</div>
-			<el-table :data="tableData" stripe style="width: 100%">
-				<el-table-column prop="address" label="序号">
+			<el-table :data="tableData" stripe style="width: 100%" @selection-change="handleSelectionChange">
+				<el-table-column type="selection" width="55">
 				</el-table-column>
-				<el-table-column prop="name" label="名称">
+				<el-table-column label="序号" width="100">
+					<template slot-scope="scope">{{ scope.$index + 1}}</template>
 				</el-table-column>
-				<el-table-column prop="name" label="描述">
+				<el-table-column prop="groupName" label="名称">
 				</el-table-column>
-				<el-table-column prop="date" label="创建时间">
+				<el-table-column prop="groupDescription" label="描述">
+				</el-table-column>
+				<el-table-column prop="createTime" label="创建时间">
 				</el-table-column>
 				<el-table-column label="操作">
 					<template slot-scope="scope">
-						<el-button size="mini" @click="dialogFormVisible = true">编辑</el-button>
-						<el-button size="mini" type="danger"
-							@click="handleDelete(scope.$index, scope.row)">删除</el-button>
+						<el-button size="mini" @click="changeDialogFormShow(1, scope.row.id)">编辑</el-button>
+						<el-button class="delete-btn" size="mini" type="danger"
+							@click="deleteRecordsConfirm(1, scope.row.id)">删除</el-button>
 					</template>
 				</el-table-column>
 			</el-table>
 			<el-pagination class="pageage" @size-change="handleSizeChange" @current-change="handleCurrentChange"
-				:current-page="currentPage4" :page-sizes="[100, 200, 300, 400]" :page-size="100"
-				layout="total, sizes, prev, pager, next, jumper" :total="400">
+				:current-page="page.pageNum" :page-sizes="[5, 10, 15]" :page-size="page.pageSize"
+				layout="total, sizes, prev, pager, next, jumper" :total="page.total">
 			</el-pagination>
 		</div>
 
-		<el-dialog title="收货地址" :visible.sync="dialogFormVisible" width="450px">
-			<el-form :model="form">
-				<el-form-item  :label-width="formLabelWidth">
-					<span slot="label">
-						<span style="color: red">*</span>
-						<span>仿真镜像组名称</span>
-					</span>
-					<el-input v-model="form.name" autocomplete="off"></el-input>
+		<el-dialog :title="dialogFormName" :visible.sync="dialogFormVisible" width="450px">
+			<el-form :model="form" :rules="rules" ref="form">
+				<el-form-item label="仿真镜像组名称" :label-width="formLabelWidth" prop="groupName">
+					<el-input v-model="form.groupName" autocomplete="off"></el-input>
 				</el-form-item>
-				<el-form-item :label-width="formLabelWidth">
-					<span slot="label">
-						<span style="color: red">*</span>
-						<span>仿真软件</span>
-					</span>
-					<el-input v-model="form.name" autocomplete="off"></el-input>
+				<el-form-item label="仿真软件" :label-width="formLabelWidth" prop="softwarePath">
+					<el-input v-model="form.softwarePath" autocomplete="off"></el-input>
 				</el-form-item>
-				<el-form-item :label-width="formLabelWidth">
-					<span slot="label">
-						<span style="color: red">*</span>
-						<span>仿真控制器</span>
-					</span>
-					<el-input v-model="form.name" autocomplete="off"></el-input>
+				<el-form-item label="仿真控制器" :label-width="formLabelWidth" prop="controllerPath">
+					<el-input v-model="form.controllerPath" autocomplete="off"></el-input>
 				</el-form-item>
-				<el-form-item :label-width="formLabelWidth">
-					<span slot="label">
-						<span style="color: red">*</span>
-						<span>仿真连接器</span>
-					</span>
-					<el-input v-model="form.name" autocomplete="off"></el-input>
+				<el-form-item label="仿真连接器" :label-width="formLabelWidth" prop="connectorPath">
+					<el-input v-model="form.connectorPath" autocomplete="off"></el-input>
 				</el-form-item>
-				<el-form-item label="仿真镜像组秒速" :label-width="formLabelWidth">
-					<el-input v-model="form.name" autocomplete="off"></el-input>
+				<el-form-item label="仿真镜像组描述" :label-width="formLabelWidth" prop="groupDescription">
+					<el-input v-model="form.groupDescription" autocomplete="off"></el-input>
 				</el-form-item>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
 				<el-button @click="dialogFormVisible = false">取 消</el-button>
-				<el-button type="primary" @click="dialogFormVisible = false">确 定</el-button>
+				<el-button type="primary" @click="confirm">确 定</el-button>
 			</div>
 		</el-dialog>
 	</div>
@@ -87,70 +74,257 @@
 
 <script>
 	export default {
-		name: "SimulationSceneGroup",
+		name: "simulationSceneGroup",
 		data() {
 			return {
+				dialogFormName: "",
+				dialogFormType: 0,
 				dialogFormVisible: false,
 				formLabelWidth: '160px',
 				form: {
-					name: '',
-					region: '',
-					date1: '',
-					date2: '',
-					delivery: false,
-					type: [],
-					resource: '',
-					desc: ''
+					id: '',
+					groupName: '',
+					softwarePath: '',
+					controllerPath: '',
+					connectorPath: '',
+					groupDescription: ''
+				},
+				page: {
+					pageNum: 1,
+					pageSize: 5,
+					total: 100
 				},
-				currentPage4: 4,
 				formInline: {
-					name: '',
-					desc: ''
+					groupName: '',
+					groupDescription: ''
 				},
-				tableData: [{
-					date: '2016-05-02',
-					name: '王小虎',
-					address: '上海市普陀区金沙江路 1518 弄'
-				}, {
-					date: '2016-05-04',
-					name: '王小虎',
-					address: '上海市普陀区金沙江路 1517 弄'
-				}, {
-					date: '2016-05-01',
-					name: '王小虎',
-					address: '上海市普陀区金沙江路 1519 弄'
-				}, {
-					date: '2016-05-03',
-					name: '王小虎',
-					address: '上海市普陀区金沙江路 1516 弄'
-				}, {
-					date: '2016-05-02',
-					name: '王小虎',
-					address: '上海市普陀区金沙江路 1518 弄'
-				}, {
-					date: '2016-05-04',
-					name: '王小虎',
-					address: '上海市普陀区金沙江路 1517 弄'
-				}, {
-					date: '2016-05-01',
-					name: '王小虎',
-					address: '上海市普陀区金沙江路 1519 弄'
-				}, {
-					date: '2016-05-03',
-					name: '王小虎',
-					address: '上海市普陀区金沙江路 1516 弄'
-				}]
+				tableData: [],
+				multipleSelection: [],
+				rules: {
+					groupName: [{
+							required: true,
+							message: '请输入镜像组名',
+							trigger: 'blur'
+						},
+						{
+							min: 3,
+							max: 15,
+							message: '长度在 3 到 15 个字符',
+							trigger: 'blur'
+						}
+					],
+					softwarePath: [{
+							required: true,
+							message: '请输入仿真软件',
+							trigger: 'blur'
+						},
+						{
+							min: 1,
+							max: 255,
+							message: '长度在 1 到 255 个字符',
+							trigger: 'blur'
+						}
+					],
+					controllerPath: [{
+							required: true,
+							message: '请输入仿真控制器',
+							trigger: 'blur'
+						},
+						{
+							min: 1,
+							max: 255,
+							message: '长度在 1 到 255 个字符',
+							trigger: 'blur'
+						}
+					],
+					connectorPath: [{
+							required: true,
+							message: '请输入仿真连接器',
+							trigger: 'blur'
+						},
+						{
+							min: 1,
+							max: 255,
+							message: '长度在 1 到 255 个字符',
+							trigger: 'blur'
+						}
+					],
+					groupDescription: [{
+							required: true,
+							message: '请输入仿真镜像组描述',
+							trigger: 'blur'
+						},
+						{
+							min: 1,
+							max: 255,
+							message: '长度在 1 到 255 个字符',
+							trigger: 'blur'
+						}
+					]
+				}
 			}
 		},
+		mounted() {
+			this.search();
+		},
 		methods: {
-			onSubmit() {
-				console.log('submit!');
+			deleteRecordsConfirm(type, id) {
+
+				if (type == 0 && this.multipleSelection.length == 0) {
+					this.message("至少选择一条删除的记录", "error");
+					return;
+
+				}
+
+				this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
+					confirmButtonText: '确定',
+					cancelButtonText: '取消',
+					type: 'warning'
+				}).then(() => {
+					if (type == 0) {
+						this.deleteRecords(this.multipleSelection.map(item => {
+							return {
+								id: item.id
+							}
+						}));
+					} else {
+						this.deleteRecords([{
+							id: id
+						}]);
+					}
+				}).catch(() => {});
+
+			},
+			deleteRecords(ids) {
+				this.$axios({
+					method: 'post',
+					url: this.$api.systemManagement.deleteSimulationMageGroup,
+					data: ids,
+				}).then((res) => {
+					if (res.code == 200) {
+						this.search();
+					} else {
+						this.message("操作失败", "error");
+					}
+				})
+			},
+
+			async addOrUpdate(url) {
+				this.$axios({
+					method: 'post',
+					url: url,
+					data: this.form,
+				}).then((res) => {
+					if (res.code == 200) {
+						this.search();
+					} else {
+						this.message("添加失败", "error");
+					}
+				})
+			},
+			confirm() {
+				this.$refs.form.validate((valid) => {
+					if (valid) {
+						this.dialogFormVisible = false;
+						let url;
+						if (this.dialogFormType == 0) {
+							url = this.$api.systemManagement.addSimulationMageGroup;
+						} else {
+							url = this.$api.systemManagement.updateSimulationMageGroup;
+						}
+						this.addOrUpdate(url);
+					}
+				})
+			},
+			message(content, type) {
+				this.$message({
+					message: content,
+					type: type
+				});
+			},
+			search() {
+				this.$axios({
+					method: 'post',
+					url: this.$api.systemManagement.selectSimulationMapList,
+					data: {
+						groupName: this.formInline.groupName,
+						groupDescription: this.formInline.groupDescription,
+						pageNum: this.page.pageNum,
+						pageSize: this.page.pageSize
+					},
+				}).then((res) => {
+					if (res.code == 200) {
+						this.tableData = res.info.list;
+						this.page = {
+							pageNum: res.info.pageNum,
+							pageSize: res.info.pageSize,
+							total: res.info.total
+						}
+					}
+				})
+			},
+			changeDialogFormShow(type, id) {
+				this.dialogFormType = type;
+				if (type == 0) {
+					this.dialogFormName = "新增";
+					this.clearForm();
+				} else {
+					this.dialogFormName = "编辑";
+					this.getRecordDetails(id);
+
+				}
+				this.dialogFormVisible = true;
+
+				this.$nextTick(() => {
+					this.$refs.form.resetFields();
+				})
+
+			},
+			clearForm() {
+				this.form = {
+					id: '',
+					groupName: '',
+					softwarePath: '',
+					controllerPath: '',
+					connectorPath: '',
+					groupDescription: ''
+				};
+			},
+			getRecordDetails(id) {
+				this.$axios({
+					method: 'post',
+					url: this.$api.systemManagement.getSimulationMageGroup,
+					data: {
+						id: id
+					},
+				}).then((res) => {
+					if (res.code == 200) {
+						this.form = res.info;
+					}
+				})
+			},
+			handleSelectionChange(val) {
+				this.multipleSelection = val;
 			},
 			handleSizeChange(val) {
-				console.log(`每页 ${val} 条`);
+				this.page.pageSize = val;
+				this.search();
 			},
 			handleCurrentChange(val) {
-				console.log(`当前页: ${val}`);
+				this.page.pageNum = val;
+				this.search();
+			},
+			handleClose() {
+
+			},
+			reset() {
+				this.formInline = {
+					name: '',
+					desc: ''
+				}
+			},
+			batchDelete() {
+
 			}
 		}
 	}
@@ -210,7 +384,7 @@
 	}
 
 	.el-form-item__label {
-		font-size: 18px !important;
+		font-size: 16px !important;
 	}
 
 	.el-table th.el-table__cell {
@@ -230,4 +404,19 @@
 	.el-dialog__body {
 		width: 100%;
 	}
+
+	.item-text {
+		font-size: 16px;
+	}
+
+	.delete-btn {
+		background-color: #f56c6c !important;
+		color: #ffffff !important;
+		border-radius: 0.5rem;
+	}
+
+	.el-form-item span,
+	.el-form-item .el-form-item__label {
+		font-size: 15px !important;
+	}
 </style>

+ 553 - 558
src/views/workManagement/manualRunProjectDetail.vue

@@ -1,50 +1,25 @@
 <template>
-  <div>
-    <el-form
-      ref="form"
-      :model="form"
-      :rules="rules"
-      label-width="140px"
-      class="flexBox"
-    >
-      <div class="formItemBox">
-        <el-form-item label="项目名称:" prop="projectName">
-          <el-input
-            placeholder="请输入"
-            maxlength="120"
-            v-autoTrim="{ obj: form, key: 'projectName' }"
-            v-model="form.projectName"
-          >
-          </el-input>
-        </el-form-item>
-        <el-form-item label="项目描述:" prop="projectDescribe">
-          <el-input
-            type="textarea"
-            :autosize="{ minRows: 4, maxRows: 4 }"
-            placeholder="请输入"
-            maxlength="300"
-            v-autoTrim="{ obj: form, key: 'projectDescribe' }"
-            v-model="form.projectDescribe"
-          >
-          </el-input>
-        </el-form-item>
-        <el-form-item label="算法来源:" prop="algorithmType">
-          <el-radio v-model="form.algorithmType" label="1" @change="typeChange"
-            >私有导入</el-radio
-          >
-          <el-radio v-model="form.algorithmType" label="3" @change="typeChange"
-            >算法平台</el-radio
-          >
-        </el-form-item>
-        <el-form-item label="选择算法:" prop="algorithmArrayS">
-          <el-cascader
-            ref="cascaderA"
-            v-model="form.algorithmArrayS"
-            :options="algorithmList"
-            :props="props"
-            @change="algorithmSelChange"
-          ></el-cascader>
-          <!-- <el-select v-model="form.algorithm">
+	<div>
+		<el-form ref="form" :model="form" :rules="rules" label-width="140px" class="flexBox">
+			<div class="formItemBox">
+				<el-form-item label="项目名称:" prop="projectName">
+					<el-input placeholder="请输入" maxlength="120" v-autoTrim="{ obj: form, key: 'projectName' }"
+						v-model="form.projectName">
+					</el-input>
+				</el-form-item>
+				<el-form-item label="项目描述:" prop="projectDescribe">
+					<el-input type="textarea" :autosize="{ minRows: 4, maxRows: 4 }" placeholder="请输入" maxlength="300"
+						v-autoTrim="{ obj: form, key: 'projectDescribe' }" v-model="form.projectDescribe">
+					</el-input>
+				</el-form-item>
+				<el-form-item label="算法来源:" prop="algorithmType">
+					<el-radio v-model="form.algorithmType" label="1" @change="typeChange">私有导入</el-radio>
+					<el-radio v-model="form.algorithmType" label="3" @change="typeChange">算法平台</el-radio>
+				</el-form-item>
+				<el-form-item label="选择算法:" prop="algorithmArrayS">
+					<el-cascader ref="cascaderA" v-model="form.algorithmArrayS" :options="algorithmList" :props="props"
+						@change="algorithmSelChange"></el-cascader>
+					<!-- <el-select v-model="form.algorithm">
                         <el-option
                             v-for="item in algorithmList"
                             :label="item.name"
@@ -53,16 +28,11 @@
                             :title="item.description"
                         ></el-option>
                     </el-select> -->
-        </el-form-item>
-        <el-form-item label="选择车辆:" prop="vehicleArrayS">
-          <el-cascader
-            ref="cascaderB"
-            v-model="form.vehicleArrayS"
-            :options="vehicleList"
-            :props="props"
-            @change="vehicleSelChange"
-          ></el-cascader>
-          <!-- <el-select
+				</el-form-item>
+				<el-form-item label="选择车辆:" prop="vehicleArrayS">
+					<el-cascader ref="cascaderB" v-model="form.vehicleArrayS" :options="vehicleList" :props="props"
+						@change="vehicleSelChange"></el-cascader>
+					<!-- <el-select
                         v-model="form.vehicle"
                         @change="vehicleSelChange"
                     >
@@ -74,16 +44,11 @@
                             :title="item.description"
                         ></el-option>
                     </el-select> -->
-        </el-form-item>
-        <el-form-item label="选择场景:" prop="sceneArrayS">
-          <el-cascader
-            ref="cascaderC"
-            v-model="form.sceneArrayS"
-            :options="sceneList"
-            :props="props"
-            @change="sceneSelChange"
-          ></el-cascader>
-          <!-- <el-select v-model="form.scene" @change="sceneSelChange">
+				</el-form-item>
+				<el-form-item label="选择场景:" prop="sceneArrayS">
+					<el-cascader ref="cascaderC" v-model="form.sceneArrayS" :options="sceneList" :props="props"
+						@change="sceneSelChange"></el-cascader>
+					<!-- <el-select v-model="form.scene" @change="sceneSelChange">
                         <el-option
                             v-for="item in sceneList"
                             :label="item.name"
@@ -91,512 +56,542 @@
                             :key="item.id"
                         ></el-option>
                     </el-select> -->
-        </el-form-item>
-        <el-form-item label="并行度:" prop="parallelism">
-          <el-input
-            :disabled="runDisabled"
-            placeholder="请输入"
-            maxlength="10"
-            v-autoTrim="{ obj: form, key: 'parallelism' }"
-            v-model="form.parallelism"
-          >
-          </el-input>
-        </el-form-item>
-        <el-form-item label="场景评价规则:"></el-form-item>
-        <el-form-item label="危险度" class="rule-item" prop="riskEvaluationRuleId">
-          <el-select placeholder="暂不评价" v-model="form.riskEvaluationRuleId">
-            <el-option
-              v-for="(item, idx) in scriptList['2']"
-              :key="idx"
-              :label="item.ruleName"
-              :value="item.ruleId"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="复杂度" class="rule-item" prop="complexityEvaluationRuleId">
-          <el-select placeholder="暂不评价" v-model="form.complexityEvaluationRuleId">
-            <el-option
-              v-for="(item, idx) in scriptList['1']"
-              :key="idx"
-              :label="item.ruleName"
-              :value="item.ruleId"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="暴露率" class="rule-item" prop="exposureRateEvaluationRuleId">
-          <el-select placeholder="暂不评价" v-model="form.exposureRateEvaluationRuleId">
-            <el-option
-              v-for="(item, idx) in scriptList['3']"
-              :key="idx"
-              :label="item.ruleName"
-              :value="item.ruleId"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="覆盖率" class="rule-item" prop="coverageRateEvaluationRuleId">
-          <el-select placeholder="暂不评价" v-model="form.coverageRateEvaluationRuleId">
-            <el-option
-              v-for="(item, idx) in scriptList['4']"
-              :key="idx"
-              :label="item.ruleName"
-              :value="item.ruleId"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="最大仿真时间(s):" prop="maxSimulationTime">
-          <div style="position: relative;">
-            <el-input
-            placeholder="请输入"
-            maxlength="10"
-            v-autoTrim="{ obj: form, key: 'maxSimulationTime' }"
-            v-model="form.maxSimulationTime"
-          >
-          </el-input>
-            <span style="position: absolute; right: -160px;">(最小是5,最大是10000)</span>
-          </div>
-         
-        </el-form-item>
-        <el-form-item label="是否选择GPU:" prop="isChoiceGpu">
-          <el-radio v-model="form.isChoiceGpu" label="0">是</el-radio>
-          <el-radio v-model="form.isChoiceGpu" label="1">否</el-radio>
-        </el-form-item>
-      </div>
-
-            <div class="tipBox">
-                <div class="tip tipA">
-                    <!-- (传感器1:根据车辆自动带出;传感器2:根据车辆自动带出) -->
-                    <span v-for="item in sensors" :key="item" v-bind:class="{
+				</el-form-item>
+				<el-form-item label="仿真镜像组:" prop="simulationMageGroupId">
+					<el-select v-model="form.simulationMageGroupId">
+						<el-option v-for="item in simulationMageGroup" :label="item.groupName" :value="item.id"
+							:key="item.id"></el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="并行度:" prop="parallelism">
+					<el-input :disabled="runDisabled" placeholder="请输入" maxlength="10"
+						v-autoTrim="{ obj: form, key: 'parallelism' }" v-model="form.parallelism">
+					</el-input>
+				</el-form-item>
+				<el-form-item label="场景评价规则:"></el-form-item>
+				<el-form-item label="危险度" class="rule-item" prop="riskEvaluationRuleId">
+					<el-select placeholder="暂不评价" v-model="form.riskEvaluationRuleId">
+						<el-option v-for="(item, idx) in scriptList['2']" :key="idx" :label="item.ruleName"
+							:value="item.ruleId"></el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="复杂度" class="rule-item" prop="complexityEvaluationRuleId">
+					<el-select placeholder="暂不评价" v-model="form.complexityEvaluationRuleId">
+						<el-option v-for="(item, idx) in scriptList['1']" :key="idx" :label="item.ruleName"
+							:value="item.ruleId"></el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="暴露率" class="rule-item" prop="exposureRateEvaluationRuleId">
+					<el-select placeholder="暂不评价" v-model="form.exposureRateEvaluationRuleId">
+						<el-option v-for="(item, idx) in scriptList['3']" :key="idx" :label="item.ruleName"
+							:value="item.ruleId"></el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="覆盖率" class="rule-item" prop="coverageRateEvaluationRuleId">
+					<el-select placeholder="暂不评价" v-model="form.coverageRateEvaluationRuleId">
+						<el-option v-for="(item, idx) in scriptList['4']" :key="idx" :label="item.ruleName"
+							:value="item.ruleId"></el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="最大仿真时间(s):" prop="maxSimulationTime">
+					<div style="position: relative;">
+						<el-input placeholder="请输入" maxlength="10" v-autoTrim="{ obj: form, key: 'maxSimulationTime' }"
+							v-model="form.maxSimulationTime">
+						</el-input>
+						<span style="position: absolute; right: -160px;">(最小是5,最大是10000)</span>
+					</div>
+
+				</el-form-item>
+				<el-form-item label="是否选择GPU:" prop="isChoiceGpu">
+					<el-radio v-model="form.isChoiceGpu" label="0">是</el-radio>
+					<el-radio v-model="form.isChoiceGpu" label="1">否</el-radio>
+				</el-form-item>
+			</div>
+
+			<div class="tipBox">
+				<div class="tip tipA">
+					<!-- (传感器1:根据车辆自动带出;传感器2:根据车辆自动带出) -->
+					<span v-for="item in sensors" :key="item" v-bind:class="{
                         iconA: item === 'camera',
                         iconB: item === 'ogt',
                         iconC: item === 'lidar',
                         iconE: item === 'gps',
                     }"></span>
-                </div>
-                <div class="tip">(场景数量:{{ sceneCount }})</div>
-                <!-- <div class="tip flexBox">
+				</div>
+				<div class="tip">(场景数量:{{ sceneCount }})</div>
+				<!-- <div class="tip flexBox">
                     <div>(下次运行时间:XX时XX分XX秒)</div>
                     <div class="tipBtnBox">
                         <el-button type="primary">规则查看</el-button>
                     </div>
                 </div> -->
-                <div class="tip">(最多可用资源:{{ maxCount }})</div>
-                <!-- <div class="tip">(最小是5,最大是10000)</div> -->
-            </div>
-        </el-form>
-        <div class="btns">
-            <el-button type="primary" @click="save(false)">保存</el-button>
-            <el-button type="primary" @click="save(true)" v-if="this.$route.query.id">另存为</el-button>
-            <el-button type="primary" @click="save(false, true)" :disabled="runDisabled">提交</el-button>
-            <el-button type="primary" plain @click="cancel">取消</el-button>
-        </div>
-    </div>
+				<div class="tip">(仿真镜像组数量:{{ simulationMageGroup.length }})</div>
+				<div class="tip">(最多可用资源:{{ maxCount }})</div>
+				<!-- <div class="tip">(最小是5,最大是10000)</div> -->
+			</div>
+		</el-form>
+		<div class="btns">
+			<el-button type="primary" @click="save(false)">保存</el-button>
+			<el-button type="primary" @click="save(true)" v-if="this.$route.query.id">另存为</el-button>
+			<el-button type="primary" @click="save(false, true)" :disabled="runDisabled">提交</el-button>
+			<el-button type="primary" plain @click="cancel">取消</el-button>
+		</div>
+	</div>
 </template>
 
 <script>
-//import  from '';
-let maxCount = 0 // 用于校验
-let validateNum = (rule, value, callback) => {
-  !/^(\d+)$/.test(value) && callback(new Error(rule.message))
-  if (+value <= 0 || +value > +maxCount) callback(new Error(rule.message))
-  callback()
-}
-let validateNumA = (rule, value, callback) => {
-    !/^(\d+)$/.test(value) && callback(new Error(rule.message));
-    if (+value < 5 || +value > 10000) callback(new Error(rule.message));
-    callback();
-};
-let validateNumB = (rule, value, callback) => {
-  !/^(\d+)$/.test(value) && callback(new Error(rule.message))
-  if (+value <= 0) callback(new Error(rule.message))
-  callback()
-}
-
-export default {
-  name: 'manualRunProjectDetail', // 标准化测试详情
-  components: {},
-  data() {
-    return {
-      form: {
-        id: '',
-        projectName: '', // 项目名称
-        projectDescribe: '', // 项目描述
-        algorithmType: '1', // 算法来源
-        algorithm: '', // 选择算法
-        algorithmArrayS: '', // 选择算法
-        vehicle: '', // 选择车辆
-        vehicleArrayS: '', // 选择车辆
-        scene: '', // 选择场景
-        sceneArrayS: '', // 选择场景
-        parallelism: '', // 并行度
-        maxSimulationTime: '', // 最大仿真时间
-        isChoiceGpu: '0', // 是否选择GPU
-        nowRunState: '10', // 运行状态
-        complexityEvaluationRuleId: '', // 复杂度
-        riskEvaluationRuleId: '', // 危险度
-        exposureRateEvaluationRuleId: '', // 暴露率
-        coverageRateEvaluationRuleId: '', // 覆盖率
-      },
-      algorithmList: [], // 算法对应列表
-      vehicleList: [], // 车辆对应列表
-      sceneList: [], // 场景对应列表
-      maxCount: 0, // 最多可用资源
-      sceneCount: 0, // 场景数量
-      scriptList: {}, // 评价脚本列表
-      rules: {
-        projectName: [{ required: true, message: '请输入', trigger: 'blur' }],
-        projectDescribe: [
-          { required: true, message: '请输入', trigger: 'blur' },
-        ],
-        algorithmType: [
-          { required: true, message: '请选择', trigger: 'change' },
-        ],
-        algorithmArrayS: [
-          { required: true, message: '请选择', trigger: 'change' },
-        ],
-        vehicleArrayS: [
-          { required: true, message: '请选择', trigger: 'change' },
-        ],
-        sceneArrayS: [{ required: true, message: '请选择', trigger: 'change' }],
-        parallelism: [
-          { required: true, message: '请输入', trigger: 'blur' },
-          // {
-          //     validator: validateNum,
-          //     message: "请输入不大于最多可用资源的正整数",
-          //     trigger: ["blur"],
-          // },
-        ],
-        maxSimulationTime: [
-          { required: true, message: '请输入', trigger: 'blur' },
-          {
-            validator: validateNumA,
-            message: '请输入不小于5且不大于10000的正整数',
-            trigger: ['blur'],
-          },
-        ],
-        isChoiceGpu: [{ required: true, message: '请选择', trigger: 'change' }],
-      },
-      sensors: [], // 选中车辆后对应的传感器数组
-      runDisabled: false, // 若最多可用资源为0,则不可点击"提交"
-      props: {
-        multiple: false,
-        label: 'name',
-        value: 'code',
-      },
-    }
-  },
-
-  computed: {},
-
-  methods: {
-    async getLists(dropDownType = '') {
-      await this.$axios({
-        method: 'post',
-        url: this.$api.workManagement.selectDropDownByTypeNew,
-        data: {
-          dropDownType,
-          algorithmType: this.form.algorithmType,
-        },
-      }).then((res) => {
-        if (res.code == 200 && res.info) {
-          res.info.forEach((item) => {
-            if (item.type === '1') {
-              // item.dropDownList.forEach((i) => {
-              //     if (i.share === "1") i.name = i.name + "(公有)";
-              // });
-
-              this.algorithmList = item.dropDownList
-            } else if (item.type === '2') {
-              // item.dropDownList.forEach((i) => {
-              //     if (i.share === "1") i.name = i.name + "(公有)";
-              // });
-
-              this.vehicleList = item.dropDownList
-            } else if (item.type === '3') {
-              // item.dropDownList.forEach((i) => {
-              //     if (i.share === "1") i.name = i.name + "(公有)";
-              // });
-
-              this.sceneList = item.dropDownList
-            }
-            // 空表示第一次进,有值表示在切换算法来源,需要清空选择算法的值
-            if (dropDownType) {
-              this.form.algorithm = ''
-              this.form.algorithmArrayS = []
-              this.$nextTick(() => {
-                // this.$refs.form.clearValidate("algorithm");
-                this.$refs.form.clearValidate('algorithmArrayS')
-              })
-            }
-          })
-        } else {
-          this.$message.error(res.message || '获取信息失败')
-        }
-      })
-    },
-    typeChange() {
-      this.getLists('1')
-    },
-    async getMaxSimulationTime() {
-      await this.$axios({
-        method: 'post',
-        url: this.$api.workManagement.selectMaxParallelism,
-        data: {},
-      }).then((res) => {
-        if (res.code == 200 && res.info && res.info != 0) {
-          this.maxCount = maxCount = res.info
-          if (res.info == -1) {
-            this.rules.parallelism.push({
-              validator: validateNumB,
-              message: '请输入正整数',
-              trigger: ['blur'],
-            })
-          } else {
-            this.rules.parallelism.push({
-              validator: validateNum,
-              message: '请输入不大于最多可用资源的正整数',
-              trigger: ['blur'],
-            })
-          }
-        } else if (res.code == 200 && res.info == 0) {
-          this.maxCount = maxCount = 0
-          this.runDisabled = true
-          this.form.parallelism = 0
-        } else {
-          this.$message.error(res.message || '获取信息失败')
-        }
-      })
-    },
-    algorithmSelChange(v) {
-      // console.log(v);
-      // console.log(this.$refs.cascaderA.getCheckedNodes(true)[0].data.vo);
-      let item = this.$refs.cascaderA.getCheckedNodes(true)[0].data.vo
-      this.form.algorithm = item.id
-    },
-    vehicleSelChange(v) {
-      let item = this.$refs.cascaderB.getCheckedNodes(true)[0].data.vo
-      this.form.vehicle = item.id
-
-      let sensor = item.sensor
-      if (!sensor) {
-        this.sensors = []
-      } else {
-        this.sensors = sensor.split(',')
-      }
-
-      // let sensor = this.vehicleList.find((i) => i.id === item).sensor;
-
-      // if (!sensor) {
-      //     this.sensors = [];
-      // } else {
-      //     this.sensors = sensor.split(",");
-      // }
-    },
-    sceneSelChange(v) {
-      let item = this.$refs.cascaderC.getCheckedNodes(true)[0].data.vo
-      this.form.scene = item.id
-      this.sceneCount = item.sceneNum
-
-      // this.sceneCount = this.sceneList.find(
-      //     (i) => i.id === item
-      // ).sceneNum;
-    },
-    getScriptList() {
-      this.$axios({
-        method: 'post',
-        url: this.$api.sceneLibrary.getScriptListByType,
-        data: {
-          sceneEvaluationType: ['1', '2', '3', '4'],
-        },
-      }).then((res) => {
-        this.scriptList = res.info
-      })
-    },
-    save(isAdd = false, needChange = false) {
-      // isAdd是否强制新增,needChange是否需要改变状态
-      this.$refs.form.validate((valid) => {
-        if (valid) {
-          if (isAdd) {
-            // 另存为
-            this.form.id = ''
-          }
-
-          this.form.nowRunState = '10'
-
-          this.$axios({
-            method: 'post',
-            url: this.$api.workManagement.addOrUpdateProject,
-            data: {
-              ...this.form,
-            },
-          }).then((res) => {
-            if (res.code == 200) {
-              this.$message.success('保存成功')
-              if (needChange) {
-                this.form.id = res.info
-                this.stateChange()
-              } else {
-                this.cancel()
-              }
-            } else {
-              this.$message.error(res.message || '保存失败')
-            }
-          })
-        }
-      })
-    },
-    cancel() {
-      this.$router.replace({ path: '/manualRunProjectList' })
-    },
-    stateChange() {
-      this.$axios({
-        method: 'post',
-        url: this.$api.workManagement.updateProjectNowRunState,
-        data: {
-          id: this.form.id,
-          nowRunState: '20',
-        },
-      }).then((res) => {
-        if (res.code == 200) {
-          this.$message.success('提交成功')
-          this.cancel()
-        } else {
-          this.$message.error(res.message || '提交失败')
-        }
-      })
-    },
-  },
-
-  mounted() {
-    if (this.$route.query.id) {
-      let id = ''
-      this.form.id = id = this.$route.query.id
-
-      if (id) {
-        this.$axios({
-          method: 'post',
-          url: this.$api.workManagement.selectProjectById,
-          data: {
-            id,
-          },
-        }).then(async (res) => {
-          if (res.code == 200 && res.info) {
-            this.form = res.info
-            await this.getLists()
-            await this.getMaxSimulationTime()
-            this.vehicleSelChange(res.info.vehicle)
-            this.sceneSelChange(res.info.scene)
-          } else {
-            this.$message.error(res.message || '获取信息失败')
-          }
-        })
-      }
-      this.getScriptList()
-    } else {
-      this.getLists()
-      this.getMaxSimulationTime()
-      this.getScriptList()
-    }
-  },
-}
+	//import  from '';
+	let maxCount = 0 // 用于校验
+	let validateNum = (rule, value, callback) => {
+		!/^(\d+)$/.test(value) && callback(new Error(rule.message))
+		if (+value <= 0 || +value > +maxCount) callback(new Error(rule.message))
+		callback()
+	}
+	let validateNumA = (rule, value, callback) => {
+		!/^(\d+)$/.test(value) && callback(new Error(rule.message));
+		if (+value < 5 || +value > 10000) callback(new Error(rule.message));
+		callback();
+	};
+	let validateNumB = (rule, value, callback) => {
+		!/^(\d+)$/.test(value) && callback(new Error(rule.message))
+		if (+value <= 0) callback(new Error(rule.message))
+		callback()
+	}
+
+	export default {
+		name: 'manualRunProjectDetail', // 标准化测试详情
+		components: {},
+		data() {
+			return {
+				simulationMageGroup: [],
+				form: {
+					id: '',
+					projectName: '', // 项目名称
+					projectDescribe: '', // 项目描述
+					algorithmType: '1', // 算法来源
+					algorithm: '', // 选择算法
+					algorithmArrayS: '', // 选择算法
+					vehicle: '', // 选择车辆
+					vehicleArrayS: '', // 选择车辆
+					scene: '', // 选择场景
+					sceneArrayS: '', // 选择场景
+					parallelism: '', // 并行度
+					maxSimulationTime: '', // 最大仿真时间
+					isChoiceGpu: '0', // 是否选择GPU
+					nowRunState: '10', // 运行状态
+					complexityEvaluationRuleId: '', // 复杂度
+					riskEvaluationRuleId: '', // 危险度
+					exposureRateEvaluationRuleId: '', // 暴露率
+					coverageRateEvaluationRuleId: '', // 覆盖率
+				},
+				algorithmList: [], // 算法对应列表
+				vehicleList: [], // 车辆对应列表
+				sceneList: [], // 场景对应列表
+				maxCount: 0, // 最多可用资源
+				sceneCount: 0, // 场景数量
+				scriptList: {}, // 评价脚本列表
+				rules: {
+					projectName: [{
+						required: true,
+						message: '请输入',
+						trigger: 'blur'
+					}],
+					projectDescribe: [{
+						required: true,
+						message: '请输入',
+						trigger: 'blur'
+					}, ],
+					algorithmType: [{
+						required: true,
+						message: '请选择',
+						trigger: 'change'
+					}, ],
+					algorithmArrayS: [{
+						required: true,
+						message: '请选择',
+						trigger: 'change'
+					}, ],
+					vehicleArrayS: [{
+						required: true,
+						message: '请选择',
+						trigger: 'change'
+					}, ],
+					sceneArrayS: [{
+						required: true,
+						message: '请选择',
+						trigger: 'change'
+					}],
+					simulationMageGroupId:[{
+						required: true,
+						message: '请选择',
+						trigger: 'change'
+					}],
+					parallelism: [{
+							required: true,
+							message: '请输入',
+							trigger: 'blur'
+						},
+						// {
+						//     validator: validateNum,
+						//     message: "请输入不大于最多可用资源的正整数",
+						//     trigger: ["blur"],
+						// },
+					],
+					maxSimulationTime: [{
+							required: true,
+							message: '请输入',
+							trigger: 'blur'
+						},
+						{
+							validator: validateNumA,
+							message: '请输入不小于5且不大于10000的正整数',
+							trigger: ['blur'],
+						},
+					],
+					isChoiceGpu: [{
+						required: true,
+						message: '请选择',
+						trigger: 'change'
+					}],
+				},
+				sensors: [], // 选中车辆后对应的传感器数组
+				runDisabled: false, // 若最多可用资源为0,则不可点击"提交"
+				props: {
+					multiple: false,
+					label: 'name',
+					value: 'code',
+				},
+			}
+		},
+
+		computed: {},
+
+		methods: {
+			async getLists(dropDownType = '') {
+				await this.$axios({
+					method: 'post',
+					url: this.$api.workManagement.selectDropDownByTypeNew,
+					data: {
+						dropDownType,
+						algorithmType: this.form.algorithmType,
+					},
+				}).then((res) => {
+					if (res.code == 200 && res.info) {
+						res.info.forEach((item) => {
+							if (item.type === '1') {
+								// item.dropDownList.forEach((i) => {
+								//     if (i.share === "1") i.name = i.name + "(公有)";
+								// });
+
+								this.algorithmList = item.dropDownList
+							} else if (item.type === '2') {
+								// item.dropDownList.forEach((i) => {
+								//     if (i.share === "1") i.name = i.name + "(公有)";
+								// });
+
+								this.vehicleList = item.dropDownList
+							} else if (item.type === '3') {
+								// item.dropDownList.forEach((i) => {
+								//     if (i.share === "1") i.name = i.name + "(公有)";
+								// });
+
+								this.sceneList = item.dropDownList
+							}
+							// 空表示第一次进,有值表示在切换算法来源,需要清空选择算法的值
+							if (dropDownType) {
+								this.form.algorithm = ''
+								this.form.algorithmArrayS = []
+								this.$nextTick(() => {
+									// this.$refs.form.clearValidate("algorithm");
+									this.$refs.form.clearValidate('algorithmArrayS')
+								})
+							}
+						})
+					} else {
+						this.$message.error(res.message || '获取信息失败')
+					}
+				})
+			},
+			typeChange() {
+				this.getLists('1')
+			},
+			async getMaxSimulationTime() {
+				await this.$axios({
+					method: 'post',
+					url: this.$api.workManagement.selectMaxParallelism,
+					data: {},
+				}).then((res) => {
+					if (res.code == 200 && res.info && res.info != 0) {
+						this.maxCount = maxCount = res.info
+						if (res.info == -1) {
+							this.rules.parallelism.push({
+								validator: validateNumB,
+								message: '请输入正整数',
+								trigger: ['blur'],
+							})
+						} else {
+							this.rules.parallelism.push({
+								validator: validateNum,
+								message: '请输入不大于最多可用资源的正整数',
+								trigger: ['blur'],
+							})
+						}
+					} else if (res.code == 200 && res.info == 0) {
+						this.maxCount = maxCount = 0
+						this.runDisabled = true
+						this.form.parallelism = 0
+					} else {
+						this.$message.error(res.message || '获取信息失败')
+					}
+				})
+			},
+			algorithmSelChange(v) {
+				// console.log(v);
+				// console.log(this.$refs.cascaderA.getCheckedNodes(true)[0].data.vo);
+				let item = this.$refs.cascaderA.getCheckedNodes(true)[0].data.vo
+				this.form.algorithm = item.id
+			},
+			vehicleSelChange(v) {
+				let item = this.$refs.cascaderB.getCheckedNodes(true)[0].data.vo
+				this.form.vehicle = item.id
+
+				let sensor = item.sensor
+				if (!sensor) {
+					this.sensors = []
+				} else {
+					this.sensors = sensor.split(',')
+				}
+
+				// let sensor = this.vehicleList.find((i) => i.id === item).sensor;
+
+				// if (!sensor) {
+				//     this.sensors = [];
+				// } else {
+				//     this.sensors = sensor.split(",");
+				// }
+			},
+			sceneSelChange(v) {
+				let item = this.$refs.cascaderC.getCheckedNodes(true)[0].data.vo
+				this.form.scene = item.id
+				this.sceneCount = item.sceneNum
+
+				// this.sceneCount = this.sceneList.find(
+				//     (i) => i.id === item
+				// ).sceneNum;
+			},
+			getScriptList() {
+				this.$axios({
+					method: 'post',
+					url: this.$api.sceneLibrary.getScriptListByType,
+					data: {
+						sceneEvaluationType: ['1', '2', '3', '4'],
+					},
+				}).then((res) => {
+					this.scriptList = res.info
+				})
+			},
+			save(isAdd = false, needChange = false) {
+				// isAdd是否强制新增,needChange是否需要改变状态
+				this.$refs.form.validate((valid) => {
+					if (valid) {
+						if (isAdd) {
+							// 另存为
+							this.form.id = ''
+						}
+
+						this.form.nowRunState = '10'
+
+						this.$axios({
+							method: 'post',
+							url: this.$api.workManagement.addOrUpdateProject,
+							data: {
+								...this.form,
+							},
+						}).then((res) => {
+							if (res.code == 200) {
+								this.$message.success('保存成功')
+								if (needChange) {
+									this.form.id = res.info
+									this.stateChange()
+								} else {
+									this.cancel()
+								}
+							} else {
+								this.$message.error(res.message || '保存失败')
+							}
+						})
+					}
+				})
+			},
+			cancel() {
+				this.$router.replace({
+					path: '/manualRunProjectList'
+				})
+			},
+			stateChange() {
+				this.$axios({
+					method: 'post',
+					url: this.$api.workManagement.updateProjectNowRunState,
+					data: {
+						id: this.form.id,
+						nowRunState: '20',
+					},
+				}).then((res) => {
+					if (res.code == 200) {
+						this.$message.success('提交成功')
+						this.cancel()
+					} else {
+						this.$message.error(res.message || '提交失败')
+					}
+				})
+			},
+
+			getSimulationMageGroup() {
+				this.$axios({
+					method: 'post',
+					url: this.$api.workManagement.selectAllSimulationMageGroupList,
+					data: {},
+				}).then((res) => {
+					if (res.code == 200) {
+						this.simulationMageGroup = res.info
+					} else {
+						this.$message.error(res.message || '获取信息失败')
+					}
+				})
+			}
+		},
+
+		mounted() {
+			if (this.$route.query.id) {
+				let id = ''
+				this.form.id = id = this.$route.query.id
+
+				if (id) {
+					this.$axios({
+						method: 'post',
+						url: this.$api.workManagement.selectProjectById,
+						data: {
+							id,
+						},
+					}).then(async (res) => {
+						if (res.code == 200 && res.info) {
+							this.form = res.info
+							await this.getLists()
+							await this.getMaxSimulationTime()
+							this.vehicleSelChange(res.info.vehicle)
+							this.sceneSelChange(res.info.scene)
+						} else {
+							this.$message.error(res.message || '获取信息失败')
+						}
+					})
+				}
+				this.getScriptList();
+				this.getSimulationMageGroup();
+			} else {
+				this.getLists()
+				this.getMaxSimulationTime()
+				this.getScriptList()
+				this.getSimulationMageGroup();
+			}
+		},
+	}
 </script>
 
 <style lang='less' scoped>
-.el-form {
-  width: 60%;
-  min-width: 900px;
-  padding-top: 60px;
-  margin: 0 auto;
-
-  .formItemBox {
-    flex: 1;
-
-    /deep/ .el-input,
-    .el-select,
-    .el-cascader {
-      width: 100%;
-    }
-
-    .el-cascader {
-      height: 32px;
-      line-height: 32px;
-    }
-  }
-
-  .el-textarea {
-    height: 96px;
-  }
-
-  .tipBox {
-    min-width: 270px;
-    margin-left: 20px;
-
-    .tip {
-      margin-bottom: 22px;
-      line-height: 32px;
-    }
-    .tip1{
-      margin-bottom: -100px;
-      border: 1px solid black;
-    }
-
-    .tipA {
-      height: 32px;
-      // 按54往上加
-      margin-top: 280px;
-
-      .iconA {
-        background: url('../../assets/common/image/sensor/001.png') center
-          no-repeat;
-        background-size: contain;
-      }
-
-      .iconB {
-        background: url('../../assets/common/image/sensor/002.png') center
-          no-repeat;
-        background-size: contain;
-      }
-
-      .iconC {
-        background: url('../../assets/common/image/sensor/003.png') center
-          no-repeat;
-        background-size: contain;
-      }
-
-      .iconD {
-        background: url('../../assets/common/image/sensor/004.png') center
-          no-repeat;
-        background-size: contain;
-      }
-
-      .iconE {
-        background: url('../../assets/common/image/sensor/005.png') center
-          no-repeat;
-        background-size: contain;
-      }
-
-      span {
-        display: inline-block;
-        width: 18px;
-        height: 18px;
-        margin-top: 7px;
-        margin-right: 6px;
-      }
-    }
-
-    .tipB {
-      padding-top: 54px;
-    }
-
-    .tipBtnBox {
-      margin-left: 20px;
-    }
-  }
-}
-.rule-item {
-  margin-left: 60px;
-}
-.btns {
-  padding-top: 30px;
-  text-align: center;
-}
+	.el-form {
+		width: 60%;
+		min-width: 900px;
+		padding-top: 60px;
+		margin: 0 auto;
+
+		.formItemBox {
+			flex: 1;
+
+			/deep/ .el-input,
+			.el-select,
+			.el-cascader {
+				width: 100%;
+			}
+
+			.el-cascader {
+				height: 32px;
+				line-height: 32px;
+			}
+		}
+
+		.el-textarea {
+			height: 96px;
+		}
+
+		.tipBox {
+			min-width: 270px;
+			margin-left: 20px;
+
+			.tip {
+				margin-bottom: 22px;
+				line-height: 32px;
+			}
+
+			.tip1 {
+				margin-bottom: -100px;
+				border: 1px solid black;
+			}
+
+			.tipA {
+				height: 32px;
+				// 按54往上加
+				margin-top: 280px;
+
+				.iconA {
+					background: url('../../assets/common/image/sensor/001.png') center no-repeat;
+					background-size: contain;
+				}
+
+				.iconB {
+					background: url('../../assets/common/image/sensor/002.png') center no-repeat;
+					background-size: contain;
+				}
+
+				.iconC {
+					background: url('../../assets/common/image/sensor/003.png') center no-repeat;
+					background-size: contain;
+				}
+
+				.iconD {
+					background: url('../../assets/common/image/sensor/004.png') center no-repeat;
+					background-size: contain;
+				}
+
+				.iconE {
+					background: url('../../assets/common/image/sensor/005.png') center no-repeat;
+					background-size: contain;
+				}
+
+				span {
+					display: inline-block;
+					width: 18px;
+					height: 18px;
+					margin-top: 7px;
+					margin-right: 6px;
+				}
+			}
+
+			.tipB {
+				padding-top: 54px;
+			}
+
+			.tipBtnBox {
+				margin-left: 20px;
+			}
+		}
+	}
+
+	.rule-item {
+		margin-left: 60px;
+	}
+
+	.btns {
+		padding-top: 30px;
+		text-align: center;
+	}
 </style>

+ 4 - 0
src/views/workManagement/projectInfo.vue

@@ -48,6 +48,10 @@
                         <span>场景测试包:</span>
                         <b>{{ info.packageName }}</b>
                     </div>
+					<div class="info">
+					    <span>仿真镜像组:</span>
+					    <b>{{ info.simulationMageGroupName }}</b>
+					</div>
                     <div class="info">
                         <span>项目描述:</span>
                         <b>{{ info.projectDescribe }}</b>