代码调整
This commit is contained in:
parent
f2ac931350
commit
354192e953
@ -1,96 +1,95 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-dialogDrag
|
v-dialogDrag
|
||||||
class="xian-01__systerm psl-panel"
|
class="xian-01__systerm psl-panel"
|
||||||
:title="title"
|
:title="title"
|
||||||
:visible.sync="show"
|
:visible.sync="show"
|
||||||
width="500px"
|
width="500px"
|
||||||
:before-close="doClose"
|
:before-close="doClose"
|
||||||
:z-index="2000"
|
:z-index="2000"
|
||||||
:modal="false"
|
:modal="false"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
>
|
>
|
||||||
<div class="psl-title">
|
<div class="psl-title">
|
||||||
<div>{{ title }}</div>
|
<div>{{ title }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="psl-content">
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">所有滑动门/应急门关闭且锁紧指示灯</div>
|
||||||
|
<img :src="getIcon('top', indicators.qbgmLight ? 'on' : 'off')">
|
||||||
</div>
|
</div>
|
||||||
<div class="psl-content">
|
</div>
|
||||||
<div class="content-row">
|
<div class="content-row">
|
||||||
<div class="cell btn">
|
<div class="cell">
|
||||||
<div class="btn-text">所有滑动门/应急门关闭且锁紧指示灯</div>
|
<div class="btn-text">PSL操作指示灯</div>
|
||||||
<img :src="getIcon('top', indicators.qbgmLight ? 'on' : 'off')" />
|
<img :src="getIcon('red', indicators.pslczLight ? 'on' : 'off')">
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content-row">
|
|
||||||
<div class="cell">
|
|
||||||
<div class="btn-text">PSL操作指示灯</div>
|
|
||||||
<img :src="getIcon('red', indicators.pslczLight ? 'on' : 'off')" />
|
|
||||||
</div>
|
|
||||||
<div class="cell">
|
|
||||||
<div class="btn-text">互锁解除指示灯</div>
|
|
||||||
<img :src="getIcon('red', indicators.hsjcLight ? 'on' : 'off')" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content-row">
|
|
||||||
<div class="cell">
|
|
||||||
<div class="btn-text">开门状态指示灯</div>
|
|
||||||
<img :src="getIcon('red', indicators.kmLight ? 'on' : 'off')" />
|
|
||||||
</div>
|
|
||||||
<div class="cell">
|
|
||||||
<div class="btn-text">关门状态指示灯</div>
|
|
||||||
<img :src="getIcon('green', indicators.gmLight ? 'on' : 'off')" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content-row">
|
|
||||||
<div class="cell btn">
|
|
||||||
<div class="btn-text">禁止</div>
|
|
||||||
<img
|
|
||||||
:src="getIcon('key')"
|
|
||||||
:class="['key', { 'key-on': indicators.yxjzKey }]"
|
|
||||||
@click="btnClickHandler('YXJZ')"
|
|
||||||
/>
|
|
||||||
<div class="btn-text-opt">允许</div>
|
|
||||||
</div>
|
|
||||||
<div class="cell btn">
|
|
||||||
<div class="btn-text">禁止</div>
|
|
||||||
<img
|
|
||||||
:src="getIcon('key')"
|
|
||||||
:class="['key', { 'key-on': indicators.hsjcKey }]"
|
|
||||||
@click="btnClickHandler('HSJC')"
|
|
||||||
/>
|
|
||||||
<div class="btn-text-opt">互锁解除</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content-row">
|
|
||||||
<div class="cell btn">
|
|
||||||
<div class="btn-text">开门按钮</div>
|
|
||||||
<img :src="getIcon('red', 'btn')" @click="btnClickHandler('KM')" />
|
|
||||||
</div>
|
|
||||||
<div class="cell btn">
|
|
||||||
<div class="btn-text">关门按钮</div>
|
|
||||||
<img :src="getIcon('green', 'btn')" @click="btnClickHandler('GM')" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content-row">
|
|
||||||
<div class="cell btn">
|
|
||||||
<div class="btn-text">试灯按钮</div>
|
|
||||||
<img
|
|
||||||
class="btn-sd btn-img"
|
|
||||||
:src="getIcon('green', 'btn')"
|
|
||||||
@mousedown.left="btnClickHandler('SD')"
|
|
||||||
@mouseup.left="btnClickHandler('SD')"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
<div class="cell">
|
||||||
|
<div class="btn-text">互锁解除指示灯</div>
|
||||||
|
<img :src="getIcon('red', indicators.hsjcLight ? 'on' : 'off')">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell">
|
||||||
|
<div class="btn-text">开门状态指示灯</div>
|
||||||
|
<img :src="getIcon('red', indicators.kmLight ? 'on' : 'off')">
|
||||||
|
</div>
|
||||||
|
<div class="cell">
|
||||||
|
<div class="btn-text">关门状态指示灯</div>
|
||||||
|
<img :src="getIcon('green', indicators.gmLight ? 'on' : 'off')">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">禁止</div>
|
||||||
|
<img
|
||||||
|
:src="getIcon('key')"
|
||||||
|
:class="['key', { 'key-on': indicators.yxjzKey }]"
|
||||||
|
@click="btnClickHandler('YXJZ')"
|
||||||
|
>
|
||||||
|
<div class="btn-text-opt">允许</div>
|
||||||
|
</div>
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">禁止</div>
|
||||||
|
<img
|
||||||
|
:src="getIcon('key')"
|
||||||
|
:class="['key', { 'key-on': indicators.hsjcKey }]"
|
||||||
|
@click="btnClickHandler('HSJC')"
|
||||||
|
>
|
||||||
|
<div class="btn-text-opt">互锁解除</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">开门按钮</div>
|
||||||
|
<img :src="getIcon('red', 'btn')" @click="btnClickHandler('KM')">
|
||||||
|
</div>
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">关门按钮</div>
|
||||||
|
<img :src="getIcon('green', 'btn')" @click="btnClickHandler('GM')">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">试灯按钮</div>
|
||||||
|
<img
|
||||||
|
class="btn-sd btn-img"
|
||||||
|
:src="getIcon('green', 'btn')"
|
||||||
|
@mousedown.left="btnClickHandler('SD')"
|
||||||
|
@mouseup.left="btnClickHandler('SD')"
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import icons from "@/assets/psl_images/psl_icons";
|
import icons from '@/assets/psl_images/psl_icons';
|
||||||
import { getPslStatus, pressPslButton } from "@/api/simulation";
|
import { getPslStatus, pressPslButton } from '@/api/simulation';
|
||||||
let standCode, group;
|
let standCode, group;
|
||||||
export default {
|
export default {
|
||||||
name: "PSL",
|
name: 'PSL',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
dialogShow: false,
|
dialogShow: false,
|
||||||
@ -107,18 +106,25 @@ export default {
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
title() {
|
title() {
|
||||||
return "PSL";
|
return 'PSL';
|
||||||
},
|
},
|
||||||
|
|
||||||
show() {
|
show() {
|
||||||
return this.dialogShow && !this.$store.state.menuOperation.break;
|
return this.dialogShow && !this.$store.state.menuOperation.break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
'$store.state.socket.simulationPslStatus': function(val) {
|
||||||
|
if (val && val[standCode]) {
|
||||||
|
Object.assign(this.indicators, val[standCode]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
doShow(selected) {
|
doShow(selected) {
|
||||||
this.dialogShow = true;
|
this.dialogShow = true;
|
||||||
this.$nextTick(function() {
|
this.$nextTick(function() {
|
||||||
this.$store.dispatch("training/emitTipFresh");
|
this.$store.dispatch('training/emitTipFresh');
|
||||||
});
|
});
|
||||||
standCode = selected.code;
|
standCode = selected.code;
|
||||||
group = this.$route.query.group;
|
group = this.$route.query.group;
|
||||||
@ -138,7 +144,7 @@ export default {
|
|||||||
doClose() {
|
doClose() {
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
this.dialogShow = false;
|
this.dialogShow = false;
|
||||||
this.$store.dispatch("training/emitTipFresh");
|
this.$store.dispatch('training/emitTipFresh');
|
||||||
},
|
},
|
||||||
getIcon(type, status) {
|
getIcon(type, status) {
|
||||||
return status !== undefined ? icons[`${type}_${status}`] : icons[type];
|
return status !== undefined ? icons[`${type}_${status}`] : icons[type];
|
||||||
@ -146,13 +152,6 @@ export default {
|
|||||||
btnClickHandler(btnType) {
|
btnClickHandler(btnType) {
|
||||||
pressPslButton(group, standCode, btnType);
|
pressPslButton(group, standCode, btnType);
|
||||||
}
|
}
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
"$store.state.socket.simulationPslStatus": function(val) {
|
|
||||||
if (val && val[standCode]) {
|
|
||||||
Object.assign(this.indicators, val[standCode]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
13
src/jmapNew/theme/datie_02/menus/dispatchWorkMenu.vue
Normal file
13
src/jmapNew/theme/datie_02/menus/dispatchWorkMenu.vue
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<template>
|
||||||
|
<div />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'DispatchWorkMenu'
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
189
src/jmapNew/theme/datie_02/menus/dispatchWorkMenuBar.vue
Normal file
189
src/jmapNew/theme/datie_02/menus/dispatchWorkMenuBar.vue
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
<template>
|
||||||
|
<div id="menuBarChengdu3">
|
||||||
|
<menu-bar ref="menuBar" :menu-normal="menuNormal" style="width:100%;"/>
|
||||||
|
<station-control-convert ref="stationControlConvert" />
|
||||||
|
<password-box ref="passwordBox" @setLoginResult="getLoginResult" />
|
||||||
|
<view-name ref="viewName" />
|
||||||
|
<train-add ref="trainAdd" />
|
||||||
|
<train-transtalet ref="trainTranstalet" />
|
||||||
|
<train-delete ref="trainDelete" />
|
||||||
|
<manage-user ref="manageUser" />
|
||||||
|
<help-about ref="helpAbout" />
|
||||||
|
<set-limit-speed ref="setLimitSpeed" />
|
||||||
|
<train-fixed-path-pane ref="trainFixedPathPane" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { mapGetters } from 'vuex';
|
||||||
|
import MenuBar from '@/jmapNew/theme/components/menus/menuBarNew';
|
||||||
|
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||||
|
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
|
||||||
|
import StationControlConvert from './menuDialog/stationControlConvert';
|
||||||
|
import TrainAdd from './menuDialog/trainAdd';
|
||||||
|
import TrainTranstalet from './menuDialog/trainTranstalet';
|
||||||
|
import TrainDelete from './menuDialog/trainDelete';
|
||||||
|
import PasswordBox from './menuDialog/passwordBox';
|
||||||
|
import ViewName from './menuDialog/viewName';
|
||||||
|
import ManageUser from './menuDialog/manageUser';
|
||||||
|
import HelpAbout from './menuDialog/helpAbout';
|
||||||
|
import SetLimitSpeed from './menuDialog/setLimitSpeed';
|
||||||
|
import TrainFixedPathPane from './menuDialog/trainFixedPathPane';
|
||||||
|
import { EventBus } from '@/scripts/event-bus';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'DispatchWorkMenuBar',
|
||||||
|
components: {
|
||||||
|
MenuBar,
|
||||||
|
StationControlConvert,
|
||||||
|
PasswordBox,
|
||||||
|
ViewName,
|
||||||
|
TrainAdd,
|
||||||
|
TrainTranstalet,
|
||||||
|
TrainDelete,
|
||||||
|
ManageUser,
|
||||||
|
HelpAbout,
|
||||||
|
SetLimitSpeed,
|
||||||
|
TrainFixedPathPane
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
dateString: {
|
||||||
|
type: String,
|
||||||
|
default: () => {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
menuNormal: [
|
||||||
|
{
|
||||||
|
title: '登录(L)',
|
||||||
|
operate: '',
|
||||||
|
children: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '应用程序(T)',
|
||||||
|
operate: '',
|
||||||
|
children: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters('map', [
|
||||||
|
'stationList'
|
||||||
|
])
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initStationList() {
|
||||||
|
const list = [];
|
||||||
|
this.stationList.forEach(station => {
|
||||||
|
if (station.visible) {
|
||||||
|
const node = {
|
||||||
|
title: station.name,
|
||||||
|
operate: station.code,
|
||||||
|
show: true,
|
||||||
|
click: this.mapLocation,
|
||||||
|
code: station.code
|
||||||
|
};
|
||||||
|
|
||||||
|
list.push(node);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return list;
|
||||||
|
},
|
||||||
|
// 设置地图定位
|
||||||
|
mapLocation(code) {
|
||||||
|
if (code) {
|
||||||
|
this.$store.dispatch('training/updateOffsetStationCode', { offsetStationCode: code });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 关于
|
||||||
|
about(order) {
|
||||||
|
const operate = {
|
||||||
|
operation: order.operate
|
||||||
|
};
|
||||||
|
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||||
|
this.$refs.helpAbout.doShow(operate);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getLoginResult(operate) {
|
||||||
|
/** 密码校验*/
|
||||||
|
if (operate.operation == OperationEvent.StationControl.forcedStationControl.passwordConfirm.operation) {
|
||||||
|
if (operate.success) {
|
||||||
|
/** 校验成功*/
|
||||||
|
this.$refs.stationControlConvert.doShow({ operation: OperationEvent.StationControl.forcedStationControl.mbar.operation });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setLimitSpeed(order) {
|
||||||
|
const operate = {
|
||||||
|
operation: order.operate
|
||||||
|
};
|
||||||
|
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||||
|
this.$refs.setLimitSpeed.doShow(operate, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
blankClickClose() {
|
||||||
|
this.$refs.menuBar.doClose();
|
||||||
|
},
|
||||||
|
cancleLimitSpeed(order) {
|
||||||
|
const operate = {
|
||||||
|
operation: order.operate
|
||||||
|
};
|
||||||
|
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||||
|
this.$refs.setLimitSpeed.doShow(operate, false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
updateTrainFixedPath() {
|
||||||
|
const stationCode = this.$store.state.training.roleDeviceCode;
|
||||||
|
commitOperate(menuOperate.CTC.updateTrainFixedPath2Station, { stationCode: stationCode }, 3).then(({valid, response}) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$nextTick(function () {
|
||||||
|
this.$store.dispatch('training/emitTipFresh');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
trainFixedPathPane() {
|
||||||
|
const stationCode = this.$store.state.training.roleDeviceCode;
|
||||||
|
this.$refs.trainFixedPathPane.doShow(stationCode);
|
||||||
|
},
|
||||||
|
bottomTableShowOrHidden() {
|
||||||
|
EventBus.$emit('bottomTableShowOrHidden');
|
||||||
|
},
|
||||||
|
undeveloped() {
|
||||||
|
this.$refs.menuBar.doClose();
|
||||||
|
this.$alert('实现中......', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
callback: action => {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style rel="stylesheet/scss" lang="scss">
|
||||||
|
#menuBarChengdu3{
|
||||||
|
line-height:30px;
|
||||||
|
}
|
||||||
|
#menuBarChengdu3 #menuBar .menu-li-block .label{
|
||||||
|
padding: 0px 30px 0px 5px !important;
|
||||||
|
}
|
||||||
|
.img-box{
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -50,9 +50,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="$store.state.training.prdType == '01'&& !isCtc" class="simulationDeviceInfo" />
|
<div v-if="$store.state.training.prdType == '01'&& !isCtc" class="simulationDeviceInfo" />
|
||||||
<!-- <div v-if="!isCtc && isDispStation" class="goDispatcherLoger">
|
|
||||||
<el-button size="small" @click="goDispatcherLoger">行车日志</el-button>
|
|
||||||
</div> -->
|
|
||||||
<menu-button v-if="!isCtc" ref="menuButton" :selected="selected" />
|
<menu-button v-if="!isCtc" ref="menuButton" :selected="selected" />
|
||||||
<menu-button-ctc v-if="isCtc" ref="menuButtonCtc" :selected="selected" />
|
<menu-button-ctc v-if="isCtc" ref="menuButtonCtc" :selected="selected" />
|
||||||
<menu-station-stand ref="menuStationStand" :selected="selected" />
|
<menu-station-stand ref="menuStationStand" :selected="selected" />
|
||||||
@ -92,7 +89,6 @@ import MenuButtonCtc from './menuButtonCtc';
|
|||||||
import RunplanPane from './runplanPane';
|
import RunplanPane from './runplanPane';
|
||||||
import StageRunplan from './dialog/stageRunplan';
|
import StageRunplan from './dialog/stageRunplan';
|
||||||
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
||||||
// import DispatcherLoger from './dispatcherLoger';
|
|
||||||
import PassiveAlarm from './passiveDialog/alarm';
|
import PassiveAlarm from './passiveDialog/alarm';
|
||||||
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
|
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
|
||||||
import PassiveTimeout from './passiveDialog/timeout';
|
import PassiveTimeout from './passiveDialog/timeout';
|
||||||
|
@ -1,355 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="menus" :style="{width: width + 'px'}">
|
|
||||||
<menu-bar ref="menuBar" :selected="selected" />
|
|
||||||
<menu-deplot-button ref="menuDeplotButton" />
|
|
||||||
<menu-station-stand ref="menuStationStand" :selected="selected" />
|
|
||||||
<menu-switch ref="menuSwitch" :selected="selected" />
|
|
||||||
<menu-signal ref="menuSignal" :selected="selected" />
|
|
||||||
<menu-section ref="menuSection" :selected="selected" />
|
|
||||||
<menu-train ref="menuTrain" :selected="selected" />
|
|
||||||
<menu-station ref="menuStation" :selected="selected" />
|
|
||||||
<passive-alarm ref="passiveAlarm" />
|
|
||||||
<passive-contorl ref="passiveControl" pop-class="fuzhou-01__systerm" />
|
|
||||||
<passive-Timeout ref="passiveTimeout" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { mapGetters } from 'vuex';
|
|
||||||
import MenuDeplotButton from './menuDeplotButton';
|
|
||||||
import MenuSignal from './menuSignal';
|
|
||||||
import MenuStationStand from './menuStationStand';
|
|
||||||
import MenuSwitch from './menuSwitch';
|
|
||||||
import MenuSection from './menuSection';
|
|
||||||
import MenuTrain from './menuTrain';
|
|
||||||
import MenuStation from './menuStation';
|
|
||||||
import MenuBar from './menuBar';
|
|
||||||
import PassiveAlarm from './passiveDialog/alarm';
|
|
||||||
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
|
|
||||||
import PassiveTimeout from './passiveDialog/timeout';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'Menus',
|
|
||||||
components: {
|
|
||||||
MenuBar,
|
|
||||||
MenuDeplotButton,
|
|
||||||
MenuSignal,
|
|
||||||
MenuSwitch,
|
|
||||||
MenuSection,
|
|
||||||
MenuStationStand,
|
|
||||||
MenuStation,
|
|
||||||
MenuTrain,
|
|
||||||
PassiveAlarm,
|
|
||||||
PassiveContorl,
|
|
||||||
PassiveTimeout
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
selected: {
|
|
||||||
type: Object,
|
|
||||||
default() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
...mapGetters('config', [
|
|
||||||
'width'
|
|
||||||
])
|
|
||||||
},
|
|
||||||
watch: {},
|
|
||||||
mounted() {
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.$store.dispatch('config/updateMenuBar');
|
|
||||||
const _that = this;
|
|
||||||
window.onclick = function (e) {
|
|
||||||
if (!_that.$store.state.training.trainingStart) {
|
|
||||||
_that.$refs.menuBar && _that.$refs.menuBar.blankClickClose();
|
|
||||||
}
|
|
||||||
_that.$refs.menuStationStand.doClose();
|
|
||||||
_that.$refs.menuSwitch.doClose();
|
|
||||||
_that.$refs.menuSignal.doClose();
|
|
||||||
_that.$refs.menuSection.doClose();
|
|
||||||
_that.$refs.menuTrain.doClose();
|
|
||||||
_that.$refs.menuStation.doClose();
|
|
||||||
};
|
|
||||||
});
|
|
||||||
},
|
|
||||||
beforeDestroy() {
|
|
||||||
window.onclick = function (e) {};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.menus .pop-menu {
|
|
||||||
background: #F0F0F0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menus .pop-menu span {
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menus .pop-menu .is-disabled span {
|
|
||||||
color: #B4B3B8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm {
|
|
||||||
overflow: hidden !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog {
|
|
||||||
background: rgba(100, 100, 100, 0.3);
|
|
||||||
border: 2px solid rgb(144, 144, 144, 0.8);
|
|
||||||
border-radius: 6px;
|
|
||||||
color: #000;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-dialog__header {
|
|
||||||
padding: 5px;
|
|
||||||
height: 26px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-dialog__footer {
|
|
||||||
background: #F0F0F0;
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-dialog__body {
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
padding-left: 5px;
|
|
||||||
padding-right: 5px;
|
|
||||||
margin: 0px 5px 5px;
|
|
||||||
border: 2px solid rgba(120, 121, 123, 0.5);
|
|
||||||
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
|
|
||||||
background: #F0F0F0;
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-dialog__title {
|
|
||||||
position: absolute;
|
|
||||||
top: 4px;
|
|
||||||
color: #000;
|
|
||||||
border-radius: 4px;
|
|
||||||
padding: 0px 2px;
|
|
||||||
height: 20px;
|
|
||||||
line-height: 20px
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-dialog__title::before {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
-webkit-filter: blur(10px);
|
|
||||||
filter: blur(10px);
|
|
||||||
height: 20px;
|
|
||||||
width: -webkit-fill-available;
|
|
||||||
background: rgba(128, 128, 128, 0.8);
|
|
||||||
z-index: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-dialog__headerbtn {
|
|
||||||
background: linear-gradient(#CD98A0, #C27D6E, #B63022, #C68770);
|
|
||||||
border: 1px solid #fff;
|
|
||||||
border-radius: 4px;
|
|
||||||
top: 4px;
|
|
||||||
right: 5px;
|
|
||||||
line-height: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-dialog__headerbtn .el-icon-close:before {
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-dialog__headerbtn .el-dialog__close {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-button {
|
|
||||||
height: 32px;
|
|
||||||
line-height: 32px;
|
|
||||||
padding: 0px;
|
|
||||||
width: 80px;
|
|
||||||
border: 2px outset #E2E2E2;
|
|
||||||
border-radius: 0px !important;
|
|
||||||
color: #000;
|
|
||||||
background: #F0F0F0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-button:focus span {
|
|
||||||
border: 1px dashed gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-button:active {
|
|
||||||
border: 2px inset #E2E2E2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-button:disabled {
|
|
||||||
border: 2px inset #E2E2E2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-button:disabled span {
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-input {
|
|
||||||
border: 2px inset #E9E9E9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-input .el-input__inner {
|
|
||||||
color: #000;
|
|
||||||
background: #fff !important;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px !important;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-input.is-disabled .el-input__inner {
|
|
||||||
background: #F0F0F0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-textarea {
|
|
||||||
border: 2px inset #E9E9E9;
|
|
||||||
border-radius: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-textarea .el-textarea__inner {
|
|
||||||
color: #000;
|
|
||||||
background: #fff !important;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px !important;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-textarea.is-disabled .el-textarea__inner {
|
|
||||||
background: #F0F0F0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-table {
|
|
||||||
border: 2px inset #E9E9E9;
|
|
||||||
color: #000 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-table .cell {
|
|
||||||
line-height: unset !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-table th.is-leaf {
|
|
||||||
background: #F0F0F0 !important;
|
|
||||||
border-right: 1px solid #BDBDBD !important;
|
|
||||||
border-bottom: 1px solid #BDBDBD !important;
|
|
||||||
color: #000 !important;
|
|
||||||
height: 20px !important;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-table tr td {
|
|
||||||
height: 20px !important;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-table .el-table__empty-text {
|
|
||||||
top: 15px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .current-row>td {
|
|
||||||
background: #3399FF !important;
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-checkbox__inner {
|
|
||||||
border: 1px inset #dcdfe6 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-checkbox__label {
|
|
||||||
color: #000 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__inner {
|
|
||||||
background: #E6E6E6 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__label {
|
|
||||||
color: #C5C9CC !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner {
|
|
||||||
background: #fff !important;
|
|
||||||
border: 1px inset #dcdfe6 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner::after {
|
|
||||||
position: absolute;
|
|
||||||
-webkit-box-sizing: content-box;
|
|
||||||
box-sizing: content-box;
|
|
||||||
content: "";
|
|
||||||
border: 1px solid #000;
|
|
||||||
border-left: 0;
|
|
||||||
border-top: 0;
|
|
||||||
height: 7px;
|
|
||||||
left: 4px;
|
|
||||||
top: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-radio__inner {
|
|
||||||
border: 1px inset #dcdfe6 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-radio__label {
|
|
||||||
color: #000 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner {
|
|
||||||
background: #fff !important;
|
|
||||||
border: 1px inset #dcdfe6 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner::after {
|
|
||||||
width: 4px;
|
|
||||||
height: 4px;
|
|
||||||
border-radius: 100%;
|
|
||||||
background-color: #000 !important;
|
|
||||||
position: absolute;
|
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-radio.is-disabled .el-radio__inner {
|
|
||||||
background: #E6E6E6 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-radio.is-disabled .el-radio__label {
|
|
||||||
color: #C5C9CC !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .base-label {
|
|
||||||
background: rgb(240 240 240);
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .el-form-item label {
|
|
||||||
font-weight: normal !important;
|
|
||||||
color: #000 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .context {
|
|
||||||
height: 100px;
|
|
||||||
border: 2px inset #E2E2E2;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .table {
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .notice {
|
|
||||||
margin-left: 62px;
|
|
||||||
line-height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fuzhou-01__systerm .el-dialog .button-group {
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,496 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="menuBarFuzhou">
|
|
||||||
<menu-bar ref="menuBar" :menu-normal="menuNormal" style="width:100%" />
|
|
||||||
<station-control-convert ref="stationControlConvert" pop-class="fuzhou-01__systerm" />
|
|
||||||
<password-box ref="passwordBox" @setLoginResult="getLoginResult" />
|
|
||||||
<view-train-id ref="viewTrainId" />
|
|
||||||
<view-name ref="viewName" />
|
|
||||||
<view-device ref="viewDevice" />
|
|
||||||
<!-- <train-add ref="trainAdd" /> -->
|
|
||||||
<train-transtalet ref="trainTranstalet" />
|
|
||||||
<!-- <train-delete ref="trainDelete" /> -->
|
|
||||||
<add-runplan-line ref="addRunplanLine" />
|
|
||||||
<delete-runplan-line ref="deleteRunplanLine" />
|
|
||||||
<manage-user ref="manageUser" />
|
|
||||||
<help-about ref="helpAbout" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
// import { mapGetters } from 'vuex';
|
|
||||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler.js';
|
|
||||||
import MenuBar from '@/jmapNew/theme/components/menus/menuBar';
|
|
||||||
import StationControlConvert from './menuDialog/stationControlConvert';
|
|
||||||
// import TrainAdd from './menuDialog/trainAdd';
|
|
||||||
import TrainTranstalet from './menuDialog/trainTranstalet';
|
|
||||||
// import TrainDelete from './menuDialog/trainDelete';
|
|
||||||
import AddRunplanLine from './menuDialog/addRunplanLine';
|
|
||||||
import DeleteRunplanLine from './menuDialog/deleteRunplanLine';
|
|
||||||
import PasswordBox from './menuDialog/passwordBox';
|
|
||||||
import ViewTrainId from './menuDialog/viewTrainId';
|
|
||||||
import ViewName from './menuDialog/viewName';
|
|
||||||
import ViewDevice from './menuDialog/viewDevice';
|
|
||||||
import ManageUser from './menuDialog/manageUser';
|
|
||||||
import HelpAbout from './menuDialog/helpAbout';
|
|
||||||
import { EventBus } from '@/scripts/event-bus';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'MenuBarFuzhou',
|
|
||||||
components: {
|
|
||||||
MenuBar,
|
|
||||||
StationControlConvert,
|
|
||||||
PasswordBox,
|
|
||||||
ViewTrainId,
|
|
||||||
ViewName,
|
|
||||||
ViewDevice,
|
|
||||||
// TrainAdd,
|
|
||||||
TrainTranstalet,
|
|
||||||
// TrainDelete,
|
|
||||||
AddRunplanLine,
|
|
||||||
DeleteRunplanLine,
|
|
||||||
ManageUser,
|
|
||||||
HelpAbout
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
menuNormal: {
|
|
||||||
Local: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.system'),
|
|
||||||
operate: OperationEvent.Command.mBar.system,
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.view'),
|
|
||||||
operate: OperationEvent.Command.mBar.check,
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.refresh'),
|
|
||||||
operate: OperationEvent.Command.mBar.fresh,
|
|
||||||
click: this.refresh,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.display'),
|
|
||||||
operate: OperationEvent.Command.mBar.view,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.setTrainIdDisplay'),
|
|
||||||
click: this.setTrainIdDisplay,
|
|
||||||
operate: OperationEvent.Command.view.setTrainIdDisplay
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.setNameDisplay'),
|
|
||||||
click: this.setNameDisplay,
|
|
||||||
operate: OperationEvent.Command.view.setNameDisplay
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.setDeviceDisplay'),
|
|
||||||
click: this.setDeviceDisplay,
|
|
||||||
operate: OperationEvent.Command.view.setDeviceDisplay
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.stationMapSwitch'),
|
|
||||||
operate: '',
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.controlModeSwitch'),
|
|
||||||
operate: OperationEvent.Command.mBar.remoteControl,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.toStationControl'),
|
|
||||||
click: this.turnToStationControl,
|
|
||||||
operate: OperationEvent.StationControl.requestStationControl.mbar
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.forcedStationControl'),
|
|
||||||
click: this.mandatoryStationControl,
|
|
||||||
operate: OperationEvent.StationControl.forcedStationControl.password
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.toCentralControl'),
|
|
||||||
click: this.conterStationControl,
|
|
||||||
operate: OperationEvent.StationControl.requestCentralControl.mbar,
|
|
||||||
force: true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.requestOperationArea'),
|
|
||||||
operate: OperationEvent.Command.mBar.requestZone,
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.historyQuery'),
|
|
||||||
operate: OperationEvent.Command.mBar.historyQuery,
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.userManage'),
|
|
||||||
operate: OperationEvent.Command.mBar.userManage,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.userManage'),
|
|
||||||
click: this.userManage,
|
|
||||||
operate: OperationEvent.Command.manage.userManage
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.help'),
|
|
||||||
operate: OperationEvent.Command.mBar.help,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.about'),
|
|
||||||
click: this.about,
|
|
||||||
operate: OperationEvent.Command.help.about
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
Center: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.system'),
|
|
||||||
operate: OperationEvent.Command.mBar.system,
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.view'),
|
|
||||||
operate: OperationEvent.Command.mBar.check,
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.refresh'),
|
|
||||||
operate: OperationEvent.Command.mBar.fresh,
|
|
||||||
click: this.refresh,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.display'),
|
|
||||||
operate: OperationEvent.Command.mBar.view,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.setTrainIdDisplay'),
|
|
||||||
click: this.setTrainIdDisplay,
|
|
||||||
operate: OperationEvent.Command.view.setTrainIdDisplay
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.setNameDisplay'),
|
|
||||||
click: this.setNameDisplay,
|
|
||||||
operate: OperationEvent.Command.view.setNameDisplay
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.setDeviceDisplay'),
|
|
||||||
click: this.setDeviceDisplay,
|
|
||||||
operate: OperationEvent.Command.view.setDeviceDisplay
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.stationMapSwitch'),
|
|
||||||
operate: '',
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.planCarOperation'),
|
|
||||||
operate: OperationEvent.Command.mBar.planTrain,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.addPlanCar'),
|
|
||||||
click: this.addPlanTrain,
|
|
||||||
operate: OperationEvent.Command.planTrain.addPlanTrain
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.panPlanCar'),
|
|
||||||
click: this.translatPlanTrain,
|
|
||||||
operate: OperationEvent.Command.planTrain.translatPlanTrain
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.deletePlanCar'),
|
|
||||||
click: this.delPlanTrain,
|
|
||||||
operate: OperationEvent.Command.planTrain.delPlanTrain
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.trainNumberMaintenance'),
|
|
||||||
operate: '',
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.controlModeSwitch'),
|
|
||||||
operate: OperationEvent.Command.mBar.remoteControl,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.toStationControl'),
|
|
||||||
click: this.turnToStationControl,
|
|
||||||
operate: OperationEvent.StationControl.requestStationControl.mbar,
|
|
||||||
force: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.forcedStationControl'),
|
|
||||||
click: this.mandatoryStationControl,
|
|
||||||
operate: OperationEvent.StationControl.forcedStationControl.password,
|
|
||||||
force: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.toCentralControl'),
|
|
||||||
click: this.conterStationControl,
|
|
||||||
operate: OperationEvent.StationControl.requestCentralControl.mbar
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.requestOperationArea'),
|
|
||||||
operate: OperationEvent.Command.mBar.requestZone,
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.schedulingLog'),
|
|
||||||
operate: '',
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.systemAnalysis'),
|
|
||||||
operate: '',
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.userManage'),
|
|
||||||
operate: OperationEvent.Command.mBar.userManage,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.userManage'),
|
|
||||||
click: this.userManage,
|
|
||||||
operate: OperationEvent.Command.manage.userManage
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.historyQuery'),
|
|
||||||
operate: OperationEvent.Command.mBar.historyQuery,
|
|
||||||
click: this.undeveloped,
|
|
||||||
children: [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.help'),
|
|
||||||
operate: OperationEvent.Command.mBar.help,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: this.$t('menu.menuBar.about'),
|
|
||||||
click: this.about,
|
|
||||||
operate: OperationEvent.Command.help.about
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
// computed: {
|
|
||||||
// ...mapGetters('map', [
|
|
||||||
// 'stationList'
|
|
||||||
// ])
|
|
||||||
// },
|
|
||||||
methods: {
|
|
||||||
// 转为站控
|
|
||||||
turnToStationControl(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
this.$refs.stationControlConvert.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 强制转为站控
|
|
||||||
mandatoryStationControl(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
this.$refs.passwordBox.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 请求中控
|
|
||||||
conterStationControl(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
this.$refs.stationControlConvert.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 设置列车识别号显示
|
|
||||||
setTrainIdDisplay(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
this.$refs.viewTrainId.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 设置设备显示
|
|
||||||
setNameDisplay(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
this.$refs.viewName.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 设置名称显示
|
|
||||||
setDeviceDisplay(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
this.$refs.viewDevice.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 添加计划车
|
|
||||||
addPlanTrain(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
// this.$refs.trainAdd.doShow(operate);
|
|
||||||
this.$refs.addRunplanLine.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 平移计划车
|
|
||||||
translatPlanTrain(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
this.$refs.trainTranstalet.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 删除计划车
|
|
||||||
delPlanTrain(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
// this.$refs.trainDelete.doShow(operate);
|
|
||||||
this.$refs.deleteRunplanLine.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 用户管理
|
|
||||||
userManage(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
this.$refs.manageUser.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 关于
|
|
||||||
about(order) {
|
|
||||||
const operate = {
|
|
||||||
operation: order.operation
|
|
||||||
};
|
|
||||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
|
||||||
if (valid) {
|
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
|
||||||
this.$refs.helpAbout.doShow(operate);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// 刷新
|
|
||||||
refresh() {
|
|
||||||
|
|
||||||
EventBus.$emit('refresh');
|
|
||||||
},
|
|
||||||
getLoginResult(operate) {
|
|
||||||
/** 密码校验*/
|
|
||||||
if (operate.operation == OperationEvent.StationControl.forcedStationControl.passwordConfirm.operation) {
|
|
||||||
if (operate.success) {
|
|
||||||
/** 校验成功*/
|
|
||||||
this.$refs.stationControlConvert.doShow({ operation: OperationEvent.StationControl.forcedStationControl.mbar.operation });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
undeveloped() {
|
|
||||||
this.$refs.menuBar.doClose();
|
|
||||||
this.$alert(this.$t('menu.menuBar.implemented'), this.$t('global.tips'), {
|
|
||||||
confirmButtonText: this.$t('global.confirm'),
|
|
||||||
callback: action => {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
blankClickClose() {
|
|
||||||
this.$refs.menuBar.doClose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style rel="stylesheet/scss" lang="scss">
|
|
||||||
#menuBarFuzhou{
|
|
||||||
line-height:30px;
|
|
||||||
}
|
|
||||||
#menuBarChengdu3 #menuBar .menu-li-block .label{
|
|
||||||
padding: 0px 30px 0px 5px !important;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -6,7 +6,7 @@ export default class Command {
|
|||||||
this.isError = false;
|
this.isError = false;
|
||||||
this.isOver = false;
|
this.isOver = false;
|
||||||
}
|
}
|
||||||
|
// 对比 参数列表
|
||||||
toFound(definition, wholeParam) {
|
toFound(definition, wholeParam) {
|
||||||
this.id = definition.operate;
|
this.id = definition.operate;
|
||||||
(definition.paramList || []).forEach(param => {
|
(definition.paramList || []).forEach(param => {
|
||||||
|
@ -154,6 +154,7 @@ class CommandHandle {
|
|||||||
getCommand(cmdType, wholeParam) {
|
getCommand(cmdType, wholeParam) {
|
||||||
if (cmdType) {
|
if (cmdType) {
|
||||||
const command = new Command();
|
const command = new Command();
|
||||||
|
// 获取指令定义
|
||||||
const definition = this.getDefinition(cmdType);
|
const definition = this.getDefinition(cmdType);
|
||||||
if (definition) {
|
if (definition) {
|
||||||
command.toFound(definition, wholeParam);
|
command.toFound(definition, wholeParam);
|
||||||
|
@ -69,7 +69,7 @@ class Handler {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// 获取所有参数列表params
|
||||||
getWholeParam() {
|
getWholeParam() {
|
||||||
const whole = {};
|
const whole = {};
|
||||||
(this.operations || {}).forEach(elem => { Object.assign(whole, elem.param || {}); });
|
(this.operations || {}).forEach(elem => { Object.assign(whole, elem.param || {}); });
|
||||||
@ -121,19 +121,19 @@ class Handler {
|
|||||||
this.afterValid(operation, valid).then(()=>{
|
this.afterValid(operation, valid).then(()=>{
|
||||||
rtn.valid = valid;
|
rtn.valid = valid;
|
||||||
if (operation.cmdType && valid) {
|
if (operation.cmdType && valid) {
|
||||||
const command = this.getCommand(operation);
|
// const command = this.getCommand(operation);
|
||||||
if (command) {
|
// if (command) {
|
||||||
CommandHandler.execute(command.id, command.get()).then(response => {
|
CommandHandler.execute(operation.cmdType.value, this.getWholeParam()).then(response => {
|
||||||
rtn.response = response;
|
rtn.response = response;
|
||||||
resolve(rtn);
|
resolve(rtn);
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
reject(error);
|
reject(error);
|
||||||
});
|
});
|
||||||
} else {
|
// } else {
|
||||||
rtn.response = '获取指令失败,暂无指令或参数传值不正确,请检查指令字典';
|
// rtn.response = '获取指令失败,暂无指令或参数传值不正确,请检查指令字典';
|
||||||
reject(rtn);
|
// reject(rtn);
|
||||||
}
|
// }
|
||||||
} else {
|
} else {
|
||||||
resolve(rtn);
|
resolve(rtn);
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
<div :id="ibpId" v-loading="loading" :style="{ width: canvasWidth+'px', height: canvasHeight +'px',background:'#000' }" class="ibp-canvas" />
|
<div :id="ibpId" v-loading="loading" :style="{ width: canvasWidth+'px', height: canvasHeight +'px',background:'#000' }" class="ibp-canvas" />
|
||||||
<el-button-group class="ibp-button">
|
<el-button-group class="ibp-button">
|
||||||
<el-button v-if="moreScreen" type="primary" @click="switchOffset">切换</el-button>
|
<el-button v-if="moreScreen" type="primary" @click="switchOffset">切换</el-button>
|
||||||
<el-button v-if="showBackButton" type="primary" @click="back">{{ $t('global.back') }}</el-button>
|
<!-- <el-button v-if="showBackButton" type="primary" @click="back">{{ $t('global.back') }}</el-button>-->
|
||||||
<el-button v-if="$route.query.noPreLogout" type="primary" @click="quit">退出</el-button>
|
<!-- <el-button v-if="$route.query.noPreLogout" type="primary" @click="quit">退出</el-button>-->
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
|
|
||||||
<template v-for="alarm in alarmList">
|
<template v-for="alarm in alarmList">
|
||||||
@ -20,7 +20,6 @@ import Vue from 'vue';
|
|||||||
import IbpPan from '@/ibp/ibpPan';
|
import IbpPan from '@/ibp/ibpPan';
|
||||||
import { parser } from '@/ibp/utils/parser';
|
import { parser } from '@/ibp/utils/parser';
|
||||||
import { mapGetters } from 'vuex';
|
import { mapGetters } from 'vuex';
|
||||||
import { exitFullscreen } from '@/utils/screen';
|
|
||||||
import { handleIbpPress, handleIbpRelease } from '@/api/simulation';
|
import { handleIbpPress, handleIbpRelease } from '@/api/simulation';
|
||||||
import { IbpOperation } from '@/scripts/ConstDic';
|
import { IbpOperation } from '@/scripts/ConstDic';
|
||||||
import { creatSubscribe, clearSubscribe, displayTopic} from '@/utils/stomp';
|
import { creatSubscribe, clearSubscribe, displayTopic} from '@/utils/stomp';
|
||||||
@ -293,22 +292,22 @@ export default {
|
|||||||
const height = this.size ? this.size.height : this.$store.state.app.height;
|
const height = this.size ? this.size.height : this.$store.state.app.height;
|
||||||
this.$store.dispatch('config/resize', { width: width, height: height });
|
this.$store.dispatch('config/resize', { width: width, height: height });
|
||||||
},
|
},
|
||||||
back() {
|
// back() {
|
||||||
this.group = this.$route.query.group;
|
// this.group = this.$route.query.group;
|
||||||
this.$store.dispatch('training/over').then(() => {
|
// this.$store.dispatch('training/over').then(() => {
|
||||||
if (this.$route.query.projectDevice) {
|
// if (this.$route.query.projectDevice) {
|
||||||
this.$store.dispatch('LogOut').then(() => {
|
// this.$store.dispatch('LogOut').then(() => {
|
||||||
location.reload();
|
// location.reload();
|
||||||
});
|
// });
|
||||||
} else {
|
// } else {
|
||||||
history.go(-1);
|
// history.go(-1);
|
||||||
exitFullscreen();
|
// exitFullscreen();
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
},
|
// },
|
||||||
quit() {
|
// quit() {
|
||||||
window.close();
|
// window.close();
|
||||||
},
|
// },
|
||||||
ibpDestroy() {
|
ibpDestroy() {
|
||||||
if (this.$ibp) {
|
if (this.$ibp) {
|
||||||
this.$ibp.dispose();
|
this.$ibp.dispose();
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<el-row style="height: 100%;">
|
<el-row style="height: 100%;" class="dispatcher-cmd">
|
||||||
<el-col :span="5" style="height: 100%;">
|
<el-col :span="5" style="height: 100%;">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<el-tabs v-model="activeTab" type="border-card" @tab-click="tabClick">
|
<el-tabs v-model="activeTab" type="border-card" @tab-click="tabClick">
|
||||||
@ -1098,8 +1098,9 @@ export default {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
// .dispatcher-cmd{
|
.dispatcher-cmd{
|
||||||
// }
|
background: #ECE9D8;
|
||||||
|
}
|
||||||
.main {
|
.main {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
.left {
|
.left {
|
||||||
@ -1208,14 +1209,195 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<style>
|
<style lang="scss">
|
||||||
.dispatcher-cmd .el-dialog .el-dialog__body {
|
|
||||||
padding: 5px !important;
|
|
||||||
}
|
|
||||||
.dispatcher-cmd .el-dialog {
|
|
||||||
margin-top: 8vh !important;
|
|
||||||
}
|
|
||||||
.dispatcher-cmd .el-tabs--border-card>.el-tabs__content {
|
.dispatcher-cmd .el-tabs--border-card>.el-tabs__content {
|
||||||
padding: 5px !important;
|
padding: 5px !important;
|
||||||
}
|
}
|
||||||
|
.dispatcher-cmd span {
|
||||||
|
font-size: 13px !important;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
.dispatcher-cmd span .el-icon-arrow-up{
|
||||||
|
line-height: 18px;
|
||||||
|
}
|
||||||
|
.dispatcher-cmd .el-button {
|
||||||
|
height: 24px;
|
||||||
|
line-height: 22px;
|
||||||
|
padding: 0px;
|
||||||
|
width: 80px;
|
||||||
|
border: 2px outset #E2E2E2;
|
||||||
|
border-radius: 4px !important;
|
||||||
|
color: #000;
|
||||||
|
background: #F0F0F0;
|
||||||
|
}
|
||||||
|
.dispatcher-cmd .expand {
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-button:focus span {
|
||||||
|
border: 1px dashed gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-button:active {
|
||||||
|
border: 2px inset #E2E2E2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-button:disabled {
|
||||||
|
border: 2px inset #E2E2E2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-button:disabled span {
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-input {
|
||||||
|
border: 2px inset #E9E9E9;
|
||||||
|
height: 22px !important;
|
||||||
|
line-height: 22px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-input__inner {
|
||||||
|
color: #000;
|
||||||
|
background: #fff !important;
|
||||||
|
border: 0px;
|
||||||
|
border-radius: 0px !important;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 22px !important;
|
||||||
|
line-height: 22px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-input.is-disabled .el-input__inner {
|
||||||
|
background: #F0F0F0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-textarea {
|
||||||
|
border: 2px inset #E9E9E9;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-textarea .el-textarea__inner {
|
||||||
|
color: #000;
|
||||||
|
background: #fff !important;
|
||||||
|
border: 0px;
|
||||||
|
border-radius: 0px !important;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-textarea.is-disabled .el-textarea__inner {
|
||||||
|
background: #F0F0F0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-table--border th.gutter {
|
||||||
|
background: #EBEADB !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-table {
|
||||||
|
border: 2px inset #E9E9E9;
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-table .cell {
|
||||||
|
height: 22px;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-table th.is-leaf {
|
||||||
|
background: #F0F0F0 !important;
|
||||||
|
border-right: 1px solid #BDBDBD !important;
|
||||||
|
border-bottom: 1px solid #BDBDBD !important;
|
||||||
|
color: #000 !important;
|
||||||
|
height: 20px !important;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-table tr td {
|
||||||
|
height: 20px !important;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-table .el-table__empty-text {
|
||||||
|
top: 15px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .current-row>td {
|
||||||
|
background: #3399FF !important;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-checkbox__inner {
|
||||||
|
border: 1px inset #dcdfe6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-checkbox__label {
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-checkbox.is-disabled .el-checkbox__inner {
|
||||||
|
background: #E6E6E6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-checkbox.is-disabled .el-checkbox__label {
|
||||||
|
color: #C5C9CC !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-checkbox__input.is-checked .el-checkbox__inner {
|
||||||
|
background: #fff !important;
|
||||||
|
border: 1px inset #dcdfe6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-checkbox__input.is-checked .el-checkbox__inner::after {
|
||||||
|
position: absolute;
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
content: "";
|
||||||
|
border: 1px solid #000;
|
||||||
|
border-left: 0;
|
||||||
|
border-top: 0;
|
||||||
|
height: 7px;
|
||||||
|
left: 4px;
|
||||||
|
top: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-radio__inner {
|
||||||
|
border: 1px inset #dcdfe6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-radio__label {
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-radio__input.is-checked .el-radio__inner {
|
||||||
|
background: #fff !important;
|
||||||
|
border: 1px inset #dcdfe6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-radio__input.is-checked .el-radio__inner::after {
|
||||||
|
width: 4px;
|
||||||
|
height: 4px;
|
||||||
|
border-radius: 100%;
|
||||||
|
background-color: #000 !important;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-radio.is-disabled .el-radio__inner {
|
||||||
|
background: #E6E6E6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-radio.is-disabled .el-radio__label {
|
||||||
|
color: #C5C9CC !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .base-label {
|
||||||
|
background: rgba(0, 0, 0, 1);
|
||||||
|
position: relative;
|
||||||
|
left: -15px;
|
||||||
|
top: -18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dispatcher-cmd .el-form-item label {
|
||||||
|
font-weight: normal !important;
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
155
src/views/newMap/display/terminals/dispatcherManage.vue
Normal file
155
src/views/newMap/display/terminals/dispatcherManage.vue
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
<template>
|
||||||
|
<div class="dispatcher-station">
|
||||||
|
<div class="station-title">上海局CTC系统-行调台-控制工具条</div>
|
||||||
|
<div class="main">
|
||||||
|
<div class="menu-list">
|
||||||
|
<el-button v-for="(item, index) in menuList" :key="index" class="btn" type="text" @click="clickMenu(item.refPath)">{{ item.label }}</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="btn-box">
|
||||||
|
<div v-for="(item, index) in buttonList" :key="index" class="btn-div" @click="doShow(item.refPath)">
|
||||||
|
<div class="img">
|
||||||
|
<el-image
|
||||||
|
style="width: 83px; height: 83px"
|
||||||
|
:src="item.imgUrl"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="text">{{ item.label }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ZhanchangIcon from '@/assets/dispatcherStation/zhanchang.png';
|
||||||
|
import YunxingIcon from '@/assets/dispatcherStation/yunxing.png';
|
||||||
|
import CmdIcon from '@/assets/dispatcherStation/cmd.png';
|
||||||
|
export default {
|
||||||
|
name: 'DispatcherManage',
|
||||||
|
components: {
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
stationCode:'',
|
||||||
|
groupModel: '',
|
||||||
|
hasUnsubscribe:false,
|
||||||
|
buttonList: [
|
||||||
|
{
|
||||||
|
label: '运行图',
|
||||||
|
refPath: 'schedulingPlan',
|
||||||
|
imgUrl: YunxingIcon
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '调度命令',
|
||||||
|
refPath: 'dispatchingCommand',
|
||||||
|
imgUrl: CmdIcon
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '站场图',
|
||||||
|
refPath: 'dispatchWork',
|
||||||
|
imgUrl: ZhanchangIcon
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '数据更新',
|
||||||
|
refPath: '',
|
||||||
|
imgUrl: CmdIcon
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '时间同步',
|
||||||
|
refPath: '',
|
||||||
|
imgUrl: CmdIcon
|
||||||
|
}
|
||||||
|
],
|
||||||
|
menuList: [
|
||||||
|
{
|
||||||
|
label: '登录(L)',
|
||||||
|
refPath: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '应用程序(T)',
|
||||||
|
refPath: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
group() {
|
||||||
|
return this.$route.query.group;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.groupModel = this.$route.query.group;
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
doShow(refPath) {
|
||||||
|
if (!refPath) {
|
||||||
|
this.$alert('实现中......', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
callback: action => {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
this.$emit('loadingChange');
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$emit('pictureChange', refPath);
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
clickMenu(refPath) {
|
||||||
|
this.$alert('实现中......', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
callback: action => {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.dispatcher-station{
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
background: #E1EDF9;
|
||||||
|
.station-title {
|
||||||
|
height: 30px;
|
||||||
|
padding: 0 10px;
|
||||||
|
line-height: 30px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.main {
|
||||||
|
margin: 5px;
|
||||||
|
height: calc(100% - 40px);
|
||||||
|
border: 1px solid #000;
|
||||||
|
background: #C0C0C0;
|
||||||
|
.menu-list {
|
||||||
|
width: 100%;
|
||||||
|
padding-left: 50px;
|
||||||
|
background: #D9DFF0;
|
||||||
|
.el-button {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn-box {
|
||||||
|
height: 100%;
|
||||||
|
border-top: 2px solid #808080;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
padding: 20px 10px;
|
||||||
|
.btn-div {
|
||||||
|
width: 120px;
|
||||||
|
height: 100px;
|
||||||
|
text-align: center;
|
||||||
|
.text {
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -12,7 +12,15 @@
|
|||||||
<big-train-runplan-manage v-else-if="picture === 'trafficManageTerminal'" ref="bigTrainRunplanManage" />
|
<big-train-runplan-manage v-else-if="picture === 'trafficManageTerminal'" ref="bigTrainRunplanManage" />
|
||||||
<dispatch-cmd v-else-if="picture === 'dispatchingCommand'" ref="dispatchCmd" />
|
<dispatch-cmd v-else-if="picture === 'dispatchingCommand'" ref="dispatchCmd" />
|
||||||
<dispatcher-loger v-else-if="picture === 'schedulingPlan'" ref="dispatcherLoger" />
|
<dispatcher-loger v-else-if="picture === 'schedulingPlan'" ref="dispatcherLoger" />
|
||||||
<terminal-menu v-if="menuShow" ref="terminalMenu" @pictureChange="pictureChange" @popupTerminalShow="popupTerminalShow" @loadingChange="loadingChange" />
|
<psl-terminal v-else-if="picture === 'psl'" ref="pslTerminal" />
|
||||||
|
<dispatcher-manage v-else-if="picture === 'dispatcherManage'" ref="dispatcherManage" @pictureChange="pictureChange" @loadingChange="loadingChange" />
|
||||||
|
<terminal-menu
|
||||||
|
v-if="menuShow"
|
||||||
|
ref="terminalMenu"
|
||||||
|
:picture="picture"
|
||||||
|
@pictureChange="pictureChange"
|
||||||
|
@loadingChange="loadingChange"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -34,6 +42,8 @@ import IbpPlate from '@/views/ibp/ibpsystem/index';
|
|||||||
import TrafficTerminalWork from './trafficTerminalWork';
|
import TrafficTerminalWork from './trafficTerminalWork';
|
||||||
import BigTrainRunplanManage from '@/views/bigTrainRunplanManage/index';
|
import BigTrainRunplanManage from '@/views/bigTrainRunplanManage/index';
|
||||||
import IscsSystem from '@/views/iscs/iscsSystemNew/index';
|
import IscsSystem from '@/views/iscs/iscsSystemNew/index';
|
||||||
|
import PslTerminal from './psl';
|
||||||
|
import DispatcherManage from './dispatcherManage';
|
||||||
export default {
|
export default {
|
||||||
name: 'Index',
|
name: 'Index',
|
||||||
components: {
|
components: {
|
||||||
@ -49,7 +59,9 @@ export default {
|
|||||||
TrafficTerminalWork,
|
TrafficTerminalWork,
|
||||||
DigitalStand,
|
DigitalStand,
|
||||||
BigTrainRunplanManage,
|
BigTrainRunplanManage,
|
||||||
IscsSystem
|
IscsSystem,
|
||||||
|
PslTerminal,
|
||||||
|
DispatcherManage
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -123,7 +135,7 @@ export default {
|
|||||||
const header = {group: this.group || '', 'X-Token': getToken()};
|
const header = {group: this.group || '', 'X-Token': getToken()};
|
||||||
await creatSubscribe(`${displayTopic}\/${this.group}`, header, defaultCallback);
|
await creatSubscribe(`${displayTopic}\/${this.group}`, header, defaultCallback);
|
||||||
await creatSubscribe(getTopic('STATE', this.group), header, stateCallback);
|
await creatSubscribe(getTopic('STATE', this.group), header, stateCallback);
|
||||||
if (this.picture === 'ctc') {
|
if (this.picture === 'trafficTerminal') {
|
||||||
await creatSubscribe(getTopic('CTC', this.group), header, defaultCallback);
|
await creatSubscribe(getTopic('CTC', this.group), header, defaultCallback);
|
||||||
}
|
}
|
||||||
await this.$store.dispatch('training/setHasSubscribed');
|
await this.$store.dispatch('training/setHasSubscribed');
|
||||||
@ -131,7 +143,7 @@ export default {
|
|||||||
clearSubscribe() {
|
clearSubscribe() {
|
||||||
clearSubscribe(`${displayTopic}\/${this.group}`);
|
clearSubscribe(`${displayTopic}\/${this.group}`);
|
||||||
clearSubscribe(getTopic('STATE', this.group));
|
clearSubscribe(getTopic('STATE', this.group));
|
||||||
if (this.picture === 'ctc') {
|
if (this.picture === 'trafficTerminal') {
|
||||||
clearSubscribe(getTopic('CTC', this.group));
|
clearSubscribe(getTopic('CTC', this.group));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
218
src/views/newMap/display/terminals/psl.vue
Normal file
218
src/views/newMap/display/terminals/psl.vue
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
<template>
|
||||||
|
<div style="background: #939FAC;width: 100%;height: 100%">
|
||||||
|
<div style="width: 50%;position: relative;left: 25%;">
|
||||||
|
<div class="psl-title">
|
||||||
|
<div>PSL</div>
|
||||||
|
<el-select v-model="standCode" style="margin-left: 10px;">
|
||||||
|
<el-option
|
||||||
|
v-for="item in standList"
|
||||||
|
:key="item.code"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.code"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
<div class="psl-content">
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">所有滑动门/应急门关闭且锁紧指示灯</div>
|
||||||
|
<img :src="getIcon('top', indicators.qbgmLight ? 'on' : 'off')">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell">
|
||||||
|
<div class="btn-text">PSL操作指示灯</div>
|
||||||
|
<img :src="getIcon('red', indicators.pslczLight ? 'on' : 'off')">
|
||||||
|
</div>
|
||||||
|
<div class="cell">
|
||||||
|
<div class="btn-text">互锁解除指示灯</div>
|
||||||
|
<img :src="getIcon('red', indicators.hsjcLight ? 'on' : 'off')">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell">
|
||||||
|
<div class="btn-text">开门状态指示灯</div>
|
||||||
|
<img :src="getIcon('red', indicators.kmLight ? 'on' : 'off')">
|
||||||
|
</div>
|
||||||
|
<div class="cell">
|
||||||
|
<div class="btn-text">关门状态指示灯</div>
|
||||||
|
<img :src="getIcon('green', indicators.gmLight ? 'on' : 'off')">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">禁止</div>
|
||||||
|
<img
|
||||||
|
:src="getIcon('key')"
|
||||||
|
:class="['key', { 'key-on': indicators.yxjzKey }]"
|
||||||
|
@click="btnClickHandler('YXJZ')"
|
||||||
|
>
|
||||||
|
<div class="btn-text-opt">允许</div>
|
||||||
|
</div>
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">禁止</div>
|
||||||
|
<img
|
||||||
|
:src="getIcon('key')"
|
||||||
|
:class="['key', { 'key-on': indicators.hsjcKey }]"
|
||||||
|
@click="btnClickHandler('HSJC')"
|
||||||
|
>
|
||||||
|
<div class="btn-text-opt">互锁解除</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">开门按钮</div>
|
||||||
|
<img :src="getIcon('red', 'btn')" @click="btnClickHandler('KM')">
|
||||||
|
</div>
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">关门按钮</div>
|
||||||
|
<img :src="getIcon('green', 'btn')" @click="btnClickHandler('GM')">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-row">
|
||||||
|
<div class="cell btn">
|
||||||
|
<div class="btn-text">试灯按钮</div>
|
||||||
|
<img
|
||||||
|
class="btn-sd btn-img"
|
||||||
|
:src="getIcon('green', 'btn')"
|
||||||
|
@mousedown.left="btnClickHandler('SD')"
|
||||||
|
@mouseup.left="btnClickHandler('SD')"
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import icons from '@/assets/psl_images/psl_icons';
|
||||||
|
import { getPslStatus, pressPslButton } from '@/api/simulation';
|
||||||
|
import {mapGetters} from 'vuex';
|
||||||
|
export default {
|
||||||
|
name: 'PSL',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
indicators: {
|
||||||
|
qbgmLight: true,
|
||||||
|
pslczLight: false,
|
||||||
|
hsjcLight: false,
|
||||||
|
kmLight: false,
|
||||||
|
gmLight: false,
|
||||||
|
yxjzKey: false,
|
||||||
|
hsjcKey: false
|
||||||
|
},
|
||||||
|
standCode: '',
|
||||||
|
standList: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters('map', [
|
||||||
|
'stationStandList'
|
||||||
|
]),
|
||||||
|
group() {
|
||||||
|
return this.$route.query.group;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
'$store.state.socket.simulationPslStatus': function(val) {
|
||||||
|
if (val && val[this.standCode]) {
|
||||||
|
Object.assign(this.indicators, val[this.standCode]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
const stationCode = this.$store.state.training.roleDeviceCode;
|
||||||
|
this.standCode = '';
|
||||||
|
this.standList = [];
|
||||||
|
this.stationStandList.forEach(stand => {
|
||||||
|
if (stand.stationCode === stationCode) {
|
||||||
|
let dir = '';
|
||||||
|
if (this.$store.state.map.mapConfig.upRight) {
|
||||||
|
dir = stand.right ? '上行' : '下行';
|
||||||
|
} else {
|
||||||
|
dir = stand.right ? '下行' : '上行';
|
||||||
|
}
|
||||||
|
this.standList.push({ code: stand.code, name: dir + '-' + stand.name });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.standCode = this.standList[0].code;
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
doShow(selected) {
|
||||||
|
this.dialogShow = true;
|
||||||
|
this.$nextTick(function() {
|
||||||
|
this.$store.dispatch('training/emitTipFresh');
|
||||||
|
});
|
||||||
|
this.standCode = selected.code;
|
||||||
|
this.initData(this.group, selected.code);
|
||||||
|
},
|
||||||
|
|
||||||
|
initData(group, standCode) {
|
||||||
|
getPslStatus(group, standCode)
|
||||||
|
.then(resp => {
|
||||||
|
if (resp.data) {
|
||||||
|
this.indicators = resp.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {});
|
||||||
|
},
|
||||||
|
|
||||||
|
doClose() {
|
||||||
|
this.loading = false;
|
||||||
|
this.dialogShow = false;
|
||||||
|
this.$store.dispatch('training/emitTipFresh');
|
||||||
|
},
|
||||||
|
getIcon(type, status) {
|
||||||
|
return status !== undefined ? icons[`${type}_${status}`] : icons[type];
|
||||||
|
},
|
||||||
|
btnClickHandler(btnType) {
|
||||||
|
pressPslButton(this.group, this.standCode, btnType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.psl-title {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 50px;
|
||||||
|
padding: 50px;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.btn-text {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.psl-content {
|
||||||
|
.content-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
.cell {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
width: 120px;
|
||||||
|
height: 100px;
|
||||||
|
.key {
|
||||||
|
transition: 0.1s;
|
||||||
|
}
|
||||||
|
.key-on {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
.btn-text-opt {
|
||||||
|
position: absolute;
|
||||||
|
left: 80%;
|
||||||
|
top: 35%;
|
||||||
|
width: 100%;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,19 +1,24 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div v-if="isShow" class="terminalList">
|
<div v-if="isShow" class="terminalList">
|
||||||
<div v-for="(eachTerminal,index) in terminalList" :key="index" :class="active==eachTerminal.code?'eachTerminal active':'eachTerminal'" @click="eachTerminal.click(eachTerminal.code)">{{ eachTerminal.name }}</div>
|
<div v-for="(eachTerminal,index) in terminalList" :key="index" :class="picture==eachTerminal.code?'eachTerminal active':'eachTerminal'" @click="eachTerminal.click(eachTerminal.code)">{{ eachTerminal.name }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name:'TerminalList',
|
name:'TerminalList',
|
||||||
components: {
|
props: {
|
||||||
|
picture: {
|
||||||
|
type: String,
|
||||||
|
default() {
|
||||||
|
return 'localWork';
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
terminalList:[],
|
terminalList:[],
|
||||||
active:'localWork',
|
|
||||||
centralizedStationList: [],
|
centralizedStationList: [],
|
||||||
centralizedStationMap: {},
|
centralizedStationMap: {},
|
||||||
commonTerminal: [
|
commonTerminal: [
|
||||||
@ -33,6 +38,12 @@ export default {
|
|||||||
],
|
],
|
||||||
terminalMap:{
|
terminalMap:{
|
||||||
'datie': [
|
'datie': [
|
||||||
|
{
|
||||||
|
name: '行调台',
|
||||||
|
code: 'dispatcherManage',
|
||||||
|
roleList: ['DISPATCHER'],
|
||||||
|
click: this.changePictureShow
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: '车务终端',
|
name: '车务终端',
|
||||||
code: 'trafficTerminal',
|
code: 'trafficTerminal',
|
||||||
@ -95,6 +106,12 @@ export default {
|
|||||||
code: 'digitalStand',
|
code: 'digitalStand',
|
||||||
roleList: ['STATION_SUPERVISOR'],
|
roleList: ['STATION_SUPERVISOR'],
|
||||||
click: this.changePictureShow
|
click: this.changePictureShow
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'PSL',
|
||||||
|
code: 'psl',
|
||||||
|
roleList: ['STATION_SUPERVISOR'],
|
||||||
|
click: this.changePictureShow
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -141,14 +158,7 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
noEvent(code) {
|
noEvent(code) {
|
||||||
this.active = code;
|
this.$emit('pictureChange', code);
|
||||||
},
|
|
||||||
schedulingPlan(code) {
|
|
||||||
this.active = code;
|
|
||||||
this.$emit('popupTerminalShow', 'dispatcherLoger');
|
|
||||||
},
|
|
||||||
close() {
|
|
||||||
this.active = 0;
|
|
||||||
},
|
},
|
||||||
initPictureShow() {
|
initPictureShow() {
|
||||||
const localWorkRoleList = ['STATION_SUPERVISOR', 'STATION_ASSISTANT', 'STATION_MASTER', 'STATION_SIGNALER', 'STATION_PASSENGER', 'STATION_SWITCH_MAN',
|
const localWorkRoleList = ['STATION_SUPERVISOR', 'STATION_ASSISTANT', 'STATION_MASTER', 'STATION_SIGNALER', 'STATION_PASSENGER', 'STATION_SWITCH_MAN',
|
||||||
@ -163,7 +173,6 @@ export default {
|
|||||||
|
|
||||||
},
|
},
|
||||||
changePictureShow(code) {
|
changePictureShow(code) {
|
||||||
this.active = code;
|
|
||||||
this.$emit('loadingChange');
|
this.$emit('loadingChange');
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.$emit('pictureChange', code);
|
this.$emit('pictureChange', code);
|
||||||
|
Loading…
Reference in New Issue
Block a user