Merge branch 'test' of git.code.tencent.com:lian-cbtc/jl-client into yly
This commit is contained in:
commit
9d086724fe
@ -51,15 +51,15 @@ const deviceType = {
|
|||||||
DirectionRod: 'DirectionRod',
|
DirectionRod: 'DirectionRod',
|
||||||
Responder: 'Responder',
|
Responder: 'Responder',
|
||||||
SignalButton: 'SignalButton',
|
SignalButton: 'SignalButton',
|
||||||
PickArrow: 'PickArrow',
|
PickArrow: 'PickArrow',
|
||||||
DepartArrow: 'DepartArrow',
|
DepartArrow: 'DepartArrow',
|
||||||
Occlusion: 'Occlusion',
|
Occlusion: 'Occlusion',
|
||||||
Accident: 'Accident',
|
Accident: 'Accident',
|
||||||
Recovery: 'Recovery',
|
Recovery: 'Recovery',
|
||||||
PickAssist: 'PickAssist',
|
PickAssist: 'PickAssist',
|
||||||
DepartAssist: 'DepartAssist',
|
DepartAssist: 'DepartAssist',
|
||||||
TotalAssist: 'TotalAssist',
|
TotalAssist: 'TotalAssist',
|
||||||
AssistStatus: 'AssistStatus',
|
AssistStatus: 'AssistStatus',
|
||||||
SectionOccupied: 'SectionOccupied'
|
SectionOccupied: 'SectionOccupied'
|
||||||
};
|
};
|
||||||
export default deviceType;
|
export default deviceType;
|
||||||
|
@ -564,10 +564,25 @@ export const menuOperate = {
|
|||||||
operation: OperationEvent.CTCCommand.autoTrigger.menu.operation,
|
operation: OperationEvent.CTCCommand.autoTrigger.menu.operation,
|
||||||
cmdType: CMD.CTC.CTC_AUTO_TRIGGER
|
cmdType: CMD.CTC.CTC_AUTO_TRIGGER
|
||||||
},
|
},
|
||||||
// 批量修改股道
|
// // 批量修改股道
|
||||||
batchModifyTrackSection:{
|
// batchModifyTrackSection:{
|
||||||
operation: OperationEvent.CTCCommand.batchModifyTrackSection.menu.operation,
|
// operation: OperationEvent.CTCCommand.batchModifyTrackSection.menu.operation,
|
||||||
cmdType: CMD.CTC.CTC_BATCH_MODIFY_RUN_PLAN
|
// cmdType: CMD.CTC.CTC_BATCH_MODIFY_RUN_PLAN
|
||||||
|
// },
|
||||||
|
// 修改股道
|
||||||
|
modifyTrackSection:{
|
||||||
|
operation: OperationEvent.CTCCommand.modifyTrackSection.menu.operation,
|
||||||
|
cmdType: CMD.CTC.CTC_MODIFY_SECTION
|
||||||
|
},
|
||||||
|
// 车站发送计划
|
||||||
|
stationSendRunplan:{
|
||||||
|
operation: OperationEvent.CTCCommand.stationSendRunplan.menu.operation,
|
||||||
|
cmdType: CMD.CTC.CTC_STATION_SEND_OUT_RUN_PLAN
|
||||||
|
},
|
||||||
|
// 车站取消红闪
|
||||||
|
stationCancleTwinkle:{
|
||||||
|
operation: OperationEvent.CTCCommand.stationCancleTwinkle.menu.operation,
|
||||||
|
cmdType: CMD.CTC.CTC_CANCEL_TWINKLE
|
||||||
},
|
},
|
||||||
// 移除行车日志
|
// 移除行车日志
|
||||||
deleteRunplan:{
|
deleteRunplan:{
|
||||||
@ -642,6 +657,16 @@ export const menuOperate = {
|
|||||||
modifyDispatcherLogerRpSection:{
|
modifyDispatcherLogerRpSection:{
|
||||||
operation: OperationEvent.CTCCommand.modifyDispatcherLogerRpSection.menu.operation,
|
operation: OperationEvent.CTCCommand.modifyDispatcherLogerRpSection.menu.operation,
|
||||||
cmdType: CMD.CTC.CTC_ZONE_SAVE_TRACK_SECTION
|
cmdType: CMD.CTC.CTC_ZONE_SAVE_TRACK_SECTION
|
||||||
|
},
|
||||||
|
// 调度台行车计划修改时间
|
||||||
|
modifyDispatcherLogerRpPlanTime:{
|
||||||
|
operation: OperationEvent.CTCCommand.modifyDispatcherLogerRpSection.menu.operation,
|
||||||
|
cmdType: CMD.CTC.CTC_ZONE_SAVE_PLAN_TIME
|
||||||
|
},
|
||||||
|
// 调度台行车计划修改出入口
|
||||||
|
modifyDispatcherLogerRpDirection:{
|
||||||
|
operation: OperationEvent.CTCCommand.modifyDispatcherLogerRpSection.menu.operation,
|
||||||
|
cmdType: CMD.CTC.CTC_ZONE_SAVE_DIRECTION
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Rail: {
|
Rail: {
|
||||||
@ -653,6 +678,10 @@ export const menuOperate = {
|
|||||||
operation: OperationEvent.RailCommand.railQueryTicket.menu.operation,
|
operation: OperationEvent.RailCommand.railQueryTicket.menu.operation,
|
||||||
cmdType: CMD.RAIL.CMD_RAIL_QUERY_TICKET
|
cmdType: CMD.RAIL.CMD_RAIL_QUERY_TICKET
|
||||||
},
|
},
|
||||||
|
railGiveTicketTo: {
|
||||||
|
operation: OperationEvent.RailCommand.railGiveTicketTo.menu.operation,
|
||||||
|
cmdType: CMD.RAIL.CMD_RAIL_GIVE_TICKET_TO
|
||||||
|
},
|
||||||
railFillInRegister: {
|
railFillInRegister: {
|
||||||
operation: OperationEvent.RailCommand.railFillInRegister.menu.operation,
|
operation: OperationEvent.RailCommand.railFillInRegister.menu.operation,
|
||||||
cmdType: CMD.RAIL.CMD_RAIL_FILL_IN_REGISTER
|
cmdType: CMD.RAIL.CMD_RAIL_FILL_IN_REGISTER
|
||||||
|
@ -134,9 +134,9 @@ export default {
|
|||||||
tableData1:[],
|
tableData1:[],
|
||||||
tableData2:[],
|
tableData2:[],
|
||||||
addModel:{
|
addModel:{
|
||||||
stationCode:'',
|
stationCode:''
|
||||||
planParamList:[],
|
// planParamList:[],
|
||||||
force:1
|
// force:1
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -148,15 +148,15 @@ export default {
|
|||||||
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
|
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
|
||||||
},
|
},
|
||||||
domIdConfirm() {
|
domIdConfirm() {
|
||||||
return this.dialogShow ? OperationEvent.CTCCommand.batchModifyTrackSection.menu.domId : '';
|
return this.dialogShow ? OperationEvent.CTCCommand.stationSendRunplan.menu.domId : '';
|
||||||
},
|
},
|
||||||
title() {
|
title() {
|
||||||
return '发送计划';
|
return '发送计划';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
doShow(tableData, activeDepartRunPlan, activeArriveRunPlan, filterSectionList) {
|
doShow(tableData, filterSectionList) {
|
||||||
this.addModel.planParamList = [];
|
// this.addModel.planParamList = [];
|
||||||
this.tableData1 = [];
|
this.tableData1 = [];
|
||||||
tableData.forEach(element => {
|
tableData.forEach(element => {
|
||||||
if (element.arriveRunPlan && element.arriveRunPlan.sectionCode) {
|
if (element.arriveRunPlan && element.arriveRunPlan.sectionCode) {
|
||||||
@ -171,24 +171,24 @@ export default {
|
|||||||
});
|
});
|
||||||
// filterSectionList
|
// filterSectionList
|
||||||
this.addModel.stationCode = this.$store.state.training.roleDeviceCode;
|
this.addModel.stationCode = this.$store.state.training.roleDeviceCode;
|
||||||
const activeDepartRunPlanList = Object.values(activeDepartRunPlan).filter(activeDepart=>{ return activeDepart.changeSectionCode && activeDepart.changeSectionCode != activeDepart.sectionCode; });
|
// const activeDepartRunPlanList = Object.values(activeDepartRunPlan).filter(activeDepart=>{ return activeDepart.changeSectionCode && activeDepart.changeSectionCode != activeDepart.sectionCode; });
|
||||||
if (activeDepartRunPlanList.length > 0) {
|
// if (activeDepartRunPlanList.length > 0) {
|
||||||
activeDepartRunPlanList.forEach(depart=>{
|
// activeDepartRunPlanList.forEach(depart=>{
|
||||||
this.addModel.planParamList.push({
|
// this.addModel.planParamList.push({
|
||||||
runPlanCode:depart.code,
|
// runPlanCode:depart.code,
|
||||||
departSectionCode:depart.changeSectionCode
|
// departSectionCode:depart.changeSectionCode
|
||||||
});
|
// });
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
const activeArriveRunPlanList = Object.values(activeArriveRunPlan).filter(activeArrive=>{ return activeArrive.changeSectionCode && activeArrive.changeSectionCode != activeArrive.sectionCode; });
|
// const activeArriveRunPlanList = Object.values(activeArriveRunPlan).filter(activeArrive=>{ return activeArrive.changeSectionCode && activeArrive.changeSectionCode != activeArrive.sectionCode; });
|
||||||
if (activeArriveRunPlanList.length > 0) {
|
// if (activeArriveRunPlanList.length > 0) {
|
||||||
activeArriveRunPlanList.forEach(arrive=>{
|
// activeArriveRunPlanList.forEach(arrive=>{
|
||||||
this.addModel.planParamList.push({
|
// this.addModel.planParamList.push({
|
||||||
runPlanCode:arrive.code,
|
// runPlanCode:arrive.code,
|
||||||
arriveSectionCode:arrive.changeSectionCode
|
// arriveSectionCode:arrive.changeSectionCode
|
||||||
});
|
// });
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
this.dialogShow = true;
|
this.dialogShow = true;
|
||||||
this.$nextTick(function () {
|
this.$nextTick(function () {
|
||||||
this.$store.dispatch('training/emitTipFresh');
|
this.$store.dispatch('training/emitTipFresh');
|
||||||
@ -200,21 +200,21 @@ export default {
|
|||||||
this.$store.dispatch('training/emitTipFresh');
|
this.$store.dispatch('training/emitTipFresh');
|
||||||
},
|
},
|
||||||
commit() {
|
commit() {
|
||||||
if (this.addModel.planParamList.length > 0) {
|
// if (this.addModel.planParamList.length > 0) {
|
||||||
const params = this.addModel;
|
const params = this.addModel;
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
commitOperate(menuOperate.CTC.batchModifyTrackSection, params, 3).then(({valid})=>{
|
commitOperate(menuOperate.CTC.stationSendRunplan, params, 3).then(({valid})=>{
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.$emit('closeFlash');
|
// this.$emit('closeFlash');
|
||||||
this.doClose();
|
|
||||||
}
|
|
||||||
}).catch(() => {
|
|
||||||
this.loading = false;
|
|
||||||
this.doClose();
|
this.doClose();
|
||||||
this.$emit('noticeInfo');
|
}
|
||||||
});
|
}).catch(() => {
|
||||||
}
|
this.loading = false;
|
||||||
|
this.doClose();
|
||||||
|
this.$emit('noticeInfo');
|
||||||
|
});
|
||||||
|
// }
|
||||||
|
|
||||||
// * @param stationCode 车站编码
|
// * @param stationCode 车站编码
|
||||||
// * @param runPlanCode 运行编码
|
// * @param runPlanCode 运行编码
|
||||||
|
@ -53,9 +53,12 @@
|
|||||||
width="100"
|
width="100"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.status==-1">删除</div>
|
<div v-if="scope.row.arriveSectionCode">
|
||||||
<div v-else-if="scope.row.status==1">{{ sectionMap[scope.row.arriveSectionCode] }}</div>
|
<div v-if="scope.row.status==-1">删除</div>
|
||||||
<div v-else-if="scope.row.arriveSectionCode">{{ sectionMap[scope.row.arriveSectionCode]+'['+sectionMap[scope.row.oldArriveSectionCode]+']' }}</div>
|
<!-- scope.row.status==1||( -->
|
||||||
|
<div v-else-if="scope.row.arriveSectionCode&&!scope.row.oldArriveSectionCode">{{ sectionMap[scope.row.arriveSectionCode] }}</div>
|
||||||
|
<div v-else>{{ sectionMap[scope.row.arriveSectionCode]+'['+sectionMap[scope.row.oldArriveSectionCode]+']' }}</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -64,8 +67,10 @@
|
|||||||
width="170"
|
width="170"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.status==-1">删除</div>
|
<div v-if="scope.row.arrivePlanTime">
|
||||||
<div v-else>{{ scope.row.arrivePlanTime }}</div>
|
<div v-if="scope.row.status==-1">删除</div>
|
||||||
|
<div v-else>{{ scope.row.arrivePlanTime }}</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -74,10 +79,13 @@
|
|||||||
width="100"
|
width="100"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.status==-1">删除</div>
|
<div v-if="scope.row.departSectionCode">
|
||||||
<!-- {{ sectionMap }} -->
|
<div v-if="scope.row.status==-1">删除</div>
|
||||||
<div v-else-if="scope.row.status==1">{{ sectionMap[scope.row.departSectionCode] }}</div>
|
<!-- {{ sectionMap }} -->
|
||||||
<div v-else-if="scope.row.departSectionCode">{{ sectionMap[scope.row.departSectionCode]+'['+sectionMap[scope.row.oldDepartSectionCode]+']' }}</div>
|
<!-- scope.row.status==1 -->
|
||||||
|
<div v-else-if="scope.row.departSectionCode&&!scope.row.oldDepartSectionCode">{{ sectionMap[scope.row.departSectionCode] }}</div>
|
||||||
|
<div v-else>{{ sectionMap[scope.row.departSectionCode]+'['+sectionMap[scope.row.oldDepartSectionCode]+']' }}</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -86,8 +94,10 @@
|
|||||||
width="170"
|
width="170"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.status==-1">删除</div>
|
<div v-if="scope.row.departPlanTime">
|
||||||
<div v-else>{{ scope.row.departPlanTime }}</div>
|
<div v-if="scope.row.status==-1">删除</div>
|
||||||
|
<div v-else>{{ scope.row.departPlanTime }}</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
@ -77,6 +77,7 @@
|
|||||||
border
|
border
|
||||||
height="695"
|
height="695"
|
||||||
highlight-current-row
|
highlight-current-row
|
||||||
|
:row-class-name="judgeColor"
|
||||||
style="width: 100%;border:1px #ccc solid"
|
style="width: 100%;border:1px #ccc solid"
|
||||||
@cell-click="selectedTripNumber"
|
@cell-click="selectedTripNumber"
|
||||||
@current-change="handleCurrentChange"
|
@current-change="handleCurrentChange"
|
||||||
@ -88,7 +89,7 @@
|
|||||||
width="100"
|
width="100"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div>{{ scope.row.tripNumber }} {{ scope.row.delete?'(删)':'' }}</div>
|
<div :class="scope.row.twinkle?'flashTrip noChange':'noChange'" style="color:#000">{{ scope.row.tripNumber }} {{ scope.row.delete?'(删)':scope.row.twinkle?'(*)':'' }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="到 达">
|
<el-table-column label="到 达">
|
||||||
@ -98,12 +99,18 @@
|
|||||||
<div class="runplanTableTname">下<br>行<br> </div>
|
<div class="runplanTableTname">下<br>行<br> </div>
|
||||||
<div class="runplanTableNo">1</div>
|
<div class="runplanTableNo">1</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-if="scope.row.arriveRunPlan" class="noChange">{{ scope.row.arriveRunPlan.down }}</div>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="80" prop="arriveRunPlan.up">
|
<el-table-column width="80" prop="arriveRunPlan.up">
|
||||||
<template slot="header">
|
<template slot="header">
|
||||||
<div class="runplanTableTname">上<br>行<br> </div>
|
<div class="runplanTableTname">上<br>行<br> </div>
|
||||||
<div class="runplanTableNo">2</div>
|
<div class="runplanTableNo">2</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-if="scope.row.arriveRunPlan" class="noChange">{{ scope.row.arriveRunPlan.up }}</div>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="155" prop="arriveRunPlan.accessName">
|
<el-table-column width="155" prop="arriveRunPlan.accessName">
|
||||||
@ -112,7 +119,7 @@
|
|||||||
<div class="runplanTableNo">3</div>
|
<div class="runplanTableNo">3</div>
|
||||||
</template>
|
</template>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.arriveRunPlan" class="accessName" :title="scope.row.arriveRunPlan.accessName">{{ scope.row.arriveRunPlan.accessName }}</div>
|
<div v-if="scope.row.arriveRunPlan" class="noChange" :title="scope.row.arriveRunPlan.accessName">{{ scope.row.arriveRunPlan.accessName }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="60" prop="arriveRunPlan.sectionCode">
|
<el-table-column width="60" prop="arriveRunPlan.sectionCode">
|
||||||
@ -127,9 +134,9 @@
|
|||||||
placeholder=""
|
placeholder=""
|
||||||
size="mini"
|
size="mini"
|
||||||
popper-class="stationSelect"
|
popper-class="stationSelect"
|
||||||
@focus="focusArriveRunPlan($event,scope.row)"
|
|
||||||
@change="changeArriveRunPlan($event,scope.row,scope.$index)"
|
@change="changeArriveRunPlan($event,scope.row,scope.$index)"
|
||||||
>
|
>
|
||||||
|
<!-- :class="judgeColor({scope.row,scope.$index})" -->
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in filterSectionList"
|
v-for="item in filterSectionList"
|
||||||
:key="item.code"
|
:key="item.code"
|
||||||
@ -169,7 +176,7 @@
|
|||||||
<div class="runplanTableNo">7</div>
|
<div class="runplanTableNo">7</div>
|
||||||
</template>
|
</template>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.arriveRunPlan">{{ coverTime(scope.row.arriveRunPlan.planTime) }}</div>
|
<div v-if="scope.row.arriveRunPlan" class="noChange">{{ coverTime(scope.row.arriveRunPlan.planTime) }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="70" prop="arriveRunPlan.actualTime">
|
<el-table-column width="70" prop="arriveRunPlan.actualTime">
|
||||||
@ -177,6 +184,11 @@
|
|||||||
<div class="runplanTableTname runplanFourLevel">实<br>际</div>
|
<div class="runplanTableTname runplanFourLevel">实<br>际</div>
|
||||||
<div class="runplanTableNo">8</div>
|
<div class="runplanTableNo">8</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-if="scope.row.arriveRunPlan" style="line-height:28px" :class="scope.row.arriveRunPlan.finish? (scope.row.passenger=='PASSENGER'?'fontRed':'fontBlue'):'fontBlack'">
|
||||||
|
{{ scope.row.arriveRunPlan.actualTime }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -271,12 +283,18 @@
|
|||||||
<div class="runplanTableTname">下<br>行<br> </div>
|
<div class="runplanTableTname">下<br>行<br> </div>
|
||||||
<div class="runplanTableNo">19</div>
|
<div class="runplanTableNo">19</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-if="scope.row.departRunPlan" class="noChange">{{ scope.row.departRunPlan.down }}</div>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="80" prop="departRunPlan.up">
|
<el-table-column width="80" prop="departRunPlan.up">
|
||||||
<template slot="header">
|
<template slot="header">
|
||||||
<div class="runplanTableTname">上<br>行<br> </div>
|
<div class="runplanTableTname">上<br>行<br> </div>
|
||||||
<div class="runplanTableNo">20</div>
|
<div class="runplanTableNo">20</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-if="scope.row.departRunPlan" class="noChange">{{ scope.row.departRunPlan.up }}</div>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="60" prop="departRunPlan.sectionCode">
|
<el-table-column width="60" prop="departRunPlan.sectionCode">
|
||||||
@ -291,7 +309,6 @@
|
|||||||
placeholder=""
|
placeholder=""
|
||||||
size="mini"
|
size="mini"
|
||||||
popper-class="stationSelect"
|
popper-class="stationSelect"
|
||||||
@focus="focusDepartRunPlan($event,scope.row)"
|
|
||||||
@change="changeDepartRunPlan($event,scope.row,scope.$index)"
|
@change="changeDepartRunPlan($event,scope.row,scope.$index)"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
@ -309,7 +326,7 @@
|
|||||||
<div class="runplanTableNo">22</div>
|
<div class="runplanTableNo">22</div>
|
||||||
</template>
|
</template>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.departRunPlan" class="accessName" :title="scope.row.departRunPlan.accessName">{{ scope.row.departRunPlan.accessName }}</div>
|
<div v-if="scope.row.departRunPlan" class="noChange" :title="scope.row.departRunPlan.accessName">{{ scope.row.departRunPlan.accessName }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="时 分">
|
<el-table-column label="时 分">
|
||||||
@ -342,7 +359,7 @@
|
|||||||
<div class="runplanTableNo">25</div>
|
<div class="runplanTableNo">25</div>
|
||||||
</template>
|
</template>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.departRunPlan">{{ coverTime(scope.row.departRunPlan.planTime) }}</div>
|
<div v-if="scope.row.departRunPlan" class="noChange">{{ coverTime(scope.row.departRunPlan.planTime) }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="70" prop="departRunPlan.actualTime">
|
<el-table-column width="70" prop="departRunPlan.actualTime">
|
||||||
@ -350,6 +367,11 @@
|
|||||||
<div class="runplanTableTname runplanFourLevel">实<br>际</div>
|
<div class="runplanTableTname runplanFourLevel">实<br>际</div>
|
||||||
<div class="runplanTableNo">26</div>
|
<div class="runplanTableNo">26</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-if="scope.row.departRunPlan" :class="scope.row.departRunPlan.finish? (scope.row.passenger=='PASSENGER'?'fontRed':'fontBlue'):'fontBlack'">
|
||||||
|
{{ scope.row.departRunPlan.actualTime }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -422,7 +444,7 @@
|
|||||||
<div class="eachRpMenu" @click="modifyAdjacentStation">修改相关邻站</div>
|
<div class="eachRpMenu" @click="modifyAdjacentStation">修改相关邻站</div>
|
||||||
<div class="eachRpMenu" @click="deleteRunplan">删除</div>
|
<div class="eachRpMenu" @click="deleteRunplan">删除</div>
|
||||||
<div class="eachRpSep" />
|
<div class="eachRpSep" />
|
||||||
<div class="eachRpMenu">清楚闪烁</div>
|
<div class="eachRpMenu" @click="clearFlash">清除闪烁</div>
|
||||||
<div class="eachRpMenu">全体信息</div>
|
<div class="eachRpMenu">全体信息</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -483,7 +505,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<send-runplan ref="sendRunplan" @closeFlash="closeFlash" @noticeInfo="noticeInfo" />
|
<send-runplan ref="sendRunplan" @noticeInfo="noticeInfo" />
|
||||||
|
<!-- @closeFlash="closeFlash" -->
|
||||||
<stage-runplan ref="stageRunplan" @closeFlash="closeStageFlash" @noticeInfo="noticeInfo" />
|
<stage-runplan ref="stageRunplan" @closeFlash="closeStageFlash" @noticeInfo="noticeInfo" />
|
||||||
<modify-adjacent-station ref="modifyAdjacentStation" @clearRpRow="clearRpRow" @noticeInfo="noticeInfo" />
|
<modify-adjacent-station ref="modifyAdjacentStation" @clearRpRow="clearRpRow" @noticeInfo="noticeInfo" />
|
||||||
<delete-runplan ref="deleteRunplan" @clearRpRow="clearRpRow" @noticeInfo="noticeInfo" />
|
<delete-runplan ref="deleteRunplan" @clearRpRow="clearRpRow" @noticeInfo="noticeInfo" />
|
||||||
@ -542,8 +565,8 @@ export default {
|
|||||||
Rph:Rph,
|
Rph:Rph,
|
||||||
tableData:[],
|
tableData:[],
|
||||||
filterSectionList:[],
|
filterSectionList:[],
|
||||||
activeDepartRunPlan:{},
|
// activeDepartRunPlan:{},
|
||||||
activeArriveRunPlan:{},
|
// activeArriveRunPlan:{},
|
||||||
currentRailwaySimulationRunplan:{},
|
currentRailwaySimulationRunplan:{},
|
||||||
// radioSelected:''
|
// radioSelected:''
|
||||||
currentRow:null
|
currentRow:null
|
||||||
@ -560,11 +583,45 @@ export default {
|
|||||||
},
|
},
|
||||||
'$store.state.socket.railwaySimulationRunplanSendChange': function (val) {
|
'$store.state.socket.railwaySimulationRunplanSendChange': function (val) {
|
||||||
this.getRailwaySimulationRunplanSend();
|
this.getRailwaySimulationRunplanSend();
|
||||||
|
},
|
||||||
|
'$store.state.socket.changedCtcRunplanMap': function (val) {
|
||||||
|
this.judgeStationCtcRunplan();
|
||||||
|
},
|
||||||
|
// 仿真-仿真重置消息
|
||||||
|
'$store.state.socket.simulationReset': function (val) {
|
||||||
|
this.$store.dispatch('socket/resetRailCtcRunplanInitMsg');
|
||||||
|
this.loadData();
|
||||||
}
|
}
|
||||||
// railwaySimulationRunplanSendMap
|
|
||||||
// railwaySimulationRunplanSendChange
|
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
|
judgeColor({row, rowIndex}) {
|
||||||
|
if (row.effect) {
|
||||||
|
if (row.passenger == 'PASSENGER') {
|
||||||
|
return 'fontRed';
|
||||||
|
} else if (row.passenger == 'GOODS_TRAIN') {
|
||||||
|
return 'fontBlue';
|
||||||
|
} else {
|
||||||
|
return 'fontBlack';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (row.passenger == 'PASSENGER') {
|
||||||
|
return 'fontPink';
|
||||||
|
} else if (row.passenger == 'GOODS_TRAIN') {
|
||||||
|
return 'fontLightBlue';
|
||||||
|
} else {
|
||||||
|
return 'fontBlack';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
judgeStationCtcRunplan() {
|
||||||
|
const changedCtcRunplanMap = this.$store.state.socket.changedCtcRunplanMap;
|
||||||
|
const stationCode = this.$store.state.training.roleDeviceCode;
|
||||||
|
if (changedCtcRunplanMap[stationCode]) {
|
||||||
|
document.getElementById('sendRunplan').classList.add('active');
|
||||||
|
} else {
|
||||||
|
this.closeFlash();
|
||||||
|
}
|
||||||
|
},
|
||||||
getRailwaySimulationRunplanSend() {
|
getRailwaySimulationRunplanSend() {
|
||||||
const stationCode = this.$store.state.training.roleDeviceCode;
|
const stationCode = this.$store.state.training.roleDeviceCode;
|
||||||
const railwaySimulationRunplanSendMap = this.$store.state.socket.railwaySimulationRunplanSendMap;
|
const railwaySimulationRunplanSendMap = this.$store.state.socket.railwaySimulationRunplanSendMap;
|
||||||
@ -573,8 +630,8 @@ export default {
|
|||||||
document.getElementById('stageRunplan').classList.add('active');
|
document.getElementById('stageRunplan').classList.add('active');
|
||||||
this.currentRailwaySimulationRunplan = railwaySimulationRunplanSendMap;
|
this.currentRailwaySimulationRunplan = railwaySimulationRunplanSendMap;
|
||||||
} else {
|
} else {
|
||||||
const sendRunplan = document.getElementById('stageRunplan').className;
|
const stageRunplan = document.getElementById('stageRunplan').className;
|
||||||
document.getElementById('stageRunplan').className = sendRunplan.replace('active', '');
|
document.getElementById('stageRunplan').className = stageRunplan.replace('active', '');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
loadData() {
|
loadData() {
|
||||||
@ -594,8 +651,11 @@ export default {
|
|||||||
return data.stationCode == this.$store.state.training.roleDeviceCode;
|
return data.stationCode == this.$store.state.training.roleDeviceCode;
|
||||||
});
|
});
|
||||||
this.tableData.sort((prev, next)=>{
|
this.tableData.sort((prev, next)=>{
|
||||||
const prevPlanTime = prev.departRunPlan ? prev.departRunPlan.planTime : prev.arriveRunPlan ? prev.arriveRunPlan.planTime : '00:00:00';
|
const prevPlanTime = prev.departRunPlan ? (prev.departRunPlan.actualTime || prev.departRunPlan.planTime)
|
||||||
const nextPlanTime = next.departRunPlan ? next.departRunPlan.planTime : next.arriveRunPlan ? next.arriveRunPlan.planTime : '00:00:00';
|
: prev.arriveRunPlan ? (prev.arriveRunPlan.actualTime || prev.arriveRunPlan.planTime) : '00:00:00';
|
||||||
|
const nextPlanTime = next.departRunPlan ? (next.departRunPlan.actualTime || next.departRunPlan.planTime)
|
||||||
|
: next.arriveRunPlan ? (next.arriveRunPlan.actualTime || next.arriveRunPlan.planTime) : '00:00:00';
|
||||||
|
// const nextPlanTime = next.departRunPlan ? next.departRunPlan.planTime : next.arriveRunPlan ? next.arriveRunPlan.planTime : '00:00:00';
|
||||||
return new Date('2000-06-18 ' + prevPlanTime).getTime() - new Date('2000-06-18 ' + nextPlanTime).getTime();
|
return new Date('2000-06-18 ' + prevPlanTime).getTime() - new Date('2000-06-18 ' + nextPlanTime).getTime();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -611,6 +671,7 @@ export default {
|
|||||||
this.loadData();
|
this.loadData();
|
||||||
this.isShow = true;
|
this.isShow = true;
|
||||||
this.getRailwaySimulationRunplanSend();
|
this.getRailwaySimulationRunplanSend();
|
||||||
|
this.judgeStationCtcRunplan();
|
||||||
window.addEventListener('keydown', this.handleKeyDown);
|
window.addEventListener('keydown', this.handleKeyDown);
|
||||||
// arriveRunPlan: Object
|
// arriveRunPlan: Object
|
||||||
// code: "00110010"
|
// code: "00110010"
|
||||||
@ -654,7 +715,8 @@ export default {
|
|||||||
},
|
},
|
||||||
sendRunplan() {
|
sendRunplan() {
|
||||||
if (document.getElementById('sendRunplan').className.includes('active')) {
|
if (document.getElementById('sendRunplan').className.includes('active')) {
|
||||||
this.$refs.sendRunplan.doShow(this.tableData, this.activeDepartRunPlan, this.activeArriveRunPlan, this.filterSectionList);
|
this.$refs.sendRunplan.doShow(this.tableData, this.filterSectionList);
|
||||||
|
// this.activeDepartRunPlan, this.activeArriveRunPlan,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
stageRunplan() {
|
stageRunplan() {
|
||||||
@ -663,28 +725,56 @@ export default {
|
|||||||
this.$refs.stageRunplan.doShow(this.currentRailwaySimulationRunplan[stationCode]);
|
this.$refs.stageRunplan.doShow(this.currentRailwaySimulationRunplan[stationCode]);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
focusDepartRunPlan(event, row) {
|
|
||||||
this.activeDepartRunPlan[row.code] = {sectionCode:event, code:row.code};
|
|
||||||
},
|
|
||||||
// 发车股道
|
|
||||||
changeDepartRunPlan(event, row, index) {
|
changeDepartRunPlan(event, row, index) {
|
||||||
const activeDepart = this.activeDepartRunPlan[row.code];
|
const params = {
|
||||||
if (activeDepart) {
|
stationCode:row.stationCode,
|
||||||
activeDepart.changeSectionCode = event;
|
runPlanCode:row.code,
|
||||||
document.getElementById('sendRunplan').classList.add('active');
|
arriveSection:'',
|
||||||
}
|
departSection:row.departRunPlan.sectionCode,
|
||||||
|
force:1
|
||||||
|
};
|
||||||
|
commitOperate(menuOperate.CTC.modifyTrackSection, params, 3).then(({valid})=>{
|
||||||
|
this.loading = false;
|
||||||
|
if (valid) {
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
// const activeDepart = this.activeDepartRunPlan[row.code];
|
||||||
|
// if (activeDepart) {
|
||||||
|
// activeDepart.changeSectionCode = event;
|
||||||
|
// document.getElementById('sendRunplan').classList.add('active');
|
||||||
|
// }
|
||||||
// console.log(event, this.tableData[index].departRunPlan.sectionCode, row.departRunPlan.sectionCode, '------');
|
// console.log(event, this.tableData[index].departRunPlan.sectionCode, row.departRunPlan.sectionCode, '------');
|
||||||
},
|
},
|
||||||
focusArriveRunPlan(event, row) {
|
|
||||||
this.activeArriveRunPlan[row.code] = {sectionCode:event, code:row.code};
|
|
||||||
},
|
|
||||||
changeArriveRunPlan(event, row, index) {
|
changeArriveRunPlan(event, row, index) {
|
||||||
const activeArrive = this.activeArriveRunPlan[row.code];
|
const params = {
|
||||||
if (activeArrive) {
|
stationCode:row.stationCode,
|
||||||
activeArrive.changeSectionCode = event;
|
runPlanCode:row.code,
|
||||||
// if(activeArrive.changeSectionCode!=)
|
arriveSection:row.arriveRunPlan.sectionCode,
|
||||||
document.getElementById('sendRunplan').classList.add('active');
|
departSection:'',
|
||||||
}
|
force:1
|
||||||
|
};
|
||||||
|
// stationCode 车站编码
|
||||||
|
// runPlanCode 运行计划
|
||||||
|
// arriveSection 到达股道
|
||||||
|
// departSection 出发股道
|
||||||
|
// force 是否强制
|
||||||
|
// element.arriveRunPlan.sectionCode
|
||||||
|
// element.departRunPlan.sectionCode
|
||||||
|
commitOperate(menuOperate.CTC.modifyTrackSection, params, 3).then(({valid})=>{
|
||||||
|
this.loading = false;
|
||||||
|
if (valid) {
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
// const activeArrive = this.activeArriveRunPlan[row.code];
|
||||||
|
// if (activeArrive) {
|
||||||
|
// activeArrive.changeSectionCode = event;
|
||||||
|
// // if(activeArrive.changeSectionCode!=)
|
||||||
|
// document.getElementById('sendRunplan').classList.add('active');
|
||||||
|
// }
|
||||||
// CTC_MODIFY_TRACK_SECTION
|
// CTC_MODIFY_TRACK_SECTION
|
||||||
// 参数:
|
// 参数:
|
||||||
// * @param stationCode 车站编码
|
// * @param stationCode 车站编码
|
||||||
@ -704,18 +794,18 @@ export default {
|
|||||||
// force 是否强制 0:不强制。1:强制
|
// force 是否强制 0:不强制。1:强制
|
||||||
},
|
},
|
||||||
closeDialog() {
|
closeDialog() {
|
||||||
this.closeFlash();
|
// this.closeFlash();
|
||||||
this.doClose();
|
this.doClose();
|
||||||
this.activeDepartRunPlan = {};
|
// this.activeDepartRunPlan = {};
|
||||||
this.activeArriveRunPlan = {};
|
// this.activeArriveRunPlan = {};
|
||||||
},
|
},
|
||||||
closeFlash() {
|
closeFlash() {
|
||||||
const sendRunplan = document.getElementById('sendRunplan').className;
|
const sendRunplan = document.getElementById('sendRunplan').className;
|
||||||
document.getElementById('sendRunplan').className = sendRunplan.replace('active', '');
|
document.getElementById('sendRunplan').className = sendRunplan.replace('active', '');
|
||||||
},
|
},
|
||||||
closeStageFlash() {
|
closeStageFlash() {
|
||||||
const sendRunplan = document.getElementById('stageRunplan').className;
|
const stageRunplan = document.getElementById('stageRunplan').className;
|
||||||
document.getElementById('stageRunplan').className = sendRunplan.replace('active', '');
|
document.getElementById('stageRunplan').className = stageRunplan.replace('active', '');
|
||||||
const stationCode = this.$store.state.training.roleDeviceCode;
|
const stationCode = this.$store.state.training.roleDeviceCode;
|
||||||
this.$store.dispatch('socket/deleteRailwaySimulationRunplan', stationCode);
|
this.$store.dispatch('socket/deleteRailwaySimulationRunplan', stationCode);
|
||||||
},
|
},
|
||||||
@ -764,6 +854,24 @@ export default {
|
|||||||
this.rpMenuPopShow = false;
|
this.rpMenuPopShow = false;
|
||||||
this.$refs.deleteRunplan.doShow(this.currentRow);
|
this.$refs.deleteRunplan.doShow(this.currentRow);
|
||||||
},
|
},
|
||||||
|
// 清除闪烁
|
||||||
|
clearFlash() {
|
||||||
|
if (this.currentRow && this.currentRow.twinkle) {
|
||||||
|
event.stopPropagation();
|
||||||
|
this.rpMenuPopShow = false;
|
||||||
|
commitOperate(menuOperate.CTC.stationCancleTwinkle, {stationCode:this.currentRow.stationCode, runPlanCode: this.currentRow.code}, 3).then(({valid})=>{
|
||||||
|
this.loading = false;
|
||||||
|
this.clearRpRow();
|
||||||
|
if (valid) {
|
||||||
|
// this.doClose();
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false;
|
||||||
|
this.clearRpRow();
|
||||||
|
this.noticeInfo();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
// 发送发车预告
|
// 发送发车预告
|
||||||
sendNotcie() {
|
sendNotcie() {
|
||||||
// && this.currentRow.departRunPlan && this.currentRow.departRunPlan.adjacentMessage == 0
|
// && this.currentRow.departRunPlan && this.currentRow.departRunPlan.adjacentMessage == 0
|
||||||
@ -1028,6 +1136,14 @@ export default {
|
|||||||
-moz-animation:changeColor 1s infinite; /* Firefox */
|
-moz-animation:changeColor 1s infinite; /* Firefox */
|
||||||
-webkit-animation:changeColor 1s infinite; /* Safari and Chrome */
|
-webkit-animation:changeColor 1s infinite; /* Safari and Chrome */
|
||||||
}
|
}
|
||||||
|
.flashTrip{
|
||||||
|
animation:flashColor 1s infinite;
|
||||||
|
-moz-animation:flashColor 1s infinite; /* Firefox */
|
||||||
|
-webkit-animation:flashColor 1s infinite; /* Safari and Chrome */
|
||||||
|
}
|
||||||
|
.noChange{
|
||||||
|
line-height: 28px;
|
||||||
|
}
|
||||||
@keyframes changeColor
|
@keyframes changeColor
|
||||||
{
|
{
|
||||||
0% {background:#f0f0f0;}
|
0% {background:#f0f0f0;}
|
||||||
@ -1046,6 +1162,24 @@ export default {
|
|||||||
50% {background:#ff1900;}
|
50% {background:#ff1900;}
|
||||||
100% {background:#f0f0f0;}
|
100% {background:#f0f0f0;}
|
||||||
}
|
}
|
||||||
|
@keyframes flashColor
|
||||||
|
{
|
||||||
|
0% {background:#fff;}
|
||||||
|
50% {background:#ff1900;}
|
||||||
|
100% {background:#fff;}
|
||||||
|
}
|
||||||
|
@-moz-keyframes flashColor /* Firefox */
|
||||||
|
{
|
||||||
|
0% {background:#fff;}
|
||||||
|
50% {background:#ff1900;}
|
||||||
|
100% {background:#fff;}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes flashColor /* Safari and Chrome */
|
||||||
|
{
|
||||||
|
0% {background:#fff;}
|
||||||
|
50% {background:#ff1900;}
|
||||||
|
100% {background:#fff;}
|
||||||
|
}
|
||||||
.eachRpImage{display: inline-block;vertical-align: top;margin-top: 3px;}
|
.eachRpImage{display: inline-block;vertical-align: top;margin-top: 3px;}
|
||||||
.eachRpImageIn{height:26px;cursor: pointer;}
|
.eachRpImageIn{height:26px;cursor: pointer;}
|
||||||
.rpMenuPop{
|
.rpMenuPop{
|
||||||
@ -1122,4 +1256,9 @@ export default {
|
|||||||
}
|
}
|
||||||
.passagerTrain{background:#f00;width: 100%;height: 28px;}
|
.passagerTrain{background:#f00;width: 100%;height: 28px;}
|
||||||
.goodTrain{background:#00f;width: 100%;height: 28px;}
|
.goodTrain{background:#00f;width: 100%;height: 28px;}
|
||||||
|
.fontRed{color:#f00}
|
||||||
|
.fontBlue{color:#00f}
|
||||||
|
.fontBlack{color:#000}
|
||||||
|
.fontPink{color: #FF1493;}
|
||||||
|
.fontLightBlue{color: #87CEFA;}
|
||||||
</style>
|
</style>
|
||||||
|
@ -395,7 +395,12 @@ export default {
|
|||||||
CTC_ASSIST_PRESS_BLOCK:{value: 'ASSIST_PRESS_BLOCK', label: '阻塞'},
|
CTC_ASSIST_PRESS_BLOCK:{value: 'ASSIST_PRESS_BLOCK', label: '阻塞'},
|
||||||
CTC_ASSIST_PRESS_RESTORE:{value: 'ASSIST_PRESS_RESTORE', label: '复原'},
|
CTC_ASSIST_PRESS_RESTORE:{value: 'ASSIST_PRESS_RESTORE', label: '复原'},
|
||||||
CTC_ASSIST_PRESS_ACCIDENT:{value: 'ASSIST_PRESS_ACCIDENT', label: '事故'},
|
CTC_ASSIST_PRESS_ACCIDENT:{value: 'ASSIST_PRESS_ACCIDENT', label: '事故'},
|
||||||
CTC_BATCH_MODIFY_RUN_PLAN:{value: 'CTC_BATCH_MODIFY_RUN_PLAN', label: '批量修改股道'},
|
|
||||||
|
// CTC_BATCH_MODIFY_RUN_PLAN:{value: 'CTC_BATCH_MODIFY_RUN_PLAN', label: '批量修改股道'},
|
||||||
|
CTC_MODIFY_SECTION:{value: 'CTC_MODIFY_SECTION', label: '修改股道'},
|
||||||
|
CTC_STATION_SEND_OUT_RUN_PLAN:{value: 'CTC_STATION_SEND_OUT_RUN_PLAN', label: '车站发送计划'},
|
||||||
|
CTC_CANCEL_TWINKLE:{value: 'CTC_CANCEL_TWINKLE', label: '车站取消红闪'},
|
||||||
|
|
||||||
CTC_REMOVE_RUN_PLAN:{value: 'CTC_REMOVE_RUN_PLAN', label: '移除行车日志'},
|
CTC_REMOVE_RUN_PLAN:{value: 'CTC_REMOVE_RUN_PLAN', label: '移除行车日志'},
|
||||||
CTC_MODIFY_ADJACENT_STATION:{value: 'CTC_MODIFY_ADJACENT_STATION', label: '修改邻站信息'},
|
CTC_MODIFY_ADJACENT_STATION:{value: 'CTC_MODIFY_ADJACENT_STATION', label: '修改邻站信息'},
|
||||||
CTC_MODIFY_TRIP_NUMBER:{value: 'CTC_MODIFY_TRIP_NUMBER', label: '修改车次号(大铁CTC)'},
|
CTC_MODIFY_TRIP_NUMBER:{value: 'CTC_MODIFY_TRIP_NUMBER', label: '修改车次号(大铁CTC)'},
|
||||||
@ -415,14 +420,16 @@ export default {
|
|||||||
|
|
||||||
CTC_ZONE_SAVE_TRACK_SECTION:{value:'CTC_ZONE_SAVE_TRACK_SECTION', label: '调度台行车计划修改股道'},
|
CTC_ZONE_SAVE_TRACK_SECTION:{value:'CTC_ZONE_SAVE_TRACK_SECTION', label: '调度台行车计划修改股道'},
|
||||||
CTC_ZONE_SAVE_TRIP_NUMBER:{value:'CTC_ZONE_SAVE_TRIP_NUMBER', label: '调度台行车计划修改车次'},
|
CTC_ZONE_SAVE_TRIP_NUMBER:{value:'CTC_ZONE_SAVE_TRIP_NUMBER', label: '调度台行车计划修改车次'},
|
||||||
CTC_ZONE_SAVE_PLAN_TIME:{value:'CTC_ZONE_SAVE_PLAN_TIME', label: '调度台行车计划修改到达计划时间'},
|
CTC_ZONE_SAVE_PLAN_TIME:{value:'CTC_ZONE_SAVE_PLAN_TIME', label: '调度台行车计划修改时间'},
|
||||||
CTC_ZONE_SAVE_DIRECTION:{value:'CTC_ZONE_SAVE_DIRECTION', label: '调度台行车计划修改到出入口'},
|
CTC_ZONE_SAVE_DIRECTION:{value:'CTC_ZONE_SAVE_DIRECTION', label: '调度台行车计划修改出入口'},
|
||||||
CTC_ZONE_SAVE_STATION:{value:'CTC_ZONE_SAVE_STATION', label: '调度台行车计划修改到发车站'}
|
CTC_ZONE_SAVE_STATION:{value:'CTC_ZONE_SAVE_STATION', label: '调度台行车计划修改到发车站'}
|
||||||
|
|
||||||
},
|
},
|
||||||
RAIL: {
|
RAIL: {
|
||||||
CMD_RAIL_FILL_IN_TICKET: {value: 'RAIL_FILL_IN_TICKET', label: '填写票据'},
|
CMD_RAIL_FILL_IN_TICKET: {value: 'RAIL_FILL_IN_TICKET', label: '填写票据'},
|
||||||
CMD_RAIL_QUERY_TICKET: {value: 'RAIL_QUERY_TICKET', label: '查询票据'},
|
CMD_RAIL_QUERY_TICKET: {value: 'RAIL_QUERY_TICKET', label: '查询票据'},
|
||||||
CMD_RAIL_FILL_IN_REGISTER: {value: 'RAIL_FILL_IN_REGISTER', label: '填写行车簿册'},
|
CMD_RAIL_FILL_IN_REGISTER: {value: 'RAIL_FILL_IN_REGISTER', label: '填写行车簿册'},
|
||||||
CMD_RAIL_QUERY_REGISTER: {value: 'RAIL_QUERY_REGISTER', label: '查询行车簿册'}
|
CMD_RAIL_QUERY_REGISTER: {value: 'RAIL_QUERY_REGISTER', label: '查询行车簿册'},
|
||||||
|
CMD_RAIL_GIVE_TICKET_TO: {value: 'RAIL_GIVE_TICKET_TO', label: '给出票据'}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -3667,11 +3667,18 @@ export const OperationEvent = {
|
|||||||
domId: '_Tips-CTC-AssistPressAccident-Menu{TOP}'
|
domId: '_Tips-CTC-AssistPressAccident-Menu{TOP}'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 批量修改股道
|
// // 批量修改股道
|
||||||
batchModifyTrackSection:{
|
// batchModifyTrackSection:{
|
||||||
|
// menu: {
|
||||||
|
// operation: '1111',
|
||||||
|
// domId: '_Tips-CTC-batchModifyTrackSection-Menu{TOP}'
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// 修改股道
|
||||||
|
modifyTrackSection:{
|
||||||
menu: {
|
menu: {
|
||||||
operation: '1111',
|
operation: '1111',
|
||||||
domId: '_Tips-CTC-batchModifyTrackSection-Menu{TOP}'
|
domId: '_Tips-CTC-modifyTrackSection-Menu{TOP}'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 移除行车日志
|
// 移除行车日志
|
||||||
@ -3820,7 +3827,37 @@ export const OperationEvent = {
|
|||||||
operation: '1132',
|
operation: '1132',
|
||||||
domId: '_Tips-CTC-modifyDispatcherLogerRpSection-Menu{TOP}'
|
domId: '_Tips-CTC-modifyDispatcherLogerRpSection-Menu{TOP}'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
// 车站发送计划
|
||||||
|
stationSendRunplan:{
|
||||||
|
menu: {
|
||||||
|
operation: '1133',
|
||||||
|
domId: '_Tips-CTC-stationSendRunplan-Menu{TOP}'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 车站取消红闪
|
||||||
|
stationCancleTwinkle:{
|
||||||
|
menu: {
|
||||||
|
operation: '1134',
|
||||||
|
domId: '_Tips-CTC-stationCancleTwinkle-Menu{TOP}'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 调度台行车计划修改时间
|
||||||
|
modifyDispatcherLogerRpPlanTime:{
|
||||||
|
menu: {
|
||||||
|
operation: '1135',
|
||||||
|
domId: '_Tips-CTC-modifyDispatcherLogerRpPlanTime-Menu{TOP}'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 调度台行车计划修改出入口
|
||||||
|
modifyDispatcherLogerRpDirection:{
|
||||||
|
menu: {
|
||||||
|
operation: '1136',
|
||||||
|
domId: '_Tips-CTC-modifyDispatcherLogerRpDirection-Menu{TOP}'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// CTC_ZONE_SAVE_TRIP_NUMBER
|
||||||
|
// CTC_ZONE_SAVE_STATION
|
||||||
},
|
},
|
||||||
RailCommand: {
|
RailCommand: {
|
||||||
railFillInTicket: {
|
railFillInTicket: {
|
||||||
@ -3846,6 +3883,12 @@ export const OperationEvent = {
|
|||||||
operation: '1204',
|
operation: '1204',
|
||||||
domId: '_Tips-Rail-railQueryTicket'
|
domId: '_Tips-Rail-railQueryTicket'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
railGiveTicketTo: {
|
||||||
|
menu: {
|
||||||
|
operation: '1205',
|
||||||
|
domId: '_Tips-Rail-railGiveTicketTo'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -269,6 +269,14 @@ function handle(state, data) {
|
|||||||
case 'SIMULATION_RAIL_CTC_DISPATCH_COMMAND':
|
case 'SIMULATION_RAIL_CTC_DISPATCH_COMMAND':
|
||||||
state.dispatchCommandMsg = msg;
|
state.dispatchCommandMsg = msg;
|
||||||
break;
|
break;
|
||||||
|
// 车站发送计划信息
|
||||||
|
case 'SIMULATION_CTC_RUN_PLAN_CONFIRM_SEND':
|
||||||
|
state.changedCtcRunplanMap = msg;
|
||||||
|
break;
|
||||||
|
case 'SIMULATION_RAIL_TICKET':
|
||||||
|
state.ticketInfo = msg;
|
||||||
|
break;
|
||||||
|
//
|
||||||
// // 大铁项目 调度台 运行图信息 初始化消息
|
// // 大铁项目 调度台 运行图信息 初始化消息
|
||||||
// case 'SIMULATION_RAILWAY_RUN_PLAN_INIT':
|
// case 'SIMULATION_RAILWAY_RUN_PLAN_INIT':
|
||||||
// state.railwaySimulationRpMsg = {};
|
// state.railwaySimulationRpMsg = {};
|
||||||
@ -400,6 +408,7 @@ const socket = {
|
|||||||
overConversition: {}, // 仿真会话结束
|
overConversition: {}, // 仿真会话结束
|
||||||
exitConversition: {}, // 仿真成员退出会话
|
exitConversition: {}, // 仿真成员退出会话
|
||||||
conversationInfo: {}, // 仿真会话消息
|
conversationInfo: {}, // 仿真会话消息
|
||||||
|
ticketInfo: {}, // 路票消息
|
||||||
|
|
||||||
message: {}, // 仿真聊天
|
message: {}, // 仿真聊天
|
||||||
msgQueue: [], // 命令请求列表(旧版控制权转移可能在用,新版不用这个)
|
msgQueue: [], // 命令请求列表(旧版控制权转移可能在用,新版不用这个)
|
||||||
@ -445,6 +454,7 @@ const socket = {
|
|||||||
loggedOutMsg: '',
|
loggedOutMsg: '',
|
||||||
railCtcStatusMsg: {}, // 占线板信息
|
railCtcStatusMsg: {}, // 占线板信息
|
||||||
dispatchCommandMsg: {}, // 调度命令信息
|
dispatchCommandMsg: {}, // 调度命令信息
|
||||||
|
changedCtcRunplanMap:{}, // 大铁项目 ctc 被修改运行计划的车站信息
|
||||||
railCtcRunplanInitMsg:{}, // 大铁项目 ctc 运行图初始化信息
|
railCtcRunplanInitMsg:{}, // 大铁项目 ctc 运行图初始化信息
|
||||||
railCtcRunplanChange:0, // 大铁项目 ctc 运行图信息变化
|
railCtcRunplanChange:0, // 大铁项目 ctc 运行图信息变化
|
||||||
railCtcStationManageRpMsg:{}, // 大铁项目 ctc 车务管理 端运行图信息
|
railCtcStationManageRpMsg:{}, // 大铁项目 ctc 车务管理 端运行图信息
|
||||||
@ -545,6 +555,9 @@ const socket = {
|
|||||||
},
|
},
|
||||||
clearDispatchCommandMsg: (state, data) => {
|
clearDispatchCommandMsg: (state, data) => {
|
||||||
state.dispatchCommandMsg = {};
|
state.dispatchCommandMsg = {};
|
||||||
|
},
|
||||||
|
resetRailCtcRunplanInitMsg: (state) => {
|
||||||
|
state.railCtcRunplanInitMsg = {};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -642,6 +655,9 @@ const socket = {
|
|||||||
},
|
},
|
||||||
deleteRailwaySimulationRunplan:({ commit }, stationCode) => {
|
deleteRailwaySimulationRunplan:({ commit }, stationCode) => {
|
||||||
commit('deleteRailwaySimulationRunplan', stationCode);
|
commit('deleteRailwaySimulationRunplan', stationCode);
|
||||||
|
},
|
||||||
|
resetRailCtcRunplanInitMsg:({ commit }) => {
|
||||||
|
commit('resetRailCtcRunplanInitMsg');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -450,7 +450,6 @@ const training = {
|
|||||||
rtn && rtn.valid && commit('next');
|
rtn && rtn.valid && commit('next');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(rtn, '*********');
|
|
||||||
resolve(rtn);
|
resolve(rtn);
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
// console.error(error);
|
// console.error(error);
|
||||||
|
@ -173,7 +173,23 @@ export default {
|
|||||||
filterDepSectionList:[],
|
filterDepSectionList:[],
|
||||||
filterSectionList:[],
|
filterSectionList:[],
|
||||||
trainTypeList:[
|
trainTypeList:[
|
||||||
{name:'跨局快速旅客列车', code:'FAST_PASSENGER_TRAIN' }
|
// 管内列车
|
||||||
|
{name:'管内特快旅客列车', code:'LOCAL_EXPRESS_PASSENGER_TRAIN' },
|
||||||
|
{name:'管内快速旅客列车', code:'LOCAL_FAST_PASSENGER_TRAIN' },
|
||||||
|
{name:'管内普通旅客快车', code:'LOCAL_PASSENGER_TRAIN' },
|
||||||
|
{name:'管内普通旅客慢车', code:'LOCAL_SLOW_PASSENGER_TRAIN' },
|
||||||
|
{name:'管内临时旅客列车', code:'LOCAL_TEMPORARY_PASSENGER_TRAIN' },
|
||||||
|
{name:'管内临时旅游列车', code:'LOCAL_TEMPORARY_TOURIST_TRAIN' },
|
||||||
|
// 跨局列车
|
||||||
|
{name:'跨局快速旅客列车', code:'FAST_PASSENGER_TRAIN' },
|
||||||
|
{name:'跨局临时旅游列车', code:'TEMPORARY_TOURIST_TRAIN' },
|
||||||
|
{name:'跨两局普通旅客快车', code:'TWO_PASSENGER_TRAIN' },
|
||||||
|
{name:'跨两局普通旅客慢车', code:'TWO_SLOW_PASSENGER_TRAIN' },
|
||||||
|
{name:'跨两局临时旅客列车', code:'TWO_TEMPORARY_PASSENGER_TRAIN' },
|
||||||
|
{name:'跨三局及其以上普通旅客快车', code:'MORE_PASSENGER_TRAIN' },
|
||||||
|
// 其他列车
|
||||||
|
{name:'回送出入厂客车底列车', code:'BACK_FACTORY_PASSENGER_TRAIN' },
|
||||||
|
{name:'因故折返旅客列车', code:'FAULT_TRUE_BACK_PASSENGER_TRAIN' }
|
||||||
],
|
],
|
||||||
runTypeList:[
|
runTypeList:[
|
||||||
{name:'快速旅客列车', code:'FAST_PASSENGER_TRAIN' }
|
{name:'快速旅客列车', code:'FAST_PASSENGER_TRAIN' }
|
||||||
@ -246,8 +262,8 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
doShow({filterSectionList, mapStationDirectionMap}) {
|
doShow({filterSectionList, mapStationDirectionList}) {
|
||||||
this.mapStationDirectionList = Object.values(mapStationDirectionMap);
|
this.mapStationDirectionList = mapStationDirectionList;
|
||||||
this.filterSectionList = filterSectionList;
|
this.filterSectionList = filterSectionList;
|
||||||
this.dialogShow = true;
|
this.dialogShow = true;
|
||||||
this.$nextTick(function () {
|
this.$nextTick(function () {
|
||||||
|
@ -67,7 +67,22 @@
|
|||||||
<el-table-column prop="arriveDirectionCode" label="接车口">
|
<el-table-column prop="arriveDirectionCode" label="接车口">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.arriveDirectionCode" class="accessName" :title="scope.row.arriveDirectionCode">
|
<div v-if="scope.row.arriveDirectionCode" class="accessName" :title="scope.row.arriveDirectionCode">
|
||||||
{{ mapStationDirectionData[scope.row.arriveDirectionCode].name }}
|
<!-- {{ mapStationDirectionData[scope.row.arriveDirectionCode].name }} -->
|
||||||
|
<el-select
|
||||||
|
v-model="tableData[scope.$index].arriveDirectionCode"
|
||||||
|
placeholder=""
|
||||||
|
size="mini"
|
||||||
|
:disabled="scope.row.status==-1"
|
||||||
|
popper-class="stationSelect"
|
||||||
|
@change="changeArriveDirectionCode($event,scope.row,scope.$index)"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in mapStationDirectionData.filter(station=>{return station.stationCode == scope.row.stationCode})"
|
||||||
|
:key="item.code"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.code"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -75,32 +90,49 @@
|
|||||||
<el-table-column prop="departDirectionCode" label="发车口">
|
<el-table-column prop="departDirectionCode" label="发车口">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.departDirectionCode" class="accessName" :title="scope.row.departDirectionCode">
|
<div v-if="scope.row.departDirectionCode" class="accessName" :title="scope.row.departDirectionCode">
|
||||||
{{ mapStationDirectionData[scope.row.departDirectionCode].name }}
|
<!-- {{ mapStationDirectionData[scope.row.departDirectionCode].name }} -->
|
||||||
|
<el-select
|
||||||
|
v-model="tableData[scope.$index].departDirectionCode"
|
||||||
|
placeholder=""
|
||||||
|
size="mini"
|
||||||
|
:disabled="scope.row.status==-1"
|
||||||
|
popper-class="stationSelect"
|
||||||
|
@change="changeDepartDirectionCode($event,scope.row,scope.$index)"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in mapStationDirectionData.filter(station=>{return station.stationCode == scope.row.stationCode})"
|
||||||
|
:key="item.code"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.code"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="155" prop="arriveSectionCode" label="接车股道">
|
<el-table-column width="155" prop="arriveSectionCode" label="接车股道">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-select
|
<div v-if="scope.row.arriveSectionCode" class="accessName">
|
||||||
v-model="tableData[scope.$index].arriveSectionCode"
|
<el-select
|
||||||
placeholder=""
|
v-model="tableData[scope.$index].arriveSectionCode"
|
||||||
size="mini"
|
placeholder=""
|
||||||
:disabled="scope.row.status==-1"
|
size="mini"
|
||||||
popper-class="stationSelect"
|
:disabled="scope.row.status==-1"
|
||||||
@change="changeArriveRunPlan($event,scope.row,scope.$index)"
|
popper-class="stationSelect"
|
||||||
>
|
@change="changeArriveRunPlan($event,scope.row,scope.$index)"
|
||||||
<el-option
|
>
|
||||||
v-for="item in filterSectionList"
|
<el-option
|
||||||
:key="item.code"
|
v-for="item in filterSectionList.filter(section=>{return section.stationCode == scope.row.stationCode})"
|
||||||
:label="item.name"
|
:key="item.code"
|
||||||
:value="item.code"
|
:label="item.name"
|
||||||
/>
|
:value="item.code"
|
||||||
</el-select>
|
/>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
<!--
|
<!--
|
||||||
electrical
|
electrical
|
||||||
电力
|
电力
|
||||||
passenger
|
passenger
|
||||||
办理客运 -->
|
办理客运 -->
|
||||||
<!-- <div v-if="scope.row.arriveSectionCode" class="accessName">
|
<!-- <div v-if="scope.row.arriveSectionCode" class="accessName">
|
||||||
{{ filterSectionMap[scope.row.arriveSectionCode].name }}
|
{{ filterSectionMap[scope.row.arriveSectionCode].name }}
|
||||||
</div>
|
</div>
|
||||||
@ -108,37 +140,41 @@ passenger
|
|||||||
</template></el-table-column>
|
</template></el-table-column>
|
||||||
<el-table-column width="155" prop="departSectionCode" label="发车股道">
|
<el-table-column width="155" prop="departSectionCode" label="发车股道">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-select
|
<div v-if="scope.row.departSectionCode" class="accessName">
|
||||||
v-model="tableData[scope.$index].departSectionCode"
|
<el-select
|
||||||
placeholder=""
|
v-model="tableData[scope.$index].departSectionCode"
|
||||||
size="mini"
|
placeholder=""
|
||||||
popper-class="stationSelect"
|
size="mini"
|
||||||
:disabled="scope.row.status==-1"
|
popper-class="stationSelect"
|
||||||
@change="changeDepartRunPlan($event,scope.row,scope.$index)"
|
:disabled="scope.row.status==-1"
|
||||||
>
|
@change="changeDepartRunPlan($event,scope.row,scope.$index)"
|
||||||
<el-option
|
>
|
||||||
v-for="item in filterSectionList"
|
<el-option
|
||||||
:key="item.code"
|
v-for="item in filterSectionList.filter(section=>{return section.stationCode == scope.row.stationCode})"
|
||||||
:label="item.name"
|
:key="item.code"
|
||||||
:value="item.code"
|
:label="item.name"
|
||||||
/>
|
:value="item.code"
|
||||||
</el-select>
|
/>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
<!-- <div v-if="scope.row.departSectionCode" class="accessName">
|
<!-- <div v-if="scope.row.departSectionCode" class="accessName">
|
||||||
{{ filterSectionMap[scope.row.departSectionCode].name }}
|
{{ filterSectionMap[scope.row.departSectionCode].name }}
|
||||||
</div> -->
|
</div> -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="155" prop="arrivePlanTime" label="到达时间">
|
<el-table-column width="175" prop="arrivePlanTime" label="到达时间">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.arrivePlanTime" class="accessName">
|
<div v-if="scope.row.arrivePlanTime" class="accessName">
|
||||||
{{ scope.row.arrivePlanTime }}
|
<!-- {{ scope.row.arrivePlanTime }} -->
|
||||||
|
<el-date-picker v-model="scope.row.arrivePlanTime" size="mini" type="datetime" value-format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" style="width:165px" @change="changeArrivePlanTime($event,scope.row,scope.$index)" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="155" prop="departPlanTime" label="出发时间">
|
<el-table-column width="175" prop="departPlanTime" label="出发时间">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.departPlanTime" class="accessName">
|
<div v-if="scope.row.departPlanTime" class="accessName">
|
||||||
{{ scope.row.departPlanTime }}
|
<!-- {{ scope.row.departPlanTime }} -->
|
||||||
|
<el-date-picker v-model="scope.row.departPlanTime" size="mini" type="datetime" value-format="yyyy-MM-dd HH:mm" style="width:165px" format="yyyy-MM-dd HH:mm" @change="changeDepartPlanTime($event,scope.row,scope.$index)" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -171,6 +207,7 @@ export default {
|
|||||||
isShow:false,
|
isShow:false,
|
||||||
height: this.$store.state.app.height - 37,
|
height: this.$store.state.app.height - 37,
|
||||||
filterSectionList:[],
|
filterSectionList:[],
|
||||||
|
mapStationDirectionData:[],
|
||||||
// filterSectionMap:{},
|
// filterSectionMap:{},
|
||||||
tableData:[],
|
tableData:[],
|
||||||
group:'',
|
group:'',
|
||||||
@ -182,10 +219,7 @@ export default {
|
|||||||
computed: {
|
computed: {
|
||||||
...mapGetters('map', [
|
...mapGetters('map', [
|
||||||
'sectionList'
|
'sectionList'
|
||||||
]),
|
])
|
||||||
mapStationDirectionData() {
|
|
||||||
return this.$store.state.map.mapStationDirectionData;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
watch:{
|
watch:{
|
||||||
// '$store.state.socket.railwaySimulationRpChange': function (val) {
|
// '$store.state.socket.railwaySimulationRpChange': function (val) {
|
||||||
@ -216,6 +250,7 @@ export default {
|
|||||||
},
|
},
|
||||||
doShow() {
|
doShow() {
|
||||||
this.loadFilterSectionMap();
|
this.loadFilterSectionMap();
|
||||||
|
this.mapStationDirectionData = Object.values(this.$store.state.map.mapStationDirectionData);
|
||||||
// this.tableData = [];
|
// this.tableData = [];
|
||||||
// this.loadData();
|
// this.loadData();
|
||||||
this.isShow = true;
|
this.isShow = true;
|
||||||
@ -248,6 +283,55 @@ export default {
|
|||||||
changeDepartRunPlan(event, row, index) {
|
changeDepartRunPlan(event, row, index) {
|
||||||
this.modifyDispatcherLogerRpSection(row, row.departSectionCode, 'D');
|
this.modifyDispatcherLogerRpSection(row, row.departSectionCode, 'D');
|
||||||
},
|
},
|
||||||
|
//
|
||||||
|
|
||||||
|
changeArrivePlanTime(event, row, index) {
|
||||||
|
this.modifyDispatcherLogerRpPlanTime(row, row.arrivePlanTime, 'R');
|
||||||
|
},
|
||||||
|
changeDepartPlanTime(event, row, index) {
|
||||||
|
this.modifyDispatcherLogerRpPlanTime(row, row.departPlanTime, 'D');
|
||||||
|
},
|
||||||
|
changeArriveDirectionCode(event, row, index) {
|
||||||
|
this.modifyDispatcherLogerRpDirection(row, row.arriveDirectionCode, 'R');
|
||||||
|
},
|
||||||
|
changeDepartDirectionCode(event, row, index) {
|
||||||
|
this.modifyDispatcherLogerRpDirection(row, row.departDirectionCode, 'D');
|
||||||
|
},
|
||||||
|
// 调度台行车计划修改出入口
|
||||||
|
modifyDispatcherLogerRpDirection(row, directionCode, type) {
|
||||||
|
const params = {stationCode:row.stationCode, runPlanCode:row.runPlanCode, directionCode:directionCode, model:type};
|
||||||
|
commitOperate(menuOperate.CTC.modifyDispatcherLogerRpDirection, params, 3).then(({valid, response})=>{
|
||||||
|
if (valid) {
|
||||||
|
const reslut = response.data;
|
||||||
|
this.tableData.map(data=>{
|
||||||
|
if (data.stationCode == reslut.stationCode && data.runPlanCode == reslut.runPlanCode) {
|
||||||
|
data.arriveDirectionCode = reslut.arriveDirectionCode;
|
||||||
|
data.departDirectionCode = reslut.departDirectionCode;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
// this.$message.error('发布失败');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 调度台行车计划修改时间
|
||||||
|
modifyDispatcherLogerRpPlanTime(row, planTime, type) {
|
||||||
|
const params = {stationCode:row.stationCode, runPlanCode:row.runPlanCode, planTime:planTime, model:type};
|
||||||
|
commitOperate(menuOperate.CTC.modifyDispatcherLogerRpPlanTime, params, 3).then(({valid, response})=>{
|
||||||
|
if (valid) {
|
||||||
|
const reslut = response.data;
|
||||||
|
this.tableData.map(data=>{
|
||||||
|
if (data.stationCode == reslut.stationCode && data.runPlanCode == reslut.runPlanCode) {
|
||||||
|
data.arrivePlanTime = reslut.arrivePlanTime;
|
||||||
|
data.departPlanTime = reslut.departPlanTime;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
// this.$message.error('发布失败');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 修改发车时间
|
||||||
modifyDispatcherLogerRpSection(row, sectionCode, type) {
|
modifyDispatcherLogerRpSection(row, sectionCode, type) {
|
||||||
// stationCode 车站编码
|
// stationCode 车站编码
|
||||||
// runPlanCode 运行计划编码
|
// runPlanCode 运行计划编码
|
||||||
@ -304,7 +388,7 @@ export default {
|
|||||||
addRunplan() {
|
addRunplan() {
|
||||||
this.$refs.addDispatcherLogerRunplan.doShow({
|
this.$refs.addDispatcherLogerRunplan.doShow({
|
||||||
filterSectionList:this.filterSectionList,
|
filterSectionList:this.filterSectionList,
|
||||||
mapStationDirectionMap:this.mapStationDirectionData
|
mapStationDirectionList:this.mapStationDirectionData
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
selectedTripNumber(row, column, cell, event) {
|
selectedTripNumber(row, column, cell, event) {
|
||||||
|
@ -26,14 +26,18 @@
|
|||||||
<div class="top-title">收令箱</div>
|
<div class="top-title">收令箱</div>
|
||||||
<div class="top-table">
|
<div class="top-table">
|
||||||
<el-table :data="cmdTableData" style="width: 100%" height="160" highlight-current-row :row-class-name="tableRowClassName" @current-change="handleCurrentChange">
|
<el-table :data="cmdTableData" style="width: 100%" height="160" highlight-current-row :row-class-name="tableRowClassName" @current-change="handleCurrentChange">
|
||||||
<el-table-column prop="title" label="标题" />
|
<el-table-column prop="title" label="标题" show-overflow-tooltip />
|
||||||
<el-table-column prop="number" label="号码" width="80" />
|
<el-table-column prop="number" label="号码" width="80" />
|
||||||
<el-table-column label="命令类型" width="100">
|
<el-table-column label="命令类型" width="100">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span style="margin-left: 10px">{{ typeObj[scope.row.type] || '' }}</span>
|
<span style="margin-left: 10px">{{ typeObj[scope.row.type] || '' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="sendTime" label="收令日期" width="160" />
|
<el-table-column prop="sendTime" label="收令日期" width="160">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ getSignInfo(scope.row.receiverInfos).receivedTime || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="companyOfSender" label="发令单位" />
|
<el-table-column prop="companyOfSender" label="发令单位" />
|
||||||
<el-table-column prop="senderName" label="发令人" />
|
<el-table-column prop="senderName" label="发令人" />
|
||||||
<el-table-column label="签否">
|
<el-table-column label="签否">
|
||||||
@ -153,22 +157,9 @@ export default {
|
|||||||
},
|
},
|
||||||
getTableData() {
|
getTableData() {
|
||||||
const receiverList = Object.values(this.currentInfo.receiverInfos || {});
|
const receiverList = Object.values(this.currentInfo.receiverInfos || {});
|
||||||
const mList = [];
|
|
||||||
receiverList.forEach(ii => {
|
|
||||||
const obj = this.memberList.find(item => {
|
|
||||||
return item.id == ii.receiverId;
|
|
||||||
});
|
|
||||||
if (obj) {
|
|
||||||
mList.push({
|
|
||||||
commandId: this.commandId,
|
|
||||||
...ii,
|
|
||||||
...obj
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const list = [];
|
const list = [];
|
||||||
mList.forEach(item => {
|
receiverList.forEach(item => {
|
||||||
const device = this.$store.getters['map/getDeviceByCode'](item.deviceCode);
|
const device = this.$store.getters['map/getDeviceByCode'](item.receiverId);
|
||||||
const obj = {
|
const obj = {
|
||||||
...this.currentInfo,
|
...this.currentInfo,
|
||||||
...item,
|
...item,
|
||||||
@ -201,6 +192,7 @@ export default {
|
|||||||
return 'unsigned-row';
|
return 'unsigned-row';
|
||||||
},
|
},
|
||||||
doShow() {
|
doShow() {
|
||||||
|
this.searchCmd();
|
||||||
this.dialogShow = true;
|
this.dialogShow = true;
|
||||||
this.$store.commit('socket/clearDispatchCommandMsg');
|
this.$store.commit('socket/clearDispatchCommandMsg');
|
||||||
},
|
},
|
||||||
@ -209,9 +201,30 @@ export default {
|
|||||||
},
|
},
|
||||||
handleCurrentChange(obj) {
|
handleCurrentChange(obj) {
|
||||||
this.currentInfo = obj;
|
this.currentInfo = obj;
|
||||||
|
if (!this.getSignInfo(obj.receiverInfos).receivedTime) {
|
||||||
|
const data = {
|
||||||
|
commandId: obj.id
|
||||||
|
};
|
||||||
|
sendCommandNew(this.group, 'CTC_READ_DISPATCH_COMMAND', data).then((res) => {
|
||||||
|
console.log(res, '---res');
|
||||||
|
const index = this.cmdTableData.findIndex(item => {
|
||||||
|
return item.id == obj.id;
|
||||||
|
});
|
||||||
|
if (index >= 0) {
|
||||||
|
const obj = this.cmdTableData[index];
|
||||||
|
const devCode = this.getActiveUser.deviceCode || '';
|
||||||
|
if (obj.receiverInfos[devCode]) {
|
||||||
|
obj.receiverInfos[devCode].receivedTime = parseTime(this.initTime);
|
||||||
|
this.cmdTableData.splice(index, 1, obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
console.log(error, '---已读命令error');
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
getSignInfo(info) {
|
getSignInfo(info) {
|
||||||
const obj = info[this.getActiveUser.memberId] || {};
|
const obj = info[this.getActiveUser.deviceCode] || {};
|
||||||
return obj;
|
return obj;
|
||||||
},
|
},
|
||||||
getSignedBy(info) {
|
getSignedBy(info) {
|
||||||
@ -241,20 +254,40 @@ export default {
|
|||||||
this.$messageBox(`${this.signedStatusObj[status]}调度命令失败:${error.message}`);
|
this.$messageBox(`${this.signedStatusObj[status]}调度命令失败:${error.message}`);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
changeReadStatus(signInfo) {
|
||||||
|
const index = this.cmdTableData.findIndex(item => {
|
||||||
|
return item.id == signInfo.commandId;
|
||||||
|
});
|
||||||
|
if (index >= 0) {
|
||||||
|
const obj = this.cmdTableData[index];
|
||||||
|
const devCode = this.getActiveUser.deviceCode || '';
|
||||||
|
if (obj.receiverInfos[devCode]) {
|
||||||
|
const mId = signInfo.signedBy;
|
||||||
|
obj.receiverInfos[devCode].signedBy = mId;
|
||||||
|
obj.receiverInfos[devCode].signedStatus = signInfo.signedStatus;
|
||||||
|
obj.receiverInfos[devCode].time = parseTime(this.initTime);
|
||||||
|
this.cmdTableData.splice(index, 1, obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
changeSignedStatus(signInfo) {
|
changeSignedStatus(signInfo) {
|
||||||
const index = this.cmdTableData.findIndex(item => {
|
const index = this.cmdTableData.findIndex(item => {
|
||||||
return item.id == signInfo.commandId;
|
return item.id == signInfo.commandId;
|
||||||
});
|
});
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
const obj = this.cmdTableData[index];
|
const obj = this.cmdTableData[index];
|
||||||
const mId = signInfo.signedBy;
|
const devCode = this.getActiveUser.deviceCode || '';
|
||||||
obj.receiverInfos[mId].signedBy = mId;
|
if (obj.receiverInfos[devCode]) {
|
||||||
obj.receiverInfos[mId].signedStatus = signInfo.signedStatus;
|
const mId = signInfo.signedBy;
|
||||||
obj.receiverInfos[mId].time = parseTime(this.initTime);
|
obj.receiverInfos[devCode].signedBy = mId;
|
||||||
this.cmdTableData.splice(index, 1, obj);
|
obj.receiverInfos[devCode].signedStatus = signInfo.signedStatus;
|
||||||
|
obj.receiverInfos[devCode].time = parseTime(this.initTime);
|
||||||
|
this.cmdTableData.splice(index, 1, obj);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
searchCmd() {
|
searchCmd() {
|
||||||
|
this.cmdTableData = [];
|
||||||
sendCommandNew(this.group, 'CTC_QUERY_DISPATCH_COMMAND').then((res) => {
|
sendCommandNew(this.group, 'CTC_QUERY_DISPATCH_COMMAND').then((res) => {
|
||||||
console.log(res, '---res');
|
console.log(res, '---res');
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
|
@ -19,7 +19,132 @@
|
|||||||
<el-tab-pane label="操作" name="operate">
|
<el-tab-pane label="操作" name="operate">
|
||||||
<div class="operate-box">
|
<div class="operate-box">
|
||||||
<div class="create-cmd">
|
<div class="create-cmd">
|
||||||
<el-button type="primary" @click="createCmd">新建调度命令</el-button>
|
<!-- <span>数据库正常</span> -->
|
||||||
|
<div>
|
||||||
|
<!-- <el-input-number v-model="numTime" controls-position="right" :min="1" :max="24" size="mini" style="width: 83px" /> -->
|
||||||
|
<el-select v-model="numTime" placeholder="请选择" style="width: 66px;">
|
||||||
|
<el-option label="24" value="24" />
|
||||||
|
<el-option label="12" value="12" />
|
||||||
|
</el-select>
|
||||||
|
<span>小时</span>
|
||||||
|
</div>
|
||||||
|
<span style="width: 85px; font-weight: bold; text-align: end;">{{ getSimulationTime }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="create-cmd">
|
||||||
|
<!-- <span>通信正常</span> -->
|
||||||
|
<el-button type="primary" @click="refreshSearch">刷新</el-button>
|
||||||
|
<el-button type="primary" style="width: 100px" @click="createCmd">新建调度命令</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="box-title">
|
||||||
|
<div class="contant-null" />
|
||||||
|
<div class="contant-text">缓存命令</div>
|
||||||
|
<div class="contant-icon" @click="active1=!active1">
|
||||||
|
<i v-if="active1" class="el-icon-arrow-down" />
|
||||||
|
<i v-else class="el-icon-arrow-up" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-show="active1" class="left-table1">
|
||||||
|
<el-table ref="table1" :data="cacheTableData" border style="width: 100%" height="100" highlight-current-row @current-change="handleCurrentChange($event, 'table1')">
|
||||||
|
<el-table-column prop="number" label="命令号" width="80" />
|
||||||
|
<el-table-column prop="deviceName" label="识别号" width="80" />
|
||||||
|
<el-table-column prop="title" label="命令标题" show-overflow-tooltip />
|
||||||
|
<el-table-column prop="sendTime" label="接收单位" show-overflow-tooltip width="160">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ JoinDeviceNameStr(scope.row.receiverInfos) || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="senderName" label="发令人" />
|
||||||
|
<el-table-column prop="companyOfSender" label="发令单位" />
|
||||||
|
<el-table-column label="命令类型" width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ typeObj[scope.row.type] || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="content" label="命令正文" show-overflow-tooltip />
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="box-title">
|
||||||
|
<div class="contant-null" />
|
||||||
|
<div class="contant-text">接受命令</div>
|
||||||
|
<div class="contant-icon" @click="active2=!active2">
|
||||||
|
<i v-if="active2" class="el-icon-arrow-down" />
|
||||||
|
<i v-else class="el-icon-arrow-up" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-show="active2" class="left-table1">
|
||||||
|
<el-table ref="table2" :data="receivedTableData" border style="width: 100%" height="100" highlight-current-row @current-change="handleCurrentChange($event, 'table2')">
|
||||||
|
<el-table-column prop="number" label="命令号" width="80" />
|
||||||
|
<el-table-column prop="title" label="命令标题" show-overflow-tooltip />
|
||||||
|
<el-table-column prop="sendTime" label="接收单位" show-overflow-tooltip width="160">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ JoinDeviceNameStr(scope.row.receiverInfos) || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="senderName" label="发令人" />
|
||||||
|
<el-table-column prop="companyOfSender" label="发令单位" />
|
||||||
|
<el-table-column label="命令类型" width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ typeObj[scope.row.type] || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="content" label="命令正文" show-overflow-tooltip />
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="box-title">
|
||||||
|
<div class="contant-null" />
|
||||||
|
<div class="contant-text">发送命令</div>
|
||||||
|
<div class="contant-icon" @click="active3=!active3">
|
||||||
|
<i v-if="active3" class="el-icon-arrow-down" />
|
||||||
|
<i v-else class="el-icon-arrow-up" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-show="active3" class="left-table1">
|
||||||
|
<el-table ref="table3" :data="sendTableData" border style="width: 100%" height="150" highlight-current-row @current-change="handleCurrentChange($event, 'table3')">
|
||||||
|
<el-table-column prop="number" label="命令号" width="80" />
|
||||||
|
<el-table-column prop="title" label="命令标题" show-overflow-tooltip />
|
||||||
|
<el-table-column prop="sendTime" label="接收单位" show-overflow-tooltip width="160">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ JoinDeviceNameStr(scope.row.receiverInfos) || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="sendTime" label="发令时间" width="160" />
|
||||||
|
<el-table-column prop="senderName" label="发令人" />
|
||||||
|
<el-table-column prop="companyOfSender" label="发令单位" />
|
||||||
|
<el-table-column label="命令类型" width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ typeObj[scope.row.type] || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="content" label="命令正文" show-overflow-tooltip />
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="box-title">
|
||||||
|
<div class="contant-null" />
|
||||||
|
<div class="contant-text">签收完成</div>
|
||||||
|
<div class="contant-icon" @click="active4=!active4">
|
||||||
|
<i v-if="active4" class="el-icon-arrow-down" />
|
||||||
|
<i v-else class="el-icon-arrow-up" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-show="active4" class="left-table1">
|
||||||
|
<el-table ref="table4" :data="allSignedTableData" border style="width: 100%" height="170" highlight-current-row @current-change="handleCurrentChange($event, 'table4')">
|
||||||
|
<el-table-column prop="number" label="命令号" width="80" />
|
||||||
|
<el-table-column prop="title" label="命令标题" show-overflow-tooltip />
|
||||||
|
<el-table-column prop="sendTime" label="接收单位" show-overflow-tooltip width="160">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ JoinDeviceNameStr(scope.row.receiverInfos) || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="sendTime" label="发令时间" width="160" />
|
||||||
|
<el-table-column prop="senderName" label="发令人" />
|
||||||
|
<el-table-column prop="companyOfSender" label="发令单位" />
|
||||||
|
<el-table-column label="命令类型" width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ typeObj[scope.row.type] || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="content" label="命令正文" show-overflow-tooltip />
|
||||||
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
@ -126,7 +251,7 @@
|
|||||||
<el-tab-pane label="命令正文" name="text">
|
<el-tab-pane label="命令正文" name="text">
|
||||||
<div class="cmd-box">
|
<div class="cmd-box">
|
||||||
<div>
|
<div>
|
||||||
<el-input v-model="cmdTextarea" type="textarea" :rows="6" placeholder="请输入内容" />
|
<el-input v-model="command.content" type="textarea" :rows="6" placeholder="请输入内容" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
@ -139,15 +264,23 @@
|
|||||||
<div class="table">
|
<div class="table">
|
||||||
<el-table ref="table" :data="getTableData" border style="width: 100%" height="200" @selection-change="selectionChange">
|
<el-table ref="table" :data="getTableData" border style="width: 100%" height="200" @selection-change="selectionChange">
|
||||||
<el-table-column type="selection" width="50" />
|
<el-table-column type="selection" width="50" />
|
||||||
<el-table-column prop="deviceName" label="受令单位" width="180" />
|
<el-table-column label="受令单位" width="160">
|
||||||
<el-table-column prop="copyers" label="抄送" width="180" />
|
|
||||||
<el-table-column label="签收状态">
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span style="margin-left: 10px">{{ scope.row.nickName ? signedStatusObj[scope.row.signedStatus] : '' }}</span>
|
<span style="margin-left: 10px">{{ getDeviceName(scope.row.receiverId) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="nickName" label="签收人" />
|
<el-table-column prop="copyers" label="抄送" width="120" show-overflow-tooltip />
|
||||||
<el-table-column prop="signTime" label="签收时间" />
|
<el-table-column label="签收状态">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ signedStatusObj[scope.row.signedStatus] || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="签收人">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ getSignedBy(scope.row) || '' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="time" label="签收时间" width="160" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -169,6 +302,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { sendCommandNew } from '@/api/jmap/training';
|
import { sendCommandNew } from '@/api/jmap/training';
|
||||||
import { mapState } from 'vuex';
|
import { mapState } from 'vuex';
|
||||||
|
import { parseTime } from '@/utils/index';
|
||||||
export default {
|
export default {
|
||||||
name:'DispatcherCmd',
|
name:'DispatcherCmd',
|
||||||
data() {
|
data() {
|
||||||
@ -177,9 +311,9 @@ export default {
|
|||||||
activeTab: 'operate',
|
activeTab: 'operate',
|
||||||
cmdTab: 'cmd',
|
cmdTab: 'cmd',
|
||||||
textTab: 'text',
|
textTab: 'text',
|
||||||
typeOptions: [
|
typeObj: {
|
||||||
{label: '正常调度命令', value: 'NORMAL'}
|
NORMAL: '正常调度命令'
|
||||||
],
|
},
|
||||||
signedStatusObj: {
|
signedStatusObj: {
|
||||||
UNSIGNED: '未签收',
|
UNSIGNED: '未签收',
|
||||||
SIGNED: '签收',
|
SIGNED: '签收',
|
||||||
@ -198,19 +332,50 @@ export default {
|
|||||||
reviewerId: '',
|
reviewerId: '',
|
||||||
author: '',
|
author: '',
|
||||||
receiverIds: [],
|
receiverIds: [],
|
||||||
type: '',
|
type: 'NORMAL',
|
||||||
content: '',
|
content: '',
|
||||||
allSigned: ''
|
allSigned: ''
|
||||||
},
|
},
|
||||||
cmdTextarea: '',
|
|
||||||
tableChecked: false,
|
tableChecked: false,
|
||||||
memberDataList: []
|
memberDataList: [],
|
||||||
|
active1: true,
|
||||||
|
active2: true,
|
||||||
|
active3: true,
|
||||||
|
active4: true,
|
||||||
|
numTime: 24,
|
||||||
|
seachData: [],
|
||||||
|
cacheTableData: [],
|
||||||
|
currentInfo: {}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState('training', [
|
...mapState('training', [
|
||||||
'memberList', 'memberData', 'simulationUserList'
|
'memberList', 'memberData', 'simulationUserList', 'initTime'
|
||||||
]),
|
]),
|
||||||
|
typeOptions() {
|
||||||
|
const list = [];
|
||||||
|
Object.keys(this.typeObj).forEach(item => {
|
||||||
|
list.push({
|
||||||
|
label: this.typeObj[item],
|
||||||
|
value: item
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return list;
|
||||||
|
},
|
||||||
|
getSimulationTime() {
|
||||||
|
const t = parseTime(this.initTime, '{h}:{i}:{s}');
|
||||||
|
const tArr = t.split(':');
|
||||||
|
let s = ' ';
|
||||||
|
let h = tArr[0];
|
||||||
|
if (this.numTime != 24) {
|
||||||
|
s = '上午';
|
||||||
|
if (h > 12) {
|
||||||
|
s = '下午';
|
||||||
|
h = h - 12;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return `${s} ${h}:${tArr[1]}:${tArr[2]}`;
|
||||||
|
},
|
||||||
show() {
|
show() {
|
||||||
return this.dialogShow;
|
return this.dialogShow;
|
||||||
},
|
},
|
||||||
@ -228,23 +393,48 @@ export default {
|
|||||||
return obj;
|
return obj;
|
||||||
},
|
},
|
||||||
getTableData() {
|
getTableData() {
|
||||||
const mList = this.memberList.filter(item => {
|
const mList = [];
|
||||||
|
const filterArr = this.memberList.filter(item => {
|
||||||
return item.type == 'STATION_SUPERVISOR';
|
return item.type == 'STATION_SUPERVISOR';
|
||||||
});
|
});
|
||||||
const list = [];
|
filterArr.forEach(item => {
|
||||||
mList.forEach(item => {
|
let cInfo = {};
|
||||||
const device = this.$store.getters['map/getDeviceByCode'](item.deviceCode);
|
if (this.currentInfo.receiverInfos && this.currentInfo.receiverInfos[item.deviceCode]) {
|
||||||
const useInfo = this.mapSimulationUserList[item.userId];
|
cInfo = this.currentInfo.receiverInfos[item.deviceCode];
|
||||||
const obj = {
|
}
|
||||||
...item,
|
mList.push({
|
||||||
userId: item.userId + '',
|
receiverId: item.deviceCode || '',
|
||||||
deviceName: device ? device.name : '',
|
signedBy: '',
|
||||||
nickName: useInfo ? useInfo.nickName : '',
|
receivedTime: '',
|
||||||
copyers: '',
|
signedStatus: '',
|
||||||
signedStatus: 'UNSIGNED',
|
time: '',
|
||||||
signTime: ''
|
...cInfo
|
||||||
};
|
});
|
||||||
list.push(obj);
|
});
|
||||||
|
return mList;
|
||||||
|
},
|
||||||
|
getActiveSender() {
|
||||||
|
const userInfo = this.memberDataList.find(item => {
|
||||||
|
return item.userId == this.$store.state.user.id;
|
||||||
|
});
|
||||||
|
const activeUser = userInfo || {};
|
||||||
|
return activeUser;
|
||||||
|
},
|
||||||
|
receivedTableData() {
|
||||||
|
const list = this.seachData.filter(item => {
|
||||||
|
return item.receiverInfos[this.getActiveSender.deviceCode];
|
||||||
|
});
|
||||||
|
return list;
|
||||||
|
},
|
||||||
|
sendTableData() {
|
||||||
|
const list = this.seachData.filter(item => {
|
||||||
|
return item.senderName == this.getActiveSender.labelName;
|
||||||
|
});
|
||||||
|
return list;
|
||||||
|
},
|
||||||
|
allSignedTableData() {
|
||||||
|
const list = this.seachData.filter(item => {
|
||||||
|
return item.allSigned;
|
||||||
});
|
});
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@ -253,6 +443,69 @@ export default {
|
|||||||
beforeDestroy() {},
|
beforeDestroy() {},
|
||||||
mounted() {},
|
mounted() {},
|
||||||
methods:{
|
methods:{
|
||||||
|
setCurrentRow(obj, refName) {
|
||||||
|
const tableArr = ['table1', 'table2', 'table3', 'table4'];
|
||||||
|
tableArr.forEach(key => {
|
||||||
|
if (key != refName) {
|
||||||
|
this.$refs[key] && this.$refs[key].setCurrentRow();
|
||||||
|
} else {
|
||||||
|
this.$refs[key] && this.$refs[key].setCurrentRow(obj);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleCurrentChange(obj, refName) {
|
||||||
|
if (!obj) { return; }
|
||||||
|
this.currentInfo = obj;
|
||||||
|
this.command = {...obj};
|
||||||
|
this.setCurrentRow(obj, refName);
|
||||||
|
const infoList = Object.keys(this.currentInfo.receiverInfos || {});
|
||||||
|
if (infoList.length) {
|
||||||
|
this.command.receiverIds = infoList;
|
||||||
|
setTimeout(() => {
|
||||||
|
infoList.forEach(item => {
|
||||||
|
const findObj = this.getTableData.find(ii => {
|
||||||
|
return ii.receiverId == item;
|
||||||
|
});
|
||||||
|
findObj && this.$refs.table.toggleRowSelection(findObj, true);
|
||||||
|
});
|
||||||
|
}, 200);
|
||||||
|
} else {
|
||||||
|
this.$refs.table.clearSelection();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getSignedBy(info) {
|
||||||
|
const signedInfo = this.simulationUserList.find(item => {
|
||||||
|
return item.memberId == info.signedBy;
|
||||||
|
});
|
||||||
|
let name = '';
|
||||||
|
if (signedInfo) {
|
||||||
|
name = signedInfo.nickName;
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
},
|
||||||
|
getDeviceName(receiverId) {
|
||||||
|
let name = '';
|
||||||
|
if (receiverId) {
|
||||||
|
const device = this.$store.getters['map/getDeviceByCode'](receiverId);
|
||||||
|
name = device ? device.name : '';
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
},
|
||||||
|
JoinDeviceNameStr(info) {
|
||||||
|
let name = '';
|
||||||
|
const devCodeArr = Object.keys(info);
|
||||||
|
const nameArr = [];
|
||||||
|
devCodeArr.forEach(ii => {
|
||||||
|
const device = this.$store.getters['map/getDeviceByCode'](ii);
|
||||||
|
nameArr.push(device ? device.name : '');
|
||||||
|
});
|
||||||
|
name = nameArr.join(',');
|
||||||
|
return name;
|
||||||
|
},
|
||||||
|
refreshSearch() {
|
||||||
|
console.log('刷新');
|
||||||
|
this.searchCmd();
|
||||||
|
},
|
||||||
createCmd() {
|
createCmd() {
|
||||||
this.$confirm('当前调度命令已经被编辑修改过了,你要放弃所有的修改吗?', '操作提示', {
|
this.$confirm('当前调度命令已经被编辑修改过了,你要放弃所有的修改吗?', '操作提示', {
|
||||||
confirmButtonText: '是',
|
confirmButtonText: '是',
|
||||||
@ -277,12 +530,13 @@ export default {
|
|||||||
reviewerId: '',
|
reviewerId: '',
|
||||||
author: '',
|
author: '',
|
||||||
receiverIds: [],
|
receiverIds: [],
|
||||||
type: '',
|
type: 'NORMAL',
|
||||||
content: '',
|
content: '',
|
||||||
allSigned: ''
|
allSigned: ''
|
||||||
};
|
};
|
||||||
this.cmdTextarea = '';
|
this.currentInfo = {};
|
||||||
this.$refs.table.clearSelection();
|
this.$refs.table && this.$refs.table.clearSelection();
|
||||||
|
this.setCurrentRow();
|
||||||
},
|
},
|
||||||
senderChange(memberId) {
|
senderChange(memberId) {
|
||||||
const obj = this.mapSimulationUserList.find(item => {
|
const obj = this.mapSimulationUserList.find(item => {
|
||||||
@ -304,8 +558,10 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
doShow() {
|
doShow() {
|
||||||
|
this.searchCmd();
|
||||||
this.getSenderName();
|
this.getSenderName();
|
||||||
this.dialogShow = true;
|
this.dialogShow = true;
|
||||||
|
this.initData();
|
||||||
},
|
},
|
||||||
doClose() {
|
doClose() {
|
||||||
this.dialogShow = false;
|
this.dialogShow = false;
|
||||||
@ -316,27 +572,43 @@ export default {
|
|||||||
selectionChange(selection) {
|
selectionChange(selection) {
|
||||||
const arr = [];
|
const arr = [];
|
||||||
selection.forEach(item => {
|
selection.forEach(item => {
|
||||||
arr.push(item.id);
|
arr.push(item.receiverId);
|
||||||
});
|
});
|
||||||
this.command.receiverIds = arr;
|
this.command.receiverIds = arr;
|
||||||
console.log(this.simulationUserList, '----simulationUserList----');
|
|
||||||
},
|
},
|
||||||
sendCmd() {
|
sendCmd() {
|
||||||
this.command.content = this.cmdTextarea;
|
const test = `【${this.command.number}】号调度命令下达到以下受令人:`;
|
||||||
const data = {
|
const messageData = [test];
|
||||||
command: this.command
|
const h = this.$createElement;
|
||||||
};
|
this.command.receiverIds.forEach((item, index) => {
|
||||||
sendCommandNew(this.group, 'CTC_SEND_DISPATCH_COMMAND', data).then((res) => {
|
const device = this.$store.getters['map/getDeviceByCode'](item);
|
||||||
console.log(res, '---res');
|
const msg = `${index + 1}. ${device ? device.name : ''}`;
|
||||||
this.$message.success('发送调度命令成功!');
|
messageData.push(h('p', null, msg));
|
||||||
this.initData();
|
});
|
||||||
}).catch(error => {
|
this.$confirm('提示', {
|
||||||
this.$messageBox('发送调度命令失败:' + error.message);
|
title: '操作提示',
|
||||||
|
message: h('div', null, messageData),
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
const data = {
|
||||||
|
command: this.command
|
||||||
|
};
|
||||||
|
sendCommandNew(this.group, 'CTC_SEND_DISPATCH_COMMAND', data).then((res) => {
|
||||||
|
console.log(res, '---res');
|
||||||
|
this.$message.success('发送调度命令成功!');
|
||||||
|
this.searchCmd();
|
||||||
|
this.initData();
|
||||||
|
}).catch(error => {
|
||||||
|
this.$messageBox('发送调度命令失败:' + error.message);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
searchCmd() {
|
searchCmd() {
|
||||||
sendCommandNew(this.group, 'CTC_QUERY_DISPATCH_COMMAND').then((res) => {
|
sendCommandNew(this.group, 'CTC_QUERY_DISPATCH_COMMAND').then((res) => {
|
||||||
console.log(res, '---res----');
|
console.log(res, '---res----');
|
||||||
|
this.seachData = res.data;
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
this.$messageBox('查询调度命令失败:' + error.message);
|
this.$messageBox('查询调度命令失败:' + error.message);
|
||||||
});
|
});
|
||||||
@ -352,8 +624,35 @@ export default {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
.left {
|
.left {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
.operate-box {
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
.create-cmd {
|
.create-cmd {
|
||||||
text-align: end;
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.box-title {
|
||||||
|
height: 28px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background: #B3B2C2;
|
||||||
|
.contant-null, .contant-icon {
|
||||||
|
width: 20px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.contant-icon:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.contant-text {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
flex: 1;
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/deep/ .el-tabs__item {
|
/deep/ .el-tabs__item {
|
||||||
|
@ -64,7 +64,11 @@
|
|||||||
<div class="box-table">
|
<div class="box-table">
|
||||||
<el-table :data="getTableData" style="width: 100%" height="200">
|
<el-table :data="getTableData" style="width: 100%" height="200">
|
||||||
<el-table-column type="index" label="序" width="50" />
|
<el-table-column type="index" label="序" width="50" />
|
||||||
<el-table-column prop="deviceName" label="受令单位" />
|
<el-table-column prop="deviceName" label="受令单位">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ getDeviceName(scope.row.receiverId) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="copyers" label="抄知处所" />
|
<el-table-column prop="copyers" label="抄知处所" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
@ -149,26 +153,11 @@ export default {
|
|||||||
},
|
},
|
||||||
getTableData() {
|
getTableData() {
|
||||||
const receiverList = Object.values(this.signedData.receiverInfos || {});
|
const receiverList = Object.values(this.signedData.receiverInfos || {});
|
||||||
const mList = [];
|
|
||||||
receiverList.forEach(ii => {
|
|
||||||
const obj = this.memberList.find(item => {
|
|
||||||
return item.id == ii.receiverId;
|
|
||||||
});
|
|
||||||
if (obj) {
|
|
||||||
mList.push({
|
|
||||||
commandId: this.commandId,
|
|
||||||
...ii,
|
|
||||||
...obj
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const list = [];
|
const list = [];
|
||||||
mList.forEach(item => {
|
receiverList.forEach(item => {
|
||||||
const device = this.$store.getters['map/getDeviceByCode'](item.deviceCode);
|
|
||||||
const obj = {
|
const obj = {
|
||||||
...this.signedData,
|
...this.signedData,
|
||||||
...item,
|
...item
|
||||||
deviceName: device ? device.name : ''
|
|
||||||
};
|
};
|
||||||
list.push(obj);
|
list.push(obj);
|
||||||
});
|
});
|
||||||
@ -179,6 +168,14 @@ export default {
|
|||||||
beforeDestroy() {},
|
beforeDestroy() {},
|
||||||
mounted() {},
|
mounted() {},
|
||||||
methods:{
|
methods:{
|
||||||
|
getDeviceName(receiverId) {
|
||||||
|
let name = '';
|
||||||
|
if (receiverId) {
|
||||||
|
const device = this.$store.getters['map/getDeviceByCode'](receiverId);
|
||||||
|
name = device ? device.name : '';
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
},
|
||||||
getParseTime(val, f) {
|
getParseTime(val, f) {
|
||||||
return val ? parseTime(val, f) : '';
|
return val ? parseTime(val, f) : '';
|
||||||
},
|
},
|
||||||
@ -197,6 +194,7 @@ export default {
|
|||||||
this.getSenderName();
|
this.getSenderName();
|
||||||
this.getSignedData();
|
this.getSignedData();
|
||||||
this.dialogShow = true;
|
this.dialogShow = true;
|
||||||
|
this.hasReadCmd();
|
||||||
},
|
},
|
||||||
doClose() {
|
doClose() {
|
||||||
this.dialogShow = false;
|
this.dialogShow = false;
|
||||||
@ -209,7 +207,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
getSignInfo(info) {
|
getSignInfo(info) {
|
||||||
const obj = info[this.getActiveUser.memberId] || {};
|
const obj = info[this.getActiveUser.deviceCode] || {};
|
||||||
return obj;
|
return obj;
|
||||||
},
|
},
|
||||||
getSignedBy(info) {
|
getSignedBy(info) {
|
||||||
@ -222,6 +220,17 @@ export default {
|
|||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
},
|
},
|
||||||
|
hasReadCmd() {
|
||||||
|
if (!this.commandId) { return; }
|
||||||
|
const data = {
|
||||||
|
commandId: this.commandId
|
||||||
|
};
|
||||||
|
sendCommandNew(this.group, 'CTC_READ_DISPATCH_COMMAND', data).then((res) => {
|
||||||
|
console.log(res, '---res');
|
||||||
|
}).catch(error => {
|
||||||
|
console.log(error, '---已读命令error');
|
||||||
|
});
|
||||||
|
},
|
||||||
signCmd(status) {
|
signCmd(status) {
|
||||||
if (!this.commandId) { return; }
|
if (!this.commandId) { return; }
|
||||||
const signInfo = { commandId: this.commandId, signedBy: this.signedId, signedStatus: status };
|
const signInfo = { commandId: this.commandId, signedBy: this.signedId, signedStatus: status };
|
||||||
@ -230,7 +239,7 @@ export default {
|
|||||||
};
|
};
|
||||||
sendCommandNew(this.group, 'CTC_SIGN_DISPATCH_COMMAND', data).then((res) => {
|
sendCommandNew(this.group, 'CTC_SIGN_DISPATCH_COMMAND', data).then((res) => {
|
||||||
console.log(res, '---res');
|
console.log(res, '---res');
|
||||||
this.$emit('changeSignedStatus', signInfo);
|
// this.$emit('changeSignedStatus', signInfo);
|
||||||
this.doClose();
|
this.doClose();
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
this.$messageBox('查询调度命令失败:' + error.message);
|
this.$messageBox('查询调度命令失败:' + error.message);
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<div v-for="(item, index) in treeData" :key="index" class="proper_box">
|
<div v-for="(item, index) in treeData" :key="index" class="proper_box">
|
||||||
<div class="proper_title">{{ item.label }}</div>
|
<div class="proper_title">{{ item.label }}</div>
|
||||||
<div v-for="(data, i) in item.children" :key="i" style="position: relative; width: 73px; heigth: 73px; margin-left: 5px; float: left;">
|
<div v-for="(data, i) in item.children" :key="i" style="position: relative; width: 73px; height: 73px; margin-left: 5px; float: left;">
|
||||||
<div v-if="data.show && item.id == 'driver'" :id="'proper_content_box'+data.id" class="proper_content_box" :class="{'active': data.active,'isInviting':data.isInviting}" @click="handleCheckChange(data)">
|
<div v-if="data.show && item.id == 'driver'" :id="'proper_content_box'+data.id" class="proper_content_box" :class="{'active': data.active,'isInviting':data.isInviting}" @click="handleCheckChange(data)">
|
||||||
<span class="proper_content_box_text">{{ data.label + (data.userId? '(' + (simulationUsers[data.userId]||{}).nickName + ')': '') }}</span>
|
<span class="proper_content_box_text">{{ data.label + (data.userId? '(' + (simulationUsers[data.userId]||{}).nickName + ')': '') }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -503,6 +503,9 @@ export default {
|
|||||||
},
|
},
|
||||||
setOffset(data, num, sum, obj) {
|
setOffset(data, num, sum, obj) {
|
||||||
this.$jlmap.switchScreen(data, num, sum, obj);
|
this.$jlmap.switchScreen(data, num, sum, obj);
|
||||||
|
},
|
||||||
|
pictureChanged(picture) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -64,6 +64,7 @@
|
|||||||
<menu-train-list v-if="prdType=='02'" @setCenter="setCenter" />
|
<menu-train-list v-if="prdType=='02'" @setCenter="setCenter" />
|
||||||
<members-manage ref="membersManage" :is-admin="isAdmin" @addSimulationMember="addSimulationMember" /> <!-- 成员管理 -->
|
<members-manage ref="membersManage" :is-admin="isAdmin" @addSimulationMember="addSimulationMember" /> <!-- 成员管理 -->
|
||||||
<add-member ref="addMember" :station-list="stationList" />
|
<add-member ref="addMember" :station-list="stationList" />
|
||||||
|
<ticket-info v-if="lineCode === '16'" ref="ticketInfo" />
|
||||||
<Jl3d-Device
|
<Jl3d-Device
|
||||||
v-if="deviceif"
|
v-if="deviceif"
|
||||||
v-show="deviceShow"
|
v-show="deviceShow"
|
||||||
@ -110,6 +111,7 @@ import TmtDialog from '@/views/newMap/displayBaSiDi/tmt';
|
|||||||
import AtrDialog from '@/views/newMap/displayBaSiDi/atr';
|
import AtrDialog from '@/views/newMap/displayBaSiDi/atr';
|
||||||
import TrainTrunkDetail from '@/views/newMap/displayBaSiDi/trainTrunkDetail';
|
import TrainTrunkDetail from '@/views/newMap/displayBaSiDi/trainTrunkDetail';
|
||||||
import DispatcherStation from './dispatcherStation';
|
import DispatcherStation from './dispatcherStation';
|
||||||
|
import TicketInfo from '../trainTicket/ticketInfo';
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -138,7 +140,8 @@ export default {
|
|||||||
TmtDialog,
|
TmtDialog,
|
||||||
AtrDialog,
|
AtrDialog,
|
||||||
TrainTrunkDetail,
|
TrainTrunkDetail,
|
||||||
DispatcherStation
|
DispatcherStation,
|
||||||
|
TicketInfo
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -274,6 +277,11 @@ export default {
|
|||||||
if (list && list.length) { // 人员变化监控
|
if (list && list.length) { // 人员变化监控
|
||||||
this.checkRoleChange(list);
|
this.checkRoleChange(list);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
'$store.state.socket.ticketInfo': function(val) {
|
||||||
|
if (val) {
|
||||||
|
this.$refs.ticketInfo.doShow(val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
|
@ -56,6 +56,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import eMembers from './e-members';
|
import eMembers from './e-members';
|
||||||
|
import { EventBus } from '@/scripts/event-bus';
|
||||||
import { assignUsersPlayRoles } from '@/api/jointSimulation';
|
import { assignUsersPlayRoles } from '@/api/jointSimulation';
|
||||||
export default {
|
export default {
|
||||||
name: 'MembersManage',
|
name: 'MembersManage',
|
||||||
@ -186,7 +187,7 @@ export default {
|
|||||||
ctcOperatorList.push(this.memberData[item.id]);
|
ctcOperatorList.push(this.memberData[item.id]);
|
||||||
break;
|
break;
|
||||||
case 'STATION_ASSISTANT':
|
case 'STATION_ASSISTANT':
|
||||||
this.memberData[item.id].labelName = '车站助理' + +device.name + (item.name ? `-${item.name }` : '');
|
this.memberData[item.id].labelName = '车站助理-' + device.name + (item.name ? `-${item.name }` : '');
|
||||||
stationAssistantList.push(this.memberData[item.id]);
|
stationAssistantList.push(this.memberData[item.id]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -225,6 +226,7 @@ export default {
|
|||||||
children: stationAssistantList
|
children: stationAssistantList
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
EventBus.$emit('trainTicketMember', [...stationSupervisorList, ...stationAssistantList]);
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
if (this.$refs.tree) {
|
if (this.$refs.tree) {
|
||||||
this.$refs.tree.filter(this.queryMember);
|
this.$refs.tree.filter(this.queryMember);
|
||||||
|
64
src/views/newMap/mapDraftPicture/changePicture.vue
Normal file
64
src/views/newMap/mapDraftPicture/changePicture.vue
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
title="画面切换"
|
||||||
|
:visible.sync="centerDialogVisible"
|
||||||
|
width="350px"
|
||||||
|
center
|
||||||
|
>
|
||||||
|
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
|
||||||
|
<el-form-item label="画面名称:" prop="picture">
|
||||||
|
<el-select v-model="ruleForm.picture" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in pictureList"
|
||||||
|
:key="item"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="changeForm()">切换</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'CreatePicture',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
centerDialogVisible: false,
|
||||||
|
ruleForm: { picture: '' },
|
||||||
|
rules: {
|
||||||
|
picture: [{ required: true, message: '请选择画面', trigger: 'change' }]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
pictureList() {
|
||||||
|
return this.$store.state.map.map.pictureList;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeForm() {
|
||||||
|
this.$refs.ruleForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$emit('pictureChanged', this.ruleForm.picture);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
doClose() {
|
||||||
|
this.$refs.ruleForm.resetFields();
|
||||||
|
this.centerDialogVisible = false;
|
||||||
|
},
|
||||||
|
doShow() {
|
||||||
|
this.centerDialogVisible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
88
src/views/newMap/mapDraftPicture/createPicture.vue
Normal file
88
src/views/newMap/mapDraftPicture/createPicture.vue
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
title="提示"
|
||||||
|
:visible.sync="centerDialogVisible"
|
||||||
|
width="350px"
|
||||||
|
center
|
||||||
|
>
|
||||||
|
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
|
||||||
|
<el-form-item label="画面名称:" prop="name">
|
||||||
|
<el-input v-model="ruleForm.name" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="画面类型:" prop="type">
|
||||||
|
<el-select v-model="ruleForm.type" placeholder="请选择画面类型">
|
||||||
|
<el-option label="站间透明" value="lucency" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="所属车站:" prop="stationCode">
|
||||||
|
<el-select v-model="ruleForm.stationCode" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in stationList"
|
||||||
|
:key="item.code"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.code"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="submitForm('ruleForm')">创建</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {mapGetters} from 'vuex';
|
||||||
|
import { saveMap } from '@/api/jmap/mapdraft';
|
||||||
|
export default {
|
||||||
|
name: 'CreatePicture',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
centerDialogVisible: false,
|
||||||
|
ruleForm: { name: '', type: '', stationCode: '', deviceList: [] },
|
||||||
|
rules: {
|
||||||
|
name: [{ required: true, message: '请输入画面名称', trigger: 'blur' }],
|
||||||
|
type: [{ required: true, message: '请选择画面类型', trigger: 'change' }],
|
||||||
|
stationCode: [{ required: true, message: '请选择车站', trigger: 'change' }]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters('map', [
|
||||||
|
'stationList'
|
||||||
|
])
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
submitForm() {
|
||||||
|
this.$refs.ruleForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
const map = this.$store.state.map.map;
|
||||||
|
if (map && map.pictureList && map.pictureList.length) {
|
||||||
|
map.pictureList.push({...this.ruleForm});
|
||||||
|
} else {
|
||||||
|
map.pictureList = [{...this.ruleForm}];
|
||||||
|
}
|
||||||
|
if (map && parseInt(this.$route.params.mapId)) {
|
||||||
|
saveMap(Object.assign(map, { mapId: this.$route.params.mapId })).then(() => {
|
||||||
|
this.$message.success('创建画面成功!');
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message.error('创建画面失败!');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
doClose() {
|
||||||
|
this.$refs.ruleForm.resetFields();
|
||||||
|
this.centerDialogVisible = false;
|
||||||
|
},
|
||||||
|
doShow() {
|
||||||
|
this.centerDialogVisible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
@ -24,30 +24,37 @@
|
|||||||
:selected="selected"
|
:selected="selected"
|
||||||
:map-saveing="mapSaveing"
|
:map-saveing="mapSaveing"
|
||||||
@saveMapEvent="saveMapEvent"
|
@saveMapEvent="saveMapEvent"
|
||||||
@updateMapModel="updateMapModel"
|
@createPicture="createPicture"
|
||||||
|
@changePicture="changePicture"
|
||||||
@setCenter="setCenter"
|
@setCenter="setCenter"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<pop-menu ref="popMenu" :menu="menu" />
|
<pop-menu ref="popMenu" :menu="menu" />
|
||||||
|
<create-picture ref="createPicture" />
|
||||||
|
<change-picture ref="changePicture" @pictureChanged="pictureChanged" />
|
||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { saveMap, verifyMap, getMapDetail, postBuildMapImport, getRouteNewList, getAutoReentryList } from '@/api/jmap/mapdraft';
|
import { saveMap, getMapDetail, postBuildMapImport } from '@/api/jmap/mapdraft';
|
||||||
import { ViewMode, TrainingMode, getDeviceMenuByDeviceType, DeviceMenu } from '@/scripts/ConstDic';
|
import { ViewMode, TrainingMode, getDeviceMenuByDeviceType, DeviceMenu } from '@/scripts/ConstDic';
|
||||||
import JlmapVisual from '@/views/newMap/jlmapNew/index';
|
import JlmapVisual from '@/views/newMap/jlmapNew/index';
|
||||||
import MapOperate from './mapoperate/index';
|
import MapOperate from './mapoperate/index';
|
||||||
import { EventBus } from '@/scripts/event-bus';
|
import { EventBus } from '@/scripts/event-bus';
|
||||||
import { mapGetters } from 'vuex';
|
import { mapGetters } from 'vuex';
|
||||||
import PopMenu from '@/components/PopMenu';
|
import PopMenu from '@/components/PopMenu';
|
||||||
|
import CreatePicture from './createPicture';
|
||||||
|
import ChangePicture from './changePicture';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MapView',
|
name: 'MapView',
|
||||||
components: {
|
components: {
|
||||||
JlmapVisual,
|
JlmapVisual,
|
||||||
MapOperate,
|
MapOperate,
|
||||||
PopMenu
|
PopMenu,
|
||||||
|
CreatePicture,
|
||||||
|
ChangePicture
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -312,115 +319,6 @@ export default {
|
|||||||
});
|
});
|
||||||
return flag;
|
return flag;
|
||||||
},
|
},
|
||||||
verifySectionRelation(map) {
|
|
||||||
let flag = true;
|
|
||||||
const tipInfoList = [];
|
|
||||||
map.sectionList.forEach(section => {
|
|
||||||
section.type === '01' && map.sectionList.forEach(item => {
|
|
||||||
if (section.code !== item.code && item.type === '01' && this.checkSectionPointsHasCoincide(section.points, item.points) && !this.checkCorrelation(section, item)) {
|
|
||||||
tipInfoList.push('区段' + section.name + '(' + section.code + '): 或者区段' + item.name + '(' + item.code + ')' + '关联关系设置错误!' );
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
if (!tipInfoList.length) {
|
|
||||||
flag = true;
|
|
||||||
} else {
|
|
||||||
flag = false;
|
|
||||||
this.$messageBox(this.$t('tip.dataValidationFailed'));
|
|
||||||
this.tableToExcel(tipInfoList);
|
|
||||||
}
|
|
||||||
return flag;
|
|
||||||
},
|
|
||||||
async verifyInterlockDevice(map) {
|
|
||||||
let flag = true;
|
|
||||||
const tipInfoList = [];
|
|
||||||
const routeCodeList = [];
|
|
||||||
const cycleCodeList = [];
|
|
||||||
const resp1 = await getRouteNewList(this.$route.params.mapId, {pageSize:9999, pageNum:1});
|
|
||||||
if (resp1.data && resp1.data.list) {
|
|
||||||
resp1.data.list.forEach(item => {
|
|
||||||
routeCodeList.push(item.code);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const resp2 = await getAutoReentryList(this.$route.params.mapId, {pageSize:9999, pageNum:1});
|
|
||||||
if (resp2.data && resp2.data.list) {
|
|
||||||
resp2.data.list.forEach(item => {
|
|
||||||
cycleCodeList.push(item.code);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
map.cycleButtonList.forEach(cycleButton => {
|
|
||||||
if (!cycleCodeList.includes(cycleButton.cycleCode)) {
|
|
||||||
flag = false;
|
|
||||||
tipInfoList.push('自动折返功能按钮' + cycleButton.name + '(' + cycleButton.code + ')' + '的关联自动折返数据不存在!');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
map.automaticRouteButtonList.forEach(routeButton => {
|
|
||||||
if (!routeCodeList.includes(routeButton.automaticRouteCode)) {
|
|
||||||
flag = false;
|
|
||||||
tipInfoList.push('自动进路功能按钮' + routeButton.name + '(' + routeButton.code + ')' + '的关联进路数据不存在!');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (!flag) {
|
|
||||||
this.$messageBox(this.$t('tip.dataValidationFailed'));
|
|
||||||
this.tableToExcel(tipInfoList);
|
|
||||||
}
|
|
||||||
return flag;
|
|
||||||
},
|
|
||||||
verifyStationPosition(map) {
|
|
||||||
let flag = true;
|
|
||||||
const tipInfoList = [];
|
|
||||||
map.stationStandList.forEach(stationStand => {
|
|
||||||
const section = this.$store.getters['map/getDeviceByCode'](stationStand.standTrackCode);
|
|
||||||
const list = [];
|
|
||||||
section && section.points.forEach(point => {
|
|
||||||
list.push(point.x);
|
|
||||||
});
|
|
||||||
if (stationStand.position.x > Math.max(...list) || stationStand.position.x < Math.min(...list)) {
|
|
||||||
flag = false;
|
|
||||||
tipInfoList.push('站台' + stationStand.name + '(' + stationStand.code + ')' + '位置偏移出关联站台轨,请检查关联站台轨是否正确!');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (!flag) {
|
|
||||||
this.$messageBox(this.$t('tip.dataValidationFailed'));
|
|
||||||
this.tableToExcel(tipInfoList);
|
|
||||||
}
|
|
||||||
return flag;
|
|
||||||
},
|
|
||||||
verifySignalPosition(map) {
|
|
||||||
let flag = true;
|
|
||||||
const tipInfoList = [];
|
|
||||||
map.signalList.forEach(signal => {
|
|
||||||
const section = this.$store.getters['map/getDeviceByCode'](signal.sectionCode);
|
|
||||||
if (section) {
|
|
||||||
const offsetX = signal.positionPoint ? signal.positionPoint.x : 0;
|
|
||||||
const signalPositionX = signal.position.x - offsetX;
|
|
||||||
const max = Math.max(section.points[section.points.length - 1].x, section.points[0].x);
|
|
||||||
const min = Math.min(section.points[section.points.length - 1].x, section.points[0].x);
|
|
||||||
if (signalPositionX < min && signalPositionX > max) {
|
|
||||||
tipInfoList.push('信号机' + signal.name + '(' + signal.code + ')未在其关联的区段' + section.name + '(' + section.code + ')里');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tipInfoList.push('信号机' + signal.name + '(' + signal.code + ')所关联的区段不存在');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (!tipInfoList.length) {
|
|
||||||
flag = true;
|
|
||||||
} else {
|
|
||||||
flag = false;
|
|
||||||
this.$messageBox(this.$t('tip.dataValidationFailed'));
|
|
||||||
this.tableToExcel(tipInfoList);
|
|
||||||
}
|
|
||||||
return flag;
|
|
||||||
},
|
|
||||||
checkPointsCoincide(point1, point2) { // 校验两点是否重合
|
|
||||||
if (point1 && point2) {
|
|
||||||
return point1.x === point2.x && point1.y === point2.y;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
checkSectionPointsHasCoincide(points1, points2) { // 校验两区段的左右点是否有重合
|
|
||||||
return points1.length && points2.length && (this.checkPointsCoincide(points1[0], points2[0]) || this.checkPointsCoincide(points1[0], points2[points2.length - 1]) || this.checkPointsCoincide(points1[points1.length - 1], points2[points2.length - 1]) || this.checkPointsCoincide(points1[points1.length - 1], points2[0]));
|
|
||||||
},
|
|
||||||
checkCorrelation(section1, section2) { // 校验后者是否与前者有关联关系
|
checkCorrelation(section1, section2) { // 校验后者是否与前者有关联关系
|
||||||
return section1.leftSectionCode === section2.code || section1.rightSectionCode === section2.code;
|
return section1.leftSectionCode === section2.code || section1.rightSectionCode === section2.code;
|
||||||
},
|
},
|
||||||
@ -450,26 +348,6 @@ export default {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async checkOver() {
|
|
||||||
if (this.$refs.jlmapVisual) {
|
|
||||||
const map = this.$store.state.map.map;
|
|
||||||
if (map && this.$route.params.mapId) {
|
|
||||||
const checkInterlockDevice = await this.verifyInterlockDevice(map);
|
|
||||||
if (this.verifySectionRelation(map) && this.verifySignalPosition(map) && checkInterlockDevice && this.verifyStationPosition(map)) {
|
|
||||||
verifyMap(this.$route.params.mapId).then(res => {
|
|
||||||
if (res.data.length) {
|
|
||||||
this.tableToExcel(res.data);
|
|
||||||
this.$messageBox(this.$t('tip.dataValidationFailed'));
|
|
||||||
} else {
|
|
||||||
this.$message.success(this.$t('tip.dataValidationSuccess'));
|
|
||||||
}
|
|
||||||
}).catch(() => {
|
|
||||||
this.$message.error(this.$t('tip.requestFailed'));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tableToExcel(data) {
|
tableToExcel(data) {
|
||||||
const filterVal = ['index'];
|
const filterVal = ['index'];
|
||||||
const arr = [];
|
const arr = [];
|
||||||
@ -486,8 +364,11 @@ export default {
|
|||||||
backRoute() {
|
backRoute() {
|
||||||
this.$router.push({ path: `/design/usermap/home` });
|
this.$router.push({ path: `/design/usermap/home` });
|
||||||
},
|
},
|
||||||
updateMapModel(models) { // 创建 跟新元素
|
createPicture() { // 创建 跟新元素
|
||||||
this.$store.dispatch('map/updateSystemMapDevices', models);
|
this.$refs.createPicture.doShow();
|
||||||
|
},
|
||||||
|
changePicture() {
|
||||||
|
this.$refs.changePicture.doShow();
|
||||||
},
|
},
|
||||||
// 撤销
|
// 撤销
|
||||||
revocation() {
|
revocation() {
|
||||||
@ -554,6 +435,10 @@ export default {
|
|||||||
device.instance.drawSelected(flag);
|
device.instance.drawSelected(flag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
pictureChanged(picture) {
|
||||||
|
this.$refs.mapOperate.pictureChanged(picture);
|
||||||
|
this.$refs.jlmapVisual.pictureChanged(picture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import OperateProperty from './components/operateProperty';
|
import OperateProperty from './components/operateProperty';
|
||||||
import { mapGetters } from 'vuex';
|
import { mapGetters } from 'vuex';
|
||||||
|
import { deepAssign } from '@/utils/index';
|
||||||
export default {
|
export default {
|
||||||
name: 'Device',
|
name: 'Device',
|
||||||
components: {
|
components: {
|
||||||
@ -22,19 +23,50 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
editModel: {},
|
editModel: {
|
||||||
rules: {},
|
code: '',
|
||||||
typeList: []
|
pictureHide: false,
|
||||||
|
position: { x: 0, y: 0 }
|
||||||
|
},
|
||||||
|
rules: {}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters('map', [
|
...mapGetters('map', [
|
||||||
'signalList',
|
'arrowList',
|
||||||
|
'automaticRouteButtonList',
|
||||||
|
'axleCounterResetButtonList',
|
||||||
|
'cycleButtonList',
|
||||||
|
'directionRodList',
|
||||||
|
'espList',
|
||||||
|
'indicatorLightList',
|
||||||
|
'lcList',
|
||||||
|
'lineList',
|
||||||
|
'outerFrameList',
|
||||||
|
'psdList',
|
||||||
|
'resourceList',
|
||||||
|
'responderList',
|
||||||
'sectionList',
|
'sectionList',
|
||||||
'switchList',
|
'signalButtonList',
|
||||||
|
'signalList',
|
||||||
|
'splitStationList',
|
||||||
'stationList',
|
'stationList',
|
||||||
'stationStandList'
|
'stationStandList',
|
||||||
|
'switchList',
|
||||||
|
'tbStrategyList',
|
||||||
|
'tempSpeedLimitList',
|
||||||
|
'textList',
|
||||||
|
'totalGuideLockButtonVOList',
|
||||||
|
'trainWindowList',
|
||||||
|
'zcList'
|
||||||
]),
|
]),
|
||||||
|
deviceList () {
|
||||||
|
return [...this.sectionList, ...this.signalList, ...this.switchList, ...this.psdList, ...this.stationStandList, ...this.stationList, ...this.trainWindowList,
|
||||||
|
...this.arrowList, ...this.automaticRouteButtonList, ...this.axleCounterResetButtonList, ...this.cycleButtonList, ...this.directionRodList, ...this.espList,
|
||||||
|
...this.indicatorLightList, ...this.lcList, ...this.lineList, ...this.outerFrameList, ...this.psdList, ...this.resourceList, ...this.responderList,
|
||||||
|
...this.signalButtonList, ...this.splitStationList, ...this.tbStrategyList, ...this.tempSpeedLimitList, ...this.textList, ...this.totalGuideLockButtonVOList,
|
||||||
|
...this.zcList];
|
||||||
|
},
|
||||||
form () {
|
form () {
|
||||||
return {
|
return {
|
||||||
labelWidth: '130px',
|
labelWidth: '130px',
|
||||||
@ -46,34 +78,45 @@ export default {
|
|||||||
draw: {
|
draw: {
|
||||||
name: this.$t('map.drawData'),
|
name: this.$t('map.drawData'),
|
||||||
item: [
|
item: [
|
||||||
{ prop: 'type', label: '类型', type: 'select', optionLabel: 'label', optionValue: 'value', options: this.typeList },
|
{ prop: 'code', label: '设备:', type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.deviceList, deviceChange: this.deviceChange },
|
||||||
{ prop: 'code', label: this.$t('map.textCode'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.textList, deviceChange: this.deviceChange },
|
{ prop: 'pictureHide', label: '隐藏:', type: 'checkbox' },
|
||||||
{ prop: 'position', label: this.$t('map.textPoints'), type: 'coordinate', width: '120px', children: [
|
{ prop: 'position', label: '位置:', type: 'coordinate', width: '120px', children: [
|
||||||
{ prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: 'x:', type: 'number', labelWidth: '25px', disabled: false },
|
{ prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: 'x:', type: 'number', labelWidth: '25px', disabled: false },
|
||||||
{ prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '25px', disabled: false }
|
{ prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '25px', disabled: false }
|
||||||
] }
|
] }
|
||||||
]
|
]
|
||||||
},
|
|
||||||
map: {
|
|
||||||
name: this.$t('map.mapData'),
|
|
||||||
item: []
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
},
|
|
||||||
deviceList () {
|
|
||||||
return [];
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateMapModel() {
|
deviceSelect(selected) {
|
||||||
|
this.$refs.form && this.$refs.form.resetFields();
|
||||||
|
const pointsDevice = ['LINE', 'POWER', 'SECTION'];
|
||||||
|
const pointDevice = ['OVERAP', 'TRAINWINDOW'];
|
||||||
|
this.editModel.code = selected.code;
|
||||||
|
this.editModel.name = selected.name;
|
||||||
|
if (selected && pointsDevice.includes(selected._type.toUpperCase())) {
|
||||||
|
this.editModel.position.x = selected.points[0].x;
|
||||||
|
this.editModel.position.y = selected.points[0].y;
|
||||||
|
} else if (selected && pointDevice.includes(selected._type.toUpperCase())) {
|
||||||
|
this.editModel.position.x = selected.point.x;
|
||||||
|
this.editModel.position.y = selected.point.y;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
this.editModel.position.x = selected.position.x;
|
||||||
|
this.editModel.position.y = selected.position.y;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
updateMapModel(data) {
|
||||||
|
this.$emit('updateMapModel', data);
|
||||||
},
|
},
|
||||||
clearDeviceSelect() {
|
clearDeviceSelect() {
|
||||||
|
this.editModel = { code: '', pictureHide: false, position: {x:0, y:0} };
|
||||||
},
|
},
|
||||||
deviceChange() {
|
deviceChange(val) {
|
||||||
|
this.deviceSelect(val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -8,7 +8,10 @@
|
|||||||
<b>{{ mapInfo.name }}</b>
|
<b>{{ mapInfo.name }}</b>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<el-button v-if="isSave" type="text" style="padding: 3px 0;float: right;" :disabled="$attrs.mapSaveing" @click="saveMapEvent">{{ $t('map.save') }}</el-button>
|
<span>{{ pictureName }}</span>
|
||||||
|
<el-button type="text" style="padding: 3px 0;float: right;" @click="createPicture">新建</el-button>
|
||||||
|
<el-button type="text" style="padding: 3px 0;float: right;" @click="changePicture">切换</el-button>
|
||||||
|
<el-button v-if="isSave" type="text" style="padding: 3px 0;float: right;" :disabled="!pictureName" @click="saveMapEvent">{{ $t('map.save') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-tabs v-model="enabledTab" class="mapEdit" type="card">
|
<el-tabs v-model="enabledTab" class="mapEdit" type="card">
|
||||||
<el-tab-pane v-for="(each,index) in tabList" :key="index" :label="each.label" class="tab_pane_box" :name="each.name" :lazy="lazy">
|
<el-tab-pane v-for="(each,index) in tabList" :key="index" :label="each.label" class="tab_pane_box" :name="each.name" :lazy="lazy">
|
||||||
@ -49,11 +52,13 @@ export default {
|
|||||||
return {
|
return {
|
||||||
lazy: true,
|
lazy: true,
|
||||||
tabList:[
|
tabList:[
|
||||||
{label: '设备', name: 'device', menus: DeviceDraft},
|
{label: '设备', name: 'Device', menus: DeviceDraft},
|
||||||
{label: '多选', name: 'multiSelect', menus: MultiSelect}
|
{label: '多选', name: 'MultiSelect', menus: MultiSelect}
|
||||||
],
|
],
|
||||||
|
pictureList: [],
|
||||||
selectDevice:'',
|
selectDevice:'',
|
||||||
enabledTab: 'Line'
|
enabledTab: 'Device',
|
||||||
|
pictureName: ''
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -62,12 +67,10 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
'$store.state.map.updateCount': function () {
|
|
||||||
this.$refs[this.enabledTab][0].edit();
|
|
||||||
},
|
|
||||||
selected(val) {
|
selected(val) {
|
||||||
if (this.selected) {
|
if (this.selected) {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
|
console.log(this.$refs[this.enabledTab]);
|
||||||
this.$refs[this.enabledTab][0].deviceSelect(val);
|
this.$refs[this.enabledTab][0].deviceSelect(val);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -76,11 +79,12 @@ export default {
|
|||||||
mounted() {},
|
mounted() {},
|
||||||
methods: {
|
methods: {
|
||||||
handleSelectControlPage(device) {
|
handleSelectControlPage(device) {
|
||||||
const type = device._type;
|
|
||||||
if (this.selectDevice) {
|
if (this.selectDevice) {
|
||||||
this.enabledTab = this.selectDevice;
|
this.enabledTab = this.selectDevice;
|
||||||
|
} else if (device._type === 'CheckBox') {
|
||||||
|
this.enabledTab = 'MultiSelect';
|
||||||
} else {
|
} else {
|
||||||
this.enabledTab = type;
|
this.enabledTab = 'Device';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
deviceSelect(type) {
|
deviceSelect(type) {
|
||||||
@ -88,6 +92,15 @@ export default {
|
|||||||
},
|
},
|
||||||
saveMapEvent() {
|
saveMapEvent() {
|
||||||
this.$emit('saveMapEvent');
|
this.$emit('saveMapEvent');
|
||||||
|
},
|
||||||
|
createPicture() {
|
||||||
|
this.$emit('createPicture');
|
||||||
|
},
|
||||||
|
changePicture() {
|
||||||
|
this.$emit('changePicture');
|
||||||
|
},
|
||||||
|
pictureChanged(picture) {
|
||||||
|
this.pictureName = picture.name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -99,6 +112,8 @@ export default {
|
|||||||
height:17px;
|
height:17px;
|
||||||
text-overflow:ellipsis;
|
text-overflow:ellipsis;
|
||||||
white-space:nowrap;
|
white-space:nowrap;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
.el-dropdown-link {
|
.el-dropdown-link {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
@ -1,13 +1,100 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<div>
|
||||||
</template>
|
<div class="list-box">
|
||||||
|
<div
|
||||||
|
v-for="nor in deviceList"
|
||||||
|
:key="nor.code"
|
||||||
|
class="list-content"
|
||||||
|
@mouseenter="mouseenter(nor)"
|
||||||
|
@mouseleave="mouseleave(nor)"
|
||||||
|
>
|
||||||
|
<div class="name">{{ nor.name || nor.code }}</div>
|
||||||
|
<div class="close" @click="delList(nor, item.list)"><i class="el-icon-close" /></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div></template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import {mapGetters} from 'vuex';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "multiSelect"
|
name: 'MultiSelect',
|
||||||
}
|
data() {
|
||||||
|
return {
|
||||||
|
modelList: [],
|
||||||
|
deviceList: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters('map', ['seclectDeviceList'])
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
deviceSelect(selected) {
|
||||||
|
if (selected && selected._type.toUpperCase() == 'CheckBox'.toUpperCase()) {
|
||||||
|
this.deviceList = [...this.seclectDeviceList];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mouseenter(model) {
|
||||||
|
if (model._type == 'Section') {
|
||||||
|
model.instance.mouseover();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mouseleave(model) {
|
||||||
|
if (model._type == 'Section') {
|
||||||
|
model.instance.mouseout();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 删除当前选中
|
||||||
|
delList(model, list) {
|
||||||
|
list.forEach((nor, index) => {
|
||||||
|
if (nor.code == model.code) {
|
||||||
|
list.splice(index, 1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.seclectDeviceList.forEach((item, index) => {
|
||||||
|
if (item.code == model.code) {
|
||||||
|
this.seclectDeviceList.splice(index, 1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
clearData() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style lang="scss" scoped>
|
||||||
|
.list-box {
|
||||||
|
overflow: hidden;
|
||||||
|
.list-content {
|
||||||
|
float: left;
|
||||||
|
background: #e2e2e2;
|
||||||
|
margin: 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #ccc;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
float: left;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
.close {
|
||||||
|
float: left;
|
||||||
|
width: 23px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.title-box {
|
||||||
|
padding-left: 10px;
|
||||||
|
border-left: 4px solid red;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
<span>线上发车。</span>
|
<span>线上发车。</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size: 16px;margin-top: 60px;display: flex;align-items: center;justify-content: end;">
|
<div style="font-size: 16px;margin-top: 60px;display: flex;align-items: center;justify-content: end;">
|
||||||
<div><span style="color: #f00;">{{ showCentralizedStationName }}</span>(站名印)车站值班员(签名)</div>
|
<div><span style="color: #f00;">{{ greenLicenseForm.stationSeal }}</span>(站名印)车站值班员(签名)</div>
|
||||||
<el-input v-model="greenLicenseForm.signature" :disabled="switchFlag" size="small" style="width: 80px;" />
|
<el-input v-model="greenLicenseForm.signature" :disabled="switchFlag" size="small" style="width: 80px;" />
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size: 16px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 10px;justify-content: end;">
|
<div style="font-size: 16px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 10px;justify-content: end;">
|
||||||
@ -31,6 +31,18 @@
|
|||||||
<el-input v-model="greenLicenseForm.day" :disabled="switchFlag" size="small" style="width: 80px;" />
|
<el-input v-model="greenLicenseForm.day" :disabled="switchFlag" size="small" style="width: 80px;" />
|
||||||
<div>日填发</div>
|
<div>日填发</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="switchFlag" style="text-align: center;">
|
||||||
|
<el-select v-model="memberId" size="small" style="width: 200px" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in giveMemberList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.labelName"
|
||||||
|
:disabled="item.userId == userId"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
<el-button size="small" style="margin-left: 10px;" type="primary" @click="giveTicket">给予</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -46,15 +58,30 @@ export default {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: true
|
required: true
|
||||||
},
|
},
|
||||||
showCentralizedStationName: {
|
giveMemberList: {
|
||||||
type: String,
|
type: Array,
|
||||||
required: true
|
default() {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
memberId: ''
|
||||||
};
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
userId() {
|
||||||
|
return this.$store.state.user ? this.$store.state.user.id : '';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
giveTicket() {
|
||||||
|
if (this.memberId) {
|
||||||
|
this.$emit('giveTicket', { ticketId: this.greenLicenseForm.id, memberId: this.memberId });
|
||||||
|
this.memberId = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -25,8 +25,8 @@
|
|||||||
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
|
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
|
||||||
<el-tab-pane label="路票填写" name="first">
|
<el-tab-pane label="路票填写" name="first">
|
||||||
<rail-ticket v-if="attachmentType === 'RAIL_TICKET'" :switch-flag="false" :ticket-form="ticketForm" :station-list="stationList" />
|
<rail-ticket v-if="attachmentType === 'RAIL_TICKET'" :switch-flag="false" :ticket-form="ticketForm" :station-list="stationList" />
|
||||||
<green-licence v-else-if="attachmentType === 'GREEN_LICENCE'" :switch-flag="false" :green-license-form="greenLicenseForm" :show-centralized-station-name="showCentralizedStationName" />
|
<green-licence v-else-if="attachmentType === 'GREEN_LICENCE'" :switch-flag="false" :green-license-form="greenLicenseForm" />
|
||||||
<red-licence v-else-if="attachmentType === 'RED_LICENCE'" :show-centralized-station-name="showCentralizedStationName" :switch-flag="false" :red-license-form="redLicenseForm" />
|
<red-licence v-else-if="attachmentType === 'RED_LICENCE'" :switch-flag="false" :red-license-form="redLicenseForm" />
|
||||||
<div style="text-align: center;">
|
<div style="text-align: center;">
|
||||||
<el-button size="small" style="margin-top: 10px;" type="primary" @click="submit">提交</el-button>
|
<el-button size="small" style="margin-top: 10px;" type="primary" @click="submit">提交</el-button>
|
||||||
</div>
|
</div>
|
||||||
@ -34,17 +34,17 @@
|
|||||||
<el-tab-pane label="路票查询" name="second">
|
<el-tab-pane label="路票查询" name="second">
|
||||||
<div v-if="attachmentType === 'RAIL_TICKET'" style="height: 450px;overflow-y: auto;">
|
<div v-if="attachmentType === 'RAIL_TICKET'" style="height: 450px;overflow-y: auto;">
|
||||||
<template v-for="(item, index) in railTicketList">
|
<template v-for="(item, index) in railTicketList">
|
||||||
<rail-ticket :key="index" :switch-flag="true" :ticket-form="item" :station-list="stationList" />
|
<rail-ticket :key="index" :switch-flag="true" :ticket-form="item" :station-list="stationList" :give-member-list="giveMemberList" @giveTicket="giveTicket" />
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="attachmentType === 'GREEN_LICENCE'" style="height: 450px;overflow-y: auto;">
|
<div v-else-if="attachmentType === 'GREEN_LICENCE'" style="height: 450px;overflow-y: auto;">
|
||||||
<template v-for="(item, index) in greenLicenseList">
|
<template v-for="(item, index) in greenLicenseList">
|
||||||
<green-licence :key="index" :show-centralized-station-name="showCentralizedStationName" :switch-flag="true" :green-license-form="item" />
|
<green-licence :key="index" :switch-flag="true" :green-license-form="item" :give-member-list="giveMemberList" @giveTicket="giveTicket" />
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="attachmentType === 'RED_LICENCE'" style="height: 450px;overflow-y: auto;">
|
<div v-else-if="attachmentType === 'RED_LICENCE'" style="height: 450px;overflow-y: auto;">
|
||||||
<template v-for="(item, index) in redLicenseList">
|
<template v-for="(item, index) in redLicenseList">
|
||||||
<red-licence :key="index" :show-centralized-station-name="showCentralizedStationName" :switch-flag="true" :red-license-form="item" />
|
<red-licence :key="index" :switch-flag="true" :red-license-form="item" :give-member-list="giveMemberList" @giveTicket="giveTicket" />
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
@ -132,6 +132,7 @@ import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuO
|
|||||||
import RailTicket from './trainTicket';
|
import RailTicket from './trainTicket';
|
||||||
import GreenLicence from './greenLicence';
|
import GreenLicence from './greenLicence';
|
||||||
import RedLicence from './redLicence';
|
import RedLicence from './redLicence';
|
||||||
|
import { EventBus } from '@/scripts/event-bus';
|
||||||
export default {
|
export default {
|
||||||
name: 'Index',
|
name: 'Index',
|
||||||
components: {
|
components: {
|
||||||
@ -146,13 +147,14 @@ export default {
|
|||||||
railTicketList: [],
|
railTicketList: [],
|
||||||
greenLicenseList: [],
|
greenLicenseList: [],
|
||||||
redLicenseList: [],
|
redLicenseList: [],
|
||||||
|
giveMemberList: [],
|
||||||
activeName: 'first',
|
activeName: 'first',
|
||||||
ticketForm: {
|
ticketForm: {
|
||||||
number: '',
|
number: '',
|
||||||
tripNumber: '',
|
tripNumber: '',
|
||||||
station: '',
|
station: '',
|
||||||
nextStation: '',
|
nextStation: '',
|
||||||
stationSeal: true,
|
stationSeal: '',
|
||||||
no: '',
|
no: '',
|
||||||
deputy: false
|
deputy: false
|
||||||
},
|
},
|
||||||
@ -161,7 +163,7 @@ export default {
|
|||||||
reason: '',
|
reason: '',
|
||||||
tripNumber: '',
|
tripNumber: '',
|
||||||
line: '',
|
line: '',
|
||||||
stationSeal: true,
|
stationSeal: '',
|
||||||
signature: '',
|
signature: '',
|
||||||
year: '',
|
year: '',
|
||||||
moon: '',
|
moon: '',
|
||||||
@ -183,7 +185,7 @@ export default {
|
|||||||
noticeHour2: '',
|
noticeHour2: '',
|
||||||
noticeMinute2: '',
|
noticeMinute2: '',
|
||||||
noticeTripNumber2: '',
|
noticeTripNumber2: '',
|
||||||
stationSeal: true,
|
stationSeal: '',
|
||||||
signature: '',
|
signature: '',
|
||||||
year: '',
|
year: '',
|
||||||
moon: '',
|
moon: '',
|
||||||
@ -205,21 +207,37 @@ export default {
|
|||||||
computed: {
|
computed: {
|
||||||
...mapGetters('map', [
|
...mapGetters('map', [
|
||||||
'stationList'
|
'stationList'
|
||||||
]),
|
])
|
||||||
showCentralizedStationName() {
|
},
|
||||||
if (this.$store.state.map.showCentralizedStationCode) {
|
watch: {
|
||||||
const station = this.$store.getters['map/getDeviceByCode'](this.$store.state.map.showCentralizedStationCode);
|
'$store.state.map.showCentralizedStationCode': function (val) {
|
||||||
if (station) { return station.name; } else { return ''; }
|
const station = this.$store.getters['map/getDeviceByCode'](val);
|
||||||
} else { return ''; }
|
if (station) {
|
||||||
|
this.ticketForm.station = station.name;
|
||||||
|
this.ticketForm.stationSeal = station.name;
|
||||||
|
this.greenLicenseForm.stationSeal = station.name;
|
||||||
|
this.redLicenseForm.stationSeal = station.name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
mounted() {
|
||||||
|
EventBus.$on('trainTicketMember', (memberList) => {
|
||||||
|
this.giveMemberList = memberList;
|
||||||
|
});
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
doClose() {
|
doClose() {
|
||||||
this.trainTicketShow = false;
|
this.trainTicketShow = false;
|
||||||
},
|
},
|
||||||
doShow() {
|
doShow() {
|
||||||
this.trainTicketShow = true;
|
this.trainTicketShow = true;
|
||||||
this.ticketForm.station = this.showCentralizedStationName;
|
const station = this.$store.getters['map/getDeviceByCode'](this.$store.state.map.showCentralizedStationCode);
|
||||||
|
if (station) {
|
||||||
|
this.ticketForm.station = station.name;
|
||||||
|
this.ticketForm.stationSeal = station.name;
|
||||||
|
this.greenLicenseForm.stationSeal = station.name;
|
||||||
|
this.redLicenseForm.stationSeal = station.name;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
handleClick() {
|
handleClick() {
|
||||||
if (this.activeName === 'second') {
|
if (this.activeName === 'second') {
|
||||||
@ -232,11 +250,12 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
clearData() {
|
clearData() {
|
||||||
this.ticketForm = {number: '', tripNumber: '', station: '', nextStation: '', stationSeal: true, no: '', deputy: false};
|
const station = this.$store.getters['map/getDeviceByCode'](this.$store.state.map.showCentralizedStationCode) || {};
|
||||||
this.greenLicenseForm = {number: '', reason: '', tripNumber: '', line: '', stationSeal: true, signature: '', year: '', moon: '', day: '' };
|
this.ticketForm = {number: '', tripNumber: '', station: station.name, nextStation: '', stationSeal: station.name, no: '', deputy: false};
|
||||||
|
this.greenLicenseForm = {number: '', reason: '', tripNumber: '', line: '', stationSeal: station.name, signature: '', year: '', moon: '', day: '' };
|
||||||
this.redLicenseForm = {number: '', licenseReceived: true, licenseTripNumber: '', licenseStation: '', licenseNextStation: '', licenseHour: '',
|
this.redLicenseForm = {number: '', licenseReceived: true, licenseTripNumber: '', licenseStation: '', licenseNextStation: '', licenseHour: '',
|
||||||
licenseMinute: '', licenseTripNumber2: '', noticeTripNumber: '', noticeHour1: '', noticeMinute1: '', noticeTripNumber1: '', noticeHour2: '',
|
licenseMinute: '', licenseTripNumber2: '', noticeTripNumber: '', noticeHour1: '', noticeMinute1: '', noticeTripNumber1: '', noticeHour2: '',
|
||||||
noticeMinute2: '', noticeTripNumber2: '', stationSeal: true, signature: '', year: '', moon: '', day: ''};
|
noticeMinute2: '', noticeTripNumber2: '', stationSeal: station.name, signature: '', year: '', moon: '', day: ''};
|
||||||
},
|
},
|
||||||
query() {
|
query() {
|
||||||
const params = { type: this.attachmentType };
|
const params = { type: this.attachmentType };
|
||||||
@ -265,10 +284,18 @@ export default {
|
|||||||
}
|
}
|
||||||
commitOperate(menuOperate.Rail.railFillInTicket, params, 3).then(({valid, operate})=>{
|
commitOperate(menuOperate.Rail.railFillInTicket, params, 3).then(({valid, operate})=>{
|
||||||
this.clearData();
|
this.clearData();
|
||||||
this.ticketForm.station = this.showCentralizedStationName;
|
this.$message.success('提交路票成功!');
|
||||||
}).catch(()=>{
|
}).catch(()=>{
|
||||||
this.$message.error('提交路票失败!');
|
this.$message.error('提交路票失败!');
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
giveTicket(params) {
|
||||||
|
commitOperate(menuOperate.Rail.railGiveTicketTo, params, 3).then(({valid, operate}) => {
|
||||||
|
this.$message.success('给予路票成功!');
|
||||||
|
this.query();
|
||||||
|
}).catch(()=> {
|
||||||
|
this.$message.error('给予路票失败!');
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -20,11 +20,11 @@
|
|||||||
<span>分发出的第</span>
|
<span>分发出的第</span>
|
||||||
<el-input v-model="redLicenseForm.licenseTripNumber2" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
|
<el-input v-model="redLicenseForm.licenseTripNumber2" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
|
||||||
<span>次列车,邻站到达通知</span>
|
<span>次列车,邻站到达通知</span>
|
||||||
<el-radio-group v-model="redLicenseForm.licenseReceived" :disabled="switchFlag" style="display: inline;">
|
<el-radio-group v-model="redLicenseForm.licenseReceived" :disabled="switchFlag" style="display: inline;">
|
||||||
<el-radio label="已">已</el-radio>
|
<el-radio :label="true">已</el-radio>
|
||||||
<el-radio label="未" style="margin-left: 5px;">未</el-radio>
|
<el-radio :label="false" style="margin-left: 5px;">未</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<span>收到</span>
|
<span>收到</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: center;font-size: 28px;margin-top: 10px;">通 知 书</div>
|
<div style="text-align: center;font-size: 28px;margin-top: 10px;">通 知 书</div>
|
||||||
<div style="font-size: 16px;margin-top: 10px;text-indent: 36px;">
|
<div style="font-size: 16px;margin-top: 10px;text-indent: 36px;">
|
||||||
@ -48,7 +48,7 @@
|
|||||||
<span>次列车。</span>
|
<span>次列车。</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size: 16px;margin-top: 60px;display: flex;align-items: center;justify-content: end;">
|
<div style="font-size: 16px;margin-top: 60px;display: flex;align-items: center;justify-content: end;">
|
||||||
<div><span style="color: #f00;">{{ showCentralizedStationName }}</span>(站名印)车站值班员(签名)</div>
|
<div><span style="color: #f00;">{{ redLicenseForm.stationSeal }}</span>(站名印)车站值班员(签名)</div>
|
||||||
<el-input v-model="redLicenseForm.signature" :disabled="switchFlag" size="small" style="width: 80px;" />
|
<el-input v-model="redLicenseForm.signature" :disabled="switchFlag" size="small" style="width: 80px;" />
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size: 16px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 10px;justify-content: end;">
|
<div style="font-size: 16px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 10px;justify-content: end;">
|
||||||
@ -59,6 +59,18 @@
|
|||||||
<el-input v-model="redLicenseForm.day" :disabled="switchFlag" size="small" style="width: 80px;" />
|
<el-input v-model="redLicenseForm.day" :disabled="switchFlag" size="small" style="width: 80px;" />
|
||||||
<div>日填发</div>
|
<div>日填发</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="switchFlag" style="text-align: center;">
|
||||||
|
<el-select v-model="memberId" size="small" style="width: 200px" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in giveMemberList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.labelName"
|
||||||
|
:disabled="item.userId == userId"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
<el-button size="small" style="margin-left: 10px;" type="primary" @click="giveTicket">给予</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -74,15 +86,30 @@ export default {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: true
|
required: true
|
||||||
},
|
},
|
||||||
showCentralizedStationName: {
|
giveMemberList: {
|
||||||
type: String,
|
type: Array,
|
||||||
required: true
|
default() {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
memberId: ''
|
||||||
};
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
userId() {
|
||||||
|
return this.$store.state.user ? this.$store.state.user.id : '';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
giveTicket() {
|
||||||
|
if (this.memberId) {
|
||||||
|
this.$emit('giveTicket', { ticketId: this.redLicenseForm.id, memberId: this.memberId });
|
||||||
|
this.memberId = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
90
src/views/newMap/trainTicket/ticketInfo.vue
Normal file
90
src/views/newMap/trainTicket/ticketInfo.vue
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
title="路票"
|
||||||
|
:visible="trainTicketShow"
|
||||||
|
width="640px"
|
||||||
|
:before-close="doClose"
|
||||||
|
:z-index="2000"
|
||||||
|
:modal="false"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
center
|
||||||
|
>
|
||||||
|
<div v-for="(item, index) in trainTicketList" :key="index">
|
||||||
|
<train-ticket v-if="item.type === 'RAIL_TICKET'" :station-list="stationList" :switch-flag="true" :ticket-form="item" :give-member-list="giveMemberList" @giveTicket="giveTicket" />
|
||||||
|
<green-licence v-else-if="item.type === 'GREEN_LICENCE'" :switch-flag="true" :green-license-form="item" :give-member-list="giveMemberList" @giveTicket="giveTicket" />
|
||||||
|
<red-licence v-else-if="item.type === 'RED_LICENCE'" :switch-flag="true" :red-license-form="item" :give-member-list="giveMemberList" @giveTicket="giveTicket" />
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import TrainTicket from './trainTicket';
|
||||||
|
import RedLicence from './redLicence';
|
||||||
|
import GreenLicence from './greenLicence';
|
||||||
|
import {mapGetters} from 'vuex';
|
||||||
|
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
|
||||||
|
import { EventBus } from '@/scripts/event-bus';
|
||||||
|
export default {
|
||||||
|
name: 'TicketInfo',
|
||||||
|
components: {
|
||||||
|
TrainTicket,
|
||||||
|
RedLicence,
|
||||||
|
GreenLicence
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
trainTicketShow: false,
|
||||||
|
trainTicketList: [],
|
||||||
|
giveMemberList: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters('map', [
|
||||||
|
'stationList'
|
||||||
|
])
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
EventBus.$on('trainTicketMember', (memberList) => {
|
||||||
|
this.giveMemberList = memberList;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
doClose() {
|
||||||
|
this.trainTicketList = [];
|
||||||
|
this.trainTicketShow = false;
|
||||||
|
},
|
||||||
|
doShow(info) {
|
||||||
|
this.trainTicketShow = true;
|
||||||
|
this.trainTicketList.push(info);
|
||||||
|
},
|
||||||
|
giveTicket(params) {
|
||||||
|
const index = this.trainTicketList.findIndex(item => item.id === params.ticketId);
|
||||||
|
commitOperate(menuOperate.Rail.railGiveTicketTo, params, 3).then(({valid, operate}) => {
|
||||||
|
this.$message.success('给予路票成功!');
|
||||||
|
// this.doClose();
|
||||||
|
this.trainTicketList.splice(index, 1);
|
||||||
|
}).catch(()=> {
|
||||||
|
this.$message.error('给予路票失败!');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
/deep/.inline-input .el-input__inner{
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
/deep/.station-input .el-input__inner{
|
||||||
|
width: 200px;
|
||||||
|
height: 50px;
|
||||||
|
line-height: 50px;
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
/deep/.el-radio__label{
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
/deep/.el-radio{
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
</style>
|
@ -25,14 +25,23 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex; justify-content: space-between;font-size: 18px;margin-top: 25px;margin-bottom: 25px;align-items: center;">
|
<div style="display: flex; justify-content: space-between;font-size: 18px;margin-top: 25px;margin-bottom: 25px;align-items: center;">
|
||||||
<div style="margin-left: 50px;"><span style="color: #f00">{{ ticketForm.station }}</span>(站名印)</div>
|
<div style="margin-left: 50px;"><span style="color: #f00">{{ ticketForm.stationSeal }}</span>(站名印)</div>
|
||||||
<div>
|
<div>
|
||||||
<span>编号</span>
|
<span>编号</span>
|
||||||
<el-input v-model="ticketForm.no" size="small" :disabled="switchFlag" style="width: 80px;" />
|
<el-input v-model="ticketForm.no" size="small" :disabled="switchFlag" style="width: 80px;" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: center;">
|
<div v-if="switchFlag" style="text-align: center;">
|
||||||
<!-- <el-select v-model=""></el-select>-->
|
<el-select v-model="memberId" size="small" style="width: 200px" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in giveMemberList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.labelName"
|
||||||
|
:disabled="item.userId == userId"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
<el-button size="small" style="margin-left: 10px;" type="primary" @click="giveTicket">给予</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -52,12 +61,31 @@ export default {
|
|||||||
stationList: {
|
stationList: {
|
||||||
type: Array,
|
type: Array,
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
giveMemberList: {
|
||||||
|
type: Array,
|
||||||
|
default() {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
memberId: ''
|
||||||
};
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
userId() {
|
||||||
|
return this.$store.state.user ? this.$store.state.user.id : '';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
giveTicket() {
|
||||||
|
if (this.memberId) {
|
||||||
|
this.$emit('giveTicket', { ticketId: this.ticketForm.id, memberId: this.memberId });
|
||||||
|
this.memberId = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
Reference in New Issue
Block a user