大铁项目 ctc 行车日志 签收计划

This commit is contained in:
joylink_cuiweidong 2022-06-29 15:53:51 +08:00
parent ec5c6f5ff4
commit 6d6c7c3074
5 changed files with 233 additions and 13 deletions

View File

@ -42,13 +42,13 @@
</el-select>
</el-form-item>
<el-form-item label="到达车次:" prop="arriveTripNumber">
<el-input v-model="model.arriveTripNumber" style="width:160px" :disabled="model.endRunPlan" />
<el-input v-model="model.arriveTripNumber" style="width:160px" :disabled="model.startRunPlan" />
</el-form-item>
<el-form-item label="出发车次:" prop="departTripNumber" style="margin-left: 66px;">
<el-input v-model="model.departTripNumber" style="width:160px" :disabled="model.startRunPlan" />
<el-input v-model="model.departTripNumber" style="width:160px" :disabled="model.endRunPlan" />
</el-form-item>
<el-form-item label="接车口:" prop="arriveDirectionCode">
<el-select v-model="model.arriveDirectionCode" placeholder="" style="width:180px" :disabled="model.endRunPlan">
<el-select v-model="model.arriveDirectionCode" placeholder="" style="width:180px" :disabled="model.startRunPlan">
<el-option
v-for="item in mapStationDirectionList"
:key="item.code"
@ -58,7 +58,7 @@
</el-select>
</el-form-item>
<el-form-item label="发车口:" prop="departDirectionCode" style="margin-left:45px;">
<el-select v-model="model.departDirectionCode" placeholder="" style="width:180px" :disabled="model.startRunPlan">
<el-select v-model="model.departDirectionCode" placeholder="" style="width:180px" :disabled="model.endRunPlan">
<el-option
v-for="item in mapStationDirectionList"
:key="item.code"
@ -68,7 +68,7 @@
</el-select>
</el-form-item>
<el-form-item label="接车股道:" prop="arriveSectionCode">
<el-select v-model="model.arriveSectionCode" placeholder="" style="width:160px" :disabled="model.endRunPlan">
<el-select v-model="model.arriveSectionCode" placeholder="" style="width:160px" :disabled="model.startRunPlan">
<el-option
v-for="item in filterSectionList"
:key="item.code"
@ -78,7 +78,7 @@
</el-select>
</el-form-item>
<el-form-item label="发车股道:" prop="departSectionCode" style="margin-left: 67px;">
<el-select v-model="model.departSectionCode" placeholder="" style="width:160px" :disabled="model.startRunPlan">
<el-select v-model="model.departSectionCode" placeholder="" style="width:160px" :disabled="model.endRunPlan">
<el-option
v-for="item in filterSectionList"
:key="item.code"
@ -88,13 +88,13 @@
</el-select>
</el-form-item>
<el-form-item label="到达时间:" prop="arrivePlanTime">
<el-date-picker v-model="model.arrivePlanTime" type="datetime" :disabled="model.endRunPlan" value-format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" style="width:160px" />
<el-date-picker v-model="model.arrivePlanTime" type="datetime" :disabled="model.startRunPlan" value-format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" style="width:160px" />
</el-form-item>
<el-form-item label="" prop="startRunPlan" class="noMargin" style="margin-left:10px;">
<el-checkbox v-model="model.startRunPlan">始发</el-checkbox>
</el-form-item>
<el-form-item label="出发时间:" prop="departPlanTime" style="margin-left:10px;">
<el-date-picker v-model="model.departPlanTime" type="datetime" :disabled="model.startRunPlan" value-format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" style="width:160px" />
<el-date-picker v-model="model.departPlanTime" type="datetime" :disabled="model.endRunPlan" value-format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" style="width:160px" />
</el-form-item>
<el-form-item label="" prop="endRunPlan" class="noMargin" style="margin-left:10px;">
<el-checkbox v-model="model.endRunPlan">终到</el-checkbox>

View File

@ -0,0 +1,179 @@
<template>
<el-dialog
id="stageRunplanClass"
v-dialogDrag
class="chengdou-03__systerm"
:title="title"
:visible.sync="show"
width="945px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div>
<span>最近接受时间: {{ updateTime }}</span>
</div>
<el-table
id="stageRunplanLeftTable"
:data="tableData"
border
height="370"
style="width: 100%;border:1px #ccc solid"
>
<el-table-column
type="index"
label="序号"
width="70"
/>
<el-table-column
prop="arriveTripNumber"
label="到达车次"
width="100"
/>
<el-table-column
prop="departTripNumber"
label="出发车次"
width="100"
/>
<el-table-column
prop="status"
label="类型"
width="100"
>
<template slot-scope="scope">
<div v-if="scope.row.status==-1">删除</div>
<div v-else-if="scope.row.status==1">添加</div>
<div v-else-if="scope.row.status==0">变化</div>
</template>
</el-table-column>
<el-table-column
prop="arriveSectionCode"
label="到达股道"
width="100"
>
<template slot-scope="scope">
<div v-if="scope.row.status==-1">删除</div>
<div v-else-if="scope.row.arriveSectionCode">{{ scope.row.arriveSectionCode+'['+scope.row.oldArriveSectionCode+']' }}</div>
</template>
</el-table-column>
<el-table-column
prop="arrivePlanTime"
label="到达时间"
width="170"
>
<template slot-scope="scope">
<div v-if="scope.row.status==-1">删除</div>
<div v-else>{{ scope.row.arrivePlanTime }}</div>
</template>
</el-table-column>
<el-table-column
prop="departSectionCode"
label="出发股道"
width="100"
>
<template slot-scope="scope">
<div v-if="scope.row.status==-1">删除</div>
<div v-else-if="scope.row.departSectionCode">{{ scope.row.departSectionCode+'['+scope.row.oldDepartSectionCode+']' }}</div>
</template>
</el-table-column>
<el-table-column
prop="departPlanTime"
label="出发时间"
width="170"
>
<template slot-scope="scope">
<div v-if="scope.row.status==-1">删除</div>
<div v-else>{{ scope.row.departPlanTime }}</div>
</template>
</el-table-column>
</el-table>
<el-row justify="center" class="button-group" style="margin-top:10px">
<el-col :span="6" :offset="5">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">签收</el-button>
</el-col>
<el-col :span="6" :offset="4">
<el-button :id="domIdCancel" @click="cancel">关闭</el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
name:'StageRunplan',
data() {
return {
dialogShow:false,
loading: false,
tableData:[],
updateTime:''
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.CTCCommand.stationSignRunplan.menu.domId : '';
},
title() {
return '阶段计划';
}
},
methods:{
doShow(currentRailwaySimulationRunplan, filterSectionList) {
this.stationCode = currentRailwaySimulationRunplan.stationCode;
this.tableData = currentRailwaySimulationRunplan.dataList;
this.updateTime = currentRailwaySimulationRunplan.updateTime;
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.loading = true;
commitOperate(menuOperate.CTC.stationSignRunplan, {stationCode:this.stationCode}, 3).then(({valid})=>{
this.loading = false;
if (valid) {
this.$emit('closeFlash');
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$emit('noticeInfo');
});
},
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 lang="css">
#stageRunplanClass.chengdou-03__systerm .el-dialog .el-dialog__body{
padding: 10px;
}
#stageRunplanClass.chengdou-03__systerm .el-dialog .el-table .cell div{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>

View File

@ -85,6 +85,7 @@
v-model="tableData[scope.$index].arriveSectionCode"
placeholder=""
size="mini"
:disabled="scope.row.status==-1"
popper-class="stationSelect"
@change="changeArriveRunPlan($event,scope.row,scope.$index)"
>
@ -112,6 +113,7 @@ passenger
placeholder=""
size="mini"
popper-class="stationSelect"
:disabled="scope.row.status==-1"
@change="changeDepartRunPlan($event,scope.row,scope.$index)"
>
<el-option

View File

@ -44,7 +44,7 @@
<div class="runplanLine" />
<div class="rpDispacherCommand runplanClickBtn">调度命令</div>
<div class="runplanBtnGroup">
<div class="runplanClickBtn">阶段计划(F8)</div>
<div id="stageRunplan" class="runplanClickBtn" @click="stageRunplan">阶段计划(F8)</div>
<div id="sendRunplan" class="runplanClickBtn" @click="sendRunplan">发送计划</div>
<div class="runplanClickBtn">阶段记事</div>
</div>
@ -484,6 +484,7 @@
</div>
<send-runplan ref="sendRunplan" @closeFlash="closeFlash" @noticeInfo="noticeInfo" />
<stage-runplan ref="stageRunplan" @closeFlash="closeStageFlash" @noticeInfo="noticeInfo" />
<modify-adjacent-station ref="modifyAdjacentStation" @clearRpRow="clearRpRow" @noticeInfo="noticeInfo" />
<delete-runplan ref="deleteRunplan" @clearRpRow="clearRpRow" @noticeInfo="noticeInfo" />
<modify-trip-number ref="modifyTripNumber" @clearRpRow="clearRpRow" @noticeInfo="noticeInfo" />
@ -505,6 +506,7 @@ import Rpwp from '@/assets/ctc_icon/rpwp.png';
import Rph from '@/assets/ctc_icon/rph.png';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SendRunplan from './dialog/sendRunplan';
import StageRunplan from './dialog/stageRunplan';
import DeleteRunplan from './dialog/deleteRunplan';
import ModifyAdjacentStation from './dialog/modifyAdjacentStation';
import ModifyTripNumber from './dialog/modifyTripNumber';
@ -515,6 +517,7 @@ export default {
name:'RunplanPane',
components: {
SendRunplan,
StageRunplan,
DeleteRunplan,
ModifyAdjacentStation,
ModifyTripNumber,
@ -541,6 +544,7 @@ export default {
filterSectionList:[],
activeDepartRunPlan:{},
activeArriveRunPlan:{},
currentRailwaySimulationRunplan:{},
// radioSelected:''
currentRow:null
};
@ -553,9 +557,23 @@ export default {
watch:{
'$store.state.socket.railCtcRunplanChange': function (val) {
this.loadData();
},
'$store.state.socket.railwaySimulationRunplanSendChange': function (val) {
this.getRailwaySimulationRunplanSend();
}
// railwaySimulationRunplanSendMap
// railwaySimulationRunplanSendChange
},
methods:{
getRailwaySimulationRunplanSend() {
const stationCode = this.$store.state.training.roleDeviceCode;
const railwaySimulationRunplanSendMap = this.$store.state.socket.railwaySimulationRunplanSendMap;
if (railwaySimulationRunplanSendMap[stationCode] && railwaySimulationRunplanSendMap[stationCode].dataList.length > 0) {
//
document.getElementById('stageRunplan').classList.add('active');
this.currentRailwaySimulationRunplan = railwaySimulationRunplanSendMap;
}
},
loadData() {
this.tableData = [];
const railCtcRunplanInitMsg = copyAssign({}, this.$store.state.socket.railCtcRunplanInitMsg);
@ -589,6 +607,7 @@ export default {
this.tableData = [];
this.loadData();
this.isShow = true;
this.getRailwaySimulationRunplanSend();
window.addEventListener('keydown', this.handleKeyDown);
// arriveRunPlan: Object
// code: "00110010"
@ -622,6 +641,11 @@ export default {
this.agreeNotcie();
break;
}
case 'F8': {
event.preventDefault();
this.stageRunplan();
break;
}
}
}
},
@ -630,6 +654,12 @@ export default {
this.$refs.sendRunplan.doShow(this.tableData, this.activeDepartRunPlan, this.activeArriveRunPlan, this.filterSectionList);
}
},
stageRunplan() {
if (document.getElementById('stageRunplan').className.includes('active')) {
const stationCode = this.$store.state.training.roleDeviceCode;
this.$refs.stageRunplan.doShow(this.currentRailwaySimulationRunplan[stationCode], this.filterSectionList);
}
},
focusDepartRunPlan(event, row) {
this.activeDepartRunPlan[row.code] = {sectionCode:event, code:row.code};
},
@ -680,6 +710,10 @@ export default {
const sendRunplan = document.getElementById('sendRunplan').className;
document.getElementById('sendRunplan').className = sendRunplan.replace('active', '');
},
closeStageFlash() {
const sendRunplan = document.getElementById('stageRunplan').className;
document.getElementById('stageRunplan').className = sendRunplan.replace('active', '');
},
selectedTripNumber(row, column, cell, event) {
if (column.property == 'tripNumber') {
if (this.currentRow && this.currentRow.code == row.code) {
@ -984,7 +1018,7 @@ export default {
.runplanTwo1Level{line-height: 28px;}
.runplanTwo3Level{line-height: 70px;}
.runplanZhe{width: 16px;display: inline-block;vertical-align: top;}
#sendRunplan.active{
#sendRunplan.active,#stageRunplan.active{
animation:changeColor 1s infinite;
-moz-animation:changeColor 1s infinite; /* Firefox */
-webkit-animation:changeColor 1s infinite; /* Safari and Chrome */

View File

@ -233,9 +233,12 @@ function handle(state, data) {
});
state.railCtcRunplanChange++;
break;
// 大铁项目 ctc 调度下发消息
// 大铁项目 ctc 调度发布行车计划 给车站下发消息
case 'SIMULATION_RAILWAY_RUN_PLAN_SEND':
// TODO
msg.forEach(each=>{
state.railwaySimulationRunplanSendMap[each.stationCode] = each;
});
state.railwaySimulationRunplanSendChange++;
break;
// 大铁项目 ctc 车务管理端 初始化消息
case 'SIMULATION_CTC_MANAGER_RUN_PLAN_EDIT_INIT':
@ -440,7 +443,9 @@ const socket = {
railCtcRunplanInitMsg:{}, // 大铁项目 ctc 运行图初始化信息
railCtcRunplanChange:0, // 大铁项目 ctc 运行图信息变化
railCtcStationManageRpMsg:{}, // 大铁项目 ctc 车务管理 端运行图信息
railCtcStationManageRpChange:0 // 大铁项目 ctc 车务管理 运行图信息变化
railCtcStationManageRpChange:0, // 大铁项目 ctc 车务管理 运行图信息变化
railwaySimulationRunplanSendMap:{}, // 大铁项目 调度台 发布 行车计划
railwaySimulationRunplanSendChange:0 // 大铁项目 调度台 发布 行车计划变化
// railwaySimulationRpMsg:{}, // 大铁项目 调度台 调度台
// railwaySimulationRpChange:0 // 大铁项目 调度台 运行图信息变化
},