diff --git a/src/jmapNew/config/skinCode/datie_02.js b/src/jmapNew/config/skinCode/datie_02.js index 52f5655c6..6a8a2e367 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:'' } }; @@ -205,7 +209,7 @@ class SkinCode extends defaultStyle { borderWidth: 2, // 信号灯边框线宽度 borderColor: 'rgb(85,120,182)', // 信号灯边框线颜色 darkColor:'rgb(85,120,182)', // - radiusR: 7, // 信号灯半径 + radiusR: 5, // 信号灯半径 grayColor: '#7F7F7F', // 信号灯灰色 redColor: '#FF0000', // 信号灯红色 greenColor: '#00FF00', // 信号灯绿色 @@ -260,6 +264,7 @@ class SkinCode extends defaultStyle { }; this[deviceType.SignalButton] = { + width:12, guideColor: 'rgb(80,80,255)', trainColor:'rgb(0,128,0)', strokeColor:'rgb(128,128,128)' 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/Signal/index.js b/src/jmapNew/shape/graph/Signal/index.js index 4bf15d7e4..0a3d22227 100644 --- a/src/jmapNew/shape/graph/Signal/index.js +++ b/src/jmapNew/shape/graph/Signal/index.js @@ -953,12 +953,12 @@ class Signal extends Group { showRemainTime(number) { this.remainTimeName.show(); this.remainTimeName && this.remainTimeName.setStyle({ text: number }); - this.model.signalButtonList && this.model.signalButtonList.length && this.model.signalButtonList.forEach(item => { - const button = store.getters['map/getDeviceByCode'](item); - if (button.type === 'PICK') { - button && button.instance && button.instance.startAnimate(); - } - }); + // this.model.signalButtonList && this.model.signalButtonList.length && this.model.signalButtonList.forEach(item => { + // const button = store.getters['map/getDeviceByCode'](item); + // if (button.type === 'PICK') { + // button && button.instance && button.instance.startAnimate(); + // } + // }); if (this.model.type === 'SHUNTING') { if (!this.style.Signal.dtTextNearSignalOffset) { this.sigName && this.sigName.setAnimationStart(this.style.Signal.text.defaultColor); diff --git a/src/jmapNew/shape/graph/SignalButton/index.js b/src/jmapNew/shape/graph/SignalButton/index.js index 541e4d4f0..b1d113b89 100644 --- a/src/jmapNew/shape/graph/SignalButton/index.js +++ b/src/jmapNew/shape/graph/SignalButton/index.js @@ -97,14 +97,15 @@ export default class SignalButton extends Group { .add(circle2) .add(circle3); } else { + const width = this.style.SignalButton && this.style.SignalButton.width ? this.style.SignalButton.width : 14; this.rectButton = new Rect({ zlevel: this.zlevel, z: this.z, shape: { x: computedPosition.x, y: computedPosition.y, - width: 14, - height: 14 + width:width, + height: width }, style: { lineDash: null, 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(); + } + } } } diff --git a/src/jmapNew/theme/datie_02/menus/dialog/childDialog/passwordInputBox.vue b/src/jmapNew/theme/datie_02/menus/dialog/childDialog/passwordInputBox.vue index eec77511b..d9a626059 100644 --- a/src/jmapNew/theme/datie_02/menus/dialog/childDialog/passwordInputBox.vue +++ b/src/jmapNew/theme/datie_02/menus/dialog/childDialog/passwordInputBox.vue @@ -1,20 +1,20 @@ @@ -94,7 +110,8 @@ export default { /* 输入值替换为对应长度的星号*/ encryptionPassword: '', loading: false, - showMistake: false + showMistake: false, + title:'' }; }, computed: { @@ -109,7 +126,8 @@ export default { } }, methods: { - doShow(operate) { + doShow(operate, title) { + this.title = title; this.operate = operate || {}; this.operation = operate.operation; if (operate.operateNext) { @@ -125,6 +143,7 @@ export default { this.loading = false; this.dialogShow = false; this.showMistake = false; + this.title = ''; this.$store.dispatch('training/emitTipFresh'); }, commit() { // 确定 @@ -190,4 +209,175 @@ export default { color: red; } + + .datie-02__systerm .el-dialog { + background: #0055E8; + box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset; + border: 1px solid rgb(69, 134, 247); + border-radius: 6px; + font-size: 13px !important; + color: #000; + } + + .datie-02__systerm .el-dialog span { + font-size: 13px !important; + line-height: 22px; + } + + .datie-02__systerm .el-dialog span .el-icon-arrow-up{ + line-height: 18px; + } + + .datie-02__systerm .el-dialog .el-dialog__footer { + background: #ECE9D8; + opacity: 1; + } + + .datie-02__systerm .el-dialog .el-dialog__body { + padding: 0px; + margin: 0px 3px 3px; + border: 2px solid rgba(120, 121, 123, 0.5); + box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset; + background: #ECE9D8; + opacity: 1; + } + + .datie-02__systerm .el-dialog .el-dialog__title { + font-size: 16px; + color: #fff; + position: absolute; + top: 4px; + left: 7px; + } + + .datie-02__systerm .el-dialog .el-button { + height: 30px; + line-height: 22px; + padding: 0px 13px; + /* width: 80px; */ + border: 1px solid #000000; + border-radius: 4px !important; + color: #000; + font-weight: bold; + background: linear-gradient(180deg, #fff, #efebf7); + margin-left: 0px + } + + .datie-02__systerm .el-dialog .el-input.is-disabled .el-input__inner { + background: #efebde !important; + border-top: 2px #7f796f solid; + border-left: 2px #7F796E solid; + border-radius: 0px; + height:30px; + color:#000; + } + .datie-02__systerm .el-dialog .el-dialog__headerbtn { + /* background: linear-gradient(#CD98A0, #C27D6E, #B63022, #C68770); */ + /* border: 1px solid #fff; */ + display: none; + border-radius: 4px; + top: 6px; + right: 3px; + line-height: 16px; + } + + .datie-02__systerm .el-dialog .button-group { + font-size:0; + margin-top:2px; + } + /* + + .chengdou-03__systerm .el-dialog .el-dialog__headerbtn .el-icon-close:before { + font-size: 16px; + } + + .chengdou-03__systerm .el-dialog .el-dialog__headerbtn .el-dialog__close { + color: #fff; + } + + .chengdou-03__systerm .el-dialog .expand { + width: 120px; + } + + .chengdou-03__systerm .el-dialog .el-button:focus span { + border: 1px dashed gray; + } + + .chengdou-03__systerm .el-dialog .el-button:active { + border: 2px inset #E2E2E2; + } + + .chengdou-03__systerm .el-dialog .el-button:disabled { + border: 2px inset #E2E2E2; + } + + .chengdou-03__systerm .el-dialog .el-button:disabled span { + border: 0px; + } + + .chengdou-03__systerm .el-dialog .el-input { + border: 2px inset #E9E9E9; + height: 22px !important; + line-height: 22px !important; + } + + .chengdou-03__systerm .el-dialog .el-input__inner { + color: #000; + background: #fff !important; + border: 0px; + border-radius: 0px !important; + box-sizing: border-box; + height: 22px !important; + line-height: 22px !important; + } + + .chengdou-03__systerm .el-dialog .el-textarea { + border: 2px inset #E9E9E9; + border-radius: 0px; + } + + .chengdou-03__systerm .el-dialog .el-textarea .el-textarea__inner { + color: #000; + background: #fff !important; + border: 0px; + border-radius: 0px !important; + box-sizing: border-box; + } + + .chengdou-03__systerm .el-dialog .el-textarea.is-disabled .el-textarea__inner { + background: #F0F0F0 !important; + } + + .chengdou-03__systerm .el-dialog .el-table--border th.gutter { + background: #EBEADB !important; + } + + .chengdou-03__systerm .el-dialog .el-table { + border: 2px inset #E9E9E9; + color: #000 !important; + } + + .chengdou-03__systerm .el-dialog .el-table .cell { + height: 22px; + line-height: 22px; + } + + .chengdou-03__systerm .el-dialog .el-table th.is-leaf { + background: #F0F0F0 !important; + border-right: 1px solid #BDBDBD !important; + border-bottom: 1px solid #BDBDBD !important; + color: #000 !important; + height: 20px !important; + padding: 0px; + } + + .chengdou-03__systerm .el-dialog .el-table tr td { + height: 20px !important; + padding: 0px; + } + + .chengdou-03__systerm .el-dialog .el-table .el-table__empty-text { + top: 15px !important; + } */ + diff --git a/src/jmapNew/theme/datie_02/menus/menuButton.vue b/src/jmapNew/theme/datie_02/menus/menuButton.vue index dbdbf1299..68ec7318d 100644 --- a/src/jmapNew/theme/datie_02/menus/menuButton.vue +++ b/src/jmapNew/theme/datie_02/menus/menuButton.vue @@ -1,6 +1,6 @@