2019-11-29 12:51:58 +08:00
|
|
|
/*
|
|
|
|
* 车站
|
|
|
|
*/
|
|
|
|
import Group from 'zrender/src/container/Group';
|
2019-12-04 11:32:30 +08:00
|
|
|
import ETextName from '../element/ETextName';
|
2019-12-04 18:39:28 +08:00
|
|
|
import EControl from '../element/EControl';
|
2019-12-05 10:25:07 +08:00
|
|
|
import EMouse from './EMouse';
|
2019-12-05 10:19:41 +08:00
|
|
|
import ESingleControl from './ESingleControl';
|
|
|
|
import EArrow from './EArrow';
|
|
|
|
import { arrow } from '../utils/ShapePoints';
|
2020-03-05 14:33:08 +08:00
|
|
|
import Rect from 'zrender/src/graphic/shape/Rect';
|
2020-04-13 17:12:33 +08:00
|
|
|
import Text from 'zrender/src/graphic/Text';
|
2020-06-05 10:14:12 +08:00
|
|
|
import store from '@/store/index_APP_TARGET';
|
|
|
|
import Vue from 'vue';
|
2019-11-29 12:51:58 +08:00
|
|
|
|
|
|
|
export default class Station extends Group {
|
2019-12-04 11:32:30 +08:00
|
|
|
constructor(model, style) {
|
|
|
|
super();
|
|
|
|
this._code = model.code;
|
|
|
|
this._type = model._type;
|
|
|
|
this.zlevel = model.zlevel;
|
|
|
|
this.z = 40;
|
|
|
|
this.model = model;
|
|
|
|
this.style = style;
|
2020-03-13 13:01:58 +08:00
|
|
|
this.isShowShape = true;
|
2019-12-04 11:32:30 +08:00
|
|
|
this.create();
|
2019-12-05 10:25:07 +08:00
|
|
|
this.createTurnBack(); // 创建按图折返
|
2019-12-05 10:19:41 +08:00
|
|
|
this.createControlMode();
|
2019-12-04 11:32:30 +08:00
|
|
|
this.setState(model);
|
2019-12-05 10:25:07 +08:00
|
|
|
this.checkIsDrawMap();
|
2019-12-04 11:32:30 +08:00
|
|
|
}
|
2019-11-29 12:51:58 +08:00
|
|
|
|
2019-12-04 11:32:30 +08:00
|
|
|
create() {
|
|
|
|
const model = this.model;
|
|
|
|
const style = this.style;
|
2019-11-29 12:51:58 +08:00
|
|
|
|
2020-08-07 11:09:49 +08:00
|
|
|
// 公里标名称是否显示
|
|
|
|
this.stationText = new ETextName({
|
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
|
|
|
x: model.position.x,
|
|
|
|
y: model.position.y,
|
|
|
|
fontWeight: style.Station.text.fontWeight,
|
|
|
|
fontSize: isNaN(Number(model.nameFont)) ? 20 : Number(model.nameFont),
|
|
|
|
fontFamily: style.fontFamily,
|
|
|
|
text: model.number ? model.number + model.name : model.name,
|
|
|
|
textAlign: 'middle',
|
|
|
|
textVerticalAlign: 'top',
|
|
|
|
textFill: model.nameFontColor
|
|
|
|
});
|
|
|
|
this.add(this.stationText);
|
2020-08-10 13:01:59 +08:00
|
|
|
if (style.Station.text.borderShow) { // 哈尔滨线路单独显示
|
|
|
|
this.stationText.attr({
|
|
|
|
style: {
|
2020-08-20 16:43:35 +08:00
|
|
|
textPadding: style.Station.text.textPadding || [2, 6],
|
|
|
|
textBorderColor: style.Station.text.borderColor || model.nameFontColor,
|
|
|
|
textBorderWidth: style.Station.text.textBorderWidth || 1
|
2020-08-10 13:01:59 +08:00
|
|
|
}
|
|
|
|
});
|
2020-08-07 11:09:49 +08:00
|
|
|
}
|
|
|
|
const path = window.location.href;
|
2020-08-10 13:01:59 +08:00
|
|
|
if (style.Station.kmPostShow || path.includes('/map/draw')) { // 公里标是否显示
|
2020-08-07 11:09:49 +08:00
|
|
|
let direction = 1;
|
|
|
|
if (this.style.Station.kilometerPosition == 'up') {
|
|
|
|
direction = -1;
|
|
|
|
}
|
|
|
|
const offset = { x: 0, y: 0 };
|
|
|
|
if (model.kilometerPosition) {
|
|
|
|
offset.x = model.kilometerPosition.x;
|
|
|
|
offset.y = model.kilometerPosition.y;
|
|
|
|
}
|
|
|
|
this.mileageText = new ETextName({
|
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
|
|
|
position: [0, 0],
|
|
|
|
x: model.position.x + offset.x,
|
|
|
|
y: model.position.y + ((parseInt(model.nameFont) + 2) * direction) + offset.y,
|
|
|
|
fontWeight: model.fontWeight,
|
|
|
|
fontSize: model.kmPostFont || 18,
|
|
|
|
fontFamily: style.fontFamily,
|
|
|
|
text: model.kmPost,
|
|
|
|
textAlign: 'middle',
|
|
|
|
textVerticalAlign: 'top',
|
|
|
|
textFill: model.kmPostFontColor
|
|
|
|
});
|
|
|
|
this.add(this.mileageText);
|
|
|
|
model.kmPostShow ? this.mileageText.show() : this.mileageText.hide();
|
|
|
|
}
|
|
|
|
if (model.subheadDisplay) { // 副标题
|
|
|
|
this.subheadText = new ETextName({
|
2019-12-04 11:32:30 +08:00
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
2020-08-07 11:09:49 +08:00
|
|
|
x: model.subheadPosition.x,
|
|
|
|
y: model.subheadPosition.y,
|
|
|
|
fontWeight: model.fontWeight,
|
|
|
|
fontSize: model.subheadFont || 18,
|
2019-12-04 11:32:30 +08:00
|
|
|
fontFamily: style.fontFamily,
|
2020-08-07 11:09:49 +08:00
|
|
|
text: model.subhead,
|
2019-12-04 11:32:30 +08:00
|
|
|
textAlign: 'middle',
|
|
|
|
textVerticalAlign: 'top',
|
2020-08-07 11:09:49 +08:00
|
|
|
textFill: model.subheadFontColor
|
2019-12-04 11:32:30 +08:00
|
|
|
});
|
2020-08-07 11:09:49 +08:00
|
|
|
this.add(this.subheadText);
|
2020-02-03 17:26:17 +08:00
|
|
|
if (style.Station.text.borderShow) {
|
2020-08-10 13:01:59 +08:00
|
|
|
this.subheadText.attr({
|
|
|
|
style: {
|
|
|
|
textPadding: [2, 6],
|
|
|
|
textBorderColor: model.nameFontColor,
|
|
|
|
textBorderWidth: 1
|
|
|
|
}
|
|
|
|
});
|
2019-12-13 16:13:10 +08:00
|
|
|
}
|
2019-12-04 11:32:30 +08:00
|
|
|
}
|
2020-08-07 11:09:49 +08:00
|
|
|
if (!model.visible) { // 隐藏车站
|
|
|
|
this.subheadText && this.subheadText.setStyle('textFill', 'rgba(0,0,0,0)');
|
|
|
|
this.mileageText && this.mileageText.setStyle('textFill', 'rgba(0,0,0,0)');
|
|
|
|
this.stationText && this.stationText.setStyle('textFill', 'rgba(0,0,0,0)');
|
|
|
|
}
|
2019-12-04 11:32:30 +08:00
|
|
|
}
|
2019-12-04 18:39:28 +08:00
|
|
|
createTurnBack() { // 创建按图折返
|
2019-12-04 14:59:04 +08:00
|
|
|
const model = this.model;
|
|
|
|
const style = this.style;
|
2019-12-18 13:05:29 +08:00
|
|
|
if (model.visible && model.createTurnBack) {
|
2019-12-05 10:25:07 +08:00
|
|
|
this.turnBacks = [];
|
2020-04-22 18:24:28 +08:00
|
|
|
if (style.Station.turnBack.topText) {
|
|
|
|
this.turnBackTopText = new Text({
|
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
|
|
|
position: [0, 0],
|
|
|
|
style: {
|
|
|
|
x: model.turnBackPoint.x,
|
|
|
|
y: model.turnBackPoint.y - style.Station.lamp.radiusR - style.Station.turnBack.toptextDistance,
|
|
|
|
fontWeight: style.Station.text.fontWeight,
|
|
|
|
fontSize: style.Station.text.fontSize,
|
|
|
|
fontFamily: style.fontFamily,
|
|
|
|
text: model.name + '站后折返',
|
|
|
|
textFill: '#fff',
|
|
|
|
textAlign: 'middle',
|
|
|
|
textVerticalAlign: 'top'
|
|
|
|
}
|
|
|
|
});
|
|
|
|
this.add(this.turnBackTopText);
|
|
|
|
}
|
2019-12-06 10:31:19 +08:00
|
|
|
for (let index = 0; index < style.Station.turnBack.lamp; index++) {
|
2019-12-05 10:25:07 +08:00
|
|
|
const turnBack = new EControl({
|
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
|
|
|
arc: {
|
|
|
|
shape: {
|
2019-12-06 10:31:19 +08:00
|
|
|
cx: model.turnBackPoint.x + style.Station.turnBack.lampSpace * index,
|
|
|
|
cy: model.turnBackPoint.y,
|
2019-12-05 10:25:07 +08:00
|
|
|
r: style.Station.lamp.radiusR
|
|
|
|
},
|
|
|
|
lineWidth: 0,
|
2020-04-22 18:24:28 +08:00
|
|
|
lineDash: style.Station.turnBack.lineDash,
|
2019-12-05 10:25:07 +08:00
|
|
|
fill: style.Station.lamp.controlColor
|
2019-12-04 18:39:28 +08:00
|
|
|
},
|
2019-12-05 10:25:07 +08:00
|
|
|
text: {
|
|
|
|
position: [0, 0],
|
2019-12-06 10:31:19 +08:00
|
|
|
x: model.turnBackPoint.x + style.Station.turnBack.lampSpace * index,
|
2019-12-19 10:08:12 +08:00
|
|
|
y: model.turnBackPoint.y + style.Station.lamp.radiusR + style.Station.StationControl.text.distance,
|
2019-12-05 10:25:07 +08:00
|
|
|
fontWeight: style.Station.text.fontWeight,
|
|
|
|
fontSize: style.Station.text.fontSize,
|
|
|
|
fontFamily: style.fontFamily,
|
2020-04-22 18:24:28 +08:00
|
|
|
text: style.Station.turnBack.textName || '按图折返',
|
2019-12-05 10:25:07 +08:00
|
|
|
textFill: '#fff',
|
|
|
|
textAlign: 'middle',
|
|
|
|
textVerticalAlign: 'top'
|
|
|
|
},
|
|
|
|
style: this.style
|
|
|
|
});
|
|
|
|
this.turnBacks.push(turnBack);
|
2019-12-06 10:31:19 +08:00
|
|
|
}
|
2020-04-22 18:24:28 +08:00
|
|
|
this.turnBacks.forEach(lamp => {
|
|
|
|
lamp.setArcBorder(style.Station.turnBack.showLampBorder);
|
|
|
|
this.add(lamp);
|
|
|
|
});
|
2019-12-04 14:59:04 +08:00
|
|
|
}
|
|
|
|
}
|
2019-12-05 10:19:41 +08:00
|
|
|
// 创建控制模式
|
|
|
|
createControlMode() {
|
2020-08-07 11:09:49 +08:00
|
|
|
const model = this.model;
|
|
|
|
if (!this.style.Station.StationControl.disPlayNone) {
|
2020-08-10 13:01:59 +08:00
|
|
|
if (model.visible && model.createControlMode) { // model.createControlMode 控制模式
|
|
|
|
this.createEmergencyControl(); // 紧急站控
|
|
|
|
this.createCenterControl(); // 中控按钮
|
|
|
|
this.createSubstationControl(); // 站控按钮
|
|
|
|
this.createInterconnectedControl(); // 联锁控
|
2020-08-07 11:09:49 +08:00
|
|
|
}
|
|
|
|
}
|
2020-06-12 13:19:26 +08:00
|
|
|
this.setState(model);
|
|
|
|
}
|
|
|
|
|
|
|
|
createEmergencyControl() { // 紧急站控
|
|
|
|
const model = this.model;
|
|
|
|
if (this.style.Station.StationControl.emergencyControl.show) {
|
|
|
|
this.emergencyControl = new ESingleControl({
|
|
|
|
_subType: 'emergency',
|
|
|
|
style: this.style,
|
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
|
|
|
point: {
|
|
|
|
x: model.controlModePoint.x - this.style.Station.StationControl.lamp.distance * 3 / 2 + this.style.Station.StationControl.emergencyControl.offset.x,
|
|
|
|
y: model.controlModePoint.y + this.style.Station.StationControl.emergencyControl.offset.y
|
|
|
|
},
|
|
|
|
context: this.style.Station.StationControl.emergencyControl.text,
|
|
|
|
pop: false
|
|
|
|
});
|
|
|
|
this.add(this.emergencyControl);
|
|
|
|
if (this.style.Station.StationControl.emergencyControl.arrowShow) {
|
|
|
|
const x = model.controlModePoint.x - this.style.Station.StationControl.lamp.distance * 2 + this.style.Station.StationControl.emergencyControl.offset.x;
|
|
|
|
const y = model.controlModePoint.y + this.style.Station.StationControl.emergencyControl.offset.y;
|
|
|
|
const point = arrow(x, y + this.style.Station.StationControl.lamp.radiusR / 2, this.style.Station.StationControl.lamp.distance / 6, this.style.Station.StationControl.lamp.radiusR * 0.8);
|
|
|
|
this.emergencyArrowsControl = new EArrow({
|
2019-12-05 10:19:41 +08:00
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
2020-06-12 13:19:26 +08:00
|
|
|
style: this.style,
|
|
|
|
count: this.count,
|
|
|
|
drict: 1,
|
|
|
|
point: point,
|
|
|
|
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.offset.x,
|
|
|
|
y: model.controlModePoint.y + this.style.Station.StationControl.lamp.radiusR / 2 + this.style.Station.StationControl.lamp.offset.y,
|
|
|
|
fill: this.style.Station.StationControl.emergencyControl.grayColor,
|
|
|
|
lineWidth: 1,
|
|
|
|
stroke: this.style.sidelineColor
|
2019-12-05 10:19:41 +08:00
|
|
|
});
|
2020-06-12 13:19:26 +08:00
|
|
|
this.add(this.emergencyArrowsControl);
|
2019-12-05 10:19:41 +08:00
|
|
|
}
|
2020-06-12 13:19:26 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
createCenterControl() { // 中控按钮
|
|
|
|
const model = this.model;
|
|
|
|
if (this.style.Station.StationControl.centerControl.show) {
|
|
|
|
this.centerControl = new ESingleControl({
|
|
|
|
_subType: 'center',
|
|
|
|
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.centerControl.offset.x,
|
|
|
|
y: model.controlModePoint.y + this.style.Station.StationControl.centerControl.offset.y
|
|
|
|
},
|
|
|
|
context: this.style.Station.StationControl.centerControl.text,
|
|
|
|
pop: false
|
|
|
|
});
|
|
|
|
this.add(this.centerControl);
|
|
|
|
if (this.style.Station.StationControl.centerControl.arrowShow) {
|
|
|
|
const x = model.controlModePoint.x - this.style.Station.StationControl.lamp.distance * 3 / 2 + this.style.Station.StationControl.emergencyControl.offset.x;
|
|
|
|
const y = model.controlModePoint.y + this.style.Station.StationControl.emergencyControl.offset.y;
|
|
|
|
const point = arrow(x, y + this.style.Station.StationControl.lamp.radiusR / 2, this.style.Station.StationControl.lamp.distance / 6, this.style.Station.StationControl.lamp.radiusR * 0.8);
|
|
|
|
this.centerArrowsControl = new EArrow({
|
2019-12-05 10:19:41 +08:00
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
|
|
|
style: this.style,
|
|
|
|
count: this.count,
|
|
|
|
drict: 1,
|
|
|
|
point: point,
|
2019-12-05 10:52:45 +08:00
|
|
|
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.offset.x,
|
|
|
|
y: model.controlModePoint.y + this.style.Station.StationControl.lamp.radiusR / 2 + this.style.Station.StationControl.lamp.offset.y,
|
2020-06-12 13:19:26 +08:00
|
|
|
fill: this.style.Station.StationControl.centerControl.grayColor,
|
2019-12-05 10:19:41 +08:00
|
|
|
lineWidth: 1,
|
|
|
|
stroke: this.style.sidelineColor
|
|
|
|
});
|
2020-06-12 13:19:26 +08:00
|
|
|
this.add(this.centerArrowsControl);
|
2019-12-05 10:19:41 +08:00
|
|
|
}
|
2020-06-12 13:19:26 +08:00
|
|
|
}
|
|
|
|
// 中控按钮
|
|
|
|
if (this.style.Station.StationControl.centerControl.buttonShow) { // 宁波一 显示
|
|
|
|
this.centerControlButton = new ESingleControl({
|
|
|
|
_subType: 'button',
|
|
|
|
style: this.style,
|
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
|
|
|
point: {
|
|
|
|
x: model.controlModePoint.x - this.style.Station.StationControl.lamp.distance * 3 / -2 + this.style.Station.StationControl.lamp.offset.x,
|
|
|
|
y: model.controlModePoint.y + this.style.Station.StationControl.lamp.offset.y
|
|
|
|
},
|
|
|
|
context: this.style.Station.StationControl.centerControl.buttonText,
|
|
|
|
pop: false
|
|
|
|
});
|
|
|
|
this.add(this.centerControlButton);
|
|
|
|
const arcRect = this.centerControlButton.getArcBoundingRect();
|
|
|
|
this.arcBorder = new Rect({
|
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
|
|
|
silent: true,
|
|
|
|
shape: arcRect,
|
|
|
|
style: {
|
|
|
|
lineDash: null,
|
|
|
|
stroke: this.style.Station.StationControl.lamp.stroke,
|
|
|
|
fill: this.style.Station.StationControl.lamp.fill
|
|
|
|
}
|
|
|
|
});
|
|
|
|
this.add(this.arcBorder);
|
2020-08-07 11:09:49 +08:00
|
|
|
}
|
2020-06-12 13:19:26 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
createSubstationControl() { // 站控按钮
|
|
|
|
const model = this.model;
|
|
|
|
if (this.style.Station.StationControl.substationControl.show) {
|
|
|
|
this.substationControl = new ESingleControl({
|
|
|
|
_subType: 'substation',
|
|
|
|
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.substationControl.offset.x,
|
|
|
|
y: model.controlModePoint.y + this.style.Station.StationControl.substationControl.offset.y
|
|
|
|
},
|
|
|
|
context: this.style.Station.StationControl.substationControl.text,
|
|
|
|
pop: false
|
|
|
|
});
|
|
|
|
this.add(this.substationControl);
|
|
|
|
if (this.style.Station.StationControl.substationControl.arrowShow) {
|
|
|
|
const x = this.model.controlModePoint.x + this.style.Station.StationControl.substationControl.offset.x;
|
|
|
|
const y = this.model.controlModePoint.y + this.style.Station.StationControl.substationControl.offset.y;
|
|
|
|
const point = arrow(x, y + this.style.Station.StationControl.lamp.radiusR / 2, this.style.Station.StationControl.lamp.distance / 6, this.style.Station.StationControl.lamp.radiusR * 0.8);
|
|
|
|
this.substationArrowsControl = new EArrow({
|
2020-03-05 14:33:08 +08:00
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
2020-06-12 13:19:26 +08:00
|
|
|
style: this.style,
|
|
|
|
count: this.count,
|
|
|
|
drict: 1,
|
|
|
|
point: point,
|
|
|
|
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.offset.x,
|
|
|
|
y: model.controlModePoint.y + this.style.Station.StationControl.lamp.radiusR / 2 + this.style.Station.StationControl.lamp.offset.y,
|
|
|
|
fill: this.style.Station.StationControl.substationControl.grayColor,
|
|
|
|
lineWidth: 1,
|
|
|
|
stroke: this.style.sidelineColor
|
2020-03-05 14:33:08 +08:00
|
|
|
});
|
2020-06-12 13:19:26 +08:00
|
|
|
this.add(this.substationArrowsControl);
|
2020-01-08 14:59:27 +08:00
|
|
|
}
|
2020-08-07 11:09:49 +08:00
|
|
|
}
|
2020-06-12 13:19:26 +08:00
|
|
|
}
|
2019-12-05 10:19:41 +08:00
|
|
|
|
2020-06-12 13:19:26 +08:00
|
|
|
createInterconnectedControl() { // 联锁控
|
|
|
|
const model = this.model;
|
|
|
|
if (this.style.Station.StationControl.interconnectedControl.show) { // 成都三会显示
|
|
|
|
this.interconnectedControl = new ESingleControl({
|
|
|
|
_subType: 'interconnected',
|
|
|
|
style: this.style,
|
|
|
|
zlevel: this.zlevel,
|
|
|
|
z: this.z,
|
|
|
|
point: {
|
|
|
|
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance * 3 / 2 + this.style.Station.StationControl.interconnectedControl.offset.x,
|
|
|
|
y: model.controlModePoint.y + this.style.Station.StationControl.interconnectedControl.offset.y
|
|
|
|
},
|
|
|
|
context: this.style.Station.StationControl.interconnectedControl.text || '联锁控',
|
|
|
|
pop: false
|
|
|
|
});
|
|
|
|
this.add(this.interconnectedControl);
|
2019-12-05 10:19:41 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-03-23 13:48:35 +08:00
|
|
|
handleCenter() { // 中控
|
|
|
|
this.emergencyControl && this.emergencyControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
|
|
|
this.substationControl && this.substationControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
|
|
|
this.centerControl && this.centerControl.setColor(this.style.Station.StationControl.lamp.greenColor);
|
2020-08-07 11:09:49 +08:00
|
|
|
this.centerControl && this.centerControl.setTextColor(this.style.Station.StationControl.lamp.greenColor); // 文字颜色
|
|
|
|
if (this.style.Station.StationControl.disPlayNone) {
|
|
|
|
this.stationText && this.stationText.setStyle('textFill', '#1fdc1f');
|
|
|
|
if (this.model.subheadDisplay) { // 副标题
|
|
|
|
this.subheadText && this.subheadText.setStyle('textFill', '#1fdc1f');
|
|
|
|
}
|
|
|
|
}
|
2020-03-23 13:48:35 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
handleLocal() { // 站控
|
|
|
|
this.emergencyControl && this.emergencyControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
|
|
|
this.substationControl && this.substationControl.setColor(this.style.Station.StationControl.lamp.yellowColor);
|
2020-05-28 14:39:06 +08:00
|
|
|
this.substationControl && this.substationControl.setTextColor(this.style.Station.StationControl.lamp.yellowColor); // 文字颜色
|
2020-03-23 13:48:35 +08:00
|
|
|
this.centerControl && this.centerControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
2020-08-07 11:09:49 +08:00
|
|
|
this.substationArrowsControl && this.substationArrowsControl.setColor(this.style.Station.StationControl.lamp.greenColor);
|
|
|
|
if (this.style.Station.StationControl.disPlayNone) {
|
|
|
|
this.stationText && this.stationText.setStyle('textFill', '#fff');
|
|
|
|
if (this.model.subheadDisplay) { // 副标题
|
|
|
|
this.subheadText && this.subheadText.setStyle('textFill', '#fff');
|
|
|
|
}
|
|
|
|
}
|
2020-03-23 13:48:35 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
handleEmergency() { // 紧急站控
|
|
|
|
this.emergencyControl && this.emergencyControl.setColor(this.style.Station.StationControl.lamp.redColor);
|
2020-06-12 13:19:26 +08:00
|
|
|
this.emergencyControl && this.emergencyControl.setTextColor(this.style.Station.StationControl.lamp.redColor); // 紧急 颜色
|
2020-03-23 13:48:35 +08:00
|
|
|
this.substationControl && this.substationControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
|
|
|
this.centerControl && this.centerControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
2020-08-07 11:09:49 +08:00
|
|
|
this.emergencyArrowsControl && this.emergencyArrowsControl.setColor(this.style.Station.StationControl.lamp.greenColor);
|
|
|
|
if (this.style.Station.StationControl.disPlayNone) {
|
|
|
|
this.stationText && this.stationText.setStyle('textFill', '#fff');
|
|
|
|
if (this.model.subheadDisplay) { // 副标题
|
|
|
|
this.subheadText && this.subheadText.setStyle('textFill', '#fff');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-07-28 16:59:32 +08:00
|
|
|
|
2020-08-07 11:09:49 +08:00
|
|
|
handleNone() { // 空
|
2020-07-28 16:59:32 +08:00
|
|
|
if (this.style.Station.StationControl.disPlayNone) { // 没有控制时显示 黄色
|
2020-08-07 11:09:49 +08:00
|
|
|
this.stationText && this.stationText.setStyle('textFill', '#FFFF00');
|
|
|
|
if (this.model.subheadDisplay) { // 副标题
|
|
|
|
this.subheadText && this.subheadText.setStyle('textFill', '#FFFF00');
|
|
|
|
}
|
|
|
|
}
|
2020-03-23 13:48:35 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
recover() {
|
|
|
|
this.emergencyControl && this.emergencyControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
2020-06-10 16:56:52 +08:00
|
|
|
this.emergencyControl && this.emergencyControl.setTextColor(this.style.Station.StationControl.text.fontColor);
|
2020-03-23 13:48:35 +08:00
|
|
|
this.substationControl && this.substationControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
2020-06-10 16:56:52 +08:00
|
|
|
this.substationControl && this.substationControl.setTextColor(this.style.Station.StationControl.text.fontColor);
|
2020-03-23 13:48:35 +08:00
|
|
|
this.centerControl && this.centerControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
2020-06-10 16:56:52 +08:00
|
|
|
this.centerControl && this.centerControl.setTextColor(this.style.Station.StationControl.text.fontColor);
|
2020-06-12 13:19:26 +08:00
|
|
|
|
|
|
|
this.substationArrowsControl && this.substationArrowsControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
|
|
|
this.emergencyArrowsControl && this.emergencyArrowsControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
2020-03-23 13:48:35 +08:00
|
|
|
}
|
|
|
|
|
2019-12-05 10:19:41 +08:00
|
|
|
// 设置状态
|
2019-12-04 11:32:30 +08:00
|
|
|
setState(model) {
|
2020-03-13 13:01:58 +08:00
|
|
|
if (!this.isShowShape) return;
|
2020-08-07 11:09:49 +08:00
|
|
|
this.recover();
|
2020-05-28 15:02:15 +08:00
|
|
|
model.controlMode && this['handle' + model.controlMode]();
|
2020-06-05 10:14:12 +08:00
|
|
|
if (model.tbStrategyId) {
|
|
|
|
store.state.map.map.tbStrategyList.forEach(item => {
|
|
|
|
if (item.stationCode == model.code) {
|
|
|
|
const modelData = Vue.prototype.$jlmap.mapDevice[item.code];
|
|
|
|
modelData && modelData.instance && modelData.instance.setState(modelData, model.tbStrategyId);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2019-12-04 11:32:30 +08:00
|
|
|
}
|
2019-11-29 12:51:58 +08:00
|
|
|
|
2020-04-07 13:09:34 +08:00
|
|
|
getShapeTipPoint(opts) {
|
|
|
|
let rect;
|
|
|
|
if (opts.subDeviceType === 'button') {
|
|
|
|
rect = this.centerControlButton.getArcBoundingRect();
|
|
|
|
} else {
|
|
|
|
rect = this.stationText.getBoundingRect();
|
|
|
|
}
|
|
|
|
return {
|
|
|
|
x: rect.x + rect.width,
|
|
|
|
y: rect.y
|
|
|
|
};
|
2019-12-04 11:32:30 +08:00
|
|
|
}
|
2019-12-17 09:13:57 +08:00
|
|
|
|
2019-12-18 09:49:44 +08:00
|
|
|
getBoundingRect() {
|
2020-08-07 11:09:49 +08:00
|
|
|
const rect = this.stationText.getBoundingRect().clone();
|
|
|
|
if (this.model.subheadDisplay) {
|
|
|
|
const subheadText = this.subheadText.getBoundingRect().clone();
|
|
|
|
rect.union(subheadText);
|
|
|
|
return rect;
|
2019-12-18 09:49:44 +08:00
|
|
|
} else {
|
2020-08-07 11:09:49 +08:00
|
|
|
return rect;
|
2019-12-18 09:49:44 +08:00
|
|
|
}
|
|
|
|
}
|
2019-12-17 09:13:57 +08:00
|
|
|
|
2019-12-04 11:32:30 +08:00
|
|
|
drawSelected(selected) {
|
2019-12-05 10:25:07 +08:00
|
|
|
this.EMouse && this.EMouse.drawSelected(selected);
|
2019-12-04 11:32:30 +08:00
|
|
|
}
|
|
|
|
|
2019-12-05 10:25:07 +08:00
|
|
|
checkIsDrawMap() {
|
|
|
|
const path = window.location.href;
|
|
|
|
if (path.includes('/map/draw')) {
|
|
|
|
this.EMouse = new EMouse(this);
|
|
|
|
this.add(this.EMouse);
|
|
|
|
this.on('mouseout', () => { this.EMouse.mouseout(); });
|
|
|
|
this.on('mouseover', () => { this.EMouse.mouseover(); });
|
|
|
|
}
|
|
|
|
}
|
2020-03-18 10:31:23 +08:00
|
|
|
setShowMode() {
|
|
|
|
}
|
2020-03-13 13:01:58 +08:00
|
|
|
setShowStation(flag) {
|
|
|
|
if (flag) {
|
|
|
|
this.eachChild(item => {
|
|
|
|
item.show();
|
|
|
|
});
|
2020-06-23 13:52:34 +08:00
|
|
|
if (this.mileageText) {
|
|
|
|
this.model.kmPostShow ? this.mileageText.show() : this.mileageText.hide();
|
|
|
|
}
|
2020-03-13 13:01:58 +08:00
|
|
|
this.isShowShape = true;
|
|
|
|
this.setState(this.model);
|
|
|
|
} else {
|
|
|
|
this.eachChild(item => {
|
|
|
|
item.hide();
|
|
|
|
});
|
|
|
|
this.isShowShape = false;
|
|
|
|
}
|
|
|
|
}
|
2019-11-29 12:51:58 +08:00
|
|
|
}
|