rt-sim-training-client/src/views/newMap/newMapdraft/mapoperate/index.vue

488 lines
15 KiB
Vue
Raw Normal View History

2019-11-29 12:51:58 +08:00
<template>
<transition name="el-zoom-in-center">
<div class="map-control">
<div class="border-card">
<div class="clearfix">
<span>
{{ $t('map.mapName') }}
<b>{{ mapInfo.name }}</b>
</span>
<el-button v-if="isSave" type="text" style="float: right; padding: 3px 0" :disabled="mapSaveing" @click="saveMapEvent">{{ $t('map.save') }}</el-button>
<el-button v-if="isSave" type="text" style="float: right; padding: 3px 0; margin-right: 5px;" :disabled="mapSaveing" @click="verifyMapEvent">{{ $t('map.dataVerification') }}</el-button>
<el-button type="text" style="float: right; padding: 3px 0; margin-right: 5px;" @click="dataRelation">{{ $t('map.advanced') }}</el-button>
<el-button type="text" style="float: right; padding: 3px 0; margin-right: 5px;" @click="showMap">{{ $t('map.viewLayer') }}</el-button>
</div>
<el-tabs v-model="enabledTab" class="mapEdit" type="card">
<el-tab-pane :label="$t('map.section')" class="tab_pane_box" name="Section">
<section-draft
ref="Section"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@fieldSelect="fieldSelect"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.switch')" class="tab_pane_box" name="Switch">
<switch-draft
ref="Switch"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
2019-12-03 14:42:00 +08:00
@fieldSelectSwitchSection="fieldSelectSwitchSection"
2019-11-29 12:51:58 +08:00
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.station')" class="tab_pane_box" name="Station">
<station-draft
ref="Station"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@stationSectionCode="stationEnabledTab"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.signal')" class="tab_pane_box" name="Signal">
<signal-draft
ref="Signal"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@signalSectionCode="selectEnabledTab"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.platform')" class="tab_pane_box" name="StationStand">
<station-stand-draft
ref="StationStand"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
2019-12-04 13:38:32 +08:00
@standStationCode="standStationTab"
2019-11-29 12:51:58 +08:00
/>
</el-tab-pane>
<el-tab-pane label="屏蔽门" class="tab_pane_box" name="Psd">
<psd-draft
ref="PsdDraft"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@standStationCode="psdTab"
/>
</el-tab-pane>
<el-tab-pane label="站台紧急停车" class="tab_pane_box" name="Esp">
<esp-draft
ref="EspDraft"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@standStationCode="esqTab"
/>
</el-tab-pane>
2019-12-05 10:25:07 +08:00
<el-tab-pane :label="$t('map.trainWindow')" class="tab_pane_box" name="TrainWindow">
<train-window-draft
ref="TrainWindow"
2019-11-29 12:51:58 +08:00
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
2019-12-05 10:25:07 +08:00
<el-tab-pane :label="$t('map.zcZoneControl')" class="tab_pane_box" name="ZcControl">
<zc-control-draft
ref="ZcControl"
2019-11-29 12:51:58 +08:00
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
2020-03-17 16:12:15 +08:00
<el-tab-pane label="功能按钮" class="tab_pane_box" name="ControlDraft">
<control-draft
ref="ControlDraft"
2020-03-04 20:59:16 +08:00
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
2020-03-19 16:17:34 +08:00
<el-tab-pane label="表示灯" class="tab_pane_box" name="ControlLamp">
<control-lamp
ref="ControlLamp"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
2019-12-05 10:25:07 +08:00
<el-tab-pane :label="$t('map.train')" class="tab_pane_box" name="Train">
<train-draft
ref="Train"
2019-11-29 12:51:58 +08:00
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
2019-12-05 10:25:07 +08:00
<el-tab-pane :label="$t('map.line')" class="tab_pane_box" name="Line">
<line-draft
ref="Line"
2019-11-29 12:51:58 +08:00
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
2019-12-05 10:25:07 +08:00
</el-tab-pane>
<el-tab-pane :label="$t('map.text')" class="tab_pane_box" name="Text">
<text-draft
ref="Text"
2019-11-29 12:51:58 +08:00
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
2019-12-05 10:25:07 +08:00
</el-tab-pane>
<el-tab-pane :label="$t('map.lcControl')" class="tab_pane_box" name="LcControl">
<lc-control-draft
ref="LcControl"
2019-11-29 12:51:58 +08:00
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
2020-03-05 15:48:51 +08:00
<el-tab-pane label="矩形框" class="tab_pane_box" name="OutFrame">
<out-frame-draft
ref="OutFrame"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
2019-12-23 10:53:25 +08:00
<el-tab-pane :label="$t('map.image')" class="tab_pane_box" name="Resource">
2019-11-29 12:51:58 +08:00
<Image-control-draft
2019-12-23 10:53:25 +08:00
ref="Resource"
2019-11-29 12:51:58 +08:00
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane label="包围框" class="tab_pane_box" name="CheckBox">
<checkbox-draft
ref="CheckBox"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
</el-tabs>
</div>
</div>
</transition>
</template>
<script>
2019-12-27 15:23:42 +08:00
import SectionDraft from './section/index';
2020-01-13 11:25:51 +08:00
import SwitchDraft from './switch/index';
2019-12-05 14:31:39 +08:00
import SignalDraft from './signal/index';
2019-11-29 12:51:58 +08:00
import StationDraft from './station';
import StationStandDraft from './stationstand';
import PsdDraft from './psdDraft';
import EspDraft from './espDraft';
2019-11-29 12:51:58 +08:00
import TrainDraft from './train/index';
import LineDraft from './line';
import TextDraft from './text';
2020-03-17 16:12:15 +08:00
import ControlDraft from './ControlDraft';
2019-11-29 12:51:58 +08:00
import TrainWindowDraft from './trainwindow';
2019-12-04 14:08:55 +08:00
import ZcControlDraft from './zcControl';
2020-03-05 15:48:51 +08:00
import OutFrameDraft from './outFrameControl';
2019-12-04 14:08:55 +08:00
import LcControlDraft from './lcControl';
2019-11-29 12:51:58 +08:00
import ImageControlDraft from './ImageControl';
import CheckboxDraft from './checkboxDraft';
2020-03-19 16:17:34 +08:00
import ControlLamp from './controlLamp';
2019-11-29 12:51:58 +08:00
import { ViewMode } from '@/scripts/ConstDic';
export default {
name: 'MapOperate',
components: {
2019-12-03 18:44:46 +08:00
// CounterDraft,
2019-11-29 12:51:58 +08:00
SectionDraft,
SwitchDraft,
SignalDraft,
StationDraft,
StationStandDraft,
PsdDraft,
EspDraft,
2020-03-17 16:12:15 +08:00
ControlDraft,
2019-11-29 12:51:58 +08:00
TrainWindowDraft,
TrainDraft,
LineDraft,
TextDraft,
2019-12-04 14:08:55 +08:00
ZcControlDraft,
2020-03-05 15:48:51 +08:00
OutFrameDraft,
2019-12-04 14:08:55 +08:00
LcControlDraft,
2019-11-29 12:51:58 +08:00
ImageControlDraft,
2020-03-19 16:17:34 +08:00
CheckboxDraft,
ControlLamp
2019-11-29 12:51:58 +08:00
},
props: {
selected: {
type: Object,
default: function () {
return null;
}
},
mapInfo: {
type: Object,
default: function() { return {name: this.$t('map.pleaseSelectMap')}; }
},
mapSaveing: [Boolean]
},
data() {
return {
feild: '',
singlaType: '',
stationType: '',
2019-12-03 14:42:00 +08:00
switchType: '',
2019-12-04 13:38:32 +08:00
stationStandType:'',
psdType: '',
2019-11-29 12:51:58 +08:00
ViewMode: ViewMode,
LogicalViewTypeList: [
{ code: 'Link', name: this.$t('map.link') }
],
PhysicalViewTypeList: [
{ code: 'Section', name: this.$t('map.section') },
{ code: 'Signal', name: this.$t('map.signal') },
{ code: 'Switch', name: this.$t('map.switch') }
],
logicalLevelsSelect: [],
physicalLevelsSelect: [],
2019-11-29 13:27:17 +08:00
enabledTab: 'Section',
2019-11-29 12:51:58 +08:00
autoSaveTask: null,
show: {
mapEditShow: false,
mapPaintShow: true
},
2019-12-27 15:23:42 +08:00
oldDevice: null
2019-11-29 12:51:58 +08:00
};
},
computed: {
isSave() {
return this.mapInfo && this.mapInfo.id;
}
},
watch: {
'$store.state.map.deleteCount': function (val) {
if (this.selected) {
this.$refs[this.enabledTab].deleteObj();
}
},
'$store.state.map.updateCount': function (val) {
this.$refs[this.enabledTab].edit();
}
},
2019-11-29 12:51:58 +08:00
mounted() {
this.initPage();
},
methods: {
dataRelation() {
this.$emit('selectView', 'path');
},
showMap() {
this.$emit('showMap');
},
initPage() {
this.$Dictionary.logicalViewType().then(list => {
this.LogicalViewTypeList = list;
this.LogicalViewTypeList.forEach(elem => {
this.logicalLevelsSelect.push(elem.code);
});
});
this.$Dictionary.physicalViewType().then(list => {
this.PhysicalViewTypeList = list;
this.PhysicalViewTypeList.forEach(elem => {
this.physicalLevelsSelect.push(elem.code);
});
});
},
handleSelectControlPage(device) {
2019-11-29 12:51:58 +08:00
const type = device._type;
if (this.stationType) {
this.enabledTab = 'Station';
2019-12-03 14:42:00 +08:00
} else if (this.switchType) {
this.enabledTab = 'Switch';
2019-11-29 12:51:58 +08:00
} else if (this.singlaType) {
this.enabledTab = 'Signal';
2019-12-04 13:38:32 +08:00
} else if (this.stationStandType) {
this.enabledTab = 'StationStand';
} else if (this.psdType) {
this.enabledTab = 'Psd';
} else if (this.esqType) {
this.enabledTab = 'Esp';
2019-12-04 14:08:55 +08:00
} else if (this.feild) {
2019-11-29 12:51:58 +08:00
this.enabledTab = 'Section';
2020-03-18 10:20:49 +08:00
} else if (type == 'AutomaticRoute' || type == 'AutoTurnBack' || type == 'AxleReset' || type == 'LimitControl' || type == 'GuideLock') {
2020-03-17 16:12:15 +08:00
this.enabledTab = 'ControlDraft';
2020-03-24 16:35:09 +08:00
} else if (type == 'AtsControl' || type == 'CenterCommunication' || type == 'ChainControl' || type == 'IntersiteControl' || type == 'LeuControl' ||
type == 'LocalControl' || type == 'Maintain' || type == 'PowerSupply' || type == 'NoOneReturn' || type == 'MaintenanceLamps' || type == 'ZcCommunication') {
2020-03-19 16:17:34 +08:00
this.enabledTab = 'ControlLamp';
2019-11-29 12:51:58 +08:00
} else {
this.enabledTab = type;
}
},
esqTab(type) {
this.esqType = type;
},
psdTab(type) {
this.psdType = type;
},
2019-12-04 13:38:32 +08:00
standStationTab(type) {
this.stationStandType = type;
},
2019-11-29 12:51:58 +08:00
stationEnabledTab(type) {
this.stationType = type;
},
selectEnabledTab(type) {
this.singlaType = type;
},
fieldSelect(type) {
this.feild = type;
},
2019-12-03 14:42:00 +08:00
fieldSelectSwitchSection(type) {
this.switchType = type;
},
2019-11-29 12:51:58 +08:00
handleSelectLogicalView(handle) {
this.$emit('handleSelectLogicalView', handle);
},
handleSelectPhysicalView(handle) {
this.$emit('handleSelectPhysicalView', handle);
},
saveMapEvent() {
this.$emit('saveMapEvent');
},
verifyMapEvent() {
this.$emit('verifyMapEvent');
},
updateMapModel(obj) {
this.$emit('updateMapModel', obj);
},
setCenter(code) {
this.$emit('setCenter', code);
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import "src/styles/mixin.scss";
.map-context {
display: block;
float: left;
margin-left: 5px;
}
.map-control {
float: right;
width: 100%;
height: 100%;
.border-card{
height: 100%;
}
}
.physical-view {
line-height: 25px;
height: 118px;
padding-left: 12px;
.el-checkbox {
width: 70px;
margin: 0;
margin-right: 30px;
}
}
.clearfix{
height: 47px;
padding: 15px
}
.mapEdit{
height: calc(100% - 47px);
.tab_pane_box{
height: 100%;
}
}
/deep/ .button_box{
width: 100%;
background: #ffffff;
overflow: hidden;
border-top: 1px #f3f1f1 solid;
box-shadow: 4px 7px 10px #565656;
border-radius: 0;
border-bottom: 1px transparent solid;
}
/deep/ .map-draft-group {
float: right;
margin: 6px 5px;
}
/deep/ .view-control {
overflow-y: auto;
}
/deep/ {
.mapEdit .el-tabs__nav-wrap.is-scrollable {
padding: 0 20px;
}
.mapEdit .el-tabs__header .el-tabs__item.is-active {
border-bottom-color: #f5f7fa;
background: #f5f7fa;
}
.mapEdit .el-tabs__active-bar{
background: transparent;
}
.mapEdit .el-tabs__content {
height: calc(100% - 56px);
}
.card .el-tabs__nav .el-tabs__item.is-active {
border-bottom: 2px solid #E4E7ED;
background: #409eff;
color: #fff;
}
.mapEdit .el-tabs__nav-prev {
width: 20px;
height: 41px;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 1px 1px 4px #ccc;
}
.mapEdit .el-tabs__nav-next {
width: 20px;
height: 41px;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 1px 1px 4px #ccc;
}
}
// 页面页签样式
/deep/ {
.card .el-transfer-panel__filter{
margin: 5px 15px;
}
.card .el-transfer-panel__list.is-filterable{
height: 290px;
}
.card .el-transfer-panel__body{
height: 328px;
}
.card .el-transfer__buttons{
padding: 0 16px;
}
.card .el-transfer{
display: flex;
justify-content: center;
align-items: center;
}
}
</style>