rt-sim-training-client/src/views/newMap/displayNew/menuTrainList.vue

182 lines
6.4 KiB
Vue
Raw Normal View History

<template>
2020-07-14 16:07:43 +08:00
<div class="menuTrainListOut" :class="{'xian_01' : lineCode == '11', 'active': drawer}">
<div class="menuTrainListBtn" @click="clickBtn">
<i class="el-icon-more" />
2020-04-01 12:53:58 +08:00
</div>
2020-07-14 16:07:43 +08:00
<div :show-close="false" class="menuTrainList_box" style="height: 100%;">
<div v-if="lineCode=='10'||lineCode=='11'" class="menuTrainList">
<div class="bottomTrainListInfo">下行列车详细信息</div>
<el-table :data="bottomTrainList" height="45%" :highlight-current-row="true" @row-click="selectTrain">
<el-table-column property="groupNumber" label="车组号" width="70" />
<el-table-column property="tripNumber" label="车次号" width="70" />
<el-table-column property="destinationCode" label="目的地号" width="100" />
<el-table-column property="serviceNumber" label="表号" width="70" />
<el-table-column property="dt" label="早晚点" width="70">
<template slot-scope="scope">
<div>{{ covert(scope.row.dt) }}</div>
</template>
</el-table-column>
</el-table>
<div class="topTrainListInfo">上行列车详细信息</div>
<el-table :data="topTrainList" height="45%" :highlight-current-row="true" style="border-radius:0px 0px 0px 5px;" @row-click="selectTrain">
<el-table-column property="groupNumber" label="车组号" width="70" />
<el-table-column property="tripNumber" label="车次号" width="70" />
<el-table-column property="destinationCode" label="目的地号" width="100" />
<el-table-column property="serviceNumber" label="表号" width="70" />
<el-table-column property="dt" label="早晚点" width="70">
<template slot-scope="scope">
<div>{{ covert(scope.row.dt) }}</div>
</template>
</el-table-column>
</el-table>
</div>
<div v-else class="menuTrainList">
<el-table :data="trainList" height="100%" :highlight-current-row="true" style="border-radius:5px 0px 0px 5px;" @row-click="selectTrain">
2020-04-01 12:53:58 +08:00
<el-table-column property="groupNumber" label="车组号" width="130" />
<el-table-column property="tripNumber" label="车次号" width="130" />
<el-table-column property="serviceNumber" label="表号" width="130" />
2020-04-01 12:53:58 +08:00
</el-table>
</div>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
export default {
2020-04-01 12:53:58 +08:00
name: 'MenuTrainList',
data() {
return {
2020-04-01 12:53:58 +08:00
drawer: false,
trainList:[],
oldDevice: null,
topTrainList:[],
bottomTrainList:[]
};
},
2020-05-26 15:59:11 +08:00
computed: {
...mapGetters('map', [
'map',
'mapConfig'
]),
2020-05-26 15:59:11 +08:00
lineCode() {
return this.$route.query.lineCode;
}
},
watch:{
'$store.state.map.activeTrainListUpdate': function (val) {
2020-06-17 15:31:15 +08:00
if (val) {
const activeTrainList = this.$store.state.map.activeTrainList;
2020-06-17 15:31:15 +08:00
if (this.lineCode == '10' || this.lineCode == '11') {
this.topTrainList = [];
this.bottomTrainList = [];
activeTrainList.forEach((trainCode)=>{
2020-06-17 18:36:22 +08:00
// train.serviceNumber != '' && train.serviceNumber != undefined &&
const train = this.$store.getters['map/getDeviceByCode'](trainCode);
let isUpDirection;
if (this.mapConfig.upDirection === 'right') {
isUpDirection = train.right;
} else if (this.mapConfig.upDirection === 'left') {
isUpDirection = !train.right;
}
if (train && isUpDirection && train.sectionCode) {
this.topTrainList.push(train);
} else if (train && !isUpDirection && train.sectionCode) {
this.bottomTrainList.push(train);
}
2020-06-17 15:31:15 +08:00
});
} else {
this.trainList = [];
activeTrainList.forEach((trainCode)=>{
const train = this.$store.getters['map/getDeviceByCode'](trainCode);
if (train && train.sectionCode) {
this.trainList.push(train);
}
2020-06-17 15:31:15 +08:00
});
}
} else {
2020-06-17 15:31:15 +08:00
this.topTrainList = [];
this.bottomTrainList = [];
this.trainList = [];
}
}
},
mounted() {
2020-04-01 12:53:58 +08:00
},
methods:{
clickBtn() {
if (this.drawer) {
this.drawer = false;
} else {
this.drawer = true;
}
},
selectTrain(row, column, event) {
this.setCenter(row.code);
},
// 设置显示中心
setCenter(code) {
this.$emit('setCenter', code);
},
covert(data) {
const absData = Math.abs(data);
const hours = Math.floor(absData / 3600);
let min = Math.floor((absData % 3600) / 60);
let seconds = (absData % 3600) % 60;
min = min > 9 ? min : '0' + min;
seconds = seconds > 9 ? seconds : '0' + seconds;
const time = hours + ':' + min + ':' + seconds;
return data == 0 ? '00:00:00' : (data > 0 ? time + 'E' : time + 'L');
2020-04-01 12:53:58 +08:00
}
}
};
</script>
2020-07-14 16:07:43 +08:00
<style rel="stylesheet/scss" lang="scss" scoped>
.menuTrainListOut{
2020-04-01 12:53:58 +08:00
position: absolute;
2020-07-14 16:07:43 +08:00
right: 0;
top: 15%;
height: 70%;
transform: translateX(400px);
transition: all 0.4s;
&.active{
transform: translateX(0px);
}
2020-04-01 12:53:58 +08:00
}
.menuTrainListBtn{
width: 20px;
2020-04-01 12:53:58 +08:00
height: 40px;
background: #fff;
text-align: center;
border-radius: 6px 0px 0px 6px;
position: absolute;
top: 45%;
z-index: 2;
2020-07-14 16:07:43 +08:00
transform: translateX(-20px);
cursor: pointer;
.el-icon-more{
font-size: 20px;
margin-top: 9px;
transform-origin: 50% 50%;
transform: rotate(90deg);
margin-left:0px;
}
2020-04-01 12:53:58 +08:00
}
2020-07-14 16:07:43 +08:00
.menuTrainList_box{
height: 100%;
.menuTrainList{
width: 400px;
height: 100%;
border-radius: 10px 0px 0px 10px;
background: #fff;
}
}
2020-07-14 16:07:43 +08:00
.topTrainListInfo,
.bottomTrainListInfo{
padding: 10px 10px;
background: #cde2ef;
font-size: 13px;
border-radius: 5px 0px 0px 0px;
}
</style>