rt-sim-training-client/src/views/demonstration/deomonList/index.vue

137 lines
3.3 KiB
Vue
Raw Normal View History

2019-07-26 13:32:43 +08:00
<template>
<el-dialog
v-dialogDrag
:title="title"
:visible.sync="show"
width="600px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-scrollbar wrap-class="scrollbar-wrapper" :style="{height: height+'px'}">
<el-tree
ref="tree"
class="filter-tree"
:data="trainingList"
:props="defaultProps"
default-expand-all
:filter-node-method="filterNode"
:style="{height: height+'px'}"
@node-click="clickEvent"
>
<span slot-scope="{ node, data }">
2019-08-19 20:27:23 +08:00
<span v-if="data.state=='01'">{{ $t('global.trainingHasStart').replace('{name}', data.creator.nickName) }}</span>
<span v-else>{{ $t('global.trainingHasStart').replace('{name}', data.creator.nickName) }}</span>
2019-07-26 13:32:43 +08:00
</span>
</el-tree>
</el-scrollbar>
2019-08-19 14:02:20 +08:00
<span
2019-08-19 20:27:23 +08:00
slot="footer"
2019-08-19 14:02:20 +08:00
class="dialog-footer"
>
<el-button type="primary" @click="handleJoin">{{ $t('global.joinRoom') }}</el-button>
<el-button @click="dialogShow = false">{{ $t('global.cancel') }}</el-button>
</span>
</el-dialog>
2019-07-26 13:32:43 +08:00
</template>
<script>
import { getjointTrainList, getjointTraining, putJointTrainingSimulationEntrance } from '@/api/chat';
import { getPublishMapInfo } from '@/api/jmap/map';
import { launchFullscreen } from '@/utils/screen';
2019-07-26 13:32:43 +08:00
export default {
name: 'DeomonList',
data() {
return {
dialogShow: false,
loading: false,
height: 120,
trainingList: [],
defaultProps: {
label: 'roomName'
},
group: '',
state: '',
mapId: ''
};
},
computed: {
show() {
return this.dialogShow;
},
title() {
2019-08-19 14:02:20 +08:00
return this.$t('global.synthesisTrainingTitle');
},
isWatch() {
return true;
},
isjoin() {
return true;
}
},
methods: {
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
clickEvent(obj, node, data) {
this.state = obj.state;
this.group = obj.group;
this.mapId = obj.mapId;
},
async getList() {
try {
const res = await getjointTrainList();
this.trainingList = res.data;
} catch (error) {
console.error(error);
}
},
doShow() {
this.getList();
this.loading = false;
this.dialogShow = true;
},
doClose() {
this.loading = false;
this.dialogShow = false;
},
async handleJoin() {
2019-08-14 16:47:54 +08:00
if (this.group) {
await getjointTraining(this.group);
if (this.state == '02') {
launchFullscreen();
await putJointTrainingSimulationEntrance(this.group);
const rest = await getPublishMapInfo(this.mapId);
2019-10-25 12:59:24 +08:00
const query = { skinCode: rest.data.skinCode, mapId: this.mapId, group: this.group, subSystem: this.$route.query.subSystem };
2019-08-14 16:47:54 +08:00
this.$router.push({ path: `/jointTraining`, query: query });
} else if (this.state == '01') {
const query = { group: this.group };
this.$router.push({ path: `/trainroom`, query: query });
}
} else {
2019-08-19 14:02:20 +08:00
this.$message.info(this.$t('global.pleaseChooseRoom'));
}
}
}
};
2019-07-26 13:32:43 +08:00
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ {
.el-dialog__body {
padding: 0px 30px !important;
}
.el-tree {
overflow: hidden !important;
}
.el-tree-node.is-current>.el-tree-node__content {
background-color: #e4e3e3 !important;
}
}
</style>