You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

108 lines
3.3 KiB

<template>
<el-select placeholder="选择运行环境" style="width:180px; margin-right: 5px;"
:disabled="worldModelState.runState.currentEnvId && worldModelState.runState.isRunning"
:model-value="worldModelState.runState.currentEnvId"
@change="setEnvId">
<el-option v-for="env in envList" :key="env.envId" :label="env.envName" :value="env.envId"></el-option>
<template #footer>
<el-button size="small" type="primary" @click="createEnv" plain>创建虚拟环境</el-button>
<el-button size="small" :icon="renderIcon('Refresh')" @click="reloadEnvList" />
</template>
</el-select>
<el-select style="width:80px;margin-right: 5px;" placeholder="时间速率"
v-model="worldModelState.runState.timeRate"
v-if="worldModelState.runState.isVirtual">
<el-option v-for="option in timeRateOptions"
:label="option.label" :value="option.value" />
</el-select>
<el-button :icon="renderIcon('Connection')" type="primary"
v-if="!worldModelState.runState.currentEnvId || !worldModelState.runState.isRunning"
:disabled="!worldModelState.runState.currentEnvId"
:loading="worldModelState.runState.isLoading"
@click="connectEnv">连接服务
</el-button>
<el-button :icon="renderIcon('antd DisconnectOutlined')" type="danger" plain
v-if="worldModelState.runState.currentEnvId && worldModelState.runState.isRunning"
:loading="worldModelState.runState.isLoading"
@click="disconnectEnv">断开连接
</el-button>
</template>
<script>
import { renderIcon } from '@/utils/webutils.js'
import { worldModel } from '@/core/manager/WorldModel.js'
import EnvManager from '@/core/manager/EnvManager.js'
import _ from 'lodash'
export default {
name: 'EnvSelectConnect',
data() {
return {
/**
* @type {Array<EnvInfo>}
*/
envList: [],
timeRateOptions: [
{ label: '1x', value: 1 },
{ label: '2x', value: 2 },
{ label: '5x', value: 5 },
{ label: '10x', value: 10 }
]
}
},
mounted() {
this.reloadEnvList()
},
methods: {
renderIcon,
connectEnv() {
worldModel.envManager.connectEnv().finally()
},
disconnectEnv() {
worldModel.envManager.disconnectEnv().finally()
},
createEnv() {
EnvManager.createEnv(this.worldModelState.project_uuid).then(() => {
this.reloadEnvList()
})
},
reloadEnvList() {
EnvManager.getAllEnv(this.worldModelState.project_uuid)
.then(envList => {
this.envList = envList
})
},
setEnvId(newVal) {
const env = _.find(this.envList, env => env.envId === newVal)
if (!env) {
system.showErrorDialog(`未找到环境ID: ${newVal}`)
}
worldModel.setEnv(env)
}
},
watch: {
'worldModelState.isOpened': {
handler() {
if (this.worldModelState.isOpened) {
this.reloadEnvList()
}
}
},
'worldModelState.project_uuid': {
immediate: true,
handler() {
if (this.worldModelState.isOpened) {
this.reloadEnvList()
}
}
}
},
computed: {
isModelOpen() {
return this.worldModelState.isOpened
},
worldModelState() {
return worldModel.state
}
}
}
</script>