修改初始化条件

This commit is contained in:
limengnan 2025-12-31 09:11:08 +08:00
parent 921e657524
commit 8dba8c07d4
5 changed files with 675 additions and 13 deletions

View File

@ -53,7 +53,7 @@ export function deleteBatchProjects (queryParams:any){
export function topologyDevicesLsit(queryParams:any){ export function topologyDevicesLsit(queryParams:any){
return request({ return request({
url: `/projects/search/${queryParams.id}/topology/devices` , url: `/projects/${queryParams.id}/topology/devices` ,
method: 'get', method: 'get',
params:queryParams params:queryParams
}); });

View File

@ -15,7 +15,7 @@ export function searchScenariosLsit(queryParams:any){
//新增项目 //新增项目
export function addScenarios(data:any){ export function addScenarios(data:any){
return request({ return request({
url:'/scenarios' , url:'/scenarios/createAndReturn' ,
method: 'Post', method: 'Post',
data: data data: data
}); });

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

View File

@ -0,0 +1,649 @@
<script lang="ts">
export default {
name: "condition-条件",
};
</script>
<script setup lang="ts">
import { onMounted, ref, nextTick } from "vue";
import { ElForm, ElMessage, ElMessageBox } from "element-plus";
import Page from '@/components/Pagination/page.vue'
import { getDictItemById } from '@/api/dict';
import { topologyDevicesLsit } from '@/api/business/project';
const conditionData:any = ref([{ //
}])
defineExpose({
submitClick
});
const props = defineProps({ //
projectInfo: {
required: true,
type: Object,
default: {}
},
scenarioId: {
required: true,
type: String,
default: ''
},
});
function submitClick() {
return
}
function initDeviceData(){
console.log(props.projectInfo)
topologyDevicesLsit({
id: props.projectInfo.projectId
}).then((res:any) => {
if (res.code == 0) {
deviceData.value = res.data;
}
})
}
onMounted(() => {
DicInit()
initDeviceData()
});
const deviceData:any = ref([]) //
const attributeData:any = ref([]) //
const materialData:any = ref([]) //
const menuList:any = ref([
{
label: '条件一',
target:{
entityType: '',
entityId: '',
property: '',
},
unit: 'cm',
segments: [{
segmentId: '分段-1',
start:null,
end:null,
timeline:[]
}]
}
])
const menuIndex = ref(0) //
const segmentationIndex:any = ref(0) //
function addSegmentation() { //
menuList.value[menuIndex.value].segments.push({
segmentId: '分段-' + (menuList.value[menuIndex.value].segments.length + 1),
start:null,
end:null,
timeline:[]
})
}
function removeAttr(index:any){ //
menuList.value[menuIndex.value].segments[segmentationIndex.value].timeline.splice(index, 1);
getTimelineList()
}
function addAttr(){ //
menuList.value[menuIndex.value].segments[segmentationIndex.value].timeline.push({
t: null,
value: null
});
getTimelineList()
}
function menuClick(index:any){ //
menuIndex.value = index;
segmentationIndex.value = 0;
}
function addMenu(){ //
menuList.value.push({
label: '条件' + (menuList.value.length + 1),
target:{
entityType: '',
entityId: '',
property: '',
},
unit: 'cm',
segments: [{
segmentId: '分段-1',
start:null,
end:null,
timeline:[]
}]
})
}
//
function DicInit() {
let params = {
dictId: 'dc7419e5f8a655966e6bb90b0cb5c0c2',
size:99,
current:1
}
getDictItemById(params).then((result: any) => {
attributeData.value = result.data.records;
}).catch((err: any) => {
});
let paramss = {
dictId: '9d87f873bc80e79c6d399131cbe01016',
size:99,
current:1
}
getDictItemById(paramss).then((result: any) => {
materialData.value = result.data.records;
}).catch((err: any) => {
});
}
const attribute = ref('') //
const material = ref('') //
function changeAttribute(e:any){ //
menuList.value[menuIndex.value].target.entityType = ''
if(e!='' && e!=null){
material.value = ''
menuList.value[menuIndex.value].target.entityType = 'device'
menuList.value[menuIndex.value].target.property = e
deviceData.value.forEach((item:any) => {
if(item.deviceName == menuList.value[menuIndex.value].device){
menuList.value[menuIndex.value].target.entityId = item.deviceId
}
})
}
getDeviceInfo(e)
}
function changeMaterial(e:any){ //
menuList.value[menuIndex.value].target.entityType = ''
if(e!='' && e!=null){
material.value = ''
menuList.value[menuIndex.value].target.entityType = 'material'
menuList.value[menuIndex.value].target.entityId = ''
deviceData.value.forEach((item:any) => {
if(item.deviceName == menuList.value[menuIndex.value].device){
menuList.value[menuIndex.value].target.entityId = item.materialId
}
})
menuList.value[menuIndex.value].target.property = e
debugger
}
getDeviceInfo(e)
}
const devicename = ref('') //
const deviceMaterial = ref('') //
const timelineList:any = ref([]) // 线
function getTimelineList(){
timelineList.value = []
menuList.value.forEach((item:any) => {
item.segments.forEach((segment:any) => {
segment.timeline.forEach((timeline:any) => {
timelineList.value.push(timeline)
})
})
})
}
function getDeviceInfo(e:any){ //
debugger
devicename.value = ""
deviceMaterial.value = ""
deviceData.value.forEach((item:any) => {
if(item.deviceName == menuList.value[menuIndex.value].device){
devicename.value = item.deviceName
}
})
if(menuList.value[menuIndex.value].target.entityType == 'device'){
attributeData.value.forEach((item:any) => {
if(item.itemCode == menuList.value[menuIndex.value].attribute){
deviceMaterial.value = item.dictName
}
})
}
if(menuList.value[menuIndex.value].target.entityType == 'material'){
materialData.value.forEach((item:any) => {
if(item.itemCode == menuList.value[menuIndex.value].material){
deviceMaterial.value = item.dictName
}
})
}
}
</script>
<template>
<div class="condition-box">
<div class="condition-left">
<div class="condition-menu">
<div v-for="(item, index) in menuList" :key="index" class="condition-item"
:class="{'condition-item-active': index == menuIndex}" @click="menuClick(index)">
{{ item.label }}
</div>
<img src="@/assets/add.png" alt="" class="condition-img" @click="addMenu">
</div>
<el-form ref="infoForm" label-width="120px">
<el-form-item label="始发设备(物料)" prop="code">
<el-select v-model="menuList[menuIndex].device" placeholder="请选择" style="width:100%;" clearable @change="getDeviceInfo">
<el-option v-for="item in deviceData" :key="item.deviceName" :label="item.deviceName +'('+item.materialName+')'" :value="item.deviceName" />
</el-select>
</el-form-item>
<div style="display: flex; width: 100%;justify-content: space-between;">
<el-form-item label="设备属性" prop="name" style="width: 49%;">
<el-select v-model="menuList[menuIndex].attribute" placeholder="请选择" style="width:100%;" clearable
:disabled="menuList[menuIndex].material!='' && menuList[menuIndex].material!=null" @change="changeAttribute">
<el-option v-for="item in attributeData" :key="item.itemCode" :label="item.dictName" :value="item.itemCode" />
</el-select>
</el-form-item>
<el-form-item label="变化物料" style="width: 49%;">
<el-select v-model="menuList[menuIndex].material" placeholder="请选择" style="width:100%;" clearable
:disabled="menuList[menuIndex].attribute!='' && menuList[menuIndex].attribute!=null" @change="changeMaterial">
<el-option v-for="item in materialData" :key="item.itemCode" :label="item.dictName" :value="item.itemCode" />
</el-select>
</el-form-item>
</div>
<div class="segmentation-menu">
<div v-for="(item, index) in menuList[menuIndex].segments" :key="index" class="segmentation-item"
:class="{'segmentation-item-active': index == segmentationIndex}" @click="segmentationIndex = index">
<span>{{ item.segmentId }}</span>
<svg t="1766969938271" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4998" width="14" height="14"><path d="M571.01312 523.776l311.3472-311.35232c15.7184-15.71328 15.7184-41.6256 0-57.344l-1.69472-1.69984c-15.7184-15.71328-41.6256-15.71328-57.34912 0l-311.3472 311.77728-311.35232-311.77728c-15.7184-15.71328-41.63072-15.71328-57.344 0l-1.69984 1.69984a40.0128 40.0128 0 0 0 0 57.344L452.92544 523.776l-311.35232 311.35744c-15.71328 15.71328-15.71328 41.63072 0 57.33888l1.69984 1.69984c15.71328 15.7184 41.6256 15.7184 57.344 0l311.35232-311.35232 311.3472 311.35232c15.72352 15.7184 41.63072 15.7184 57.34912 0l1.69472-1.69984c15.7184-15.70816 15.7184-41.6256 0-57.33888l-311.3472-311.35744z" p-id="4999" fill="currentColor"></path></svg>
</div>
<div class="segmentation-item-add" @click="addSegmentation">
+ 新增分段
</div>
</div>
<div class="segmentation-content">
<div style="display: flex; align-items: center;">
<span>时间段 </span>
<el-input v-model="menuList[menuIndex].segments[segmentationIndex].start" style="width: 160px;margin-left: 20px;" placeholder="">
<template #append>s</template>
</el-input>
<span style="padding: 0 10px;">-</span>
<el-input v-model="menuList[menuIndex].segments[segmentationIndex].end" style="width: 160px" placeholder="">
<template #append>s</template>
</el-input>
</div>
<div class="segmentation_custom_attrs_box">
<div class="segmentation_custom_attrs_header">
<div class="segmentation_custom_attrs_header1">序号</div>
<div class="segmentation_custom_attrs_header2">时间s</div>
<div class="segmentation_custom_attrs_header3">数值</div>
<div class="segmentation_custom_attrs_header4">操作</div>
</div>
<div class="segmentation_custom_attrs_header" v-for="(item, indexs) in menuList[menuIndex].segments[segmentationIndex].timeline" :key="indexs">
<div class="segmentation_custom_attrs_content1">
{{ Number(indexs) + 1 }}
</div>
<div class="segmentation_custom_attrs_content2">
<el-input v-model="item.t" style="width: 100%" placeholder="" ></el-input>
</div>
<div class="segmentation_custom_attrs_content3">
<el-input v-model="item.value" style="width: 100%" placeholder=""></el-input>
</div>
<div class="segmentation_custom_attrs_content4" @click="removeAttr(indexs)">
删除
</div>
</div>
</div>
<div class="addAttrBox" @click="addAttr">
<svg t="1766543724217" style="margin-right: 5px;" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6518" width="16" height="16"><path d="M105 480a8 8 0 0 1 8-8h799a8 8 0 0 1 8 8v64a8 8 0 0 1-8 8H113a8 8 0 0 1-8-8v-64z" fill="#266FFF" p-id="6519"></path><path d="M480 920a8 8 0 0 1-8-8V112a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v800a8 8 0 0 1-8 8h-64z" fill="#266FFF" p-id="6520"></path></svg>
添加一行
</div>
</div>
</el-form>
</div>
<div class="condition-right">
<div class="condition-right-titlebox">
<div class="condition-right-titleline"></div>
<div>配置结果</div>
</div>
<div class="condition-right-devicename">
<span style="padding-right: 20px;">{{ devicename }}</span>
<span>{{ deviceMaterial }}</span>
</div>
<div class="condition-right-content">
<div class="condition-right-tableheader">
<div>时间s</div>
<div>数值</div>
</div>
<div class="condition-right-tablecontent" v-for="(item, index) in timelineList" :key="index">
<div>{{ item.t }}</div>
<div>{{ item.value }}</div>
</div>
</div>
</div>
</div>
</template>
<style scoped>
.condition-box {
box-sizing: border-box;
width: 100%;
height: 100%;
display: flex;
}
.condition-left {
width: calc(100% - 270px) ;
height: 100%;
border-right: 1px solid #e4e7ed;
box-sizing: border-box;
padding: 20px;
}
.condition-right {
width: 270px;
height: 100%;
box-sizing: border-box;
padding: 20px;
}
.condition-menu{
display: flex;
justify-content: flex-start;
align-items: center;
padding-bottom: 10px;
border-bottom: 1px solid #e4e7ed;
margin-bottom: 10px;
}
.condition-item{
width: 110px;
height: 32px;
background: rgba(242, 242, 242, 1);
font-size: 14px;
color: #363636;
font-family: 'Arial Normal', 'Arial';
font-weight: 400;
font-style: normal;
display: flex;
justify-content: center;
align-items: center;
border-radius: 4px;
margin-right: 10px;
cursor: pointer;
}
.condition-item:hover{
color: rgba(38, 111, 255, 1);
}
.condition-item-active{
background: rgba(38, 111, 255, 1);
color: #ffffff !important;
}
.segmentation-menu{
display: flex;
}
.segmentation-item{
width: 90px;
height: 30px;
background: rgba(255, 255, 255, 1);
box-sizing: border-box;
border: 1px solid rgba(242, 242, 242, 1);
border-radius: 5px 5px 0px 0px;
box-shadow: none;
font-family: '微软雅黑';
font-weight: 400;
font-style: normal;
color: #949494;
text-align: left;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 8px;
cursor: pointer;
margin-right: 10px;
}
.segmentation-item-active{
background: rgba(250, 250, 250, 1);
color: #266FFF;
}
.condition-left .el-form {
height: 100%;
}
.segmentation-content{
width: 590px;
height: calc(100% - 190px);
background: rgba(250, 250, 250, 1);
box-sizing: border-box;
border: 1px solid rgba(242, 242, 242, 1);
border-radius: 5px;
padding: 15px;
overflow: auto;
}
.segmentation-item-add{
line-height: 30px;
font-family: '微软雅黑';
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #266FFF;
cursor: pointer;
}
</style>
<style>
.segmentation_custom_attrs_box{
width: 100%;
border: 1px solid #f0f1f2;
border-bottom: 0px solid #f0f1f2;
overflow: auto;
margin-top: 10px;
}
.segmentation_custom_attrs_header{
display: flex;
}
.segmentation_custom_attrs_header1{
width: 10%;
height: 40px;
line-height: 40px;
text-align: center;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 14px;
color: #282828;
background-color: #fafafa;
border-right: 1px solid #f0f1f2;
border-bottom: 1px solid #f0f1f2;
}
.segmentation_custom_attrs_header2{
width: 40%;
height: 40px;
line-height: 40px;
text-align: center;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 14px;
color: #282828;
background-color: #fafafa;
border-right: 1px solid #f0f1f2;
border-bottom: 1px solid #f0f1f2;
}
.segmentation_custom_attrs_header3{
width: 40%;
height: 40px;
line-height: 40px;
text-align: center;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 14px;
color: #282828;
background-color: #fafafa;
border-right: 1px solid #f0f1f2;
border-bottom: 1px solid #f0f1f2;
}
.segmentation_custom_attrs_header4{
width: 10%;
height: 40px;
line-height: 40px;
text-align: center;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 14px;
color: #282828;
background-color: #fafafa;
border-bottom: 1px solid #f0f1f2;
}
.segmentation_custom_attrs_content1{
width: 10%;
height: 42px;
line-height: 40px;
text-align: center;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 14px;
color: #282828;
border-right: 1px solid #f0f1f2;
border-bottom: 1px solid #f0f1f2;
}
.segmentation_custom_attrs_content2{
width: 40%;
height: 42px;
line-height: 40px;
text-align: center;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 14px;
color: #282828;
border-right: 1px solid #f0f1f2;
border-bottom: 1px solid #f0f1f2;
}
.segmentation_custom_attrs_content3{
width: 40%;
height: 42px;
line-height: 40px;
text-align: center;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 14px;
color: #282828;
border-right: 1px solid #f0f1f2;
border-bottom: 1px solid #f0f1f2;
}
.segmentation_custom_attrs_content4{
width: 10%;
height: 42px;
line-height: 40px;
text-align: center;
font-family: '微软雅黑', sans-serif;
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #266FFF;
border-bottom: 1px solid #f0f1f2;
}
.segmentation_custom_attrs_content1 .el-input__wrapper{
box-shadow: 0 0 0 transparent;
}
.segmentation_custom_attrs_content1 .el-input__wrapper.is-focus{
box-shadow:inset 0 0 0 1px #266FFF !important;
}
.segmentation_custom_attrs_content2 .el-input__wrapper{
box-shadow: 0 0 0 transparent;
}
.segmentation_custom_attrs_content2 .el-input__wrapper.is-focus{
box-shadow:inset 0 0 0 1px #266FFF !important;
}
.segmentation_custom_attrs_content3 .el-input__wrapper{
box-shadow: 0 0 0 transparent;
}
.segmentation_custom_attrs_content3 .el-input__wrapper.is-focus{
box-shadow:inset 0 0 0 1px #266FFF !important;
}
.addAttrBox{
width: 100%;
height: 38px;
background-color: #f5f8ff;
line-height: 38px;
text-align: center;
font-family: '微软雅黑', sans-serif;
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #266FFF;
border: 1px dashed #266FFF;
margin-top: 10px;
cursor: pointer;
}
.condition-right-titlebox{
display: flex;
align-items: center;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
font-weight: 700;
font-style: normal;
font-size: 16px;
color: #363636;
}
.condition-right-titleline{
width: 5px;
height: 14px;
background-color: rgba(38, 111, 255, 1);
margin-right: 8px;
}
.condition-right-devicename{
font-family: 'Arial Normal', 'Arial';
font-weight: 400;
font-style: normal;
font-size: 14px;
padding: 10px 0;
}
.condition-right-content{
border-left: 1px solid #f0f1f2;
border-top: 1px solid #f0f1f2;
}
.condition-right-tableheader{
display: flex;
}
.condition-right-tablecontent{
display: flex;
}
.condition-right-tableheader div{
width: 115px;
height: 36px;
line-height: 36px;
text-align: center;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
font-weight: 700;
font-style: normal;
color: #383838;
background: #fafafa;
border-right: 1px solid #f0f1f2;
border-bottom: 1px solid #f0f1f2;
}
.condition-right-tablecontent div{
width: 115px;
height: 36px;
line-height: 36px;
text-align: center;
font-family: 'Arial Normal', 'Arial';
font-weight: 400;
font-style: normal;
font-size: 13px;
color: #505050;
text-align: center;
border-right: 1px solid #f0f1f2;
border-bottom: 1px solid #f0f1f2;
}
</style>

View File

@ -10,6 +10,7 @@ import { ElForm, ElMessage, ElMessageBox } from "element-plus";
import { searchScenariosLsit,addScenarios,updateScenarios,deleteScenarios,deleteBatchScenarios} from "@/api/business/scenario"; import { searchScenariosLsit,addScenarios,updateScenarios,deleteScenarios,deleteBatchScenarios} from "@/api/business/scenario";
import Page from '@/components/Pagination/page.vue' import Page from '@/components/Pagination/page.vue'
import { getDictItemById } from '@/api/dict'; import { getDictItemById } from '@/api/dict';
import ConditionModel from '@/views/component/scenario/condition.vue'
const algorithmTypeData: any = ref([]); // const algorithmTypeData: any = ref([]); //
const stepsActive = ref(0); // const stepsActive = ref(0); //
const props = defineProps({ // const props = defineProps({ //
@ -65,7 +66,7 @@ const info: any = ref({
code: "", code: "",
description: "", description: "",
}); });
const scenarioId = ref(""); // id
const dialogVisible = ref(false); const dialogVisible = ref(false);
function addClick() { function addClick() {
title.value = "新增事故情景"; title.value = "新增事故情景";
@ -77,6 +78,8 @@ function addClick() {
stepsActive.value = 0; stepsActive.value = 0;
dialogVisible.value = true; dialogVisible.value = true;
} }
const isSwitch = ref(false); // id
//-/ //-/
function confirmClick(formEl: any) { function confirmClick(formEl: any) {
console.log(info.value) console.log(info.value)
@ -90,8 +93,14 @@ function confirmClick(formEl: any) {
algorithmType: info.value.algorithmType, algorithmType: info.value.algorithmType,
description: info.value.description, description: info.value.description,
}; };
if(isSwitch.value == true){
return ;
}
isSwitch.value = true
addScenarios(params).then((res:any) => { addScenarios(params).then((res:any) => {
if(res == true) { isSwitch.value = false;
if(res && res.code == 0) {
scenarioId.value = res.scenarioId;
gettableData(); gettableData();
ElMessage({ ElMessage({
type: "success", type: "success",
@ -104,7 +113,9 @@ function confirmClick(formEl: any) {
message: "新增失败", message: "新增失败",
}); });
} }
}); }).catch(() => {
isSwitch.value = false;
})
} else if (info.value.scenarioId) { } else if (info.value.scenarioId) {
const params = { const params = {
scenarioId: info.value.scenarioId, scenarioId: info.value.scenarioId,
@ -222,6 +233,10 @@ const getAlgorithmType = async () => {
} catch (error) { } catch (error) {
} }
} }
const conditionModel = ref()
function submitClick(){
conditionModel.value?.submitClick()
}
onMounted(() => { onMounted(() => {
getAlgorithmType() getAlgorithmType()
gettableData(); gettableData();
@ -289,7 +304,7 @@ onMounted(() => {
</div> </div>
<el-dialog v-model="dialogVisible" :close-on-click-modal="false" <el-dialog v-model="dialogVisible" :close-on-click-modal="false"
:modal="false" draggable :before-close="handleScenarioClose" title="'新增事故情景'" :modal="false" draggable :before-close="handleScenarioClose" title="新增事故情景"
append-to-body width="1000px"> append-to-body width="1000px">
<div class="scenario-setting-box"> <div class="scenario-setting-box">
<el-steps style="width: 500px;margin:0 auto " :active="stepsActive" align-center> <el-steps style="width: 500px;margin:0 auto " :active="stepsActive" align-center>
@ -299,7 +314,8 @@ onMounted(() => {
</el-steps> </el-steps>
</div> </div>
<div class="scenario-setting-bottombox"> <div class="scenario-setting-bottombox">
<el-form ref="infoForm" :model="info" :rules="rules" label-width="140px" style="width:600px" v-if="stepsActive == 0"> <el-form ref="infoForm" :model="info" :rules="rules" label-width="140px" style="width:600px"
v-if="stepsActive == 1">
<el-form-item label="事故情景名称:" prop="name"> <el-form-item label="事故情景名称:" prop="name">
<el-input v-model="info.name" style="width: 100%" placeholder="输入事故情景名称" ></el-input> <el-input v-model="info.name" style="width: 100%" placeholder="输入事故情景名称" ></el-input>
</el-form-item> </el-form-item>
@ -311,15 +327,12 @@ onMounted(() => {
<el-form-item label="事故情景描述:"> <el-form-item label="事故情景描述:">
<el-input type="textarea" v-model="info.description" :rows="6" style="width: 100%" placeholder="请输入事故情景描述"></el-input> <el-input type="textarea" v-model="info.description" :rows="6" style="width: 100%" placeholder="请输入事故情景描述"></el-input>
</el-form-item> </el-form-item>
<!-- <span class="dialog-footer"
style="display: flex;display: -webkit-flex; justify-content: flex-end;-webkit-justify-content: flex-end;">
<el-button @click="handleClose"> </el-button>
<el-button type="primary" @click="confirmClick(infoForm)"> </el-button>
</span> -->
</el-form> </el-form>
<ConditionModel v-if="stepsActive == 0" ref="conditionModel" :projectInfo="projectInfo" :scenarioId="scenarioId" />
</div> </div>
<div style="text-align: center;"> <div style="text-align: center;">
<el-button type="primary" @click="confirmClick(infoForm)">下一步</el-button> <el-button v-if="stepsActive == 1" type="primary" @click="confirmClick(infoForm)">下一步</el-button>
<el-button v-else type="primary" @click="submitClick">下一步2</el-button>
</div> </div>
</el-dialog> </el-dialog>