This commit is contained in:
fan 2022-05-23 15:12:07 +08:00
commit bc15cb8d12
11 changed files with 298 additions and 29 deletions

View File

@ -437,7 +437,9 @@ class SkinCode extends defaultStyle {
selfDiscipline: {
show: true,
offset: { x: 0, y: 0 },
text: '允许自律'
text: '允许自律',
defaultColor: '#7F7F7F',
lightColor: '#ff0',
},
selfDisciplineControl: {
show: true,
@ -786,7 +788,7 @@ class SkinCode extends defaultStyle {
trainBody: {
fontFamily: 'consolas',
trainBodyLineWidth: 1, // 车身line宽
changeTrainWidth: false, // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度
changeTrainWidth: true, // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度
specialTrainType: [
{
type: '03',
@ -841,8 +843,9 @@ class SkinCode extends defaultStyle {
trainServerOffset: { x: 4, y: 4} // 列车服务号偏移
},
trainTarget: {
tripNumberPrefix: '000', // 车次号前缀
defaultTripNumber: 'DDD', // 默认车次号2
tripNumberPrefix: '', // 车次号前缀
// defaultTripNumber: 'DDD', // 默认车次号2
defaultTripNumber: ' ', // 默认车次号
trainTargetOffset: { x: 36, y: 4}, // 列车车次号偏移
trainTargetTextAlign: 'right' // 车次号文字显示位置
},

View File

@ -482,7 +482,7 @@ export default class Section extends Group {
this.setAshShow();
model.preGreen && this.line.setStyle({stroke: '#00FF00'});
model.preBlue && this.line.setStyle({stroke: '#4A76B7'});
model.preWhite && this.line.setStyle({stroke: '#fff'})
model.preWhite && this.line.setStyle({stroke: '#fff'});
} else {
this.handleSwitchSection(model, flag);
// 顺序代表优先级
@ -530,6 +530,7 @@ export default class Section extends Group {
}
}
// 分路不良
// model.shuntingTypeList.length > 0 &&
model.badShunt&& this.badShuntStatus();
}
}

View File

@ -675,6 +675,7 @@ export default class Station extends Group {
this.emergencyArrowsControl && this.emergencyArrowsControl.setColor(this.style.Station.StationControl.lamp.grayColor);
this.stationControlCC && this.stationControlCC.setStyle({text:'EL', textFill:this.style.Station.StationControl.text.emergencyControlColor});
this.veryControl && this.veryControl.setColor(this.style.Station.StationControl.veryControl.defaultColor);
this.selfDiscipline && this.selfDiscipline.setColor(this.style.Station.StationControl.selfDiscipline.defaultColor);
this.selfDisciplineControl && this.selfDisciplineControl.setColor(this.style.Station.StationControl.selfDisciplineControl.defaultColor);
this.veryControlButton && this.veryControlButton.setStyle({ fill: this.style.Station.StationControl.veryControlButton.defaultColor });
if (this.style.Station.stationText.isSpecialType) {
@ -705,6 +706,7 @@ export default class Station extends Group {
model.controller && this.handleComplexControl(model.controller);
model.emergencyController != undefined && this.handleEmergencyChange(model.emergencyController);
model.controlApplicant && this.handleControlApplicant(model);
model.allowAutonomy && this.handleAllowAutonomy();
if (this.style.Station.syncCentralizeStation && (model.controlMode || model.controller || model.emergencyController != undefined) && model.centralized) {
model.chargeStationCodeList.forEach(item => {
const device = store.getters['map/getDeviceByCode'](item);
@ -736,6 +738,10 @@ export default class Station extends Group {
this.controlPreReset && this.controlPreReset.setColor('#f00');
}
handleAllowAutonomy() {
this.selfDiscipline && this.selfDiscipline.setColor(this.style.Station.StationControl.selfDiscipline.lightColor);
}
handleControlApplicant(model) {
if (this.style.Station.stationText.isSpecialType) {
const memberData = store.state.training.memberData;

View File

@ -68,13 +68,14 @@ export default class TrainBody extends Group {
z: this.model.z + 1,
x: parseInt(model.point.x + model.style.Train.trainTarget.trainTargetOffset.x),
y: parseInt(model.point.y + model.style.Train.trainTarget.trainTargetOffset.y),
text: tripNumber.substring(tripNumber.length - style.Train.trainTarget.tripNumberPrefix.length),
text: tripNumber.substring(tripNumber.length - (style.Train.trainTarget.tripNumberPrefix.length || tripNumber.length)),
textFill: model.style.Train.trainTarget.fontColor || style.trainTextColor,
fontSize: model.style.Train.trainTarget.fontSize || model.fontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'left',
textVerticalAlign: 'top'
});
// console.log(model.fontSize, tripNumber.length - (style.Train.trainTarget.tripNumberPrefix.length || tripNumber.length), tripNumber, tripNumber.length - style.Train.trainTarget.tripNumberPrefix.length || tripNumber.length);
this.textTrainTarget = new ETextName({
zlevel: model.zlevel,
z: model.z + 1,

View File

@ -353,6 +353,11 @@ export const menuOperate = {
// 设置折返策略
operation: OperationEvent.Station.setBackStrategy.menu.operation,
cmdType: CMD.Station.CMD_STATION_SET_TURN_BACK_STRATEGY
},
requestVeryControl:{
// 非常站控 大铁线路
operation: OperationEvent.StationControl.requestVeryControl.menu.operation,
cmdType:CMD.ControlConvertMenu.CMD_CM_SPECIAL_STATION_CONTROL
}
},
TrainWindow: {

View File

@ -0,0 +1,137 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm route-hand-control"
:title="title"
:visible.sync="show"
width="260px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div class="table">
<div v-for="(temp,index) in tempTable" :key="index" class="eachShunt">
<div class="shuntingName">{{ temp.name }}</div>
<div class="shuntingSelected">
<el-checkbox v-model="temp.selected" size="medium" />
</div>
</div>
</div>
<el-row justify="center" class="button-group">
<el-col :span="9" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="9" :offset="3">
<el-button :id="domIdCancel" @click="cancel">退出</el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</template>
<script>
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'DefectiveShunting',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
title:'分路不良',
loading:false,
sectionCode:'',
tempTable:[]
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Section.defectiveShunting.confirm.domId : '';
}
},
methods:{
doShow({switchSection, code, shuntingTypeList = ''}) {
this.sectionCode = code;
if (switchSection) {
this.tempTable = [
{name:'岔前不良', selected:shuntingTypeList.includes('SWITCH_FRONT_SHUNTING'), value:'SWITCH_FRONT_SHUNTING'},
{name:'定位不良', selected:shuntingTypeList.includes('FIXED_POSITION_SHUNTING'), value:'FIXED_POSITION_SHUNTING'},
{name:'反位不良', selected:shuntingTypeList.includes('REVERSE_POSITION_SHUNTING'), value:'REVERSE_POSITION_SHUNTING'}
];
} else {
this.tempTable = [{
name:'分路不良',
selected:shuntingTypeList.includes('SECTION_SHUNTING'),
value:'SECTION_SHUNTING'
}];
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
const shuntingTypeList = [];
this.tempTable.forEach(each=>{
if (each.selected) {
shuntingTypeList.push(each.value);
}
});
const operate = {
over: true,
code:this.sectionCode,
cmdType:CMD.Section.CMD_SECTION_DEFECTIVE_SHUNTING,
operation: OperationEvent.Section.defectiveShunting.confirm.operation,
param:{
sectionCode:this.sectionCode,
shuntingTypeList:shuntingTypeList
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch((error) => { this.doClose(); this.$refs.noticeInfo.doShow(); console.log(error); });
},
cancel() {
const operate = {
over: true,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style lang="scss" scoped>
.shuntingName{
display: inline-block;
width: 90px;
padding: 4px 0px;
background: #fff;
border-radius: 5px;
border: 1px #bfbfbf solid;
text-align: center;
}
.shuntingSelected{display: inline-block;margin-left: 5px;}
.eachShunt{margin-top:3px;text-align: center;}
</style>

View File

@ -86,9 +86,9 @@
<center><b>S引导总锁</b></center>
</span>
</button>
<button :id="Command.cancel.clearMbm.domId" :disabled="true" class="button_box" style="cursor: not-allowed;" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Command.cancel.clearMbm.operation)">
<button :id="Station.powerUnLock.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="powerOnUnlock()">
<!--<span style="color: #800000">-->
<span style="color: #808080">
<span style="color:black">
<center><b>上电解锁</b></center>
</span>
</button>
@ -98,9 +98,9 @@
<center><b>辅助菜单</b></center>
</span>
</button>
<button :disabled="true" style="cursor: not-allowed;" class="button_box" :style="{width: width+'px',backgroundColor:buttonUpColor}" @click="buttonDown()">
<button :id="Section.defectiveShunting.button.domId" class="button_box" :style="{width: width+'px',backgroundColor:buttonUpColor}" @click="buttonDown(Section.defectiveShunting.button.operation, ['Section'])">
<!--<span style="color: #800000">-->
<span style="color: #808080">
<span style="color: black">
<center><b>分路不良</b></center>
</span>
</button>
@ -117,6 +117,7 @@
<!--</button>-->
<password-box ref="password" @checkOver="passWordCommit" @checkCancel="clearOperate" />
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
<defective-shunting ref="defectiveShunting" />
</div>
</template>
@ -125,6 +126,7 @@ import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import Handler from '@/scripts/cmdPlugin/Handler';
import PasswordBox from './dialog/childDialog/passwordInputBox.vue';
import DefectiveShunting from './dialog/defectiveShunting.vue';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { mapGetters } from 'vuex';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
@ -135,6 +137,7 @@ export default {
name: 'MapButtonMenu',
components: {
PasswordBox,
DefectiveShunting,
NoticeInfo
},
props: {
@ -276,7 +279,7 @@ export default {
const station = this.$store.getters['map/getDeviceByCode'](val);
this.$store.getters['map/checkStationGuideMaster'](station.code, station.sGuideMasterLock, station.xGuideMasterLock);
}
},
}
},
beforeDestroy() {
this.routeDataMap = null;
@ -326,6 +329,7 @@ export default {
if (dom) {
dom.disabled = false;
dom.style.backgroundColor = this.buttonUpColor;
this.$refs.password.doClose();
}
}
if (val) {
@ -338,6 +342,33 @@ export default {
}
}
},
// 线
powerOnUnlock() {
const operate = {
over:true,
operation:this.Station.powerUnLock.button.operation,
cmdType:CMD.Station.CMD_STATION_POWER_ON_UNLOCK,
code:this.$store.state.map.showCentralizedStationCode,
param:{stationCode: this.$store.state.map.showCentralizedStationCode}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.clearOperate();
} else {
this.$refs.noticeInfo.doShow();
}
}).catch((error) => {
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
//
handelDefectiveShunting(model) {
// CMD.Section.CMD_SECTION_DEFECTIVE_SHUNTING;
const {switchSection, code, shuntingTypeList} = model;
this.clearOperate();
this.$refs.defectiveShunting.doShow({switchSection, code, shuntingTypeList});
},
// S
guideLockLeftButtonDown() {
const operate = {
@ -377,7 +408,7 @@ export default {
operation: operation
};
//
const operationList = [this.Signal.humanTrainRoute.button.operation, this.Section.fault.button.operation];
const operationList = [this.Signal.humanTrainRoute.button.operation, this.Section.fault.button.operation, this.Section.defectiveShunting.button.operation];
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.operation = operation;
@ -654,6 +685,8 @@ export default {
this.handelSignalBlockOrUnblock(model);
} else if (buttonOperation === this.Section.fault.button.operation) {
this.handelFaultSection(model);
} else if (buttonOperation === this.Section.defectiveShunting.button.operation) {
this.handelDefectiveShunting(model);
} else {
this.clearOperate();
}

View File

@ -4,6 +4,7 @@
<draw-select ref="drawSelect" />
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
<password-box ref="password" @checkOver="passWordCommit" @checkCancel="clearOperate" />
</div>
</template>
@ -17,6 +18,9 @@ import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
// import Handler from '@/scripts/cmdPlugin/Handler';
import PasswordBox from './dialog/childDialog/passwordInputBox.vue';
export default {
name: 'StationMenu',
@ -24,6 +28,7 @@ export default {
PopMenu,
SetFault,
NoticeInfo,
PasswordBox,
DrawSelect
},
mixins: [
@ -92,6 +97,13 @@ export default {
} else {
this.doClose();
}
},
'$store.state.menuOperation.selectedCount': function (val) {
const selected = this.$store.state.menuOperation.selected;
const subtype = this.$store.state.menuOperation.subType;
if (subtype == 'veryControlButton' && selected._type == 'Station') {
this.veryControlClick(selected);
}
}
},
methods: {
@ -156,6 +168,45 @@ export default {
handlerOpenPdf(elem) {
const url = `https://joylink.club/oss/projects/wjls/${this.selected.jp}/${elem.file}`;
window.open(url, '_blank');
},
//
veryControlClick(selected) {
// stationCodepressDown10
const pressDown = selected.controlMode == 'Interlock' ? 0 : 1;
commitOperate(menuOperate.StationControl.requestVeryControl, { stationCode: selected.code, pressDown:pressDown }, 0).then(({valid, operate}) => {
if (valid) {
operate.nextCmdType = CMD.ControlConvertMenu.CMD_CM_SPECIAL_STATION_CONTROL;
operate['operateNext'] = OperationEvent.Command.close.password.operation;
this.$refs.password.doShow(operate);
}
}).catch(error=>{
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
clearOperate() { //
// Handler.clear(); //
// this.$store.dispatch('menuOperation/setButtonOperation', null);
},
//
passWordCommit(data) {
let operate = {};
if (data.nextCmdType) {
operate = {
over: true,
operation: data.operation,
cmdType: data.nextCmdType,
param: data.param
};
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
}).catch((error) => {
console.error(error);
this.$refs.noticeInfo.doShow();
});
}
}
};

View File

@ -66,7 +66,8 @@ export default {
/** 回复中控请求(同意/拒绝) */
CMD_CM_REPLY_CENTER_CONTROL: {value:'CM_Reply_Center_Control', label: '回复中控请求'},
CMD_CM_RECEIVE_CONTROL: {value:'CM_Receive_Control', label: '接收控制'},
CMD_CM_SURRENDER_CONTROL: {value:'CM_Surrender_Control', label: '交出控制'}
CMD_CM_SURRENDER_CONTROL: {value:'CM_Surrender_Control', label: '交出控制'},
CMD_CM_SPECIAL_STATION_CONTROL:{value:'CM_Special_Station_Control', label: '非常站控'}
},
// 司机操作
@ -176,7 +177,10 @@ export default {
/** 设置默认发车轨 */
CMD_SECTION_SET_DEFAULT_TRANSFER : {value: 'Section_Set_Default_Transfer', label: '设置默认发车轨'},
/** 增加备用车 大铁线路使用*/
CMD_TRAIN_LOAD_TRIP_NUMBER_TRAIN: {value: 'Train_Load_Trip_Number_Train', label: '增加备用车'}
CMD_TRAIN_LOAD_TRIP_NUMBER_TRAIN: {value: 'Train_Load_Trip_Number_Train', label: '增加备用车'},
/** 分路不良 大铁线路使用*/
CMD_SECTION_DEFECTIVE_SHUNTING: {value: 'Section_Defective_Shunting', label: '分路不良'}
},
// 站台

View File

@ -1293,6 +1293,17 @@ export const OperationEvent = {
operation: '2054',
domId: '_Tips-Control-Response-Refuse'
}
},
// 非常站控 大铁线路
requestVeryControl:{
menu: {
operation: '206',
domId: '_Tips-Request-Very-Control-Menu'
},
menuButton: {
operation: '2061',
domId: '_Tips-Request-Very-Control-Menu-Button{BOTTOM}'
}
}
},
@ -2270,11 +2281,27 @@ export const OperationEvent = {
domId: '_Tips-Section-ForceCancelSpeed-Menu{BOTTOM}'
}
},
// 模拟车次输入 大铁线路
addSpareTrain:{
menu: {
operation: '427',
domId: '_Tips-Section-Add-Spare-Train'
}
},
// 分路不良 大铁线路
defectiveShunting:{
button: {
operation: '428',
domId: '_Tips-Section-Defective-Shunting-Button'
},
confirm:{
operation: '4281',
domId: '_Tips-Section-Defective-Shunting-Confirm'
}
// menuButton: {
// operation: '428',
// domId: '_Tips-Section-Defective-Shunting-MenuButton'
// },
}
},
@ -2977,6 +3004,7 @@ export const OperationEvent = {
domId: '_Tips-Station-stationMasterLock-rightButton'
}
}
},
// 列车