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, /** 非故障*/ num:device.num }; } handleSection(device) { this.statusObj = { blockade: device.blockade, // 轨道是否封锁 routeLock: device.routeLock, // 是否进路锁闭 overlapLock: device.overlapLock, // 进路延续保护锁闭 ctOccupied: device.ctOccupied, // 通信车占用 nctOccupied: device.nctOccupied, // 非通信车占用 fault: device.fault, /** 非故障*/ faultLock: device.faultLock /** 故障锁闭 */ }; } handleSwitch(device) { this.statusObj = { singleLock: device.singleLock, // 是否单锁 blockade: device.blockade, // 是否封锁 routeLock: device.routeLock, // 是否进路锁闭 overlapLock: device.overlapLock, // 是否进路延续保护锁闭 pos:device.pos, // 道岔位置定位、反位 N-定位 R-反位 NO-无(失表) EX-挤叉 fault: device.fault /** 非故障*/ }; } handleSignal(device) { this.statusObj = { fault: device.fault, /** 非故障*/ atsControl: device.atsControl, /** 0是人工控制,1是自动控制 */ blockade: device.blockade, logicLight: device.logicLight, aspect:device.aspect, // 信号机颜色默认状态 R-红 G-绿 Y-黄 W-月白 B-蓝 RY-红黄 RW-红白 GG-绿绿 GY-绿黄 YY-黄黄 RF-红闪 YF-黄闪 GF-绿闪 WF-白闪 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, /** 列车所在物理区段 */ num:device.num /** 列车上的人数*/ }; } 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 = { }; } handleDirectionRod(device) { this.statusObj = { reversed: device.reversed }; } handleResponder(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); }