This commit is contained in:
fan 2022-06-06 16:30:38 +08:00
commit d5e2e69965
5 changed files with 692 additions and 17 deletions

View File

@ -0,0 +1,192 @@
<template>
<el-dialog
id="sendRunplanClass"
v-dialogDrag
class="chengdou-03__systerm"
:title="title"
:visible.sync="show"
width="1165px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div class="tableList">
<div class="leftTable">
<el-table
id="sendRunplanLeftTable"
:data="tableData1"
border
height="570"
style="width: 100%;border:1px #ccc solid"
>
<el-table-column
prop="number"
label="序号"
width="70"
/>
<el-table-column
prop="tripNumber"
label="车次"
width="100"
/>
<el-table-column
prop="type"
label="类型"
width="50"
/>
<el-table-column
prop="direction"
label="方向"
width="105"
/>
<el-table-column
prop="arriveSection"
label="到达股道"
width="95"
/>
<el-table-column
prop="arriveTime"
label="到达时刻"
width="95"
/>
<el-table-column
prop="quxiang"
label="去向"
width="105"
/>
<el-table-column
prop="depatureSection"
label="出发股道"
width="95"
/>
<el-table-column
prop="depatureTime"
label="出发时间"
width="100"
/>
<el-table-column
prop="property"
label="属性"
width="100"
/>
<el-table-column
prop="tips"
label="注意事项"
width="120"
/>
</el-table>
</div>
<div class="rightTable">
<el-table
id="sendRunplanRightTable"
:data="tableData2"
border
height="570"
style="width: 100%;border:1px #ccc solid"
>
<el-table-column
prop="number"
label="序号"
width="40"
/>
<el-table-column
prop="number"
label="受令单位"
width="70"
/>
<el-table-column
prop="number"
label="状态"
width="70"
/>
</el-table>
</div>
</div>
<el-row justify="center" class="button-group">
<el-col :span="8" :offset="2">
<el-button :id="domIdCancel" @click="cancel">取消</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">发送</el-button>
</el-col>
</el-row>
</el-dialog>
<!-- updateTrip -->
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name:'SendRunplan',
data() {
return {
dialogShow:false,
loading: false,
tableData1:[],
tableData2:[]
};
},
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.updateTrip.confirm.domId : '';
},
title() {
return '发送计划';
}
},
methods:{
doShow() {
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
},
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="scss" scoped>
.tableList{
display: inline-block
}
.leftTable{
display: inline-block;
width: 955px;
}
.rightTable{
display: inline-block;
margin-left:10px;
font-size:13px;
width:150px
}
.sendRunplanLeftTable{
}
</style>
<style lang="css">
#sendRunplanClass.chengdou-03__systerm .el-dialog .el-dialog__body{
padding: 10px;
}
</style>

View File

@ -8,7 +8,7 @@
<div class="rpDispacherCommand runplanClickBtn">调度命令</div>
<div class="runplanBtnGroup">
<div class="runplanClickBtn">阶段计划(F8)</div>
<div class="runplanClickBtn">发送计划</div>
<div class="runplanClickBtn" @click="sendRunplan">发送计划</div>
<div class="runplanClickBtn">阶段记事</div>
</div>
<div class="runplanStatusGroup">
@ -33,30 +33,371 @@
</div>
</div>
<div class="runplanContentR">
table
<el-table
id="runplanContentTable"
:data="tableData"
border
height="695"
style="width: 100%;border:1px #ccc solid"
>
<el-table-column
prop="tripNumber"
label=""
width="100"
/>
<el-table-column label="到 达">
<el-table-column label="列 车 车 次" style="text-align:center">
<el-table-column width="80" prop="arriveRunPlan.down">
<template slot="header">
<div class="runplanTableTname"><br><br>&nbsp;</div>
<div class="runplanTableNo">1</div>
</template>
</el-table-column>
<el-table-column width="80" prop="arriveRunPlan.up">
<template slot="header">
<div class="runplanTableTname"><br><br>&nbsp;</div>
<div class="runplanTableNo">2</div>
</template>
</el-table-column>
</el-table-column>
<el-table-column width="155" prop="arriveRunPlan.accessName">
<template slot="header">
<div class="runplanTableTname runplanTwo2Level"><br><br><br></div>
<div class="runplanTableNo">3</div>
</template>
</el-table-column>
<el-table-column width="60" prop="arriveRunPlan.sectionCode">
<template slot="header">
<div class="runplanTableTname runplanTwo1Level"><br><br><br></div>
<div class="runplanTableNo">4</div>
</template>
</el-table-column>
<el-table-column label="时 分">
<el-table-column width="70" prop="arriveRunPlan.adjacentMessage">
<template slot="header">
<div class="runplanTableTname">
<div class="runplanThreeLevel"><span style="margin-left:5px;"></span></div>
<div class="runplanThreeLevel"><span style="margin-left: 21px;"></span></div>
<div class="runplanThreeLevel"><span style="margin-left: 21px;"></span></div>
<div class="runplanThreeLevel"><span style="margin-left:5px;"></span></div>
</div>
<div class="runplanTableNo">5</div>
</template>
</el-table-column>
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname runplanThreeLevel"><br><br><br></div>
<div class="runplanTableNo">6</div>
</template>
</el-table-column>
<el-table-column label="本站到达" style="height:30px">
<el-table-column width="70" prop="arriveRunPlan.planTime">
<template slot="header">
<div class="runplanTableTname runplanFourLevel"><br></div>
<div class="runplanTableNo">7</div>
</template>
</el-table-column>
<el-table-column width="70" prop="arriveRunPlan.actualTime">
<template slot="header">
<div class="runplanTableTname runplanFourLevel"><br></div>
<div class="runplanTableNo">8</div>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
<el-table-column label="摘 车 辆 数">
<el-table-column label="运用车">
<el-table-column width="50">
<template slot="header">
<div class="runplanTableTname runplanFourLevel"><br></div>
<div class="runplanTableNo">9</div>
</template>
</el-table-column>
<el-table-column width="50">
<template slot="header">
<div class="runplanTableTname runplanFourLevel"><br></div>
<div class="runplanTableNo">10</div>
</template>
</el-table-column>
</el-table-column>
<el-table-column width="50">
<template slot="header">
<div class="runplanTableTname runplanThreeLevel"><br><br><br></div>
<div class="runplanTableNo">11</div>
</template>
</el-table-column>
<el-table-column width="50">
<template slot="header">
<div class="runplanTableTname" style="line-height: 40px;"><br></div>
<div class="runplanTableNo">12</div>
</template>
</el-table-column>
</el-table-column>
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname">
<!-- 占用区间<br>凭证号码 -->
<div class="runplanTwo1Level"><span style="margin-left:5px;"></span></div>
<div class="runplanTwo1Level"><span style="margin-left:5px;"></span></div>
<div class="runplanTwo1Level"><span style="margin-left:5px;"></span></div>
<div class="runplanTwo1Level"><span style="margin-left:5px;"> </span></div>
</div>
<div class="runplanTableNo">13</div>
</template>
</el-table-column>
<el-table-column label="电 话 记 录 号 码">
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname runplanThreeLevel"><br><br><br></div>
<div class="runplanTableNo">14</div>
</template>
</el-table-column>
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname runplanThreeLevel">
<div class="runplanThreeLevel"><span style="margin-left:11px;"></span></div>
<div class="runplanThreeLevel"><span style="margin-left:11px;"></span></div>
<div class="runplanThreeLevel"><span style="margin-left:11px;"></span></div>
<div class="runplanThreeLevel"><span style="margin-left:11px;"></span></div>
</div>
<div class="runplanTableNo">15</div>
</template>
</el-table-column>
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname runplanThreeLevel"><br><br><br></div>
<div class="runplanTableNo">16</div>
</template>
</el-table-column>
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname runplanThreeLevel">
<div style="width:16px;float:left;line-height: 13px;margin-left: 13px;margin-top: 3px;">出站 -跟踪 -</div>
<div style="width: 16px;display:inline-block;line-height:20px;"><br><br><br></div>
</div>
<div class="runplanTableNo">17</div>
</template>
</el-table-column>
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname runplanThreeLevel">
<div style="width:16px;float:left;line-height: 13px;margin-left: 13px;margin-top: 3px;">出站 -跟踪 -</div>
<div style="width: 16px;display:inline-block;line-height:20px;">调车完毕</div>
</div>
<div class="runplanTableNo">18</div>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
<el-table-column label=" 出 发 ">
<el-table-column label="列 车 车 次" style="text-align:center">
<el-table-column width="80" prop="departRunPlan.down">
<template slot="header">
<div class="runplanTableTname"><br><br>&nbsp;</div>
<div class="runplanTableNo">19</div>
</template>
</el-table-column>
<el-table-column width="80" prop="departRunPlan.up">
<template slot="header">
<div class="runplanTableTname"><br><br>&nbsp;</div>
<div class="runplanTableNo">20</div>
</template>
</el-table-column>
</el-table-column>
<el-table-column width="60" prop="departRunPlan.sectionCode">
<template slot="header">
<div class="runplanTableTname runplanTwo1Level"><br><br><br></div>
<div class="runplanTableNo">21</div>
</template>
</el-table-column>
<el-table-column width="155" prop="departRunPlan.accessName">
<template slot="header">
<div class="runplanTableTname runplanTwo2Level"><br><br><br></div>
<div class="runplanTableNo">22</div>
</template>
</el-table-column>
<el-table-column label="时 分">
<el-table-column width="70" prop="departRunPlan.adjacentMessage">
<template slot="header">
<div class="runplanTableTname">
<div class="runplanThreeLevel"><span style="margin-left:5px;"></span></div>
<div class="runplanThreeLevel"><span style="margin-left: 21px;" /></div>
<div class="runplanThreeLevel"><span style="margin-left: 21px;" /></div>
<div class="runplanThreeLevel"><span style="margin-left:5px;"></span></div>
</div>
<div class="runplanTableNo">23</div>
</template>
</el-table-column>
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname runplanThreeLevel"><br><br><br></div>
<div class="runplanTableNo">24</div>
</template>
</el-table-column>
<el-table-column label="本站出发" style="height:30px">
<el-table-column width="70" prop="departRunPlan.planTime">
<template slot="header">
<div class="runplanTableTname runplanFourLevel"><br></div>
<div class="runplanTableNo">25</div>
</template>
</el-table-column>
<el-table-column width="70" prop="departRunPlan.actualTime">
<template slot="header">
<div class="runplanTableTname runplanFourLevel"><br></div>
<div class="runplanTableNo">26</div>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
<el-table-column label="挂 车 辆 数">
<el-table-column label="运用车">
<el-table-column width="50">
<template slot="header">
<div class="runplanTableTname runplanFourLevel"><br></div>
<div class="runplanTableNo">27</div>
</template>
</el-table-column>
<el-table-column width="50">
<template slot="header">
<div class="runplanTableTname runplanFourLevel"><br></div>
<div class="runplanTableNo">28</div>
</template>
</el-table-column>
</el-table-column>
<el-table-column width="50">
<template slot="header">
<div class="runplanTableTname runplanThreeLevel"><br><br><br></div>
<div class="runplanTableNo">29</div>
</template>
</el-table-column>
<el-table-column width="50">
<template slot="header">
<div class="runplanTableTname" style="line-height: 40px;"><br></div>
<div class="runplanTableNo">30</div>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname">
<!-- 列车停站超过规定时间原因 -->
<div class="runplanOneLevel"><span style="margin-left:5px;"></span></div>
<div class="runplanOneLevel"><span style="margin-left: 5px;"></span></div>
<div class="runplanOneLevel"><span style="margin-left: 5px;"></span></div>
<div class="runplanOneLevel"><span style="margin-left:5px;"></span></div>
<div class="runplanOneLevel"><span style="margin-left:5px;"></span></div>
<div class="runplanOneLevel"><span style="margin-left:5px;"></span></div>
</div>
<div class="runplanTableNo">31</div>
</template>
</el-table-column>
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname runplanTwo2Level"><br><br><br></div>
<div class="runplanTableNo">32</div>
</template>
</el-table-column>
<el-table-column width="70">
<template slot="header">
<div class="runplanTableTname runplanTwo3Level"><br><br></div>
<div class="runplanTableNo">33</div>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div class="runplanBottom">
<div class="runplanBottomL" />
<div class="runplanBottomC" />
<div class="runplanBottomR" />
<div class="runplanBottomTLine" />
<div class="runplanBottomB">
<div class="runplanBottomLLine" />
<div class="runplanBottomIn">
<div class="runplanBottomL">
<div class="runplanBottomLTitle">与调度台的信息</div>
<div class="runplanBottomLIn">
<div class="runplanBottomLInM">
<div class="runplanMessage" style="color:#db2312">casco下达新阶段计划 22:30</div>
<div class="runplanMessage">王岗casco,我签收新下达的阶段计划 22:31</div>
</div>
</div>
</div>
<div class="runplanBottomC">
<div class="runplanBottomCTitle">键盘输入区</div>
<div class="runplanBottomCIn">
<div class="runplanBottomCInT">
[HOME]复位 类型0股道 1预告 2同意邻站发车 3到达 4出发 5出发机车号码 6取消同意邻站发车 7取消发车 8记事 9邻站同意发车 10邻站出发 11邻站到达 12接车线别 13发车线别 14通过
</div>
<div class="runplanBottomCInB">
<div class="runplanBottomCInB1">
<div style="width:15%" class="runplanBottomCInB1in">
<div>车次</div>
<input type="text" style="height:20px;width: 100%;">
</div>
<div style="width:10%" class="runplanBottomCInB1in">
<div>类型</div>
<input type="text" style="height:20px;width: 100%;">
</div>
<div style="width:73%" class="runplanBottomCInB1in">
<div>内容</div>
<input type="text" style="height:20px;width: 100%;">
</div>
</div>
<div class="runplanBottomCInB2">
<div style="margin-right:5px;line-height:20px">常用记事词汇</div>
<div style="flex-grow:1"><input type="text" style="height:20px;width: 100%;"></div>
</div>
<div class="runplanBottomCInB3" />
</div>
</div>
</div>
<div class="runplanBottomR">
<div class="runplanBottomRTitle">与邻站的信息</div>
<div class="runplanBottomRIn">
<div class="runplanBottomRInM">
<div class="runplanMessage" style="color:#0816cf">王岗收到计划22:32:02</div>
</div>
</div>
</div>
</div>
</div>
</div>
<send-runplan ref="sendRunplan" />
</div>
</template>
<script>
import SendRunplan from './dialog/sendRunplan';
export default {
name:'RunplanPane',
components: {
SendRunplan
},
data() {
return {
isShow:false
isShow:false,
tableData:[]
};
},
methods:{
doShow() {
// '$store.state.socket.railCtcRunplanInitMsg': function (val) {
const railCtcRunplanInitMsg = this.$store.state.socket.railCtcRunplanInitMsg;
this.tableData = Object.values(railCtcRunplanInitMsg).filter(data=>{ return data.stationCode == this.$store.state.training.roleDeviceCode; });
this.isShow = true;
// arriveRunPlan: Object
// code: "00110010"
// departRunPlan: Object
// accessName: "()"
// planTime: "04:00:30"
// tripNumber: "1001"
// stationCode: "Station32295"
// tripNumber: "1001"
},
doClose() {
this.isShow = false;
},
sendRunplan() {
this.$refs.sendRunplan.doShow();
}
}
};
@ -72,6 +413,20 @@ export default {
z-index: 38;
margin-top: 34px;
display: block;
overflow: scroll;
&::-webkit-scrollbar {
width: 4px;
}
&::-webkit-scrollbar-thumb {
border-radius: 10px;
background: #c3c3c3;
}
&::-webkit-scrollbar-track {
border-radius: 0;
background: #f0f0f0;
}
}
.runplanMenuBar{
height: 35px;
@ -104,12 +459,68 @@ export default {
border-top: 3px #818181 solid;
border-left: 3px #818181 solid;
overflow-x: auto;
overflow-y: auto;
overflow-y: hidden;
}
.runplanBottom{height:261px;background: #efefef;display: inline-block;width: 100%;}
.runplanBottomL,.runplanBottomC,.runplanBottomR{width:33%;padding: 5px;position: relative;}
.runplanBottomTLine{
margin-top: 3px;
height: 7px;
border-top: 2px #e5e5e5 solid;
border-bottom: 2px #8b8b8b solid;
margin-left: 8px;
margin-right: 8px;
background: #f7f7f7;
}
.runplanBottomLTitle,.runplanBottomCTitle,.runplanBottomRTitle{
position: absolute;
left: 10px;
top: -3px;
font-size: 14px;
padding: 0px 5px;
background: #efefef;
}
.runplanBottomLInM,.runplanBottomRInM{
width: 100%;
height: 215px;
background: #fff;
border-top: 2px #393939 solid;
border-left: 2px #393939 solid;
padding: 5px;
}
.runplanMessage{font-size:12px;margin-bottom:3px;}
.runplanBottomLIn,.runplanBottomCIn,.runplanBottomRIn{width:100%;height:100%;border:1px #7e7e7e solid;padding-top: 11px;}
.runplanBottomCInT{
font-size: 13px;
padding: 5px;
line-height: 20px;
}
.runplanBottomCInB{
padding: 10px;
font-size: 12px;
position: absolute;
bottom: 7px;
left: 4px;
width: calc(100% - 20px);
}
.runplanBottomCInB1{}
.runplanBottomCInB2{display:flex;flex-direction: row; margin-top: 5px;}
.runplanBottomCInB3{margin-top: 5px;width:100%;height:20px;border: 1px #7e7e7e solid;line-height:20px;}
.runplanBottomCInB1in{display:inline-block;}
.runplanBottomB{display:inline-block;margin-top:7px;margin-left: 5px;width: calc(100% - 5px);}
.runplanBottomLLine{
height: 241px;
width: 4px;
border: 1px #707070 solid;
background: #f7f7f7;
float: left;
}
.runplanBottomIn{
display:flex;
flex-direction:row;
margin-top: 5px;
margin-left: 10px;
}
.runplanBottom{}
.runplanBottomL{}
.runplanBottomC{}
.runplanBottomR{}
.runplanLine{
margin-top: 1px;
height: 31px;
@ -147,6 +558,8 @@ export default {
border-right: 2px #4c4c4c solid;
padding: 6px 15px;
margin-top: 2px;
cursor:pointer;
margin-left: 3px;
}
.runplanBtnGroup{
display: flex;
@ -169,5 +582,56 @@ export default {
padding: 6px 15px;
margin-top: 2px;
background: #f0f0f0;
cursor: text;
}
.runplanTableNo{
height: 30px;
width: 100%;
text-align: center;
line-height: 30px;
border-top: 1px #777777 solid;
font-weight: normal;
// position: absolute;
// bottom: 0px;
}
.runplanTableTname{
width: 100%;
// flex-grow: 1;
text-align: center;
// line-height: 20px;
font-size: 15px;
font-weight: normal;
display: inline-block;
}
.runplanOneLevel{line-height: 24px;}
.runplanFourLevel{line-height: 22px;}
.runplanThreeLevel{line-height: 20px;}
.runplanTwo2Level{line-height:35px}
.runplanTwo1Level{line-height: 28px;}
.runplanTwo3Level{line-height: 70px;}
.runplanZhe{width: 16px;display: inline-block;vertical-align: top;}
</style>
<style lang="scss">
#runplanContentTable.el-table .cell, .el-table--border td:first-child .cell, .el-table--border th:first-child .cell{
padding-left:0;
padding-right:0;
text-align: center;
font-size: 15px;
// display: flex;
// flex-direction: column-reverse;
// align-items: center;
}
#runplanContentTable.el-table td, .el-table th.is-leaf{
padding: 0px;
vertical-align: bottom;
}
#runplanContentTable.el-table thead.is-group th{
height: 30px;
line-height: 30px;
padding: 0px;
padding:0px;
background: #f0f0f0;
color: #000;
border-color: #777777;
}
</style>

View File

@ -198,11 +198,20 @@ function handle(state, data) {
state.simulationPlanChange = msg;
break;
// 占线板信息
case 'Simulation_RailCtcStatus':
state.railCtcStatusMsg = msg;
break;
case 'Simulation_RailCtcStatus':
state.railCtcStatusMsg = msg;
break;
// 大铁项目 ctc 运行图初始化信息
case 'SIMULATION_CTC_RUN_PLAN_INIT':
msg.forEach(element => {
const tripNumberDe = element.departRunPlan.tripNumber;
const tripNumberAr = element.arriveRunPlan.tripNumber;
tripNumberDe && parseInt(tripNumberDe[tripNumberDe.length - 1]) % 2 == 0 ? element.departRunPlan.up = tripNumberDe : element.departRunPlan.down = tripNumberDe;
tripNumberAr && parseInt(tripNumberAr[tripNumberAr.length - 1]) % 2 == 0 ? element.arriveRunPlan.up = tripNumberAr : element.arriveRunPlan.down = tripNumberAr;
state.railCtcRunplanInitMsg[element.code] = element;
});
break;
}
}
// 操作聊天信息
@ -352,7 +361,8 @@ const socket = {
simulationPslStatus: [], // PSL面板按钮状态信息
simulationPlanChange:{}, // 运行图加线/抽线/变化推送消息
loggedOutMsg: '',
railCtcStatusMsg: {}, // 占线板信息
railCtcStatusMsg: {}, // 占线板信息
railCtcRunplanInitMsg:{} // 大铁项目 ctc 运行图初始化信息
},
getters: {
},

View File

@ -31,6 +31,9 @@ export function getTopic(type, group, stationCode) {
case 'ISCSPIS':
topic = `/queue/simulation/${group}/iscs/pis`;
break;
case 'CTC':
topic = `/queue/simulation/${group}/ctc`;
break;
}
return topic;
}

View File

@ -120,6 +120,9 @@ export default {
const header = { group: this.$route.query.group || '', 'X-Token': getToken() };
creatSubscribe(`${displayTopic}\/${this.$route.query.group}`, header);
creatSubscribe(getTopic('STATE', this.$route.query.group), header);
if (this.$route.query.ctc == 'true') {
creatSubscribe(getTopic('CTC', this.$route.query.group), header);
}
await this.$store.dispatch('training/setHasSubscribed');
},
async subscribeNew() {
@ -137,7 +140,10 @@ export default {
},
clearSubscribe() {
clearSubscribe(`${displayTopic}\/${this.groupModel}`);
clearSubscribe(getTopic('STATE', this.$route.query.group));
clearSubscribe(getTopic('STATE', this.groupModel));
if (this.$route.query.ctc == 'true') {
clearSubscribe(getTopic('CTC', this.groupModel));
}
},
setCenter(code) {
this.$refs.mapCommon && this.$refs.mapCommon.setCenter(code);