调整:新增pa客戶端

This commit is contained in:
joylink_fanyuhong 2024-03-11 15:45:29 +08:00
parent 71ed5445c3
commit e9facb70f5
14 changed files with 233 additions and 31 deletions

View File

@ -205,7 +205,8 @@ export default {
{ label: '站台PIS', value: 'PIS_STAND' },
{ label: '列车PIS', value: 'PIS_TRAIN' },
{ label: '乘客PIS', value: 'PIS' },
{ label: 'TMS', value: 'TMS' }
{ label: 'TMS', value: 'TMS' },
{ label: 'PA', value: 'PA' }
],
responderTypeList: [{ name: '固定应答器', value: 'FB' }, { name: '可变应答器', value: 'VB' }, { name: '填充应答器', value: 'IB' }],
loadRuleList: [

View File

@ -407,7 +407,8 @@ export const ClientList = [
{ label: '运行图预览', value: 'diagramPreview' },
{ label: '运行图编制', value: 'diagramEdit' },
{ label: '乘客信息发布系统', value: 'pisScreen' },
{ label: 'TMS', value: 'tms' }
{ label: 'TMS', value: 'tms' },
{ label: 'PA', value: 'paScreen' }
];
/** 实训类型list */
export const TrainingTypeList = [

View File

@ -889,7 +889,7 @@ const map = {
if (station.ciStation) {
const centrailzedList = [station.code];
state.stationControlMap[station.code] = centrailzedList;
station.relStationCodeList.forEach(relStationCode => {
station.relStationCodeList && station.relStationCodeList.forEach(relStationCode => {
state.stationControlMap[relStationCode] = centrailzedList;
if (state.mapDevice[relStationCode].centralized && !centrailzedList.includes(relStationCode)) {
centrailzedList.push(relStationCode);

View File

@ -29,7 +29,7 @@ export function handlerUrl() {
// BASE_API = 'http://114.116.51.125/jlcloud';
// BASE_API = 'http://192.168.33.93:9000'; // 周寅
// BASE_API = 'http://192.168.3.94:9000'; // 旭强
// BASE_API = 'http://192.168.33.207:9000'; // 张赛
BASE_API = 'http://192.168.33.207:9000'; // 张赛
// BASE_API = 'http://192.168.3.5:9000'; // 夏增彬
// BASE_API = 'http://192.168.3.37:9000'; // 卫志宏
// BASE_API = 'http://b29z135112.zicp.vip';

View File

@ -305,7 +305,15 @@ export default {
iscsDeviceMap: {},
iscsDeviceList: [],
iscsDeviceState: {},
deviceMap: {},
deviceMap: {
LCD:{},
UP_STAND: {},
DOWN_STAND: {},
ADMINISTRATIVE_AREA: {},
GATE: {},
TRANSFER_CHANNEL: {},
PROPERTY: {}
},
timedList: []
};
},
@ -314,7 +322,7 @@ export default {
this.initTimedPlayList();
},
'stationId': function () {
const params2 = { mapId: this.$route.query.mapId, system: 'PA', station: this.stationId };
const params2 = { mapId: this.$route.querysetMapData.mapId, system: 'PA', station: this.stationId };
queryIscsDeviceCod(params2).then(resp => {
this.iscsDeviceList = resp.data;
this.iscsDeviceList.forEach(device => {
@ -336,7 +344,7 @@ export default {
}
const device = this.iscsDeviceMap[item.code];
if (device) {
const oldState = parseInt(this.deviceMap[device.position].state);
const oldState = parseInt(this.deviceMap[device.position] ? this.deviceMap[device.position].state : 0);
const newState = parseInt(item.state);
const div = document.getElementById(device.position);
if (!oldState || oldState > newState) {

View File

@ -99,7 +99,7 @@ export default {
return this.$route.query.type;
},
syncLogin() {
const synchronousLogin = ['VR_IBP', 'LSW', 'CCTV', 'ISCS_LW', 'ISCS_CW', 'VR_PSD', 'SANDBOX', 'ILW', 'PIS_STAND', 'PIS_TRAIN', 'PIS', 'TMS'];
const synchronousLogin = ['VR_IBP', 'LSW', 'CCTV', 'ISCS_LW', 'ISCS_CW', 'VR_PSD', 'SANDBOX', 'ILW', 'PIS_STAND', 'PIS_TRAIN', 'PIS', 'TMS', 'PA'];
return this.type ? synchronousLogin.includes(this.type) : false;
},
bgImg() {
@ -146,7 +146,8 @@ export default {
PIS_STAND:{text:'检测教员机登录中'},
SANDBOX:{Img:bgLswImg, text:'检测教员机登录中'},
PIS:{text:'检测教员机登录中', Img: bgPisImg},
TMS:{text:'检测列车驾驶终端登录中', Img: bgTmsImg}
TMS:{text:'检测列车驾驶终端登录中', Img: bgTmsImg},
PA:{text:'检测现地工作站登录中', Img: bgPisImg}
};
this.loadingText = deviceMap[this.type].text;
this.deviceImg = deviceMap[this.type].Img;

View File

@ -39,7 +39,7 @@
<test-runplan v-if="picture=='testRunplan'" ref="testRunplan" :plan-id="loadPlanId" @pictureChange="pictureChangeAndPlan" />
<driver-ats-work v-if="picture=='driverAtsWork'" ref="driverAtsWork" />
<pis-screen v-if="picture=='pisScreen'" ref="pisScreen" />
<pa-screen v-if="picture =='paScreen'" ref="paScreen" />
<terminal-menu
v-show="menuShow"
ref="terminalMenu"
@ -92,6 +92,7 @@ import NccWork from './nccWork';
import LineMonitor from './lineMonitor';
import PisScreen from './pisScreen';
import TmsPage from '@/views/jlmap3d/drive/sceneview/tmsPage';
import PaScreen from './paScreen';
export default {
name: 'Index',
@ -132,7 +133,8 @@ export default {
NccWork,
LineMonitor,
PisScreen,
TmsPage
TmsPage,
PaScreen
},
data() {
return {

View File

@ -0,0 +1,183 @@
<template>
<div class="content-box-station">
<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>
</div>
<station-home ref="stationHome" :staiton-id="selectStation" />
</div>
</template>
<script>
import StationHome from '../../../iscs/iscsSystemNew/config/broadcast/stationHome';
import { getByGroupStationList } from '@/api/jmap/map';
export default {
name: 'PaScreen',
components: {
StationHome
},
data() {
return {
selectStation: '',
stationList:[],
tractionList:[]
};
},
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.selectStation = this.$store.state.training.roleDeviceCode;
}
this.$store.dispatch('app/animationsClose');
},
methods: {
changeStation(item) {
this.selectStation = item;
}
}
};
</script>
<style lang="scss" scoped>
.content-box-station{
width: 100%;
height: 100%;
padding: 65px 0 30px 0;
background: #45607B;
}
.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: 100%;
}
</style>

View File

@ -69,7 +69,7 @@ export default {
} else {
this.initPictureShow();
}
} else if (!clientIdList || !clientIdList.length) {
} else if (clientIdList.length) {
this.initTerminalList(clientIdList);
if (this.$store.state.trainingNew.trainingDetail && this.$store.state.trainingNew.trainingDetail.client) {
const client = this.findTerminalFromMap(this.$store.state.trainingNew.trainingDetail.client);

View File

@ -65,7 +65,8 @@ export default {
{ label: '轨道详览', key: 'troDetailWork' },
{ label: '通号端', key: 'maintainerSelect' },
{ label: '乘客信息发布系统', key: 'pisScreen' },
{ label: 'TMS', key: 'tms' }
{ label: 'TMS', key: 'tms' },
{ label: 'PA', value: 'paScreen' }
]
};
},

View File

@ -287,6 +287,11 @@ export default {
code: 'pisScreen',
isShow: () => type === 'METRO'
},
{
name: 'PA',
code: 'paScreen',
isShow: () => type === 'METRO'
},
{
name: '大屏',
code: 'bigScreen',

View File

@ -79,13 +79,13 @@ export default {
title: this.$t('lesson.trainingName'),
prop: 'name'
},
{
title: this.$t('lesson.prdType'),
prop: 'prdType',
type: 'tag',
columnValue: (row) => { return this.$convertField(row.prdType, this.prdTypeList, ['value', 'label']); },
tagType: (row) => { return 'success'; }
},
// {
// title: this.$t('lesson.prdType'),
// prop: 'prdType',
// type: 'tag',
// columnValue: (row) => { return this.$convertField(row.prdType, this.prdTypeList, ['value', 'label']); },
// tagType: (row) => { return 'success'; }
// },
{
title: this.$t('lesson.trainingType'),
prop: 'type',
@ -132,12 +132,12 @@ export default {
};
},
computed:{
prdTypeList() {
const productTypeList = ConstConfig.ConstSelect.prdType;
return Cookies.get('user_lang') == 'en'
? productTypeList.map(elem => { return { value: elem.value, label: elem.enlabel }; })
: productTypeList.map(elem => { return { value: elem.value, label: elem.label }; });
}
// prdTypeList() {
// const productTypeList = ConstConfig.ConstSelect.prdType;
// return Cookies.get('user_lang') == 'en'
// ? productTypeList.map(elem => { return { value: elem.value, label: elem.enlabel }; })
// : productTypeList.map(elem => { return { value: elem.value, label: elem.label }; });
// }
},
async created() {
await this.loadInitData();

View File

@ -88,7 +88,7 @@
</el-select>
</el-form-item>
</el-form>
<el-form v-show="['TMS', 'PIS'].includes(data.type)" ref="formTms" :model="formTms" label-width="100px" :rules="rulesTms">
<el-form v-show="['TMS', 'PIS', 'PA'].includes(data.type)" ref="formTms" :model="formTms" label-width="100px" :rules="rulesTms">
<el-form-item label="关联设备:" prop="deviceCode" size="small">
<el-select v-model="formTms.deviceCode" placeholder="请选择" size="small">
<el-option
@ -395,7 +395,7 @@ export default {
this.formIscs = {deviceCode: '', picture: '', stationCode: '', roleCode:'', client:'', clientList: []};
const form = JSON.parse(resp.data.config);
this.formIscs = Object.assign(this.formIscs, form);
} else if (resp.data.config && ['PIS', 'TMS'].includes(resp.data.type)) {
} else if (resp.data.config && ['PIS', 'TMS', 'PA'].includes(resp.data.type)) {
this.formTms = {deviceCode: '', roleCode:'', client:'', clientList: []};
const form = JSON.parse(resp.data.config);
this.formTms = Object.assign(this.formTms, form);
@ -408,7 +408,7 @@ export default {
this.initData(row);
this.data = row;
this.stationList = [];
if (['VR_IBP', 'ISCS_LW'].includes(this.data.type)) {
if (['VR_IBP', 'ISCS_LW', 'PA'].includes(this.data.type)) {
getDevicesByType(row.project, 'LW').then(res => {
if (res.data && res.data.length) {
this.lwList = res.data;
@ -511,7 +511,7 @@ export default {
self.$message.error(this.$t('tip.modifyTheFailure') + error.message);
});
});
} else if (this.data.type === 'PIS' || this.data.type === 'TMS') {
} else if (this.data.type === 'PIS' || this.data.type === 'TMS' || this.data.type === 'PA') {
this.$refs.formTms.validate(() => {
const data = {id: this.data.id, project: this.data.project, code: this.data.code, type: this.data.type, config: JSON.stringify(this.formTms) };
setDeviceConfig(data).then(response => {

View File

@ -188,7 +188,7 @@ export default {
},
editConfig(index, row) {
const configGatewayList = ['SWITCH', 'SIGNAL', 'PSD', 'PSL', 'PSC', 'UDP_LOW', 'SECTION', 'TRAIN', 'UDP_CLIENT', 'PIS_STAND', 'PIS_TRAIN', 'PIS'];
if (['LW', 'VR_IBP', 'ISCS_LW', 'ISCS_CW', 'IM', 'CW', 'DRIVE', 'DEPOT', 'TMS', 'PIS'].includes(row.type)) {
if (['LW', 'VR_IBP', 'ISCS_LW', 'ISCS_CW', 'IM', 'CW', 'DRIVE', 'DEPOT', 'TMS', 'PIS', 'PA'].includes(row.type)) {
this.$refs.editConfig.doShow(row);
} else if (configGatewayList.includes(row.type)) {
this.$refs.editConfigGateway.doShow(row);