This commit is contained in:
sunzhenyu 2020-08-26 13:54:55 +08:00
commit 22fa381707
56 changed files with 3103 additions and 2842 deletions

View File

@ -20,7 +20,7 @@
<div class="nav-border">
<div class="nav-border-top">
<el-button :id="commandId" class="fl" :class="{'disabled': canCommand}" style="line-height: 18px; margin-top: 4px;" plain :disabled="canCommand" @click="command">执行</el-button>
<el-button class="fr" style="line-height: 18px; margin-top: 4px;" plain @click="doClose">取消</el-button>
<el-button class="fr" style="line-height: 18px; margin-top: 4px;" plain @click="cancle">取消</el-button>
</div>
<div class="nav-border-bottom">
<el-table
@ -57,6 +57,7 @@ import { deepAssign } from '@/utils/index';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { TrainingMode } from '@/scripts/ConstDic';
export default {
components: {
NoticeInfo
@ -86,6 +87,9 @@ export default {
selectedObj: null,
oldClickObj: null, //
route: null, //
atpRoute:null,
groundRoute:null,
guideRoute:null,
centralizedStationList: new Array(15).fill({}),
ciStationParamList: [],
// startVirtual: false,
@ -155,12 +159,19 @@ export default {
this.$refs.noticeInfo.doShow(error.message);
});
} else {
if (this.$store.state.training.mode != TrainingMode.TEACH) {
this.handleBasicMenu();
}
}
},
'$store.state.training.prdType': function (val) {
this.initMenus();
this.initRouteMenus();
},
'$store.state.training.started':function (val) {
if (!val) {
this.doClose();
}
}
},
mounted() {
@ -194,14 +205,32 @@ export default {
},
clickCommand(row) {
this.clearAllMenuShow();
const commandList = ['ATP进路', '取消ATP', '联锁进路', '取消联锁', '引导进路', '取消引导'];
const routeList = [this.atpRoute, this.groundRoute, this.guideRoute];
const commandIndex = commandList.indexOf(row.name);
const currentIndex = Math.floor(commandIndex / 2);
const step = {};
if (currentIndex >= 0) {
this.route = routeList[currentIndex];
this.tempData = [];
this.tempData.push(this.route);
console.log(this.route);
if (currentIndex == 2) {
step.param = {
signalCode: this.route.startSignalCode
};
} else {
step.param = {
routeCode: this.route.code
};
}
}
if (this.tempData.length) {
row.show = true;
this.operate = row.operate.operation;
this.cmdType = row.cmdType;
this.canCommand = false;
const step = {
operation: this.operate
};
step.operation = this.operate;
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
@ -275,24 +304,45 @@ export default {
this.centralizedStationList[index] = swicth;
});
this.tempData = [];
this.tempData.push(this.route);
this.param = {
routeCode: this.route.code
};
// this.tempData.push(this.route);
// this.param = {
// routeCode: this.route.code
// };
},
//
checkSignal() {
this.route = null;
this.atpRoute = null;
this.groundRoute = null;
this.guideRoute = null;
this.atp = false;
this.ground = false;
this.guide = false;
this.routeList.forEach(item => {
if (item.startSignalCode == this.oldClickObj.code && item.endSignalCode == this.selectedObj.code) {
if (!this.atp) {
if (item.atp) {
this.atpRoute = item;
}
this.atp = item.atp;
}
if (!this.ground) {
if (item.ground) {
this.groundRoute = item;
}
this.ground = item.ground;
}
if (!this.guide) {
if (item.guide) {
this.guideRoute = item;
}
this.guide = item.guide;
this.route = item;
}
// this.route = {};
this.initRouteMenus();
}
});
if (this.route && this.route.code) {
if (this.atpRoute || this.groundRoute || this.guideRoute) {
this.handleRouteMenu();
this.deviceHighLight(this.selectedObj, true);
this.oldDevice = this.selectedObj;
@ -405,6 +455,11 @@ export default {
this.$refs.noticeInfo.doShow(error.message);
});
},
cancle() {
if (this.$store.state.training.mode != TrainingMode.TEACH) {
this.doClose();
}
},
doClose() {
this.deviceHighLight(this.oldDevice, false); //
this.operate = ''; //
@ -479,17 +534,17 @@ export default {
{ name: '关单信号', cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_SIGNAL, operate: OperationEvent.Signal.signalClose.menuButton, show: false }
];
this.stationParamList = this.$store.state.training.prdType === '01' ? [
{ name: '关站信号', cmdType: CMD.Station.CMD_STATION_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.closeAllSignal.menu, show: false }
{ name: '关站信号', cmdType: CMD.Station.CMD_STATION_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.closeAllSignal.menuButton, show: false }
// { name: '', cmdType: CMD.ControlConvertMenu.CMD_CM_RECEIVE_CONTROL, operate: OperationEvent.StationControl.requestStationControl.menu, show: false, disabledName: 'controlMode', mode: 'Center' },
// { name: '', cmdType: CMD.ControlConvertMenu.CMD_CM_SURRENDER_CONTROL, operate: OperationEvent.StationControl.requestCentralControl.menu, show: false, disabledName: 'controlMode', mode: 'None' }
] : [
{ name: '接收控制', cmdType: CMD.ControlConvertMenu.CMD_CM_RECEIVE_CONTROL, operate: OperationEvent.StationControl.requestStationControl.menu, show: false, disabledName: 'controlMode', mode: 'Center' },
{ name: '交出控制', cmdType: CMD.ControlConvertMenu.CMD_CM_SURRENDER_CONTROL, operate: OperationEvent.StationControl.requestCentralControl.menu, show: false, disabledName: 'controlMode', mode: 'None' },
{ name: '追踪全开', cmdType: CMD.Station.CMD_STATION_SET_CI_AUTO_TRIGGER, operate: OperationEvent.Station.setAutoTrigger.menu, show: false },
{ name: '追踪全关', cmdType: CMD.Station.CMD_STATION_CANCEL_CI_AUTO_TRIGGER, operate: OperationEvent.Station.cancelAutoTrigger.menu, show: false },
{ name: '关区信号', cmdType: CMD.Station.CMD_STATION_CIAREA_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.ciAreaCloseAllSignal.menu, show: false },
{ name: '自排全开', cmdType: CMD.Station.CMD_STATION_OPEN_AUTO_SETTING, operate: OperationEvent.Station.atsAutoControlALL.menu, show: false },
{ name: '自排全关', cmdType: CMD.Station.CMD_STATION_CLOSE_AUTO_SETTING, operate: OperationEvent.Station.humanControlALL.menu, show: false }
{ name: '接收控制', cmdType: CMD.ControlConvertMenu.CMD_CM_RECEIVE_CONTROL, operate: OperationEvent.StationControl.requestStationControl.menuButton, show: false, disabledName: 'controlMode', mode: 'Center' },
{ name: '交出控制', cmdType: CMD.ControlConvertMenu.CMD_CM_SURRENDER_CONTROL, operate: OperationEvent.StationControl.requestCentralControl.menuButton, show: false, disabledName: 'controlMode', mode: 'None' },
{ name: '追踪全开', cmdType: CMD.Station.CMD_STATION_SET_CI_AUTO_TRIGGER, operate: OperationEvent.Station.setAutoTrigger.menuButton, show: false },
{ name: '追踪全关', cmdType: CMD.Station.CMD_STATION_CANCEL_CI_AUTO_TRIGGER, operate: OperationEvent.Station.cancelAutoTrigger.menuButton, show: false },
{ name: '关区信号', cmdType: CMD.Station.CMD_STATION_CIAREA_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.ciAreaCloseAllSignal.menuButton, show: false },
{ name: '自排全开', cmdType: CMD.Station.CMD_STATION_OPEN_AUTO_SETTING, operate: OperationEvent.Station.atsAutoControlALL.menuButton, show: false },
{ name: '自排全关', cmdType: CMD.Station.CMD_STATION_CLOSE_AUTO_SETTING, operate: OperationEvent.Station.humanControlALL.menuButton, show: false }
// { name: '', cmdType: CMD.Station.CMD_STATION_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.closeAllSignal.menu, show: false }
];
this.standParamList = this.$store.state.training.prdType === '01' ? [] : [
@ -506,12 +561,12 @@ export default {
this.routeParamList.push({ name: '取消ATP', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelTrainRoute.menuButton, show: false });
}
if (this.ground) {
this.routeParamList.push({ name: '联锁进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, operate: OperationEvent.Signal.arrangementRoute.menuButton, show: false });
this.routeParamList.push({ name: '取消联锁', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelTrainRoute.menuButton, show: false });
this.routeParamList.push({ name: '联锁进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, operate: OperationEvent.Signal.interlockRoute.menuButton, show: false });
this.routeParamList.push({ name: '取消联锁', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelinterlock.menuButton, show: false });
}
if (this.guide) {
this.routeParamList.push({ name: '引导进路', cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE, operate: OperationEvent.Signal.guide.menuButton, show: false, securityCommand: true });
this.routeParamList.push({ name: '取消引导', cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE, operate: OperationEvent.Signal.humanTrainRoute.menuButton, show: false });
this.routeParamList.push({ name: '取消引导', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_GUIDE, operate: OperationEvent.Signal.cancelGuide.menuButton, show: false });
}
}
}

View File

@ -440,7 +440,8 @@ export default {
{ deviceType: '04', orderNum: 2, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'END_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3013', tip: '鼠标左键点击【ATP进路】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
],
config:{routeType:'ATP'}
},
{
maxDuration: 15,
@ -456,7 +457,8 @@ export default {
{ deviceType: '04', orderNum: 2, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'END_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3013', tip: '鼠标左键点击【ATP进路】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
],
config:{routeType:'ATP'}
},
{
maxDuration: 15,
@ -472,7 +474,8 @@ export default {
{ deviceType: '04', orderNum: 2, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'END_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3032', tip: '鼠标左键点击【取消ATP】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
],
config:{routeType:'ATP'}
},
{
maxDuration: 15,
@ -488,7 +491,8 @@ export default {
{ deviceType: '04', orderNum: 2, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'END_SIGNAL'},
{ deviceType: '04', orderNum: 3, operateCode: '3032', tip: '鼠标左键点击【取消ATP】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
],
config:{routeType:'ATP'}
},
{
maxDuration: 15,
@ -682,9 +686,10 @@ export default {
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'START_SIGNAL' },
{ deviceType: '04', orderNum: 2, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'END_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3013', tip: '鼠标左键点击【联锁进路】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3191', tip: '鼠标左键点击【联锁进路】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
],
config:{routeType:'GROUND'}
},
{
maxDuration: 15,
@ -698,9 +703,10 @@ export default {
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'START_SIGNAL' },
{ deviceType: '04', orderNum: 2, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'END_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3032', tip: '鼠标左键点击【取消联锁】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3201', tip: '鼠标左键点击【取消联锁】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
],
config:{routeType:'GROUND'}
},
{
maxDuration: 15,
@ -714,9 +720,10 @@ export default {
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'START_SIGNAL' },
{ deviceType: '04', orderNum: 2, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'END_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3013', tip: '鼠标左键点击【联锁进路】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3191', tip: '鼠标左键点击【联锁进路】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
],
config:{routeType:'GROUND'}
},
{
maxDuration: 15,
@ -730,9 +737,10 @@ export default {
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'START_SIGNAL' },
{ deviceType: '04', orderNum: 2, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'END_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3032', tip: '鼠标左键点击【取消联锁】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3201', tip: '鼠标左键点击【取消联锁】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
],
config:{routeType:'GROUND'}
},
{
maxDuration: 15,
@ -753,7 +761,7 @@ export default {
{
maxDuration: 15,
minDuration: 8,
operateType: 'Signal_Human_Release_Route',
operateType: 'Signal_Cancel_Guide',
skinCode: '07',
trainingName: '取消引导({3})',
trainingRemark: '取消引导',
@ -762,7 +770,7 @@ export default {
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'START_SIGNAL' },
{ deviceType: '04', orderNum: 2, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'END_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3052', tip: '鼠标左键点击【取消引导】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3182', tip: '鼠标左键点击【取消引导】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
},
@ -785,7 +793,7 @@ export default {
{
maxDuration: 15,
minDuration: 8,
operateType: 'Signal_Human_Release_Route',
operateType: 'Signal_Cancel_Guide',
skinCode: '07',
trainingName: '取消引导({3})',
trainingRemark: '取消引导',
@ -794,7 +802,7 @@ export default {
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'START_SIGNAL' },
{ deviceType: '04', orderNum: 2, operateCode: 'click', tip: '鼠标左键点击选择该信号机', codeType:'END_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3052', tip: '鼠标左键点击【取消引导】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3182', tip: '鼠标左键点击【取消引导】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
},
@ -917,6 +925,126 @@ export default {
{ deviceType: '04', orderNum: 2, operateCode: '5035', tip: '鼠标左键点击【取消越站】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: 'Station_Close_AllSignal',
skinCode: '07',
trainingName: '关站信号({10})',
trainingRemark: '关站信号',
trainingType: 'Station',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该车站' },
{ deviceType: '04', orderNum: 2, operateCode: '6114', tip: '鼠标左键点击【关站信号】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: 'Station_Set_CI_Auto_Trigger',
skinCode: '07',
trainingName: '追踪全开({10})',
trainingRemark: '追踪全开',
trainingType: 'Station',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该车站' },
{ deviceType: '04', orderNum: 2, operateCode: '6011', tip: '鼠标左键点击【追踪全开】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: 'Station_Cancel_CI_Auto_Trigger',
skinCode: '07',
trainingName: '追踪全关({10})',
trainingRemark: '追踪全关',
trainingType: 'Station',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该车站' },
{ deviceType: '04', orderNum: 2, operateCode: '6021', tip: '鼠标左键点击【追踪全关】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: 'Station_Open_Auto_Setting',
skinCode: '07',
trainingName: '自排全开({10})',
trainingRemark: '自排全开',
trainingType: 'Station',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该车站' },
{ deviceType: '04', orderNum: 2, operateCode: '6061', tip: '鼠标左键点击【自排全开】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: 'Station_Close_Auto_Setting',
skinCode: '07',
trainingName: '自排全关({10})',
trainingRemark: '自排全关',
trainingType: 'Station',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该车站' },
{ deviceType: '04', orderNum: 2, operateCode: '6051', tip: '鼠标左键点击【自排全关】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: 'Station_CIArea_Close_AllSignal',
skinCode: '07',
trainingName: '关区信号({10})',
trainingRemark: '关区信号',
trainingType: 'Station',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该车站' },
{ deviceType: '04', orderNum: 2, operateCode: '6124', tip: '鼠标左键点击【关区信号】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: 'CM_Receive_Control',
skinCode: '07',
trainingName: '接收控制({1})',
trainingRemark: '接收控制',
trainingType: 'ControlConvertMenu',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该车站' },
{ deviceType: '04', orderNum: 2, operateCode: '2024', tip: '鼠标左键点击【接收控制】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: 'CM_Surrender_Control',
skinCode: '07',
trainingName: '交出控制({1})',
trainingRemark: '交出控制',
trainingType: 'ControlConvertMenu',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: 'click', tip: '鼠标左键点击选择该车站' },
{ deviceType: '04', orderNum: 2, operateCode: '2044', tip: '鼠标左键点击【交出控制】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '008', tip: '鼠标左键点击【执行】按钮' }
]
}
]
};

View File

@ -86,31 +86,19 @@
</template>
</template>
</div>
<station-control ref="stationControl" />
<detain-train-contorl ref="detainTrainContorl" />
<detain-train-contorl-up-down ref="detainTrainContorlUpDown" />
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
<train-add ref="trainAdd" />
<train-transtalet ref="trainTranstalet" />
<train-delete ref="trainDelete" />
<manage-user ref="manageUser" />
<help-about ref="helpAbout" />
<arrange-route ref="arrangeRoute" />
<train-distribution ref="trainDistribution" />
<stand-control ref="standControl" />
<stand-detain ref="standDetain" />
<interval-stop-number ref="intervalStopNumber" />
<allocate-time ref="allocateTime" />
<station-control ref="stationControl" />
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import { TrainingMode, OperationEvent } from '@/scripts/ConstDic';
import StationControl from './menuDialog/stationControl';
import DetainTrainContorl from './menuDialog/detainTrainContorl';
import DetainTrainContorlUpDown from './menuDialog/detainTrainContorlUpDown';
import TrainAdd from './menuDialog/trainAdd';
import TrainTranstalet from './menuDialog/trainTranstalet';
import TrainDelete from './menuDialog/trainDelete';
import ManageUser from './menuDialog/manageUser';
import HelpAbout from './menuDialog/helpAbout';
import ArrangeRoute from './menuDialog/arrangeRoute';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import { EventBus } from '@/scripts/event-bus';
@ -118,22 +106,22 @@ import { State2SimulationMap } from '@/scripts/cmdPlugin/Config';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import TrainDistribution from './menuDialog/trainDistribution';
import StandControl from './menuDialog/standControl';
import StandDetain from './menuDialog/standDetain';
import IntervalStopNumber from './menuDialog/intervalStopNumber';
import AllocateTime from './menuDialog/allocateTime';
import StationControl from './menuDialog/stationControl';
export default {
name: 'MenuBar',
components: {
NoticeInfo,
StationControl,
DetainTrainContorl,
DetainTrainContorlUpDown,
TrainAdd,
TrainTranstalet,
TrainDelete,
ManageUser,
HelpAbout,
ArrangeRoute,
TrainDistribution,
StandControl
StandControl,
StandDetain,
IntervalStopNumber,
AllocateTime,
StationControl
},
props: {
selected: {
@ -278,19 +266,19 @@ export default {
},
{
title: '设置/取消扣车',
click: this.undeveloped
click: this.setStandDetain
},
{
title: '设置站间列车数量',
click: this.undeveloped
click: this.setIntervalStopNumber
},
{
title: '分配停站时间',
click: this.undeveloped
click: this.setAllocateTime
},
{
title: '授权转移',
click: this.undeveloped
click: this.authorizeTransfer
},
{
title: '显示',
@ -692,19 +680,19 @@ export default {
},
{
title: '设置/取消扣车',
click: this.undeveloped
click: this.setStandDetain
},
{
title: '设置站间列车数量',
click: this.undeveloped
click: this.setIntervalStopNumber
},
{
title: '分配停站时间',
click: this.undeveloped
click: this.setAllocateTime
},
{
title: '授权转移',
click: this.undeveloped
click: this.authorizeTransfer
},
{
title: '显示',
@ -1030,29 +1018,9 @@ export default {
}
return true;
},
initStationList() {
const list = [];
this.stationList.forEach(station => {
if (station.visible) {
const node = {
title: station.name,
operate: station.code,
show: true,
click: this.mapLocation,
code: station.code
};
list.push(node);
}
});
return list;
},
initMenu(menu) {
const type = State2SimulationMap[this.$store.state.training.prdType];
this.menu = MenuContextHandler.menuBarConvert(this.menuNormal[type], this.$store.state.training.operatemode);
// if (this.menu[2]) {
// this.menu[2].children = this.initStationList();
// }
this.clickEvent();
this.closeMenu(true);
},
@ -1139,173 +1107,8 @@ export default {
}
});
},
//
mapLocation(code) {
if (code) {
this.$store.dispatch('training/updateOffsetStationCode', { offsetStationCode: code });
this.closeMenu(true);
}
},
//
stationRemoteControl(order) {
const operate = {
type: 'bar',
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.stationControl.doShow(operate);
}
});
},
// 线
setDetainTrainAll(order) {
const operate = {
type: 'bar',
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.detainTrainContorl.doShow(operate);
}
});
},
// 线
cancelDetainTrainAll(order) {
const operate = {
type: 'bar',
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.detainTrainContorl.doShow(operate);
}
});
},
//
cancelUpDetainTrainAll(order) {
const operate = {
type: 'bar',
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.detainTrainContorlUpDown.doShow(operate);
}
});
},
//
cancelDownDetainTrainAll(order) {
const operate = {
type: 'bar',
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.detainTrainContorlUpDown.doShow(operate);
}
});
},
//
addPlanTrain(order) {
const operate = {
type: 'bar',
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainAdd.doShow(operate);
}
});
},
//
translatPlanTrain(order) {
const operate = {
type: 'bar',
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainTranstalet.doShow(operate);
}
});
},
//
delPlanTrain(order) {
const operate = {
type: 'bar',
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainDelete.doShow(operate);
}
});
},
//
userManage(order) {
const operate = {
type: 'bar',
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.manageUser.doShow(operate);
}
});
},
//
about(order) {
const operate = {
type: 'bar',
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.helpAbout.doShow(operate);
}
});
},
//
refresh() {
this.closeMenu(true);
EventBus.$emit('refresh');
},
getLoginResult(operate) {
/** 密码校验*/
if (operate.operation == OperationEvent.StationControl.forcedStationControl.passwordConfirm.operation) {
if (operate.success) {
/** 校验成功*/
this.$refs.stationControlConvert.doShow({ operation: OperationEvent.StationControl.forcedStationControl.mbar.operation });
}
}
},
undeveloped() {
this.doClose();
this.closeMenu(true);
this.$alert('实现中......', '提示', {
confirmButtonText: '确定',
callback: action => {
@ -1328,6 +1131,22 @@ export default {
standOpenOrClose() {
this.closeMenu(true);
this.$refs.standControl.doShow();
},
setStandDetain() {
this.closeMenu(true);
this.$refs.standDetain.doShow();
},
setIntervalStopNumber() {
this.closeMenu(true);
this.$refs.intervalStopNumber.doShow();
},
setAllocateTime() {
this.closeMenu(true);
this.$refs.allocateTime.doShow();
},
authorizeTransfer() {
this.closeMenu(true);
this.$refs.stationControl.doShow();
}
}
};

View File

@ -0,0 +1,190 @@
<template>
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="800px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-table :data="stationStandList" height="150px">
<el-table-column prop="name" label="站台" />
<el-table-column prop="minTime" label="最小停站时间" />
<el-table-column prop="time" label="规定停站时间" />
<el-table-column prop="maxTime" label="最大停站时间" />
</el-table>
<el-checkbox v-model="checkAll">所有站台(L)</el-checkbox>
</el-row>
<el-row>
<el-col :span="12">
<div style="position: relative; top: 15px;left: 5px;background: #F0F0F0;width: 80px;text-align: center;">计划列车</div>
<div style="border: 1px solid #ADADAD;padding: 10px 0;">
<el-row style="text-align: center">
<el-col :span="8" :offset="8">分配</el-col>
<el-col :span="8">时刻表</el-col>
</el-row>
<el-row style="text-align: center">
<el-col :span="8">最小值</el-col>
<el-col :span="8">
<el-input-number v-model="minTime" controls-position="right" size="mini" :min="0" :max="999" style="width: 100px;" />
</el-col>
<el-col :span="8">
<el-input v-model="minTimeValue" size="mini" style="width: 80px;" />
</el-col>
</el-row>
<el-row style="text-align: center">
<el-col :span="8">最大值</el-col>
<el-col :span="8">
<el-input-number v-model="maxTime" controls-position="right" size="mini" :min="0" :max="999" style="width: 100px;" />
</el-col>
<el-col :span="8">
<el-input v-model="maxTimeValue" size="mini" style="width: 80px;" />
</el-col>
</el-row>
</div>
<el-row style="text-align: center;padding: 10px 0;">
<el-col :span="8">当前值</el-col>
<el-col :span="8">
<el-input-number v-model="currentTime" controls-position="right" size="mini" :min="0" :max="999" style="width: 100px;" />
</el-col>
</el-row>
</el-col>
<el-col :span="11" :offset="1">
<div style="position: relative; top: 15px;left: 5px;background: #F0F0F0;width: 80px;text-align: center;">非计划列车</div>
<div style="border: 1px solid #ADADAD;padding: 10px 0;">
<el-row style="text-align: center;">
<el-col :span="8" :offset="8">分配</el-col>
<el-col :span="8">默认值</el-col>
</el-row>
<el-row style="text-align: center;">
<el-col :span="8">额定值</el-col>
<el-col :span="8">
<el-input-number v-model="ratedValue" controls-position="right" size="mini" :min="0" :max="999" style="width: 100px;" />
</el-col>
<el-col :span="8">
<el-input v-model="ratedValue11" size="mini" style="width: 80px;" />
</el-col>
</el-row>
</div>
<el-row style="padding: 10px 0;">
<el-button @click="handleReset">复位</el-button>
</el-row>
<el-row>
<div style="padding: 2px 20px;border: 1px solid #ADADAD;width: 180px;text-align: center;">停站时间范围1-999</div>
</el-row>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdCancel" @click="cancel">关闭(C)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>帮助(H)</el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
// import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import { mapGetters } from 'vuex';
export default {
name: 'AllocateTime',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
selected: null,
display: true,
checkAll: false,
minTime: 0,
minTimeValue: '',
maxTime: 0,
ratedValue: 0,
maxTimeValue: '',
currentTime: 0,
ratedValue11: ''
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.choose.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.menu.domId : '';
},
title() {
return '分配停站时间';
}
},
watch: {
'$store.state.map.keyboardEnterCount': function (val) {
if (this.show) {
this.commit();
}
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
},
handleReset() {
},
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>
<style rel="stylesheet/scss" lang="scss" scoped>
.menu-li {
height: 30px;
line-height: 30px;
text-align: left;
list-style:none;
padding-left: 5px;
border-right: 2px solid #696969;
color: #000;
}
</style>

View File

@ -36,7 +36,7 @@
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="commitDisabled" @click="commit">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
@ -55,8 +55,8 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
// import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
// import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
import { mapGetters } from 'vuex';
export default {
@ -73,16 +73,8 @@ export default {
dialogShow: false,
loading: false,
selected: null,
row: null,
operation: '',
display: true,
stationName: '',
signalName: '',
selectStandCode: '',
displayCopyPath: false,
tableStyle: {
'border-bottom': 'none'
}
selectStandCode: ''
};
},
computed: {
@ -103,18 +95,11 @@ export default {
},
title() {
return '列车排进路';
},
commitDisabled() {
let disabled = true;
if (this.row) {
disabled = !this.row.canSetting;
}
return disabled;
}
},
watch: {
'$store.state.map.keyboardEnterCount': function (val) {
if (this.show && !this.commitDisabled) {
if (this.show) {
this.commit();
}
}
@ -139,40 +124,13 @@ export default {
doClose() {
this.loading = false;
this.dialogShow = false;
this.restoreBeforeDevices();
this.$store.dispatch('training/emitTipFresh');
mouseCancelState(this.selected);
},
restoreBeforeDevices() {
//
if (this.beforeSectionList && this.beforeSectionList.length) {
this.beforeSectionList.forEach(elem => {
elem.cutOff = false;
});
}
this.$store.dispatch('training/updateMapState', [...this.beforeSectionList]);
this.beforeSectionList = [];
// mouseCancelState(this.selected);
},
commit() {
if (this.row && this.row.canSetting) {
this.loading = true;
commitOperate(menuOperate.Signal.arrangementRoute, {routeCode:this.row.code}, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
}
},
handleClick() {
},
selectStand(stationStand) {
this.selectStandCode = stationStand.code;
},
cancel() {
const operate = {

View File

@ -1,213 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="ningbo-01__systerm station-control"
:title="title"
:visible.sync="show"
width="400px"
:before-close="doClose"
:show-close="true"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-radio-group v-model="control">
<el-row v-for="item in Object.keys(controlProps)" :key="item" style="padding-bottom: 10px;padding-top:10px">
<el-radio :label="item" :disabled="controlPropDisabled[item]">{{ controlProps[item] }}</el-radio>
</el-row>
</el-radio-group>
<el-row type="flex" justify="center" class="button-group">
<el-button :id="domIdCommit" :disabled="disabledCommit" @click="handleCommit">设置</el-button>
<el-button :id="domIdCancel" :disabled="disabledClose" style="margin-left: 200px" @click="cancel">退出
</el-button>
</el-row>
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'StationStand',
components: {
NoticeInfo
},
data() {
return {
operate: null,
dialogShow: false,
disabledClose: false,
disabledCommit: false,
control: '01',
controlProps: {
'01': '全线扣车',
'02': '取消全线扣车'
},
controlPropDisabled:{
'01':false,
'02':false
}
};
},
computed: {
...mapGetters('map', [
'stationList'
]),
...mapGetters('training', [
'mode',
'started'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
if (this.dialogShow) {
if (this.operation == OperationEvent.StationStand.setDetainTrainAll.mbar.operation) {
return '全线扣车';
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrainAll.mbar.operation) {
return '取消全线扣车';
} else {
return '';
}
} else {
return '';
}
},
domIdCommit() {
if (this.dialogShow) {
if (this.operation == OperationEvent.StationStand.setDetainTrainAll.mbar.operation) {
return OperationEvent.StationStand.setDetainTrainAll.menu.domId;
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrainAll.mbar.operation) {
return OperationEvent.StationStand.cancelDetainTrainAll.menu.domId;
}
}
return '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
}
},
watch: {
'$store.state.map.keyboardEnterCount': function (val) {
if (this.show && !this.disabledCommit) {
this.handleCommit();
}
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate) {
if (!this.dialogShow) {
this.operate = operate || {};
this.operation = operate.operation;
}
if (this.operation == OperationEvent.StationStand.setDetainTrainAll.mbar.operation) {
// 线
this.control = '01';
this.controlPropDisabled['01'] = false;
this.controlPropDisabled['02'] = true;
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrainAll.mbar.operation) {
// 线
this.control = '02';
this.controlPropDisabled['01'] = true;
this.controlPropDisabled['02'] = false;
}
this.dialogShow = true;
this.$store.dispatch('training/emitTipFresh');
},
doClose() {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
cancel() {
const operate = {
type: 'bar',
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
});
},
//
handleCommit() {
if (this.operation == OperationEvent.StationStand.setDetainTrainAll.mbar.operation) {
// 线
this.setDetainTrainAll();
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrainAll.mbar.operation) {
// 线
this.cancelDetainTrainAll();
}
},
// 线
setDetainTrainAll() {
const operate = {
send: true,
type: MapDeviceType.StationStand.type,
operation: OperationEvent.StationStand.setDetainTrainAll.menu.operation,
val: this.control,
messages: ['确认设置全线扣车!']
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
} else {
this.disabledSure = false;
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
},
// 线
cancelDetainTrainAll() {
const operate = {
send: true,
type: MapDeviceType.StationStand.type,
operation: OperationEvent.StationStand.cancelDetainTrainAll.menu.operation,
val: this.control,
messages: ['确认取消全线扣车!']
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
} else {
this.disabledSure = false;
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
}
}
};
</script>
<style scoped rel="stylesheet/scss" lang="scss">
@import "src/styles/mixin.scss";
/deep/ .el-radio {
color: #000;
font-weight: bold;
}
</style>

View File

@ -1,209 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="ningbo-01__systerm station-control"
:title="title"
:visible.sync="show"
width="400px"
:before-close="doClose"
:show-close="true"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-radio-group v-model="control">
<el-row v-for="item in Object.keys(controlProps)" :key="item" style="padding-bottom: 10px;padding-top:10px">
<el-radio :label="item" :disabled="controlPropDisabled[item]">{{ controlProps[item] }}</el-radio>
</el-row>
</el-radio-group>
<el-row type="flex" justify="center" class="button-group">
<el-button :id="domIdCommit" :disabled="disabledCommit" @click="handleCommit">设置</el-button>
<el-button :id="domIdCancel" :disabled="disabledClose" style="margin-left: 200px" @click="cancel">退出
</el-button>
</el-row>
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'StationStand',
components: {
NoticeInfo
},
data() {
return {
operate: null,
dialogShow: false,
disabledClose: false,
disabledCommit: false,
control: '01',
controlProps: {
'01': '取消上行扣车',
'02': '取消下行扣车'
},
controlPropDisabled:{
'01':false,
'02':false
}
};
},
computed: {
...mapGetters('map', [
'stationList'
]),
...mapGetters('training', [
'mode',
'started'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
if (this.dialogShow) {
if (this.operation == OperationEvent.StationStand.cancelUpDetainTrainAll.mbar.operation) {
return '取消上行扣车';
} else if (this.operation == OperationEvent.StationStand.cancelDownDetainTrainAll.mbar.operation) {
return '取消下行扣车';
}
}
return '';
},
domIdCommit() {
if (this.dialogShow) {
if (this.operation == OperationEvent.StationStand.cancelUpDetainTrainAll.mbar.operation) {
return OperationEvent.StationStand.cancelUpDetainTrainAll.menu.domId;
} else if (this.operation == OperationEvent.StationStand.cancelDownDetainTrainAll.mbar.operation) {
return OperationEvent.StationStand.cancelDownDetainTrainAll.menu.domId;
}
}
return '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
}
},
watch: {
'$store.state.map.keyboardEnterCount': function (val) {
if (this.show && !this.disabledCommit) {
this.handleCommit();
}
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate) {
if (!this.dialogShow) {
this.operate = operate || {};
this.operation = operate.operation;
}
if (this.operation == OperationEvent.StationStand.cancelUpDetainTrainAll.mbar.operation) {
// 线
this.control = '01';
this.controlPropDisabled['01'] = false;
this.controlPropDisabled['02'] = true;
} else if (this.operation == OperationEvent.StationStand.cancelDownDetainTrainAll.mbar.operation) {
// 线
this.control = '02';
this.controlPropDisabled['01'] = true;
this.controlPropDisabled['02'] = false;
}
this.dialogShow = true;
this.$store.dispatch('training/emitTipFresh');
},
doClose() {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
cancel() {
const operate = {
type: 'bar',
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
});
},
//
handleCommit() {
if (this.operation == OperationEvent.StationStand.cancelUpDetainTrainAll.mbar.operation) {
// 线
this.cancelUpDetainTrainAll();
} else if (this.operation == OperationEvent.StationStand.cancelDownDetainTrainAll.mbar.operation) {
// 线
this.cancelDownDetainTrainAll();
}
},
// 线
cancelUpDetainTrainAll() {
const operate = {
send: true,
type: MapDeviceType.StationStand.type,
operation: OperationEvent.StationStand.cancelUpDetainTrainAll.menu.operation,
val: this.control,
messages: ['确认取消全线上行扣车!']
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
} else {
this.disabledSure = false;
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
},
// 线
cancelDetainTrainAll() {
const operate = {
send: true,
type: MapDeviceType.StationStand.type,
operation: OperationEvent.StationStand.cancelDownDetainTrainAll.menu.operation,
val: this.control,
messages: ['确认取消全线下行扣车!']
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
} else {
this.disabledSure = false;
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
}
}
};
</script>
<style scoped rel="stylesheet/scss" lang="scss">
@import "src/styles/mixin.scss";
/deep/ .el-radio {
color: #000;
font-weight: bold;
}
</style>

View File

@ -1,131 +0,0 @@
<template>
<el-dialog class="ningbo-01__systerm manage-user" :title="title" :visible.sync="show" width="600px" :before-close="doClose"
:zIndex="2000" :modal="false" :close-on-click-modal="false" v-dialogDrag>
<div style="height: 70px;">
<div style="position: relative; left: 10px;">
</div>
<div style="position: relative; left: 80px;">
<div style="width:100%">
<span style="padding-left: 60px">ControlMonitor 1.3.5.0</span>
<el-button style="position: absolute; right: 95px;" :id="domIdConfirm" type="primary"
:loading="loading" @click="commit">确定</el-button>
</div>
<div style="width:100%; padding-top: 20px">
<span> 版权所有C2010-2011 北京玖琏科技有限公司</span>
</div>
</div>
</div>
<div style="padding: 10px; margin: 5px; ">
<el-table :data="tableData" style="width: 100%;" height="400">
<el-table-column prop="moduleName" label="模块名称" width="180">
</el-table-column>
<el-table-column prop="version" label="版本" width="180">
</el-table-column>
<el-table-column prop="updateDate" label="修改日期">
</el-table-column>
</el-table>
</div>
</el-dialog>
</template>
<script>
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
export default {
name: 'ManageUser',
data() {
return {
tableData: [
{
moduleName: '主程序版本:',
version: '123',
updateDate: '123'
}
],
operate: {},
operation: null,
dialogShow: false,
loading: false,
selected: null,
}
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.close.menu.domId : '';
},
title() {
return '关于ControlMonitor'
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
})
},
methods: {
doShow(operate) {
//
if (!this.dialogShow) {
this.loading = false;
this.operate = operate || {};
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.menu.operation,
}
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(error => {
this.loading = false;
this.doClose();
})
},
cancel() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.cancel.menu.operation,
}
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); });
}
}
}
</script>
<style scoped>
.ningbo-01__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -10px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -0,0 +1,164 @@
<template>
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="600px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-col :span="16">
<el-table :data="tableData" height="350px">
<el-table-column prop="name" label="区间名称" />
<el-table-column prop="name" label="可用状态" />
<el-table-column prop="name" label="运行方向" />
<el-table-column prop="groupNumber" label="区间车站" />
</el-table>
</el-col>
<el-col :span="7" :offset="1">
<div class="set-status-box">
<div class="set-status-title">状态设置</div>
<el-radio v-model="status" :label="true">启用</el-radio>
<br>
<el-radio v-model="status" :label="false">禁用</el-radio>
</div>
<el-input v-model="value" size="small" style="position: relative; top: 80px;" />
<el-checkbox-group v-model="checkedDirection" style="position: relative; top: 90px;" @change="handleCheckedDirectionChange">
<el-checkbox label="up">所有上行</el-checkbox>
<el-checkbox label="down">所有下行</el-checkbox>
</el-checkbox-group>
<el-checkbox v-model="checkAll" style="position: relative; top: 90px;" :indeterminate="isIndeterminate" @change="handleCheckAllChange">全选</el-checkbox>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdCancel" @click="cancel">关闭(C)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>帮助(H)</el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
// import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
name: 'IntervalStopNumber',
components: {
NoticeInfo
},
data() {
return {
tableData: [],
status: false,
value: '',
dialogShow: false,
loading: false,
selected: null,
checkedDirection: '',
isIndeterminate: true,
checkAll: false
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.choose.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.menu.domId : '';
},
title() {
return '区间停车数量';
}
},
watch: {
'$store.state.map.keyboardEnterCount': function (val) {
if (this.show) {
this.commit();
}
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
},
handleClick() {
},
handleCheckedDirectionChange(value) {
const checkedCount = value.length;
this.checkAll = checkedCount === 2;
this.isIndeterminate = checkedCount > 0 && checkedCount < 2;
},
handleCheckAllChange(val) {
this.checkedDirection = val ? ['up', 'down'] : [];
this.isIndeterminate = 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>
<style rel="stylesheet/scss" lang="scss" scoped>
.menu-li {
height: 30px;
line-height: 30px;
text-align: left;
list-style:none;
padding-left: 5px;
border-right: 2px solid #696969;
color: #000;
}
.set-status-box {
position: relative;
top: 50px;
border: 1px solid #AFAFAF;
padding-left: 10px;
}
.set-status-title{
position: relative;
top: -15px;
background: #F0F0F0;
width: 60px;
text-align: center;
}
</style>

View File

@ -1,290 +0,0 @@
<template>
<el-dialog class="ningbo-01__systerm manage-user" :title="title" :visible.sync="show" width="420px"
:before-close="doClose" :zIndex="2000" :modal="false" :close-on-click-modal="false" v-dialogDrag>
<div style="padding: 5px 5px; border: 1px double lightgray; margin: 20px 0px; ">
<span class="base-label">用户列表</span>
<el-row>
<el-col :span="18">
<el-table ref="multipleTable" :data="tableData" border row-key="code" style="width: 100%"
height="450" center size="mini" highlight-current-row @row-click="chooseUser">
<el-table-column prop="jobNumber" label="工号" width="120">
<template slot-scope="scope">
<span>{{scope.row.jobNumber}}</span>
</template>
</el-table-column>
<el-table-column prop="userName" label="用户名">
<template slot-scope="scope">
<span>{{scope.row.userName}}</span>
</template>
</el-table-column>
<el-table-column width="20">
</el-table-column>
</el-table>
</el-col>
<el-col :span="4">
<el-button style="margin-top: 140px; margin-left: 10px;" :id="domIdFreshUser" @click="freshUser">刷新
</el-button>
<el-button style="margin-top: 30px; margin-left: 10px;" :id="domIdAddUser" @click="addUser">增加
</el-button>
<el-button style="margin-top: 30px; margin-left: 10px;" :id="domIdEditUser" @click="editUser">修改
</el-button>
<el-button style="margin-top: 30px; margin-left: 10px;" :id="domIdDelUser" @click="delUser">删除
</el-button>
</el-col>
</el-row>
</div>
<el-row justify="center" class="button-group">
<el-col :span="8" :offset="6">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="0">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<user-add ref="userAdd" @operateUser="operateUser"></user-add>
<user-edit ref="userEdit" @operateUser="operateUser"></user-edit>
<user-delete ref="userDelete" @operateUser="operateUser"></user-delete>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import UserAdd from './childDialog/userAdd';
import UserEdit from './childDialog/userEdit';
import UserDelete from './childDialog/userDelete';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
export default {
name: 'ManageUser',
components: {
UserAdd,
UserEdit,
UserDelete
},
data() {
return {
tableData: [],
operate: {},
operation: null,
dialogShow: false,
loading: false,
selected: null,
}
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdAddUser() {
return this.dialogShow ? OperationEvent.Command.manage.addUser.domId : '';
},
domIdEditUser() {
return this.dialogShow ? OperationEvent.Command.manage.editUser.domId : '';
},
domIdDelUser() {
return this.dialogShow ? OperationEvent.Command.manage.delUser.domId : '';
},
domIdFreshUser() {
return this.dialogShow ? OperationEvent.Command.manage.freshUser.domId : '';
},
domIdChooseUser() {
return this.dialogShow ? OperationEvent.Command.manage.chooseUser.domId : '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.close.menu.domId : '';
},
title() {
return '用户管理'
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
})
},
methods: {
doShow(operate) {
//
if (!this.dialogShow) {
this.loading = false;
this.operate = operate || {};
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
//
addUser() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.manage.addUser.operation,
}
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.$refs.userAdd.doShow(operate);
}
}).catch(error => {
this.loading = false;
})
},
//
editUser() {
if (this.selected) {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.manage.editUser.operation,
}
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.$refs.userEdit.doShow(operate, this.selected);
}
}).catch(error => {
this.loading = false;
})
} else {
this.$messageBox('请先选择用户');
}
},
//
delUser() {
if (this.selected) {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.manage.delUser.operation,
messages: [`你确定删除用户${this.selected.userName}吗?`]
}
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.$refs.userDelete.doShow(operate, this.selected);
}
}).catch(error => {
this.loading = false;
})
} else {
this.$messageBox('请先选择用户');
}
},
//
freshUser() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.manage.freshUser.operation,
}
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
}).catch(error => {
this.loading = false;
})
},
//
chooseUser(row) {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.manage.chooseUser.operation,
}
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
this.selected = row;
}).catch(error => {
this.loading = false;
})
},
commit() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.menu.operation,
}
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(error => {
this.loading = false;
this.doClose();
})
},
cancel() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.cancel.menu.operation,
}
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); });
},
//
operateUser(data) {
if (data && data.type === 'ADD') {
let index = this.tableData.indexOf(this.tableData.find(elem => { return elem.jobNumber === data.jobNumber }));
if (index < 0) {
this.tableData.push({
jobNumber: data.jobNumber,
userName: data.userName,
password: data.password
});
} else {
this.$messageBox('添加失败,存在相同工号的用户');
}
} else if (data && data.type === 'EDIT') {
let index = this.tableData.indexOf(this.tableData.find(elem => { return elem.jobNumber === data.jobNumber }));
if (index >= 0) {
this.tableData[index].password = data.password;
this.tableData[index].userName = data.userName;
} else {
this.$messageBox('修改失败');
}
} else if (data && data.type === 'DELETE') {
let index = this.tableData.indexOf(this.tableData.find(elem => { return elem.jobNumber === data.jobNumber }));
if (index >= 0) {
this.tableData.splice(index, 1);
} else {
this.$messageBox('删除失败');
}
}
}
}
}
</script>
<style scoped>
.ningbo-01__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -10px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -5,11 +5,7 @@
<el-table :data="stationStandList" height="350px">
<el-table-column prop="name" label="站台" />
<el-table-column prop="groupNumber" label="状态">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<span>打开</span>
</div>
</template>
</el-table-column>
</el-table>
</el-col>
@ -25,7 +21,7 @@
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="commitDisabled" @click="commit">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
@ -44,7 +40,7 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
// import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import { mapGetters } from 'vuex';
export default {
@ -54,26 +50,12 @@ export default {
},
data() {
return {
tempData: [],
tableData: [],
activeName: 'first',
status: false,
standStatus: true,
allChecked: false,
beforeSectionList: [],
dialogShow: false,
loading: false,
selected: null,
row: null,
operation: '',
display: true,
stationName: '',
signalName: '',
selectStandCode: '',
displayCopyPath: false,
tableStyle: {
'border-bottom': 'none'
}
selected: null
};
},
computed: {
@ -94,18 +76,11 @@ export default {
},
title() {
return '站台开放/关闭';
},
commitDisabled() {
let disabled = true;
if (this.row) {
disabled = !this.row.canSetting;
}
return disabled;
}
},
watch: {
'$store.state.map.keyboardEnterCount': function (val) {
if (this.show && !this.commitDisabled) {
if (this.show) {
this.commit();
}
}
@ -116,10 +91,7 @@ export default {
});
},
methods: {
expandPath() {
console.log('展开进路预览');
},
doShow(operate, selected, tempData) {
doShow(operate, selected) {
this.selected = selected;
//
this.dialogShow = true;
@ -130,40 +102,12 @@ export default {
doClose() {
this.loading = false;
this.dialogShow = false;
this.restoreBeforeDevices();
this.$store.dispatch('training/emitTipFresh');
// mouseCancelState(this.selected);
},
restoreBeforeDevices() {
//
if (this.beforeSectionList && this.beforeSectionList.length) {
this.beforeSectionList.forEach(elem => {
elem.cutOff = false;
});
}
this.$store.dispatch('training/updateMapState', [...this.beforeSectionList]);
this.beforeSectionList = [];
},
commit() {
if (this.row && this.row.canSetting) {
this.loading = true;
commitOperate(menuOperate.Signal.arrangementRoute, {routeCode:this.row.code}, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
}
},
handleClick() {
},
selectStand(stationStand) {
this.selectStandCode = stationStand.code;
},
cancel() {
const operate = {

View File

@ -0,0 +1,175 @@
<template>
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="600px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-col :span="16">
<el-tabs type="border-card">
<el-tab-pane label="站台">
<el-table :data="stationStandList" height="350px">
<el-table-column prop="name" label="站台" />
<el-table-column prop="detain" label="扣车">
<template slot-scope="scope">
<span>{{ getDetainStatus(scope.row.code) }}</span>
</template>
</el-table-column>
<el-table-column prop="status" label="状态">
<!--<template slot-scope="scope">-->
<!--<div slot="reference" class="name-wrapper">-->
<span>打开</span>
<!--</div>-->
<!--</template>-->
</el-table-column>
</el-table>
<el-checkbox v-model="allChecked">所有站台(F)</el-checkbox>
</el-tab-pane>
<el-tab-pane label="系统">系统</el-tab-pane>
</el-tabs>
</el-col>
<el-col :span="7" :offset="1">
<div class="set-status-box">
<div class="set-status-title">设置状态</div>
<el-radio v-model="status" :disabled="standStatus" :label="true">设置</el-radio>
<br>
<el-radio v-model="status" :disabled="!standStatus" :label="false">取消</el-radio>
</div>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdCancel" @click="cancel">关闭(C)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>帮助(H)</el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
// import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import { mapGetters } from 'vuex';
export default {
name: 'StandDetain',
components: {
NoticeInfo
},
data() {
return {
status: false,
standStatus: true,
allChecked: false,
dialogShow: false,
loading: false,
selected: null
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.choose.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.menu.domId : '';
},
title() {
return '扣车';
}
},
watch: {
'$store.state.map.keyboardEnterCount': function (val) {
if (this.show) {
this.commit();
}
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
expandPath() {
console.log('展开进路预览');
},
doShow(operate, selected) {
this.selected = selected;
//
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
},
handleClick() {
},
getDetainStatus(code) {
const stand = this.$store.getters['map/getDeviceByCode'](code);
if (!stand.stationHoldTrain && !stand.centerHoldTrain) {
return '未扣车';
} else {
return '扣车';
}
},
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>
<style rel="stylesheet/scss" lang="scss" scoped>
.menu-li {
height: 30px;
line-height: 30px;
text-align: left;
list-style:none;
padding-left: 5px;
border-right: 2px solid #696969;
color: #000;
}
.set-status-box {
position: relative;
top: 200px;
border: 1px solid #AFAFAF;
padding-left: 10px;
}
.set-status-title{
position: relative;
top: -15px;
background: #F0F0F0;
width: 60px;
text-align: center;
}
</style>

View File

@ -2,61 +2,62 @@
<el-dialog
v-dialogDrag
class="ningbo-01__systerm station-control"
title="控制模式转换"
title="授权转移"
:visible.sync="show"
width="400px"
width="600px"
:before-close="doClose"
:show-close="true"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row> 集中站 </el-row>
<el-row style="margin-bottom: 20px">
<el-select
:id="domIdChooseStation"
ref="chooseStation"
v-model="station"
value-key="code"
filterable
placeholder="请选择"
style="width: 100%;"
@change="handleChooseChangeStation"
>
<el-option v-for="item in concertrateStationList" :key="item.code" :label="item.name" :value="item" />
</el-select>
<el-col :span="18">
<el-table :data="stationList" style="width: 100%;" height="350px">
<el-table-column prop="name" label="控制区域" />
<el-table-column prop="userId" label="用户ID" />
</el-table>
</el-col>
<el-col :span="6">
<div style="position: relative;top: 110px;left: 20px;color: #000;width: 60px;text-align: center;background: #F0F0F0;">接收转移</div>
<div style="position: relative; top: 100px;border: 1px solid #BBBBBB; text-align: center;width: 100px;left: 18px;padding: 10px;">
<el-radio v-model="accept" :label="true" style="display: block;margin-bottom: 10px;"></el-radio>
<el-radio v-model="accept" :label="false" style="display: block;"></el-radio>
</div>
</el-col>
</el-row>
<el-radio-group :id="domIdChooseControl" v-model="stationType">
<el-row v-for="item in Object.keys(controlProps)" :key="item" style="padding-bottom: 10px">
<el-radio :label="item" @change="handleChooseChangeControl">
{{ controlProps[item] }}</el-radio>
</el-row>
</el-radio-group>
<div class="message" style="color:#ff0000;font-size:14px;margin-left:10px">{{ message }}</div>
<el-row type="flex" justify="center" class="button-group">
<el-button :id="domIdCommit" :disabled="disabledCommit" @click="handleCommit">设置</el-button>
<el-button :id="domIdCancel" :disabled="disabledClose" style="margin-left: 200px" @click="cancel">退出
</el-button>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdCancel" @click="cancel">关闭(C)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>帮助(H)</el-button>
</el-col>
</el-row>
<two-confirmation ref="twoConfirmation" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import TwoConfirmation from './childDialog/twoConfirmation';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
name: 'StationControl',
components: {
TwoConfirmation
},
data() {
return {
tableData: [],
accept: false,
operate: null,
dialogShow: false,
disabledClose: false,
@ -121,43 +122,24 @@ export default {
}
},
'$store.state.map.controlTransfer':function (controlTransferList) {
controlTransferList.forEach(controlTransfer=>{
this.updateTableValue(controlTransfer);
});
}
},
mounted() {
this.stationList.forEach(item => {
if (item.centralized) {
this.tableData.push(item);
}
});
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate) {
doShow() {
this.message = '';
if (!this.dialogShow) {
this.operate = operate || {};
this.operation = operate.operation;
}
this.dialogShow = true;
// if (this.$store.state.training.prdType == '01') {
// this.controlProps = {
// '03': '',
// '02': ''
// };
// }
this.$store.dispatch('training/emitTipFresh');
},
updateTableValue(controlTransfer) {
this.concertrateStationList.forEach((row, index) => {
if (row.code == controlTransfer.code) {
if (controlTransfer.applicantId) {
this.disabledCommit = true;
} else {
this.disabledCommit = false;
}
}
});
},
doClose() {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
@ -183,15 +165,6 @@ export default {
operation: OperationEvent.Command.order.choose1.operation,
val: this.stationCode
};
// if (this.stationType == '01') {
// operate.operation = OperationEvent.StationControl.requestCentralControl.choose1.operation
// } else if (this.stationType == '02') {
// operate.operation = OperationEvent.StationControl.requestStationControl.choose1.operation
// } else if (this.stationType == '03') {
// operate.operation = OperationEvent.StationControl.emergencyStationControl.choose1.operation
// }
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
@ -204,15 +177,6 @@ export default {
operation: OperationEvent.Command.order.choose.operation,
val: this.stationCode
};
// if (this.stationType == '01') {
// operate.operation = OperationEvent.StationControl.requestCentralControl.choose.operation
// } else if (this.stationType == '02') {
// operate.operation = OperationEvent.StationControl.requestStationControl.choose.operation
// } else if (this.stationType == '03') {
// operate.operation = OperationEvent.StationControl.emergencyStationControl.choose.operation
// }
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
@ -242,31 +206,37 @@ export default {
conterCommit() {
commitOperate(menuOperate.StationControl.requestCentralControl, {stationCodes:[this.stationCode]}, 0).then((data)=>{
this.doClose();
this.$refs.twoConfirmation.doShow(data.operate, '确认将如下操作区域的控制模式由站控转为遥控:\n' + this.stationName);
// this.$refs.twoConfirmation.doShow(data.operate, ':\n' + this.stationName);
});
},
//
requestCommit() {
commitOperate(menuOperate.StationControl.requestStationControl, {stationCodes:[this.stationCode]}, 0).then((data)=>{
this.doClose();
this.$refs.twoConfirmation.doShow(data.operate, '确认将如下操作区域的控制模式由中控转为站控:\n' + this.stationName);
// this.$refs.twoConfirmation.doShow(data.operate, ':\n' + this.stationName);
});
},
//
emergencyCommit() {
commitOperate(menuOperate.StationControl.emergencyStationControl, {stationCodes:[this.stationCode]}, 0).then((data)=>{
this.doClose();
this.$refs.twoConfirmation.doShow(data.operate, '确认将如下操作区域的控制模式由中控转为站控:\n' + this.stationName);
// this.$refs.twoConfirmation.doShow(data.operate, ':\n' + this.stationName);
});
}
},
commit() {}
}
};
</script>
<style scoped rel="stylesheet/scss" lang="scss" scoped>
@import "src/styles/mixin.scss";
/deep/ .el-radio {
/deep/ {
.el-radio {
color: #000;
font-weight: bold;
}
.el-cascader-node>.el-radio, .el-radio:last-child{
margin-right: 20px;
}
}
</style>

View File

@ -1,171 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="ningbo-01__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" size="small" label-width="100px" :model="addModel" :rules="rules">
<div style="padding: 10px 15px; border: 1px double lightgray; margin: 20px 0px; height: 120px;">
<span class="base-label">添加位置</span>
<div style="position: relative; top:-10px;">
<el-form-item prop="stationStandCode">
<span slot="label">&emsp;&emsp;&emsp;:</span>
<el-select v-model="addModel.stationStandCode" filterable placeholder="请选择">
<el-option
v-for="item in stationStandList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="前车车次号:" prop="trainNumberLimber">
<el-input v-model="addModel.trainNumberLimber" />
</el-form-item>
</div>
</div>
<el-form-item label="添加车次号:" label-width="115px" prop="groupNumber">
<el-input v-model="addModel.groupNumber" />
</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">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
export default {
name: 'TrainAdd',
components: {
},
data() {
return {
trainNoList: [],
addModel: {
groupNumber: '',
stationStandCode: '',
trainNumberLimber: ''
},
rules: {
groupNumber: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
// trainNumberLimber: [
// { required: true, message: '', trigger: 'blur' }
// ],
stationStandCode: [
{ required: true, message: '请选择终端', trigger: 'change' }
]
},
operation: null,
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.planTrain.addPlanTrain.domId : '';
},
title() {
return '添加计划车';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.operation = operate.operation;
//
if (!this.dialogShow) {
this.loading = false;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.planTrain.addPlanTrain.operation
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style scoped>
.ningbo-01__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -1,154 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="ningbo-01__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" size="small" label-width="100px" :model="addModel" :rules="rules">
<el-form-item prop="stationStandCode">
<span slot="label">&emsp;&emsp;:</span>
<el-select v-model="addModel.stationStandCode" filterable placeholder="请选择">
<el-option v-for="item in stationStandList" :key="item.code" :label="item.name" :value="item.code" />
</el-select>
</el-form-item>
<el-form-item label="车 次 号:" prop="groupNumber">
<el-input v-model="addModel.groupNumber" />
</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">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
export default {
name: 'TrainAdd',
components: {
},
data() {
return {
trainNoList: [],
addModel: {
groupNumber: '',
stationStandCode: ''
},
rules: {
groupNumber: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
stationStandCode: [
{ required: true, message: '请选择终端', trigger: 'change' }
]
},
operation: null,
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.planTrain.delPlanTrain.domId : '';
},
title() {
return '删除计划车';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.operation = operate.operation;
//
if (!this.dialogShow) {
this.loading = false;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.planTrain.delPlanTrain.operation
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style scoped>
.ningbo-01__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -28,7 +28,7 @@
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="commitDisabled" @click="commit">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
@ -47,8 +47,8 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
// import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
// import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
import { mapGetters } from 'vuex';
export default {
@ -58,23 +58,12 @@ export default {
},
data() {
return {
tempData: [],
tableData: [],
activeName: 'first',
beforeSectionList: [],
dialogShow: false,
loading: false,
selected: null,
row: null,
operation: '',
display: true,
stationName: '',
signalName: '',
selectStandCode: '',
displayCopyPath: false,
tableStyle: {
'border-bottom': 'none'
}
selectStandCode: ''
};
},
computed: {
@ -95,18 +84,11 @@ export default {
},
title() {
return '列车分配';
},
commitDisabled() {
let disabled = true;
if (this.row) {
disabled = !this.row.canSetting;
}
return disabled;
}
},
watch: {
'$store.state.map.keyboardEnterCount': function (val) {
if (this.show && !this.commitDisabled) {
if (this.show) {
this.commit();
}
}
@ -120,7 +102,7 @@ export default {
expandPath() {
console.log('展开进路预览');
},
doShow(operate, selected, tempData) {
doShow(operate, selected) {
this.selected = selected;
//
this.dialogShow = true;
@ -131,40 +113,13 @@ export default {
doClose() {
this.loading = false;
this.dialogShow = false;
this.restoreBeforeDevices();
this.$store.dispatch('training/emitTipFresh');
mouseCancelState(this.selected);
},
restoreBeforeDevices() {
//
if (this.beforeSectionList && this.beforeSectionList.length) {
this.beforeSectionList.forEach(elem => {
elem.cutOff = false;
});
}
this.$store.dispatch('training/updateMapState', [...this.beforeSectionList]);
this.beforeSectionList = [];
// mouseCancelState(this.selected);
},
commit() {
if (this.row && this.row.canSetting) {
this.loading = true;
commitOperate(menuOperate.Signal.arrangementRoute, {routeCode:this.row.code}, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
}
},
handleClick() {
},
selectStand(stationStand) {
this.selectStandCode = stationStand.code;
},
cancel() {
const operate = {

View File

@ -0,0 +1,148 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system warning-confirm"
:title="title"
:visible.sync="show"
width="800px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
center
>
<el-row style="padding: 20px 0;">
<el-col :span="12" style="text-align: center;">
<el-row style="color: #000;">车体号:</el-row>
<el-row>
<el-input v-model="groupNumber" :disabled="true" style="width: 80px;" />
</el-row>
</el-col>
<el-col :span="12" style="text-align: center;">
<el-row style="color: #000;">追踪号:</el-row>
<el-input v-model="tid" :disabled="true" style="width: 80px;" />
</el-col>
</el-row>
<el-row v-if="isUpdate" style="padding: 20px 0;border-top: 1px solid #000">
<el-col :span="24" style="text-align: center">
<el-row style="color: #000;">新追踪号:</el-row>
<el-row>
<el-input v-model="newTid" style="width: 80px;" />
</el-row>
</el-col>
</el-row>
<el-row v-else style="padding: 20px 0;border-top: 1px solid #000">
<el-col :span="12" style="text-align: center">
<el-row style="color: #000">车体号:</el-row>
<el-row>
<el-input v-model="newGroupNumber" style="width: 80px;" />
</el-row>
</el-col>
<el-col :span="12" style="text-align: center">
<el-row style="color:#000">追踪号:</el-row>
<el-row>
<el-input v-model="newTid" style="width: 80px;" />
</el-row>
</el-col>
</el-row>
<el-row style="padding: 20px 0;">
<el-input
v-model="textarea"
type="textarea"
:rows="3"
placeholder="请输入内容"
/>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="20" :offset="2">
<el-button :id="domIdConfirm" style="margin-right: 170px;" @click="commit">确定</el-button>
<el-button :id="domIdCancel" style="margin-right: 170px;" @click="cancel">取消</el-button>
<el-button>帮助</el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { mapGetters } from 'vuex';
export default {
name: 'ChangeTID',
data() {
return {
groupNumber: '',
newGroupNumber: '',
tid: '',
newTid: '',
textarea: '',
loading: false,
dialogShow: false,
operate: {}
};
},
computed: {
...mapGetters('map', [
'stationList',
'mapConfig'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
if (this.dialogShow) {
return this.operate.operation === OperationEvent.Train.editTrainId.menu.operation ? OperationEvent.Train.editTrainId.confirm.domId : OperationEvent.Train.switchTrainId.confirm.domId;
} else {
return '';
}
},
title() {
return this.operate.operation === OperationEvent.Train.editTrainId.menu.operation ? '更改追踪号' : '交换追踪号';
},
isUpdate() {
return this.operate.operation === OperationEvent.Train.editTrainId.menu.operation;
}
},
methods: {
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
doShow(step, selected ) {
this.dialogShow = true;
this.selected = selected;
this.groupNumber = selected.code;
this.tid = selected.tripNumber;
this.operate = step;
},
cancel() {
this.doClose();
},
commit() {
}
}
};
</script>
<style lang="scss" scoped>
.transfer_header {
text-align: center;
color: #000;
font-size: 16px;
}
.transfer_body {
height: 180px;
/*overflow-y: scroll;*/
border-top: 2px solid #2F4F50;
border-left: 2px solid #2F4F50;
border-bottom: 2px solid #B7D4D5;
border-right: 2px solid #B7D4D5;
text-align: center;
font-size: 16px;
color: #000;
}
</style>

View File

@ -0,0 +1,154 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system warning-confirm"
:title="title"
:visible.sync="show"
width="500px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
center
>
<el-row style="padding: 20px 0;">
<el-col :span="12" style="text-align: center;">
<el-row style="color: #000;">车体号:</el-row>
<el-row>
<el-input v-model="groupNumber" :disabled="true" style="width: 80px;" />
</el-row>
</el-col>
<el-col :span="12" style="text-align: center;">
<el-row style="color: #000;">追踪号:</el-row>
<el-input v-model="tid" :disabled="true" style="width: 80px;" />
</el-col>
</el-row>
<hr style="height:1px;border:none;border-top:1px solid #555555;width: 492px; position: absolute;left: 3px; margin-top: 0">
<el-row style="padding: 10px 0;">
<el-col :span="11" style="text-align: right;">
<span style="color: #000;">实际惰行模式</span>
</el-col>
<el-col :span="12" :offset="1">
<el-select v-model="currentMode" disabled style="width: 100px;">
<el-option
v-for="item in modeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
</el-row>
<el-row style="padding: 10px 0;">
<el-col :span="11" style="text-align: right;">
<span style="color: #000;">被请求的惰行模式</span>
</el-col>
<el-col :span="12" :offset="1">
<el-radio v-model="requestMode" :label="true">使能</el-radio>
<br>
<el-radio v-model="requestMode" :label="false">禁用</el-radio>
</el-col>
</el-row>
<el-row style="padding: 20px 0;">
<el-input
v-model="textarea"
type="textarea"
:rows="3"
placeholder="请输入内容"
/>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="20" :offset="2">
<el-button :id="domIdConfirm" style="margin-right: 50px;" @click="commit">确定</el-button>
<el-button :id="domIdCancel" style="margin-right: 50px;" @click="cancel">取消</el-button>
<el-button>帮助</el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { mapGetters } from 'vuex';
export default {
name: 'ChangeTID',
data() {
return {
groupNumber: '',
newGroupNumber: '',
tid: '',
newTid: '',
textarea: '',
loading: false,
dialogShow: false,
operate: {},
currentMode: false,
requestMode: null,
modeList: [
{ label: '禁用', value: false },
{ label: '使能', value: true }
]
};
},
computed: {
...mapGetters('map', [
'stationList',
'mapConfig'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.updateIdleRunningMode.confirm.domId : '';
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Train.updateIdleRunningMode.choose.domId : '';
},
title() {
return '更改惰行模式';
}
},
methods: {
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
doShow(step, selected ) {
this.dialogShow = true;
this.selected = selected;
this.groupNumber = selected.code;
this.tid = selected.tripNumber;
this.operate = step;
},
cancel() {
this.doClose();
},
commit() {
}
}
};
</script>
<style lang="scss" scoped>
.transfer_header {
text-align: center;
color: #000;
font-size: 16px;
}
.transfer_body {
height: 180px;
/*overflow-y: scroll;*/
border-top: 2px solid #2F4F50;
border-left: 2px solid #2F4F50;
border-bottom: 2px solid #B7D4D5;
border-right: 2px solid #B7D4D5;
text-align: center;
font-size: 16px;
color: #000;
}
</style>

View File

@ -1,40 +1,52 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system train-define"
class="xian-02__system train-alertor"
:title="title"
:visible.sync="show"
width="360px"
width="500px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div style="text-align: center; margin-top: 10px;">无报警数据</div>
<el-row>
<el-col :span="12">车站</el-col>
<el-col :span="11" :offset="1">车次窗</el-col>
<el-col :span="8">外部名</el-col>
<el-col :span="10"><el-input v-model="addModel.groupNumber" style="width: 120px;" /></el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-input v-model="addModel.stationName" :disabled="true" />
<el-row style="margin-bottom: 50px;">
<el-col :span="8">设备识别号</el-col>
<el-col :span="5">
<el-input v-model="addModel.groupNumber" style="width: 80px;" />
</el-col>
<el-col :span="11" :offset="1">
<el-input v-model="addModel.trainWindowCode" :disabled="true" />
<el-col :span="5" :offset="2">
<el-button type="primary" @click="commit">确认</el-button>
</el-col>
</el-row>
<el-row>
<el-col :span="12">新车组号</el-col>
<el-col :span="8">确认 ID</el-col>
<el-col :span="13"><el-input v-model="addModel.groupNumber" /></el-col>
</el-row>
<div style="border-top: 1px solid #41615B; border-bottom: 1px solid #99BDB0;" />
<el-row>
<el-col :span="8">设备识别号</el-col>
<el-col :span="13"><el-input v-model="addModel.groupNumber" /></el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-input :id="domIdInput" v-model="addModel.tripNumber" @change="inputGroupNumber" />
</el-col>
<el-col :span="8">确认 ID</el-col>
<el-col :span="13"><el-input v-model="addModel.groupNumber" /></el-col>
</el-row>
<el-row>
<el-col :span="13" :offset="8"><el-button type="primary" @click="commit">确认</el-button></el-col>
</el-row>
<div style="border-top: 1px solid #41615B; border-bottom: 1px solid #99BDB0;" />
<el-row class="option_result_box" />
<el-row justify="center" class="button-group">
<el-col :span="10">
<el-col :span="3" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="5">
<el-col :span="3" :offset="5">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
@ -43,12 +55,11 @@
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'TrainDefine',
name: 'TrainMove',
components: {
NoticeInfo
},
@ -59,30 +70,24 @@ export default {
addModel: {
stationName: '',
trainWindowCode: '',
tripNumber: ''
groupNumber: ''
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdInput() {
return this.dialogShow ? OperationEvent.Train.addTrainId.input.domId : '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.addTrainId.menu.domId : '';
return this.dialogShow ? OperationEvent.Train.deleteDestinationTrainId.menu.domId : '';
},
title() {
return '设置车体号';
return '报警确认';
}
},
mounted() {
@ -115,29 +120,16 @@ export default {
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
},
inputGroupNumber() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.addTrainId.input.operation,
val: this.addModel.tripNumber
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
commit() {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.addTrainId.menu.operation,
val: this.addModel.tripNumber
operation: OperationEvent.Train.deleteDestinationTrainId.menu.operation,
cmdType: '',
val: this.addModel.groupNumber
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
@ -145,16 +137,15 @@ export default {
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate);
// this.$refs.noticeInfo.doShow(operate);
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
@ -163,17 +154,48 @@ export default {
}
};
</script>
<style scoped>
/deep/ .el-row {
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ {
.el-dialog .el-dialog__body{
padding: 0!important;
}
.el-row {
margin: 10px
}
}
.xian-02__system .el-dialog .base-label {
background: rgba(0, 0, 0, x);
background: rgba(0, 0, 0, 0.3);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
.option_box{
border-color: #3e6d67 #9ABFB2 #9ABFB2 #3e6d67;
border-width: 2px;
border-style: solid;
padding: 4px;
color: #191919;
height: 155px;
overflow: auto;
margin-bottom: 20px;
.content_list{
cursor: pointer;
&:hover{
background: #000004;
color: #73877E;
}
}
}
.option_result_box{
border-color: #3e6d67 #9ABFB2 #9ABFB2 #3e6d67;
border-width: 2px;
border-style: solid;
padding: 4px;
color: #191919;
height: 90px;
overflow: hidden;
}
</style>

View File

@ -4,37 +4,30 @@
class="xian-02__system train-move"
:title="title"
:visible.sync="show"
width="360px"
width="560px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="12">车组号</el-col>
<el-col :span="3" :offset="7">车体号:</el-col>
<el-col :span="10" :offset="2">追踪号:</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-input :id="domIdInput" v-model="addModel.groupNumber" @change="inputGroupNumber" />
</el-col>
</el-row>
<el-row>
<el-col :span="12">车站</el-col>
<el-col :span="11" :offset="1">车次窗</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-input v-model="addModel.stationName" :disabled="true" />
</el-col>
<el-col :span="11" :offset="1">
<el-input v-model="addModel.trainWindowCode" :disabled="true" />
<el-col :span="3" :offset="7">
<el-input v-model="addModel.groupNumber" style="width: 80px;" disabled />
</el-col>
<el-col :span="10" :offset="2">
<el-input v-model="addModel.groupNumber" style="width: 80px;" disabled />
</el-col>
</el-row>
<el-row class="option_result_box" />
<el-row justify="center" class="button-group">
<el-col :span="10">
<el-col :span="3" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="5">
<el-col :span="3" :offset="5">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
@ -43,8 +36,7 @@
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
@ -66,23 +58,17 @@ export default {
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdInput() {
return this.dialogShow ? OperationEvent.Train.addTrainId.input.domId : '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.addTrainId.menu.domId : '';
return this.dialogShow ? OperationEvent.Train.deleteDestinationTrainId.menu.domId : '';
},
title() {
return '移动车组号';
return '删除ID';
}
},
mounted() {
@ -115,29 +101,16 @@ export default {
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
},
inputGroupNumber() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.addTrainId.input.operation,
val: this.addModel.groupNumber
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
commit() {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.addTrainId.menu.operation,
operation: OperationEvent.Train.deleteDestinationTrainId.menu.operation,
cmdType: '',
val: this.addModel.groupNumber
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
@ -145,16 +118,15 @@ export default {
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate);
// this.$refs.noticeInfo.doShow(operate);
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
@ -164,9 +136,14 @@ export default {
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ .el-row {
/deep/ {
.el-dialog .el-dialog__body{
padding: 0!important;
}
.el-row {
margin: 10px
}
}
.xian-02__system .el-dialog .base-label {
background: rgba(0, 0, 0, 0.3);
@ -176,4 +153,30 @@ export default {
padding: 0 5px;
background-color: #F0F0F0;
}
.option_box{
border-color: #3e6d67 #9ABFB2 #9ABFB2 #3e6d67;
border-width: 2px;
border-style: solid;
padding: 4px;
color: #191919;
height: 155px;
overflow: auto;
margin-bottom: 20px;
.content_list{
cursor: pointer;
&:hover{
background: #000004;
color: #73877E;
}
}
}
.option_result_box{
border-color: #3e6d67 #9ABFB2 #9ABFB2 #3e6d67;
border-width: 2px;
border-style: solid;
padding: 4px;
color: #191919;
height: 90px;
overflow: hidden;
}
</style>

View File

@ -1,167 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system stand-stop-time"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" size="small" label-width="90px" :model="addModel" :rules="rules">
<el-form-item label="车 组 号:" prop="groupNumber">
<el-input :id="domIdInput" v-model="addModel.groupNumber" @change="inputGroupNumber" />
</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">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<confirm-control ref="confirmControl" />
<notice-info ref="noticeInfo" pop-class="xian-02__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
// import { getPublishMapTrainNos } from '@/api/runplan';
import ConfirmControl from './childDialog/confirmControl';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'TrainDelete',
components: {
ConfirmControl,
NoticeInfo
},
data() {
return {
trainNoList: [],
selected: null,
addModel: {
groupNumber: ''
},
rules: {
groupNumber: [
{ required: true, message: '请输入车组号', trigger: 'blur' }
]
},
operation: null,
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'map'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdInput() {
return this.dialogShow ? OperationEvent.Train.delTrainId.input.domId : '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.delTrainId.menu.domId : '';
},
title() {
return '删除车组号';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
loadInitData(map) {
if (map) {
// getPublishMapTrainNos(map.skinCode).then(response => {
// this.trainNoList = response.data;
// }).catch(() => {
// this.$messageBox(``);
// });
}
},
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
this.operation = operate.operation;
}
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);
},
inputGroupNumber() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.delTrainId.input.operation,
val: this.addModel.groupNumber
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.delTrainId.menu.operation,
val: this.addModel.groupNumber
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate);
});
} else {
return false;
}
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>

View File

@ -44,16 +44,15 @@
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
:value="item.value"
/>
</el-select>
</el-col>
</el-row>
<el-row class="option_box">
<div v-for="(item, index) in optionObject[addModel.operation]" :key="index">{{ item.name }}</div>
</el-row>
<el-row class="option_result_box">
<div v-for="(item, index) in optionObject[addModel.operation]" :key="index" class="content_list">{{ item.name }}</div>
</el-row>
<el-row class="option_result_box" />
<el-row justify="center" class="button-group">
<el-col :span="10">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
@ -88,46 +87,46 @@ export default {
{ name: '0004 北客站一韦曲南站 北客站和韦曲南站均站前折返 往返运营', id: 4 },
{ name: '0005 北客站一会展中心 往返运营', id: 5 },
{ name: '0006 北客站一会展中心 北客站站前折返 往返运营', id: 6 },
{ name: '0007 北客站一南稍门站 往返运营', id: 6 },
{ name: '0008 北客站一南稍门站 北客站站前折返 往返运营', id: 6 },
{ name: '0009 韦曲南一市图书馆 往返运营', id: 6 },
{ name: '0010 韦曲南一市图书馆 韦曲南站前折返 往返运营', id: 6 },
{ name: '0011 市图书馆站一会展中心站 往返运营', id: 1 },
{ name: '0030 运行至韦曲南站 末班运营', id: 6 },
{ name: '0031 下行方向运行至韦曲南站转上行方向 末班运营', id: 2 },
{ name: '0032 运行至北客站 末班运营', id: 1 },
{ name: '0033 下行方向运行至北客站站转上行方向 末班运营', id: 2 },
{ name: '0034 北客站一凤城五路站 末班运营', id: 4 },
{ name: '0035 韦曲南一市图书馆 末班运营', id: 5 },
{ name: '0036 北客站一南稍门站 末班运营', id: 6 },
{ name: '0037 韦曲南一体育场站 末班运营', id: 6 },
{ name: '0038 北客站一会展中心站 末班运营', id: 6 },
{ name: '0039 韦曲南一三爻站 末班运营', id: 6 }
{ name: '0007 北客站一南稍门站 往返运营', id: 7 },
{ name: '0008 北客站一南稍门站 北客站站前折返 往返运营', id: 8 },
{ name: '0009 韦曲南一市图书馆 往返运营', id: 9 },
{ name: '0010 韦曲南一市图书馆 韦曲南站前折返 往返运营', id: 10 },
{ name: '0011 市图书馆站一会展中心站 往返运营', id: 11 },
{ name: '0030 运行至韦曲南站 末班运营', id: 30 },
{ name: '0031 下行方向运行至韦曲南站转上行方向 末班运营', id: 31 },
{ name: '0032 运行至北客站 末班运营', id: 32 },
{ name: '0033 下行方向运行至北客站站转上行方向 末班运营', id: 33 },
{ name: '0034 北客站一凤城五路站 末班运营', id: 34 },
{ name: '0035 韦曲南一市图书馆 末班运营', id: 35 },
{ name: '0036 北客站一南稍门站 末班运营', id: 36 },
{ name: '0037 韦曲南一体育场站 末班运营', id: 37 },
{ name: '0038 北客站一会展中心站 末班运营', id: 38 },
{ name: '0039 韦曲南一三爻站 末班运营', id: 39 }
],
improper: [
{ name: '0050 北客站下行折1收车 非运营', id: 6 },
{ name: '0051 北客站下行折2收车 非运营', id: 1 },
{ name: '0052 北客站上行折2收车 非运营', id: 2 },
{ name: '0053 北客站上行折1收车 非运营', id: 3 },
{ name: '0054 韦曲南上行折2收车 非运营', id: 4 },
{ name: '0055 韦曲南上行折1收车 非运营', id: 5 },
{ name: '0056 韦曲南下行折1收车 非运营', id: 6 },
{ name: '0057 韦曲南下行折2收车 非运营', id: 6 },
{ name: '0058 凤城五路一市图书馆站 非运营', id: 6 },
{ name: '0059 运行至市图书馆站存车线 非运营', id: 6 },
{ name: '0060 运行至南稍门站存车线 非运营', id: 6 },
{ name: '0061 体育场一南稍门站 非运营', id: 1 },
{ name: '0062 运行至会展中心站存车线 非运营', id: 2 },
{ name: '0063 三爻一会展中心站 非运营', id: 3 },
{ name: '0064 运行至市图书馆存车线 非运营', id: 4 },
{ name: '0065 运行至南稍门站存车线 非运营', id: 5 },
{ name: '0070 运行至韦曲南站 非运营', id: 6 },
{ name: '0071 运行至北客站 非运营', id: 1 },
{ name: '0072 运行至会展中心站 非运营', id: 2 },
{ name: '0073 运行至橘河停车场入段线 非运营', id: 3 },
{ name: '0074 运行至橘河停车场出段线 非运营', id: 4 },
{ name: '0075 运行至渭河停车场入段线 非运营', id: 5 },
{ name: '0076 运行至渭河停车场出段线 非运营', id: 6 }
{ name: '0050 北客站下行折1收车 非运营', id: 50 },
{ name: '0051 北客站下行折2收车 非运营', id: 51 },
{ name: '0052 北客站上行折2收车 非运营', id: 52 },
{ name: '0053 北客站上行折1收车 非运营', id: 53 },
{ name: '0054 韦曲南上行折2收车 非运营', id: 54 },
{ name: '0055 韦曲南上行折1收车 非运营', id: 55 },
{ name: '0056 韦曲南下行折1收车 非运营', id: 56 },
{ name: '0057 韦曲南下行折2收车 非运营', id: 57 },
{ name: '0058 凤城五路一市图书馆站 非运营', id: 58 },
{ name: '0059 运行至市图书馆站存车线 非运营', id: 59 },
{ name: '0060 运行至南稍门站存车线 非运营', id: 60 },
{ name: '0061 体育场一南稍门站 非运营', id: 61 },
{ name: '0062 运行至会展中心站存车线 非运营', id: 62 },
{ name: '0063 三爻一会展中心站 非运营', id: 63 },
{ name: '0064 运行至市图书馆存车线 非运营', id: 64 },
{ name: '0065 运行至南稍门站存车线 非运营', id: 65 },
{ name: '0070 运行至韦曲南站 非运营', id: 70 },
{ name: '0071 运行至北客站 非运营', id: 71 },
{ name: '0072 运行至会展中心站 非运营', id: 72 },
{ name: '0073 运行至橘河停车场入段线 非运营', id: 73 },
{ name: '0074 运行至橘河停车场出段线 非运营', id: 74 },
{ name: '0075 运行至渭河停车场入段线 非运营', id: 75 },
{ name: '0076 运行至渭河停车场出段线 非运营', id: 76 }
]
},
options: [
@ -261,15 +260,26 @@ export default {
background-color: #F0F0F0;
}
.option_box{
box-shadow: 1px 1px 3px #3a3a3a inset;
border-color: #3e6d67 #9ABFB2 #9ABFB2 #3e6d67;
border-width: 2px;
border-style: solid;
padding: 4px;
color: #191919;
height: 155px;
overflow: auto;
margin-bottom: 20px;
.content_list{
cursor: pointer;
&:hover{
background: #000004;
color: #73877E;
}
}
}
.option_result_box{
box-shadow: 1px 1px 3px #3a3a3a inset;
border-color: #3e6d67 #9ABFB2 #9ABFB2 #3e6d67;
border-width: 2px;
border-style: solid;
padding: 4px;
color: #191919;
height: 90px;

View File

@ -0,0 +1,289 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system warning-confirm"
:title="title"
:visible.sync="show"
width="800px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
center
>
<el-row style="padding: 20px 0;">
<el-col :span="2" style="color: #000;">车体号:</el-col>
<el-col :span="5" style="color: #000;">
<el-input v-model="groupNumber" :disabled="true" style="width: 80px;" />
</el-col>
<el-col :span="2" style="color: #000;">追踪号:</el-col>
<el-col :span="9" style="color: #000;">
<el-input v-model="tid" :disabled="true" style="width: 80px;" />
</el-col>
<el-col :span="2" style="color: #000;">目的地ID:</el-col>
<el-col :span="4" style="color: #000;">
<el-input :disabled="true" style="width: 80px;" />
</el-col>
</el-row>
<el-row el-row style="padding-bottom: 20px;">
<el-col :span="2" style="color: #000;">车站:</el-col>
<el-col :span="5" style="color: #000;">
<el-input :disabled="true" style="width: 150px;" />
</el-col>
<el-col :span="2" style="color: #000;">轨道:</el-col>
<el-col :span="3" style="color: #000">
<el-input :disabled="true" style="width: 70px;" />
</el-col>
<el-col :span="3" style="color: #000;">CBTC模式:</el-col>
<el-col :span="3" style="color: #000;">
<el-input :disabled="true" style="width: 70px;" />
</el-col>
<el-col :span="2" style="color: #000;">司机ID:</el-col>
<el-col :span="4" style="color: #000;">
<el-input :disabled="true" style="width: 80px;" />
</el-col>
</el-row>
<hr style="height:1px;border:none;border-top:1px solid #555555;width: 792px; position: absolute;left: 3px; margin-top: 0">
<el-tabs type="border-card" style="margin-top: 10px;">
<el-tab-pane label="列车控制及状态">
<el-row style="padding: 20px 0;color: #000;">
<el-col :span="13" style="border-right: 2px solid #64A98E;color: #000;">
<el-row style="padding: 5px 0;">
<el-col :span="8">列车控制</el-col>
<el-col :span="8">请求</el-col>
<el-col :span="8">实际的</el-col>
</el-row>
<el-row style="padding: 5px 0;">
<el-col :span="8">运行等级</el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
</el-row>
<el-row style="padding: 5px 0;">
<el-col :span="8">扣车</el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
</el-row>
<el-row style="padding: 5px 0;">
<el-col :span="8">停止</el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
</el-row>
<el-row style="padding: 5px 0;">
<el-col :span="8">运行等级</el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
</el-row>
<el-row style="padding: 5px 0;">
<el-col :span="8">门循环测试</el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
</el-row>
<el-row style="padding: 5px 0;">
<el-col :span="8">顺态发车</el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
</el-row>
<el-row style="padding: 5px 0;">
<el-col :span="8">车门</el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
<el-col :span="8"><el-input style="width: 80px;" /></el-col>
</el-row>
</el-col>
<el-col :span="11" style="padding: 0 10px;">
<div>列车状态</div>
<div style="width: 100%;height: 280px;border-style: solid;border-width: 2px;border-color: #467576 #A0C6C7 #A0C6C7 #467576;" />
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane label="表示">
<el-row style="color: #000;">
<el-col :span="11" style="padding: 5px;">
<span>开放表示</span>
<div style="width: 100%;height: 300px;overflow: auto;border-style: solid;border-width: 2px;border-color: #467576 #A0C6C7 #A0C6C7 #467576;" />
</el-col>
<el-col :span="13" style="padding: 5px;">
<span>关闭提示</span>
<div style="width: 100%;height: 300px;overflow: auto;border-style: solid;border-width: 2px;border-color: #467576 #A0C6C7 #A0C6C7 #467576;" />
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane label="CBTC状态">
<el-row style="color: #000;padding: 10px 0;">
<el-col :span="6" style="text-align: right;">通信中:</el-col>
<el-col :span="3">
<el-input style="width: 80px;" />
</el-col>
<el-col :span="4" style="text-align: right;">当前驾驶模式:</el-col>
<el-col :span="11">
<el-input style="width: 150px;" />
</el-col>
</el-row>
<el-row style="color: #000;padding: 10px 0;">
<el-col :span="6" style="text-align: right;">驾驶模式冲突:</el-col>
<el-col :span="3">
<el-input style="width: 80px;" />
</el-col>
<el-col :span="4" style="text-align: right;">司机模式开关:</el-col>
<el-col :span="11">
<el-input style="width: 150px;" />
</el-col>
</el-row>
<el-row style="color: #000;padding: 10px 0;">
<el-col :span="4" style="text-align: right;" :offset="9">司机方向手柄:</el-col>
<el-row :span="11">
<el-input style="width: 150px;" />
</el-row>
</el-row>
<el-row style="color: #000;padding: 10px 0;">
<el-col :span="3" style="text-align: right;">EB原因:</el-col>
<el-col :span="6">
<el-input style="width: 150px;" />
</el-col>
<el-col :span="4" style="text-align: right;">EB原因:</el-col>
<el-col :span="11">
<el-input style="width: 300px" />
</el-col>
</el-row>
<el-row style="color: #000;padding: 10px 0;">
<el-col :span="3" style="text-align: right;">FSB原因:</el-col>
<el-col :span="6">
<el-input style="width: 150px;" />
</el-col>
<el-col :span="4" style="text-align: right;">FSB原因:</el-col>
<el-col :span="11">
<el-input style="width: 300px" />
</el-col>
</el-row>
<div style="height: 125px;" />
</el-tab-pane>
<el-tab-pane label="列车行程">
<el-row style="color: #000;padding: 10px 0;">
<el-col :span="8">
<span>追踪号</span>
<el-input style="width: 100px;" />
</el-col>
<el-col :span="8">
<span>行程类型</span>
<el-input style="width: 100px;" />
</el-col>
<el-col :span="8">
<span>方向</span>
<el-input style="width: 100px;" />
</el-col>
</el-row>
<el-row style="color: #000;padding: 10px 0;">
<el-col :span="12">
<span>起始车站</span>
<el-input style="width: 250px;" />
</el-col>
<el-col :span="12">
<span>目的车站</span>
<el-input style="width: 250px;" />
</el-col>
</el-row>
<el-table :data="stationList" style="width: 100%" height="250px" :row-style="{background: '#5F9EA0'}" :header-cell-style="{background: '#5F9EA0'}">
<el-table-column prop="name" label="车站" />
<el-table-column prop="stand" label="站台" />
<el-table-column prop="request" label="请求" />
<el-table-column prop="actual" label="实际的" />
<el-table-column prop="next" label="下一个移动的" />
</el-table>
</el-tab-pane>
</el-tabs>
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { mapGetters } from 'vuex';
export default {
name: 'ChangeTID',
data() {
return {
groupNumber: '',
newGroupNumber: '',
tid: '',
newTid: '',
textarea: '',
loading: false,
dialogShow: false,
operate: {},
requestMode: null
};
},
computed: {
...mapGetters('map', [
'stationList',
'mapConfig'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.updateIdleRunningMode.confirm.domId : '';
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Train.updateIdleRunningMode.choose.domId : '';
},
title() {
return '列车明细';
}
},
methods: {
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
doShow(step, selected ) {
this.dialogShow = true;
this.selected = selected;
this.groupNumber = selected.code;
this.tid = selected.tripNumber;
this.operate = step;
},
cancel() {
this.doClose();
},
commit() {
}
}
};
</script>
<style lang="scss" scoped>
.transfer_header {
text-align: center;
color: #000;
font-size: 16px;
}
.transfer_body {
height: 180px;
/*overflow-y: scroll;*/
border-top: 2px solid #2F4F50;
border-left: 2px solid #2F4F50;
border-bottom: 2px solid #B7D4D5;
border-right: 2px solid #B7D4D5;
text-align: center;
font-size: 16px;
color: #000;
}
/deep/{
.el-tabs--border-card>.el-tabs__content {
background: #5F9EA0;
}
.el-tabs__nav-scroll {
background: #5F9EA0;
}
.el-tabs__item {
color: #000 !important;
border-style: solid !important;
border-width: 2px !important;
border-color: #467576 #A0C6C7 #A0C6C7 #467576 !important;
}
}
</style>

View File

@ -0,0 +1,135 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system warning-confirm"
:title="title"
:visible.sync="show"
width="500px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
center
>
<el-row style="padding: 20px 0;">
<el-col :span="12" style="text-align: center;">
<el-row style="color: #000;">车体号:</el-row>
<el-row>
<el-input v-model="groupNumber" :disabled="true" style="width: 80px;" />
</el-row>
</el-col>
<el-col :span="12" style="text-align: center;">
<el-row style="color: #000;">追踪号:</el-row>
<el-input v-model="tid" :disabled="true" style="width: 80px;" />
</el-col>
</el-row>
<hr style="height:1px;border:none;border-top:1px solid #555555;width: 492px; position: absolute;left: 3px; margin-top: 0">
<el-row style="padding: 10px 0;text-align: center;">
<el-row>
<span style="color: #000;">列车模式</span>
</el-row>
<el-row>
<el-radio v-model="requestMode" :label="true">自动</el-radio>
</el-row>
<el-row>
<el-radio v-model="requestMode" :label="false">人工</el-radio>
</el-row>
</el-row>
<el-row style="padding: 20px 0;">
<el-input
v-model="textarea"
type="textarea"
:rows="3"
placeholder="请输入内容"
/>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="20" :offset="2">
<el-button :id="domIdConfirm" style="margin-right: 50px;" @click="commit">确定</el-button>
<el-button :id="domIdCancel" style="margin-right: 50px;" @click="cancel">取消</el-button>
<el-button>帮助</el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { mapGetters } from 'vuex';
export default {
name: 'ChangeTID',
data() {
return {
groupNumber: '',
newGroupNumber: '',
tid: '',
newTid: '',
textarea: '',
loading: false,
dialogShow: false,
operate: {},
requestMode: null
};
},
computed: {
...mapGetters('map', [
'stationList',
'mapConfig'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.updateIdleRunningMode.confirm.domId : '';
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Train.updateIdleRunningMode.choose.domId : '';
},
title() {
return '更改列车模式';
}
},
methods: {
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
doShow(step, selected ) {
this.dialogShow = true;
this.selected = selected;
this.groupNumber = selected.code;
this.tid = selected.tripNumber;
this.operate = step;
},
cancel() {
this.doClose();
},
commit() {
}
}
};
</script>
<style lang="scss" scoped>
.transfer_header {
text-align: center;
color: #000;
font-size: 16px;
}
.transfer_body {
height: 180px;
/*overflow-y: scroll;*/
border-top: 2px solid #2F4F50;
border-left: 2px solid #2F4F50;
border-bottom: 2px solid #B7D4D5;
border-right: 2px solid #B7D4D5;
text-align: center;
font-size: 16px;
color: #000;
}
</style>

View File

@ -1,40 +1,38 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system train-set-head"
class="xian-02__system train-runLevel"
:title="title"
:visible.sync="show"
width="360px"
width="760px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="11">车组号</el-col>
<el-col :span="11" :offset="2">服务号</el-col>
<el-row style="border-bottom: 1px solid #a9a9a9; padding-bottom: 10px;">
<el-col :span="7" :offset="3">车体号: <el-input v-model="addModel.groupNumber" style="width: 80px;" /></el-col>
<el-col :span="7" :offset="2">追踪号: <el-input v-model="addModel.groupNumber" style="width: 80px;" /></el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-input :id="domIdInput" v-model="addModel.groupNumber" size="mini" @change="inputGroupNumber" />
</el-col>
<el-col :span="11" :offset="2">
<el-input :id="domIdInput" v-model="addModel.serialNumber" size="mini" @change="inputGroupNumber" />
</el-col>
</el-row>
<el-row>
<el-col :span="12">目的地号</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-input v-model="addModel.targetCode" size="mini" />
<el-col :span="7" :offset="3">实际的运行等级 <el-input v-model="addModel.groupNumber" style="width: 80px;" /></el-col>
</el-row>
<el-row>
<el-col :span="15" :offset="2">请求运行等级</el-col>
</el-row>
<el-row style="margin-bottom: 30px;">
<el-radio-group v-model="addModel.runLevel" class="train-run-level-radio_box">
<el-col v-for="item in optionsList" :key="item.value" :span="20" :offset="4" style="margin-bottom: 5px;">
<el-radio :label="item.value">{{ item.label }}</el-radio>
</el-col>
</el-radio-group>
</el-row>
<el-row class="option_result_box" />
<el-row justify="center" class="button-group">
<el-col :span="10">
<el-col :span="3" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="5">
<el-col :span="3" :offset="5">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
@ -43,12 +41,11 @@
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'TrainSetHead',
name: 'TrainMove',
components: {
NoticeInfo
},
@ -57,32 +54,38 @@ export default {
trainNoList: [],
selected: null,
addModel: {
stationName: '',
trainWindowCode: '',
groupNumber: '',
targetCode: '',
serialNumber: ''
runLevel: '2'
},
optionsList: [
{ label: '1 - 最大速度', value: 1 },
{ label: '2 - 正常运行', value: 2 },
{ label: '3 - 减速 - 80% 低于最大值', value: 3 },
{ label: '4 - 减速 - 70% 低于最大值', value: 4 },
{ label: '5 - 节能', value: 5 },
{ label: '6 - 提高停车精度', value: 6 },
{ label: '7 - 30 Km/h 限速', value: 7 },
{ label: '8 - 15 Km/h 限速', value: 8 },
{ label: '9 - 5 Km/h 限速', value: 9 }
],
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdInput() {
return this.dialogShow ? OperationEvent.Train.editTrainId.input.domId : '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.editTrainId.menu.domId : '';
return this.dialogShow ? OperationEvent.Train.deleteDestinationTrainId.menu.domId : '';
},
title() {
return '设置头码车';
return '更改运行等级';
}
},
mounted() {
@ -115,29 +118,16 @@ export default {
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
},
inputGroupNumber() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.input.operation,
val: this.addModel.groupNumber
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
commit() {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.menu.operation,
operation: OperationEvent.Train.deleteDestinationTrainId.menu.operation,
cmdType: '',
val: this.addModel.groupNumber
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
@ -145,16 +135,14 @@ export default {
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate);
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
@ -164,16 +152,29 @@ export default {
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ .el-row {
/deep/ {
.el-dialog .el-dialog__body{
padding: 0!important;
}
.el-row {
margin: 10px
}
}
.xian-02__system .el-dialog .base-label {
// background: rgba(0, 0, 0, x);
background: rgba(0, 0, 0, 0.3);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
.option_result_box{
padding: 4px;
color: #191919;
height: 90px;
overflow: hidden;
border-color: #3e6d67 #9ABFB2 #9ABFB2 #3e6d67;
border-width: 2px;
border-style: solid;
}
</style>

View File

@ -1,172 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system train-set-plan"
:title="title"
:visible.sync="show"
width="360px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="11">车组号</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-input v-model="addModel.groupNumber" size="mini" />
</el-col>
</el-row>
<el-row>
<el-col :span="11">服务号</el-col>
<el-col :span="11" :offset="2">序列号</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-input v-model="addModel.serialNumber" size="mini" />
</el-col>
<el-col :span="11" :offset="2">
<el-input :id="domIdInput" v-model="addModel.tripNumber" size="mini" @change="inputGroupNumber" />
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="10">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="5">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="xian-02__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'TrainSetPlan',
components: {
NoticeInfo
},
data() {
return {
trainNoList: [],
selected: null,
addModel: {
groupNumber: '',
tripNumber: '',
serialNumber: ''
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdInput() {
return this.dialogShow ? OperationEvent.Train.editTrainId.input.domId : '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.editTrainId.menu.domId : '';
},
title() {
return '设置计划车';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
// if (!this.dialogShow) {
// }
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);
},
inputGroupNumber() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.input.operation,
val: this.addModel.tripNumber
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
commit() {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.menu.operation,
val: this.addModel.tripNumber
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate);
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ .el-row {
margin: 10px
}
.xian-02__system .el-dialog .base-label {
// background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -1,163 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system train-set-work"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="6" style="line-height: 44px;">车组号:</el-col>
<el-col :span="18">
<el-input :id="domIdInput" v-model="addModel.groupNumber" size="mini" @change="inputGroupNumber" />
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="10">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="5">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="xian-02__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'TrainSetWork',
components: {
NoticeInfo
},
data() {
return {
trainNoList: [],
selected: null,
addModel: {
groupNumber: ''
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdInput() {
return this.dialogShow ? OperationEvent.Train.editTrainId.input.domId : '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.editTrainId.menu.domId : '';
},
title() {
return '设置人工车';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
const section = this.$store.getters['map/getDeviceByCode'](selected.sectionCode);
if (section) {
const station = this.$store.getters['map/getDeviceByCode'](section.stationCode);
if (station) {
this.addModel.stationName = station.name;
}
}
this.addModel.trainWindowCode = selected.code;
}
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);
},
inputGroupNumber() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.input.operation,
val: this.addModel.tripNumber
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
commit() {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.menu.operation,
val: this.addModel.tripNumber
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate);
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ .el-row {
margin: 10px
}
.xian-02__system .el-dialog .base-label {
// background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -1,174 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system train-set-work"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="6">车组号:</el-col>
</el-row>
<el-row>
<el-col :span="18">
<el-input :id="domIdInput" v-model="addModel.groupNumber" size="mini" @change="inputGroupNumber" />
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-radio v-model="radio" label="01">标记ATP切除</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio v-model="radio" label="02">标记APT恢复</el-radio>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="10">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="5">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="xian-02__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'TrainSetWork',
components: {
NoticeInfo
},
data() {
return {
trainNoList: [],
selected: null,
addModel: {
groupNumber: ''
},
radio: '01',
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdInput() {
return this.dialogShow ? OperationEvent.Train.editTrainId.input.domId : '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.editTrainId.menu.domId : '';
},
title() {
return 'ATP切除功能';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
const section = this.$store.getters['map/getDeviceByCode'](selected.sectionCode);
if (section) {
const station = this.$store.getters['map/getDeviceByCode'](section.stationCode);
if (station) {
this.addModel.stationName = station.name;
}
}
this.addModel.trainWindowCode = selected.code;
}
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);
},
inputGroupNumber() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.input.operation,
val: this.addModel.tripNumber
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
commit() {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.menu.operation,
val: this.addModel.tripNumber
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate);
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ .el-row {
margin: 10px
}
.xian-02__system .el-dialog .base-label {
// background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -0,0 +1,224 @@
<template>
<el-dialog
v-dialogDrag
class="xian-02__system train-updatePlan"
:title="title"
:visible.sync="show"
width="760px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="9" :offset="2">车体号: <el-input v-model="addModel.groupNumber" style="width: 80px;" /></el-col>
<el-col :span="9" :offset="4">追踪号: <el-input v-model="addModel.groupNumber" style="width: 80px;" /></el-col>
</el-row>
<div style="border-top: 1px solid #41615B; border-bottom: 1px solid #99BDB0;" />
<el-row style="margin: 0; margin-top: 10px;">
<el-col :span="11">
<div>
<span class="option_content">Platform Stop</span>
<span class="option_content">Planned Arrival</span>
<span class="option_content">Scheduled Arrival</span>
</div>
</el-col>
<el-col :span="11" :offset="2">
<div>
<span class="option_content">Platform Stop</span>
<span class="option_content">Planned Arrival</span>
<span class="option_content">Scheduled Arrival</span>
</div>
</el-col>
</el-row>
<el-transfer v-model="value" :data="dataList">
<div slot-scope="{ option }">
<span class="option_content">{{ option.name }}</span>
<span class="option_content">{{ option.planned }}</span>
<span class="option_content">{{ option.scheduled }}</span>
</div>
</el-transfer>
<el-row>
<el-col :span="4" :offset="10"><el-button type="primary" style="margin: 0 auto; display: table;" @click="restoration">复位</el-button></el-col>
</el-row>
<el-row class="option_result_box" />
<el-row justify="center" class="button-group">
<el-col :span="3" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="3" :offset="5">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="xian-02__systerm" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'TrainMove',
components: {
NoticeInfo
},
data() {
return {
trainNoList: [],
selected: null,
addModel: {
stationName: '',
trainWindowCode: '',
groupNumber: ''
},
dialogShow: false,
loading: false,
dataList: [
{ key: 1, name: `NJS2`, planned: '00:57:12', scheduled: '' },
{ key: 2, name: `SGS2`, planned: '00:59:02', scheduled: '' },
{ key: 3, name: `HXS2`, planned: '01:01:18', scheduled: '' },
{ key: 4, name: `JHS2`, planned: '01:03:00', scheduled: '' },
{ key: 5, name: `TSS2`, planned: '01:04:45', scheduled: '' },
{ key: 6, name: `LMS2`, planned: '01:06:58', scheduled: '' },
{ key: 7, name: `WMS2`, planned: '01:08:50', scheduled: '' },
{ key: 8, name: `RNS2`, planned: '01:11:01', scheduled: '' },
{ key: 9, name: `LMS2`, planned: '01:06:58', scheduled: '' },
{ key: 10, name: `WMS2`, planned: '01:08:50', scheduled: '' }
],
value: []
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.deleteDestinationTrainId.menu.domId : '';
},
title() {
return '删除ID';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
const section = this.$store.getters['map/getDeviceByCode'](selected.sectionCode);
if (section) {
const station = this.$store.getters['map/getDeviceByCode'](section.stationCode);
if (station) {
this.addModel.stationName = station.name;
}
}
this.addModel.trainWindowCode = selected.code;
}
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);
},
restoration() {
this.value = [];
},
commit() {
const operate = {
send: true,
operation: OperationEvent.Train.deleteDestinationTrainId.menu.operation,
cmdType: '',
val: this.addModel.groupNumber
};
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
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ {
.el-dialog .el-dialog__body{
padding: 0!important;
}
.el-row {
margin: 10px
}
}
.xian-02__system .el-dialog .base-label {
background: rgba(0, 0, 0, 0.3);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
.option_box{
border-color: #3e6d67 #9ABFB2 #9ABFB2 #3e6d67;
border-width: 2px;
border-style: solid;
padding: 4px;
color: #191919;
height: 155px;
overflow: auto;
margin-bottom: 20px;
.content_list{
cursor: pointer;
&:hover{
background: #000004;
color: #73877E;
}
}
}
.option_result_box{
border-color: #3e6d67 #9ABFB2 #9ABFB2 #3e6d67;
border-width: 2px;
border-style: solid;
padding: 4px;
color: #191919;
height: 90px;
overflow: hidden;
}
.option_content{
width: 33%;
display: block;
float: left;
height: 22px;
line-height: 22px;
}
</style>

View File

@ -458,10 +458,14 @@ export default {
background: #d5ecf7;
}
.xian-02__system .el-select .el-input__suffix {
top: 5px;
display: flex;
justify-self: center;
align-items: center;
}
.xian-02__system .el-select .is-focus .el-input__suffix {
top: -5px;
display: flex;
justify-self: center;
align-items: center;
}
.xian-02__system .el-scrollbar__thumb {
border-style:solid;
@ -469,4 +473,82 @@ export default {
border-color: #335658 #99C1C3 #99C1C3 #335658;
background: #518E86;
}
.xian-02__system.train-updatePlan .el-dialog__body,
.xian-02__system.train-alertor .el-dialog__body,
.xian-02__system.train-runLevel .el-dialog__body {
color: #000!important;
}
.xian-02__system.train-runLevel .train-run-level-radio_box .el-radio__inner{
border-radius: 0;
transform: rotate(45deg);
width: 12px;
border: none!important;
height: 12px;
background: #508F86;
border-color: #9ABFB2 #284743 #284743 #9ABFB2 !important;
border-width: 2px!important;
border-style: solid!important;
}
.xian-02__system.train-runLevel .train-run-level-radio_box .is-checked .el-radio__inner{
background: #DEF003!important;
border-color: #284743 #9ABFB2 #9ABFB2 #284743 !important;
border-width: 2px!important;
border-style: solid!important;
}
.xian-02__system.train-runLevel .train-run-level-radio_box .is-checked .el-radio__inner::after{
width: 0px!important;
height: 0px!important;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer-panel {
width: 45%;
float: left;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer{
overflow: hidden;
height: 190px;
padding: 10px;
padding-top: 0;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer__buttons {
width: 10%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
float: left;
padding: 0;
height: 100%;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer__buttons .el-button {
margin: 0;
margin-bottom: 10px;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer-panel .el-transfer-panel__header {
height: 0;
overflow: hidden;
border: 0;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer-panel__item .el-checkbox__input {
display: none;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer-panel .el-transfer-panel__list,
.xian-02__system.train-updatePlan .el-dialog .el-transfer-panel .el-transfer-panel__body{
height: 165px;
overflow: auto;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer-panel__item.is-checked {
background: gray;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer-panel__list {
overflow: auto;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer-panel__item{
width: 100%;
margin: 0;
padding-left: 3px;
height: 22px;
}
.xian-02__system.train-updatePlan .el-dialog .el-transfer-panel__item .el-checkbox__label {
padding: 0;
}
</style>

View File

@ -90,23 +90,23 @@ export default {
}
]
},
{
label: '折返模式',
children: [
{
label: '优先折返',
handler: this.setPriorityStrategy
},
{
label: '直线折返',
handler: this.setLineStrategy
},
{
label: '侧线折返',
handler: this.setLateralStrategy
}
]
},
// {
// label: '',
// children: [
// {
// label: '',
// handler: this.setPriorityStrategy
// },
// {
// label: '线',
// handler: this.setLineStrategy
// },
// {
// label: '线',
// handler: this.setLateralStrategy
// }
// ]
// },
{
label: '设备标签',
children: [
@ -184,7 +184,28 @@ export default {
};
},
initMenu() {
this.menu = this.menuNormal.Center;
this.menu = [];
this.menu = [...this.menuNormal.Center];
if (this.selected.reentry) {
const menuAdd = {
label: '折返模式',
children: [
{
label: '优先折返',
handler: this.setPriorityStrategy
},
{
label: '直线折返',
handler: this.setLineStrategy
},
{
label: '侧线折返',
handler: this.setLateralStrategy
}
]
};
this.menu.splice(3, 0, menuAdd);
}
//
if (this.operatemode === OperateMode.FAULT) {
this.menu = [...this.menuForce];
@ -288,9 +309,9 @@ export default {
return each.label == type;
});
if (strategy) {
commitOperate(menuOperate.StationControl.setBackStrategy, {stationCode: this.selected.stationCode, id:strategy.id}, 3).then(({valid, operate})=>{
commitOperate(menuOperate.StationControl.setBackStrategy, {stationCode: this.selected.code, id:strategy.id}, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow({}, error.message);
this.$refs.noticeInfo.doShow(error.message);
});
}
}

View File

@ -2,14 +2,15 @@
<div>
<pop-menu ref="popMenu" :menu="menu" :tip-msg="topTip" :tip-subhead="tipSubhead" pop-class="xian-02__pop_tip_station" />
<notice-info ref="noticeInfo" pop-class="xian-02__system" />
<train-delete ref="trainDelete" />
<train-define ref="trainDefine" />
<train-move ref="trainMove" />
<train-set-plan ref="trainSetPlan" />
<train-set-head ref="trainSetHead" />
<train-set-work ref="trainSetWork" />
<trainSetWorkATP ref="trainSetWorkATP" />
<train-destination ref="trainDestination" />
<train-del-destination ref="trainDelDestination" />
<train-run-level ref="trainRunLevel" />
<train-alertor ref="trainAlertor" />
<train-update-plan ref="trainUpdatePlan" />
<change-tid ref="changeTid" />
<idle-running-mode ref="idleRunningMode" />
<train-mode ref="trainMode" />
<train-detail ref="trainDetail" />
<set-fault ref="setFault" pop-class="xian-02__system" />
</div>
</template>
@ -18,19 +19,19 @@
import PopMenu from '@/components/PopMenu/index';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import TrainDelete from './dialog/trainDelete';
import TrainDefine from './dialog/trainDefine';
import TrainMove from './dialog/trainMove';
import TrainSetPlan from './dialog/trainSetPlan';
import TrainSetHead from './dialog/trainSetHead';
import TrainSetWork from './dialog/trainSetWork';
import trainSetWorkATP from './dialog/trainSetWorkATP';
import TrainDestination from './dialog/trainDestination';
import ChangeTid from './dialog/changeTID';
import TrainDelDestination from './dialog/trainDelDestination';
import TrainRunLevel from './dialog/trainRunLevel';
import TrainAlertor from './dialog/trainAlertor';
import TrainUpdatePlan from './dialog/trainUpdatePlan';
import IdleRunningMode from './dialog/idleRunningMode';
import TrainMode from './dialog/trainMode';
import TrainDetail from './dialog/trainDetail';
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
// import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { menuOperate, commitOperate, commitTrainSend } from '@/jmapNew/theme/components/utils/menuOperate';
@ -39,15 +40,16 @@ export default {
components: {
PopMenu,
NoticeInfo,
TrainDelete,
TrainDefine,
TrainMove,
TrainSetPlan,
TrainSetHead,
TrainSetWork,
trainSetWorkATP,
TrainDestination,
SetFault
TrainDelDestination,
ChangeTid,
SetFault,
TrainRunLevel,
TrainAlertor,
TrainUpdatePlan,
IdleRunningMode,
TrainMode,
TrainDetail
},
props: {
selected: {
@ -72,37 +74,36 @@ export default {
{
label: '目的地ID',
handler: this.updateDestination,
// handler: this.undeveloped,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
},
{
label: '删除ID',
handler: this.undeveloped,
handler: this.deletDestionation,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
},
{
label: '更改追踪号',
handler: this.undeveloped,
handler: this.updateTid,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
},
{
label: '交换追踪号',
handler: this.undeveloped,
handler: this.switchTid,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
},
{
label: '运行等级',
handler: this.undeveloped,
handler: this.handleRunLevel,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
},
{
label: '列车模式',
handler: this.undeveloped,
handler: this.setTrainMode,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
},
{
label: '惰性模式',
handler: this.undeveloped,
handler: this.setIdleRunningMode,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
},
{
@ -114,7 +115,7 @@ export default {
},
{
label: '列车明细',
handler: this.undeveloped,
handler: this.getTrainDetail,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
},
{
@ -197,14 +198,14 @@ export default {
children: [
{
label: '完整性报警确认',
handler: this.undeveloped,
handler: this.trainAlertor,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
}
]
},
{
label: '更新列车计划',
handler: this.undeveloped,
handler: this.updateTrainPlan,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
},
{
@ -328,10 +329,6 @@ export default {
});
},
nextStation() {
// commitOperate(menuOperate.Train.nextStation, { code: this.selected.code }, 3).then(({valid, operate})=>{
// }).catch((error) => {
// this.$refs.noticeInfo.doShow(error.message);
// });
const group = this.$route.query.group;
const param = {
commandType: 'Drive_Ahead',
@ -344,10 +341,6 @@ export default {
});
},
routeBlockRun() {
// commitOperate(menuOperate.Train.routeBlockRun, { code: this.selected.code }, 3).then(({valid, operate})=>{
// }).catch((error) => {
// this.$refs.noticeInfo.doShow(error.message);
// });
const group = this.$route.query.group;
const param = {
commandType: 'Route_Block_Drive',
@ -409,143 +402,6 @@ export default {
}
});
},
//
addTrainId() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.addTrainId.menu.operation,
param: {
sectionCode: this.$store.state.map.trainWindowSectionCode
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainDefine.doShow(operate, this.selected);
}
});
},
//
delTrainId() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.delTrainId.menu.operation,
param: {
sectionCode: this.$store.state.map.trainWindowSectionCode
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainDelete.doShow(operate, this.selected);
}
});
},
//
moveTrainId() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.moveTrainId.menu.operation,
param: {
sectionCode: this.$store.state.map.trainWindowSectionCode
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainMove.doShow(operate, this.selected);
}
});
},
//
setPlanTrain() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.editTrainId.menu.operation,
param: {
sectionCode: this.$store.state.map.trainWindowSectionCode
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainSetPlan.doShow(operate, this.selected);
}
});
},
//
setHeadTrain() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.editTrainId.menu.operation,
param: {
sectionCode: this.$store.state.map.trainWindowSectionCode
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainSetHead.doShow(operate, this.selected);
}
});
},
//
setWorkTrain() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.editTrainId.menu.operation,
param: {
sectionCode: this.$store.state.map.trainWindowSectionCode
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainSetWork.doShow(operate, this.selected);
}
});
},
// ATP
setTrainATPdel() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.editTrainId.menu.operation,
param: {
sectionCode: this.$store.state.map.trainWindowSectionCode
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainSetWorkATP.doShow(operate, this.selected);
}
});
},
// ATP
setTrainATPRec() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.editTrainId.menu.operation,
param: {
sectionCode: this.$store.state.map.trainWindowSectionCode
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainSetWorkATP.doShow(operate, this.selected);
}
});
},
updateDestination() {
const operate = {
start: true,
@ -562,6 +418,153 @@ export default {
this.doClose();
}
});
},
updateTid() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.editTrainId.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.changeTid.doShow(operate, this.selected);
}
});
},
switchTid() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.switchTrainId.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.changeTid.doShow(operate, this.selected);
}
});
},
deletDestionation() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.deleteDestinationTrainId.menu.operation,
param: {
trainCode: this.selected.code
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) =>{
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', {break: true});
this.$refs.trainDelDestination.doShow(operate, this.selected);
this.doClose();
}
});
},
handleRunLevel() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.deleteDestinationTrainId.menu.operation,
param: {
trainCode: this.selected.code
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) =>{
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', {break: true});
this.$refs.trainRunLevel.doShow(operate, this.selected);
this.doClose();
}
});
},
//
trainAlertor() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.deleteDestinationTrainId.menu.operation,
param: {
trainCode: this.selected.code
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) =>{
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', {break: true});
this.$refs.trainAlertor.doShow(operate, this.selected);
this.doClose();
}
});
},
//
updateTrainPlan() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Train.deleteDestinationTrainId.menu.operation,
param: {
trainCode: this.selected.code
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) =>{
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', {break: true});
this.$refs.trainUpdatePlan.doShow(operate, this.selected);
this.doClose();
}
});
},
setIdleRunningMode() {
const operate = {
start: true,
code: this.selected.code,
operation: '',
param: {
trainCode: this.selected.code
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.idleRunningMode.doShow(operate, this.selected);
this.doClose();
}
});
},
setTrainMode() {
const operate = {
start: true,
code: this.selected.code,
operation: '',
param: {
trainCode: this.selected.code
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainMode.doShow(operate, this.selected);
this.doClose();
}
});
},
getTrainDetail() {
const operate = {
start: true,
code: this.selected.code,
operation: '',
param: {
trainCode: this.selected.code
}
};
this.$store.dispatch('training/nextNew', operate).then(({valid}) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainDetail.doShow(operate, this.selected);
this.doClose();
}
});
}
}
};

View File

@ -204,7 +204,8 @@ export default {
Station: {enlabel: 'Station training', label:'车站实训'},
ControlConvertMenu: {enlabel: 'Control mode training', label:'控制模式实训'},
LimitControl: {enlabel: 'Control mode limit', label:'全线限速实训'},
TrainWindow: {enlabel: 'TrainWindow training', label:'车次窗实训'}
TrainWindow: {enlabel: 'TrainWindow training', label:'车次窗实训'},
Driver:{enlabel: 'Driver training', label:'司机实训'}
},
interfaceErrorConfig: {
'500000': { type: '权限错误:', message: '您尚未有该操作权限!'},

View File

@ -641,6 +641,10 @@ export const OperationEvent = {
confirm: {
operation: '2023',
domId: '_Tips-Control-Request-Confirm'
},
menuButton: {
operation: '2024',
domId: '_Tips-Control-Request-Menu{BOTTOM}'
}
},
// 强行站控
@ -687,6 +691,10 @@ export const OperationEvent = {
confirm: {
operation: '2043',
domId: '_Tips-Control-Central-Confirm'
},
menuButton: {
operation: '2044',
domId: '_Tips-Control-Central-Menu{BOTTOM}'
}
},
// 控制模式应答同意
@ -1056,6 +1064,24 @@ export const OperationEvent = {
confirm: {
operation: '3181',
domId: '_Tips-Signal-cancelGuide-Confirm'
},
menuButton: {
operation: '3182',
domId: '_Tips-Signal-cancelGuide-Menu{BOTTOM}'
}
},
// 联锁进路
interlockRoute:{
menuButton: {
operation: '3191',
domId: '_Tips-Signal-interlockRoute-Menu{BOTTOM}'
}
},
// 取消联锁
cancelinterlock:{
menuButton: {
operation: '3201',
domId: '_Tips-Signal-cancelinterlock-Menu{BOTTOM}'
}
}
},
@ -1739,6 +1765,10 @@ export const OperationEvent = {
menu: {
operation: '601',
domId: '_Tips-Station-SetAutoTrigger-Menu'
},
menuButton: {
operation: '6011',
domId: '_Tips-Station-SetAutoTrigger-Menu{BOTTOM}'
}
},
// 全站取消联锁自动触发
@ -1746,6 +1776,10 @@ export const OperationEvent = {
menu: {
operation: '602',
domId: '_Tips-Station-CancelAutoTrigger-Menu'
},
menuButton: {
operation: '6021',
domId: '_Tips-Station-CancelAutoTrigger-Menu{BOTTOM}'
}
},
// 上电解锁
@ -1807,6 +1841,10 @@ export const OperationEvent = {
menu: {
operation: '605',
domId: '_Tips-Station-HumanControlALL-Menu'
},
menuButton: {
operation: '6051',
domId: '_Tips-Station-HumanControlALL-Menu{BOTTOM}'
}
},
// 所有进路自排开
@ -1814,6 +1852,10 @@ export const OperationEvent = {
menu: {
operation: '606',
domId: '_Tips-Station-AtsAutoControlALL-Menu'
},
menuButton: {
operation: '6061',
domId: '_Tips-Station-AtsAutoControlALL-Menu{BOTTOM}'
}
},
split: {
@ -1866,6 +1908,7 @@ export const OperationEvent = {
domId: '_Tips-Station-setBackStrategy-confirm'
}
},
// 关站信号
closeAllSignal: {
menu: {
operation: '611',
@ -1882,6 +1925,10 @@ export const OperationEvent = {
confirm: {
operation: '6113',
domId: '_Tips-Station-closeAllSignal-confirm'
},
menuButton: {
operation: '6114',
domId: '_Tips-Station-closeAllSignal-menu{BOTTOM}'
}
},
ciAreaCloseAllSignal: {
@ -1900,6 +1947,10 @@ export const OperationEvent = {
confirm: {
operation: '6123',
domId: '_Tips-Station-ciAreaCloseAllSignal-Confirm'
},
menuButton: {
operation: '6124',
domId: '_Tips-Station-ciAreaCloseAllSignal-menu{BOTTOM}'
}
}
},
@ -2181,6 +2232,28 @@ export const OperationEvent = {
operation: '70h',
domId: '_Tip-Train_routeBlockRun-Menu'
}
},
// 删除目的ID
deleteDestinationTrainId: {
menu: {
operation: '70i',
domId: '_Tips-Train-deleteDestinationTrainId-Menu'
}
},
// 更改惰行模式
updateIdleRunningMode: {
menu: {
operation: '70j',
domId: '_Tips-Train-updateIdleRunningMode-Menu'
},
confirm: {
operation: '70j1',
domId: '_Tips-Train-updateIdleRunningMode-Confirm'
},
choose: {
operation: '70j2',
domId: '_Tips-Train-updateIdleRunningMode-Choose'
}
}
},

View File

@ -288,7 +288,7 @@ export default {
if (this.$route.query.subSystem) {
this.$router.push({ path: `${UrlConfig.trainingPlatform.course}/${this.$route.query.subSystem}`, query: {lessonId: this.examDetails.lessonId}});
} else {
this.$router.push({ path: '/device/examDetail', query: {lessonId: this.examDetails.lessonId, noPreLogout: this.$route.query.noPreLogout}});
this.$router.push({ path: '/device/course', query: {lessonId: this.examDetails.lessonId, noPreLogout: this.$route.query.noPreLogout}});
}
}, 100);
}

View File

@ -0,0 +1,62 @@
<template>
<el-dialog v-dialogDrag title="切换地图" :visible.sync="dialogVisible" width="20%" center>
<el-select v-model="selectMapId" placeholder="请选择地图" style="width: 60%; position: relative; left: 20%;" @change="changeMap">
<el-option
v-for="item in projectMapList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirm">{{ $t('global.confirm') }}</el-button>
<el-button @click="dialogVisible = false">{{ $t('global.cancel') }}</el-button>
</span>
</el-dialog>
</template>
<script>
import { getMapListByProjectCode } from '@/api/jmap/map';
export default {
name:'ChangeMap',
data() {
return {
projectMapList:[],
dialogVisible: false,
selectMapId:'',
selectMapLineCode:''
};
},
mounted() {
const projectCode = 'DRTS';
getMapListByProjectCode(projectCode).then(res =>{
if (res.code === 200) {
const projectMapList = res.data;
projectMapList.forEach(element => {
this.projectMapList.push({id:element.id, lineCode:element.lineCode, name:element.name});
});
this.selectMapId = this.$route.query.mapId;
this.selectMapLineCode = this.$route.query.lineCode;
}
}).catch(error => { this.$message.error(error.msg); });
},
methods:{
doShow(row) {
this.dialogVisible = true;
},
confirm() {
this.dialogVisible = false;
const query = Object.assign({}, this.$route.query);
query.lineCode = this.selectMapLineCode;
query.mapId = this.selectMapId;
this.$emit('changeMap', query);
},
changeMap(mapId) {
const map = this.projectMapList.find(map=>{ return map.id == mapId; });
if (map) {
this.selectMapId = map.id;
this.selectMapLineCode = map.lineCode;
}
}
}
};
</script>

View File

@ -7,11 +7,8 @@
</transition>
<status-icon v-if="$route.query.lineCode == '11' || $route.query.lineCode == '10'" ref="statusIcon" />
<menu-demon v-if="isDemon" ref="menuDemon" :offset="offset" :offset-bottom="offsetBottom" :data-error="dataError" :text-status-height="textStatusHeight" />
<!-- ok -->
<menu-lesson v-if="isLesson" ref="lessonMenu" :offset="offset" :data-error="dataError" :offset-bottom="offsetBottom" :tip-bottom="tipBottom" />
<!-- ok -->
<menu-exam v-if="isExam" ref="menuExam" :offset="offset" :data-error="dataError" :offset-bottom="offsetBottom" />
<menu-script
v-if="isScript"
ref="menuScript"
@ -21,7 +18,6 @@
:text-status-height="textStatusHeight"
:data-error="dataError"
/>
<menu-practice
v-if="isPractice"
ref="menuPractice"
@ -29,16 +25,7 @@
:offset-bottom="offsetBottom"
:data-error="dataError"
/>
<!-- @showScheduling="showScheduling"
@schedulingView="schedulingView"
@hideScheduling="hideScheduling" -->
<!-- @devicemodel="devicemodel" -->
<!-- @jl3dstation="jl3dstation" -->
<!-- @quitQuest="quitQuest" -->
<!-- @passflow="passflow" -->
<!-- @hidepanel="hidepanel" -->
<!-- :is-script-run="isScriptRun" -->
<menu-dispather-contest v-if="isContest" ref="menuDispatherContest" :offset="offset" :offset-bottom="offsetBottom" :data-error="dataError" :text-status-height="textStatusHeight" />
</template>
<menu-train-list v-if="isDemon" @setCenter="setCenter" />
<menu-system-time ref="menuSystemTime" :offset="offset" :group="group" />
@ -52,11 +39,12 @@ import { timeFormat } from '@/utils/date';
import MapSystemDraft from '@/views/newMap/mapsystemNew/index';
import StatusIcon from '@/views/components/StatusIcon/statusIcon';
import MenuDemon from '@/views/newMap/displayNew/menuDemon';
import MenuExam from '@/views/newMap/displayNew/menuExam';
import MenuLesson from '@/views/newMap/displayNew/menuLesson';
import MenuExam from './exam/index';
import MenuLesson from './lesson/index';
import MenuTrainList from '@/views/newMap/displayNew/menuTrainList';
import MenuSystemTime from '@/views/newMap/displayNew/menuSystemTime';
import MenuScript from '@/views/newMap/displayNew/menuScript';
import MenuDispatherContest from './menuDispatherContest';
import { clearSimulation, getSimulationInfoNew } from '@/api/simulation';
import { loadNewMapDataByGroup } from '@/utils/loaddata';
import { EventBus } from '@/scripts/event-bus';
@ -70,6 +58,7 @@ export default {
MenuLesson,
MenuSystemTime,
MenuTrainList,
MenuDispatherContest,
MenuScript
},
data() {
@ -90,8 +79,14 @@ export default {
mode() {
return this.$route.params.mode;
},
project() {
return getSessionStorage('project');
},
isDemon() {
return this.mode === 'demon';
return this.mode === 'demon' && this.project != 'drts';
},
isContest() {
return this.mode === 'demon' && this.project == 'drts';
},
isExam() {
return this.mode === 'exam';
@ -113,9 +108,6 @@ export default {
},
height() {
return this.$store.state.app.height;
},
project() {
return getSessionStorage('project');
}
},
watch:{
@ -183,6 +175,7 @@ export default {
await this.$refs.menuScript.back();
}
},
//
setCenter(code) {
this.$jlmap.setCenter(code);
},

View File

@ -26,7 +26,7 @@
<script>
import { getTrainingDetailNew } from '@/api/jmap/training';
import TipTrainingDetail from './tipTrainingDetail';
import LeftSlider from '@/views/newMap/displayNew/LeftSlider';
import LeftSlider from './LeftSlider';
import { mapGetters } from 'vuex';
import { Notification } from 'element-ui';
import { startTrainingNew, endTrainingNew } from '@/api/jmap/training';
@ -156,17 +156,19 @@ export default {
//
this.$store.dispatch('menuOperation/setButtonOperation', null);
this.startLoading = true;
console.log(2222222222222, this.startLoading, this.started, this.trainingObj);
if (this.trainingObj && this.trainingObj.id) {
this.isDisable = true;
startTrainingNew(this.trainingObj, this.group).then(response => {
this.isDisable = true;
this.$store.dispatch('map/clearJlmapTrainView').then(() => {
this.$store.dispatch('training/teachModeStart', this.demoMode);
this.$store.dispatch('training/teachModeStart', this.demoMode).then(()=>{
this.$store.dispatch('training/countTime', 'Lesson'); //
this.$store.dispatch('training/setMapDefaultState').then(() => {
this.$store.dispatch('training/emitTipFresh');
this.tipInfo({ color: 'green', message: this.$t('global.pleaseOpearte') });
});
});
});
this.startLoading = false;
}).catch(() => {
this.isDisable = false;
@ -213,10 +215,21 @@ export default {
zIndex: 9999
}).then(() => {
this.backDisable = false;
const mode = {
mode: this.demoMode,
id: this.trainingObj.id,
lessonId: this.$route.query.lessonId,
usedTime: this.usedTime
};
endTrainingNew(mode, this.group).then(response => {
// const data = response.data;
this.$store.dispatch('training/end', null);
this.$store.dispatch('training/setStopCountTime');
this.$store.dispatch('training/setScore', 0);
this.$store.dispatch('training/emitTipFresh');
}).catch(() => {
this.$messageBox(this.$t('display.lesson.endTrainingError'));
});
}).catch(() => {
this.isDisable = true;
this.backDisable = false;

View File

@ -377,7 +377,7 @@ export default {
console.log(this.userRole, '11111111');
this.$store.dispatch('training/setPrdType', this.$route.query.prdType);
this.$store.dispatch('training/setRoles', userRole);
this.$store.dispatch('scriptRecord/updateSimulationPause', false);
// this.$store.dispatch('scriptRecord/updateSimulationPause', false);
},
clearAllData() {
this.$refs.chatbox.clearAllData();

View File

@ -0,0 +1,494 @@
<template>
<div>
<demon-chat ref="chatbox" :group="group" :user-role="userRole" :offset="offset" />
<div class="display-card" :style="{top: offset+'px'}">
<el-row>
<span v-if="countTime" class="display-score">{{ $t('display.demon.trialTime') }} {{ countTime }}</span>
</el-row>
</div>
<demon-menu
ref="demonMenu"
:is-all-show="!dataError"
:jl3dmodel-show="isShow3dmodel && !isShowScheduling"
:jl3dname-show="!isShowScheduling&&!isDrive"
:cctv-show="!isShowScheduling"
:schedule-load-show="isShowScheduling && !runing"
:schedule-preview-show="isShowScheduling && runing"
:jlmap3d-fault-show="false"
:driver-show="isDrive"
:all-style="'top:'+(offset+textStatusHeight)+'px'"
/>
<div class="display-draft" :class="{'haerbin_btn_box': $route.query.lineCode == '07'}" :style="{bottom: offsetBottom + 'px'}">
<el-button-group class="button-group-box">
<el-button type="primary" size="small" @click="back">退出</el-button>
<template v-if="!dataError">
<template v-if="isScriptRun">
<el-button type="danger" size="small" @click="handleQuitQuest">退出剧本</el-button>
</template>
<el-button type="danger" size="small" @click="end">{{ $t('display.demon.initialize') }}</el-button>
<el-button type="success" :disabled="isDisable" size="small" @click="selectBeginTime">{{ $t('display.demon.drivingByPlan') }}</el-button>
</template>
</el-button-group>
</div>
<menu-schema
ref="menuSchema"
:offset="offset"
:data-error="dataError"
:offset-bottom="offsetBottom"
@selectQuest="selectQuest"
@changeMap="changeMap"
/>
<!-- :station-list="stationListMode"
:show-select-station="showSelectStation"
@selectQuest="selectQuest"
@switchStationMode="switchStationMode"
@switchMode="switchMode" -->
<set-time ref="setTime" @ConfirmSelectBeginTime="start" />
</div>
</template>
<!-- 单人仿真 -->
<script>
import SetTime from './demon/setTime';
import DemonMenu from './demonMenu';
import DemonChat from './demonChat';
import { Notification } from 'element-ui';
import MenuSchema from '@/views/newMap/displayNew/menuSchema';
import { getGoodsTryUse } from '@/api/management/goods';
import { ranAsPlan, exitRunPlan, clearSimulation, getSimulationInfoNew } from '@/api/simulation';
import { PermissionType } from '@/scripts/ConstDic';
import { getCountTime } from '@/utils/index';
import { prefixIntrger } from '@/utils/date';
import { TrainingMode } from '@/scripts/ConstDic';
import { quitScriptNew } from '@/api/simulation';
import { setGoodsTryUse } from '@/api/management/goods';
import {loadScriptNew } from '@/api/simulation';
import { launchFullscreen } from '@/utils/screen';
import { createSimulationNew } from '@/api/simulation';
import Vue from 'vue';
export default {
name: 'MenuDemon',
components: {
SetTime,
DemonChat,
MenuSchema,
DemonMenu
},
props: {
offset: {
type: Number,
required: true
},
offsetBottom: {
type: Number,
required: true
},
dataError: {
type: Boolean,
default() {
return false;
}
},
textStatusHeight: {
type: Number,
default() {
return 0;
}
}
},
data() {
return {
isDisable: false,
tryTime: 0, //
timeNow: 0, //
time: null, //
countTime: 0, //
remainingTime: 0,
userRole:'AUDIENCE',
goodsId: this.$route.query.goodsId,
try: this.$route.query.try, //
training: {
id: '',
name: '',
remarks: ''
},
isScriptRun:false,
jl3dpassflow:this.$t('display.demon.passengerflow'),
jl3dname: this.$t('display.demon.threeDimensionalView'),
jl3dstation: this.$t('display.demon.threeDimensionalStation'),
jl3dmodel: this.$t('display.demon.deviceView'),
isShow3dmodel :false,
isGoback: false,
runing:false,
prdTypeMap: {
'01': '01', // =>
'02': '02', // =>
'04': '02', // =>
'05': '' // => null
}
};
},
computed: {
isShowScheduling() {
return this.$route.query.prdType == '05';
},
isDrive() {
return this.$route.query.prdType == '04';
},
group() {
return this.$route.query.group;
}
},
watch: {
'$store.state.training.subscribeCount': function () {
this.group && this.initLoadPage();
},
'$store.state.socket.simulationRoleList':function(val) {
(val || []).forEach(item => {
if (item.messageType === 'KICK_OUT' && item.userId == this.$store.state.user.id) {
!this.isGoback && this.back();
}
});
},
'$store.state.socket.simulationOver':function(val) {
!this.isGoback && this.back();
},
// '$store.state.training.started': function (val) {
// this.setRuning(val);
// },
'$store.state.socket.simulationStart':function(val) {
if (val) {
this.setRuning(true);
}
},
'$store.state.socket.simulationReset':function(val) {
this.setRuning(false);
},
'$store.state.map.mapViewLoadedCount': function (val) { //
const initTime = new Date(this.$store.state.training.initTime || null);
const model = {initTime:this.formatTime(initTime)};
this.start(model);
}
},
created() {
this.$store.dispatch('training/setPrdType', this.$route.query.prdType);
if (this.$store.state.training.prdType == '02') {
this.userRole = 'DISPATCHER';
} else if (this.$store.state.training.prdType == '01') {
this.userRole = 'STATION_SUPERVISOR';
} else if (this.$store.state.training.prdType == '04') {
this.userRole = 'DRIVER';
} else if (this.$store.state.training.prdType == '05') {
this.userRole = 'DEPOT_DISPATCHER';
} else {
this.userRole = 'AUDIENCE';
}
},
beforeDestroy() {
if (this.time) {
this.setTryTime();
clearTimeout(this.time);
}
this.$store.dispatch('scriptRecord/updateSimulationPause', false);
this.$store.dispatch('map/resetActiveTrainList', true);
},
mounted() {
this.$store.dispatch('training/end', TrainingMode.NORMAL);
this.$store.dispatch('training/setPrdType', this.prdTypeMap[this.$route.query.prdType]);
this.$nextTick(() => {
this.$refs.demonMenu.menuClick();
});
},
methods: {
async initLoadPage() {
try {
if (this.try != '0') {
this.loadInitData();
}
} catch (error) {
console.log(error);
}
},
formatTime(initTime) {
const hh = prefixIntrger(initTime.getHours(), 2);
const mm = prefixIntrger(initTime.getMinutes(), 2);
const ss = prefixIntrger(initTime.getSeconds(), 2);
return `${hh}:${mm}:${ss}`;
},
initPlannedDriving(isDisable) {
this.isDisable = isDisable;
},
loadInitData() {
const data = {
mapId: this.$route.query.mapId,
prdType: this.$route.query.prdType,
permissionType: PermissionType.SIMULATION
};
getGoodsTryUse(data).then(res => {
this.remainingTime = res.data.tryTime;
this.timeNow = Date.parse(new Date()) / 1000 + this.remainingTime;
if (this.try) {
this.time = setInterval(() => {
this.tryTime += 1;
this.countTime = getCountTime(this.timeNow);
if (this.countTime == -1) {
this.back();
}
}, 1000);
}
}).catch(() => {
this.$messageBox(this.$t('display.demon.getTimeFail'));
});
},
selectBeginTime() {
this.$refs.setTime.doShow();
},
changeMap(query) {
clearSimulation(this.group).then(res=>{
const data = { mapId: query.mapId, prdType: query.prdType };
createSimulationNew(data).then(resp => {
this.$store.dispatch('training/over');
this.$store.dispatch('training/reset');
this.$store.dispatch('map/mapClear');
this.$store.dispatch('training/setPrdType', this.currentPrdType); // prdType
query.group = resp.data;
this.$router.replace({query: query});
launchFullscreen();
}).catch(error => {
this.$messageBox(this.$t('error.createSimulationFailed') + error.message);
this.disabled = false;
});
});
},
start(model) { // 仿
this.isDisable = true;
const data = {
time: model.initTime
};
if (this.$route.query.prdType === '04') {
data.loadNumber = model.loadNum;
}
ranAsPlan(data, this.group).then(res => {
this.$store.dispatch('training/simulationStart').then(() => {
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${model.initTime}`));
this.$store.dispatch('map/setShowCentralizedStationNum');
});
}).catch(error => {
this.isDisable = false;
if (error.code == '5001') {
this.$messageBox(this.$t('error.mapDataError') + '' + this.$t('error.startSimulationFailed'));
} else if (error.code == '5002') {
this.$messageBox(this.$t('error.runningChartDataError') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '5003') {
this.$messageBox(this.$t('error.runningChartIsNotLoaded') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '5004') {
this.$messageBox(this.$t('error.runningDataError') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '5000') {
this.$messageBox(this.$t('error.systemError') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '4000') {
this.$messageBox(this.$t('error.simulationDoesNotExist') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '4001') {
this.$messageBox(this.$t('error.simulationOperationIsNotDefined') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '4002') {
this.$messageBox(this.$t('error.simulationOperationProcessingMethodNotFound') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '4003') {
this.$messageBox(this.$t('error.simulationOperationFailed') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '4004') {
this.$messageBox(this.$t('error.operationConflict') + ',' + this.$t('error.startSimulationFailed'));
} else {
this.$messageBox('按计划行车异常,请退出重试!');
}
});
},
setRuning(run) {
this.runing = run;
this.$refs.demonMenu.hideScheduling(run);
},
end() {
this.isDisable = false;
exitRunPlan(this.group).then(() => {
this.$store.dispatch('training/over').then(() => {
this.$store.dispatch('training/setMapDefaultState').then(() => {
this.$store.dispatch('map/resetActiveTrainList', false);
this.$store.dispatch('map/clearJlmapTrainView');
this.$store.dispatch('map/setTrainWindowShow', false);
});
});
}).catch(() => {
this.isDisable = true;
this.$messageBox(this.$t('display.demon.endSimulationFail'));
});
},
handleQuitQuest() {
quitScriptNew(this.group).then(resp => {
getSimulationInfoNew(this.group).then((res)=>{
this.quitQuest();
this.initLoadPage();
this.clearAllData();
this.$store.dispatch('scriptRecord/updateBgSet', false);
}).catch(()=>{
this.$messageBox(this.$t('display.demon.exitTaskFail'));
});
}).catch(() => {
this.$messageBox(this.$t('display.demon.exitTaskFail'));
});
},
//
async selectQuest({row, id, mapLocation, roleName}) {
try {
let userRole = 'AUDIENCE';
if (id) {
this.$store.dispatch('training/setPrdType', this.$route.query.prdType);
if (this.$route.query.prdType) {
if (this.$route.query.prdType == '02') {
userRole = 'DISPATCHER';
} else if (this.$route.query.prdType == '01') {
userRole = 'STATION_SUPERVISOR';
} else if (this.$route.query.prdType == '04') {
userRole = 'DRIVER';
} else if (this.$route.query.prdType == '05') {
userRole = 'DEPOT_DISPATCHER';
} else {
userRole = 'AUDIENCE';
}
}
this.$store.dispatch('training/setRoles', userRole);
} else {
this.$store.dispatch('training/setRoles', 'AUDIENCE');
this.$store.dispatch('training/setPrdType', '');
}
this.userRole = userRole;
this.$store.dispatch('scriptRecord/updateBgSet', true);
this.$refs.chatbox.setMembers(id);
const res = await loadScriptNew(row.id, id, this.group);
if (res && res.code == 200) {
if (mapLocation) {
const newMapLocation = {'offsetX': mapLocation.x, 'offsetY': mapLocation.y, 'scaleRate': mapLocation.scale};
Vue.prototype.$jlmap.setOptions(newMapLocation);
}
this.isScriptRun = true;
// this.initLoadPage();
}
} catch (error) {
this.$messageBox(error.message);
}
// if (this.isScript) {
// this.$refs.menuScript.initLoadPage();
// }
},
quitQuest() {
this.isScriptRun = false;
let userRole = '';
if (this.$route.query.prdType) {
if (this.$route.query.prdType == '02') {
userRole = 'DISPATCHER';
} else if (this.$route.query.prdType == '01') {
userRole = 'STATION_SUPERVISOR';
} else if (this.$route.query.prdType == '04') {
userRole = 'DRIVER';
} else if (this.$route.query.prdType == '05') {
userRole = 'DEPOT_DISPATCHER';
} else {
userRole = 'AUDIENCE';
}
}
this.userRole = userRole;
this.$refs.chatbox.setMembers(this.$store.state.training.orignalUserRoleId);
this.$refs.chatbox.clearAllData();
console.log(this.userRole, '11111111');
this.$store.dispatch('training/setPrdType', this.$route.query.prdType);
this.$store.dispatch('training/setRoles', userRole);
// this.$store.dispatch('scriptRecord/updateSimulationPause', false);
},
clearAllData() {
this.$refs.chatbox.clearAllData();
},
async back() {
this.isGoback = true;
this.$store.dispatch('training/over').then(() => {
this.$store.dispatch('LogOut').then(() => {
location.reload();
});
});
},
setTryTime() {
if (this.try) {
const data = { time: this.tryTime, goodsId: this.goodsId };
if (data.goodsId) {
setGoodsTryUse(data);
}
}
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import "src/styles/mixin.scss";
.display-card {
z-index: 9;
display: inline-block;
position: absolute;
top: 17px;
left: 160px;
height: 32px;
}
.display-card .el-row {
line-height: 32px !important;
}
.display-score {
background-color: black;
display: -moz-inline-box;
display: inline-block;
text-align: left;
height: 32px;
line-height: 24px;
border-radius: 4px;
padding-left: 2px;
margin-left: 10px;
font-family: "Microsoft" !important;
font-size: 18px !important;
color: #fff;
}
.haerbin_btn_box{
width: 450px;
bottom: 15px!important;
}
</style>
<style lang="scss">
.display-draft {
position: absolute;
right: 10px;
bottom: 15px;
button {
float: right!important;
}
.button-group-box{
float: right;
}
/deep/ .el-button-group>.el-button:last-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
/deep/ .el-button-group>.el-button:first-child{
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
border-right-color: transparent;
}
}
</style>

View File

@ -5,6 +5,7 @@
<template v-if="!dataError">
<el-button-group>
<el-button v-if="isScheduling && isDepot" size="small" type="primary" @click="runPlanEditShow">运行图编辑</el-button>
<el-button v-if="isContest && !isScheduling" size="small" :disabled="viewDisabled" type="primary" @click="viewChangeMap">切换地图</el-button>
<!-- 加载剧本 -->
<el-button v-if="isDemon && !isScheduling" size="small" :disabled="viewDisabled" type="success" @click="viewRunQuest">{{ $t('display.schema.loadScript') }}</el-button>
<!-- 运行图加载 -->
@ -16,12 +17,13 @@
<!-- <el-button v-if="!isLocalStation" size="small" :type="faultMode ? 'danger' : ''" @click="changeDirectiveMode()">指令模式</el-button> -->
</template>
</div>
<fault-choose v-if="isDemon || isScript" ref="faultChoose" :group="group" :offset="offset" />
<fault-choose ref="faultChoose" :group="group" :offset="offset" />
<run-plan-Load ref="runPlanLoad" :group="group" />
<run-plan-view ref="runPlanView" :group="group" />
<!-- 加载剧本列表弹窗 -->
<add-quest ref="addQuest" @selectQuest="selectQuest" />
<run-plan-edit v-if="isScheduling && isDepot" ref="runPlanEdit" />
<change-map v-if="isContest && !isScheduling" ref="changeMap" @changeMap="changeMap" />
</div>
</template>
<script>
@ -30,6 +32,7 @@ import RunPlanLoad from './demon/runPlanLoad';
import RunPlanView from './demon/runPlanView';
import FaultChoose from './demon/faultChoose';
import AddQuest from './demon/addQuest';
import ChangeMap from './changeMap';
import { OperateMode } from '@/scripts/ConstDic';
import { getByGroupStationList } from '@/api/jmap/map';
import RunPlanEdit from './demon/runPlanEdit';
@ -44,7 +47,8 @@ export default {
FaultChoose,
AddQuest,
RunPlanEdit,
SelectStation
SelectStation,
ChangeMap
},
props: {
offset: {
@ -79,6 +83,9 @@ export default {
isScript() {
return this.$route.params.mode === 'script';
},
isContest() {
return this.$route.params.mode === 'demon' && this.project == 'drts';
},
isDemon() {
return this.$route.params.mode === 'demon';
},
@ -166,6 +173,9 @@ export default {
// }
// this.$store.dispatch('training/changeOperateMode', { mode: mode });
// },
viewChangeMap() {
this.$refs.changeMap.doShow();
},
setFault() {
this.$refs.faultChoose.doShow();
},
@ -181,6 +191,9 @@ export default {
selectQuest(row, id, mapLocation, roleName) {
this.$emit('selectQuest', {row, id, mapLocation, roleName});
},
changeMap(query) {
this.$emit('changeMap', query);
},
switchModeInner(swch) {
let showMode = '03';
if (swch == '01') {

View File

@ -95,7 +95,7 @@ export default {
const device = this.$store.getters['map/getDeviceByCode'](member.deviceCode);
if (device) {
if (device._type == 'Train') {
member.deviceName = device.deviceCode;
member.deviceName = device.groupNumber;
member.label = member.type + device.groupNumber + name + userName;
lastMemberList.push(member);
if (this.activeTrainList.length > 0) {
@ -216,7 +216,8 @@ export default {
memberList.push(member);
} else {
const member = this.memberData.find(member=>{ return member.id == id; });
member.connect = false;
// member.connect = false;
member.connect = true;
member && memberList.push(member);
}
});

View File

@ -365,7 +365,6 @@ export default {
scriptRePreview(this.group).then(resp=>{
getSimulationInfoNew(this.group).then(()=>{
this.isscriptRun = false;
this.$store.dispatch('scriptRecord/updateSimulationPause', false);
this.$store.dispatch('scriptRecord/updateBgSet', false);
// this.userRole = '';
this.$store.dispatch('training/setRoles', '');

View File

@ -224,7 +224,8 @@ export default {
if (val.creatorId == id) {
memberList.push({memberId:id, connect:true});
} else {
memberList.push({memberId:id, connect:false});
// memberList.push({memberId:id, connect:false});
memberList.push({memberId:id, connect:true});
}
});
this.conversitionMemberList = memberList;
@ -580,13 +581,13 @@ export default {
}
this.cancelCommonConversation();
},
connectMember(val) {
this.conversitionMemberList.forEach(member => {
if (member.memberId == val.memberId) {
member.connect = true;
}
});
},
// connectMember(val) {
// this.conversitionMemberList.forEach(member => {
// if (member.memberId == val.memberId) {
// member.connect = true;
// }
// });
// },
sortByMessageTime(message1, message2) {
const time1 = new Date(message1.time).valueOf();
const time2 = new Date(message2.time).valueOf();

View File

@ -42,7 +42,7 @@ export default {
},
watch:{
'$store.state.socket.acceptConversionInvite':function(val) {
this.$emit('connectMember', val);
// this.$emit('connectMember', val);
}
},
mounted() {

View File

@ -38,6 +38,7 @@ export default {
methods: {
tipInit() {
this.$nextTick(() => {
console.log('tipInit',);
this.$store.dispatch('training/isTeachMode').then(() => {
this.tipShow = true;
const offset = this.$store.state.config.canvasOffset;

View File

@ -1,6 +1,6 @@
<template>
<div v-show="dialogVisible">
<el-dialog v-dialogDrag title="请确认联锁配置项" :visible.sync="dialogVisible" fullscreen :before-close="handleClose" center :close-on-click-modal="false" :z-index="2000">
<el-dialog v-dialogDrag title="请确认联锁配置项" :visible.sync="dialogVisible" fullscreen :before-close="handleClose" center :close-on-click-modal="false" :z-index="2000" append-to-body>
<div style="overflow-y: scroll;" :style="{height: height+ 'px'}">
<el-card style="margin-top: 10px">
<div slot="header" style="font-weight: bold;text-align: center;">

View File

@ -1,5 +1,5 @@
<template>
<el-dialog v-dialogDrag title="隐藏元素" :visible.sync="dialogTableVisible" class="view_box" width="460px" :before-close="doClose" :modal-append-to-body="false">
<el-dialog v-dialogDrag title="隐藏元素" :visible.sync="dialogTableVisible" class="view_box" width="460px" :before-close="doClose" :modal-append-to-body="false" append-to-body :modal="false">
<el-row type="flex" justify="center" class="content_box">
<el-form label-width="80px" class="demo-ruleForm">
<el-form-item :label="$t('map.contentShows')">

View File

@ -3,6 +3,7 @@
title="提示"
:visible.sync="dialogVisible"
width="30%"
append-to-body
>
<ul>
<li v-for="(item,index) in tipInfoList" :key="index">{{ item }}</li>

View File

@ -5,6 +5,7 @@
:visible.sync="visible"
width="400px"
:before-close="doClose"
append-to-body
>
<el-radio-group v-model="mode" class="radio-mode">
<el-radio label="01">{{ $t('map.create') }}</el-radio>

View File

@ -1,5 +1,5 @@
<template>
<el-dialog v-dialogDrag :title="isNew? $t('map.trainmodelCreate'): $t('map.trainmodelUpdate')" :visible.sync="dialogShow" width="30%" :before-close="doClose">
<el-dialog v-dialogDrag :title="isNew? $t('map.trainmodelCreate'): $t('map.trainmodelUpdate')" :visible.sync="dialogShow" width="30%" :before-close="doClose" append-to-body>
<el-card shadow="never">
<el-form
ref="form"

View File

@ -171,8 +171,10 @@ export default {
this.$store.dispatch('training/setRoles', 'DISPATCHER');
} else if (role.type == '司机') {
prdType = '04';
this.$store.dispatch('training/setRoles', 'DRIVER');
} else if (role.type == '通号') {
prdType = '';
this.$store.dispatch('training/setRoles', 'MAINTAINER');
const routeData = this.$router.resolve({
path:'/jlmap3d/maintainer',
query:{