rt-sim-training-client/src/views/newMap/jointTrainingNew/menuSchema.vue

282 lines
10 KiB
Vue
Raw Normal View History

<template>
<div style="height:100%">
2020-11-09 11:31:20 +08:00
<div v-if="project !== 'bjd'" class="schema" :style="{top: offset+'px'}">
<el-select v-if="showSelectStation" v-model="chiShowStation" style="width: 100px;" size="small" @change="switchStationMode">
<el-option v-for="item in stationList" :key="item.value" :label="item.name" :value="item.value" />
</el-select>
<el-button-group>
2020-09-21 10:17:37 +08:00
<el-button v-if="userRole=== 'STATION_SUPERVISOR' && !$route.query.projectDevice" size="small" @click="goIbp">IBP盘</el-button>
<el-button v-if="userRole=== 'DISPATCHER' && !$route.query.projectDevice" size="small" @click="goBigScreen">大屏</el-button>
<el-button v-if="running && !dataError && $route.query.type !== 'ILW'" size="small" :disabled="viewDisabled" @click="viewRunPlan">{{ $t('joinTraining.runGraphPreview') }}</el-button>
<template v-if="isAdmin">
<el-button v-if="!running && !dataError && $route.query.type !== 'ILW'" size="small" type="warning" @click="loadRunPlan">
{{ $t('joinTraining.runGraphLoading') }}</el-button><!-- -->
</template>
</el-button-group>
<el-button v-if="(isAdmin || $route.query.type === 'ILW') && !dataError && !isScreen" size="small" :type="faultMode ? '' : 'primary' " @click="changeOperateMode()">{{ faultMode?' 切换到普通模式':'切换到故障模式' }}</el-button>
<!-- isCenter && !dataError && !isAdmin 此判断用于以后(目前 暂时不用) -->
2020-08-05 09:05:26 +08:00
<el-button v-if="isShowDirective" size="small" :type="directiveMode ? 'primary' : ''" @click="changeDirectiveMode()">{{ directiveMode? '切换到普通模式':'切换到指令模式' }}</el-button>
</div>
2020-08-05 15:12:40 +08:00
<join-run-plan-view v-if="running && !dataError" ref="runPlanView" :group="group" />
2020-09-16 14:26:04 +08:00
<select-ibp ref="selectIbp" />
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperateMode } from '@/scripts/ConstDic';
import { getByGroupStationList } from '@/api/jmap/map';
2020-03-17 14:54:03 +08:00
import { getEveryDayRunPlanNew } from '@/api/simulation';
import { getSessionStorage } from '@/utils/auth';
import JoinRunPlanView from '@/views/newMap/displayNew/demon/runPlanView';
2020-09-16 14:26:04 +08:00
import SelectIbp from '@/views/newMap/displayNew/demon/selectIbp';
2020-09-21 10:17:37 +08:00
import { getIbpInfoByStation } from '@/api/ibp';
export default {
name: 'MenuDemonSchema',
components:{
2020-09-16 14:26:04 +08:00
JoinRunPlanView,
SelectIbp
},
props: {
group: {
type: String,
required: true
},
offset: {
type: Number,
required: true
},
userRole: {
type: String,
required: true
2020-03-25 15:22:52 +08:00
},
showSelectStation: {
type: Boolean,
default() {
return false;
}
},
stationList: {
2020-04-21 11:26:07 +08:00
type: Array,
2020-03-25 15:22:52 +08:00
default() {
return [];
}
},
2020-05-09 20:24:59 +08:00
dataError: {
type: Boolean,
default() {
return false;
}
2020-06-30 14:27:32 +08:00
},
isAdmin: {
type: Boolean,
default() {
return false;
}
2020-09-21 10:17:37 +08:00
},
deviceCode: {
type: String,
default() {
return '';
}
}
},
data() {
return {
mode: OperateMode.NORMAL,
OperateMode: OperateMode,
viewDisabled: true,
realData: {},
series: [],
chiShowStation: '',
kmRangeCoordMap: {},
runPlanData: {},
userId: '',
faultMode: false,
2020-08-04 10:03:06 +08:00
directiveMode: false,
firstLoad: true
};
},
computed: {
...mapGetters('runPlan', [
'stations'
]),
2020-08-05 15:12:40 +08:00
running() {
return this.$store.state.training.started;
},
isScreen() {
return this.$store.state.training.prdType === '07';
},
2020-08-05 15:12:40 +08:00
// isCenter() {
// return this.$store.state.training.prdType === '02';
// },
isShowDirective() { // 哈尔滨项目 行调设备显示
return this.$route.query.type == 'CW' && getSessionStorage('project') == 'heb';
2020-11-09 11:31:20 +08:00
},
project() {
return getSessionStorage('project');
}
},
watch: {
2020-09-03 14:44:16 +08:00
// '$store.state.training.switchcount': async function () {
// if (this.group) {
// const started = this.$store.state.training.started;
// if (started && !this.firstLoad) {
// await this.loadRunData(this.$route.query);
// } else if (this.firstLoad) {
// await this.loadRunData(this.$route.query);
// }
// }
// }
'$store.state.map.mapDataLoadedCount': function () {
this.loadRunData(this.$route.query);
2020-10-12 14:25:33 +08:00
},
'$store.state.training.triggerFaultCount': function () {
this.setFault();
}
},
async mounted() {
this.userId = this.$store.state.user.id;
},
methods: {
loadRunData(opt) {
this.$store.dispatch('runPlan/clear').then(resp => {
if (opt && opt.mapId) {
this.viewDisabled = true;
getByGroupStationList(this.$route.query.group).then(response => {
const stations = response.data;
this.$store.dispatch('runPlan/setStations', stations).then(() => {
2020-03-17 14:54:03 +08:00
getEveryDayRunPlanNew(this.group).then(resp => {
this.$store.dispatch('runPlan/setPlanData', resp.data);
2020-03-17 14:54:03 +08:00
this.$store.dispatch('runPlan/setInitialPlanData', resp.data);
this.viewDisabled = false;
this.firstLoad = false;
}).catch(error => {
this.$store.dispatch('runPlan/setPlanData', []);
if (error.code == 30001) {
this.$messageBox(this.$t('error.runGraphIsNotLoaded'));
} else {
2020-05-09 20:27:41 +08:00
!this.dataError && this.$messageBox(this.$t('error.obtainOperationGraphFailed'));
}
});
});
}).catch(() => {
this.$messageBox(this.$t('error.obtainStationListFailed'));
});
}
});
},
// initPlannedDriving(isDisable) {
// this.isDisable = isDisable;
// },
changeOperateMode() {
this.faultMode = !this.faultMode;
let mode = OperateMode.NORMAL;
if (this.faultMode) {
mode = OperateMode.FAULT;
}
this.$store.dispatch('training/changeOperateMode', { mode: mode });
},
changeDirectiveMode() { // 调整指令模式
this.directiveMode = !this.directiveMode;
let mode = OperateMode.NORMAL;
if (this.directiveMode) {
mode = OperateMode.DIRECTIVE;
}
this.$store.dispatch('training/changeOperateMode', { mode: mode });
},
setFault() {
this.$emit('faultChooseShow');
},
loadRunPlan() {
this.$emit('runPlanLoadShow');
},
viewRunPlan() {
2020-11-03 13:37:57 +08:00
if (this.$route.query.project === 'bjd') {
const routeData = this.$router.resolve({
path:'/planSchedule/window',
query:{
mapId:this.$route.query.mapId,
group:this.$route.query.group,
lineCode: this.$route.query.lineCode,
project: this.$route.query.project,
noPreLogout: true,
initTime: this.$store.state.training.initTime
}
});
window.open(routeData.href, '_blank', 'noopener noreferrer');
} else {
this.$refs.runPlanView.doShow();
}
},
// 选择车站
2020-07-24 18:38:19 +08:00
switchStationMode(stationCode) {
this.$emit('switchStationMode', stationCode);
},
// 点击大屏预览
goBigScreen() {
const routeData = this.$router.resolve({
path:`/displayBigScreen/${this.$route.query.mapId}`,
query:{
lineCode: this.$route.query.lineCode,
mapId:this.$route.query.mapId,
group:this.$route.query.group,
prdType: '07',
try:0,
noPreLogout: true
}
});
window.open(routeData.href, '_blank', 'noopener noreferrer');
},
// 点击ibp预览
goIbp() {
2020-09-16 14:26:04 +08:00
// this.$refs.selectIbp.doShow();
2020-09-21 10:17:37 +08:00
getIbpInfoByStation(this.$route.query.mapId, this.deviceCode).then(resp => {
if (resp.data) {
const routeData = this.$router.resolve({
path:`/ibpShow`,
query:{
lineCode: this.$route.query.lineCode,
mapId: this.$route.query.mapId,
group: this.$route.query.group,
stationCode: this.deviceCode,
loadAll: true,
noPreLogout: true
}
});
window.open(routeData.href, '_blank', 'noopener noreferrer');
} else {
this.$messageBox('本车站暂无IBP盘数据');
}
}).catch((error) => {
if (error.code == '30001') {
this.$messageBox('本车站暂无IBP盘数据');
} else {
this.$message.error('获取IBP盘数据异常');
}
});
2020-09-21 10:17:37 +08:00
}
}
};
</script>
<style>
.schema {
2020-08-14 17:52:14 +08:00
z-index: 34;
display: inline;
position: absolute;
2020-07-29 10:27:02 +08:00
right: 5px;
}
.schema .el-radio-group .el-radio-button__inner {
padding: 0px 15px 0px 15px;
height: 32px;
line-height: 32px;
font-size: 12px;
}
/* /deep/ .el-button+ .el-button {
margin-left: 0px;
} */
</style>