diff --git a/src/jmapNew/config/skinCode/datie_02.js b/src/jmapNew/config/skinCode/datie_02.js index 798e5219b..25d9e8c10 100644 --- a/src/jmapNew/config/skinCode/datie_02.js +++ b/src/jmapNew/config/skinCode/datie_02.js @@ -164,6 +164,10 @@ class SkinCode extends defaultStyle { }, trainPosition:{ display: false // 列车实时位置显示 + }, + remainTime:{ + circleBack:'', + textColor:'' } }; diff --git a/src/jmapNew/constant/stateTransition.js b/src/jmapNew/constant/stateTransition.js index 4df564a51..46df4f7a2 100644 --- a/src/jmapNew/constant/stateTransition.js +++ b/src/jmapNew/constant/stateTransition.js @@ -24,6 +24,7 @@ class Status { assignSkip: device.assignSkip, // 是否指定跳停 runLevelTime: device.runLevelTime, // 区间运行时间 自动为 0 parkingTime: device.parkingTime, // 站台停车时间 自动为0 + remainTime:device.remainTime, // 当前剩余停站时间 fault: device.fault, /** 非故障*/ num:device.num }; @@ -95,6 +96,7 @@ class Status { offsetp:device.offsetp, /** 列车精确位置 (成都一号线使用)*/ physicalCode:device.physicalCode, /** 列车所在物理区段 */ num:device.num /** 列车上的人数*/ + // parkingRemainTime }; } handleStation(device) { diff --git a/src/jmapNew/shape/graph/Section/index.js b/src/jmapNew/shape/graph/Section/index.js index 34cbb11a2..8b2137fff 100644 --- a/src/jmapNew/shape/graph/Section/index.js +++ b/src/jmapNew/shape/graph/Section/index.js @@ -1,4 +1,6 @@ import Group from 'zrender/src/container/Group'; +import Text from 'zrender/src/graphic/Text'; +import Arc from 'zrender/src/graphic/shape/Arc'; import ETextName from './ETextName'; // 名称文字 import ELimitLines from './ELimitLines'; // 区段限速 (私有) import ELines from './ELines'; // 创建多线条 曲线 (私有) @@ -132,6 +134,50 @@ export default class Section extends Group { }); this.add(this[element]); }); + + if (this.style.Section.remainTime && (this.model.standTrack || this.model.reentryTrack || this.model.transferTrack)) { + const computedPoints = this.computedPoints; + const drict = model.trainPosType != '01' ? 1 : -1; + const x = Math.min(computedPoints[0].x, computedPoints[computedPoints.length - 1].x) + Math.abs(computedPoints[computedPoints.length - 1].x - computedPoints[0].x) / 2; + const y = Math.min(computedPoints[0].y, computedPoints[computedPoints.length - 1].y) + Math.abs(computedPoints[computedPoints.length - 1].y - computedPoints[0].y) / 2; + this.remainTimeText = new Text({ + _subType: 'remainTimeText', + zlevel: this.zlevel, + z: this.z, + silent: model.silent || false, + style: { + x: x, + y: y - 23 * drict, + fontWeight: 'normal', + fontSize: 13, + fontFamily:style.fontFamily, + text: '0', + textFill:'#ff0000', + textAlign: 'center', // 水平对齐方式 + textPosition: 'inside', // 文字位置 + textVerticalAlign: 'middle' // 文字垂直对齐方式 + } + }); + this.remainTimeCircle = new Arc({ + _subType: 'remainTimeCircle', + zlevel: this.zlevel, + z: this.z, + shape: { + cx: x - 18, + cy: y - 23 * drict, + r: 6 + }, + style: { + lineWidth: 1, + fill: style.backgroundColor, + stroke: '#ffffff' + } + }); + this.add(this.remainTimeText); + this.add(this.remainTimeCircle); + this.remainTimeText.hide(); + this.remainTimeCircle.hide(); + } } } @@ -167,6 +213,8 @@ export default class Section extends Group { this.speedLimitName && this.speedLimitName.hide(); this.separator && this.separator.show(); this.badShunt && this.badShunt.hide(); + // this.remainTimeText && this.remainTimeText.hide(); + // this.remainTimeCircle && this.remainTimeCircle.hide(); this.axle && this.axle.setStyle({ stroke: this.style.Section.line.spareColor, @@ -655,4 +703,22 @@ export default class Section extends Group { y:rect.y }; } + + showRemainTime(remainTime) { + this.remainTimeText.show(); + this.remainTimeCircle.show(); + this.remainTimeCircle && this.remainTimeCircle.animateStyle(true) + .when(0, { fill:this.style.backgroundColor }) + .when(1000, { fill: '#ffffff' }) + .when(2000, { fill:this.style.backgroundColor }) + .start(); + this.remainTimeText.setStyle('text', remainTime); + } + + hideRemainTime() { + this.remainTimeText.hide(); + this.remainTimeCircle && this.remainTimeCircle.stopAnimation(true); + this.remainTimeCircle && this.remainTimeCircle.hide(); + } + } diff --git a/src/jmapNew/shape/graph/StationStand/index.js b/src/jmapNew/shape/graph/StationStand/index.js index 12c635464..edaf7e2f3 100644 --- a/src/jmapNew/shape/graph/StationStand/index.js +++ b/src/jmapNew/shape/graph/StationStand/index.js @@ -189,6 +189,14 @@ class StationStand extends Group { this.upDetainLamp && this.upDetainLamp.show(); this.downDetainLamp && this.downDetainLamp.show(); } + if (this.style.Section.remainTime) { + const section = this.mapDevice[model.standTrackCode]; + if (model.remainTime) { + section.instance && section.instance.showRemainTime(model.remainTime); + } else { + section.instance && section.instance.hideRemainTime(); + } + } } }