diff --git a/src/jmapNew/config/skinCode/chengdu_03.js b/src/jmapNew/config/skinCode/chengdu_03.js index 97d86d895..301fbb1e0 100644 --- a/src/jmapNew/config/skinCode/chengdu_03.js +++ b/src/jmapNew/config/skinCode/chengdu_03.js @@ -346,14 +346,15 @@ class SkinCode extends defaultStyle { this[deviceType.StationTurnBack] = { // 站后折返 lamp: { - fill: '#f1f1f1', // 填充色 - radiusR: 7 // 控制灯大小 + fill: '#ccc', // 填充色 + radiusR: 6, + otherFill: '#0F0' // 控制灯大小 }, text: { titleTextShow: false, fontWeight: 580, fontSize: 10, - distance: 10 + distance: 5 }, rect: { fill: 'rgba(0,0,0,0)', diff --git a/src/jmapNew/shape/graph/StationTurnBack/index.js b/src/jmapNew/shape/graph/StationTurnBack/index.js index 7c3fd90ca..10d053a5b 100644 --- a/src/jmapNew/shape/graph/StationTurnBack/index.js +++ b/src/jmapNew/shape/graph/StationTurnBack/index.js @@ -166,6 +166,11 @@ export default class StationTurnBack extends Group { this.control && this.control.highlightType3(this.style.ReturnModeGroup.highlightColor); } } + if (this.style.StationTurnBack.lamp.otherFill) { + if (name == '自动折返' || name == '固定折返轨1' || name == '固定折返轨1') { + this.control && this.control.setStyle({fill: this.style.StationTurnBack.lamp.otherFill}); + } + } } setAshShow() { diff --git a/src/jmapNew/theme/chengdu_03/menus/dialog/stationBackStrategy.vue b/src/jmapNew/theme/chengdu_03/menus/dialog/stationBackStrategy.vue new file mode 100644 index 000000000..972a0992b --- /dev/null +++ b/src/jmapNew/theme/chengdu_03/menus/dialog/stationBackStrategy.vue @@ -0,0 +1,174 @@ + + + diff --git a/src/jmapNew/theme/chengdu_03/menus/dispatchWorkMenu.vue b/src/jmapNew/theme/chengdu_03/menus/dispatchWorkMenu.vue index ed43be196..2edc6a1b6 100644 --- a/src/jmapNew/theme/chengdu_03/menus/dispatchWorkMenu.vue +++ b/src/jmapNew/theme/chengdu_03/menus/dispatchWorkMenu.vue @@ -8,6 +8,7 @@ + @@ -24,6 +25,7 @@ import MenuSwitch from './menuSwitch'; import MenuSection from './menuSection'; import MenuStation from './menuStation'; import MenuTrain from './menuTrain'; +import MenuStationTurnBack from './menuStationTurnBack.vue'; import PassiveAlarm from './passiveDialog/alarm'; import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control'; @@ -40,7 +42,8 @@ export default { MenuTrain, PassiveAlarm, PassiveContorl, - PassiveTimeout + PassiveTimeout, + MenuStationTurnBack }, props: { selected: { diff --git a/src/jmapNew/theme/chengdu_03/menus/menuButton.vue b/src/jmapNew/theme/chengdu_03/menus/menuButton.vue index bc55f7cd9..62e77beb5 100644 --- a/src/jmapNew/theme/chengdu_03/menus/menuButton.vue +++ b/src/jmapNew/theme/chengdu_03/menus/menuButton.vue @@ -350,7 +350,7 @@ export default { } } // 如果该信号机红灯亮 而且 所属区段左右两侧区段锁闭 执行信号重启操作 - if (signal.aspect == 'R' && isArrangementRoute) { // 信号重启 + if (signal.lockedRouteCode) { // 信号重启 operate.over = true; operate.cmdType = CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL; operate.code = deviceList[0].code; @@ -370,7 +370,8 @@ export default { this.routeList.forEach(item => { // item.endButtonSignalCode // 起始信号机 和 结束信号机按钮 过滤进路 - if (item.startSignalCode === deviceList[0].code && item.endSignalCode === deviceList[1].code) { + const endSignalCode = item.endButtonSignalCode || item.endSignalCode; + if (item.startSignalCode === deviceList[0].code && endSignalCode === deviceList[1].code) { operate.over = true; operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_ROUTE; operate.code = deviceList[1].code; @@ -396,19 +397,28 @@ export default { operation: this.$store.state.menuOperation.buttonOperation, param: {} }; - if (model._type === 'StationStand' && subType === 'StopJumpLamp') { + let controlMode = ''; + const station = this.$store.getters['map/getDeviceByCode'](model.stationCode); + if (station) { + controlMode = station.controlMode; + // if (station.controlMode == 'Local' || station.controlMode == 'Emergency') { + // controlFlag = true;Interlock + // } + } + const list2 = ['Local', 'Emergency']; + if (model._type === 'StationStand' && subType === 'StopJumpLamp' && list2.includes(controlMode)) { operate.cmdType = CMD.Stand.CMD_STAND_SET_JUMP_STOP; operate.param = {standCode: model.code, trainGroupNumber: ''}; operate.code = model.code; - } else if (model._type === 'StationStand' && subType === 'CancelStopJumpLamp') { + } else if (model._type === 'StationStand' && subType === 'CancelStopJumpLamp' && list2.includes(controlMode)) { operate.cmdType = CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP; operate.param = {standCode: model.code, trainGroupNumber: ''}; operate.code = model.code; - } else if (model._type === 'AutoTurnBack' ) { + } else if (model._type === 'AutoTurnBack' && controlMode === 'Interlock') { operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_AUTO_TURN_BACK; operate.param = {cycleCode: model.cycleCode}; operate.code = model.code; - } else if (model._type === 'AutomaticRoute') { + } else if (model._type === 'AutomaticRoute' && controlMode === 'Interlock') { const route = this.routeData[model.automaticRouteCode]; operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_CI_AUTO; operate.param = {signalCode: route.startSignalCode}; @@ -436,13 +446,16 @@ export default { operate.code = model.code; break; case 'interconnected': - operate.cmdType = CMD.ControlConvertMenu.CMD_CM_EMERGENCY_STATION_CONTROL; + operate.cmdType = CMD.ControlConvertMenu.CMD_CM_INTERLOCK_CONTROL; delete operate.over; operate.subType = 'interconnected'; operate.param = {stationCodes: [model.code]}; operate.code = model.code; break; } + } else { + this.$message.info('请检查操作设备或控制权'); + return; } this.$store.dispatch('trainingNew/next', operate).then(({ valid, response }) => { // 判断是否需要 弹窗密码框 @@ -559,7 +572,8 @@ export default { }; let flag = false; this.routeList.forEach(item => { - if (item.startSignalCode === deviceList[0].code && item.endSignalCode === deviceList[1].code) { + const endSignalCode = item.endButtonSignalCode || item.endSignalCode; + if (item.startSignalCode === deviceList[0].code && endSignalCode === deviceList[1].code) { operate.param = {routeCode: item.code, signalCode: deviceList[0].code}; this.deviceList = []; flag = true; @@ -705,38 +719,37 @@ export default { this.handelFunctionButton(model, subType); } else { const station = this.$store.getters['map/getDeviceByCode'](model.stationCode); + const list1 = ['Local', 'Emergency', 'Interlock']; + const list2 = ['Local', 'Emergency']; if (station) { - if (station.controlMode == 'Local' || station.controlMode == 'Emergency') { if (buttonOperation && this.commandTypeList.includes(model._type)) { this.deviceList.push(model); - if (buttonOperation === this.Signal.arrangementRoute.button.operation) { + if (buttonOperation === this.Signal.arrangementRoute.button.operation && list1.includes(station.controlMode)) { this.arrangementRouteOperation(this.deviceList); } else if (buttonOperation === this.MixinCommand.totalCancel.button.operation) { this.handelTotalCancel(model, subType); - } else if (buttonOperation === this.Signal.humanTrainRoute.button.operation) { + } else if (buttonOperation === this.Signal.humanTrainRoute.button.operation && list1.includes(station.controlMode)) { this.handleTotalHumanSolution(model); - } else if (buttonOperation === this.Signal.guide.button.operation) { + } else if (buttonOperation === this.Signal.guide.button.operation && list1.includes(station.controlMode)) { this.handleGuideRoute(this.deviceList); - } else if (buttonOperation === this.Signal.atsAutoControl.button.operation || buttonOperation === this.Signal.humanControl.button.operation) { + } else if ((buttonOperation === this.Signal.atsAutoControl.button.operation || buttonOperation === this.Signal.humanControl.button.operation) && list2.includes(station.controlMode)) { this.handelControlRoute(model); - } else if (switchOperation.includes(buttonOperation)) { + } else if (switchOperation.includes(buttonOperation) && list1.includes(station.controlMode)) { this.handelSwitchOperate(model); - } else if (buttonOperation === this.MixinCommand.block.button.operation || buttonOperation === this.MixinCommand.unblock.button.operation) { + } else if ((buttonOperation === this.MixinCommand.block.button.operation || buttonOperation === this.MixinCommand.unblock.button.operation) && list1.includes(station.controlMode)) { this.handelBlockOrUnblock(model); - } else if (buttonOperation === this.Station.guideLock.button.operation) { + } else if (buttonOperation === this.Station.guideLock.button.operation && station.controlMode === 'Interlock') { this.handelGuideLock(model); - } else if (buttonOperation === this.Section.fault.button.operation) { + } else if (buttonOperation === this.Section.fault.button.operation && list1.includes(station.controlMode)) { this.handelFaultSection(model); } else { this.clearOperate(); + this.operatemode != OperateMode.FAULT && this.$message.info('请检查操作设备或控制权'); } } else { this.clearOperate(); + this.operatemode != OperateMode.FAULT && this.$message.info('请检查操作设备或控制权'); } - } else { - this.clearOperate(); - this.operatemode != OperateMode.FAULT && this.$message.info('请先切换到站控或紧急站控'); - } } } }, diff --git a/src/jmapNew/theme/chengdu_03/menus/menuStationTurnBack.vue b/src/jmapNew/theme/chengdu_03/menus/menuStationTurnBack.vue new file mode 100644 index 000000000..099530489 --- /dev/null +++ b/src/jmapNew/theme/chengdu_03/menus/menuStationTurnBack.vue @@ -0,0 +1,105 @@ + + + diff --git a/src/jmapNew/theme/datie_02/menus/ctcWorkMenu.vue b/src/jmapNew/theme/datie_02/menus/ctcWorkMenu.vue index 7a3b42018..8e8455050 100644 --- a/src/jmapNew/theme/datie_02/menus/ctcWorkMenu.vue +++ b/src/jmapNew/theme/datie_02/menus/ctcWorkMenu.vue @@ -299,7 +299,7 @@ export default { const picture = this.$store.state.map.map.pictureList.find(picture => picture.stationCodes && picture.stationCodes.includes(this.roleDeviceCode) && picture.type === 'lucency'); if (picture) { this.$jlmap.updateShowStation(list, ''); - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); const deviceList = []; const mapDevice = this.$store.state.map.mapDevice; for (const deviceCode in mapDevice) { @@ -320,7 +320,7 @@ export default { if (this.$store.state.map.map && this.$store.state.map.map.pictureList) { const picture = this.$store.state.map.map.pictureList.find(picture => picture.stationCodes && picture.stationCodes.includes(this.roleDeviceCode) && picture.type === 'chainStation'); if (picture) { - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); const deviceList = []; const mapDevice = this.$store.state.map.mapDevice; for (const deviceCode in mapDevice) { diff --git a/src/jmapNew/theme/datie_02/menus/dialog/regionBatchOperation.vue b/src/jmapNew/theme/datie_02/menus/dialog/regionBatchOperation.vue index d022f2322..2c838be88 100644 --- a/src/jmapNew/theme/datie_02/menus/dialog/regionBatchOperation.vue +++ b/src/jmapNew/theme/datie_02/menus/dialog/regionBatchOperation.vue @@ -100,7 +100,7 @@ export default { this.show = true this.$nextTick(() => { const picData = this.mapData.pictureList.find(pic => pic.stationCodes.includes(stationCode) && pic.type === 'regionBatchOperation') - this.$store.dispatch('map/setPictureDeviceMap', picData.deviceMap) + this.$store.dispatch('map/setPictureDeviceMap', picData.deviceMap || {}) const list = [] for (const deviceCode in picData.deviceMap) { list.push(deviceCode) diff --git a/src/views/designPlatform/bigScreen.vue b/src/views/designPlatform/bigScreen.vue index 7df15f81d..ff8303706 100644 --- a/src/views/designPlatform/bigScreen.vue +++ b/src/views/designPlatform/bigScreen.vue @@ -131,7 +131,7 @@ export default { picture = this.$store.state.map.map.pictureList.find(picture => picture.type === 'bigScreen'); } if (picture) { - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); const deviceList = []; const mapDevice = this.$store.state.map.mapDevice; for (const deviceCode in mapDevice) { diff --git a/src/views/newMap/display/terminals/bigScreen.vue b/src/views/newMap/display/terminals/bigScreen.vue index a67e34b82..16de62378 100644 --- a/src/views/newMap/display/terminals/bigScreen.vue +++ b/src/views/newMap/display/terminals/bigScreen.vue @@ -49,7 +49,7 @@ export default { if (this.mapData && this.mapData.pictureList) { const picture = this.$store.state.map.map.pictureList.find(picture => picture.type === 'bigScreen'); if (picture) { - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); const deviceList = []; const mapDevice = this.$store.state.map.mapDevice; for (const deviceCode in mapDevice) { diff --git a/src/views/newMap/display/terminals/dispatchWork.vue b/src/views/newMap/display/terminals/dispatchWork.vue index e29d64eb1..a0105ee85 100644 --- a/src/views/newMap/display/terminals/dispatchWork.vue +++ b/src/views/newMap/display/terminals/dispatchWork.vue @@ -97,7 +97,7 @@ export default { list.push(this.mapDevice[key]); deviceList.push(key); } - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); setTimeout(() => { this.$jlmap.updatePicture(deviceList); const trainingDetail = this.$store.state.trainingNew.trainingDetail; diff --git a/src/views/newMap/display/terminals/emergencyDispatchWork.vue b/src/views/newMap/display/terminals/emergencyDispatchWork.vue index cc5e16649..3a6e13e4e 100644 --- a/src/views/newMap/display/terminals/emergencyDispatchWork.vue +++ b/src/views/newMap/display/terminals/emergencyDispatchWork.vue @@ -61,7 +61,7 @@ export default { if (this.mapData && this.mapData.pictureList) { const picture = this.$store.state.map.map.pictureList.find(picture => picture.type === 'bigScreen'); if (picture) { - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); const deviceList = []; const mapDevice = this.$store.state.map.mapDevice; for (const deviceCode in mapDevice) { diff --git a/src/views/newMap/display/terminals/interlockWork.vue b/src/views/newMap/display/terminals/interlockWork.vue index 4c3bc082a..a34bfbf03 100644 --- a/src/views/newMap/display/terminals/interlockWork.vue +++ b/src/views/newMap/display/terminals/interlockWork.vue @@ -82,7 +82,7 @@ export default { deviceList.push(key); } this.$jlmap.updateShowStation(list); - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); setTimeout(() => { this.$jlmap.updatePicture(deviceList); this.$jlmap.updateTransform(picture.scaling, picture.origin); diff --git a/src/views/newMap/display/terminals/lineMonitor.vue b/src/views/newMap/display/terminals/lineMonitor.vue index 1cf33fbb5..7f2d2fae3 100644 --- a/src/views/newMap/display/terminals/lineMonitor.vue +++ b/src/views/newMap/display/terminals/lineMonitor.vue @@ -89,7 +89,7 @@ export default { list.push(this.mapDevice[key]); deviceList.push(key); } - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); setTimeout(() => { this.$jlmap.updatePicture(deviceList); const trainingDetail = this.$store.state.trainingNew.trainingDetail; diff --git a/src/views/newMap/display/terminals/localWork.vue b/src/views/newMap/display/terminals/localWork.vue index 446fbfc02..4bf81bb12 100644 --- a/src/views/newMap/display/terminals/localWork.vue +++ b/src/views/newMap/display/terminals/localWork.vue @@ -117,7 +117,7 @@ export default { deviceList.push(key); } this.$jlmap.updateShowStation(list); - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); setTimeout(() => { this.$jlmap.updatePicture(deviceList); const trainingDetail = this.$store.state.trainingNew.trainingDetail; diff --git a/src/views/newMap/display/terminals/trafficTerminalWork.vue b/src/views/newMap/display/terminals/trafficTerminalWork.vue index 74b716050..5f411eadb 100644 --- a/src/views/newMap/display/terminals/trafficTerminalWork.vue +++ b/src/views/newMap/display/terminals/trafficTerminalWork.vue @@ -92,7 +92,7 @@ export default { deviceList.push(key); } this.$jlmap.updateShowStation(list); - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); this.$jlmap.updatePicture(deviceList); this.$jlmap.updateTransform(picture.scaling, picture.origin); this.$store.dispatch('map/setShowCentralizedStationCode', this.centralizedStationMap[this.roleDeviceCode]); diff --git a/src/views/newMap/display/terminals/troDetailWork.vue b/src/views/newMap/display/terminals/troDetailWork.vue index b3e533f50..39aecdaa6 100644 --- a/src/views/newMap/display/terminals/troDetailWork.vue +++ b/src/views/newMap/display/terminals/troDetailWork.vue @@ -118,7 +118,7 @@ export default { list.push(this.mapDevice[key]); deviceList.push(key); } - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); setTimeout(() => { this.$jlmap.updatePicture(deviceList); const trainingDetail = this.$store.state.trainingNew.trainingDetail; diff --git a/src/views/newMap/display/terminals/troWork.vue b/src/views/newMap/display/terminals/troWork.vue index 4bdbe10bb..4224380b0 100644 --- a/src/views/newMap/display/terminals/troWork.vue +++ b/src/views/newMap/display/terminals/troWork.vue @@ -48,7 +48,7 @@ export default { if (this.mapData && this.mapData.pictureList) { const picture = this.$store.state.map.map.pictureList.find(picture => picture.type === 'bigScreen'); if (picture) { - this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', picture.deviceMap || {}); const deviceList = []; const mapDevice = this.$store.state.map.mapDevice; for (const deviceCode in mapDevice) { diff --git a/src/views/newMap/mapDraftPicture/index.vue b/src/views/newMap/mapDraftPicture/index.vue index d896b8a9e..538b0554d 100644 --- a/src/views/newMap/mapDraftPicture/index.vue +++ b/src/views/newMap/mapDraftPicture/index.vue @@ -451,7 +451,7 @@ export default { this.$refs.mapOperate.pictureChanged(pictureName); const pictureModel = this.$store.state.map.map.pictureList.find(elem => elem.name == pictureName); const deviceMap = pictureModel ? pictureModel.deviceMap : {}; - this.$store.dispatch('map/setPictureDeviceMap', deviceMap); + this.$store.dispatch('map/setPictureDeviceMap', deviceMap || {}); const deviceList = []; const map = this.$store.state.map.map; const mapDevice = this.$store.state.map.mapDevice; diff --git a/src/views/newMap/newMapdraft/mapoperate/simulationMember/index.vue b/src/views/newMap/newMapdraft/mapoperate/simulationMember/index.vue index 8e8b9005e..ccd7bd1f7 100644 --- a/src/views/newMap/newMapdraft/mapoperate/simulationMember/index.vue +++ b/src/views/newMap/newMapdraft/mapoperate/simulationMember/index.vue @@ -1199,7 +1199,13 @@ export default { deviceCode: '' }; memberMap[this.generationForm.systemType].push(memberEnvironmentDispatcher); - + const memberScheduling = { + id: this.getMemberId(this.generationForm.systemType), + name: '', + type: 'SCHEDULING', + deviceCode: '' + }; + memberMap[this.generationForm.systemType].push(memberScheduling); } this.$message.success('一键生成成功!'); this.resetForm();