This commit is contained in:
lVAL 2021-01-15 17:23:37 +08:00
commit dd7f4d2aeb
8 changed files with 79 additions and 27 deletions

View File

@ -144,8 +144,13 @@ class SkinCode extends defaultStyle {
display: false // 列车实时位置显示 display: false // 列车实时位置显示
}, },
cross:{ // 岔心 cross:{ // 岔心
speedOffset:{
x:0,
y:50
},
centerSquare:{ centerSquare:{
defaultColor:'#000' defaultColor:'#000',
blockColor:'#00F'
}, },
crossSection:{ crossSection:{
fillColor:'#ff0', fillColor:'#ff0',

View File

@ -141,9 +141,27 @@ export default class ELines extends Group {
} }
}); });
this.crossSpeedText = new Text({
zlevel: this.zlevel,
z: this.z + 8,
style: {
x: result.x + style.Section.cross.speedOffset.x,
y: result.y + style.Section.cross.speedOffset.y,
fontWeight: style.Section.cross.text.fontWeight,
fontSize: style.Section.cross.text.fontSize,
fontFamily: style.Section.cross.text.fontFamily || style.fontFamily,
text: '',
textFill:style.Section.cross.text.fontColor,
textAlign: style.Section.cross.text.textAlign,
textPosition: style.Section.cross.text.textPosition,
textVerticalAlign: style.Section.cross.text.textVerticalAlign
}
});
this.add(this.crossSection); this.add(this.crossSection);
this.add(this.centerSquare); this.add(this.centerSquare);
this.add(this.crossText); this.add(this.crossText);
this.add(this.crossSpeedText);
} }
createLine() { createLine() {
@ -359,6 +377,16 @@ export default class ELines extends Group {
this.crossSection && this.crossSection.setStyle({lineWidth:0, fill:this.model.style.Section.cross.crossSection.fillColor}); this.crossSection && this.crossSection.setStyle({lineWidth:0, fill:this.model.style.Section.cross.crossSection.fillColor});
} }
setCrossBlock() {
this.centerSquare && this.centerSquare.setStyle({fill:this.model.style.Section.cross.centerSquare.blockColor});
}
setCrossUnBlock() {
this.centerSquare && this.centerSquare.setStyle({fill:this.model.style.Section.cross.centerSquare.defaultColor});
}
setCrossSpeedUpperLimit(speedLimit) {
this.crossSpeedText && this.crossSpeedText.setStyle({text:speedLimit});
}
setZleve(lev) { setZleve(lev) {
this.section && this.section.attr('z', lev); this.section && this.section.attr('z', lev);
} }

View File

@ -129,8 +129,6 @@ class EMouse extends Group {
this.add(this.lineBorder); this.add(this.lineBorder);
this.lineBorder.hide(); this.lineBorder.hide();
} }
} else if (this.device.crossSection) {
debugger;
} }
} }

View File

@ -86,12 +86,14 @@ export default class Section extends Group {
/** 设置区段恢复默认状态*/ /** 设置区段恢复默认状态*/
recover() { recover() {
if (this.line) { if (this.line) {
this.line.setCrossUnBlock();
this.line.stopAnimation(true); this.line.stopAnimation(true);
this.sectionBlock && this.sectionBlock.hide(); // 因此特殊区段 this.sectionBlock && this.sectionBlock.hide(); // 因此特殊区段
this.line.setStyle({ this.line.setStyle({
stroke: this.style.Section.line.spareColor, stroke: this.style.Section.line.spareColor,
lineWidth: this.style.Section.line.width lineWidth: this.style.Section.line.width
}); });
this.line.setCrossSpeedUpperLimit('');
} }
this.name && this.name.recover(); this.name && this.name.recover();
this.speedLimit && this.speedLimit.hide(); this.speedLimit && this.speedLimit.hide();
@ -180,6 +182,9 @@ export default class Section extends Group {
lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth lineWidth: this.style.Section.line.width + this.style.Section.line.beyondWidth
}); });
} }
if (this.style.Section.cross && this.model.type == '04') {
this.line.setCrossBlock();
}
if (this.style.Section.block && this.style.Section.block.blockGlint && this.line) { if (this.style.Section.block && this.style.Section.block.blockGlint && this.line) {
this.line.animateStyle(true, [ this.line.animateStyle(true, [
{ time: 1000, styles: { stroke: this.style.backgroundColor } }, { time: 1000, styles: { stroke: this.style.backgroundColor } },
@ -246,13 +251,15 @@ export default class Section extends Group {
setSpeedUpperLimit(speedUpLimit) { setSpeedUpperLimit(speedUpLimit) {
if (this.style.Section.line.speedLimitColor) { // 宁波三号线 独有 if (this.style.Section.line.speedLimitColor) { // 宁波三号线 独有
this.line.setStyle({stroke: this.style.Section.line.speedLimitColor}); this.line.setStyle({stroke: this.style.Section.line.speedLimitColor});
} else if (this.style.Section.speedLimitName.nameAlone && this.model.type == '03') { // 南京2道岔区段只显示一个名称 } else if (this.style.Section.speedLimitName.nameAlone && this.model.type == '03') { // 南京2道岔区段只显示一个名称
const switchModel = Vue.prototype.$jlmap.mapDevice[this.model.relSwitchCode]; const switchModel = Vue.prototype.$jlmap.mapDevice[this.model.relSwitchCode];
if (switchModel && switchModel.sectionACode == this._code) { if (switchModel && switchModel.sectionACode == this._code) {
this.speedLimit && this.speedLimit.show(); this.speedLimit && this.speedLimit.show();
this.speedLimitName && this.speedLimitName.show(speedUpLimit); this.speedLimitName && this.speedLimitName.show(speedUpLimit);
} }
} else { } else if (this.style.Section.cross && this.model.type == '04') {
this.line.setCrossSpeedUpperLimit(speedUpLimit);
} else {
this.speedLimit && this.speedLimit.show(); this.speedLimit && this.speedLimit.show();
this.speedLimitName && this.speedLimitName.show(speedUpLimit); this.speedLimitName && this.speedLimitName.show(speedUpLimit);
} }

View File

@ -29,7 +29,7 @@ class ESigPost extends Group {
_subType: 'SignalLamp', _subType: 'SignalLamp',
_val: '3', _val: '3',
zlevel: model.zlevel, zlevel: model.zlevel,
z: model.z, z: model.z + 1,
shape: { shape: {
points: verPoints points: verPoints
}, },
@ -44,7 +44,7 @@ class ESigPost extends Group {
_subType: 'SignalLamp', _subType: 'SignalLamp',
_val: '3', _val: '3',
zlevel: model.zlevel, zlevel: model.zlevel,
z: model.z, z: model.z + 1,
shape: { shape: {
points: verPoints points: verPoints
}, },

View File

@ -431,6 +431,7 @@ class Signal extends Group {
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.blueColor); this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.blueColor);
} }
} }
this.sigPost.setHorColor(this.style.Signal.post.openHorColor);
} }
} }
// 列车进路 // 列车进路

View File

@ -630,6 +630,10 @@ export default {
}, 0); }, 0);
lengthFact += model.lengthFact; lengthFact += model.lengthFact;
copySection.lengthFact = Number(lengthFact.toFixed(3)); // copySection.lengthFact = Number(lengthFact.toFixed(3)); //
const logicSectionCodeList = copySection.logicSectionCodeList;
const last = deepAssign({}, this.$store.getters['map/getDeviceByCode'](logicSectionCodeList[logicSectionCodeList.length - 1]));
last.logicSectionEndOffset = copySection.lengthFact;
models.push(last);
if (copySection.lengthFact > 5) { if (copySection.lengthFact > 5) {
copySection.leftStopPointOffset = copySection.leftStopPointOffset || 5; copySection.leftStopPointOffset = copySection.leftStopPointOffset || 5;
copySection.rightStopPointOffset = copySection.rightStopPointOffset || copySection.lengthFact - 5; copySection.rightStopPointOffset = copySection.rightStopPointOffset || copySection.lengthFact - 5;
@ -648,20 +652,22 @@ export default {
} }
}); });
pointModel.forEach(item => { pointModel.forEach(item => {
const slope2 = (item.points[item.points.length - 1].y - item.points[0].y) / (item.points[item.points.length - 1].x - item.points[0].x); if (!item.parentCode || item.parentCode == model.parentCode) {
if (this.checkPointsCoincide(this.oldPoint[0], item.points[item.points.length - 1])) { const slope2 = (item.points[item.points.length - 1].y - item.points[0].y) / (item.points[item.points.length - 1].x - item.points[0].x);
if ((slope1 >= 0 && slope2 >= 0) || (slope1 <= 0 && slope2 <= 0)) { if (this.checkPointsCoincide(this.oldPoint[0], item.points[item.points.length - 1])) {
item.points[item.points.length - 1].x = model.points[0].x; if ((slope1 >= 0 && slope2 >= 0) || (slope1 <= 0 && slope2 <= 0)) {
item.points[item.points.length - 1].y = model.points[0].y; item.points[item.points.length - 1].x = model.points[0].x;
item.points[item.points.length - 1].y = model.points[0].y;
}
} }
} if (this.checkPointsCoincide(this.oldPoint[this.oldPoint.length - 1], item.points[0])) {
if (this.checkPointsCoincide(this.oldPoint[this.oldPoint.length - 1], item.points[0])) { if ((slope1 >= 0 && slope2 >= 0) || (slope1 <= 0 && slope2 <= 0)) {
if ((slope1 >= 0 && slope2 >= 0) || (slope1 <= 0 && slope2 <= 0)) { item.points[0].x = model.points[model.points.length - 1].x;
item.points[0].x = model.points[model.points.length - 1].x; item.points[0].y = model.points[model.points.length - 1].y;
item.points[0].y = model.points[model.points.length - 1].y; }
} }
models.push(item);
} }
models.push(item);
}); });
if (!model.parentCode) { if (!model.parentCode) {
@ -707,7 +713,13 @@ export default {
model.lengthFact = length.toFixed(3); model.lengthFact = length.toFixed(3);
} }
model.logicSectionStartOffset = startOffset; model.logicSectionStartOffset = startOffset;
model.logicSectionEndOffset = (model.lengthFact * 1000 + startOffset * 1000) / 1000; const lastData = Object.keys(sectionMap);
const temp = lastData[lastData.length - 1];
if (temp == startPoint) {
model.logicSectionEndOffset = section.lengthFact;
} else {
model.logicSectionEndOffset = (model.lengthFact * 1000 + startOffset * 1000) / 1000;
}
!sectionMap[startPoint].deepFlag && models.push(model); !sectionMap[startPoint].deepFlag && models.push(model);
startOffset = (startOffset * 1000 + model.lengthFact * 1000) / 1000; startOffset = (startOffset * 1000 + model.lengthFact * 1000) / 1000;
startPoint = model.points[model.points.length - 1].x + 's' + model.points[model.points.length - 1].y; startPoint = model.points[model.points.length - 1].x + 's' + model.points[model.points.length - 1].y;

View File

@ -77,9 +77,9 @@ export default {
height: 800, height: 800,
roadData: [], roadData: [],
focus: false, focus: false,
booleanList: ['upRight', 'lockFirst', 'switchSingleHandle', 'switchNRTurnChain', 'switchSingleLockChain', 'switchLossChain', 'signalForceCancelRoute', 'initSingleLockSwitch', 'ctcOverlapOnlyTurnBackStationLock', 'guideNeedRouteSettingFirst', 'signalOpenAfterParking', 'standHoldCloseLogicLight', 'atsAutoHandleManualFrontTurnBack', 'doNotSetRouteWhenSectionOccupied', 'routeSettingNoFail'], booleanList: ['upRight', 'lockFirst', 'switchSingleHandle', 'switchNRTurnChain', 'switchSingleLockChain', 'switchLossChain', 'signalForceCancelRoute', 'initSingleLockSwitch', 'ctcOverlapOnlyTurnBackStationLock', 'guideNeedRouteSettingFirst', 'signalOpenAfterParking', 'standHoldCloseLogicLight', 'atsAutoHandleManualFrontTurnBack', 'doNotSetRouteWhenSectionOccupied', 'routeSettingNoFail', 'signalBlockRouteSettable'],
selectList: ['runMode'], selectList: ['runMode'],
generalConfig: ['lockFirst', 'switchSingleHandle', 'upRight', 'switchNRTurnChain', 'switchSingleLockChain', 'switchLossChain', 'signalForceCancelRoute', 'runMode', 'initSingleLockSwitch', 'ctcOverlapOnlyTurnBackStationLock', 'noParkingSM', 'parkingSM', 'rmAtpSpeed', 'urmAtpSpeed', 'guideNeedRouteSettingFirst', 'signalOpenAfterParking', 'standHoldCloseLogicLight', 'atsAutoHandleManualFrontTurnBack', 'doNotSetRouteWhenSectionOccupied', 'routeSettingNoFail'], generalConfig: ['lockFirst', 'switchSingleHandle', 'upRight', 'switchNRTurnChain', 'switchSingleLockChain', 'switchLossChain', 'signalForceCancelRoute', 'runMode', 'initSingleLockSwitch', 'ctcOverlapOnlyTurnBackStationLock', 'noParkingSM', 'parkingSM', 'rmAtpSpeed', 'urmAtpSpeed', 'guideNeedRouteSettingFirst', 'signalOpenAfterParking', 'standHoldCloseLogicLight', 'atsAutoHandleManualFrontTurnBack', 'doNotSetRouteWhenSectionOccupied', 'routeSettingNoFail', 'signalBlockRouteSettable'],
rangeList: ['noParkingSM', 'parkingSM'], rangeList: ['noParkingSM', 'parkingSM'],
speedList: ['rmAtpSpeed', 'urmAtpSpeed'], speedList: ['rmAtpSpeed', 'urmAtpSpeed'],
numberList: [], numberList: [],
@ -106,7 +106,8 @@ export default {
standHoldCloseLogicLight: '站台扣车是否关闭逻辑点灯的信号机', standHoldCloseLogicLight: '站台扣车是否关闭逻辑点灯的信号机',
atsAutoHandleManualFrontTurnBack:'ATS是否自动处理人工设置的站前折返自动更新车次', atsAutoHandleManualFrontTurnBack:'ATS是否自动处理人工设置的站前折返自动更新车次',
doNotSetRouteWhenSectionOccupied: '当进路的区段占用时不排列进路', doNotSetRouteWhenSectionOccupied: '当进路的区段占用时不排列进路',
routeSettingNoFail:'进路办理不失败' routeSettingNoFail:'进路办理不失败',
signalBlockRouteSettable:'信号封锁下进路是否可以办理'
} }
}; };
}, },