ctc显示调整 05/31

This commit is contained in:
fan 2022-05-31 18:09:34 +08:00
parent 93c5bc4fb6
commit 270c32052c
7 changed files with 352 additions and 24 deletions

View File

@ -453,6 +453,54 @@ class SkinCode extends defaultStyle {
text: '非常站控',
lightColor: '#ff0',
defaultColor: '#ccc',
},
selfDisciplineThree: {
offset: { x: 0, y: 0 },
text: '分散自律',
lightColor: '#0f0',
defaultColor: '#ccc'
},
graphRoad: {
show: true,
offset: { x: 0, y: 0 },
text: '按图排路',
lightColor: '#0f0',
defaultColor: '#ccc'
},
planControl: {
show: true,
offset: { x: 0, y: 0 },
text: '计划控制',
lightColor: '#0f0',
defaultColor: '#ccc'
},
centerCommunication: {
show: true,
offset: { x: 0, y: 30 },
text: '中心通信',
lightColor: '#0f0',
defaultColor: '#ccc'
},
selfDisciplineCommunication: {
show: true,
offset: { x: 0, y: 30 },
text: '自律机通信',
lightColor: '#0f0',
defaultColor: '#ccc'
},
allowedTurnBack: {
show: true,
offset: { x: 0, y: 30 },
text: '允许转回',
lightColor: '#0f0',
defaultColor: '#ccc'
},
trainControl: {
show: true,
offset: { x: 0, y: 30 },
text: '列控',
lightColor: '#0f0',
defaultColor: '#ccc'
}
}
};

View File

@ -22,23 +22,46 @@ export default class SignalButton extends Group {
create() {
const model = this.model;
const fillColor = this.getTypeColor();
this.rectButton = new Rect({
zlevel: this.zlevel,
z: this.z,
shape: {
x: model.position.x,
y: model.position.y,
width: 14,
height: 14
},
style: {
lineDash: null,
stroke: '#69666E',
lineWidth:1,
fill: fillColor
}
});
this.add(this.rectButton);
const queryList = window.location.search.substring(1).split('&');
const queryCtc = queryList.find(item => {
return item.includes('ctc');
});
const ctcArcList = ['OCCLUSION', 'RECOVERY', 'CHANGE_DIRECTION', 'ACCIDENT', 'DEPART_ASSIST', 'PICK_ASSIST', 'ASSIST'];
if (queryCtc && ctcArcList.includes(model.type)){
this.arcShape = new Arc({
zlevel: this.zlevel,
z: this.z,
shape: {
cx: this.model.position.x + 7,
cy: this.model.position.y + 7,
r: 7
},
style: {
stroke: '#69666E',
lineWidth: 1,
fill: fillColor
}
});
this.add(this.arcShape);
} else {
this.rectButton = new Rect({
zlevel: this.zlevel,
z: this.z,
shape: {
x: model.position.x,
y: model.position.y,
width: 14,
height: 14
},
style: {
lineDash: null,
stroke: '#69666E',
lineWidth:1,
fill: fillColor
}
});
this.add(this.rectButton);
}
this.leftLine = new Line({
zlevel: this.zlevel,
z: this.z + 1,
@ -200,9 +223,11 @@ export default class SignalButton extends Group {
recover() {
this.stopAnimation();
this.rectButton && this.rectButton.setStyle({ fill:this.getTypeColor() });
this.arcShape && this.arcShape.setStyle({ fill:this.getTypeColor() });
this.rightLine && this.rightLine.hide();
this.leftLine && this.leftLine.hide();
this.rectButton && this.rectButton.show();
this.arcShape && this.arcShape.show();
this.buttonText && this.buttonText.show();
this.leftBoard && this.leftBoard.hide();
this.rightBoard && this.rightBoard.hide();
@ -242,6 +267,7 @@ export default class SignalButton extends Group {
this.rectButton && this.rectButton.hide();
this.leftLine && this.leftLine.hide();
this.rightLine && this.rightLine.hide();
this.arcShape && this.arcShape.hide();
} else {
if (model.hasSelected) {
this.startAnimate();

View File

@ -0,0 +1,128 @@
import Arc from 'zrender/src/graphic/shape/Arc';
import Group from 'zrender/src/container/Group';
import Text from 'zrender/src/graphic/Text';
/** 三个控制灯*/
export default class EThreeLamp extends Group {
constructor(model) {
super();
this.model = model;
this.zlevel = model.zlevel;
this._subType = model._subType;
this.z = 20;
this.onmouseover = model.mouseover;
this.onmouseout = model.mouseout;
this.create(model);
}
create(model) {
var _subType = 'ControlSignal';
var _val = '0';
if (model.pop) {
_subType = 'ControlButton';
_val = '1';
}
var _nameType = this._subType;
this.control1 = new Arc({
pop: model.pop,
_subType: _subType,
_nameType: _nameType,
_val: _val,
zlevel: this.zlevel,
z: this.z,
shape: {
cx: model.point.x - model.style.Station.StationControl.lamp.radiusR * 3,
cy: model.point.y,
r: model.style.Station.StationControl.lamp.radiusR
},
style: {
lineWidth: model.style.Station.StationControl.lamp.lineWidth || 0,
fill: model.style.Station.StationControl.lamp.grayColor,
stroke: model.style.Station.StationControl.lamp.strokeColor
}
});
this.control2 = new Arc({
pop: model.pop,
_subType: _subType,
_nameType: _nameType,
_val: _val,
zlevel: this.zlevel,
z: this.z,
shape: {
cx: model.point.x,
cy: model.point.y,
r: model.style.Station.StationControl.lamp.radiusR
},
style: {
lineWidth: model.style.Station.StationControl.lamp.lineWidth || 0,
fill: model.style.Station.StationControl.lamp.grayColor,
stroke: model.style.Station.StationControl.lamp.strokeColor
}
});
this.control3 = new Arc({
pop: model.pop,
_subType: _subType,
_nameType: _nameType,
_val: _val,
zlevel: this.zlevel,
z: this.z,
shape: {
cx: model.point.x + model.style.Station.StationControl.lamp.radiusR * 3,
cy: model.point.y,
r: model.style.Station.StationControl.lamp.radiusR
},
style: {
lineWidth: model.style.Station.StationControl.lamp.lineWidth || 0,
fill: model.style.Station.StationControl.lamp.grayColor,
stroke: model.style.Station.StationControl.lamp.strokeColor
}
});
this.text = new Text({
pop: model.pop,
_subType: _subType,
zlevel: this.zlevel,
z: this.z,
position: [0, 0],
style: {
x: model.point.x,
y: model.point.y + model.style.Station.StationControl.lamp.radiusR + model.style.Station.StationControl.text.distance,
fontWeight: model.style.Station.StationControl.text.fontWeight,
fontSize: model.style.Station.StationControl.text.fontSize,
fontFamily: model.style.fontFamily,
text: model.context,
textFill: model.style.Station.StationControl.text.fontColor,
textAlign: model.style.Station.StationControl.text.textAlign,
textVerticalAlign: model.style.Station.StationControl.text.textVerticalAlign
}
});
this.add(this.control1);
this.add(this.control2);
this.add(this.control3);
this.add(this.text);
}
setColor(color) {
// if (color) {
// this.control.setStyle('fill', color);
// }
}
setTextColor(color) {
if (color && !this.model.style.Station.StationControl.lamp.textColorNoChange) {
this.text.setStyle('textFill', color);
}
}
getArcBoundingRect() {
const rect = this.control.getBoundingRect().clone();
const scale = this.control.scale[0];
const offsetX = this.control.position[0];
const offsetY = this.control.position[1];
rect.x = rect.x * scale + offsetX - 2;
rect.y = rect.y * scale + offsetY - 2;
rect.width = rect.width * scale + 4;
rect.height = rect.height * scale + 4;
return rect;
}
}

View File

@ -7,6 +7,7 @@ import EControl from '../element/EControl';
import EMouse from './EMouse';
import EMouseDraw from './EMouseDraw';
import ESingleControl from './ESingleControl';
import EThreeLamp from './EThreeLamp';
import EArrow from './EArrow';
import { arrow } from '../utils/ShapePoints';
import Rect from 'zrender/src/graphic/shape/Rect';
@ -148,7 +149,13 @@ export default class Station extends Group {
createControlMode() {
const model = this.model;
if (!this.style.Station.StationControl.disPlayNone) {
if (this.style.Station.StationControl.special) {
const queryList = window.location.search.substring(1).split('&');
const queryCtc = queryList.find(item => {
return item.includes('ctc');
});
if (queryCtc) {
this.createCtcControlMode()
} else if (this.style.Station.StationControl.special) {
if (model.visible && model.createControlMode) { // model.createControlMode 控制模式
this.createControlModeAU();
this.createControlModeCC();
@ -168,7 +175,123 @@ export default class Station extends Group {
}
this.setState(model);
}
createCtcControlMode() {//大铁
//非常站控
const model = this.model;
// 分散自律
this.selfDisciplineThree = new EThreeLamp({
_subType: 'veryControl',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: model.controlModePoint.x - this.style.Station.StationControl.lamp.distance * 2 + this.style.Station.StationControl.selfDisciplineThree.offset.x,
y: model.controlModePoint.y + this.style.Station.StationControl.selfDisciplineThree.offset.y
},
context: this.style.Station.StationControl.selfDisciplineThree.text,
pop: false
});
this.add(this.selfDisciplineThree);
console.log(this.selfDisciplineThree, '*****************');
// 非常站控
this.veryControl = new ESingleControl({
_subType: 'veryControl',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: model.controlModePoint.x - this.style.Station.StationControl.lamp.distance * 2 / 3 + this.style.Station.StationControl.veryControl.offset.x,
y: model.controlModePoint.y + this.style.Station.StationControl.veryControl.offset.y
},
context: this.style.Station.StationControl.veryControl.text,
pop: false
});
this.add(this.veryControl);
//按图排路
this.graphRoad = new ESingleControl({
_subType: 'graphRoad',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance * 2 / 3 + this.style.Station.StationControl.graphRoad.offset.x,
y: model.controlModePoint.y + this.style.Station.StationControl.graphRoad.offset.y
},
context: this.style.Station.StationControl.graphRoad.text,
pop: false
});
this.add(this.graphRoad);
//计划控制
this.planControl = new ESingleControl({
_subType: 'planControl',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance * 2 + this.style.Station.StationControl.planControl.offset.x,
y: model.controlModePoint.y + this.style.Station.StationControl.planControl.offset.y
},
context: this.style.Station.StationControl.planControl.text,
pop: false
});
this.add(this.planControl);
//中心通信
this.centerCommunication = new ESingleControl({
_subType: 'centerCommunication',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: model.controlModePoint.x - this.style.Station.StationControl.lamp.distance * 2 + this.style.Station.StationControl.centerCommunication.offset.x,
y: model.controlModePoint.y + this.style.Station.StationControl.centerCommunication.offset.y
},
context: this.style.Station.StationControl.centerCommunication.text,
pop: false
});
this.add(this.centerCommunication);
//自律机通信
this.selfDisciplineCommunication = new ESingleControl({
_subType: 'selfDisciplineCommunication',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: model.controlModePoint.x - this.style.Station.StationControl.lamp.distance * 2 / 3 + this.style.Station.StationControl.selfDisciplineCommunication.offset.x,
y: model.controlModePoint.y + this.style.Station.StationControl.selfDisciplineCommunication.offset.y
},
context: this.style.Station.StationControl.selfDisciplineCommunication.text,
pop: false
});
this.add(this.selfDisciplineCommunication);
//允许转回
this.allowedTurnBack = new ESingleControl({
_subType: 'allowedTurnBack',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance * 2 / 3 + this.style.Station.StationControl.allowedTurnBack.offset.x,
y: model.controlModePoint.y + this.style.Station.StationControl.allowedTurnBack.offset.y
},
context: this.style.Station.StationControl.allowedTurnBack.text,
pop: false
});
this.add(this.allowedTurnBack);
// 列控
this.trainControl = new ESingleControl({
_subType: 'trainControl',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance * 2 + this.style.Station.StationControl.trainControl.offset.x,
y: model.controlModePoint.y + this.style.Station.StationControl.trainControl.offset.y
},
context: this.style.Station.StationControl.trainControl.text,
pop: false
});
this.add(this.trainControl);
}
createControlModeAU() { // 西安二
const model = this.model;
this.stationControlAU = new Text({

View File

@ -159,7 +159,7 @@ export default {
{label: '交流输出电压', value: 'acOutputVoltage'},
{label: '直流电压信号', value: 'dcVoltageSignal'}
];
} else if (this.$router.query.lineCode === '01') {
} else if (this.$route.query.lineCode === '01') {
return [
{label: 'ibp操作允许上行', value: 'ibpOperationAllowsUp'},
{label: 'ibp操作允许下行', value: 'ibpOperationAllowsDown'},

View File

@ -36,7 +36,7 @@
<el-button type="danger" size="small" @click="end">{{ $t('display.demon.initialize') }}</el-button>
</template>
</template>
<el-button v-if="project !='bjd'" type="primary" size="small" @click="back">{{ projectDevice?'退出':$t('display.demon.back') }}</el-button>
<el-button v-if="project !='bjd'" type="primary" size="small" @click="back">{{ projectDevice || isCtc?'退出':$t('display.demon.back') }}</el-button>
</el-button-group>
</div>
@ -155,6 +155,9 @@ export default {
isDisable() {
return this.$store.state.training.started;
},
isCtc() {
return !!this.$route.query.ctc
},
project() {
return getSessionStorage('project');
},
@ -399,7 +402,7 @@ export default {
// || this.project === 'bjd'
} else {
if (this.project === 'bjd') {
if (this.project === 'bjd' || this.isCtc) {
window.close();
} else {
this.$store.dispatch('map/setShowCentralizedStationCode', '');

View File

@ -12,8 +12,8 @@
</el-select>
<template v-if="!dataError">
<el-button-group v-if="project !== 'bjd'">
<el-button v-if="$route.query.lineCode === '16'" size="small" @click="showLineBoard">占线板</el-button>
<el-button v-if="$route.query.lineCode === '16'" size="small" @click="goCtc">CTC</el-button>
<el-button v-if="isCtc" size="small" @click="showLineBoard">占线板</el-button>
<el-button v-if="$route.query.lineCode === '16'&&!isCtc" size="small" @click="goCtc">CTC</el-button>
<el-button v-if="isLocalStation && $route.query.lineCode!='08' && $route.query.lineCode!='16'" size="small" @click="goIbp">IBP盘</el-button>
<el-button v-if="isScheduling && isDepot" size="small" type="primary" @click="runPlanEditShow">运行图编辑</el-button>
<!-- 加载剧本 -->