diff --git a/src/views/newMap/display/trainingList/trainingPositionTip.vue b/src/views/newMap/display/trainingList/trainingPositionTip.vue index 2887749a4..8c678f8d1 100644 --- a/src/views/newMap/display/trainingList/trainingPositionTip.vue +++ b/src/views/newMap/display/trainingList/trainingPositionTip.vue @@ -22,7 +22,8 @@ export default { x: 0, y: 0 }, - tip: '' + tip: '', + timetamp: 0 }; }, computed: { @@ -47,7 +48,8 @@ export default { awaitOperateFlag = !document.getElementById(OperationEvent.StationControl.requestStationControl.awaitAlarm.domId); } if (val && this.trainingDetail && this.trainingDetail.type === 'SINGLE' && val.memberId == this.myMemberId && !awaitOperateFlag) { - this.tipInit(); + this.timetamp = new Date().getTime(); + this.tipInit(this.timetamp); } else { this.tip = ''; this.popShow = false; @@ -56,7 +58,8 @@ export default { }, '$store.state.trainingNew.voiceStepIndex': function(val) { if (val > -1 && this.trainingDetail && this.trainingDetail.type === 'SINGLE') { - this.tipInit(); + this.timetamp = new Date().getTime(); + this.tipInit(this.timetamp); } else { this.tip = ''; this.popShow = false; @@ -76,9 +79,11 @@ export default { this.position = { x: 0, y: 0 }; }, '$store.state.training.tipEvent': function (val) { + const timetamp = new Date().getTime(); + this.timetamp = timetamp; setTimeout(() => { if (this.tip) { - this.tipInit(); + this.tipInit(timetamp); } }, 10); }, @@ -87,13 +92,15 @@ export default { const stepInfo = this.$store.state.trainingNew.stepInfo; const domId = OperationEvent.StationControl.requestStationControl.awaitAlarm.operation; if (val && val.sourceMemberId == this.$store.state.training.myMemberId && stepInfo && stepInfo.tipPosition && stepInfo.tipPosition.domId === domId) { - setTimeout(() => { this.tipInit(); }, 10); + const timetamp = new Date().getTime(); + this.timetamp = timetamp; + setTimeout(() => { this.tipInit(timetamp); }, 10); } } } }, methods: { - async tipInit() { + async tipInit(timetamp) { if (this.teachMode === ScriptMode.TEACH) { this.tipShow = true; const offset = this.$store.state.config.canvasOffset; @@ -113,28 +120,34 @@ export default { x: position.x + offset.x, y: position.y + offset.y - distance }; - this.popTipShow(); + this.popTipShow(timetamp); } } else if (stepInfo.tipPosition && stepInfo.tipPosition.domId) { const position = await this.getOtherTipPoint(stepInfo.tipPosition); if (position) { this.position = position; this.position.y -= distance; - this.popTipShow(); + this.popTipShow(timetamp); } else { - this.popTipHide(); + this.popTipHide(timetamp); } } else { - this.popTipHide(); + this.popTipHide(timetamp); } } else { this.tipShow = false; } }, - popTipShow() { + popTipShow(timetamp) { + if (this.timetamp !== timetamp) { + return; + } this.popShow = true; }, - popTipHide() { + popTipHide(timetamp) { + if (this.timetamp !== timetamp) { + return; + } this.popShow = false; }, // 获取地图设备提示位置