浏览代码

merge:冲突合并

linchengzhe 1 年之前
父节点
当前提交
c9c9adcb95

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

+ 6 - 0
src/components/grid/searchLayout.vue

@@ -25,6 +25,12 @@
             <div class="inputBox">
                 <slot name="searchItem8"></slot>
             </div>
+			<div class="inputBox">
+			    <slot name="searchItem9"></slot>
+			</div>
+			<div class="inputBox">
+			    <slot name="searchItem10"></slot>
+			</div>
             <div class="inputBox searchItem27">
                 <slot name="searchItem27"></slot>
             </div>

+ 0 - 12
src/router/index.js

@@ -8,7 +8,6 @@ import sceneLibrary from "./sceneLibrary"; // 场景库
 import systemManagement from "./systemManagement"; // 账户管理
 import workManagement from "./workManagement"; // 工作管理
 import personalInformation from "./personalInformation"
-
 Vue.use(VueRouter);
 
 const routes = [{
@@ -67,17 +66,6 @@ const routes = [{
       redirect: '/index',
       children: sceneLibrary,
     },
-    // {
-    //   path: "/multimodeSimulation",
-    //   name: "multimodeSimulation",
-    //   meta: {
-    //     tabname: "工作管理",
-    //     login: true
-    //   },
-    //   component: () => import("@/views/multimodeSimulation/index"),
-    //   redirect: '/index',
-    //   children: multimodeSimulation,
-    // },
     {
       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: {

+ 421 - 0
src/views/systemManagement/simulationSceneGroup.vue

@@ -0,0 +1,421 @@
+<template>
+	<div class="container">
+		<el-card class="box-card">
+			<el-form :inline="true" :model="formInline" class="demo-form-inline">
+				<el-form-item label="名称">
+					<el-input v-model="formInline.groupName" placeholder=""></el-input>
+				</el-form-item>
+
+				<el-form-item label="描述">
+					<el-input v-model="formInline.groupDescription" placeholder=""></el-input>
+				</el-form-item>
+				<el-form-item>
+					<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" @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%" @selection-change="handleSelectionChange">
+				<el-table-column type="selection" width="55">
+				</el-table-column>
+				<el-table-column label="序号" width="100">
+					<template slot-scope="scope">{{ scope.$index + 1}}</template>
+				</el-table-column>
+				<el-table-column prop="groupName" label="名称">
+				</el-table-column>
+				<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="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="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="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="仿真软件" :label-width="formLabelWidth" prop="softwarePath">
+					<el-input v-model="form.softwarePath" autocomplete="off"></el-input>
+				</el-form-item>
+				<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="仿真连接器" :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" 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="confirm">确 定</el-button>
+			</div>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	export default {
+		name: "simulationSceneGroup",
+		data() {
+			return {
+				dialogFormName: "",
+				dialogFormType: 0,
+				dialogFormVisible: false,
+				formLabelWidth: '160px',
+				form: {
+					id: '',
+					groupName: '',
+					softwarePath: '',
+					controllerPath: '',
+					connectorPath: '',
+					groupDescription: ''
+				},
+				page: {
+					pageNum: 1,
+					pageSize: 5,
+					total: 100
+				},
+				formInline: {
+					groupName: '',
+					groupDescription: ''
+				},
+				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: {
+			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) {
+				this.page.pageSize = val;
+				this.search();
+			},
+			handleCurrentChange(val) {
+				this.page.pageNum = val;
+				this.search();
+			},
+			handleClose() {
+
+			},
+			reset() {
+				this.formInline = {
+					name: '',
+					desc: ''
+				}
+			},
+			batchDelete() {
+
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+	.container {
+		width: 100%;
+	}
+
+	.box-card {
+		margin: 20px;
+		padding: 10px;
+		display: flex;
+		justify-content: center;
+	}
+
+	.el-card__body {
+		width: 100%;
+	}
+
+	.demo-form-inline {
+		width: 100%;
+		display: flex;
+		justify-content: space-evenly;
+
+	}
+
+	.cus-table {
+		margin: 50px 20px;
+	}
+
+	.operator {
+		margin: 10px 0;
+		padding: 5px 0;
+		float: right;
+	}
+
+	.add-btn {
+		height: 35px;
+	}
+
+	.delete-btn {
+		height: 35px;
+	}
+
+	.el-table__cell {
+		text-align: center !important;
+	}
+
+	.el-table__cell .cell {
+		font-size: 18px !important;
+	}
+
+	.el-table__row .cell {
+		font-size: 15px !important;
+	}
+
+	.el-form-item__label {
+		font-size: 16px !important;
+	}
+
+	.el-table th.el-table__cell {
+		background-color: #fafafa !important;
+	}
+
+	.pageage {
+		margin: 20px;
+		display: flex;
+		justify-content: right;
+	}
+
+	.el-form {
+		width: 100%;
+	}
+
+	.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>

+ 29 - 0
src/views/workManagement/simulationEdit.vue

@@ -36,6 +36,15 @@
           :disabled="!isEdit">
         </el-input>
       </template>
+	  
+	  <template slot="searchItem10">
+	    <span class="label">仿真镜像组</span>
+		
+		<el-select v-model="baseInfo.simulationMageGroupId">
+			<el-option v-for="item in simulationMageGroup" :label="item.groupName" :value="item.id"
+				:key="item.id"></el-option>
+		</el-select>
+	  </template>
     </search-layout>
     <p style="
         font-size: 18px;
@@ -81,6 +90,7 @@ export default {
 
   data () {
     return {
+	  simulationMageGroup: [],
       isEdit: true, // 模式, 默认编辑模式 false 预览
       isUpdate: false, //  更新模式
       tableShow: false, // 是否显示表格,新增默认不显示
@@ -90,6 +100,7 @@ export default {
         projectName: '', // 项目名称
         projectMaxSeconds: '', // 最大仿真时间
         projectDescription: '', // 项目描述
+		simulationMageGroupId: '',//仿真镜像组id
       },
       selectSceneIds: [], // 选中ids
       columns: [
@@ -142,8 +153,22 @@ export default {
       this.$store.commit("getEvaluateTabname", '多仿真任务详情');
       localStorage.setItem("evaluateTabname", '多仿真任务详情');
     }
+	this.getSimulationMageGroup();
   },
   methods: {
+	  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 || '获取信息失败')
+	  		}
+	  	})
+	  },
     // 获取任务详情信息
     getTaskDetailById (id) {
       this.$axios({
@@ -158,6 +183,7 @@ export default {
             projectName: res.info.projectName, // 项目名称
             projectMaxSeconds: res.info.projectMaxSeconds, // 最大仿真时间
             projectDescription: res.info.projectDescription, // 项目描述
+			simulationMageGroupId: res.info.simulationMageGroupId,//仿真镜像组id
           }
           this.$store.commit("getEvaluateTabname", res.info.projectName);
           localStorage.setItem("evaluateTabname", res.info.projectName);
@@ -192,6 +218,7 @@ export default {
           projectName: this.baseInfo.projectName,
           projectMaxSeconds: this.baseInfo.projectMaxSeconds,
           projectDescription: this.baseInfo.projectDescription,
+		  simulationMageGroupId: this.baseInfo.simulationMageGroupId
         },
       }).then((res) => {
         if (res.code == 200) {
@@ -285,6 +312,7 @@ export default {
             projectName: this.baseInfo.projectName,
             projectMaxSeconds: this.baseInfo.projectMaxSeconds,
             projectDescription: this.baseInfo.projectDescription,
+			simulationMageGroupId: this.baseInfo.simulationMageGroupId
           },
         }).then((res) => {
           if (res.code == 200) {
@@ -307,6 +335,7 @@ export default {
               projectName: this.baseInfo.projectName,
               projectMaxSeconds: this.baseInfo.projectMaxSeconds,
               projectDescription: this.baseInfo.projectDescription,
+			  simulationMageGroupId: this.baseInfo.simulationMageGroupId
             },
           }).then((res) => {
             if (res.code == 200) {

+ 31 - 50
src/views/workManagement/simulationHome.vue

@@ -1,44 +1,25 @@
 <template>
-    <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>
+	<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>
-        <el-input
-          v-model="searchParams.projectId"
-          size="small"
-          clearable
-          placeholder="请输入"
-          maxlength="60"
-        >
-        </el-input>
-      </template>
-      <template slot="searchItem1">
-        <span class="label">项目名称</span>
-        <el-input
-          v-model="searchParams.projectName"
-          size="small"
-          clearable
-          placeholder="请输入"
-          maxlength="60"
-        >
-        </el-input>
-      </template>
-      <template slot="searchItem4">
-        <span class="label">项目进度</span>
-        <el-select
-          v-model="searchParams.projectStatus"
-          size="small"
-          clearable
-          placeholder="请输入"
-          maxlength="60"
-        >
-          <el-option
-            v-for="(item, idx) in [
+
+	<div v-else class="multimodeSimulation">
+		<search-layout :needBox="true">
+			<template slot="searchItem1">
+				<span class="label">项目ID</span>
+				<el-input v-model="searchParams.projectId" size="small" clearable placeholder="请输入" maxlength="60">
+				</el-input>
+			</template>
+			<template slot="searchItem1">
+				<span class="label">项目名称</span>
+				<el-input v-model="searchParams.projectName" size="small" clearable placeholder="请输入" maxlength="60">
+				</el-input>
+			</template>
+			<template slot="searchItem4">
+				<span class="label">项目进度</span>
+				<el-select v-model="searchParams.projectStatus" size="small" clearable placeholder="请输入" maxlength="60">
+					<el-option v-for="(item, idx) in [
               { label: '未开始', value: '0' },
               { label: '运行中', value: '1' },
               { label: '已终止', value: '2' },
@@ -277,16 +258,16 @@ export default {
 }
 </script>
 <style lang='less' scoped>
-// @import './common/util.less';
-.naturalDrivingScenarioListPanel {
-  .inputBox {
-    .label {
-      min-width: 75px;
-    }
-  }
+	// @import './common/util.less';
+	.naturalDrivingScenarioListPanel {
+		.inputBox {
+			.label {
+				min-width: 75px;
+			}
+		}
 
-  .btnsPanel {
-    text-align: right;
-  }
-}
+		.btnsPanel {
+			text-align: right;
+		}
+	}
 </style>