Merge remote-tracking branch 'origin/test'
This commit is contained in:
commit
56eea551fb
BIN
src/assets/icon/icon_zonghe.png
Normal file
BIN
src/assets/icon/icon_zonghe.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.8 KiB |
@ -57,6 +57,12 @@ export default {
|
|||||||
default() {
|
default() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
work: {
|
||||||
|
type: String,
|
||||||
|
default() {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
@ -220,6 +220,7 @@ const UserRulesManage = () => import('@/views/userRulesManage/index');
|
|||||||
const AuthorityTransfer = () => import('@/views/authorityTransfer/index');
|
const AuthorityTransfer = () => import('@/views/authorityTransfer/index');
|
||||||
const CreateDistribute = () => import('@/views/authorityTransfer/create/index');
|
const CreateDistribute = () => import('@/views/authorityTransfer/create/index');
|
||||||
const ThirdJumpSim = () => import('@/views/newMap/display/thirdJump');
|
const ThirdJumpSim = () => import('@/views/newMap/display/thirdJump');
|
||||||
|
const TmsPage = () => import('@/views/jlmap3d/drive/sceneview/tmsPage')
|
||||||
|
|
||||||
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
|
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
|
||||||
// import { getSessionStorage } from '@/utils/auth';
|
// import { getSessionStorage } from '@/utils/auth';
|
||||||
@ -325,6 +326,12 @@ export const constantRoutes = [
|
|||||||
hidden: true
|
hidden: true
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: '/tmsPage',
|
||||||
|
component: TmsPage,
|
||||||
|
hidden: true
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
path: '/data2json',
|
path: '/data2json',
|
||||||
component: () => import('@/views/planMonitor/data2json/page.vue'),
|
component: () => import('@/views/planMonitor/data2json/page.vue'),
|
||||||
|
@ -405,7 +405,9 @@ export const ClientList = [
|
|||||||
{ label: '应急调度', value: 'emergency' },
|
{ label: '应急调度', value: 'emergency' },
|
||||||
{ label: '运行图加载', value: 'diagramLoad' },
|
{ label: '运行图加载', value: 'diagramLoad' },
|
||||||
{ label: '运行图预览', value: 'diagramPreview' },
|
{ label: '运行图预览', value: 'diagramPreview' },
|
||||||
{ label: '运行图编制', value: 'diagramEdit' }
|
{ label: '运行图编制', value: 'diagramEdit' },
|
||||||
|
{ label: '乘客信息发布系统', value: 'pisScreen' },
|
||||||
|
{ label: 'TMS', value: 'tms' }
|
||||||
];
|
];
|
||||||
/** 实训类型list */
|
/** 实训类型list */
|
||||||
export const TrainingTypeList = [
|
export const TrainingTypeList = [
|
||||||
|
@ -34,6 +34,9 @@ export function getTopic(type, group, param) {
|
|||||||
case 'ISCSGATE':
|
case 'ISCSGATE':
|
||||||
topic = `/queue/simulation/${group}/iscs/gate/${param.stationCode}`;
|
topic = `/queue/simulation/${group}/iscs/gate/${param.stationCode}`;
|
||||||
break;
|
break;
|
||||||
|
case 'TMS':
|
||||||
|
topic = `/queue/simulation/${group}/train/001/tms`
|
||||||
|
break;
|
||||||
case 'PIS_STAND':
|
case 'PIS_STAND':
|
||||||
topic = `/queue/simulation/${group}/standPis/${param.standCode}`;
|
topic = `/queue/simulation/${group}/standPis/${param.standCode}`;
|
||||||
break;
|
break;
|
||||||
|
304
src/views/jlmap3d/drive/sceneview/tmsPage.vue
Normal file
304
src/views/jlmap3d/drive/sceneview/tmsPage.vue
Normal file
@ -0,0 +1,304 @@
|
|||||||
|
<template>
|
||||||
|
<div id="container">
|
||||||
|
<div id="content">
|
||||||
|
<table id="trainInfo">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td rowspan="2">运行</td>
|
||||||
|
<td>网压</td>
|
||||||
|
<td>网流</td>
|
||||||
|
<td>速度</td>
|
||||||
|
<td>牵引/制动级位</td>
|
||||||
|
<td>里程标</td>
|
||||||
|
<td>下一站</td>
|
||||||
|
<td>目的站</td>
|
||||||
|
<td rowspan="2">2022/02/02</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{{ trainInfo.voltage }}V</td>
|
||||||
|
<td>{{ trainInfo.current }}A</td>
|
||||||
|
<td>{{ trainInfo.speed }} km/h</td>
|
||||||
|
<td :class="{ bg_g: trainInfo.tractionPercent > 0, bg_r: trainInfo.tractionPercent < 0 }">
|
||||||
|
{{ Math.abs(trainInfo.tractionPercent) }}%
|
||||||
|
</td>
|
||||||
|
<td>{{ trainInfo.mileage || '--' }}</td>
|
||||||
|
<td>{{ trainInfo.nextStation }}</td>
|
||||||
|
<td>{{ trainInfo.destination }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<img id="trainImg" :src="localStatic + '/jl3d/tms/PMsa2.png'" />
|
||||||
|
<table id="carInfo">
|
||||||
|
<tbody>
|
||||||
|
<tr v-for="([k, v], i) in Object.entries({ 车号: [0, 1, 2, 3, 4, 5], ...carInfo })" :key="k">
|
||||||
|
<td>{{ k }}</td>
|
||||||
|
<template v-if="k === '车号'">
|
||||||
|
<td v-for="(item, j) in v" :key="j">{{ j + 1 }}</td>
|
||||||
|
</template>
|
||||||
|
<template v-else-if="k === '辅助状态'">
|
||||||
|
<td :class="{ bg_g: item === 'ON', bg_r: item === 'OFF' }" v-for="(item, j) in v" :key="j">
|
||||||
|
{{ `${item === '--' ? '' : '辅助'}${item}` }}
|
||||||
|
</td>
|
||||||
|
</template>
|
||||||
|
<template v-else-if="k === '牵引系统状态'">
|
||||||
|
<td :class="{ bg_g: item !== 0 }" v-for="(item, j) in v" :key="j">
|
||||||
|
{{ item === 0 ? '--' : `${item} A` }}
|
||||||
|
</td></template
|
||||||
|
>
|
||||||
|
<template v-else-if="k === '制动缸压力'">
|
||||||
|
<td v-for="(item, j) in v" :key="j">
|
||||||
|
<div class="multi">
|
||||||
|
<div style="width: 50%">{{ item }}</div>
|
||||||
|
<div style="width: 50%">{{ item }}</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</template>
|
||||||
|
<template v-else-if="k === '转向架切除'">
|
||||||
|
<td v-for="(item, j) in v" :key="j">
|
||||||
|
<div class="multi">
|
||||||
|
<div style="width: 50%">{{ item[0] }}</div>
|
||||||
|
<div style="width: 50%">{{ item[1] }}</div>
|
||||||
|
</div>
|
||||||
|
</td></template
|
||||||
|
>
|
||||||
|
<template v-else-if="k === '1侧门'">
|
||||||
|
<td v-for="j in 6" :key="j">
|
||||||
|
<div class="multi">
|
||||||
|
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 1 : 8 }}</div>
|
||||||
|
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 3 : 6 }}</div>
|
||||||
|
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 5 : 4 }}</div>
|
||||||
|
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 7 : 2 }}</div>
|
||||||
|
</div>
|
||||||
|
</td></template
|
||||||
|
>
|
||||||
|
<template v-else-if="k === '2侧门'">
|
||||||
|
<td v-for="j in 6" :key="j">
|
||||||
|
<div class="multi">
|
||||||
|
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 2 : 7 }}</div>
|
||||||
|
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 4 : 5 }}</div>
|
||||||
|
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 6 : 3 }}</div>
|
||||||
|
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 8 : 1 }}</div>
|
||||||
|
</div>
|
||||||
|
</td></template
|
||||||
|
>
|
||||||
|
<template v-else-if="k === '交流输出电压'">
|
||||||
|
<td v-for="(item, j) in v" :key="j">{{ item }}</td></template
|
||||||
|
>
|
||||||
|
<template v-else-if="k === '空压机状态'">
|
||||||
|
<td v-for="(item, j) in v" :key="j">{{ item }}</td></template
|
||||||
|
>
|
||||||
|
<template v-else-if="k === '停放制动施加状态'">
|
||||||
|
<td :class="Number(item) < 1 ? 'bg_r' : 'bg_g'" v-for="(item, j) in v" :key="j">
|
||||||
|
{{ item }} bar
|
||||||
|
</td></template
|
||||||
|
>
|
||||||
|
<template v-else-if="k === 'HSCB状态'">
|
||||||
|
<td :class="{ bg_g: item }" v-for="(item, j) in v" :key="j">{{ item ? '' : '-- --' }}</td></template
|
||||||
|
>
|
||||||
|
<template v-else-if="k === '牵引脉冲使能'">
|
||||||
|
<td :class="{ bg_g: item }" v-for="(item, j) in v" :key="j">{{ item ? '' : '-- --' }}</td></template
|
||||||
|
>
|
||||||
|
<td v-if="i === 0" :rowspan="Object.keys(carInfo).length + 1">
|
||||||
|
<div class="speedBg">
|
||||||
|
<img :src="`${localStatic}/jl3d/tms/PMS3.png`" />
|
||||||
|
<div
|
||||||
|
id="accBar"
|
||||||
|
:style="{
|
||||||
|
transform: `scaleY(${Math.abs(trainInfo.tractionPercent) / 100})`,
|
||||||
|
}"
|
||||||
|
:class="{ bg_g: trainInfo.tractionPercent > 0, bg_r: trainInfo.tractionPercent < 0 }"
|
||||||
|
></div>
|
||||||
|
<div class="gap"></div>
|
||||||
|
<div id="speedBar" :style="{ transform: `scaleY(${trainInfo.speed / 80})` }"></div>
|
||||||
|
</div>
|
||||||
|
<div>{{ trainInfo.speed }} km/h</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
|
||||||
|
import { creatSubscribe, clearSubscribe, getTopic } from '@/utils/stomp';
|
||||||
|
import { getToken } from '@/utils/auth';
|
||||||
|
|
||||||
|
let timer = null;
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'tmsPage',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
localStatic: JL3D_LOCAL_STATIC,
|
||||||
|
trainInfo: {
|
||||||
|
voltage: 1600,
|
||||||
|
current: 317,
|
||||||
|
speed: 0,
|
||||||
|
tractionPercent: 0,
|
||||||
|
mileage: '--',
|
||||||
|
nextStation: '',
|
||||||
|
destination: '',
|
||||||
|
},
|
||||||
|
carInfo: {
|
||||||
|
辅助状态: ['ON', '--', 'OFF', '--', '--', 'ON'],
|
||||||
|
牵引系统状态: [0, 58, 47, 52, 50, 0],
|
||||||
|
制动缸压力: [0, 0, 0, 0, 0, 0],
|
||||||
|
转向架切除: [[' ', ' '], [' ', ' '], [' ', ' '], [' ', ' '], [' ', ' '], [' ', ' ']],
|
||||||
|
'1侧门': true,
|
||||||
|
'2侧门': true,
|
||||||
|
交流输出电压: [378, '--', '--', '--', '--', 378],
|
||||||
|
空压机状态: ['--', '--', '', '', '--', '--'],
|
||||||
|
停放制动施加状态: [7.85, 7.85, 7.85, 7.85, 7.85, 7.85],
|
||||||
|
HSCB状态: [false, true, true, true, true, false],
|
||||||
|
牵引脉冲使能: [true, false, false, false, false, true],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.group = this.$route.query.group;
|
||||||
|
this.subscribe();
|
||||||
|
this.setTractionWave(true);
|
||||||
|
},
|
||||||
|
unmounted() {
|
||||||
|
this.unsubscribe();
|
||||||
|
if (timer) {
|
||||||
|
clearInterval(timer);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
subscribe() {
|
||||||
|
const header = { group: this.group || '', 'X-Token': getToken() };
|
||||||
|
creatSubscribe(getTopic('TMS', this.group), header, msg => {
|
||||||
|
let res = JSON.parse(msg.body);
|
||||||
|
console.log(res);
|
||||||
|
if (!res) return;
|
||||||
|
|
||||||
|
if (res.current) this.trainInfo.current = res.current;
|
||||||
|
if (res.voltage) this.trainInfo.voltage = res.voltage;
|
||||||
|
if (res.speed) this.trainInfo.speed = res.speed.toFixed(2);
|
||||||
|
if (res.tbLevelPercent) this.trainInfo.tractionPercent = res.tbLevelPercent;
|
||||||
|
if (res.mileage) this.trainInfo.mileage = res.mileage;
|
||||||
|
if (res.nextStation) this.trainInfo.nextStation = res.nextStation;
|
||||||
|
if (res.destination) this.trainInfo.destination = res.destination;
|
||||||
|
if (res.pressureOfBrakeCylinder)
|
||||||
|
this.carInfo.制动缸压力 = Array(6).fill(res.pressureOfBrakeCylinder.toFixed(2));
|
||||||
|
if (res.oneSideDoorOpened) this.carInfo['1侧门'] = res.oneSideDoorOpened;
|
||||||
|
if (res.twoSideDoorOpened) this.carInfo['2侧门'] = res.twoSideDoorOpened;
|
||||||
|
if (res.parkingBreakPressure) this.carInfo.停放制动施加状态 = Array(6).fill(res.parkingBreakPressure);
|
||||||
|
this.setTractionWave(res.traction);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
unsubscribe() {
|
||||||
|
clearSubscribe(getTopic('TMS', this.group));
|
||||||
|
},
|
||||||
|
setTractionWave(flag) {
|
||||||
|
if (timer) {
|
||||||
|
clearInterval(timer);
|
||||||
|
}
|
||||||
|
if (flag) {
|
||||||
|
timer = setInterval(() => {
|
||||||
|
this.carInfo.牵引系统状态 = Array(6)
|
||||||
|
.fill(true)
|
||||||
|
.map(b => (b ? (Math.random() * 10 + 46).toFixed() : '--'));
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
#container {
|
||||||
|
background: #000;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
.bg_g {
|
||||||
|
background: #0f0;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.bg_r {
|
||||||
|
background: #f00;
|
||||||
|
}
|
||||||
|
#content {
|
||||||
|
width: 80%;
|
||||||
|
height: 90%;
|
||||||
|
padding: 5px;
|
||||||
|
display: flex;
|
||||||
|
color: #fff;
|
||||||
|
user-select: none;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 1.4rem;
|
||||||
|
text-align: center;
|
||||||
|
border-collapse: collapse;
|
||||||
|
td {
|
||||||
|
border: 1px solid #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#trainInfo {
|
||||||
|
height: 25%;
|
||||||
|
}
|
||||||
|
#trainImg {
|
||||||
|
width: 75%;
|
||||||
|
height: 10%;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
#carInfo {
|
||||||
|
height: 58%;
|
||||||
|
td {
|
||||||
|
width: 12.5%;
|
||||||
|
padding: 0;
|
||||||
|
.multi {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: stretch;
|
||||||
|
& > div {
|
||||||
|
border-right: 1px solid #fff;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
& :last-child {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.speedBg {
|
||||||
|
height: 90%;
|
||||||
|
padding: 2px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
position: relative;
|
||||||
|
img {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 10%;
|
||||||
|
width: 80%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.gap {
|
||||||
|
width: 4%;
|
||||||
|
}
|
||||||
|
div {
|
||||||
|
width: 23%;
|
||||||
|
transform-origin: bottom;
|
||||||
|
transform: scaleY(0.5);
|
||||||
|
}
|
||||||
|
#speedBar {
|
||||||
|
background: #0ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -22,6 +22,7 @@
|
|||||||
<div class="left-logo-box">
|
<div class="left-logo-box">
|
||||||
<img class="logo" :src="loginProLogo ? $store.state.user.ossUrl + '/logo/' + loginProLogo:''" :style="{ width: loginProLogoWidth+'px'}">
|
<img class="logo" :src="loginProLogo ? $store.state.user.ossUrl + '/logo/' + loginProLogo:''" :style="{ width: loginProLogoWidth+'px'}">
|
||||||
<span>{{ loginOrgTitle }}</span>
|
<span>{{ loginOrgTitle }}</span>
|
||||||
|
<img v-if="project === 'cdgxy'" class="logo" :src="zhIcon" >
|
||||||
</div>
|
</div>
|
||||||
<div class="content-box">
|
<div class="content-box">
|
||||||
<div class="text-box">{{ loginProtitle }}</div>
|
<div class="text-box">{{ loginProtitle }}</div>
|
||||||
@ -56,6 +57,7 @@ import bgIscsImg from '@/assets/bg_iscs.jpg';
|
|||||||
import bgCctvImg from '@/assets/bg_cctv.jpg';
|
import bgCctvImg from '@/assets/bg_cctv.jpg';
|
||||||
import bgLswImg from '@/assets/bg_lsw.jpg';
|
import bgLswImg from '@/assets/bg_lsw.jpg';
|
||||||
import bgPsdImg from '@/assets/bg_psd.png';
|
import bgPsdImg from '@/assets/bg_psd.png';
|
||||||
|
import ZongheIcon from '@/assets/icon/icon_zonghe.png';
|
||||||
import { getLoginWmurl, checkLoginStatus, getLoginInfo } from '@/api/login';
|
import { getLoginWmurl, checkLoginStatus, getLoginInfo } from '@/api/login';
|
||||||
import { getToken} from '@/utils/auth';
|
import { getToken} from '@/utils/auth';
|
||||||
import { assignUsersPlayRoles } from '@/api/jointSimulation';
|
import { assignUsersPlayRoles } from '@/api/jointSimulation';
|
||||||
@ -72,7 +74,8 @@ export default {
|
|||||||
loadingText:'',
|
loadingText:'',
|
||||||
deviceImg:'',
|
deviceImg:'',
|
||||||
checkLogin: null,
|
checkLogin: null,
|
||||||
sessionId:''
|
sessionId:'',
|
||||||
|
zhIcon: ZongheIcon
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
<ncc-work v-else-if="picture === 'nccWork'" ref="nccWork" />
|
<ncc-work v-else-if="picture === 'nccWork'" ref="nccWork" />
|
||||||
<jl3d-drive v-else-if="picture === 'drivingPlan'" ref="jl3dDrive" />
|
<jl3d-drive v-else-if="picture === 'drivingPlan'" ref="jl3dDrive" />
|
||||||
<jl3d-device v-else-if="picture === 'jl3dModle'" ref="jl3dModle" />
|
<jl3d-device v-else-if="picture === 'jl3dModle'" ref="jl3dModle" />
|
||||||
|
<tms-page v-else-if="picture === 'tms'" />
|
||||||
<cctv-view v-else-if="picture === 'cctvView'" ref="cctvView" />
|
<cctv-view v-else-if="picture === 'cctvView'" ref="cctvView" />
|
||||||
<line-monitor v-else-if="picture === 'lineMonitor'" ref="lineMonitor" />
|
<line-monitor v-else-if="picture === 'lineMonitor'" ref="lineMonitor" />
|
||||||
|
|
||||||
@ -37,6 +38,7 @@
|
|||||||
|
|
||||||
<test-runplan v-if="picture=='testRunplan'" ref="testRunplan" :plan-id="loadPlanId" @pictureChange="pictureChangeAndPlan" />
|
<test-runplan v-if="picture=='testRunplan'" ref="testRunplan" :plan-id="loadPlanId" @pictureChange="pictureChangeAndPlan" />
|
||||||
<driver-ats-work v-if="picture=='driverAtsWork'" ref="driverAtsWork" />
|
<driver-ats-work v-if="picture=='driverAtsWork'" ref="driverAtsWork" />
|
||||||
|
<pis-screen v-if="picture=='pisScreen'" ref="pisScreen" />
|
||||||
|
|
||||||
<terminal-menu
|
<terminal-menu
|
||||||
v-show="menuShow"
|
v-show="menuShow"
|
||||||
@ -88,6 +90,8 @@ import TestRunplan from './testRunplan';
|
|||||||
import DriverAtsWork from './driverAtsWork';
|
import DriverAtsWork from './driverAtsWork';
|
||||||
import NccWork from './nccWork';
|
import NccWork from './nccWork';
|
||||||
import LineMonitor from './lineMonitor';
|
import LineMonitor from './lineMonitor';
|
||||||
|
import PisScreen from './pisScreen';
|
||||||
|
import TmsPage from '@/views/jlmap3d/drive/sceneview/tmsPage';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Index',
|
name: 'Index',
|
||||||
@ -126,7 +130,9 @@ export default {
|
|||||||
TestRunplan,
|
TestRunplan,
|
||||||
DriverAtsWork,
|
DriverAtsWork,
|
||||||
NccWork,
|
NccWork,
|
||||||
LineMonitor
|
LineMonitor,
|
||||||
|
PisScreen,
|
||||||
|
TmsPage
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -323,6 +329,8 @@ export default {
|
|||||||
this.$nextTick(() => { this.subscribe('CTC'); });
|
this.$nextTick(() => { this.subscribe('CTC'); });
|
||||||
} else if (this.picture === 'nccWork') {
|
} else if (this.picture === 'nccWork') {
|
||||||
this.$nextTick(() => { this.subscribe('NCC'); });
|
this.$nextTick(() => { this.subscribe('NCC'); });
|
||||||
|
} else if (this.picture === 'tms') {
|
||||||
|
this.mapViewLoaded(true);
|
||||||
}
|
}
|
||||||
this.$nextTick(() => { this.loading = false; });
|
this.$nextTick(() => { this.loading = false; });
|
||||||
},
|
},
|
||||||
|
284
src/views/newMap/display/terminals/pisScreen.vue
Normal file
284
src/views/newMap/display/terminals/pisScreen.vue
Normal file
@ -0,0 +1,284 @@
|
|||||||
|
<template>
|
||||||
|
<div style="width: 100%;height: 100%;background-color: #45607B;padding-top: 30px;">
|
||||||
|
<div class="station-nav-out">
|
||||||
|
<div class="station-nav">
|
||||||
|
<div class="stationList">
|
||||||
|
<div class="station-line" />
|
||||||
|
<div v-for="(item, index) in stationList" :key="index" class="station-box-out">
|
||||||
|
<div class="station-box">
|
||||||
|
<div class="leftRect" />
|
||||||
|
<div class="rightRect" />
|
||||||
|
<div class="station-list-box" :class="{'active': selectStation == item.id,'currentStation':tractionList.includes(item.name)}" @click="changeStation(item.id)" />
|
||||||
|
</div>
|
||||||
|
<div class="station-name" :class="index==0?'station-name-first':index%2==1?'station-name-up':'station-name-down'">{{ item.name }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="rightButtonGroup">
|
||||||
|
<div class="rightButtonGroupL">
|
||||||
|
<div class="controlCenter">
|
||||||
|
<div class="station-list-button" :class="{'active': selectStation == 'controlCenter'}" @click="changeStation('controlCenter')" />
|
||||||
|
</div>
|
||||||
|
<div class="stationDepot">
|
||||||
|
<div class="station-list-button" :class="{'active': selectStation == 'stationDepot'}" @click="changeStation('stationDepot')" />
|
||||||
|
</div>
|
||||||
|
<div class="parkingLot">
|
||||||
|
<div class="station-list-button" :class="{'active': selectStation == 'parkingLot'}" @click="changeStation('parkingLot')" />
|
||||||
|
</div>
|
||||||
|
<div class="controlCenterName">控制中心</div>
|
||||||
|
<div class="parkingLotName">停车场</div>
|
||||||
|
<div class="stationDepotName">车辆段</div>
|
||||||
|
</div>
|
||||||
|
<div class="rightButtonGroupR">
|
||||||
|
<div class="mainHouseOne">
|
||||||
|
<div class="station-list-button" :class="{'active': selectStation == 'mainHouseOne'}" @click="changeStation('mainHouseOne')" />
|
||||||
|
</div>
|
||||||
|
<div class="mainHouseTwo">
|
||||||
|
<div class="station-list-button" :class="{'active': selectStation == 'mainHouseTwo'}" @click="changeStation('mainHouseTwo')" />
|
||||||
|
</div>
|
||||||
|
<div class="mainHouseOneName">主所1</div>
|
||||||
|
<div class="mainHouseTwoName">主所2</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<pids-main :station-id="stationId" style="margin-top: 70px;" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import PidsMain from '../../../iscs/iscsSystemNew/config/pis/mainScreen';
|
||||||
|
import { getByGroupStationList } from '@/api/jmap/map';
|
||||||
|
export default {
|
||||||
|
name: 'PisScreen',
|
||||||
|
components: {
|
||||||
|
PidsMain
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
stationId:'',
|
||||||
|
selectStation: 'mainHouseOne',
|
||||||
|
stationList:[],
|
||||||
|
tractionList:[],
|
||||||
|
buttonId:'substation'
|
||||||
|
};
|
||||||
|
},
|
||||||
|
async created () {
|
||||||
|
// 请求当前线路车站列表
|
||||||
|
const res = await getByGroupStationList(this.$route.query.group);
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.stationList = [];
|
||||||
|
res.data.forEach(station => {
|
||||||
|
if (!station.depot && station.visible) {
|
||||||
|
const param = {
|
||||||
|
name: station.runPlanName.includes('站') ? station.runPlanName : `${station.runPlanName}站`,
|
||||||
|
id: station.code
|
||||||
|
};
|
||||||
|
if (station.centralized) {
|
||||||
|
this.tractionList.push(param.name);
|
||||||
|
}
|
||||||
|
this.stationList.push(param);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.selectChildren(this.buttonId);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeStation(item) {
|
||||||
|
this.selectStation = item;
|
||||||
|
this.stationId = this.selectStation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.station-nav-out{
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.station-nav{
|
||||||
|
width: 100%;
|
||||||
|
height: 65px;
|
||||||
|
background-color: #ACACAC;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
.station-line{
|
||||||
|
height: 12px;
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
background-image: linear-gradient(to bottom , #9c9c9c, #F0F0F0,#9c9c9c);
|
||||||
|
top: 25px;
|
||||||
|
border: 1px #505050 solid;
|
||||||
|
}
|
||||||
|
.station-list-box{
|
||||||
|
width: 1vw;
|
||||||
|
height: 1vw;
|
||||||
|
border-radius: 1vw;
|
||||||
|
background: #ccc;
|
||||||
|
left: 4px;
|
||||||
|
top: 50%;
|
||||||
|
position: absolute;
|
||||||
|
border-left: 1px #fdfdfd solid;
|
||||||
|
border-right: 1px #262626 solid;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
.station-list-box.currentStation::before{
|
||||||
|
content: '';
|
||||||
|
width: 128%;
|
||||||
|
height: 124%;
|
||||||
|
border: 1px #10ff00 solid;
|
||||||
|
position: absolute;
|
||||||
|
left: -16%;
|
||||||
|
top: -10%;
|
||||||
|
border-radius: 130%;
|
||||||
|
}
|
||||||
|
.station-list-box.active,.station-list-button.active{
|
||||||
|
background:#cdcd37;
|
||||||
|
}
|
||||||
|
.station-name{
|
||||||
|
font-size:12px;
|
||||||
|
position:absolute;
|
||||||
|
}
|
||||||
|
.station-name-first{
|
||||||
|
transform: translateX(0%);
|
||||||
|
top: 45px;
|
||||||
|
white-space: nowrap;
|
||||||
|
left: 0%;
|
||||||
|
}
|
||||||
|
.station-name-up{
|
||||||
|
top: 5px;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
left: 25%;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.station-name-down{
|
||||||
|
top: 45px;
|
||||||
|
// transform: translateX(-25%);
|
||||||
|
transform: translateX(-38%);
|
||||||
|
white-space: nowrap;
|
||||||
|
left: 0%;
|
||||||
|
}
|
||||||
|
.station-box-out{
|
||||||
|
height: 100%;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.station-box{
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
// margin-right: 1.8vw;
|
||||||
|
width: 1.5vw;
|
||||||
|
margin-top: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.leftRect{
|
||||||
|
width: 6px;
|
||||||
|
height: 19px;
|
||||||
|
background-image: linear-gradient(to bottom, #686868, #e9e9e9, #686868);
|
||||||
|
border: 1px #585858 solid;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.rightRect{
|
||||||
|
width: 6px;
|
||||||
|
height: 19px;
|
||||||
|
position: absolute;
|
||||||
|
margin-left: 0.8vw;
|
||||||
|
background-image: linear-gradient(to bottom, #686868, #e9e9e9, #686868);
|
||||||
|
border: 1px #585858 solid;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.stationList{
|
||||||
|
// display: inline-block;
|
||||||
|
display: flex;
|
||||||
|
position: relative;
|
||||||
|
justify-content: space-between;
|
||||||
|
float: left;
|
||||||
|
height: 100%;
|
||||||
|
width: 82%;
|
||||||
|
}
|
||||||
|
.rightButtonGroup{
|
||||||
|
display: inline-block;
|
||||||
|
float: right;
|
||||||
|
width: 17vw;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.rightButtonGroupL{
|
||||||
|
width: 10vw;
|
||||||
|
height: 100%;
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
border-left: 1px #000 solid;
|
||||||
|
border-right: 1px #000 solid;
|
||||||
|
}
|
||||||
|
.rightButtonGroupR{
|
||||||
|
width: 7vw;
|
||||||
|
height: 100%;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.controlCenter,.stationDepot,.parkingLot{
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: 31%;
|
||||||
|
height: 100%;
|
||||||
|
vertical-align: top;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.controlCenterName{
|
||||||
|
font-size: 12px;
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
left: 0.3vw;
|
||||||
|
}
|
||||||
|
.stationDepotName{
|
||||||
|
font-size: 12px;
|
||||||
|
position: absolute;
|
||||||
|
top: 45px;
|
||||||
|
left: 38%;
|
||||||
|
}
|
||||||
|
.parkingLotName{
|
||||||
|
font-size: 12px;
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
right: 11%;
|
||||||
|
}
|
||||||
|
.station-list-button{
|
||||||
|
width: 1vw;
|
||||||
|
height: 1vw;
|
||||||
|
border-radius: 1vw;
|
||||||
|
background: #ccc;
|
||||||
|
position: absolute;
|
||||||
|
border-left: 1px #fdfdfd solid;
|
||||||
|
border-right: 1px #262626 solid;
|
||||||
|
left: 50%;
|
||||||
|
top: 21px;
|
||||||
|
transform: translateX(-47%);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.mainHouseOne,.mainHouseTwo{
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: 49%;
|
||||||
|
height: 100%;
|
||||||
|
vertical-align: top;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.mainHouseOneName{
|
||||||
|
font-size: 12px;
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
left: 0.3vw;
|
||||||
|
}
|
||||||
|
.mainHouseTwoName{
|
||||||
|
font-size: 12px;
|
||||||
|
position: absolute;
|
||||||
|
top: 45px;
|
||||||
|
right: 8%;
|
||||||
|
}
|
||||||
|
</style>
|
@ -121,7 +121,7 @@ export default {
|
|||||||
troDetailWork: ['DISPATCHER'],
|
troDetailWork: ['DISPATCHER'],
|
||||||
maintainerSelect: ['MAINTAINER']
|
maintainerSelect: ['MAINTAINER']
|
||||||
};
|
};
|
||||||
if (client && client.type) {
|
if (client && client.type && map[client.type]) {
|
||||||
const role = this.$store.state.training.roles;
|
const role = this.$store.state.training.roles;
|
||||||
const roleDevice = this.$store.state.training.roleDeviceCode;
|
const roleDevice = this.$store.state.training.roleDeviceCode;
|
||||||
if (client.deviceCode) {
|
if (client.deviceCode) {
|
||||||
@ -145,7 +145,7 @@ export default {
|
|||||||
const mapClientList = mapClientMap ? mapClientMap[this.$route.query.simType] : [];
|
const mapClientList = mapClientMap ? mapClientMap[this.$route.query.simType] : [];
|
||||||
if (!mapClientList.length) {
|
if (!mapClientList.length) {
|
||||||
this.$store.dispatch('app/animationsClose');
|
this.$store.dispatch('app/animationsClose');
|
||||||
this.$messageBox('为获取到客户端数据,请查验地图数据!');
|
this.$messageBox('未获取到客户端数据,请查验地图数据!');
|
||||||
}
|
}
|
||||||
mapClientList.forEach(client => {
|
mapClientList.forEach(client => {
|
||||||
if (clientIdList && clientIdList.length) {
|
if (clientIdList && clientIdList.length) {
|
||||||
|
@ -63,7 +63,9 @@ export default {
|
|||||||
{ label: 'BaSiDi', key: 'baSiDi' },
|
{ label: 'BaSiDi', key: 'baSiDi' },
|
||||||
{ label: '轨道总览', key: 'troWork' },
|
{ label: '轨道总览', key: 'troWork' },
|
||||||
{ label: '轨道详览', key: 'troDetailWork' },
|
{ label: '轨道详览', key: 'troDetailWork' },
|
||||||
{ label: '通号端', key: 'maintainerSelect' }
|
{ label: '通号端', key: 'maintainerSelect' },
|
||||||
|
{ label: '乘客信息发布系统', key: 'pisScreen' },
|
||||||
|
{ label: 'TMS', key: 'tms' }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
@ -282,17 +282,25 @@ export default {
|
|||||||
isShow: () => type === 'METRO'
|
isShow: () => type === 'METRO'
|
||||||
|
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: '乘客信息发布系统',
|
||||||
|
code: 'pisScreen',
|
||||||
|
isShow: () => type === 'METRO'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: '大屏',
|
name: '大屏',
|
||||||
code: 'bigScreen',
|
code: 'bigScreen',
|
||||||
isShow: () => type === 'METRO' || type === 'EMERGENCY'
|
isShow: () => type === 'METRO' || type === 'EMERGENCY'
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '司机视角',
|
name: '司机视角',
|
||||||
code: 'drivingPlan',
|
code: 'drivingPlan',
|
||||||
isShow: () => type === 'METRO' || type === 'RAILWAY'
|
isShow: () => type === 'METRO' || type === 'RAILWAY'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'TMS',
|
||||||
|
code: 'tms',
|
||||||
|
isShow: () => type === 'METRO' || type === 'RAILWAY'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'IBP盘',
|
name: 'IBP盘',
|
||||||
|
@ -349,7 +349,7 @@ export default {
|
|||||||
current.sectionCode = stationTime.sectionCode;
|
current.sectionCode = stationTime.sectionCode;
|
||||||
current.arriveTime = stationTime.secondTime;
|
current.arriveTime = stationTime.secondTime;
|
||||||
} else {
|
} else {
|
||||||
current.departureTime = stationTime.secondTime;
|
current.departureTime = stationTime.secondTcime;
|
||||||
newstationTimeList.push(current);
|
newstationTimeList.push(current);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -484,6 +484,7 @@ export default {
|
|||||||
handleMember(member, stationList) {
|
handleMember(member, stationList) {
|
||||||
const data = { value: member.id, label: '', memberType: member.type };
|
const data = { value: member.id, label: '', memberType: member.type };
|
||||||
const device = stationList.find(station => station.code === member.deviceCode) || {};
|
const device = stationList.find(station => station.code === member.deviceCode) || {};
|
||||||
|
console.log(member, '====');
|
||||||
switch (member.type) {
|
switch (member.type) {
|
||||||
case 'DISPATCHER':
|
case 'DISPATCHER':
|
||||||
data.label = '行调' + (member.name ? `-${member.name }` : '');
|
data.label = '行调' + (member.name ? `-${member.name }` : '');
|
||||||
@ -548,7 +549,12 @@ export default {
|
|||||||
case 'STATION_ELECTRIC_WORKER':
|
case 'STATION_ELECTRIC_WORKER':
|
||||||
data.label = '电力工务 ' + (member.name ? `-${member.name}` : '');
|
data.label = '电力工务 ' + (member.name ? `-${member.name}` : '');
|
||||||
break;
|
break;
|
||||||
|
case 'NCC_DISPATCHER':
|
||||||
|
data.label = 'NCC调度' + (member.name ? `-${member.name }` : '');
|
||||||
|
break;
|
||||||
|
case 'OCC_DISPATCHER':
|
||||||
|
data.label = '信息调度' + (member.name ? `-${member.name }` : '');
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
@ -293,6 +293,9 @@ export default {
|
|||||||
case 'STATION_ELECTRIC_WORKER':
|
case 'STATION_ELECTRIC_WORKER':
|
||||||
data.label = '电力工务 ' + (member.name ? `-${member.name}` : '');
|
data.label = '电力工务 ' + (member.name ? `-${member.name}` : '');
|
||||||
break;
|
break;
|
||||||
|
case 'NCC_DISPATCHER':
|
||||||
|
data.label = 'NCC调度' + (member.name ? `-${member.name }` : '');
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user