Merge branch 'test'

This commit is contained in:
zyy 2020-06-30 16:10:35 +08:00
commit 6337b5f8da
81 changed files with 2211 additions and 2294 deletions

View File

@ -70,7 +70,7 @@ export default {
},
subscribeMessage(res) {
if (this.$refs.deomonTopic && !window.location.href.includes('trainroom')) {
if (getSessionStorage('project') != 'refereeJsxt' && getSessionStorage('project') != 'jsxt') {
if (getSessionStorage('project') != 'refereeJsxt' && getSessionStorage('project') != 'jsxt' && !(getSessionStorage('project').includes('design'))) {
this.$refs.deomonTopic.doShow(res);
}
this.$store.dispatch('socket/setRoomInvite');

View File

@ -18,6 +18,15 @@ export function setFailureMode(data, group) {
});
}
/** 设置自动故障(新版)*/
export function setFailureModeNew(data, group) {
return request({
url: `/simulation/${group}/faultMode`,
method: 'post',
data: data
});
}
/**
* 仿真系统按计划行车
*/

View File

@ -54,6 +54,7 @@ export default {
signalDeblock: 'Signal unsealing',
signalReopen: 'Signal reopen',
guideRouteHandle: 'Guide Route handling',
guide: 'Guide',
setInterlockAutoRoute: 'Set Interlock for Auto Routing',
cancelInterlockAutoRoute: 'Cancel Interlock setting for Auto Routing',
setInterlockAutoTrigger: 'Set Interlock for Auto Trigger',

View File

@ -54,6 +54,7 @@ export default {
signalDeblock: '信号解封',
signalReopen: '信号重开',
guideRouteHandle: '引导进路办理',
guide: '引导',
setInterlockAutoRoute: '设置联锁自动进路',
cancelInterlockAutoRoute: '取消联锁自动进路',
setInterlockAutoTrigger: '设置联锁自动触发',

View File

@ -207,53 +207,9 @@ function updateIscsListByDevice(state, name, device) {
}
export function updateIscsData(state, device) {
// const state = store.state;
switch (device._type) {
case deviceType.Vidicon : updateIscsListByDevice(state, 'vidiconList', device); break;
case deviceType.VidiconCloud : updateIscsListByDevice(state, 'vidiconCloudList', device); break;
case deviceType.ManualAlarmButton : updateIscsListByDevice(state, 'manualAlarmButtonList', device); break;
case deviceType.FireHydranAlarmButton: updateIscsListByDevice(state, 'fireHydranAlarmButtonList', device); break;
case deviceType.GasFireControl: updateIscsListByDevice(state, 'gasFireControlList', device); break;
case deviceType.SmokeDetector: updateIscsListByDevice(state, 'smokeDetectorList', device); break;
case deviceType.TemperatureDetector: updateIscsListByDevice(state, 'temperatureDetectorList', device); break;
case deviceType.PlatformScreenDoor: updateIscsListByDevice(state, 'platformScreenDoorList', device); break;
case deviceType.FrozenPump : updateIscsListByDevice(state, 'frozenPumpList', device); break;
case deviceType.Ventilator : updateIscsListByDevice(state, 'ventilatorList', device); break;
case deviceType.Chiller : updateIscsListByDevice(state, 'chillerList', device); break;
case deviceType.CoolTower : updateIscsListByDevice(state, 'coolTowerList', device); break;
case deviceType.EndDoor: updateIscsListByDevice(state, 'endDoorList', device); break;
case deviceType.BorderRadius: updateIscsListByDevice(state, 'borderRadiusList', device); break;
case deviceType.BrakeMachine: updateIscsListByDevice(state, 'brakeMachineList', device); break;
case deviceType.EntranceGuard: updateIscsListByDevice(state, 'entranceGuardList', device); break;
case deviceType.TicketMachine: updateIscsListByDevice(state, 'ticketMachineList', device); break;
case deviceType.SemiAutomaticTicketMachine: updateIscsListByDevice(state, 'semiAutomaticTicketMachineList', device); break;
case deviceType.AirConditioner: updateIscsListByDevice(state, 'airConditionerList', device); break;
case deviceType.OrbitalVentilator: updateIscsListByDevice(state, 'orbitalVentilatorList', device); break;
case deviceType.JetFan: updateIscsListByDevice(state, 'jetFanList', device); break;
case deviceType.TunnelFan: updateIscsListByDevice(state, 'tunnelFanList', device); break;
case deviceType.FireDamper: updateIscsListByDevice(state, 'fireDamperList', device); break;
case deviceType.SmookExhaustFd: updateIscsListByDevice(state, 'smookExhaustFdList', device); break;
case deviceType.SmookProofFd: updateIscsListByDevice(state, 'smookProofFdList', device); break;
case deviceType.VolumeControlDamper: updateIscsListByDevice(state, 'volumeControlDamperList', device); break;
case deviceType.IscsRect: updateIscsListByDevice(state, 'iscsRectList', device); break;
case deviceType.IscsText: updateIscsListByDevice(state, 'iscsTextList', device); break;
case deviceType.IscsLine: updateIscsListByDevice(state, 'iscsLineList', device); break;
case deviceType.Escalator: updateIscsListByDevice(state, 'escalatorList', device); break;
case deviceType.StairControl: updateIscsListByDevice(state, 'stairControlList', device); break;
case deviceType.FasBrakeMachine: updateIscsListByDevice(state, 'fasBrakeMachineList', device); break;
case deviceType.Staircase: updateIscsListByDevice(state, 'staircaseList', device); break;
case deviceType.SingleStaircase: updateIscsListByDevice(state, 'singleStaircaseList', device); break;
case deviceType.ArcStatus: updateIscsListByDevice(state, 'arcStatusList', device); break;
case deviceType.IscsButton: updateIscsListByDevice(state, 'iscsButtonList', device); break;
case deviceType.StateTable: updateIscsListByDevice(state, 'stateTableList', device); break;
case deviceType.LightingGroup: updateIscsListByDevice(state, 'lightingGroupList', device); break;
case deviceType.BalancedElectric: updateIscsListByDevice(state, 'balancedElectricList', device); break;
case deviceType.ElectricButterflyValve: updateIscsListByDevice(state, 'electricButterflyValveList', device); break;
case deviceType.Cistern: updateIscsListByDevice(state, 'cisternList', device); break;
case deviceType.Electrically: updateIscsListByDevice(state, 'electricallyList', device); break;
case deviceType.Stairs: updateIscsListByDevice(state, 'stairsList', device); break;
case deviceType.Elevator: updateIscsListByDevice(state, 'elevatorList', device); break;
case deviceType.Draught: updateIscsListByDevice(state, 'draughtList', device); break;
case deviceType.IscsImage: updateIscsListByDevice(state, 'iscsImageList', device); break;
let type = device._type;
if (type) {
type = type.replace(type[0], type[0].toLowerCase()) + 'List';
updateIscsListByDevice(state, type, device);
}
}

View File

@ -301,6 +301,7 @@ class SkinCode extends defaultStyle {
block: true, // 联合图形封锁状态
flashingColors: '#D600D5', // 联合图形封锁闪烁显示颜色
fork: true, // 挤岔专用(如有挤岔操作 变为true
faultStatus: true, // 宁波失表状态用 挤岔表示
forKColor: 'red' // 挤岔颜色 配合挤岔专用
},
arcBlcok: { // 圆形封锁图形

View File

@ -217,12 +217,13 @@ class Jlmap {
const code = elem.code;
const type = elem._type;
const oDevice = this.mapDevice[code] || deviceFactory(type, elem, this.showConfig);
// const oDevice = deviceFactory(type, elem, this.showConfig);
const nDevice = deepAssign(oDevice || {}, elem);
this.$painter.delete(oDevice);
delete this.mapDevice[code];
if (!elem._dispose) {
this.mapDevice[code] = nDevice;
this.$painter.add(nDevice);
this.$painter.add(nDevice); // 重新赋值instance
}
});

View File

@ -347,12 +347,16 @@ export default class Switch extends Group {
}
setSwitchFault(split) {
if (this.model.switchFaultCode && split) {
const switchFault = store.getters['map/getDeviceByCode'](this.model.switchFaultCode);
switchFault.instance.setControlColor('#F00', true);
} else if (this.model.switchFaultCode && !split) {
const switchFault = store.getters['map/getDeviceByCode'](this.model.switchFaultCode);
switchFault.instance.setControlColor(this.style.backgroundColor, false);
if (this.style.Switch.jointImg.faultStatus && split) {
this.setForkAction(); // 道岔挤岔 宁波线失表状态
} else {
if (this.model.switchFaultCode && split) {
const switchFault = store.getters['map/getDeviceByCode'](this.model.switchFaultCode);
switchFault.instance.setControlColor('#F00', true);
} else if (this.model.switchFaultCode && !split) {
const switchFault = store.getters['map/getDeviceByCode'](this.model.switchFaultCode);
switchFault.instance.setControlColor(this.style.backgroundColor, false);
}
}
}
/** 挤叉*/

View File

@ -110,6 +110,8 @@ import ManageUser from './menuDialog/manageUser';
import HelpAbout from './menuDialog/helpAbout';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import { EventBus } from '@/scripts/event-bus';
import { State2SimulationMap } from '@/scripts/cmdPlugin/Config';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
export default {
name: 'MenuBar',
@ -141,7 +143,7 @@ export default {
valid: true,
menu: [],
menuNormal: {
local: [
Local: [
{
title: '系统',
operate: OperationEvent.Command.mBar.system,
@ -386,7 +388,7 @@ export default {
]
}
],
central: [
Center: [
{
title: '系统',
operate: OperationEvent.Command.mBar.system,
@ -699,8 +701,10 @@ export default {
return list;
},
initMenu(menu) {
if (this.menu[2]) {
this.menu[2].children = this.initStationList();
const type = State2SimulationMap[this.$store.state.training.prdType];
this.menu = MenuContextHandler.menuBarConvert(this.menuNormal[type], this.$store.state.training.operatemode);
if (this.menu[3]) {
this.menu[3].children = this.initStationList();
}
this.clickEvent();
this.closeMenu(true);

View File

@ -1,5 +1,5 @@
<template>
<div v-if="isShowBtn" menuButtonclass="menu menuButton" style="height: 45px;" :style="{left: point.x+'px', bottom: point.y+'px' }">
<div v-if="isShowBtn" id="menuButtons_box" class="menu menuButton" style="height:45px;" :style="{left: point.x+'px', bottom: point.y+'px' }">
<button
:id="Signal.arrangementRoute.button.domId"
:style="{display: 'block', float: 'left', width: width+'px', backgroundColor:buttonUpColor}"

View File

@ -44,37 +44,35 @@ export default {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
if (this.dialogShow) {
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
return '区段设置限速';
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
return '区段取消限速';
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
return '道岔设置限速';
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
return '道岔取消限速';
}
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
return '区段设置限速';
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
return '区段取消限速';
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
return '道岔设置限速';
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
return '道岔取消限速';
}
return '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
if (this.dialogShow) {
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
/** 区段设置限速*/
return OperationEvent.Section.setSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
/** 区段取消限速*/
return OperationEvent.Section.cancelSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
/** 道岔设置限速*/
return OperationEvent.Switch.setSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
/** 道岔取消限速*/
return OperationEvent.Switch.cancelSpeed.confirm.domId;
}
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
/** 区段设置限速*/
return OperationEvent.Section.setSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
/** 区段取消限速*/
return OperationEvent.Section.cancelSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
/** 道岔设置限速*/
return OperationEvent.Switch.setSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
/** 道岔取消限速*/
return OperationEvent.Switch.cancelSpeed.confirm.domId;
}
return '';
}
},
mounted() {
@ -128,7 +126,7 @@ export default {
this.$emit('setOperate', { step: 1, success: true });
this.doClose();
}
}).catch((error) => {
}).catch(() => {
this.loading = false;
this.$emit('setOperate', { step: 0, success: false });
this.doClose();
@ -147,7 +145,7 @@ export default {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
}
}).catch(error => {
}).catch(() => {
this.doClose();
});
}

View File

@ -26,8 +26,6 @@
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'ConfirmTip',
data() {
@ -42,9 +40,7 @@ export default {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
if (this.dialogShow) {
return '提示';
}
return '提示';
}
},
mounted() {

View File

@ -78,7 +78,7 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
// import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'PasswordBox',
@ -87,7 +87,7 @@ export default {
/* 写死的初始密码*/
correctPassword: '123',
dialogShow: false,
operation: null,
operation: '',
checkHasInput: false,
/* 输入值*/
passwordCheck: '',
@ -109,7 +109,7 @@ export default {
}
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.close.password.domId : '';
return this.dialogShow ? OperationHandler.getDomIdByOperation(this.operation) : '';
}
},
mounted() {
@ -120,6 +120,7 @@ export default {
methods: {
doShow(operate) {
this.operate = operate || {};
this.operation = operate.operation;
this.dialogShow = true;
this.checkHasInput = false;
this.$nextTick(function () {

View File

@ -63,7 +63,10 @@
</el-table>
</div>
<el-row justify="center" class="button-group">
<el-col :span="5" :offset="19">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
@ -164,6 +167,24 @@ export default {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
const operate = {
send: true,
operation: OperationEvent.Signal.detail.menu.operation
};
this.loading = true;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate);
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation

View File

@ -101,6 +101,7 @@ export default {
tableStyle: {
'border-bottom': 'none'
},
commitDisabled:true,
controlTypeNameMap: {
'01': '折返',
'02': '直通'
@ -119,18 +120,11 @@ export default {
return this.dialogShow ? OperationEvent.Signal.guide.choose.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.guide.menu.domId : '';
return this.dialogShow ? OperationEvent.Signal.guide.confirm.domId : '';
},
title() {
return '办理引导进路';
},
commitDisabled() {
let disabled = true;
if (this.row) {
disabled = !this.row.canSetting;
}
return disabled;
},
...mapGetters('map', [
'signalList',
'mapConfig'
@ -177,6 +171,7 @@ export default {
},
doShow(operate, selected, tempData) {
this.selected = selected;
this.commitDisabled = true;
//
if (!this.dialogShow) {
this.signalName = '';
@ -204,11 +199,12 @@ export default {
this.$store.dispatch('training/emitTipFresh');
},
clickEvent(row, event, column) {
this.computedCommitDisabled(row);
this.commitDisabled = false;
this.row = row;
if (row) {
const operate = {
operation: OperationEvent.Signal.guide.choose.operation
operation: OperationEvent.Signal.guide.choose.operation,
val: row.code
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
@ -219,12 +215,11 @@ export default {
},
//
commit() {
if (this.row && this.row.canSetting) {
if (this.row && this.row.code) {
const operate = {
over: true,
operation: OperationEvent.Signal.guide.confirm.operation,
cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE,
val: this.row.code,
param: {
routeCode: this.row.code
}
@ -234,7 +229,6 @@ export default {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
} else {
this.doClose();
@ -259,9 +253,6 @@ export default {
}).catch(() => {
this.doClose();
});
},
computedCommitDisabled(row) {
this.commitDisabled = !row.canSetting;
}
}
};

View File

@ -193,7 +193,7 @@ export default {
clickEvent(row, event, column) {
this.highlight = false;
if (row && !row.disabled) {
if (row && row.code) {
this.highlight = true;
this.selection = [row];
this.commitDisabled = false;
@ -201,7 +201,8 @@ export default {
this.row = row;
//
const operate = {
operation: ''
operation: '',
val: row.code
};
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
/** 进路交人工控*/
@ -231,9 +232,8 @@ export default {
humanControl() {
const operate = {
over: true,
operation: OperationEvent.Signal.humanControl.menu.operation,
operation: this.operation,
cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING,
val: this.row.code,
param: {
routeCodeList: [this.row.code]
}
@ -255,9 +255,8 @@ export default {
atsAutoControl() {
const operate = {
over: true,
operation: OperationEvent.Signal.atsAutoControl.menu.operation,
operation: this.operation,
cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING,
val: this.row.code,
param: {
routeCodeList: [this.row.code]
}

View File

@ -248,7 +248,8 @@ export default {
//
const operate = {
operation: OperationEvent.Signal.arrangementRoute.choose.operation
operation: OperationEvent.Signal.arrangementRoute.choose.operation,
val: row.code
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
@ -262,7 +263,6 @@ export default {
if (this.row && this.row.canSetting) {
const operate = {
operation: OperationEvent.Signal.arrangementRoute.menu.operation,
val: this.row.code,
param: {
routeCode: this.row.code
}
@ -272,7 +272,7 @@ export default {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_ROUTE;
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.passwordBox.doShow(operate);
this.doClose();
}
@ -287,9 +287,7 @@ export default {
const operate = {
over: true,
operation: data.operation,
cmdType: data.cmdType,
val: data.val,
param: data.param
cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE
};
this.loading = true;

View File

@ -95,17 +95,7 @@
指定列车跳停</el-radio>
<div style="float: left;">
<span>车组号</span>
<el-input
v-if="radio1 != 2"
:id="domIdJumpStop"
v-model="tripNumber"
style="width: 120px; margin-left: 20px;"
size="small"
:disabled="radio == '01'"
@blur="handleTrainNoBlur"
/>
<el-select
v-if="radio1 == 2"
:id="domIdCancelJumpStop"
v-model="tripNumber"
style="width: 120px; margin-left: 20px;"
@ -170,10 +160,9 @@
style="display: block; text-align: left; margin-left: 0; float: left;"
>
人工</el-radio>
<div style="float: left; margin-left: 20px;">
<span v-if="radio2 == 2">运行等级</span>
<div v-if="radio2 == 2" style="float: left; margin-left: 20px;">
<span>运行等级</span>
<el-select
v-if="radio2 == 2"
:id="domIdRunLevel"
v-model="trainRunlevel"
style="width: 120px; margin-left: 20px;"
@ -189,6 +178,17 @@
/>
</el-select>
</div>
<div v-if="radio2 == 1" style="float: left; margin-left: 20px;">
<span>停站时间</span>
<el-input
:id="domIdStopTime"
v-model="trainStopTime"
style="width: 120px; margin-left: 20px;"
size="small"
:disabled="radio == '01'"
@blur="handleTrainStopTime"
/>
</div>
</el-col>
</el-radio-group>
</el-row>
@ -264,6 +264,7 @@ export default {
tripNumber: '',
effective: '01',
trainRunlevel: 2,
trainStopTime: 0,
disabledTime: true
};
},
@ -290,9 +291,9 @@ export default {
return this.dialogShow ? OperationEvent.StationStand.cancelJumpStop.select.domId : '';
}
},
domIdJumpStop() {
return this.dialogShow ? OperationEvent.StationStand.setJumpStop.choose.domId : '';
},
// domIdJumpStop() {
// return this.dialogShow ? OperationEvent.StationStand.setJumpStop.choose.domId : '';
// },
domIdCancelJumpStop() {
return this.dialogShow ? OperationEvent.StationStand.cancelJumpStop.choose.domId : '';
},
@ -319,7 +320,7 @@ export default {
title() {
if (this.operation == OperationEvent.StationStand.setDetainTrain.menu.operation) {
return '扣车';
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation || this.operation == OperationEvent.StationStand.cancelDetainTrainAll.menu.operation) {
return '取消扣车';
} else if (this.operation == OperationEvent.StationStand.setJumpStop.menu.operation) {
return '设置跳停';
@ -335,33 +336,34 @@ export default {
},
watch: {
operation(data) {
this.JumpStop = false;
this.RunLevel = false;
this.DetainTrain = false;
this.radio = '01';
this.radio1 = '1';
this.radio2 = '1';
this.effective = '01';
if (data == OperationEvent.StationStand.setDetainTrain.menu.operation) {
this.radio1 = '1';
if (data != OperationEvent.StationStand.cancelDetainTrainAll.menu.operation) {
this.JumpStop = false;
this.RunLevel = false;
this.DetainTrain = false;
this.radio = '01';
this.DetainTrain = true;
} else if (data == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
this.radio1 = '2';
this.radio = '01';
this.DetainTrain = true;
} else if (data == OperationEvent.StationStand.setJumpStop.menu.operation) {
this.JumpStop = true;
this.radio1 = '1';
} else if (data == OperationEvent.StationStand.cancelJumpStop.menu.operation) {
this.JumpStop = true;
this.radio1 = '2';
} else if (data == OperationEvent.StationStand.setStopTime.menu.operation) {
this.RunLevel = true;
this.radio2 = '1';
} else if (data == OperationEvent.StationStand.setRunLevel.menu.operation) {
this.RunLevel = true;
this.radio2 = '2';
if (data == OperationEvent.StationStand.setDetainTrain.menu.operation) {
this.radio1 = '1';
this.radio = '01';
this.DetainTrain = true;
} else if (data == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
this.radio1 = '2';
this.radio = '01';
this.DetainTrain = true;
} else if (data == OperationEvent.StationStand.setJumpStop.menu.operation) {
this.JumpStop = true;
this.radio1 = '1';
} else if (data == OperationEvent.StationStand.cancelJumpStop.menu.operation) {
this.JumpStop = true;
this.radio1 = '2';
} else if (data == OperationEvent.StationStand.setStopTime.menu.operation) {
this.RunLevel = true;
this.radio2 = '1';
} else if (data == OperationEvent.StationStand.setRunLevel.menu.operation) {
this.RunLevel = true;
this.radio2 = '2';
}
}
}
},
@ -390,9 +392,8 @@ export default {
}
if (this.operation == OperationEvent.StationStand.setJumpStop.menu.operation || this.operation == OperationEvent.StationStand.setJumpStop.menu.operation) {
this.radio = selected.direction;
} else if (this.operation == OperationEvent.StationStand.setStopTime.menu.operation) {
this.effective = '01';
}
this.effective = '02';
this.radio = '01';
this.disabledTime = true;
this.trainList = this.map.trainList; //
@ -407,79 +408,53 @@ export default {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.operation = '';
this.trainStopTime = 0;
},
choose(upDown) {
// code
choose(upDown) { // code
const operate = {
operation: OperationEvent.StationStand.cancelDetainTrain.choose.operation,
val: this.radio
};
if (this.radio == '02' || this.radio == '03') {
this.operation = OperationEvent.StationStand.cancelDetainTrainAll.menu.operation;
} else {
this.operation = OperationEvent.StationStand.cancelDetainTrain.menu.operation;
}
this.handleBreak(operate);
},
trainNoSelectChange(upDown) { //
const operate = {
operation: OperationEvent.StationStand.cancelDetainTrain.choose.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
handleTrainNoBlur() { //
const operate = {
operation: OperationEvent.StationStand.cancelDetainTrain.choose.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
trainNoSelectChange(upDown) { //
const operate = {
operation: OperationEvent.StationStand.cancelDetainTrain.choose.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
this.handleBreak(operate);
},
chooseJumpStop(upDown) {
const operate = {
operation: ''
};
if (this.radio == '02') {
this.tripNumber = '';
}
if (this.radio1 == '1') { //
operate.operation = OperationEvent.StationStand.setJumpStop.select.operation;
} else { //
operate.operation = OperationEvent.StationStand.cancelJumpStop.select.operation;
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
this.handleBreak(operate);
},
chooseEffective(effective) {
const operate = {
operation: ''
operation: '',
val: effective
};
if (this.radio2 == '1') { //
operate.operation = OperationEvent.StationStand.setStopTime.choose2.operation;
} else { //
operate.operation = OperationEvent.StationStand.setRunLevel.choose2.operation;
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
this.handleBreak(operate);
},
chooseStopTime(upDown) {
const operate = {
operation: ''
operation: '',
val: this.radio
};
if (this.radio2 == '1') { //
operate.operation = OperationEvent.StationStand.setStopTime.choose1.operation;
@ -489,25 +464,12 @@ export default {
if (this.radio === '01') {
this.disabledTime = true;
this.trainRunlevel = 2;
this.effective = '02';
} else {
this.disabledTime = false;
this.effective = '01';
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
stopTimeBlur() {
const operate = {
operation: OperationEvent.StationStand.setStopTime.input.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
this.handleBreak(operate);
},
trainNoSelectLevel(upDown) {
const operate = {
@ -517,17 +479,24 @@ export default {
standRunLevel: `${upDown}`
}
};
this.handleBreak(operate);
},
handleTrainStopTime() {
const operate = {
operation: OperationEvent.StationStand.setStopTime.input.operation,
val: `${this.trainStopTime}`
};
this.handleBreak(operate);
},
handleBreak(operate) { //
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
valid && this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
});
},
commit() {
if (this.operation == OperationEvent.StationStand.setDetainTrain.menu.operation) {
this.setDetainTrain(); /** 设置扣车*/
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation || this.operation == OperationEvent.StationStand.cancelDetainTrainAll.menu.operation) {
this.cancelDetainTrain(); /** 取消扣车*/
} else if (this.operation == OperationEvent.StationStand.setJumpStop.menu.operation) {
this.setJumpStop(); /** 设置跳停*/
@ -554,30 +523,22 @@ export default {
if (!valid) {
this.$refs.noticeInfo.doShow(operate);
}
}).catch((error) => {
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
this.$refs.noticeInfo.doShow();
});
},
//
cancelDetainTrain() {
const operate = {
over: true,
operation: OperationEvent.StationStand.cancelDetainTrain.menu.operation,
operation: this.operation,
cmdType: CMD.Stand.CMD_STAND_CANCEL_HOLD_TRAIN,
val: `${this.radio}`,
param: {
standAllLine: `${this.radio}`
}
};
if (this.radio == '02') {
operate.operation = OperationEvent.StationStand.cancelDetainTrainAll.menu.operation;
operate['val'] = '02';
} else if (this.radio == '03') {
operate.operation = OperationEvent.StationStand.cancelDetainTrainAll.menu.operation;
operate['val'] = '01';
}
this.loading = true;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
@ -586,10 +547,10 @@ export default {
if (!valid) {
this.$refs.noticeInfo.doShow(operate);
}
}).catch((error) => {
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
this.$refs.noticeInfo.doShow();
});
},
//
@ -609,10 +570,10 @@ export default {
if (valid) {
this.doClose();
}
}).catch((error) => {
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
this.$refs.noticeInfo.doShow();
});
},
//
@ -632,22 +593,21 @@ export default {
if (valid) {
this.doClose();
}
}).catch((error) => {
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
this.$refs.noticeInfo.doShow();
});
},
//
setStopTime() {
const forver = this.effective == '01';
const operate = {
over: true,
operation: OperationEvent.StationStand.setStopTime.menu.operation,
cmdType: CMD.Stand.CMD_STAND_SET_PARK_TIME,
param: {
parkingTime: this.radio == '01' ? -1 : 1,
parkingAlwaysValid: forver
parkingTime: this.radio == '01' ? -1 : this.trainStopTime,
parkingAlwaysValid: `${this.effective != '01'}`
}
};
@ -657,30 +617,21 @@ export default {
if (valid) {
this.doClose();
}
}).catch((error) => {
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
this.$refs.noticeInfo.doShow();
});
},
//
setRunLevel() {
const forver = this.effective == '01';
// let val = this.radio;
// if (this.radio == '02') {
// val = `${this.radio}::${this.trainRunlevel}::${forver}`;
// } else {
// val = `${this.radio}::01::${forver}`;
// }
const operate = {
over: true,
operation: OperationEvent.StationStand.setRunLevel.menu.operation,
cmdType: CMD.Stand.CMD_STAND_SET_RUN_TIME,
param: {
// standStopControl: `${this.radio}`,
runLevelTime: this.radio === '02' ? this.trainRunlevel : 2,
runLevelTimeForever: forver
runLevelTimeForever: `${this.effective != '01'}`
}
};
@ -690,10 +641,10 @@ export default {
if (valid) {
this.doClose();
}
}).catch((error) => {
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
this.$refs.noticeInfo.doShow();
});
},
cancel() {
@ -713,8 +664,13 @@ export default {
}
};
</script>
<style>
<style lang="scss" scoped>
.stand-detain-train .context {
height: 80px !important;
}
/deep/ {
.el-input--mini .el-input__icon{
line-height: 100%;
}
}
</style>

View File

@ -727,7 +727,7 @@ export default {
initMenu(menu) {
this.menu = MenuContextHandler.menuBarConvert(this.menuNormal[State2SimulationMap[this.$store.state.training.prdType]], this.$store.state.training.operatemode);
if (this.menu.length) {
this.menu[2].children = this.initStationList();
this.menu[3].children = this.initStationList();
this.clickEvent();
this.closeMenu(true);
}

View File

@ -1,5 +1,5 @@
<template>
<div v-if="isShowBtn" class="menu" style="height: 45px;" :style="{left: point.x+'px', top: point.y+'px' }">
<div v-if="isShowBtn" id="menuButtons_box" class="menu" style="height: 45px;" :style="{left: point.x+'px', top: point.y+'px' }">
<button :id="Signal.arrangementRoute.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Signal.arrangementRoute.button.operation, ['Signal'])">
<span style="color: black">
<center><b></b><b></b></center>
@ -73,7 +73,7 @@
<center><b></b></center>
</span>
</button>
<button :id="MixinCommand.functionButton.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(MixinCommand.functionButton.button.operation, ['StationStand', 'AutoTurnBack', 'AutomaticRoute'])">
<button :id="MixinCommand.functionButton.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(MixinCommand.functionButton.button.operation, ['StationStand', 'AutoTurnBack', 'AutomaticRoute', 'Station'])">
<span style="color: black">
<center>
<b style="color:#4B4B99"></b>
@ -275,7 +275,6 @@ export default {
this.deviceList = [];
if (operation != this.Command.cancel.clearMbm.operation) {
const operate = {
type: 'mbm',
operation: operation
};
const operationList = [this.Signal.humanTrainRoute.button.operation, this.Section.fault.button.operation, this.Switch.unlock.button.operation, this.MixinCommand.unblock.button.operation, this.Station.guideLock.button.operation];
@ -374,6 +373,21 @@ export default {
const route = this.routeData[model.automaticRouteCode];
operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_CI_AUTO;
operate.param = {signalCode: route.startSignalCode};
} else if (model._type === 'Station') {
switch (subType) {
case 'substation':
operate.cmdType = CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_STATION_CONTROL;
operate.param = {stationCodes: [model.code]};
break;
case 'center':
operate.cmdType = CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL;
operate.param = {stationCodes: [model.code]};
break;
case 'emergency':
operate.cmdType = CMD.ControlConvertMenu.CMD_CM_FORCE_STATION_CONTROL;
operate.param = {stationCodes: [model.code]};
break;
}
}
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {}).catch((error) => {
this.deviceList = [];
@ -576,33 +590,47 @@ export default {
const model = this.$store.state.menuOperation.selected; //
const subType = this.$store.state.menuOperation.subType; //
const switchOperation = [this.Switch.lock.button.operation, this.Switch.unlock.button.operation, this.Switch.locate.button.operation, this.Switch.reverse.button.operation];
if (buttonOperation && this.commandTypeList.includes(model._type)) {
this.deviceList.push(model);
if (buttonOperation === this.Signal.arrangementRoute.button.operation) {
this.arrangementRouteOperation(this.deviceList);
} else if (buttonOperation === this.MixinCommand.functionButton.button.operation) {
this.handelFunctionButton(model, subType);
} else if (buttonOperation === this.MixinCommand.totalCancel.button.operation) {
this.handelTotalCancel(model, subType);
} else if (buttonOperation === this.Signal.humanTrainRoute.button.operation) {
this.handleTotalHumanSolution(model);
} else if (buttonOperation === this.Signal.guide.button.operation) {
this.handleGuideRoute(this.deviceList);
} else if (buttonOperation === this.Signal.atsAutoControl.button.operation || buttonOperation === this.Signal.humanControl.button.operation) {
this.handelControlRoute(model);
} else if (switchOperation.includes(buttonOperation)) {
this.handelSwitchOperate(model);
} else if (buttonOperation === this.MixinCommand.block.button.operation || buttonOperation === this.MixinCommand.unblock.button.operation) {
this.handelBlockOrUnblock(model);
} else if (buttonOperation === this.Station.guideLock.button.operation) {
this.handelGuideLock(model);
if (buttonOperation && buttonOperation === this.MixinCommand.functionButton.button.operation) {
this.handelFunctionButton(model, subType);
} else {
const station = this.$store.getters['map/getDeviceByCode'](model.stationCode);
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) {
this.arrangementRouteOperation(this.deviceList);
} else if (buttonOperation === this.MixinCommand.totalCancel.button.operation) {
this.handelTotalCancel(model, subType);
} else if (buttonOperation === this.Signal.humanTrainRoute.button.operation) {
this.handleTotalHumanSolution(model);
} else if (buttonOperation === this.Signal.guide.button.operation) {
this.handleGuideRoute(this.deviceList);
} else if (buttonOperation === this.Signal.atsAutoControl.button.operation || buttonOperation === this.Signal.humanControl.button.operation) {
this.handelControlRoute(model);
} else if (switchOperation.includes(buttonOperation)) {
this.handelSwitchOperate(model);
} else if (buttonOperation === this.MixinCommand.block.button.operation || buttonOperation === this.MixinCommand.unblock.button.operation) {
this.handelBlockOrUnblock(model);
} else if (buttonOperation === this.Station.guideLock.button.operation) {
this.handelGuideLock(model);
} else {
Handler.clear(); //
this.$store.dispatch('menuOperation/setButtonOperation', null);
}
} else {
Handler.clear(); //
this.$store.dispatch('menuOperation/setButtonOperation', null);
}
} else {
Handler.clear(); //
this.$store.dispatch('menuOperation/setButtonOperation', null);
}
} else {
Handler.clear(); //
this.$store.dispatch('menuOperation/setButtonOperation', null);
}
} else {
Handler.clear(); //
this.$store.dispatch('menuOperation/setButtonOperation', null);
}
}
}

View File

@ -2,12 +2,12 @@
<div>
<pop-menu ref="popMenu" :menu="menu" />
<route-selection ref="routeSelection" />
<route-control ref="routeControl" :pop-class="'chengdou-03__systerm'" />
<route-control ref="routeControl" pop-class="chengdou-03__systerm" />
<route-detail ref="routeDetail" />
<route-guide ref="routeGuide" />
<route-hand-control ref="routeHandControl" />
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
<password-box ref="passwordBox" pop-class="'chengdou-03__systerm'" @checkOver="passWordCommit" />
<password-box ref="passwordBox" pop-class="chengdou-03__systerm" @checkOver="passWordCommit" />
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
</div>
</template>
@ -55,41 +55,41 @@ export default {
menu: [],
menuNormal: {
Local: [
{
label: '办理进路',
handler: this.arrangementRoute,
cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE
},
{
label: '办理引导进路',
handler: this.guide,
cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE
},
{
label: '取消进路',
handler: this.cancelTrainRoute,
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE
},
{
label: '总人解', //
handler: this.humanTrainRoute,
cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE
},
{
label: '进路收人工控',
handler: this.humanControl,
cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING
},
{
label: '进路交自动控',
handler: this.atsAutoControl,
cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING
},
{
label: '进路信息',
handler: this.detail,
cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING
}
// {
// label: '',
// handler: this.arrangementRoute,
// cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE
// },
// {
// label: '',
// handler: this.guide,
// cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE
// },
// {
// label: '',
// handler: this.cancelTrainRoute,
// cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE
// },
// {
// label: '', //
// handler: this.humanTrainRoute,
// cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE
// },
// {
// label: '',
// handler: this.humanControl,
// cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING
// },
// {
// label: '',
// handler: this.atsAutoControl,
// cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING
// },
// {
// label: '',
// handler: this.detail,
// cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING
// }
],
Center: [
{
@ -277,7 +277,6 @@ export default {
start: true,
code: `${this.selected.code}`,
operation: OperationEvent.Signal.guide.menu.operation,
operateNext: OperationEvent.Signal.guide.confirm.operation,
param: {
signalCode: `${this.selected.code}`
}
@ -291,7 +290,7 @@ export default {
routes.push(elem);
}
});
this.$refs.passwordBox.doShow({step: step, selected: this.selected, routesList: routes});
this.$refs.passwordBox.doShow({...step, ...{selected: this.selected}, ...{routesList: routes}});
}
});
},
@ -325,7 +324,7 @@ export default {
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.$refs.passwordBox.doShow({step: step, selected: this.selected});
this.$refs.passwordBox.doShow({...step, ...{selected: this.selected}});
}
});
},
@ -452,11 +451,20 @@ export default {
});
},
passWordCommit(data) {
if (data.step.operation === OperationEvent.Signal.guide.menu.operation) {
this.$refs.routeGuide.doShow(data.step.operation, data.selected, data.routesList);
} else if (data.step.operation === OperationEvent.Signal.humanTrainRoute.menu.operation) {
this.$refs.routeControl.doShow(data.step, data.selected);
}
const step = {
operation: data.operation
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (data.operation === OperationEvent.Signal.guide.menu.operation) {
this.$refs.routeGuide.doShow(data, data.selected, data.routesList);
} else if (data.operation === OperationEvent.Signal.humanTrainRoute.menu.operation) {
this.$refs.routeControl.doShow(data, data.selected);
}
}
});
}
}
};

View File

@ -172,6 +172,7 @@ export default {
lock() {
const operate = {
start: true,
code: `${this.selected.code}`,
operation: OperationEvent.Switch.lock.menu.operation,
param: {
switchCode: this.selected.code
@ -188,6 +189,7 @@ export default {
unlock() {
const operate = {
start: true,
code: `${this.selected.code}`,
operation: OperationEvent.Switch.unlock.menu.operation,
param: {
switchCode: this.selected.code
@ -204,6 +206,7 @@ export default {
block() {
const operate = {
start: true,
code: `${this.selected.code}`,
operation: OperationEvent.Switch.block.menu.operation,
param: {
switchCode: this.selected.code
@ -220,6 +223,7 @@ export default {
unblock() {
const operate = {
start: true,
code: `${this.selected.code}`,
operation: OperationEvent.Switch.unblock.menu.operation,
param: {
switchCode: this.selected.code
@ -236,6 +240,7 @@ export default {
fault() {
const operate = {
start: true,
code: `${this.selected.code}`,
operation: OperationEvent.Switch.fault.menu.operation,
param: {
switchCode: this.selected.code
@ -252,6 +257,7 @@ export default {
active() {
const operate = {
start: true,
code: `${this.selected.code}`,
operation: OperationEvent.Switch.active.menu.operation,
param: {
switchCode: this.selected.code
@ -268,6 +274,7 @@ export default {
locate() {
const operate = {
start: true,
code: `${this.selected.code}`,
operation: OperationEvent.Switch.locate.menu.operation,
param: {
switchCode: this.selected.code
@ -284,6 +291,7 @@ export default {
reverse() {
const operate = {
start: true,
code: `${this.selected.code}`,
operation: OperationEvent.Switch.reverse.menu.operation,
param: {
switchCode: this.selected.code

View File

@ -1,208 +1,215 @@
<template>
<el-dialog class="chengdou-03__systerm alarm-detail" :title="level+'级告警详细信息'" :visible.sync="show" width="760px"
:before-close="doClose" :zIndex="2000" :modal="false" :close-on-click-modal="false" v-dialogDrag>
<el-form label-width="80px" size="mini">
<el-row>
<el-col :span="8">
<el-form-item label="线路名称">
<el-input v-model="model.lineName" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位名称">
<el-input v-model="model.unitName" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="模块名称">
<el-input v-model="model.moduleName" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9">
<el-form-item label="报警时间">
<el-date-picker v-model="model.alarmDate" type="datetime" placeholder="选择日期时间" disabled>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item>
<span slot="label">&emsp;</span>
<el-input v-model="model.level" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="确认状态">
<el-input v-model="model.confirm" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9" class="alarm-type">
<el-form-item>
<span slot="label">&emsp;&emsp;</span>
<el-input v-model="model.type" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="15" class="alarm-child-type">
<el-form-item label="子类型">
<el-input v-model="model.childType" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="时间摘要">
<el-input v-model="model.timeSummary" disabled></el-input>
</el-form-item>
<el-form-item label="推荐操作">
<el-input v-model="model.recommendedOperation" disabled></el-input>
</el-form-item>
<div class="alarm-detail-description">
<span> 报警详细描述</span><br>
<el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="model.alarmDetail" disabled>
</el-input>
</div>
</el-form>
<el-row class="button-group">
<el-col :span="3" :offset="9">
<el-button :id="domIdCancel" type="primary" :loading="loading" @click="commit"> </el-button>
</el-col>
<el-col :span="10">
<span style="line-height:26px">未确认{{level}}级报警数目1</span>
</el-col>
</el-row>
</span>
</el-dialog>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm alarm-detail"
:title="level+'级告警详细信息'"
:visible.sync="show"
width="760px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form label-width="80px" size="mini">
<el-row>
<el-col :span="8">
<el-form-item label="线路名称">
<el-input v-model="model.lineName" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位名称">
<el-input v-model="model.unitName" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="模块名称">
<el-input v-model="model.moduleName" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9">
<el-form-item label="报警时间">
<el-date-picker v-model="model.alarmDate" type="datetime" placeholder="选择日期时间" disabled />
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item>
<span slot="label">&emsp;</span>
<el-input v-model="model.level" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="确认状态">
<el-input v-model="model.confirm" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9" class="alarm-type">
<el-form-item>
<span slot="label">&emsp;&emsp;</span>
<el-input v-model="model.type" disabled />
</el-form-item>
</el-col>
<el-col :span="15" class="alarm-child-type">
<el-form-item label="子类型">
<el-input v-model="model.childType" disabled />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="时间摘要">
<el-input v-model="model.timeSummary" disabled />
</el-form-item>
<el-form-item label="推荐操作">
<el-input v-model="model.recommendedOperation" disabled />
</el-form-item>
<div class="alarm-detail-description">
<span> 报警详细描述</span><br>
<el-input v-model="model.alarmDetail" type="textarea" :rows="5" placeholder="请输入内容" disabled />
</div>
</el-form>
<el-row class="button-group">
<el-col :span="3" :offset="9">
<el-button :id="domIdCancel" type="primary" :loading="loading" @click="commit"> </el-button>
</el-col>
<el-col :span="10">
<span style="line-height:26px">未确认{{ level }}级报警数目1</span>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'AlarmDetail',
data() {
return {
dialogShow: false,
loading: false,
level: 0,
operate: null,
controlProps: {
'01': '中控',
'02': '站控'
},
model: {
lineName: '',
unitName: '',
moduleName: '',
level: '',
confirm: '',
alarmDate: '',
type: '',
childType: '',
timeSummary: '',
recommendedOperation: '',
alarmDetail: ''
}
export default {
name: 'AlarmDetail',
data() {
return {
dialogShow: false,
loading: false,
level: 0,
operate: null,
controlProps: {
'01': '中控',
'02': '站控'
},
model: {
lineName: '',
unitName: '',
moduleName: '',
level: '',
confirm: '',
alarmDate: '',
type: '',
childType: '',
timeSummary: '',
recommendedOperation: '',
alarmDetail: ''
}
};
},
computed: {
...mapGetters('map', [
'name'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
computed: {
...mapGetters('map', [
'name',
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.close.alarm.domId : '';
},
},
watch: {
'$store.state.socket.msgHead': function (elem) {
if (elem && elem.hasOwnProperty('success')) {
if (elem.success) {
let operate = this.$store.state.training.operate;
let control = this.$store.getters['map/getDeviceByCode'](elem.stationControlCode);
let station = this.$store.getters['map/getDeviceByCode'](control.stationCode);
let newOperate = {
type: operate.type,
name: station.name,
}
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.close.alarm.domId : '';
}
},
watch: {
// '$store.state.socket.msgHead': function (elem) {
// if (elem && elem.hasOwnProperty('success')) {
// if (elem.success) {
// const operate = this.$store.state.training.operate;
// console.log(elem);
// elem.stationCodes.forEach(stationCode => {
// const station = this.$store.getters['map/getDeviceByCode'](elem.stationCodes);
// const newOperate = {
// type: operate.type,
// name: station.name
// };
this.doShow(newOperate);
}
}
},
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
})
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.model = {
lineName: this.name,
unitName: this.operate.name,
moduleName: 'CMM控制模式转换模式',
level: '0级告警',
confirm: '确认状态',
alarmDate: new Date(),
type: '系统事件',
childType: '依据信号设备操作命令设置控制模式',
timeSummary: '控制模式摘要',
recommendedOperation: '',
alarmDetail: `控制模式转换:${this.operate.name}由中控转为站控模式!`
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
if (this.dialogShow) {
this.$store.dispatch('socket/shiftMsgQueue');
}
this.dialogShow = false;
// this.doShow(newOperate);
// });
// }
// }
// }
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.model = {
lineName: this.name,
unitName: this.operate.name,
moduleName: 'CMM控制模式转换模式',
level: '0级告警',
confirm: '确认状态',
alarmDate: new Date(),
type: '系统事件',
childType: '依据信号设备操作命令设置控制模式',
timeSummary: '控制模式摘要',
recommendedOperation: '',
alarmDetail: `控制模式转换:${this.operate.name}由中控转为站控模式!`
};
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
},
cancel() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.alarm.operation,
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
}
})
},
commit() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.alarm.operation,
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
}
})
},
isClose() {
return this.dialogShow;
});
},
doClose() {
if (this.dialogShow) {
this.$store.dispatch('socket/shiftMsgQueue');
}
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
cancel() {
const operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.alarm.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
}
});
},
commit() {
const operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.alarm.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
}
});
},
isClose() {
return this.dialogShow;
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import "src/styles/mixin.scss";
.alarm-type .el-input {
width: 220px;
}

View File

@ -64,6 +64,7 @@
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
// import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default {
name: 'RequestControl',
@ -77,26 +78,19 @@ export default {
disabledRefuse: false,
requestInfo: '调度员1工作站',
controlProps: {
'01': '中控',
'02': '站控'
'Center': '中控',
'Local': '站控',
'Emergency': '紧急站控'
},
selection: [],
tableData: [],
timer: null,
timeout: 61,
count: 0
count: 0,
targetStatus: ''
};
},
computed: {
targetStatus() {
if (this.$store.state.training.prdType == '01') {
return '01';
}
if (this.$store.state.training.prdType == '02') {
return '02';
}
return '';
},
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
@ -118,10 +112,8 @@ export default {
deep: true
},
'$store.state.socket.msgHead': function (elem) {
if (elem && !elem.hasOwnProperty('success') && !elem.hasOwnProperty('timeout')) {
if (elem.stationControlCode) {
this.doShow(elem);
}
if (elem && elem.hasOwnProperty('success')) {
this.doShow(elem);
}
}
},
@ -164,53 +156,45 @@ export default {
this.disabledAgree = this.selection.length <= 0;
}
},
updateTableData(code) {
updateTableData(data) {
this.tableData = [];
const model = {
code: code,
operate: '',
control: { code: '', name: '' },
target: { code: '', name: '' },
agree: false,
disabled: false
};
const device = this.$store.getters['map/getDeviceByCode'](code);
if (device) {
const control = (device || {}).state;
if (control) {
model.control = { status: control.status, name: this.controlProps[control.status] };
model.target = { status: this.targetStatus, name: this.controlProps[this.targetStatus] };
}
const station = this.$store.getters['map/getDeviceByCode'](device.stationCode);
if (station) {
model.operate = station.name || '';
}
this.targetStatus = 'Center';
if (data.operateType == 'CM_Reply_Station_Control') {
this.targetStatus = 'Local';
} else if (data.operateType == 'CM_Emergency_Station_Control') {
this.targetStatus = 'Emergency';
}
data.stationCodes.forEach(code => {
const model = {
code: code,
operate: '',
control: { code: '', name: '' },
target: { code: '', name: '' },
agree: false,
disabled: false
};
this.tableData.push(model);
const station = this.$store.getters['map/getDeviceByCode'](code);
if (station) {
const control = (station || {}).controlMode;
if (control) {
model.control = { status: control, name: this.controlProps[control] };
model.target = { status: this.targetStatus, name: this.controlProps[this.targetStatus] };
}
if (station) {
model.operate = station.name || '';
}
}
this.tableData.push(model);
});
},
doShow(msgHead) {
doShow(data) {
this.dialogShow = true;
this.disabledAgree = true;
this.createTimer();
this.updateTableData(msgHead.stationControlCode);
const operate = {
start: true,
operation: OperationEvent.StationControl.controlResponse.menu.operation
};
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
this.updateTableData(data);
},
doClose() {
this.disabledAgree = false;
@ -253,12 +237,9 @@ export default {
},
agree() {
const operate = {
send: true,
over: true,
operation: OperationEvent.StationControl.controlResponse.agree.operation,
val: this.selection[0].code,
prdType: this.$store.state.training.prdType
cmdType: CMD.ControlConvertMenu.CMD_CM_REPLY_STATION_CONTROL
};
this.clearTimer();
@ -274,12 +255,7 @@ export default {
},
refuse() {
const operate = {
send: true,
over: true,
operation: OperationEvent.StationControl.controlResponse.refuse.operation,
val: this.tableData[0].code,
prdType: this.$store.state.training.prdType
operation: OperationEvent.StationControl.controlResponse.refuse.operation
};
this.clearTimer();

View File

@ -1,106 +1,114 @@
<template>
<el-dialog class="chengdou-03__systerm cmd-notice" title="操作命令提示" :visible.sync="show" width="400px" :before-close="doClose"
:zIndex="2000" :modal="false" :close-on-click-modal="false" v-dialogDrag>
<span>{{name}}{{msg}}!</span>
<el-row class="button-group">
<el-button :id="domIdCancel" type="primary" :loading="loading" @click="commit">确认</el-button>
</el-row>
</el-dialog>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm cmd-notice"
title="操作命令提示"
:visible.sync="show"
width="400px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<span>{{ name }}{{ msg }}!</span>
<el-row class="button-group">
<el-button :id="domIdCancel" type="primary" :loading="loading" @click="commit">确认</el-button>
</el-row>
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'CmdNotice',
data() {
return {
dialogShow: false,
loading: false,
operate: null,
name: '',
msg: ''
}
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'CmdNotice',
data() {
return {
dialogShow: false,
loading: false,
operate: null,
name: '',
msg: ''
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.close.notice.domId : '';
},
},
watch: {
'$store.state.socket.msgHead': function (elem) {
if (elem && (elem.hasOwnProperty('success') || elem.hasOwnProperty('timeout'))) {
let operate = this.$store.state.training.operate;
let control = this.$store.getters['map/getDeviceByCode'](elem.stationControlCode);
let station = this.$store.getters['map/getDeviceByCode'](control.stationCode);
let newOperate = {
type: operate.type,
name: station.name,
}
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.close.notice.domId : '';
}
},
watch: {
// '$store.state.socket.msgHead': function (elem) {
// if (elem && (elem.hasOwnProperty('success') || elem.hasOwnProperty('timeout'))) {
// let operate = this.$store.state.training.operate;
// let control = this.$store.getters['map/getDeviceByCode'](elem.stationControlCode);
// let station = this.$store.getters['map/getDeviceByCode'](control.stationCode);
// let newOperate = {
// type: operate.type,
// name: station.name,
// }
if (elem.timeout) {
newOperate['msg'] = '请求超时';
this.doShow(newOperate);
} else if (!elem.success) {
newOperate['msg'] = '请求拒绝';
this.doShow(newOperate);
}
}
},
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
})
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.name = this.operate.name || '';
this.msg = this.operate.msg || '';
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
if (this.dialogShow) {
this.$store.dispatch('socket/shiftMsgQueue');
}
this.dialogShow = false;
// if (elem.timeout) {
// newOperate['msg'] = '';
// this.doShow(newOperate);
// } else if (!elem.success) {
// newOperate['msg'] = '';
// this.doShow(newOperate);
// }
// }
// },
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.name = this.operate.name || '';
this.msg = this.operate.msg || '';
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
},
cancel() {
let operate = {
operation: this.operate.type,
operation: OperationEvent.Command.close.notice.operation,
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
}
})
},
commit() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.notice.operation,
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
}
})
},
isClose() {
return this.dialogShow;
});
},
doClose() {
if (this.dialogShow) {
this.$store.dispatch('socket/shiftMsgQueue');
}
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
cancel() {
const operate = {
operation: OperationEvent.Command.close.notice.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
}
});
},
commit() {
const operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.notice.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
}
});
},
isClose() {
return this.dialogShow;
}
}
};
</script>

View File

@ -1,90 +1,88 @@
// SECTION 区段
// SWITCH 道岔
// SIGNAL 信号机
// START_SIGNAL 进路起始信号机
// END_SIGNAL 进路终端信号机
// STATION 车站
// STAND 站台
// ROUTE 进路
// CYCLE 自动折返
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default {
list: [
// 信号机列表
{
maxDuration: 15,
minDuration: 8,
operateType: '0201',
operateType: CMD.Signal.CMD_SIGNAL_SET_ROUTE.value,
skinCode: '04',
trainingName: '办理进路({3} 进路)',
trainingRemark: '办理进路功能',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '301', tip: '鼠标右键菜单选择【办理进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3011', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' },
{ deviceType: '04', orderNum: 3, operateCode: '301', tip: '鼠标左键点击【确定】按钮' }
{ deviceType: '04', orderNum: 3, operateCode: '301', tip: '鼠标左键点击【执行】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '301', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0201',
operateType: CMD.Signal.CMD_SIGNAL_SET_ROUTE.value,
skinCode: '04',
trainingName: '办理进路({3} 进路)',
trainingRemark: '办理进路功能',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3010', tip: '鼠标左键点击【排列进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3010', tip: '鼠标左键点击【{5}】' },
{ deviceType: '04', orderNum: 3, operateCode: '3010', tip: '鼠标左键点击【{5}】', val: '{4}' }
{ deviceType: '04', orderNum: 2, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'START_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'END_SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0216',
operateType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE.value,
skinCode: '04',
trainingName: '办理引导进路({3})',
trainingRemark: '进路办理信号引导',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '308', tip: '鼠标右键菜单选择【办理引导进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3086', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' }, // 进路编号值不正确
{ deviceType: '04', orderNum: 3, operateCode: '308', tip: '鼠标左键点击【确认】按钮' }
{ deviceType: '04', orderNum: 2, operateCode: '308', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3086', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' },
{ deviceType: '04', orderNum: 4, operateCode: '3082', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0216',
operateType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE.value,
skinCode: '04',
trainingName: '引导进路({3})[进路未锁闭]',
trainingRemark: '进路办理信号引导',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3080', tip: '鼠标左键点击【引导进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3080', tip: '鼠标左键点击【{5}】'}, // 进路编号值不正确
{ deviceType: '04', orderNum: 3, operateCode: '0011', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '3080', tip: '鼠标左键点击【{5}】', val: '{4}' }
{ deviceType: '04', orderNum: 2, operateCode: '3080', tip: '鼠标左键点击【{5}】', codeType:'START_SIGNAL'}, // 进路编号值不正确
{ deviceType: '04', orderNum: 3, operateCode: '3080', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '3080', tip: '鼠标左键点击【{5}】', codeType:'END_SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '待定',
skinCode: '04',
trainingName: '引导进路({3})[进路锁闭]',
trainingRemark: '进路办理信号引导',
trainingType: '02',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3080', tip: '鼠标左键点击【引导进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3080', tip: '鼠标左键点击【{5}】', val: '{4}' }, // 进路编号值不正确
{ deviceType: '04', orderNum: 3, operateCode: '0011', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0202',
operateType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE.value,
skinCode: '04',
trainingName: '取消进路({3} 进路)',
trainingRemark: '取消进路功能',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '303', tip: '鼠标右键菜单选择【取消进路】' },
@ -94,26 +92,26 @@ export default {
{
maxDuration: 15,
minDuration: 8,
operateType: '0202',
operateType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE.value,
skinCode: '04',
trainingName: '总取消({3} 进路)',
trainingRemark: '总取消功能',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3030', tip: '鼠标左键点击【总取消】' },
{ deviceType: '04', orderNum: 2, operateCode: '3051', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3030', tip: '鼠标左键点击【{5}】按钮', val: '{6}' }
{ deviceType: '04', orderNum: 2, operateCode: '3030', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3030', tip: '鼠标左键点击【{5}】按钮', codeType:'SIGNAL' }
]
},
{
{ // 不生成实训
maxDuration: 15,
minDuration: 8,
operateType: '0215', // 新增数据字典code
operateType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE.value,
skinCode: '04',
trainingName: '总人解({3})',
trainingRemark: '总人解',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '305', tip: '鼠标右键菜单选择【总人解】' },
@ -121,14 +119,14 @@ export default {
{ deviceType: '04', orderNum: 3, operateCode: '3051', tip: '输入密码123456点击【确定】按钮' }
]
},
{
{ // 不生成实训
maxDuration: 15,
minDuration: 8,
operateType: '0215', // 新增数据字典code
operateType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE.value,
skinCode: '04',
trainingName: '总人解({3})',
trainingRemark: '总人解',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3050', tip: '鼠标左键点击【总人解】' },
@ -139,98 +137,98 @@ export default {
{
maxDuration: 8,
minDuration: 5,
operateType: '0206',
operateType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL.value,
skinCode: '04',
trainingName: '信号重开({3} 进路)',
trainingRemark: '信号重开功能',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '304', tip: '鼠标右键菜单选择【信号重开】', val: '{6}' },
{ deviceType: '04', orderNum: 1, operateCode: '304', tip: '鼠标右键菜单选择【信号重开】' },
{ deviceType: '04', orderNum: 2, operateCode: '304', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 8,
minDuration: 5,
operateType: '0206',
operateType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL.value,
skinCode: '04',
trainingName: '信号重开({3} 进路)',
trainingRemark: '信号重开功能',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3010', tip: '鼠标左键点击【排列进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '304', tip: '鼠标左键点击【{5}】', val: '{6}' }
{ deviceType: '04', orderNum: 2, operateCode: '304', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0203',
operateType: CMD.Signal.CMD_SIGNAL_BLOCK.value,
skinCode: '04',
trainingName: '信号封锁({5})',
trainingRemark: '信号封',
trainingType: '02',
trainingRemark: '信号封',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '306', tip: '鼠标右键菜单选择【信号封】' },
{ deviceType: '04', orderNum: 1, operateCode: '306', tip: '鼠标右键菜单选择【信号封】' },
{ deviceType: '04', orderNum: 2, operateCode: '306', tip: '鼠标左键点击【确定】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3061', tip: '输入密码123点击【确定】按钮' }
{ deviceType: '04', orderNum: 3, operateCode: '306', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0203',
operateType: CMD.Signal.CMD_SIGNAL_BLOCK.value,
skinCode: '04',
trainingName: '信号封锁({5})',
trainingRemark: '信号封锁功能',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2991', tip: '鼠标左键菜单选择【封锁】' },
{ deviceType: '04', orderNum: 1, operateCode: '2991', tip: '鼠标左键点击【{5}】', val: '{6}' }
{ deviceType: '04', orderNum: 1, operateCode: '2991', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0204',
operateType: CMD.Signal.CMD_SIGNAL_UNBLOCK.value,
skinCode: '04',
trainingName: '信号解封({5})',
trainingRemark: '信号解封',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '307', tip: '鼠标右键菜单选择【信号解封】' },
{ deviceType: '04', orderNum: 2, operateCode: '307', tip: '鼠标左键点击【确认】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3072', tip: '输入密码123点击【确认】按钮' }
{ deviceType: '04', orderNum: 3, operateCode: '307', tip: '输入密码123点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0204',
operateType: CMD.Signal.CMD_SIGNAL_UNBLOCK.value,
skinCode: '04',
trainingName: '信号解封({5})',
trainingRemark: '信号解封功能',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2992', tip: '鼠标左键菜单选择【解封】' },
{ deviceType: '04', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确认】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '2992', tip: '鼠标左键点击【{5}】', val: '{6}' }
{ deviceType: '04', orderNum: 2, operateCode: '2992', tip: '输入密码123点击【确认】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '2992', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0209',
operateType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING.value,
skinCode: '04',
trainingName: '进路收人工控({5})',
trainingRemark: '进路收人工控',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '314', tip: '鼠标右键菜单选择【进路收人工控】' },
@ -241,25 +239,25 @@ export default {
{
maxDuration: 15,
minDuration: 8,
operateType: '0209',
operateType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING.value,
skinCode: '04',
trainingName: '人工控({5})',
trainingRemark: '人工控',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3140', tip: '鼠标左键点击【人工控】' },
{ deviceType: '04', orderNum: 2, operateCode: '3140', tip: '鼠标左键点击【{3}】', val: '{6}' }
{ deviceType: '04', orderNum: 2, operateCode: '3140', tip: '鼠标左键点击【{3}】', codeType:'SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0208',
operateType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING.value,
skinCode: '04',
trainingName: '进路交自动控({5})',
trainingRemark: '进路交自动控',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '315', tip: '鼠标右键菜单选择【进路交自动控】' },
@ -270,259 +268,258 @@ export default {
{
maxDuration: 15,
minDuration: 8,
operateType: '0208',
operateType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING.value,
skinCode: '04',
trainingName: '自动控({5})',
trainingRemark: '自动控',
trainingType: '02',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: 'mbm', orderNum: 1, operateCode: '3150', tip: '鼠标左键点击【自动控】' },
{ deviceType: '04', orderNum: 2, operateCode: '3150', tip: '鼠标左键点击【{3}】', val: '{6}' }
{ deviceType: '04', orderNum: 1, operateCode: '3150', tip: '鼠标左键点击【自动控】' },
{ deviceType: '04', orderNum: 2, operateCode: '3150', tip: '鼠标左键点击【{3}】', codeType:'SIGNAL' }
]
},
{
{ // 未生成实训
maxDuration: 15,
minDuration: 8,
operateType: '0210',
operateType:CMD.Signal.CMD_SIGNAL_DETAIL.value,
skinCode: '04',
trainingName: '查询进路信息({5})',
trainingName: '查询进路信息({5} 信号机)',
trainingRemark: '查询进路信息',
trainingType: '02',
trainingType:'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '316', tip: '鼠标右键菜单选择【进路信息】' },
{ deviceType: '04', orderNum: 2, operateCode: '000', tip: '鼠标左键点击【关闭】按钮' }
{ deviceType: '04', orderNum: 2, operateCode: '316', tip: '鼠标左键点击【确定】按钮' }
]
},
// 道岔列表
{
maxDuration: 15,
minDuration: 8,
operateType: '0312', // 0312 新增定位字典
operateType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION.value, // 0312 新增定位字典
skinCode: '04',
trainingName: '单操到定位({7})',
trainingRemark: '单操到定位({15})',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '101', tip: '鼠标右键菜单选择【单操到定位】' },
{ deviceType: '02', orderNum: 2, operateCode: '101', tip: '鼠标左键点击【确定】按钮', val: '{17}' }
{ deviceType: '02', orderNum: 2, operateCode: '101', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0312',
operateType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION.value,
skinCode: '04',
trainingName: '单操到定位({7})',
trainingRemark: '单操到定位({7})',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1010', tip: '鼠标左键菜单选择【道岔定操】' },
{ deviceType: '02', orderNum: 2, operateCode: '1010', tip: '鼠标左键点击【{7}】', val: '{17}' }
{ deviceType: '02', orderNum: 2, operateCode: '1010', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0313', // 0313 新增定位字典
operateType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION.value, // 0313 新增定位字典
skinCode: '04',
trainingName: '单操到反位({7})',
trainingRemark: '单操到反位({7})',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '102', tip: '鼠标右键菜单选择【单操到反位】' },
{ deviceType: '02', orderNum: 2, operateCode: '102', tip: '鼠标左键点击【确定】按钮', val: '{17}' }
{ deviceType: '02', orderNum: 2, operateCode: '102', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0313',
operateType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION.value,
skinCode: '04',
trainingName: '单操到反位({7})',
trainingRemark: '单操到反位({7})',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1020', tip: '鼠标左键菜单选择【道岔反操】' },
{ deviceType: '02', orderNum: 2, operateCode: '1020', tip: '鼠标左键点击【{7}】按钮', val: '{17}' }
{ deviceType: '02', orderNum: 2, operateCode: '1020', tip: '鼠标左键点击【{7}】按钮', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0301',
operateType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK.value,
skinCode: '04',
trainingName: '道岔单锁({7})',
trainingRemark: '道岔单锁功能',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '103', tip: '鼠标右键菜单选择【道岔单锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '103', tip: '鼠标左键点击【确定】按钮', val: '{17}' }
{ deviceType: '02', orderNum: 2, operateCode: '103', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0301',
operateType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK.value,
skinCode: '04',
trainingName: '道岔单锁({7})',
trainingRemark: '道岔单锁功能',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['01'], // 现地操作
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1030', tip: '鼠标左键菜单选择【道岔单锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '1030', tip: '鼠标左键点击【{{7}}】', val: '{17}' }
{ deviceType: '02', orderNum: 2, operateCode: '1030', tip: '鼠标左键点击【{{7}}】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0302',
operateType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK.value,
skinCode: '04',
trainingName: '道岔解锁({7})',
trainingRemark: '道岔解锁功能',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '104', tip: '鼠标右键菜单选择【道岔解锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '104', tip: '鼠标左键点击【确定】按钮', val: '{17}' }
{ deviceType: '02', orderNum: 2, operateCode: '104', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0305',
operateType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK.value,
skinCode: '04',
trainingName: '道岔解锁({7})',
trainingRemark: '道岔解锁功能',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1040', tip: '鼠标左键菜单选择【道岔解锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确认】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '1040', tip: '鼠标左键点击【{7}】按钮', val: '{17}' }
{ deviceType: '02', orderNum: 2, operateCode: '1040', tip: '输入密码123点击【确认】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '1040', tip: '鼠标左键点击【{7}】按钮', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0303',
operateType: CMD.Switch.CMD_SWITCH_BLOCK.value,
skinCode: '04',
trainingName: '道岔封锁({7})',
trainingRemark: '道岔封锁功能',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '105', tip: '鼠标右键菜单选择【道岔封锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '105', tip: '鼠标左键点击【确定】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '0011', tip: '输入密码123点击【确定】按钮' }
{ deviceType: '02', orderNum: 3, operateCode: '105', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0305',
operateType: CMD.Switch.CMD_SWITCH_BLOCK.value,
skinCode: '04',
trainingName: '道岔封锁({7})',
trainingRemark: '道岔封锁功能',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '2991', tip: '鼠标左键菜单选择【封锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '2991', tip: '鼠标左键点击【{7}】按钮', val: '{17}' }
{ deviceType: '02', orderNum: 2, operateCode: '2991', tip: '鼠标左键点击【{7}】按钮', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0304',
operateType: CMD.Switch.CMD_SWITCH_UNBLOCK.value,
skinCode: '04',
trainingName: '道岔解封({7})',
trainingRemark: '道岔解封功能',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '106', tip: '鼠标右键菜单选择【道岔解封】' },
{ deviceType: '02', orderNum: 2, operateCode: '106', tip: '鼠标左键点击【确认】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '0011', tip: '输入密码123点击【确认】按钮' }
{ deviceType: '02', orderNum: 3, operateCode: '106', tip: '输入密码123点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0305',
operateType: CMD.Switch.CMD_SWITCH_UNBLOCK.value,
skinCode: '04',
trainingName: '道岔解封({7})',
trainingRemark: '道岔解封功能',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '2992', tip: '鼠标左键菜单选择【解封】' },
{ deviceType: '02', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确认】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '2992', tip: '鼠标左键点击【{7}】按钮', val: '{17}' }
{ deviceType: '02', orderNum: 2, operateCode: '2992', tip: '输入密码123点击【确认】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '2992', tip: '鼠标左键点击【{7}】按钮', codeType:'SWITCH' }
]
},
{
maxDuration: 20,
minDuration: 10,
operateType: '0306',
operateType: CMD.Switch.CMD_SWITCH_FAULT_UNLOCK.value,
skinCode: '04',
trainingName: '区故解({7})',
trainingRemark: '道岔区段故障解锁功能',
trainingType: '03',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '109', tip: '鼠标右键菜单选择【区故解】' },
{ deviceType: '02', orderNum: 2, operateCode: '109', tip: '鼠标左键点击【确认】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '1092', tip: '输入密码123点击【确认】按钮' }
{ deviceType: '02', orderNum: 3, operateCode: '109', tip: '输入密码123点击【确认】按钮' }
]
},
// 区段列表
{
maxDuration: 15,
minDuration: 8,
operateType: '0401',
operateType: CMD.Section.CMD_SECTION_FAULT_UNLOCK.value,
skinCode: '04',
trainingName: '区故解({8}{9})',
trainingRemark: '故障解锁功能',
trainingType: '04',
trainingType: 'Section',
productTypes: ['02'],
stepVOList: [
{ deviceType: '03', orderNum: 1, operateCode: '402', tip: '鼠标右键菜单选择【区故解】' },
{ deviceType: '03', orderNum: 2, operateCode: '402', tip: '鼠标左键点击【确认】按钮' },
{ deviceType: '03', orderNum: 3, operateCode: '0011', tip: '输入密码123点击【确认】按钮' }
{ deviceType: '03', orderNum: 3, operateCode: '402', tip: '输入密码123点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0401',
operateType: CMD.Section.CMD_SECTION_FAULT_UNLOCK.value,
skinCode: '04',
trainingName: '区故解({9})',
trainingRemark: '故障解锁功能',
trainingType: '04',
trainingType: 'Section',
productTypes: ['01'],
stepVOList: [
{ deviceType: '03', orderNum: 1, operateCode: '4020', tip: '鼠标右键菜单选择【区故解】' },
{ deviceType: '03', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确认】按钮' },
{ deviceType: '03', orderNum: 3, operateCode: '4020', tip: '鼠标左键点击【{9}】', val: '{18}' },
{ deviceType: '03', orderNum: 4, operateCode: '00012', tip: '鼠标左键点击【清除】' }
{ deviceType: '03', orderNum: 2, operateCode: '4020', tip: '输入密码123点击【确认】按钮' },
{ deviceType: '03', orderNum: 3, operateCode: '4020', tip: '鼠标左键点击【{9}】', codeType:'SECTION' }
]
},
{
maxDuration: 15, // 自动生成实训失败
{ // 未生成实训
maxDuration: 15,
minDuration: 8,
operateType: '0409',
operateType: CMD.Section.CMD_SECTION_DETAILS.value,
skinCode: '04',
trainingName: '属性({8}{9})',
trainingRemark: '区段详情({8}{9})',
trainingType: '04',
trainingType: 'Section',
productTypes: ['02'],
stepVOList: [
{ deviceType: '03', orderNum: 1, operateCode: '410', tip: '鼠标右键菜单选择【属性】' },
@ -533,11 +530,11 @@ export default {
{
maxDuration: 15,
minDuration: 8,
operateType: '0501',
operateType: CMD.Stand.CMD_STAND_SET_HOLD_TRAIN.value,
skinCode: '04',
trainingName: '设置扣车({10}-{12}站台)',
trainingRemark: '设置扣车功能',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '504', tip: '鼠标右键菜单选择【设置扣车】' },
@ -547,11 +544,11 @@ export default {
{
maxDuration: 15,
minDuration: 8,
operateType: '0502',
operateType: CMD.Stand.CMD_STAND_CANCEL_HOLD_TRAIN.value,
skinCode: '04',
trainingName: '取消扣车({10}-{12}站台)',
trainingRemark: '设置取消扣车功能',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '505', tip: '鼠标右键菜单选择【取消扣车】' },
@ -561,148 +558,146 @@ export default {
{
maxDuration: 15,
minDuration: 8,
operateType: '0502',
operateType: CMD.Stand.CMD_STAND_CANCEL_HOLD_TRAIN.value,
skinCode: '04',
trainingName: '取消扣车({10}-{12}站台)',
trainingRemark: '设置取消扣车功能(上行全线)',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '505', tip: '鼠标右键菜单选择【取消扣车】' },
{ deviceType: '06', orderNum: 2, operateCode: '5051', tip: '鼠标左键点击【上行全线】按钮', val: '02' },
{ deviceType: '06', orderNum: 3, operateCode: '508', tip: '鼠标左键点击【确定】按钮', val: '02' }
{ deviceType: '06', orderNum: 3, operateCode: '508', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0505',
operateType: CMD.Stand.CMD_STAND_SET_JUMP_STOP.value,
skinCode: '04',
trainingName: '设置跳停({10}-{12}站台)',
trainingRemark: '设置跳停功能',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '502', tip: '鼠标右键菜单选择【跳停】' },
{ deviceType: '06', orderNum: 2, operateCode: '502', tip: '鼠标左键点击【确定】按钮', val: '{11}' }
{ deviceType: '06', orderNum: 2, operateCode: '502', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0506',
operateType: CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP.value,
skinCode: '04',
trainingName: '取消跳停({10}-{12}站台)',
trainingRemark: '设置取消跳停功能',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '503', tip: '鼠标右键菜单选择【取消跳停】' },
{ deviceType: '06', orderNum: 2, operateCode: '503', tip: '鼠标左键点击【确定】按钮', val: '{11}' }
{ deviceType: '06', orderNum: 2, operateCode: '503', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0508',
operateType: CMD.Stand.CMD_STAND_SET_PARK_TIME.value,
skinCode: '04',
trainingName: '设置停站时间({10}-{12}站台)',
trainingRemark: '设置停站时间(自动, 一直有效)',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' },
{ deviceType: '06', orderNum: 2, operateCode: '5093', tip: '鼠标左键点击,选择【自动】', val: '02' },
{ deviceType: '06', orderNum: 3, operateCode: '509', tip: '鼠标左键点击【确认】按钮', val: '01::0::true' }
{ deviceType: '06', orderNum: 3, operateCode: '509', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0508',
operateType: CMD.Stand.CMD_STAND_SET_PARK_TIME.value,
skinCode: '04',
trainingName: '设置停站时间({10}-{12}站台)',
trainingRemark: '设置停站时间(人工, 20秒, 一直有效)',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' },
{ deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【人工】', val: '02' },
{ deviceType: '06', orderNum: 3, operateCode: '5094', tip: '输入或鼠标点击调整为【20】', val: '20' },
{ deviceType: '06', orderNum: 4, operateCode: '5093', tip: '标左键点击,选择【一直有效】', val: '02' },
{ deviceType: '06', orderNum: 5, operateCode: '509', tip: '鼠标左键点击【确认】按钮', val: '02::20::true' }
{ deviceType: '06', orderNum: 5, operateCode: '509', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0508',
operateType: CMD.Stand.CMD_STAND_SET_PARK_TIME.value,
skinCode: '04',
trainingName: '设置停站时间({10}-{12}站台)',
trainingRemark: '设置停站时间(人工, 20秒, 一次有效)',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' },
{ deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【人工】', val: '02' },
{ deviceType: '06', orderNum: 3, operateCode: '5094', tip: '输入或鼠标点击调整为【20】', val: '20' },
{ deviceType: '06', orderNum: 4, operateCode: '509', tip: '鼠标左键点击【确认】按钮', val: '02::20::false' }
{ deviceType: '06', orderNum: 4, operateCode: '509', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0509',
operateType: CMD.Stand.CMD_STAND_SET_RUN_TIME.value,
skinCode: '04',
trainingName: '设置站间运行等级({10}-{12}站台)',
trainingRemark: '设置站间运行等级(自动, 一直有效)',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置站间运行等级】' },
{ deviceType: '06', orderNum: 2, operateCode: '5107', tip: '标左键点击,选择【一直有效】', val: '02' },
{ deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮', val: '01::01::true' }
{ deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0509',
operateType: CMD.Stand.CMD_STAND_SET_RUN_TIME.value,
skinCode: '04',
trainingName: '设置站间运行等级({10}-{12}站台)',
trainingRemark: '设置站间运行等级(人工, 常速, 一直有效)',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置站间运行等级】' },
{ deviceType: '06', orderNum: 2, operateCode: '5106', tip: '鼠标左键点击,选择【人工】', val: '02' },
{ deviceType: '06', orderNum: 3, operateCode: '5107', tip: '鼠标左键点击,取消选择【一直有效】', val: '02' },
{ deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮', val: '02::01::true' }
{ deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: '0509',
operateType: CMD.Stand.CMD_STAND_SET_RUN_TIME.value,
skinCode: '04',
trainingName: '设置站间运行等级({10}-{12}站台)',
trainingRemark: '设置站间运行等级(人工, 常速, 一次有效)',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置站间运行等级】' },
{ deviceType: '06', orderNum: 2, operateCode: '5106', tip: '鼠标左键点击,选择【人工】', val: '02' },
{ deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮', val: '02::01::false' }
{ deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 8, // 自动生成实训失败
minDuration: 5,
operateType: '0507',
operateType: CMD.Stand.CMD_STAND_VIEW_STATUS.value,
skinCode: '04',
trainingName: '属性({10}-{12}站台)',
trainingRemark: '查询站台状态功能',
trainingType: '05',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '507', tip: '鼠标右键菜单选择【属性】' },

View File

@ -78,6 +78,7 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'PasswordBox',
@ -91,7 +92,7 @@ export default {
return {
correctPassword: '123', //
dialogShow: false,
operation: null,
operation: '',
checkHasInput: false,
passwordCheck: '', //
encryptionPassword: '', //
@ -111,7 +112,7 @@ export default {
}
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.close.password.domId : '';
return this.dialogShow ? OperationHandler.getDomIdByOperation(this.operation) : '';
}
},
mounted() {
@ -123,6 +124,8 @@ export default {
doShow(operate) {
this.operate = operate || {};
this.dialogShow = true;
this.operation = operate.operation;
console.log(this.operation, operate);
this.checkHasInput = false;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
@ -136,9 +139,9 @@ export default {
},
commit() { //
if (this.passwordCheck === this.correctPassword) {
this.$emit('checkOver', this.operate);
this.doClose();
this.inputClear();
this.$emit('checkOver', this.operate);
} else {
this.showMistake = true;
}

View File

@ -257,19 +257,31 @@ export default {
},
//
lock() {
this.sendCommand(menuOperate.Signal.lock);
switch (this.popClass) {
case 'chengdou-03__systerm':
this.sendCommandNext(menuOperate.Signal.lock).then(operate => {
this.$refs.password.doShow(operate);
});
break;
default: this.sendCommand(menuOperate.Signal.lock);
}
},
//
unlock() {
this.sendCommandNext(menuOperate.Signal.unlock).then(operate => {
this.$refs.password.doShow(operate);
});
switch (this.popClass) {
case 'chengdou-03__systerm':
this.sendCommandNext(menuOperate.Signal.unlock).then(operate => {
this.$refs.password.doShow(operate);
});
break;
default: this.sendCommand(menuOperate.Signal.unlock);
}
},
passWordCommit(data) { //
const operate = {
over: true,
operation: OperationEvent.Signal.unlock.confirm.operation,
cmdType: menuOperate.Signal.unlock.cmdType
operation: data.operation,
cmdType: data.cmdType
};
this.sendCommand(operate);
},

View File

@ -187,6 +187,7 @@ export default {
this.loading = false;
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
this.$refs.passwordBox.doShow(operate);
}
}).catch(() => {

View File

@ -1,5 +1,5 @@
<template>
<el-dialog v-dialogDrag class="xian-01__systerm train-control" :title="title" :visible.sync="show" width="370px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-dialog v-dialogDrag :class="popClass + ' train-control'" :title="title" :visible.sync="show" width="370px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-form ref="form" size="small" label-width="120px" :model="formModel" :rules="rules">
<el-form-item :label="this.$t('menu.groupNumber')+this.$t('global.colon')" prop="groupNumber">
<el-select
@ -75,26 +75,31 @@
<el-button :id="domIdCancel" @click="cancel">{{ $t('global.cancel') }}</el-button>
</el-col>
</el-row>
<confirm-train ref="confirmTrain" />
<notice-info ref="noticeInfo" pop-class="xian-01__systerm" />
<notice-info ref="noticeInfo" :pop-class="popClass" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import ConfirmTrain from './childDialog/confirmTrain';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import Handler from '@/scripts/cmdPlugin/Handler';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import {getTrainDetailBytripNumber} from '@/api/simulation';
import NoticeInfo from '../childDialog/noticeInfo';
export default {
name: 'TrainControl',
components: {
ConfirmTrain,
NoticeInfo
},
props: {
popClass: {
type: String,
default() {
return '';
}
}
},
data() {
return {
trainList: [],
@ -112,16 +117,16 @@ export default {
],
rules: {
groupNumber: [
{ required: true, message: this.$t('rules.selectGroupNumber'), trigger: 'change' }
{ required: true, message: '请选择车组号', trigger: 'change' }
],
type: [
{ required: true, message: this.$t('rules.selectATrainType'), trigger: 'change' }
{ required: true, message: '请选择列车类型', trigger: 'change' }
],
tripNumber: [
{ required: true, message: this.$t('rules.enterTheTripNumber'), trigger: 'blur' }
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
destinationCode: [
{ required: true, message: this.$t('rules.enterTheTargetCode'), trigger: 'blur' }
{ required: true, message: '请输入目的地号', trigger: 'blur' }
]
},
operation: null,
@ -223,9 +228,9 @@ export default {
},
title() {
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
return this.$t('menu.menuTrain.addTrainId');
return '添加列车识别号';
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
return this.$t('menu.menuTrain.editTrainId');
return '修改列车识别号';
}
return '';
}
@ -425,7 +430,6 @@ export default {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();

View File

@ -210,6 +210,11 @@ export const menuOperate = {
// 计轴预复位
operation: OperationEvent.Switch.axlePreReset.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_AXIS_PRE_RESET
},
hookLock:{
// 道岔钩锁
operation: OperationEvent.Switch.hookLock.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_HOOK_LOCK
}
},
StationStand:{

View File

@ -89,16 +89,36 @@ export default {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Switch.unlock.choose.domId : '';
if (this.operation == OperationEvent.Switch.unlock.menu.operation) {
return OperationEvent.Switch.unlock.choose.domId; //
} else if (this.operation == OperationEvent.Switch.unblock.menu.operation) {
return OperationEvent.Switch.unblock.choose.domId; //
}
return '';
},
confirmId1() {
return this.dialogShow ? OperationEvent.Switch.unlock.confirm1.domId : '';
if (this.operation == OperationEvent.Switch.unlock.menu.operation) {
return OperationEvent.Switch.unlock.confirm1.domId; //
} else if (this.operation == OperationEvent.Switch.unblock.menu.operation) {
return OperationEvent.Switch.unblock.confirm1.domId; //
}
return '';
},
confirmId2() {
return this.dialogShow ? OperationEvent.Switch.unlock.confirm2.domId : '';
if (this.operation == OperationEvent.Switch.unlock.menu.operation) {
return OperationEvent.Switch.unlock.confirm2.domId; //
} else if (this.operation == OperationEvent.Switch.unblock.menu.operation) {
return OperationEvent.Switch.unblock.confirm2.domId; //
}
return '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Switch.unlock.confirm.domId : '';
if (this.operation == OperationEvent.Switch.unlock.menu.operation) {
return OperationEvent.Switch.unlock.confirm.domId; //
} else if (this.operation == OperationEvent.Switch.unblock.menu.operation) {
return OperationEvent.Switch.unblock.confirm.domId; //
}
return '';
},
title() {
if (this.operation == OperationEvent.Switch.unlock.menu.operation) {

View File

@ -105,6 +105,16 @@ export default {
handler: this.atsAutoControl,
cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING
},
{
label: '设置联锁自动进路',
handler: this.setAutoInterlock,
cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO
},
{
label: '取消联锁自动进路',
handler: this.cancelAutoInterlock,
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO
},
{
label: '设置联锁自动触发',
handler: this.setAutoTrigger,
@ -349,6 +359,22 @@ export default {
}
});
},
//
setAutoInterlock() {
commitOperate(menuOperate.Signal.setAutoInterlock, {signalCode:this.selected.code}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.routeControl.doShow(operate, this.selected);
}
});
},
//
cancelAutoInterlock() {
commitOperate(menuOperate.Signal.cancelAutoInterlock, {signalCode:this.selected.code}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.routeControl.doShow(operate, this.selected);
}
});
},
//
singalPassModel(selectType) {
commitOperate(menuOperate.Signal.setAutoInterlock, {signalCode:selectType.code}, 3).then(({valid, operate})=>{

View File

@ -1,7 +1,7 @@
<template>
<el-dialog
v-dialogDrag
class="foshan-01__systerm cmd-notice"
class="fuzhou-01__systerm cmd-notice"
title="操作命令提示"
:visible.sync="show"
width="400px"
@ -18,7 +18,7 @@
</template>
<script>
import { OperationEvent } from '@/scripts/ConstDic';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'CmdNotice',
data() {
@ -40,20 +40,16 @@ export default {
},
watch: {
'$store.state.socket.msgHead': function (elem) {
if (elem && (elem.hasOwnProperty('success') || elem.hasOwnProperty('timeout'))) {
const operate = this.$store.state.training.operate;
const control = this.$store.getters['map/getDeviceByCode'](elem.stationControlCode);
const station = this.$store.getters['map/getDeviceByCode'](control.stationCode);
if (elem && elem.type == 'resp' && (elem.timeout || !elem.agree)) {
const station = this.$store.getters['map/getDeviceByCode'](elem.stationCodes[0]);
const newOperate = {
type: operate.type,
name: station.name
};
if (elem.timeout) {
newOperate['msg'] = '请求超时';
newOperate['msg'] = this.$t('menu.passiveDialog.requestTimedOut');
this.doShow(newOperate);
} else if (!elem.success) {
newOperate['msg'] = '请求拒绝';
} else if (!elem.agree) {
newOperate['msg'] = this.$t('menu.passiveDialog.requestRejection');
this.doShow(newOperate);
}
}
@ -83,11 +79,10 @@ export default {
},
cancel() {
const operate = {
operation: this.operate.type,
operation: OperationEvent.Command.close.notice.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
@ -96,10 +91,9 @@ export default {
},
commit() {
const operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.notice.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();

View File

@ -213,7 +213,7 @@ export default {
{ deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮' }
]
},
{ // 无法生成实训
{ // 暂不生成实训
maxDuration: 15,
minDuration: 8,
operateType:CMD.Stand.CMD_STAND_EARLY_DEPART.value,
@ -276,10 +276,10 @@ export default {
]
},
{ // 无法生成实训
{
maxDuration: 15,
minDuration: 8,
operateType:CMD.Switch.CMD_SWITCH_CUT_OFF.value,
operateType:CMD.Switch.CMD_SWITCH_BLOCK.value,
skinCode: '08',
trainingName: '道岔封闭({7} 道岔)',
trainingRemark: '道岔封闭功能',
@ -290,10 +290,10 @@ export default {
{ deviceType: '02', orderNum: 2, operateCode: '105', tip: '鼠标左键点击【确定】按钮' }
]
},
{ // 无法生成实训
{
maxDuration: 15,
minDuration: 8,
operateType:CMD.Switch.CMD_SWITCH_ACTIVE.value,
operateType:CMD.Switch.CMD_SWITCH_UNBLOCK.value,
skinCode: '08',
trainingName: '道岔解封({7} 道岔)',
trainingRemark: '道岔解封功能',
@ -301,13 +301,16 @@ export default {
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '106', tip: '鼠标右键菜单选择【道岔解封】' },
{ deviceType: '02', orderNum: 2, operateCode: '106', tip: '鼠标左键点击【确定】按钮' }
{ deviceType: '02', orderNum: 2, operateCode: '1063', tip: '鼠标左键点击【确定】'},
{ deviceType: '02', orderNum: 3, operateCode: '1066', tip: '鼠标左键点击【{7}】', val: '{17}'},
{ deviceType: '02', orderNum: 4, operateCode: '1064', tip: '鼠标左键点击【确定】'},
{ deviceType: '02', orderNum: 5, operateCode: '1062', tip: '鼠标左键点击【关闭】'}
]
},
{ // 无法生成实训
{
maxDuration: 15,
minDuration: 8,
operateType:CMD.Switch.CMD_SWITCH_CUT_OFF.value,
operateType:CMD.Switch.CMD_SWITCH_BLOCK.value,
skinCode: '08',
trainingName: '道岔封闭({7} 道岔)',
trainingRemark: '道岔封闭功能',
@ -318,10 +321,10 @@ export default {
{ deviceType: '02', orderNum: 2, operateCode: '105', tip: '鼠标左键点击【道岔】', codeType:'SWITCH' }
]
},
{ // 无法生成实训
{
maxDuration: 15,
minDuration: 8,
operateType:CMD.Switch.CMD_SWITCH_ACTIVE.value,
operateType:CMD.Switch.CMD_SWITCH_UNBLOCK.value,
skinCode: '08',
trainingName: '道岔解封({7} 道岔)',
trainingRemark: '道岔解封功能',
@ -451,7 +454,7 @@ export default {
{
maxDuration: 15,
minDuration: 8,
operateType:CMD.Signal.CMD_SIGNAL_SET_ROUTE.value,
operateType: CMD.Signal.CMD_SIGNAL_SET_ROUTE.value,
skinCode: '08',
trainingName: '排列进路({3} 进路)',
trainingRemark: '排列进路功能',
@ -477,7 +480,7 @@ export default {
{ deviceType: '04', orderNum: 2, operateCode: '303', tip: '鼠标左键点击【确定】按钮' }
]
},
{ // 生成实训步骤有问题
{
maxDuration: 8,
minDuration: 5,
operateType:CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE.value,
@ -549,7 +552,7 @@ export default {
{ deviceType: '04', orderNum: 2, operateCode: '304', tip: '鼠标左键点击【确定】按钮' }
]
},
{ // 无法生成实训
{ // 暂不生成实训
maxDuration: 8,
minDuration: 5,
operateType:CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE.value,
@ -605,19 +608,5 @@ export default {
{ deviceType: '04', orderNum: 2, operateCode: '312', tip: '鼠标左键点击【确定】按钮' }
]
}
// {
// maxDuration: 8,
// minDuration: 5,
// operateType:CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE.value,
// skinCode: '08',
// trainingName: '总取消({3} 进路)',
// trainingRemark: '总取消',
// trainingType:'Signal',
// productTypes: ['01'],
// stepVOList: [
// { deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' },
// { deviceType: '04', orderNum: 2, operateCode: '2294', tip: '鼠标左键点击选择该信号机', codeType:'SIGNAL'}
// ]
// }
]
};

View File

@ -15,7 +15,7 @@
<span class="base-label">{{ $t('menu.commandInformation') }}</span>
<el-form label-position="center" size="mini">
<el-row>
<el-col :span="8">
<el-col :span="6">
<el-form-item :label="this.$t('menu.type')" label-width="40px">
<el-select v-model="operation" size="small" disabled>
<el-option
@ -27,8 +27,8 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="this.$t('menu.stationName')" label-width="80px">
<el-col :span="9">
<el-form-item :label="this.$t('menu.stationName')" label-width="120px">
<el-input v-model="stationName" size="small" disabled />
</el-form-item>
</el-col>
@ -116,7 +116,7 @@ export default {
typeList() {
return [
{ code: OperationEvent.Signal.unlock.menu.operation, name: this.$t('menu.menuSignal.signalDeblock') },
{ code: OperationEvent.Signal.guide.menu.operation, name: this.$t('menu.menuSignal.guideRouteHandle') }
{ code: OperationEvent.Signal.guide.menu.operation, name: '办理引导进路' }
];
},
show() {

View File

@ -1,440 +0,0 @@
<template>
<el-dialog v-dialogDrag class="fuzhou-01__systerm train-control" :title="title" :visible.sync="show" width="370px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-form ref="form" size="small" label-width="120px" :model="formModel" :rules="rules">
<el-form-item :label="this.$t('menu.groupNumber')+this.$t('global.colon')" prop="groupNumber">
<el-select
:id="domIdTrainNumber"
v-model="formModel.groupNumber"
filterable
:disabled="trainNumberIsDisabled"
@change="trainNumberChange"
>
<el-option
v-for="train in trainList"
:key="train.groupNumber"
:label="train.groupNumber"
:value="train.groupNumber"
/>
</el-select>
</el-form-item>
<el-form-item prop="type" label-width="0px">
<el-radio-group
:id="domIdTrainType"
v-model="formModel.type"
style="margin-left: 45px;"
@change="trainTypeChange"
>
<el-radio :label="'PLAN'">{{ $t('menu.planTrain') }}</el-radio>
<el-radio :label="'HEAD'">{{ $t('menu.headCodeTrain') }}</el-radio>
<el-radio :label="'MANUAL'" style="margin-top:5px;">{{ $t('menu.artificialTrain') }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="formModel.type == 'PLAN'|| formModel.type == 'HEAD'" prop="serviceNumber">
<span slot="label">{{ $t('menu.serviceNumber') + '' }}</span>
<el-input
:id="domIdServerNo"
v-model="formModel.serviceNumber"
:disabled="serverNoIsDisabled"
/>
</el-form-item>
<el-form-item v-if="formModel.type == 'PLAN'" :label="this.$t('menu.tripNumber')+this.$t('global.colon')" prop="tripNumber">
<el-input
:id="domIdTrainNo"
v-model="formModel.tripNumber"
maxlength="4"
/>
</el-form-item>
<el-form-item v-if="formModel.type == 'PLAN' || formModel.type == 'HEAD'" :label="this.$t('menu.targetCode')+this.$t('global.colon')" prop="destinationCode">
<el-input
:id="domIdTargetCode"
v-model="formModel.destinationCode"
:disabled="formModel.type !== 'HEAD'"
/>
</el-form-item>
<el-form-item v-if="formModel.type == 'MANUAL'" :label="this.$t('menu.category')+this.$t('global.colon')" prop="category">
<el-select
:id="domIdTrainNumber"
v-model="formModel.category"
filterable
:disabled="true"
>
<el-option
v-for="item in categoryList"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">{{ $t('global.confirm') }}</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel">{{ $t('global.cancel') }}</el-button>
</el-col>
</el-row>
<confirm-train ref="confirmTrain" />
<notice-info ref="noticeInfo" pop-class="fuzhou-01__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import ConfirmTrain from './childDialog/confirmTrain';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import Handler from '@/scripts/cmdPlugin/Handler';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import {getTrainDetailBytripNumber} from '@/api/simulation';
export default {
name: 'TrainControl',
components: {
ConfirmTrain,
NoticeInfo
},
data() {
return {
trainList: [],
serviceNumber:'',
formModel: {
tripNumber: '',
groupNumber: '',
type: 'PLAN',
serviceNumber: '',
destinationCode: '',
category: 'MM'
},
categoryList: [
{ name: 'MM', value: '01' }
],
rules: {
groupNumber: [
{ required: true, message: this.$t('rules.selectGroupNumber'), trigger: 'change' }
],
type: [
{ required: true, message: this.$t('rules.selectATrainType'), trigger: 'change' }
],
tripNumber: [
{ required: true, message: this.$t('rules.enterTheTripNumber'), trigger: 'blur' }
],
destinationCode: [
{ required: true, message: this.$t('rules.enterTheTargetCode'), trigger: 'blur' }
]
},
operation: null,
dialogShow: false,
loading: false,
direction: 0
};
},
computed: {
...mapGetters('map', [
'map'
]),
serverNoIsDisabled() {
return true;
},
trainNumberIsDisabled() {
if (this.operation != OperationEvent.Train.addTrainId.menu.operation) {
return true;
}
return '';
},
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdTrainNumber() {
if (this.dialogShow) {
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
/** 添加列车识别号*/
return OperationEvent.Train.addTrainId.trainNumberChange.domId;
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
/** 修改列车识别号*/
return OperationEvent.Train.editTrainId.trainNumberChange.domId;
}
}
return '';
},
domIdTrainNo() {
if (this.dialogShow) {
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
/** 添加列车识别号*/
return OperationEvent.Train.addTrainId.trainNoChange.domId;
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
/** 修改列车识别号*/
return OperationEvent.Train.editTrainId.trainNoChange.domId;
}
}
return '';
},
domIdTrainType() {
if (this.dialogShow) {
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
/** 添加列车识别号*/
return OperationEvent.Train.addTrainId.trainTypeChange.domId;
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
/** 修改列车识别号*/
return OperationEvent.Train.editTrainId.trainTypeChange.domId;
}
}
return '';
},
domIdServerNo() {
if (this.dialogShow) {
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
/** 添加列车识别号*/
return OperationEvent.Train.addTrainId.serverNoChange.domId;
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
/** 修改列车识别号*/
return OperationEvent.Train.editTrainId.serverNoChange.domId;
}
}
return '';
},
domIdTargetCode() {
if (this.dialogShow) {
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
/** 添加列车识别号*/
return OperationEvent.Train.addTrainId.targetCodeChange.domId;
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
/** 修改列车识别号*/
return OperationEvent.Train.editTrainId.targetCodeChange.domId;
}
}
return '';
},
domIdConfirm() {
if (this.dialogShow) {
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
/** 添加列车识别号*/
return OperationEvent.Train.addTrainId.menu.domId;
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
/** 修改列车识别号*/
return OperationEvent.Train.editTrainId.menu.domId;
}
}
return '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
title() {
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
return this.$t('menu.menuTrain.addTrainId');
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
return this.$t('menu.menuTrain.editTrainId');
}
return '';
}
},
watch: {
'formModel.tripNumber': function(val) {
if (val.length == 4) {
this.trainNoChange(val);
} else {
this.formModel = {
groupNumber: this.formModel.groupNumber,
tripNumber: val,
type: this.formModel.type,
serviceNumber: '',
targetCode: '',
category: 'MM'
};
}
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
loadInitData(map) {},
doShow(operate, selected) {
//
if (!this.dialogShow) {
this.operation = operate.operation;
}
const model = this.$store.getters['map/getDeviceByCode'](selected.code);
this.serviceNumber = model.serviceNumber;
this.formModel = {
groupNumber: model.groupNumber,
tripNumber: model.tripNumber,
type: model.type ? model.type : 'PLAN',
serviceNumber: model.serviceNumber,
destinationCode: model.destinationCode,
category: 'MM'
};
/** 加载列车数据*/
this.loadInitData(this.map);
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
},
trainNumberChange(groupNumber) {
const operate = {
groupNumber: groupNumber,
operation: ''
};
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
operate.operation = OperationEvent.Train.addTrainId.trainNumberChange.operation;
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
operate.operation = OperationEvent.Train.editTrainId.trainNumberChange.operation;
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
trainTypeChange(trainType) {
if (trainType === 'HEAD') {
this.formModel.serviceNumber = '';
} else if (trainType === 'PLAN' && this.serviceNumber) {
this.formModel.serviceNumber = this.serviceNumber;
}
const operate = {
type: trainType,
operation: ''
};
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
operate.operation = OperationEvent.Train.addTrainId.trainTypeChange.operation;
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
operate.operation = OperationEvent.Train.editTrainId.trainTypeChange.operation;
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
trainNoChange(tripNumber) {
const operate = {
tripNumber: tripNumber,
operation: ''
};
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
operate.operation = OperationEvent.Train.addTrainId.trainNoChange.operation;
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
operate.operation = OperationEvent.Train.editTrainId.trainNoChange.operation;
}
Handler.undo(1);
getTrainDetailBytripNumber(this.$route.query.group, {tripNumber:tripNumber}).then(resp => {
if (resp.data) {
this.formModel.serviceNumber = resp.data.serviceNumber;
this.formModel.destinationCode = resp.data.destinationCode;
}
}).catch(() => {
this.$message.error('获取列车信息失败!');
});
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
commit() {
if (this.operation == OperationEvent.Train.addTrainId.menu.operation) {
/** 增加列车识别号*/
this.addTrainId();
} else if (this.operation == OperationEvent.Train.editTrainId.menu.operation) {
/** 修改列车识别号*/
this.editTrainId();
}
},
//
addTrainId() {
this.$refs['form'].validate((valid) => {
if (valid) {
const params = {
groupNumber: this.formModel.groupNumber,
type: this.formModel.type,
serviceNumber: '',
tripNumber: '',
destinationCode: ''
};
if (this.formModel.type === 'PLAN') {
params.serviceNumber = this.formModel.serviceNumber;
params.tripNumber = this.formModel.tripNumber;
params.destinationCode = this.formModel.destinationCode;
} else if (this.formModel.type === 'HEAD') {
params.tripNumber = this.formModel.tripNumber;
params.destinationCode = this.formModel.destinationCode;
}
commitOperate(menuOperate.TrainWindow.addTrainId, params, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
//
editTrainId() {
this.$refs['form'].validate((valid) => {
if (valid) {
const params = {
groupNumber: this.formModel.groupNumber,
type: this.formModel.type,
serviceNumber: '',
tripNumber: '',
destinationCode: ''
};
if (this.formModel.type === 'PLAN') {
params.serviceNumber = this.formModel.serviceNumber;
params.tripNumber = this.formModel.tripNumber;
params.destinationCode = this.formModel.destinationCode;
} else if (this.formModel.type === 'HEAD') {
params.tripNumber = this.formModel.tripNumber;
params.destinationCode = this.formModel.destinationCode;
}
commitOperate(menuOperate.TrainWindow.editTrainId, params, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>

View File

@ -108,6 +108,11 @@ export default {
handler: this.active,
cmdType: CMD.Section.CMD_SECTION_ACTIVE
},
{
label: this.$t('menu.menuSection.sectionAxisPreReset'),
handler: this.axlePreReset,
cmdType: CMD.Section.CMD_SECTION_AXIS_PRE_RESET
},
{
label: this.$t('menu.menuSection.sectionBlockade'),
handler: this.lock,

View File

@ -108,6 +108,11 @@ export default {
label: this.$t('menu.menuSignal.signalOff'),
handler: this.signalClose,
cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_SIGNAL
},
{
label: '查询进路控制模式',
handler: this.detail,
cmdType: CMD.Signal.CMD_SIGNAL_DETAIL
}
],
Center: [
@ -141,6 +146,31 @@ export default {
handler: this.reopenSignal,
cmdType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL
},
{
label: this.$t('menu.menuSignal.guide'),
handler: this.guide,
cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE
},
{
label: this.$t('menu.menuSignal.setInterlockAutoRoute'),
handler: this.setAutoInterlock,
cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO
},
{
label: this.$t('menu.menuSignal.cancelInterlockAutoRoute'),
handler: this.cancelAutoInterlock,
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO
},
{
label: this.$t('menu.menuSignal.setInterlockAutoTrigger'),
handler: this.setAutoTrigger,
cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO_TRIGGER
},
{
label: this.$t('menu.menuSignal.cancelInterlockAutoTrigger'),
handler: this.cancelAutoTrigger,
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO_TRIGGER
},
{
label: this.$t('menu.menuSignal.humanControl'),
handler: this.humanControl,
@ -150,6 +180,11 @@ export default {
label: this.$t('menu.menuSignal.atsAutoControl'),
handler: this.atsAutoControl,
cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING
},
{
label: '查询进路控制模式',
handler: this.detail,
cmdType: CMD.Signal.CMD_SIGNAL_DETAIL
}
]
},
@ -346,27 +381,15 @@ export default {
this.$refs.routeHandControl.doShow(operate, this.selected, this.getRouteList(this.selected));
}
});
}
},
//
// detail() {
// const step = {
// start: true,
// code: `${this.selected.code}`,
// operation: OperationEvent.Signal.detail.menu.operation,
// param: {
// Signal_Code: `${this.selected.code}`
// }
// };
// this.$store.dispatch('training/next', step).then(({ valid }) => {
// if (valid) {
// this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
// querySignalStatus(this.group, {signalCode: `${this.selected.code}`}).then(resp => {
// const tempData = resp.data;
// this.$refs.routeDetail.doShow(step, this.selected, tempData);
// });
// }
// });
// }
detail() {
commitOperate(menuOperate.Signal.detail, {signalCode:this.selected.code}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.routeDetail.doShow(operate, this.selected, this.getRouteList(this.selected));
}
});
}
}
};
</script>

View File

@ -2,7 +2,7 @@
<div>
<pop-menu ref="popMenu" :menu="menu" />
<notice-info ref="noticeInfo" pop-class="fuzhou-01__systerm" />
<train-control ref="trainControl" />
<train-control ref="trainControl" pop-class="fuzhou-01__systerm" />
<train-delete ref="trainDelete" />
<train-move ref="trainMove" />
<train-switch ref="trainSwitch" />
@ -17,7 +17,7 @@ import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import TrainControl from './dialog/trainControl';
import TrainControl from '@/jmapNew/theme/components/menus/dialog/trainControl';
import TrainDelete from './dialog/trainDelete';
import TrainMove from './dialog/trainMove';
import TrainSwitch from './dialog/trainSwitch';

View File

@ -41,8 +41,7 @@ export default {
watch: {
'$store.state.socket.msgHead': function (elem) {
if (elem && elem.type == 'resp' && (elem.timeout || !elem.agree)) {
const control = this.$store.getters['map/getDeviceByCode'](elem.stationControlCode);
const station = this.$store.getters['map/getDeviceByCode'](control.stationCode);
const station = this.$store.getters['map/getDeviceByCode'](elem.stationCodes[0]);
const newOperate = {
name: station.name
};
@ -83,8 +82,7 @@ export default {
const operate = {
operation: OperationEvent.Command.close.notice.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
@ -95,7 +93,7 @@ export default {
const operate = {
operation: OperationEvent.Command.close.notice.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();

View File

@ -0,0 +1,156 @@
<template>
<el-dialog
v-dialogDrag
class="xian-01__systerm switch-control"
:title="title"
:visible.sync="show"
width="300px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row class="header">
<el-col :span="11"><span>车站名称</span></el-col>
<el-col :span="11" :offset="2"><span>道岔</span></el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-input v-model="stationName" size="small" disabled />
</el-col>
<el-col :span="11" :offset="2">
<el-input v-model="switchName" size="small" disabled />
</el-col>
</el-row>
<div style="padding: 10px 15px; border: 1px double lightgray;height: 60px;margin-top: 15px;">
<span class="base-label" style="left:-10px;background:#f0f0f0;">钩锁位置</span>
<div style=" position: relative; top:-10px;">
<el-radio-group v-model="normal" @change="chooseNormal">
<el-radio :id="normal? '': domIdChoose1" :label="true">定位</el-radio>
<el-radio :id="!normal? '': domIdChoose1" :label="false">反位</el-radio>
</el-radio-group>
</div>
</div>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="xian-01__systerm" />
</el-dialog>
</template>
<script>
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
name: 'SwitchHookLock',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
selected: null,
operation: '',
stationName: '',
switchName: '',
normal:false
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Switch.hookLock.confirm.domId : '';
},
domIdChoose1() {
return this.dialogShow ? OperationEvent.Switch.hookLock.choose1.domId : '';
},
title() {
return '道岔钩锁';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
if (!this.dialogShow) {
this.switchName = '';
this.stationName = '';
if (selected && selected._type.toUpperCase() === 'Switch'.toUpperCase()) {
this.switchName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.stationName = station.name;
}
}
if (selected.normal) {
this.normal = true;
} else {
this.normal = false;
}
this.operation = operate.operation;
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
}
},
chooseNormal(normal) {
const operate = {
operation: OperationEvent.StationStand.setStopTime.choose1.operation,
val: `${normal}`,
param: {}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.loading = true;
commitOperate(menuOperate.Switch.hookLock, {normal: this.normal}, 2).then(({valid, operate})=>{
if (valid) {
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(error.message);
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>

View File

@ -4,6 +4,7 @@
<switch-control ref="switchControl" :pop-class="'xian-01__systerm'" />
<switch-cmd-control ref="switchCmdControl" />
<speed-cmd-control ref="speedCmdControl" />
<switch-hook-lock ref="switchHookLock" />
<notice-info ref="noticeInfo" pop-class="xian-01__systerm" />
<set-fault ref="setFault" pop-class="xian-01__systerm" />
</div>
@ -15,11 +16,13 @@ import SwitchControl from '@/jmapNew/theme/components/menus/dialog/switchControl
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import SwitchCmdControl from './dialog/switchCmdControl';
import SpeedCmdControl from './dialog/speedCmdControl';
import SwitchHookLock from './dialog/switchHookLock';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { mapGetters } from 'vuex';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
@ -30,6 +33,7 @@ export default {
SwitchCmdControl,
SpeedCmdControl,
NoticeInfo,
SwitchHookLock,
SetFault
},
props: {
@ -99,6 +103,11 @@ export default {
label: '道岔取消限速',
handler: this.cancelSpeed,
cmdType:CMD.Switch.CMD_SWITCH_CANCEL_LIMIT_SPEED
},
{
label: '道岔钩锁',
handler: this.hookLock,
cmdType:CMD.Switch.CMD_SWITCH_HOOK_LOCK
}
],
Center: [
@ -151,6 +160,11 @@ export default {
label: '取消限速',
handler: this.cancelSpeed,
cmdType:CMD.Switch.CMD_SWITCH_CANCEL_LIMIT_SPEED
},
{
label: '道岔钩锁',
handler: this.hookLock,
cmdType:CMD.Switch.CMD_SWITCH_HOOK_LOCK
}
]
},
@ -319,6 +333,14 @@ export default {
this.$refs.speedCmdControl.doShow(operate, this.selected);
}
});
},
//
hookLock() {
commitOperate(menuOperate.Switch.hookLock, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.switchHookLock.doShow(operate, this.selected);
}
});
}
}
};

View File

@ -2,7 +2,7 @@
<div>
<pop-menu ref="popMenu" :menu="menu" pop-menu-class="xian-01__systerm" />
<notice-info ref="noticeInfo" pop-class="xian-01__systerm" />
<train-control ref="trainControl" />
<train-control ref="trainControl" pop-class="xian-01__systerm" />
<train-delete ref="trainDelete" />
<train-move ref="trainMove" />
<train-switch ref="trainSwitch" />
@ -18,7 +18,7 @@ import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import TrainControl from './dialog/trainControl';
import TrainControl from '@/jmapNew/theme/components/menus/dialog/trainControl';
import TrainDelete from './dialog/trainDelete';
import TrainMove from './dialog/trainMove';
import TrainSwitch from './dialog/trainSwitch';

View File

@ -41,12 +41,10 @@ export default {
watch: {
'$store.state.socket.msgHead': function (elem) {
if (elem && elem.type == 'resp' && (elem.timeout || !elem.agree)) {
const control = this.$store.getters['map/getDeviceByCode'](elem.stationControlCode);
const station = this.$store.getters['map/getDeviceByCode'](control.stationCode);
const station = this.$store.getters['map/getDeviceByCode'](elem.stationCodes[0]);
const newOperate = {
name: station.name
};
if (elem.timeout) {
newOperate['msg'] = this.$t('menu.passiveDialog.requestTimedOut');
this.doShow(newOperate);
@ -84,7 +82,7 @@ export default {
operation: OperationEvent.Command.close.notice.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();
@ -95,7 +93,7 @@ export default {
const operate = {
operation: OperationEvent.Command.close.notice.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.doClose();

View File

@ -45,7 +45,9 @@ export default {
/** 道岔区段封锁 */
CMD_SWITCH_SECTION_BLOCK: {value: 'Switch_Section_Block', label: '道岔区段封锁'},
/** 道岔区段解封 */
CMD_SWITCH_SECTION_UNBLOCK: {value: 'Switch_Section_Unblock', label: '道岔区段解封'}
CMD_SWITCH_SECTION_UNBLOCK: {value: 'Switch_Section_Unblock', label: '道岔区段解封'},
/** 道岔钩锁 **/
CMD_SWITCH_HOOK_LOCK:{value:'Switch_Hook_Lock', label:'道岔钩锁'}
},
// 控制模式操作

View File

@ -60,7 +60,6 @@ class Handler {
command = CommandHandler.getCommand(cmdType, wholeParam);
if (command && command.isError) {
this.operations.pop();
store.dispatch('training/setTempStep', null);
command = null;
} else if (command && command.isOver) {
this.clear();

View File

@ -541,6 +541,21 @@ export const OperationEvent = {
operation: '1174',
domId: '_Tips-Switch-Alxe-Effective-Confirm-2'
}
},
// 道岔钩锁
hookLock:{
menu: {
operation: '118',
domId: '_Tips-Switch-Hook-Lock'
},
choose1: {
operation: '1181',
domId: '_Tips-Switch-Hook-Lock-Choose-1'
},
confirm: {
operation: '1182',
domId: '_Tips-Switch-Hook-Lock-Confirm'
}
}
},

View File

@ -1,14 +1,10 @@
import store from '@/store/index_APP_TARGET';
import LangStorage from '@/utils/lang';
import Handler from './Handler.js';
import { TrainingMode } from '@/scripts/ConstDic';
import { Message } from 'element-ui';
class ValidateHandler {
vaildate(mode, operate) {
switch (mode) {
case TrainingMode.EDIT: // 编辑制作模式
return this.vaildate_edit(operate);
case TrainingMode.PRACTICE: // 练习模式
return this.vaildate_tips(operate);
case TrainingMode.TEACH: // 教学模式
@ -18,22 +14,6 @@ class ValidateHandler {
return true;
}
vaildate_edit(operate) {
let vaild = true;
if (Handler.getOperateBreakStatus()) {
const tip = LangStorage.getLang() == 'en' ? 'Please enter a hint and click next' : '请输入提示并点击下一步';
Message.error(tip);
Handler.pop();
vaild = false;
}
if (Handler.getTrainingStart()) {
store.dispatch('training/setTempStep', operate);
}
return vaild;
}
vaildate_tips(operate) {
let valid = true;
if (Handler.getTrainingStart()) {

View File

@ -20,7 +20,6 @@ OperateConverter.prototype = {
if (command && command.error) {
// 命令错误,可以回退或清空(暂用回退)
OperateHandler.operates.pop();
store.dispatch('training/setTempStep', null);
command = null;
} else if (command && command.over) {
// 清空操作组

View File

@ -4,8 +4,6 @@ import OperateConverter from '@/scripts/plugin/OperateConvert2Command';
import { TrainingMode } from '@/scripts/ConstDic';
import { getConverter } from '@/scripts/plugin/Converter/manager';
import { sendTrainingNextStep } from '@/api/jmap/training';
import { Message } from 'element-ui';
import LangStorage from '@/utils/lang';
var OperateHandler = function () {
};
@ -67,19 +65,7 @@ OperateHandler.prototype = {
let valid = true;
const mode = this.getTrainingMode();
if (TrainingMode.EDIT === mode) {
// 编辑制作模式
if (this.getOperateBreakStatus()) {
valid = false;
const tip = LangStorage.getLang() == 'en' ? 'Please enter a hint and click next' : '请输入提示并点击下一步';
Message.error(tip);
this.operates.pop();
return valid;
}
if (this.getTrainingStart()) {
store.dispatch('training/setTempStep', operate);
}
} else if (TrainingMode.TEACH === mode || TrainingMode.PRACTICE === mode) {
if (TrainingMode.TEACH === mode || TrainingMode.PRACTICE === mode) {
// 教学模式/练习模式
if (this.getTrainingStart()) {
valid = this.judge(operate);

View File

@ -106,6 +106,9 @@ const exam = {
countUsedTime({ commit }) {
commit('countUsedTime');
},
stopCountTime({ commit }) {
commit('stopCountTime');
},
setRuleList({ commit }, ruleList) {
commit('setRuleList', ruleList);
},

View File

@ -172,6 +172,23 @@ function recover(state, models) {
}
}
// 过滤空值 删除
function filtrationModel(models) {
models.forEach(model => {
for (const key in model) {
if (typeof model[key] == 'string') {
if (!model[key]) {
delete model[key];
}
}
if (model[key] == null || model[key] == undefined) {
delete model[key];
}
}
});
return models;
}
/**
* 实训状态数据
*/
@ -927,10 +944,12 @@ const map = {
if (!(models instanceof Array)) {
models = [models];
}
// 过滤 空/null/undefined value 值
const dictList = filtrationModel(models);
// 查找向上关联需要一起删除的设备
const dict = {};
models.forEach((model) => {
dictList.forEach((model) => {
if (model['_dispose']) {
queryDeleteModels(state, model, dict);
} else {

View File

@ -21,7 +21,6 @@ const training = {
offsetStationCode: '', // 偏移到车站
rezoomCount: 0, // 车站变更标识
steps: [], // 实训步骤数据
tempStep: {}, // 临时步骤数据(编辑模式)
order: -1, // 实训进行到第几步
orderCount: 0, // 步骤变更标识
operateErrMsg: '', // 操作错误提示信息
@ -39,9 +38,6 @@ const training = {
},
getters: {
tempStep: (state) => {
return state.tempStep;
},
steps: (state) => {
return state.steps;
},
@ -152,10 +148,6 @@ const training = {
state.orderCount += 1;
}
},
setTempStep: (state, step) => {
state.tempStep = step;
},
setOperateErrMsg: (state, errMsg) => {
state.operateErrMsg = errMsg;
},
@ -508,13 +500,6 @@ const training = {
commit('updateMapState', deviceStatus);
},
/**
* 设置临时步骤数据
*/
setTempStep: ({ commit }, step) => {
commit('setTempStep', step);
},
/**
* 开始教学模式
*/

View File

@ -130,10 +130,10 @@ export function getCountTime(data) {
// 对象 深拷贝
export function deepClone(item) {
const target = item.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
const target = item.constructor === Array ? [] : {};
for (const keys in item) {
if (item.hasOwnProperty(keys) && keys != 'instance') { // instance 对面不拷贝
if (item[keys] && typeof item[keys] === 'object') { // 如果值是对象,就递归一下
if (item[keys] && typeof item[keys] === 'object') {
target[keys] = item[keys].constructor === Array ? [] : {};
target[keys] = deepClone(item[keys]);
} else {
@ -146,10 +146,10 @@ export function deepClone(item) {
// 对象深拷贝并赋值
export function deepAssign(obj, item) {
const target = item.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
const target = item.constructor === Array ? [] : {};
for (const keys in item) {
if (item.hasOwnProperty(keys) && keys != 'instance') { // instance 对面不拷贝
if (item[keys] && typeof item[keys] == 'object') { // 如果值是对象,就递归一下
if (item[keys] && typeof item[keys] == 'object') {
const targetObj = item[keys].constructor == Array ? [] : {};
target[keys] = deepAssign(targetObj, item[keys]);
} else {
@ -160,27 +160,3 @@ export function deepAssign(obj, item) {
return Object.assign(obj, target);
}
// 对象深拷贝并赋值
export function deepAssigns(obj, item) {
const target = item.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
for (const keys in obj) {
if (item.hasOwnProperty(keys) && keys != 'instance') { // instance 对面不拷贝
if (item[keys] && typeof item[keys] == 'object') { // 如果值是对象,就递归一下
const targetObj = item[keys].constructor == Array ? [] : {};
target[keys] = deepAssign(targetObj, item[keys]);
} else {
target[keys] = item[keys];
}
} else {
if (typeof obj[keys] == 'boolean') {
target[keys] = false;
} else if (typeof obj[keys] == 'number') {
target[keys] = 0;
} else if (typeof obj[keys] == 'string') {
target[keys] = '';
}
}
}
return Object.assign(obj, target);
}

View File

@ -161,6 +161,14 @@ export default {
let endTime;
let startTime;
if (this.formModel.date) {
const h = new Date().getHours();
const m = new Date().getMinutes();
if (+new Date(this.formModel.date[0]) < +new Date()) {
this.formModel.date[0] = `${this.formModel.date[0].split(' ')[0]} ${h < 10 ? '0' + h : h }:${m < 10 ? '0' + m : m }:00`;
}
if (+new Date(this.formModel.date[1]) < +new Date()) {
this.formModel.date[1] = `${this.formModel.date[1].split(' ')[0]} ${h < 10 ? '0' + h : h }:${m < 10 ? '0' + m : m }:00`;
}
endTime = this.formModel.date[1];
startTime = this.formModel.date[0];
}

View File

@ -65,6 +65,8 @@ export default {
getSubSystemDetail(this.$route.params.subSystem).then(resp =>{
if (resp.data) {
this.tableData = resp.data.lessonList;
} else {
this.tableData = [];
}
}).catch((error)=>{
if (error.code == 30001) {

View File

@ -174,6 +174,7 @@ import IbpKey from './ibpKey';
import IbpClock from './ibpClock';
import IbpRotateTip from './ibpRotateTip';
import { putIbpDrawData, getIbpInfo } from '@/api/ibp';
import {getStationList} from '@/api/runplan';
export default {
name: 'IbpOperate',
@ -200,28 +201,34 @@ export default {
return {
enabledTab: 'Background',
data: '',
stationOptions:[
{
value: 'Station_203_0.07533',
// label: ''
label: '车站一'
},
{
value: 'Station_207_0.62282',
// label: ''
label: '车站二'
},
{
value: 'Station_209_0.95175',
label: '车站三'
// label: ''
}
],
stationOptions:[],
// stationOptions:[
// {
// value: 'Station_203_0.07533',
// // label: ''
// label: ''
// },
// {
// value: 'Station_207_0.62282',
// // label: ''
// label: ''
// },
// {
// value: 'Station_209_0.95175',
// label: ''
// // label: ''
// }
// ],
// drawData: {},
stationCode: '',
// stationCode: '',
height: this.$store.state.app.height - 190
};
},
computed:{
stationCode() {
return this.$route.query.stationCode;
}
},
watch: {
'$store.state.ibp.rightClickCount': function (val) {
const model = this.$store.getters['ibp/updateDeviceData'];
@ -230,6 +237,7 @@ export default {
},
async created() {
try {
const resp = await getStationList(this.$route.query.mapId);
const res = await getIbpInfo(this.$route.query.ibpId);
if (res.data.data) {
const drawData = JSON.parse(res.data.data).drawData;
@ -237,6 +245,12 @@ export default {
} else {
this.setEmptyShow();
}
if (resp.data && resp.data.length > 0) {
const stationList = resp.data;
stationList.forEach(station=>{
this.stationOptions.push({label:station.name, value:station.code});
});
}
} catch (error) {
console.log('error', error);
}

View File

@ -6,7 +6,7 @@
<div v-if="chapterShow" class="box">
<chapter-edit ref="chapter" @refresh="refresh" />
</div>
<div v-if="treeShow" class="box">
<div v-if="sortTreeShow" class="box">
<sort-tree ref="sortTree" @refresh="refresh" />
</div>
</div>
@ -30,7 +30,7 @@ export default {
isNew: true,
lessonShow: true,
chapterShow: false,
treeShow: false,
sortTreeShow: false,
menuoper: {},
demoObj: null
};
@ -45,49 +45,19 @@ export default {
},
watch: {
$route() {
const data = this.$route.query;
switch (this.$route.params.type) {
case 'lessonCreate':
this.lessonCreate(data);
break;
case 'lessonEdit':
this.lessonEdit(data);
break;
case 'chapterCreate':
this.chapterCreate(data);
break;
case 'chapterEdit':
this.chapterEdit(data);
break;
case 'treeSort':
this.treeSort(data);
break;
}
this.initData();
}
},
mounted() {
const data = this.$route.query;
switch (this.$route.params.type) {
case 'lessonCreate':
this.lessonCreate(data);
break;
case 'lessonEdit':
this.lessonEdit(data);
break;
case 'chapterCreate':
this.chapterCreate(data);
break;
case 'chapterEdit':
this.chapterEdit(data);
break;
case 'treeSort':
this.treeSort(data);
break;
}
this.initData();
},
methods: {
initData() {
const data = this.$route.query;
this.runFunc(this.$route.params.type, data);
},
exchangeShow(model) {
['lessonShow', 'chapterShow', 'treeShow'].forEach(elem => {
['lessonShow', 'chapterShow', 'sortTreeShow'].forEach(elem => {
if (model[elem]) {
this[elem] = true;
} else {
@ -95,40 +65,37 @@ export default {
}
});
},
lessonCreate(data) {
this.isNew = true;
this.exchangeShow({ lessonShow: true });
runFunc(func, data) {
//
return this[func](data);
},
toNextPage(type, isCreate, data) {
this.isNew = isCreate;
const typeShow = {};
typeShow[type + 'Show'] = true;
this.exchangeShow(typeShow);
this.$nextTick(() => {
this.$refs.lesson.initData(true, data);
if (type != 'sortTree') {
this.$refs[type].initData(isCreate, data);
} else {
this.$refs[type].initData(data);
}
});
},
lessonCreate(data) {
this.toNextPage('lesson', true, data);
},
lessonEdit(data) {
this.isNew = false;
this.exchangeShow({ lessonShow: true });
this.$nextTick(() => {
this.$refs.lesson.initData(false, data);
});
this.toNextPage('lesson', false, data);
},
chapterCreate(data) {
this.isNew = true;
this.exchangeShow({ chapterShow: true });
this.$nextTick(() => {
this.$refs.chapter.initData(true, data);
});
this.toNextPage('chapter', true, data);
},
chapterEdit(data) {
this.isNew = false;
this.exchangeShow({ chapterShow: true });
this.$nextTick(() => {
this.$refs.chapter.initData(false, data);
});
this.toNextPage('chapter', false, data);
},
treeSort(data) {
this.isNew = false;
this.exchangeShow({ treeShow: true });
this.$nextTick(() => {
this.$refs.sortTree.initData(data);
});
this.toNextPage('sortTree', false, data);
},
refresh(filterSelect) {
this.$emit('refresh');

View File

@ -126,10 +126,15 @@ export default {
components: { QrcodeVue, FloatPart },
data() {
const validateUsername = (rule, value, callback) => {
if (value.length < 5 && !this.project.endsWith('gzb')) {
callback(new Error(this.$t('login.enterTheCorrectUserName')));
} else {
// if (value.length < 5 && !this.project.endsWith('gzb')) {
// callback(new Error(this.$t('login.enterTheCorrectUserName')));
// } else {
// callback();
// }
if (value) {
callback();
} else {
callback(new Error('请输入用户名'));
}
};
const validatePass = (rule, value, callback) => {

View File

@ -6,8 +6,8 @@
</span>
</div>
<div class="handleShow">
<span v-if="show" class="el-icon-arrow-right" @click="handleSliderShow(true)">{{ $t('display.lesson.unfold') }}</span>
<span v-else class="el-icon-arrow-left" @click="handleSliderShow(false)">{{ $t('display.lesson.fold') }}</span>
<span v-if="show" class="el-icon-arrow-right" style="cursor:pointer" @click="handleSliderShow(true)">{{ $t('display.lesson.unfold') }}</span>
<span v-else class="el-icon-arrow-left" style="cursor:pointer" @click="handleSliderShow(false)">{{ $t('display.lesson.fold') }}</span>
</div>
<div class="slider-tree">
<el-scrollbar wrap-class="scrollbar-wrapper" style="background: #fff;">

View File

@ -151,6 +151,7 @@ export default {
if (data == 'min') {
this.minimize = true;
this.$refs.chatSetting.doClose();
this.$refs.createGroup.doClose();
} else {
this.minimize = false;
}

View File

@ -1,5 +1,10 @@
<template>
<el-dialog v-dialogDrag :title="title" :visible.sync="dialogShow" width="800px" :before-close="doClose" :modal="false">
<!-- <el-dialog v-dialogDrag :title="title" :visible.sync="dialogShow" width="800px" :before-close="doClose" :modal="false"> -->
<div v-show="dialogShow" id="faultChoose">
<div class="falutChooseTitle">{{ title }}</div>
<div class="closeFalutChoose" @click="closeFaultChoose">
<span class="el-icon-close closeFalutChooseIn" />
</div>
<div class="draft">
<el-radio-group v-model="auto">
<el-radio :label="false" border>{{ $t('display.faultChoose.manual') }}</el-radio>
@ -7,17 +12,58 @@
</el-radio-group>
</div>
<div v-if="auto" class="card">
<QueryListPage ref="pageRules" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
<QueryListPage ref="pageRules" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" class="queryList" />
<div v-if="isAdd" class="addRules">
<div class="addRulesInner">
<div class="addRulesInnerTitle">新增故障</div>
<div class="closeAddRulesInner" @click="isAdd = false">
<span class="el-icon-close closeAddRulesIn" />
</div>
<el-form ref="form" :model="faultRule" label-width="100px" style="margin-left:15px;">
<el-form-item label="目标设备">
<!-- faultRule.targetDeviceCode -->
<el-input v-model="targetDevice" disabled size="small" class="inputModelClass" />
<el-button :type="field === 'targetActive' ? 'danger' : 'primary'" size="small" @click="hover('targetActive')">{{ $t('map.activate') }}</el-button>
</el-form-item>
<el-form-item label="故障类型">
<el-input v-model="faultRule.faultType" size="small" class="inputModelClass" />
</el-form-item>
<el-form-item label="触发设备">
<!-- faultRule.condition.triggerDeviceCode -->
<el-input v-model="triggerDevice" size="small" disabled class="inputModelClass" />
<el-button :type="field === 'triggerActive' ? 'danger' : 'primary'" size="small" @click="hover('triggerActive')">{{ $t('map.activate') }}</el-button>
</el-form-item>
<el-form-item label="触发后状态">
<!-- <el-input v-model="faultRule.condition.triggerDeviceStatus" size="small" class="inputModelClass" /> -->
<el-select v-model="faultRule.condition.triggerDeviceStatus" placeholder="请选择" class="inputModelClass">
<el-option
v-for="item in triggerStatusList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
<span class="addRulesFooter">
<el-button size="medium" type="primary" @click="addRulesCreate">{{ $t('global.confirm') }}</el-button>
<el-button size="medium" @click="addRulesClose">{{ $t('global.cancel') }}</el-button>
</span>
</div>
</div>
</div>
<span slot="footer" class="dialog-footer">
<!-- <span slot="footer" class="dialog-footer"> -->
<span class="faultChooseFoot">
<el-button @click="dialogShow = false">{{ $t('global.cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="handleConfirm">{{ $t('global.confirm') }}</el-button>
</span>
</el-dialog>
</div>
<!-- </el-dialog> -->
</template>
<script>
import { getFailureGenerateRules, setFailureMode } from '@/api/simulation';
import { getFailureGenerateRules, setFailureModeNew } from '@/api/simulation';
import { FaultStatusEnum } from '@/scripts/FaultDic';
import ModelType from '@/jmap/constant/deviceType';
@ -28,14 +74,35 @@ export default {
group: {
type: String,
required: true
},
offset: {
type: Number,
required: true
}
},
data() {
return {
dialogShow: false,
loading: false,
isAdd:false,
deviceMap: {},
auto: false,
field:'',
triggerStatusList:[],
faultRule:{
targetDeviceCode:'',
targetDeviceType:'',
lineCode:'',
faultType:'',
condition:{
triggerDeviceCode:'',
triggerDeviceStatus:'',
triggerDeviceType :'',
type:''
}
},
targetDevice:'',
triggerDevice:'',
pagerConfig: {
pageSize: 'pageSize',
pageIndex: 'pageNum'
@ -63,6 +130,9 @@ export default {
title: this.$t('display.faultChoose.triggerTarget'),
prop: 'target'
}
],
actions: [
{ text: this.$t('global.add'), handler: this.handleAdd }
]
}
};
@ -75,6 +145,18 @@ export default {
return this.$route.query.lineCode;
}
},
watch:{
// $store.state.config.menuBarLoadedCount
'offset': function (val) {
this.dragEvent();
},
'$store.state.menuOperation.selectedCount':function(em) {
const device = this.$store.state.menuOperation.selected;
if (device.code) {
this.deviceSelect(device);
}
}
},
mounted() {
this.$Dictionary.physicalViewType().then(list => {
this.deviceMap = [];
@ -107,8 +189,46 @@ export default {
return name;
},
closeFaultChoose() {
this.dialogShow = false;
this.isAdd = false;
},
deviceSelect(em) {
if (this.field.toUpperCase() === 'targetActive'.toUpperCase()) {
this.faultRule.targetDeviceType = em._type.toUpperCase();
this.faultRule.targetDeviceCode = em.code;
if (em._type.toUpperCase() === 'Section'.toUpperCase() && em.parentName) {
this.targetDevice = em._type + '-' + em.parentName + '-' + em.name;
} else {
this.targetDevice = em._type + '-' + em.name;
}
this.field = '';
} else if (this.field.toUpperCase() === 'triggerActive'.toUpperCase()) {
this.faultRule.condition.triggerDeviceType = em._type.toUpperCase();
this.faultRule.condition.triggerDeviceCode = em.code;
if (em._type.toUpperCase() === 'Section'.toUpperCase() && em.parentName) {
this.triggerDevice = em._type + '-' + em.parentName + '-' + em.name;
} else {
this.triggerDevice = em._type + '-' + em.name;
}
this.field = '';
}
// faultRule:{
// targetDeviceCode:'',
// targetDeviceType:'',
// lineCode:'',
// faultType:'',
// condition:{
// triggerDeviceCode:'',
// triggerDeviceStatus:'',
// triggerDeviceType :'',
// type:''
// }
// },
},
doShow() {
this.dialogShow = true;
this.faultRule.lineCode = this.$route.query.lineCode;
this.queryList.data = [];
getFailureGenerateRules({ skin: this.lineCode, group: this.group }).then(response => {
const data = response.data;
@ -121,9 +241,25 @@ export default {
});
});
},
hover(field) {
if (this.field == '') {
// if (this.isFirstTips) {
// this.$message('');
// this.isFirstTips = false;
// }
this.field = field;
// this.$store.dispatch('scriptRecord/updateIsScriptCommand', true);
} else {
this.field = '';
// this.$store.dispatch('scriptRecord/updateIsScriptCommand', false);
}
},
doClose() {
this.dialogShow = false;
},
handleAdd() {
this.isAdd = true;
},
getFailureModel(auto) {
const model = { auto };
if (auto) {
@ -138,7 +274,7 @@ export default {
handleConfirm() {
this.$nextTick(() => {
const faultModel = this.getFailureModel(this.auto);
setFailureMode(faultModel, this.group).then(() => {
setFailureModeNew(faultModel, this.group).then(() => {
this.$message.success(this.$t('display.faultChoose.setFaultSuccess'));
}).catch(() => {
this.$messageBox(this.$t('display.faultChoose.setFaultFail'));
@ -149,6 +285,79 @@ export default {
},
reloadTable() {
this.queryList.reload();
},
addRulesCreate() {
},
addRulesClose() {
this.$refs.form.resetForm();
this.targetDevice = '';
this.triggerDevice = '';
this.isAdd = false;
},
dragEvent() {
const offset = this.offset;
const dialogHeaderEl = document.querySelector('.falutChooseTitle');
const dragDom = document.querySelector('#faultChoose');
dialogHeaderEl.style.cursor = 'move';
/** 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);*/
const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
dialogHeaderEl.onmousedown = (e) => {
/** 鼠标按下,计算当前元素距离可视区的距离*/
const disX = e.clientX - dialogHeaderEl.offsetLeft;
const disY = e.clientY - dialogHeaderEl.offsetTop;
/** 获取到的值带px 正则匹配替换*/
let styL, styT;
/** 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px*/
if (sty.left.includes('%')) {
// eslint-disable-next-line no-useless-escape
styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100);
styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100);
} else {
// eslint-disable-next-line no-useless-escape
styL = +sty.left.replace(/\px/g, '');
// eslint-disable-next-line no-useless-escape
styT = +sty.top.replace(/\px/g, '');
}
document.onmousemove = function (e) {
/** 通过事件委托,计算移动的距离*/
const l = e.clientX - disX;
const t = e.clientY - disY;
/** 移动当前元素*/
// dragDom.style.left = `${l + styL}px`;
// dragDom.style.top = `${t + styT}px`;
/** 移动当前元素*/
if (l + styL < 0) {
dragDom.style.left = `0px`;
} else if (l + styL > document.body.clientWidth - dragDom.clientWidth - 10) {
dragDom.style.left = `${document.body.clientWidth - dragDom.clientWidth - 10}px`;
} else {
dragDom.style.left = `${l + styL}px`;
}
if (t + styT <= offset) {
dragDom.style.top = offset + `px`;
} else if (t + styT > document.body.clientHeight - dragDom.clientHeight - 10) {
dragDom.style.top = `${document.body.clientHeight - dragDom.clientHeight - 10}px`;
} else {
dragDom.style.top = `${t + styT}px`;
}
/** 将此时的位置传出去*/
// binding.value({ x: e.pageX, y: e.pageY });
};
document.onmouseup = function () {
document.onmousemove = null;
document.onmouseup = null;
};
};
}
}
};
@ -158,4 +367,84 @@ export default {
text-align: center;
margin-bottom: 10px;
}
.falutChooseTitle{
padding: 15px;
cursor: all-scroll;
}
#faultChoose{
width: 900px;
position: absolute;
left: 30%;
top: 20%;
background: #fff;
padding:0px 0px 15px 0px;
// transform: translate3d(-50%,-50%,0);
border-radius: 6px;
z-index:999;
}
.faultChooseFoot{
display: inline-block;
float: right;
margin-right: 20px;
margin-top: 20px;
}
.closeFalutChoose{
position: absolute;
right: 0px;
top: 0px;
width: 35px;
height: 35px;
cursor: pointer;
}
.closeFalutChooseIn{
font-size: 20px;
margin-left: 5px;
margin-top: 10px;
}
.addRules{
position: absolute;
width: 100%;
left: 0;
top: 0px;
height: 100%;
}
.addRulesInner{
position: relative;
width: 380px;
height: 345px;
margin-top:46px;
background: #fff;
border-radius: 10px;
border: 1px #ccc solid;
margin-left: auto;
margin-right: auto;
box-shadow: 3px 3px 3px #a0a0a0;
z-index:2;
}
.queryList{
height: 300px;
overflow: auto;
}
.inputModelClass{
width:150px;
}
.addRulesInnerTitle{
padding: 10px;
font-size: 14px;
}
.closeAddRulesInner{
position: absolute;
right: 10px;
top: 9px;
width: 19px;
height: 19px;
cursor: pointer;
}
.closeAddRulesIn{
font-size: 19px;
}
.addRulesFooter{
margin-left: 116px;
display: inline-block;
}
</style>

View File

@ -10,12 +10,9 @@
ref="menuDemon"
:offset="offset"
:offset-bottom="offsetBottom"
:group="group"
:quest-id="questId"
:user-role="userRole"
@tryTime="tryTime"
@hidepanel="hidepanel"
:script-id="scriptId"
@quitQuest="quitQuest"
@hidepanel="hidepanel"
@showScheduling="showScheduling"
/>
@ -24,7 +21,6 @@
ref="menuSchema"
:offset="offset"
:offset-bottom="offsetBottom"
:group="group"
:show-station="showStation"
:station-list="stationList"
:show-select-station="showSelectStation"
@ -42,7 +38,7 @@
<fault-choose ref="faultChoose" :group="group" />
<run-plan-Load ref="runPlanLoad" :group="group" />
<run-plan-view ref="runPlanView" :group="group" />
<add-quest ref="addQuest" @selectQuest="selectQuest" />
<!-- <add-quest ref="addQuest" @selectQuest="selectQuestNew" /> -->
</div>
</template>
@ -54,16 +50,14 @@ import MapSystemDraft from '@/views/newMap/mapsystemNew/index';
import MenuDemon from '@/views/newMap/displayNew/menuDemon';
import MenuSchema from '@/views/newMap/displayNew/menuSchema';
import MenuSystemTime from '@/views/newMap/displayNew/menuSystemTime';
import AddQuest from './demon/addQuest';
// import AddQuest from './demon/addQuest';
import { mapGetters } from 'vuex';
import { setGoodsTryUse } from '@/api/management/goods';
import { clearSimulation, getSimulationInfoNew, scriptExecuteNew } from '@/api/simulation';
import { clearSimulation, getSimulationInfoNew } from '@/api/simulation';
import { OperateMode, TrainingMode } from '@/scripts/ConstDic';
import { checkLoginLine } from '@/api/login';
import { loadNewMapDataByGroup } from '@/utils/loaddata';
import { EventBus } from '@/scripts/event-bus';
import Vue from 'vue';
import {loadDraftScript, loadDraftScriptNew} from '@/api/designPlatform';
//
// import Jl3dSimulation from '@/views/jlmap3d/simulation/jl3dsimulation';
@ -76,7 +70,7 @@ export default {
RunPlanLoad,
RunPlanView,
FaultChoose,
AddQuest,
// AddQuest,
MapSystemDraft,
MenuDemon,
MenuSchema,
@ -108,7 +102,7 @@ export default {
panelShow: true,
simulationShow: false,
drivingShow: false,
questId: 0, // Id
scriptId:0, // Id
showStation: '',
stationList: [],
showSelectStation: false, // select
@ -212,9 +206,6 @@ export default {
this.group = this.$route.query.group || '';
},
async mounted() {
EventBus.$on('clearCheckLogin', () => {
this.clearCheckLogin();
});
await this.setWindowSize();
await this.initLoadData();
this.switchMode('01');
@ -224,7 +215,6 @@ export default {
await this.quit();
await this.$store.dispatch('training/reset');
await this.$store.dispatch('map/mapClear');
EventBus.$off('clearCheckLogin');
},
methods: {
// 线
@ -274,6 +264,10 @@ export default {
mousemove(e) {
this.mouseNum = 1;
},
// 退
async quitQuest() {
this.scriptId = 0;
},
setPosition() {
this.$nextTick(() => {
let offset = 15;
@ -355,41 +349,18 @@ export default {
const row = {group: this.$route.query.group, id: this.$route.query.scriptId};
this.$refs.addQuest.handleLoad(1, row);
},
// selectQuestNew(row, id, mapLocation, roleName) {
// this.$refs.
// },
//
async selectQuest(row, id, mapLocation, roleName) {
try {
const res = this.drawWay ? await loadDraftScriptNew(id, this.group) : await loadDraftScript(row.id, id, this.group);
if (res && res.code == 200) {
this.questId = parseInt(row.id);
if (mapLocation) {
const newMapLocation = {'offsetX': mapLocation.x, 'offsetY': mapLocation.y, 'scaleRate': mapLocation.scale};
Vue.prototype.$jlmap.setOptions(newMapLocation);
}
if (this.drawWay) {
scriptExecuteNew(this.group).then(data=>{
}).catch(error=>{
console.log(error);
});
}
// if (res.data && res.data.mapLocation) {
// const mapLocation={'offsetX': res.data.mapLocation.x, 'offsetY': res.data.mapLocation.y, 'scaleRate': res.data.mapLocation.scale};
// Vue.prototype.$jlmap.setOptions(mapLocation);
// }
}
if (this.$refs.menuDemon) {
await this.$refs.menuDemon.initLoadPage();
}
if (this.$refs.menuScript) {
await this.$refs.menuScript.initLoadPage();
}
} catch (error) {
this.$messageBox(error.message);
async selectQuest(row) {
this.scriptId = parseInt(row.id);
if (this.isDemon) {
this.$refs.menuDemon.initLoadPage();
}
if (this.isScript) {
this.$refs.menuScript.initLoadPage();
}
},
// 退
async quitQuest() {
this.questId = 0;
},
// id

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,14 @@
<template>
<div>
<chat-box ref="chatbox" :group="group" :user-role="userRole" />
<div class="display-card" :style="{top: offset+'px'}">
<!-- :style="{top: offset+'px'}" -->
<div class="display-card">
<el-row>
<span v-if="countTime" class="display-score">{{ $t('display.demon.trialTime') }} {{ countTime }}</span>
</el-row>
</div>
<div class="display-draft" :style="{bottom: offsetBottom + 'px'}">
<!-- :style="{bottom: offsetBottom + 'px'}" -->
<div class="display-draft">
<el-button-group>
<el-button v-if="isShowScheduling && !dataError" type="primary" @click="jumpScheduling">{{ $t('display.demon.dispatchingPlan') }}</el-button>
<el-button v-if="!isShowScheduling && !dataError" type="jl3dpassflow" @click="jumpjl3dpassflow">{{ jl3dpassflow }}</el-button>
@ -40,6 +42,7 @@ import { ranAsPlan, exitRunPlan, clearSimulation, getSimulationInfoNew } from '@
import { PermissionType } from '@/scripts/ConstDic';
import { getCountTime } from '@/utils/index';
import { quitScriptNew, scriptRePreview } from '@/api/simulation';
import { setGoodsTryUse } from '@/api/management/goods';
export default {
name: 'MenuDemon',
@ -48,10 +51,6 @@ export default {
ChatBox
},
props: {
group: {
type: String,
required: true
},
offset: {
type: Number,
required: true
@ -60,27 +59,17 @@ export default {
type: Number,
required: true
},
questId: {
scriptId: {
type: Number,
default() {
return 0;
}
},
showStation: {
type: String,
default() {
return '';
}
},
dataError: {
type: Boolean,
default() {
return false;
}
},
userRole: {
type: String,
required: true
}
},
data() {
@ -107,7 +96,7 @@ export default {
},
computed: {
isShowQuest() {
return this.questId;
return this.scriptId;
},
isShowScheduling() {
return this.$route.query.prdType == '05';
@ -117,6 +106,20 @@ export default {
},
isHebLine() {
return this.$route.query.lineCode === '07';
},
group() {
return this.$route.query.group;
},
userRole() {
if (this.$route.query.prdType == '02') {
return 'DISPATCHER';
} else if (this.$route.query.prdType == '01') {
return 'STATION_SUPERVISOR';
} else if (this.$route.query.prdType == '04') {
return 'DRIVER';
} else {
return 'AUDIENCE';
}
}
},
watch: {
@ -236,7 +239,7 @@ export default {
quitScriptNew(this.group).then(resp => {
scriptRePreview(this.group).then(resp=>{
getSimulationInfoNew(this.group).then(()=>{
this.$emit('quitQuest');
this.quitQuest();
this.initLoadPage();
this.clearAllData();
}).catch(()=>{
@ -251,7 +254,7 @@ export default {
} else {
quitScriptNew(this.group).then(resp => {
getSimulationInfoNew(this.group).then(()=>{
this.$emit('quitQuest');
this.quitQuest();
this.initLoadPage();
this.clearAllData();
}).catch(()=>{
@ -262,6 +265,10 @@ export default {
});
}
},
quitQuest() {
this.$emit('quitQuest');
this.$store.dispatch('scriptRecord/updateSimulationPause', false);
},
clearAllData() {
this.$refs.chatbox.clearAllData();
},
@ -289,7 +296,11 @@ export default {
},
setTryTime() {
if (this.try) {
this.$emit('tryTime', { time: this.tryTime, goodsId: this.goodsId });
const data = { time: this.tryTime, goodsId: this.goodsId };
if (data.goodsId) {
setGoodsTryUse(data);
}
}
},
change3dname() {

View File

@ -33,10 +33,6 @@ export default {
TipExamList
},
props: {
group: {
type: String,
required: true
},
offset: {
type: Number,
required: true
@ -82,6 +78,9 @@ export default {
};
},
computed: {
group() {
return this.$route.query.group;
},
formatUsedTime() {
return timeFormat(this.$store.state.training.usedTime);
}

View File

@ -22,34 +22,28 @@
</el-button-group>
</div>
<tip-training-detail :training-obj="trainingObj" :offset-bottom="offsetBottom + tipBottom" />
<left-slider v-if="isShowLeftSlider" :offset-bottom="offsetBottom" @overallTranslation="overallTranslation" />
</div>
</template>
<script>
import TipTrainingDetail from './tipTrainingDetail';
import LeftSlider from '@/views/newMap/displayNew/LeftSlider';
import { mapGetters } from 'vuex';
import { Notification } from 'element-ui';
import { startTrainingNew, endTrainingNew } from '@/api/jmap/training';
import { trainingNotifyNew } from '@/api/simulation';
import { TrainingMode, UrlConfig } from '@/scripts/ConstDic';
import { timeFormat } from '@/utils/date';
import { getTrainingStepsDetailNew } from '@/api/jmap/training';
export default {
name: 'MenuLesson',
components: {
TipTrainingDetail
TipTrainingDetail,
LeftSlider
},
props: {
group: {
type: String,
required: true
},
trainingObj: {
type: Object,
default() {
return null;
}
},
offset: {
type: Number,
required: true
@ -91,6 +85,7 @@ export default {
return {
timeInterval: null,
TrainingMode: TrainingMode,
trainingObj:{},
demoMode: TrainingMode.TEACH,
isDisable: false,
backDisable: false,
@ -104,11 +99,17 @@ export default {
'usedTime',
'basicInfo'
]),
group() {
return this.$route.query.group;
},
formatScore() {
return this.score;
},
formatUsedTime() {
return timeFormat(this.usedTime);
},
isShowLeftSlider() {
return this.$route.query.lessonId != '0';
}
},
watch: {
@ -121,6 +122,15 @@ export default {
this.isDisable = false;
},
'$store.state.map.mapViewLoadedCount': function (val) {
if (this.$route.query.trainingId) {
getTrainingStepsDetailNew(this.$route.query.trainingId, { group: this.group }).then(resp => {
this.trainingObj = resp.data;
this.$store.dispatch('training/setTrainingData', this.trainingObj);
}).catch(error => {
this.$messageBox(`初始化失败实训内容失败: ${error.message}`);
});
}
this.$store.dispatch('training/end', null);
this.$store.dispatch('training/reset');
this.$store.dispatch('training/emitTipFresh');
@ -142,6 +152,14 @@ export default {
});
}
},
overallTranslation(flag) {
const panel = document.getElementById('leftSlider');
if (flag) {
panel.style.transform = 'translateX(400px)';
} else {
panel.style.transform = '';
}
},
start() {
//
this.$store.dispatch('menuOperation/setButtonOperation', null);
@ -231,14 +249,6 @@ export default {
history.go(-1);
}
},
handelGroupButtonTranslate(flag) {
// const buttons = document.getElementById('teachGroupButton');
// if (flag) {
// buttons.style.transform = 'translateX(-400px)';
// } else {
// buttons.style.transform = 'translateX(0px)';
// }
},
switchStationMode(val) {
this.$emit('switchStationMode', val);
}

View File

@ -30,10 +30,6 @@ export default {
SetTime
},
props: {
group: {
type: String,
required: true
},
offset: {
type: Number,
required: true
@ -78,6 +74,11 @@ export default {
]
};
},
computed:{
group() {
return this.$route.query.group;
}
},
watch:{
'showStation':function(val) {
this.showStationContent = this.showStation;

View File

@ -22,7 +22,7 @@
<el-radio-button class="mode" :label="OperateMode.FAULT">{{ $t('display.schema.faultOperation') }}</el-radio-button>
</el-radio-group>
</div>
<fault-choose v-if="isDemon || isScript" ref="faultChoose" :group="group" />
<fault-choose v-if="isDemon || isScript" ref="faultChoose" :group="group" :offset="offset" />
<run-plan-Load ref="runPlanLoad" :group="group" />
<run-plan-view ref="runPlanView" :group="group" />
<!-- 加载剧本列表弹窗 -->
@ -38,7 +38,9 @@ import { mapGetters } from 'vuex';
import { OperateMode } from '@/scripts/ConstDic';
// import { getStationList } from '@/api/runplan';
import { getByGroupStationList } from '@/api/jmap/map';
import { getEveryDayRunPlanNew } from '@/api/simulation';
import {loadDraftScript, loadDraftScriptNew} from '@/api/designPlatform';
import { getEveryDayRunPlanNew, loadScriptNew, scriptExecuteNew } from '@/api/simulation';
import Vue from 'vue';
//
export default {
@ -50,10 +52,6 @@ export default {
AddQuest
},
props: {
group: {
type: String,
required: true
},
offset: {
type: Number,
required: true
@ -102,6 +100,9 @@ export default {
...mapGetters('runPlan', [
'stations'
]),
group() {
return this.$route.query.group;
},
notScript() {
return this.$route.params.mode !== 'script';
},
@ -197,8 +198,29 @@ export default {
const row = {id: this.$route.query.scriptId, group:this.$route.query.group, drawWay:this.$route.query.drawWay};
this.$refs.addQuest.handleLoad(1, row);
},
selectQuest(row, id, mapLocation, roleName) {
this.$emit('selectQuest', row, id, mapLocation, roleName);
async selectQuest(row, id, mapLocation, roleName) {
try {
let res;
if (this.isDesignPlatform) {
res = this.drawWay ? await loadDraftScriptNew(id, this.group) : await loadDraftScript(row.id, id, this.group);
} else {
res = await loadScriptNew(row.id, id, this.group);
}
if (res && res.code == 200) {
this.questId = parseInt(row.id);
if (mapLocation) {
const newMapLocation = {'offsetX': mapLocation.x, 'offsetY': mapLocation.y, 'scaleRate': mapLocation.scale};
Vue.prototype.$jlmap.setOptions(newMapLocation);
}
scriptExecuteNew(this.group).then(data=>{
}).catch(error=>{
console.log(error);
});
}
this.$emit('selectQuest', row);
} catch (error) {
this.$messageBox(error.message);
}
},
switchMode(swch) {
this.$emit('switchMode', swch);

View File

@ -38,10 +38,6 @@ export default {
TipScriptRecordNew
},
props: {
group: {
type: String,
required: true
},
offsetBottom: {
type: Number,
required: true
@ -78,6 +74,9 @@ export default {
...mapGetters('map', [
'trainList'
]),
group() {
return this.$route.query.group;
},
userRole() {
if (this.$store.state.training.prdType == '02') {
return 'DISPATCHER';

View File

@ -166,7 +166,7 @@ export default {
minDuration: res.data.minDuration,
updateTime: res.data.updateTime
};
this.$store.dispatch('exam/setCenter ', res.data.locateDeviceCode);
this.$store.dispatch('exam/setCenter', res.data.locateDeviceCode);
}).catch(error => {
this.$message.error(this.$t('display.exam.getTestInformation') + ':' + error.message);
});

View File

@ -129,6 +129,7 @@ export default {
if (data == 'min') {
this.minimize = true;
this.$refs.chatSetting.doClose();
this.$refs.createGroup.doClose();
} else {
this.minimize = false;
}
@ -287,7 +288,7 @@ export default {
<style lang="scss" scoped>
.chatBox{
width: 503px;
height: 400px;
// height: 400px;
position: absolute;
padding-left:5px;
left: 0;
@ -296,7 +297,7 @@ export default {
}
.chat-box{
width: 100%;
height: 100%;
height: 400px;
}
.chat-box-header{
width: 100%;

View File

@ -165,12 +165,12 @@ export default {
if (step.type.toUpperCase() === 'bar'.toUpperCase()) {
return true;
}
if (/{TOP}/.test(domId)) {
const Dom = document.getElementById(domId);
if (Dom.parentElement.id == 'menuButtons_box') { //
return false;
}
if (/{BOTTOM}/.test(domId)) {
if (/{TOP}/.test(domId)) {
return true;
}
// domId

View File

@ -5,7 +5,7 @@
<legend class="card_title">{{ items.name }}</legend>
<template v-for="item in items.item">
<template v-if="checkFieldType(item, 'select')">
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<template v-if="item.change">
<el-select
v-model="formModel[item.prop]"
@ -42,7 +42,7 @@
</el-form-item>
</template>
<template v-if="checkFieldType(item, 'multiSelect')">
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<template v-if="item.change">
<el-select
v-model="formModel[item.prop]"
@ -81,7 +81,7 @@
</el-form-item>
</template>
<template v-if="checkFieldType(item, 'selectHover')">
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-select
v-model="formModel[item.prop]"
filterable
@ -103,7 +103,7 @@
</el-form-item>
</template>
<template v-if="checkFieldType(item, 'input')">
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<template v-if="item.change">
<el-input v-model="formModel[item.prop]" type="text" :disabled="item.disabled" maxlength="30" :show-word-limit="true" @input="item.deviceChange" />
</template>
@ -113,7 +113,7 @@
</el-form-item>
</template>
<template v-if="checkFieldType(item, 'number')">
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<template v-if="!item.firstLevel">
<template v-if="item.change">
<el-input-number v-model="formModel[item.prop]" :min="item.min" :max="item.max" :label="item.label" :disabled="item.disabled" style="width: 140px" @change="item.deviceChange" />
@ -130,12 +130,12 @@
</el-form-item>
</template>
<template v-if="checkFieldType(item, 'color')">
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-color-picker v-model="formModel[item.prop]" show-alpha :predefine="skins" :disabled="item.disabled" />
</el-form-item>
</template>
<template v-if="checkFieldType(item, 'radio')">
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-radio-group v-model="formModel[item.prop]" :disabled="item.disabled">
<el-radio v-for="(opts, indexs) in item.radioList" :key="indexs" :border="item.border" :label="opts[item.optionValue]">{{ opts[item.optionLabel] }}</el-radio>
</el-radio-group>
@ -143,7 +143,7 @@
</template>
<!-- 坐标点并列显示 -->
<template v-if="checkFieldType(item, 'coordinate')">
<div v-if="!item.isHidden" :key="item.prop" class="coordinate">
<div :key="item.prop" class="coordinate">
<span class="title" :style="{width: item.width}">{{ item.label }}</span>
<div v-for="opt in item.children" :key="opt.code" class="listWidth">
<el-form-item :label="opt.label" :prop="opt.prop" :label-width="opt.labelWidth">
@ -159,7 +159,7 @@
</template>
<!-- 多个坐标点绘制 -->
<template v-if="checkFieldType(item, 'points')">
<div v-if="!item.isHidden" :key="item.prop" class="coordinate">
<div :key="item.prop" class="coordinate">
<span class="title" :style="{width: item.width}">{{ item.label }}</span>
<div class="point-section" :style="{ width: `calc(100% - 10px - ${item.width})` }">
<template v-for="(point, j) in formModel[item.prop]">
@ -207,7 +207,7 @@
</template>
<!-- 多个坐标点绘制 -->
<template v-if="checkFieldType(item, 'coordinatePoint')">
<div v-if="!item.isHidden" :key="item.prop" class="coordinate">
<div :key="item.prop" class="coordinate">
<span class="title" :style="{width: item.width}">{{ item.label }}</span>
<div class="point-section" :style="{ width: `calc(100% - 10px - ${item.width})` }">
<template v-for="(point, j) in formModel[item.prop]">
@ -242,23 +242,23 @@
</template>
<template v-if="checkFieldType(item, 'checkbox')">
<template v-if="item.change">
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-checkbox v-model="formModel[item.prop]" :disabled="item.disabled" @change="item.deviceChange" />
</el-form-item>
</template>
<template v-else>
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-checkbox v-model="formModel[item.prop]" :disabled="item.disabled" />
</el-form-item>
</template>
</template>
<template v-if="checkFieldType(item, 'font')">
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-font v-model="formModel[item.prop]" :disabled="item.disabled" :placeholder="item.placeholder" />
</el-form-item>
</template>
<template v-if="checkFieldType(item, 'fontContent')">
<el-form-item v-if="!item.isHidden" :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-form-item :key="item.prop" :label="item.label" :prop="item.prop" :required="item.required">
<el-input v-model="formModel[item.content]" :placeholder="item.placeholder" class="input-with-select">
<el-select slot="prepend" v-model="formModel[item.prepend]" :placeholder="item.placeholder">
<el-option :label="$t('map.horizontal')" value="H" />
@ -330,8 +330,8 @@ export default {
return keyArr[0][keyArr[1]];
},
checkFieldType(field, type) {
if (field.hasOwnProperty('show')) {
return field.type === type && field.show;
if (field.hasOwnProperty('isHidden')) {
return field.type === type && !field.isHidden;
} else {
return field.type === type;
}

View File

@ -286,7 +286,7 @@ export default {
switchType: '',
stationStandType:'',
psdType: '',
controlType: '',
controlType: '',
ViewMode: ViewMode,
enabledTab: 'Section',
autoSaveTask: null,

View File

@ -53,10 +53,62 @@
</template>
<script>
function setModel() {
return {
code: '',
name: '',
type: '',
relStandCode: '', //
leftStopPointOffset: 0, //
rightStopPointOffset: 0, //
destinationCode: '', //
destinationCodePoint: { x: 0, y: 0 }, //
namePosition: { x: 0, y: 0 },
kmRangeRight: 0,
kmRangeLeft: 0,
region: '',
logicSectionCodeList: [],
logicSectionShow: false, //
standTrack: false, //
standTrackName: '',
standTrackNamePosition: { x: 0, y: 0 },
reentryTrack: false, //
reentryTrackName: '',
reentryTrackNamePosition: { x: 0, y: 0 },
transferTrack: false, //
segmentationPosition: { x: 0, y: 0 },
transferTrackName: '',
transferTrackNamePosition: { x: 0, y: 0 },
switchSection: false, //
relSwitchCode: '',
stationCode: '',
logicSectionNameSort: true,
sepTypeLeft: '',
sepTypeRight: '',
offsetRight: 0,
parentCode: '',
points: [],
lengthFact: 0,
curve: false, // 线
leftSectionCode: '',
rightSectionCode: '',
trainWindowCode: '',
relevanceSectionList: [],
logicSectionStartOffset: 0,
logicSectionEndOffset: 0,
leftAxlePosition: 0,
rightAxlePosition: 0,
roadType: null,
firstTurnBack: false,
belongStation: '', //
rightAxleOffset: {x:0, y:0},
leftAxleOffset: {x:0, y:0}
};
}
import { mapGetters } from 'vuex';
import JTriangle from '@/jmapNew/utils/JTriangle';
import ConfigList from '../config/list';
import { deepAssign, deepAssigns } from '@/utils/index';
import { deepAssign } from '@/utils/index';
import LogicBlock from './logicBlock';
import TipInfo from './tipInfo';
import CreateSection from './create';
@ -102,56 +154,7 @@ export default {
{ code: 'DEPOT', name: '联段线' },
{ code: 'PARKING', name: '库线' }
],
editModel: {
code: '',
name: '',
type: '',
relStandCode: '', //
leftStopPointOffset: 0, //
rightStopPointOffset: 0, //
destinationCode: '', //
destinationCodePoint: { x: 0, y: 0 }, //
namePosition: { x: 0, y: 0 },
kmRangeRight: 0,
kmRangeLeft: 0,
region: '',
logicSectionCodeList: [],
logicSectionShow: false, //
standTrack: false, //
standTrackName: '',
standTrackNamePosition: { x: 0, y: 0 },
reentryTrack: false, //
reentryTrackName: '',
reentryTrackNamePosition: { x: 0, y: 0 },
transferTrack: false, //
segmentationPosition: { x: 0, y: 0 },
transferTrackName: '',
transferTrackNamePosition: { x: 0, y: 0 },
switchSection: false, //
relSwitchCode: '',
stationCode: '',
logicSectionNameSort: true,
sepTypeLeft: '',
sepTypeRight: '',
offsetRight: 0,
parentCode: '',
points: [],
lengthFact: 0,
curve: false, // 线
leftSectionCode: '',
rightSectionCode: '',
trainWindowCode: '',
relevanceSectionList: [],
logicSectionStartOffset: 0,
logicSectionEndOffset: 0,
leftAxlePosition: 0,
rightAxlePosition: 0,
roadType: null,
firstTurnBack: false,
belongStation: '', //
rightAxleOffset: {x:0, y:0},
leftAxleOffset: {x:0, y:0}
},
editModel: deepAssign({}, setModel()),
oldPoint: [], //
field: '',
oldLeftSectionCode: '',
@ -501,7 +504,7 @@ export default {
}
this.clear();
this.activeName = 'first';
this.editModel = deepAssigns(this.editModel, selected);
this.editModel = deepAssign(this.editModel, selected);
this.oldPoint = selected.points;
this.oldLeftSectionCode = selected.leftSectionCode;
this.oldRightSectionCode = selected.rightSectionCode;
@ -715,8 +718,7 @@ export default {
}
return models;
},
getSectionByCode(code) {
// sectionCode section
getSectionByCode(code) { // sectionCode section
if (code) {
const section = deepAssign({}, this.$store.getters['map/getDeviceByCode'](code) || {});
if (JSON.stringify(section) !== '{}') {
@ -740,6 +742,8 @@ export default {
type: 'warning'
}).then(() => {
models.push(deepAssign(selected, { _dispose: true }));
const trainWindowModel = this.$store.getters['map/getDeviceByCode'](selected.trainWindowCode);
trainWindowModel && models.push(deepAssign(trainWindowModel, { _dispose: true }));
const deleteObjAssociatedSection = this.handleDeleteSectionAssociatedSection(selected);
models = [...models, ...deleteObjAssociatedSection];
this.$emit('updateMapModel', models);
@ -763,6 +767,11 @@ export default {
delRightSection.leftSectionCode = '';
models.push(delRightSection);
}
selected.relevanceSectionList.forEach(dataCode => { //
const sectionModel = this.getSectionByCode(dataCode);
sectionModel.parentCode = '';
models.push(sectionModel);
});
return models;
},
checkPointsCoincide(point1, point2) {
@ -783,6 +792,7 @@ export default {
}
},
clear() {
this.editModel = setModel();
this.$refs.dataform && this.$refs.dataform.resetFields(); //
}
}

View File

@ -92,6 +92,42 @@
</template>
<script>
function setModel() {
return {
centralized: false,
ciStation: false, //
depot:false, //
reentry:false, //
smallRouting: false, //
number:'', //
code: '',
zcCode: '',
visible: true,
runPlanName: '',
name: '',
nameFont: '',
nameFontColor: '#FFFFFF',
subheadDisplay:false,
subhead:'', //
subheadFont:'',
subheadFontColor:'#FFFFFF',
subheadPosition:{ x: 0, y: 0 },
kmPostShow: '',
kmRange: 0,
kmPost: '',
kmPostFont: '',
kmPostFontColor: '#FFFFFF',
isShowControlMode: '',
chargeStationCodeList:[],
relStationCodeList: [], //
position: { x: 0, y: 0 },
kilometerPosition: { x: 0, y: 0 }, //
createControlMode:false,
createTurnBack:false,
turnBackPoint: {x: 0, y: 0}, //
controlModePoint: { x: 0, y: 0 } //
};
}
import ElFont from '@/views/components/font/index';
import { mapGetters } from 'vuex';
import { getUID } from '@/jmapNew/utils/Uid';
@ -120,42 +156,7 @@ export default {
chargeStation:[],
relStationList: [], //
controlled:false,
editModel: {
centralized: false,
// concentrateStationCode: '', //
ciStation: false, //
depot:false, //
reentry:false, //
smallRouting: false, //
number:'', //
code: '',
zcCode: '',
visible: true,
runPlanName: '',
name: '',
nameFont: '',
nameFontColor: '#FFFFFF',
subheadDisplay:false,
subhead:'', //
subheadFont:'',
subheadFontColor:'#FFFFFF',
subheadPosition:{ x: 0, y: 0 },
kmPostShow: '',
kmRange: 0,
kmPost: '',
kmPostFont: '',
kmPostFontColor: '#FFFFFF',
isShowControlMode: '',
chargeStationCodeList:[],
relStationCodeList: [], //
position: { x: 0, y: 0 },
kilometerPosition: { x: 0, y: 0 }, //
// controlled:false,
createControlMode:false,
createTurnBack:false,
turnBackPoint: {x: 0, y: 0}, //
controlModePoint: { x: 0, y: 0 } //
},
editModel: deepAssign({}, setModel()),
addModel: {
modelList: [],
positionY: 0
@ -299,6 +300,7 @@ export default {
},
deviceSelect(selected) {
if (selected && selected._type.toUpperCase() === 'Station'.toUpperCase()) {
this.editModel = setModel();
this.$refs.dataform && this.$refs.dataform.resetFields();
this.activeName = 'first';
this.editModel = deepAssign(this.editModel, selected);
@ -347,14 +349,10 @@ export default {
if (data.length > 0) {
this.chargeStation.forEach(station=>{
const newModal = Object.assign({}, station);
// newModal.controlled = false;
// newModal.concentrateStationCode = '';
this.setStationStand(station, '');
data.forEach(each=>{
switch (each) {
case station.code: {
// newModal.controlled = true;
// newModal.concentrateStationCode = this.editModel.code;
this.setStationStand(station, this.editModel.code);
break;
}
@ -382,8 +380,6 @@ export default {
modifyChargeStation() {
this.chargeStation.forEach(station=>{
const newModal = Object.assign({}, station);
// newModal.controlled = false;
// newModal.concentrateStationCode = '';
// {}
this.setStationStand(station, '');
@ -401,10 +397,6 @@ export default {
}
});
},
// hover(field) {
// this.field = field === this.field ? '' : field;
// this.$emit('stationSectionCode', this.field);
// },
create() {
this.$refs['make'].validate((valid) => {
if (valid) {
@ -432,8 +424,6 @@ export default {
depot:false,
reentry:false,
smallRouting: false,
// concentrateStationCode: '',
// controlled: false,
chargeStationCodeList:[],
relStationCodeList: [], //
createControlMode: item.control,

View File

@ -87,9 +87,7 @@ export default {
editModel: {
code: '',
name: '',
// doorLocationType: '', //
deviceStationCode: '', //
// hasDoor: false, //
width: 0,
height: 0,
stationCode: '', //
@ -108,7 +106,6 @@ export default {
upDetainLampPoint: {x: 0, y: 0}, //
downDetainLamp: false, //
downDetainLampPoint: {x: 0, y: 0} //
// direction: '' //
},
field: '',
addModel: {

View File

@ -120,10 +120,9 @@ export default {
transferTrack: false,
transferTrackName: '',
transferTrackNamePosition: { x: 0, y: 0 },
// segmentation: false,
segmentationPosition: { x: 0, y: 0 },
switchSection: true,
relSwitchCode: '',
relSwitchCode: this.fromData.relevanceSwitchList[0],
relevanceSectionList: this.fromData.relevanceSectionList,
points: [{ x: 0, y: 0 }, { x: 0, y: 0 }],
logicSectionShow: false,

View File

@ -75,9 +75,9 @@ export default {
height: 800,
roadData: [],
focus: false,
booleanList: ['lockFirst', 'switchSingleHandle', 'switchNRTurnChain', 'switchSingleLockChain', 'signalForceCancelRoute', 'initSingleLockSwitch', 'ctcOverlapOnlyTurnBackStationLock'],
booleanList: ['lockFirst', 'switchSingleHandle', 'switchNRTurnChain', 'switchSingleLockChain', 'switchLossChain', 'signalForceCancelRoute', 'initSingleLockSwitch', 'ctcOverlapOnlyTurnBackStationLock'],
selectList: ['upDirection', 'runMode'],
generalConfig: ['lockFirst', 'switchSingleHandle', 'upDirection', 'switchNRTurnChain', 'switchSingleLockChain', 'signalForceCancelRoute', 'runMode', 'initSingleLockSwitch', 'ctcOverlapOnlyTurnBackStationLock', 'noParkingSM', 'parkingSM'],
generalConfig: ['lockFirst', 'switchSingleHandle', 'upDirection', 'switchNRTurnChain', 'switchSingleLockChain', 'switchLossChain', 'signalForceCancelRoute', 'runMode', 'initSingleLockSwitch', 'ctcOverlapOnlyTurnBackStationLock', 'noParkingSM', 'parkingSM'],
rangeList: ['noParkingSM', 'parkingSM'],
numberList: [],
optionsMap: {
@ -95,7 +95,8 @@ export default {
initSingleLockSwitch: '初始加载设备时是否默认单锁正线道岔',
ctcOverlapOnlyTurnBackStationLock: 'CTC列车进路延续保护仅折返站处锁闭',
noParkingSM: '不停站头码车服务号取值范围',
parkingSM: '停站头码车服务号取值范围'
parkingSM: '停站头码车服务号取值范围',
switchLossChain: '道岔故障失表是否联动'
}
};
},