综合演练调整

This commit is contained in:
fan 2020-06-29 13:11:27 +08:00
parent 103ae24b64
commit a689103abe
4 changed files with 227 additions and 161 deletions

View File

@ -0,0 +1,72 @@
<template>
<el-dialog
v-dialogDrag
:title="title"
:visible.sync="dialogVisible"
width="500px"
:before-close="handleClose"
center
:close-on-click-modal="false"
>
<el-form ref="form" :model="formModel" label-width="120px" :rules="rules">
<el-form-item label="添加仿真成员:" prop="part">
<el-select v-model="formModel.type" placeholder="请选择" size="small">
<el-option
v-for="item in typeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
<el-button @click="handleClose">{{ $t('global.cancel') }}</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
name: 'AddMember',
data() {
return {
dialogVisible: false,
formModel: {
type: ''
},
rules: {
part: [
{ required: true, message: '请选择显示位置', trigger: 'change' }
]
},
typeList: [{label: '行调', value: 'DISPATCHER'}, {label: '通号', value: 'MAINTAINER'}]
};
},
computed: {
title() {
return '添加仿真角色成员';
}
},
methods: {
initData(row) {
},
doShow(row) {
this.initData(row);
this.dialogVisible = true;
},
doSave() {
const self = this;
},
handleClose(done) {
this.dialogVisible = false;
this.formModel = {
type: ''
};
}
}
};
</script>

View File

@ -7,6 +7,7 @@
<transition name="el-zoom-in-bottom">
<map-system-draft ref="mapCanvas" @back="back" />
</transition>
<menu-demon-joint
ref="demonMenu"
:group="group"
@ -15,11 +16,11 @@
:device-code="deviceCode"
:countdown-time="countdownTime"
@getUserRole="getUserRole"
@showMembers="showMembers"
@hidepanel="hidepanel"
@showIbp="showIbp"
@startCounting="startCounting"
@hidejl3dcctv="hidejl3dcctv"
@handlerMemberManage="handlerMemberManage"
/>
<menu-demon-schema
ref="menuSchema"
@ -41,7 +42,8 @@
<menu-system-time ref="menuSystemTime" :offset="offset" :group="group" :right="right" />
<menu-train-list v-if="prdType=='02'" @setCenter="setCenter" />
<js-question v-if="project==='jsxt'" :offset="offset" :question-list="questionList" />
<members-manage ref="membersManage" />
<members-manage ref="membersManage" @addSimulationMember="addSimulationMember" />
<add-member ref="addMember" />
</div>
</div>
@ -51,7 +53,6 @@
import MapSystemDraft from '@/views/newMap/mapsystemNew/index';
import MenuDemonJoint from './menuDemon';
import MenuDemonSchema from './menuSchema';
import MembersManage from './membersManage';
import JsQuestion from './jsQuestion';
import JoinFaultChoose from '@/views/newMap/displayNew/demon/faultChoose';
import JoinRunPlanLoad from '@/views/newMap/displayNew/demon/runPlanLoad';
@ -75,6 +76,8 @@ import { timeFormat } from '@/utils/date';
import { Message } from 'element-ui';
import Vue from 'vue';
import localStore from 'storejs';
import MembersManage from './membersManage';
import AddMember from './addMember';
export default {
name: 'JointTrainingDraft',
@ -91,7 +94,8 @@ export default {
Jl3dMaintainer,
IbpPlate,
JsQuestion,
MembersManage
MembersManage,
AddMember
},
data() {
return {
@ -369,29 +373,23 @@ export default {
} else {
this.$store.dispatch('training/over');
}
// if (this.isDemon) {
// this.$refs.menuDemon.initPlannedDriving(resp.data.planRunning);
// } else if (this.isScript) {
// this.$refs.menuScript.initPlannedDriving(resp.data.planRunning);
// }
} else if (resp && resp.code == 200 && resp.data && resp.data.dataError) {
this.dataError = true;
this.$messageBox('此地图数据正在维护中,无法运行!');
}
},
async getUserRole() {
// const res = await getUserRolesNew(this.group);
// const data = res.data || {};
// this.userRole = data.userRole;
// this.deviceCode = data.deviceCode;
// this.ibpPart = data.ibpPart;
// if (this.userRole === 'IBP') {
// this.showIbp(this.deviceCode);
// } else {
// this.hideIbp();
// }
// return res;
return '';
const res = await getUserRolesNew(this.group);
const data = res.data || {};
this.userRole = data.userRole;
this.deviceCode = data.deviceCode;
this.ibpPart = data.ibpPart;
if (this.userRole === 'IBP') {
this.showIbp(this.deviceCode);
} else {
this.hideIbp();
}
return res;
},
// 仿
async initLoadDemonData() {
@ -427,7 +425,6 @@ export default {
} else {
resp = await this.getUserRole();
}
// console.log('/////////////' + resp.data.userRole);
if (resp && resp.code == 200) {
// Admin Instructor Dispatcher STATION_SUPERVISOR Audience Driver MAINTAINER IBP:IBP
this.userRole = resp.data.userRole;
@ -623,17 +620,20 @@ export default {
this.$jlmap.on('pan');
this.$jlmap.setRevoverBigScreen();
},
showMembers() {
handlerMemberManage() {
this.$refs.membersManage.doShow();
},
addSimulationMember() {
this.$refs.addMember.doShow();
}
}
};
</script>
<style>
.main {
display: block;
width: 100%;
height: 100%;
overflow: hidden;
}
.main {
display: block;
width: 100%;
height: 100%;
overflow: hidden;
}
</style>

View File

@ -7,24 +7,31 @@
:before-close="doClose"
:z-index="2000"
:modal="false"
fullscreen
:close-on-click-modal="false"
center
>
<div class="room">
<div class="room__head">
<div class="room__head--title">
{{ $t('trainRoom.comprehensiveDrillRoom') }}
</div>
<div class="room__head--notes">
{{ $t('trainRoom.comprehensiveTrainingManager') + room.creator.nickName }}
</div>
</div>
<div class="room__container">
<div style="width: 70%;">
<el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick">
<div style="margin-left: 10px;margin-right: 10px;">
<el-input v-model="queryMember" placeholder="请输入搜索人员">
<el-button slot="append" icon="el-icon-search" />
</el-input>
<el-button @click="addMember">添加仿真成员</el-button>
</div>
<el-tree
:data="data"
:props="defaultProps"
default-expand-all
style="margin: 10px;margin-bottom: 0;border: 1px solid #ccc;"
:style="{height: height - 35 + 'px'}"
@node-click="handleNodeClick"
>
<span slot-scope="{ node, data }" class="custom-tree-node">
<span>{{ node.label }}</span>
<span v-if="node.type==='member'">
<el-select v-model="node.member" placeholder="请选择" clearable @change="nodeMemberChange($event, node)">
<span v-if="node.data.type === 'member'">
<el-select v-model="node.member" placeholder="请选择" clearable size="mini" @change="nodeMemberChange($event, node)">
<el-option
v-for="item in members"
:key="item.id"
@ -60,6 +67,7 @@ export default {
data() {
return {
show: false,
queryMember: '',
room: {
totalNum: 0,
group: '',
@ -77,9 +85,9 @@ export default {
label: 'label'
},
members: [
{id: 1, name: '张三'},
{id: 2, name: '李四'},
{id: 3, name: '王五'}
{id: 1, name: '张三', nickName:'张三'},
{id: 2, name: '李四', nickName:'李四'},
{id: 3, name: '王五', nickName:'王五'}
],
stationList: [],
availableStationList:[],
@ -123,7 +131,7 @@ export default {
},
computed: {
height() {
return this.$store.state.app.height - 100;
return this.$store.state.app.height - 130;
},
group() {
return this.$route.query.group;
@ -165,6 +173,9 @@ export default {
member.disabled = false;
}
});
},
addMember() {
this.$emit('addSimulationMember');
}
}
};
@ -178,6 +189,7 @@ export default {
justify-content: space-between;
font-size: 14px;
padding-right: 8px;
margin: 2px;
}
.room {
width: 100%;
@ -187,33 +199,6 @@ export default {
box-sizing: border-box;
background: #f0f0f0;
&__head {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background: #000;
color: #fff;
padding: 10px;
position: relative;
&--title {
font-size: 22px;
font-weight: bold;
}
&--notes {
position: absolute;
left: 10px;
bottom: 5px;
}
&--info {
position: absolute;
right: 10px;
bottom: 5px;
}
}
&__container {
display: flex;
flex-grow: 1;
@ -233,10 +218,21 @@ export default {
flex-basis: 360px;
}
}
&__footer {
height: 20px;
}
}
/deep/ {
.el-input--mini .el-input__inner {
height: 24px;
line-height: 24px;
}
.el-input-group {
width: calc(100% - 146px);
}
.el-dialog__body {
padding: 6px 20px;
}
}
</style>

View File

@ -3,7 +3,7 @@
<chat-box :group="group" :user-role="userRole" />
<div class="display-draft" :class="{'display-type-hb': $route.query.lineCode == '07' && $store.state.training.prdType=='01'}">
<el-button-group>
<el-button v-if="dataError" @click="membersManage">成员管理</el-button>
<el-button @click="memberManage">成员管理</el-button>
<el-button v-if="hasRealDevice && !dataError " type="primary" @click="setRelDevice">{{ $t('joinTraining.connectRealDevices') }}</el-button>
<el-button v-if="isDriver && !dataError" type="jumpjlmap3d" @click="jumpjlmap3d">{{ $t('joinTraining.driverPerspective') }}</el-button>
<el-button v-if="isStationSupervisor && !dataError" type="jmap3dcctv" @click="jlmap3dcctv">cctv</el-button>
@ -11,6 +11,7 @@
<el-button type="success" :disabled="isDisable || dataError" @click="selectBeginTime">{{ $t('joinTraining.drivingByPlan') }}</el-button>
<el-button type="danger" :disabled="dataError" @click="end">{{ $t('joinTraining.initialize') }}</el-button>
</template>
<!-- <el-button type="primary" :loading="backLoading" @click="back">{{ $t('global.back') }}</el-button> -->
</el-button-group>
<template v-if="project==='jsxt'">
<div style="background: #FFF;display: inline-block;height: 40px;line-height: 40px;padding: 0 5px;border: 2px solid #F00;border-radius: 6px;margin-right: 8px;">{{ '剩余时间:'+countdownTime }}</div>
@ -18,7 +19,7 @@
<el-button :disabled="jsStart" type="danger" @click="endCompetition">提交</el-button>
</template>
<el-button v-if="project==='refereeJsxt'" type="success" @click="refeeEndCompetition">返回</el-button>
<el-button v-if="project!=='jsxt'&&project!=='refereeJsxt' && !projectDevice" type="primary" :loading="backLoading" @click="back">{{ $t('global.back') }}</el-button>
<el-button v-if="project!=='jsxt'&&project!=='refereeJsxt'" type="primary" :loading="backLoading" @click="back">{{ $t('global.back') }}</el-button>
</div>
<qr-code ref="qrCode" />
<set-time ref="setTime" @ConfirmSelectBeginTime="start" />
@ -111,9 +112,6 @@ export default {
},
project() {
return getSessionStorage('project');
},
projectDevice() {
return this.$route.query.projectDevice;
}
},
watch: {
@ -363,102 +361,102 @@ export default {
this.$message.error('提交试卷失败!');
});
},
membersManage() {
this.$emit('showMembers');
memberManage() {
this.$emit('handlerMemberManage');
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import "src/styles/mixin.scss";
.tabs-roles {
overflow: hidden;
border-bottom: 1px solid #e4e7ed;
height: 40px;
line-height: 40px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
@import "src/styles/mixin.scss";
.tabs-roles {
overflow: hidden;
border-bottom: 1px solid #e4e7ed;
height: 40px;
line-height: 40px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
.roles {
padding: 0 20px;
height: 41px;
list-style: none;
font-size: 14px;
font-weight: 500;
color: #303133;
cursor: pointer;
border-left: 1px solid #e4e7ed;
border-right: 1px solid #e4e7ed;
float: left;
}
.roles {
padding: 0 20px;
height: 41px;
list-style: none;
font-size: 14px;
font-weight: 500;
color: #303133;
cursor: pointer;
border-left: 1px solid #e4e7ed;
border-right: 1px solid #e4e7ed;
float: left;
}
.roles-first {
border-right: none;
}
.roles-first {
border-right: none;
}
.roles-active {
border-bottom-color: #fff;
color: #409EFF;
}
.roles-active {
border-bottom-color: #fff;
color: #409EFF;
}
}
}
.tabs-content {
height: 300px;
width: 100%;
display: flex;
}
.tabs-content {
height: 300px;
width: 100%;
display: flex;
}
.display-score {
background-color: black;
display: -moz-inline-box;
display: inline-block;
text-align: left;
height: 32px;
line-height: 24px;
border-radius: 4px;
padding-left: 2px;
margin-left: 10px;
font-family: "Microsoft" !important;
font-size: 18px !important;
color: #fff;
}
.display-score {
background-color: black;
display: -moz-inline-box;
display: inline-block;
text-align: left;
height: 32px;
line-height: 24px;
border-radius: 4px;
padding-left: 2px;
margin-left: 10px;
font-family: "Microsoft" !important;
font-size: 18px !important;
color: #fff;
}
.reminder-drag {
position: absolute;
float: left;
left: 10px;
bottom: 10px;
width: 500px;
height: 340px;
background-color: #fff;
border-radius: 5px;
overflow: hidden;
z-index: 2;
font-size: 18px;
.reminder-drag {
position: absolute;
float: left;
left: 10px;
bottom: 10px;
width: 500px;
height: 340px;
background-color: #fff;
border-radius: 5px;
overflow: hidden;
z-index: 2;
font-size: 18px;
/deep/ {
.el-tabs__header {
margin: 0;
}
}
/deep/ {
.el-tabs__header {
margin: 0;
}
}
.title-bar {
height: 40px;
}
.title-bar {
height: 40px;
}
.content {
height: 300px;
}
}
.content {
height: 300px;
}
}
.display-draft {
position: absolute;
float: right;
right: 40px;
bottom: 28px;
}
.display-type-hb{
bottom: 105px;
}
.display-draft {
position: absolute;
float: right;
right: 40px;
bottom: 28px;
}
.display-type-hb{
bottom: 105px;
}
</style>