rt-sim-training-client/src/jmapNew/constant/stateTransition.js
2020-08-20 13:17:58 +08:00

137 lines
5.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { deepAssign } from '@/utils/index';
// import deviceType from './deviceType';
// 所有默认状态在这里都要有 用来转换后台发送的数据状态
class Status {
// el是宿主元素
// vm是KVue实例
constructor(device) {
// 保存kVue实例
this.statusObj = {};
if (device && device._type && this['handle' + device._type]) {
// 执行编译
this['handle' + device._type](device);
}
}
handleStationStand(device) {
this.statusObj = {
free: device.free, // 站台空闲
trainParking: device.trainParking, // 列车停站
emergencyClosed: device.emergencyClosed, // 站台紧急关闭
stationHoldTrain: device.stationHoldTrain, // 站台是否扣车
centerHoldTrain: device.centerHoldTrain, // 中心是否扣车 true 扣车 false 非扣车状态
allSkip: device.allSkip, // 是否全部跳停
assignSkip: device.assignSkip, // 是否指定跳停
runLevelTime: device.runLevelTime, // 区间运行时间 自动为 0
parkingTime: device.parkingTime, // 站台停车时间 自动为0
fault: device.fault /** 非故障*/
};
}
handleSection(device) {
this.statusObj = {
blockade: device.blockade, // 轨道是否封锁
routeLock: device.routeLock, // 是否进路锁闭
overlapLock: device.overlapLock, // 进路延续保护锁闭
ctOccupied: device.ctOccupied, // 通信车占用
nctOccupied: device.nctOccupied, // 非通信车占用
fault: device.fault /** 非故障*/
};
}
handleSwitch(device) {
this.statusObj = {
singleLock: device.singleLock, // 是否单锁
blockade: device.blockade, // 是否封锁
routeLock: device.routeLock, // 是否进路锁闭
overlapLock: device.overlapLock, // 是否进路延续保护锁闭
normalPosition: device.normalPosition, // 是否定位
reversePosition: device.reversePosition, // 是否反位
fault: device.fault /** 非故障*/
};
}
handleSignal(device) {
this.statusObj = {
fault: device.fault, /** 非故障*/
atsControl: device.atsControl, /** 0是人工控制1是自动控制 */
blockade: device.blockade,
logicLight: device.logicLight,
greenOpen: device.greenOpen,
redOpen: device.redOpen,
yellowOpen: device.yellowOpen,
ciControl: device.ciControl || 0,
canSetCi: !!device.canSetCi
};
}
handlePsd(device) {
this.statusObj = {
screenDoorOpenStatus: device.close, // 屏蔽门是否开门
lock: device.lock, // 屏蔽门是否锁闭
interlockRelease: device.interlockRelease, // 是否互锁解除
fault: device.fault, /** 非故障*/
alarmStatus:device.alarmStatus, // 收到警报(西安二号线样式 暂时后端没加该字段)
emergencyDepart:device.emergencyDepart // 紧急出发按钮激活(西安二号线样式 暂时后端没加该字段)
};
}
handleStationDelayUnlock(device) {
this.statusObj = {
fault: device.fault /** 非故障*/
};
}
handleTrain(device) {
this.statusObj = {
groupNumber: device.groupNumber, /** 车组号 */
serviceNumber: device.serviceNumber, /** 服务号 */
tripNumber: device.tripNumber, /** 车次号 */
destinationCode: device.destinationCode, /** 目的地码 */
sectionCode: device.sectionCode, /** 列车所在区段 */
speed: device.speed, /** 列车速度 */
right: device.right, /** 列车方向 */
doorCloseLock: device.doorCloseLock, /** 车门是否关闭且锁闭 */
stop: device.stop, /** 列车是否停稳 */
type: device.type, /** 列车类型 PLAN计划车 HEAD 头码车 MANUAL 人工车*/
runLevel: device.runLevel, /** 列车运行级别 */
driveMode: device.driveMode, /** 驾驶模式 */
fault: device.fault, /** 非故障*/
jump: device.jump, /** 是否跳停 */
hold: device.hold, /** 是否扣车 */
offsetp:device.offsetp, /** 列车精确位置 (成都一号线使用)*/
physicalCode:device.physicalCode /** 列车所在物理区段 */
};
}
handleStation(device) {
this.statusObj = {
controlMode: device.controlMode,
fault: device.fault /** 非故障*/
};
}
handleOverAp(device) {
this.statusObj = {
remainTime: device.remainTime
};
}
handleZcControl(device) {
this.statusObj = { };
}
handleLcControl(device) {
this.statusObj = { };
}
handleLimitControl(device) {
this.statusObj = { };
}
handleStationTurnBack(device) {
this.statusObj = { };
}
handleFloodGate(device) {
this.statusObj = { };
}
getStatus() {
return this.statusObj;
}
}
export default function transitionDeviceStatus(device) {
const statusDevice = new Status(device);
const status = statusDevice.getStatus();
return deepAssign(device, status);
}