diff --git a/src/App.vue b/src/App.vue index d103696..dca0151 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ @@ -11,13 +12,8 @@ name: 'App', mounted() { this.windowResize(window.innerHeight, window.innerWidth) - this.initWebSocket() }, methods: { - initWebSocket() { - console.log('初始化websocket') - this.$store.dispatch('initWebSocket') - }, // 窗口变化 windowResize(height, width) { // 查找header高度 diff --git a/src/App.vue b/src/App.vue index d103696..dca0151 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ @@ -11,13 +12,8 @@ name: 'App', mounted() { this.windowResize(window.innerHeight, window.innerWidth) - this.initWebSocket() }, methods: { - initWebSocket() { - console.log('初始化websocket') - this.$store.dispatch('initWebSocket') - }, // 窗口变化 windowResize(height, width) { // 查找header高度 diff --git a/src/components/Amap/AMapContainer.vue b/src/components/Amap/AMapContainer.vue index 5b5057e..ed5eca1 100644 --- a/src/components/Amap/AMapContainer.vue +++ b/src/components/Amap/AMapContainer.vue @@ -61,6 +61,9 @@ } }, watch: { + center(val) { + this.setCenter() + }, baseLayer(val) { this.changeBaseLayer() } @@ -115,6 +118,10 @@ this.$message.error('地图加载失败:'+e) }) }, + setCenter(){ + console.log('setCenter') + this.map.setCenter(this.center) + }, changeBaseLayer() { const layers = this.map.getLayers() const type = this.baseLayer diff --git a/src/App.vue b/src/App.vue index d103696..dca0151 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ @@ -11,13 +12,8 @@ name: 'App', mounted() { this.windowResize(window.innerHeight, window.innerWidth) - this.initWebSocket() }, methods: { - initWebSocket() { - console.log('初始化websocket') - this.$store.dispatch('initWebSocket') - }, // 窗口变化 windowResize(height, width) { // 查找header高度 diff --git a/src/components/Amap/AMapContainer.vue b/src/components/Amap/AMapContainer.vue index 5b5057e..ed5eca1 100644 --- a/src/components/Amap/AMapContainer.vue +++ b/src/components/Amap/AMapContainer.vue @@ -61,6 +61,9 @@ } }, watch: { + center(val) { + this.setCenter() + }, baseLayer(val) { this.changeBaseLayer() } @@ -115,6 +118,10 @@ this.$message.error('地图加载失败:'+e) }) }, + setCenter(){ + console.log('setCenter') + this.map.setCenter(this.center) + }, changeBaseLayer() { const layers = this.map.getLayers() const type = this.baseLayer diff --git a/src/layout/components/AppHeader.vue b/src/layout/components/AppHeader.vue index 4c5e534..8f931d5 100644 --- a/src/layout/components/AppHeader.vue +++ b/src/layout/components/AppHeader.vue @@ -61,7 +61,18 @@ this.getSystems() } }, + mounted() { + this.initWebSocket() + }, methods: { + initWebSocket() { + // 当用户id时在加载websocket + if (this.$store.getters.id) { + console.log('初始化websocket') + const that = this + this.$store.dispatch('initWebSocket', that) + } + }, toggleSideBar() { this.$store.dispatch('ToggleSideBar') }, diff --git a/src/App.vue b/src/App.vue index d103696..dca0151 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ @@ -11,13 +12,8 @@ name: 'App', mounted() { this.windowResize(window.innerHeight, window.innerWidth) - this.initWebSocket() }, methods: { - initWebSocket() { - console.log('初始化websocket') - this.$store.dispatch('initWebSocket') - }, // 窗口变化 windowResize(height, width) { // 查找header高度 diff --git a/src/components/Amap/AMapContainer.vue b/src/components/Amap/AMapContainer.vue index 5b5057e..ed5eca1 100644 --- a/src/components/Amap/AMapContainer.vue +++ b/src/components/Amap/AMapContainer.vue @@ -61,6 +61,9 @@ } }, watch: { + center(val) { + this.setCenter() + }, baseLayer(val) { this.changeBaseLayer() } @@ -115,6 +118,10 @@ this.$message.error('地图加载失败:'+e) }) }, + setCenter(){ + console.log('setCenter') + this.map.setCenter(this.center) + }, changeBaseLayer() { const layers = this.map.getLayers() const type = this.baseLayer diff --git a/src/layout/components/AppHeader.vue b/src/layout/components/AppHeader.vue index 4c5e534..8f931d5 100644 --- a/src/layout/components/AppHeader.vue +++ b/src/layout/components/AppHeader.vue @@ -61,7 +61,18 @@ this.getSystems() } }, + mounted() { + this.initWebSocket() + }, methods: { + initWebSocket() { + // 当用户id时在加载websocket + if (this.$store.getters.id) { + console.log('初始化websocket') + const that = this + this.$store.dispatch('initWebSocket', that) + } + }, toggleSideBar() { this.$store.dispatch('ToggleSideBar') }, diff --git a/src/main.js b/src/main.js index 6d48f72..44f6174 100644 --- a/src/main.js +++ b/src/main.js @@ -47,9 +47,10 @@ import alarmAudio from '@/assets/audio/alarm.mp3' // 方法1:注册播放音频事件到Vue实例上 -Vue.prototype.playAudio = (audioName) => { +Vue.prototype.playAudio = () => { const audio = document.getElementById('eventAudio') audio.setAttribute('src', alarmAudio) + audio.loop = 'loop' if (audio.paused === true) { // 判断音频是否暂停,暂停重新加载音频元素 audio.load() } else { // 否则 @@ -69,6 +70,12 @@ }, 10) } } +Vue.prototype.pauseAudio = () => { + const audio = document.getElementById('eventAudio') + if (!audio.paused) { // 判断音频是否暂停,暂停重新加载音频元素 + audio.pause() + } +} // 注册全局自定义布局组件 import NormalTable from '@/components/NormalTable/index' import SearchArea from '@/components/SearchArea/SearchArea' diff --git a/src/App.vue b/src/App.vue index d103696..dca0151 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ @@ -11,13 +12,8 @@ name: 'App', mounted() { this.windowResize(window.innerHeight, window.innerWidth) - this.initWebSocket() }, methods: { - initWebSocket() { - console.log('初始化websocket') - this.$store.dispatch('initWebSocket') - }, // 窗口变化 windowResize(height, width) { // 查找header高度 diff --git a/src/components/Amap/AMapContainer.vue b/src/components/Amap/AMapContainer.vue index 5b5057e..ed5eca1 100644 --- a/src/components/Amap/AMapContainer.vue +++ b/src/components/Amap/AMapContainer.vue @@ -61,6 +61,9 @@ } }, watch: { + center(val) { + this.setCenter() + }, baseLayer(val) { this.changeBaseLayer() } @@ -115,6 +118,10 @@ this.$message.error('地图加载失败:'+e) }) }, + setCenter(){ + console.log('setCenter') + this.map.setCenter(this.center) + }, changeBaseLayer() { const layers = this.map.getLayers() const type = this.baseLayer diff --git a/src/layout/components/AppHeader.vue b/src/layout/components/AppHeader.vue index 4c5e534..8f931d5 100644 --- a/src/layout/components/AppHeader.vue +++ b/src/layout/components/AppHeader.vue @@ -61,7 +61,18 @@ this.getSystems() } }, + mounted() { + this.initWebSocket() + }, methods: { + initWebSocket() { + // 当用户id时在加载websocket + if (this.$store.getters.id) { + console.log('初始化websocket') + const that = this + this.$store.dispatch('initWebSocket', that) + } + }, toggleSideBar() { this.$store.dispatch('ToggleSideBar') }, diff --git a/src/main.js b/src/main.js index 6d48f72..44f6174 100644 --- a/src/main.js +++ b/src/main.js @@ -47,9 +47,10 @@ import alarmAudio from '@/assets/audio/alarm.mp3' // 方法1:注册播放音频事件到Vue实例上 -Vue.prototype.playAudio = (audioName) => { +Vue.prototype.playAudio = () => { const audio = document.getElementById('eventAudio') audio.setAttribute('src', alarmAudio) + audio.loop = 'loop' if (audio.paused === true) { // 判断音频是否暂停,暂停重新加载音频元素 audio.load() } else { // 否则 @@ -69,6 +70,12 @@ }, 10) } } +Vue.prototype.pauseAudio = () => { + const audio = document.getElementById('eventAudio') + if (!audio.paused) { // 判断音频是否暂停,暂停重新加载音频元素 + audio.pause() + } +} // 注册全局自定义布局组件 import NormalTable from '@/components/NormalTable/index' import SearchArea from '@/components/SearchArea/SearchArea' diff --git a/src/store/modules/websocket.js b/src/store/modules/websocket.js index 0da8a05..6ed57cf 100644 --- a/src/store/modules/websocket.js +++ b/src/store/modules/websocket.js @@ -24,7 +24,7 @@ actions: { // 连接websocket - initWebSocket({ commit }, wsUrl) { + initWebSocket({ commit }, that) { if (typeof (WebSocket) === 'undefined') { Notification({ title: '提示', @@ -33,6 +33,7 @@ duration: 0 }) } else { + // that.playAudio() // 测试音效 // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改 // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送 const socketUrl = getWsUrl() + user.state.id @@ -56,11 +57,15 @@ // 这里也可以把返回信息加入到message中显示 message: data.message, type: 'warning', + duration: 0, onClick: () => { router.push({ path: '/overview', query: { refresh: true } }) + }, + onClose: () => { + that.pauseAudio() } }) setTimeout(function() { diff --git a/src/App.vue b/src/App.vue index d103696..dca0151 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ @@ -11,13 +12,8 @@ name: 'App', mounted() { this.windowResize(window.innerHeight, window.innerWidth) - this.initWebSocket() }, methods: { - initWebSocket() { - console.log('初始化websocket') - this.$store.dispatch('initWebSocket') - }, // 窗口变化 windowResize(height, width) { // 查找header高度 diff --git a/src/components/Amap/AMapContainer.vue b/src/components/Amap/AMapContainer.vue index 5b5057e..ed5eca1 100644 --- a/src/components/Amap/AMapContainer.vue +++ b/src/components/Amap/AMapContainer.vue @@ -61,6 +61,9 @@ } }, watch: { + center(val) { + this.setCenter() + }, baseLayer(val) { this.changeBaseLayer() } @@ -115,6 +118,10 @@ this.$message.error('地图加载失败:'+e) }) }, + setCenter(){ + console.log('setCenter') + this.map.setCenter(this.center) + }, changeBaseLayer() { const layers = this.map.getLayers() const type = this.baseLayer diff --git a/src/layout/components/AppHeader.vue b/src/layout/components/AppHeader.vue index 4c5e534..8f931d5 100644 --- a/src/layout/components/AppHeader.vue +++ b/src/layout/components/AppHeader.vue @@ -61,7 +61,18 @@ this.getSystems() } }, + mounted() { + this.initWebSocket() + }, methods: { + initWebSocket() { + // 当用户id时在加载websocket + if (this.$store.getters.id) { + console.log('初始化websocket') + const that = this + this.$store.dispatch('initWebSocket', that) + } + }, toggleSideBar() { this.$store.dispatch('ToggleSideBar') }, diff --git a/src/main.js b/src/main.js index 6d48f72..44f6174 100644 --- a/src/main.js +++ b/src/main.js @@ -47,9 +47,10 @@ import alarmAudio from '@/assets/audio/alarm.mp3' // 方法1:注册播放音频事件到Vue实例上 -Vue.prototype.playAudio = (audioName) => { +Vue.prototype.playAudio = () => { const audio = document.getElementById('eventAudio') audio.setAttribute('src', alarmAudio) + audio.loop = 'loop' if (audio.paused === true) { // 判断音频是否暂停,暂停重新加载音频元素 audio.load() } else { // 否则 @@ -69,6 +70,12 @@ }, 10) } } +Vue.prototype.pauseAudio = () => { + const audio = document.getElementById('eventAudio') + if (!audio.paused) { // 判断音频是否暂停,暂停重新加载音频元素 + audio.pause() + } +} // 注册全局自定义布局组件 import NormalTable from '@/components/NormalTable/index' import SearchArea from '@/components/SearchArea/SearchArea' diff --git a/src/store/modules/websocket.js b/src/store/modules/websocket.js index 0da8a05..6ed57cf 100644 --- a/src/store/modules/websocket.js +++ b/src/store/modules/websocket.js @@ -24,7 +24,7 @@ actions: { // 连接websocket - initWebSocket({ commit }, wsUrl) { + initWebSocket({ commit }, that) { if (typeof (WebSocket) === 'undefined') { Notification({ title: '提示', @@ -33,6 +33,7 @@ duration: 0 }) } else { + // that.playAudio() // 测试音效 // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改 // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送 const socketUrl = getWsUrl() + user.state.id @@ -56,11 +57,15 @@ // 这里也可以把返回信息加入到message中显示 message: data.message, type: 'warning', + duration: 0, onClick: () => { router.push({ path: '/overview', query: { refresh: true } }) + }, + onClose: () => { + that.pauseAudio() } }) setTimeout(function() { diff --git a/src/views/dashboard/components/WellCountByDept.vue b/src/views/dashboard/components/WellCountByDept.vue index 8c077ef..1f85c5c 100644 --- a/src/views/dashboard/components/WellCountByDept.vue +++ b/src/views/dashboard/components/WellCountByDept.vue @@ -46,7 +46,6 @@ methods: { fetchData() { wellStaticByDept().then(response => { - debugger this.chartData.rows = response.data }) } diff --git a/src/App.vue b/src/App.vue index d103696..dca0151 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ @@ -11,13 +12,8 @@ name: 'App', mounted() { this.windowResize(window.innerHeight, window.innerWidth) - this.initWebSocket() }, methods: { - initWebSocket() { - console.log('初始化websocket') - this.$store.dispatch('initWebSocket') - }, // 窗口变化 windowResize(height, width) { // 查找header高度 diff --git a/src/components/Amap/AMapContainer.vue b/src/components/Amap/AMapContainer.vue index 5b5057e..ed5eca1 100644 --- a/src/components/Amap/AMapContainer.vue +++ b/src/components/Amap/AMapContainer.vue @@ -61,6 +61,9 @@ } }, watch: { + center(val) { + this.setCenter() + }, baseLayer(val) { this.changeBaseLayer() } @@ -115,6 +118,10 @@ this.$message.error('地图加载失败:'+e) }) }, + setCenter(){ + console.log('setCenter') + this.map.setCenter(this.center) + }, changeBaseLayer() { const layers = this.map.getLayers() const type = this.baseLayer diff --git a/src/layout/components/AppHeader.vue b/src/layout/components/AppHeader.vue index 4c5e534..8f931d5 100644 --- a/src/layout/components/AppHeader.vue +++ b/src/layout/components/AppHeader.vue @@ -61,7 +61,18 @@ this.getSystems() } }, + mounted() { + this.initWebSocket() + }, methods: { + initWebSocket() { + // 当用户id时在加载websocket + if (this.$store.getters.id) { + console.log('初始化websocket') + const that = this + this.$store.dispatch('initWebSocket', that) + } + }, toggleSideBar() { this.$store.dispatch('ToggleSideBar') }, diff --git a/src/main.js b/src/main.js index 6d48f72..44f6174 100644 --- a/src/main.js +++ b/src/main.js @@ -47,9 +47,10 @@ import alarmAudio from '@/assets/audio/alarm.mp3' // 方法1:注册播放音频事件到Vue实例上 -Vue.prototype.playAudio = (audioName) => { +Vue.prototype.playAudio = () => { const audio = document.getElementById('eventAudio') audio.setAttribute('src', alarmAudio) + audio.loop = 'loop' if (audio.paused === true) { // 判断音频是否暂停,暂停重新加载音频元素 audio.load() } else { // 否则 @@ -69,6 +70,12 @@ }, 10) } } +Vue.prototype.pauseAudio = () => { + const audio = document.getElementById('eventAudio') + if (!audio.paused) { // 判断音频是否暂停,暂停重新加载音频元素 + audio.pause() + } +} // 注册全局自定义布局组件 import NormalTable from '@/components/NormalTable/index' import SearchArea from '@/components/SearchArea/SearchArea' diff --git a/src/store/modules/websocket.js b/src/store/modules/websocket.js index 0da8a05..6ed57cf 100644 --- a/src/store/modules/websocket.js +++ b/src/store/modules/websocket.js @@ -24,7 +24,7 @@ actions: { // 连接websocket - initWebSocket({ commit }, wsUrl) { + initWebSocket({ commit }, that) { if (typeof (WebSocket) === 'undefined') { Notification({ title: '提示', @@ -33,6 +33,7 @@ duration: 0 }) } else { + // that.playAudio() // 测试音效 // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改 // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送 const socketUrl = getWsUrl() + user.state.id @@ -56,11 +57,15 @@ // 这里也可以把返回信息加入到message中显示 message: data.message, type: 'warning', + duration: 0, onClick: () => { router.push({ path: '/overview', query: { refresh: true } }) + }, + onClose: () => { + that.pauseAudio() } }) setTimeout(function() { diff --git a/src/views/dashboard/components/WellCountByDept.vue b/src/views/dashboard/components/WellCountByDept.vue index 8c077ef..1f85c5c 100644 --- a/src/views/dashboard/components/WellCountByDept.vue +++ b/src/views/dashboard/components/WellCountByDept.vue @@ -46,7 +46,6 @@ methods: { fetchData() { wellStaticByDept().then(response => { - debugger this.chartData.rows = response.data }) } diff --git a/src/views/overview/components/infoWindowAlarm.vue b/src/views/overview/components/infoWindowAlarm.vue index 42b11f9..641a296 100644 --- a/src/views/overview/components/infoWindowAlarm.vue +++ b/src/views/overview/components/infoWindowAlarm.vue @@ -15,7 +15,9 @@
设备编号:{{ alarm.devcode }}
-
点位类型:{{ alarmInfo.wellTypeName }}
+
+ 点位类型:{{ alarmInfo.wellTypeName }} +
权属单位:{{ alarmInfo.deptName }}
详细地址:{{ alarmInfo.position }}
diff --git a/src/App.vue b/src/App.vue index d103696..dca0151 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ @@ -11,13 +12,8 @@ name: 'App', mounted() { this.windowResize(window.innerHeight, window.innerWidth) - this.initWebSocket() }, methods: { - initWebSocket() { - console.log('初始化websocket') - this.$store.dispatch('initWebSocket') - }, // 窗口变化 windowResize(height, width) { // 查找header高度 diff --git a/src/components/Amap/AMapContainer.vue b/src/components/Amap/AMapContainer.vue index 5b5057e..ed5eca1 100644 --- a/src/components/Amap/AMapContainer.vue +++ b/src/components/Amap/AMapContainer.vue @@ -61,6 +61,9 @@ } }, watch: { + center(val) { + this.setCenter() + }, baseLayer(val) { this.changeBaseLayer() } @@ -115,6 +118,10 @@ this.$message.error('地图加载失败:'+e) }) }, + setCenter(){ + console.log('setCenter') + this.map.setCenter(this.center) + }, changeBaseLayer() { const layers = this.map.getLayers() const type = this.baseLayer diff --git a/src/layout/components/AppHeader.vue b/src/layout/components/AppHeader.vue index 4c5e534..8f931d5 100644 --- a/src/layout/components/AppHeader.vue +++ b/src/layout/components/AppHeader.vue @@ -61,7 +61,18 @@ this.getSystems() } }, + mounted() { + this.initWebSocket() + }, methods: { + initWebSocket() { + // 当用户id时在加载websocket + if (this.$store.getters.id) { + console.log('初始化websocket') + const that = this + this.$store.dispatch('initWebSocket', that) + } + }, toggleSideBar() { this.$store.dispatch('ToggleSideBar') }, diff --git a/src/main.js b/src/main.js index 6d48f72..44f6174 100644 --- a/src/main.js +++ b/src/main.js @@ -47,9 +47,10 @@ import alarmAudio from '@/assets/audio/alarm.mp3' // 方法1:注册播放音频事件到Vue实例上 -Vue.prototype.playAudio = (audioName) => { +Vue.prototype.playAudio = () => { const audio = document.getElementById('eventAudio') audio.setAttribute('src', alarmAudio) + audio.loop = 'loop' if (audio.paused === true) { // 判断音频是否暂停,暂停重新加载音频元素 audio.load() } else { // 否则 @@ -69,6 +70,12 @@ }, 10) } } +Vue.prototype.pauseAudio = () => { + const audio = document.getElementById('eventAudio') + if (!audio.paused) { // 判断音频是否暂停,暂停重新加载音频元素 + audio.pause() + } +} // 注册全局自定义布局组件 import NormalTable from '@/components/NormalTable/index' import SearchArea from '@/components/SearchArea/SearchArea' diff --git a/src/store/modules/websocket.js b/src/store/modules/websocket.js index 0da8a05..6ed57cf 100644 --- a/src/store/modules/websocket.js +++ b/src/store/modules/websocket.js @@ -24,7 +24,7 @@ actions: { // 连接websocket - initWebSocket({ commit }, wsUrl) { + initWebSocket({ commit }, that) { if (typeof (WebSocket) === 'undefined') { Notification({ title: '提示', @@ -33,6 +33,7 @@ duration: 0 }) } else { + // that.playAudio() // 测试音效 // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改 // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送 const socketUrl = getWsUrl() + user.state.id @@ -56,11 +57,15 @@ // 这里也可以把返回信息加入到message中显示 message: data.message, type: 'warning', + duration: 0, onClick: () => { router.push({ path: '/overview', query: { refresh: true } }) + }, + onClose: () => { + that.pauseAudio() } }) setTimeout(function() { diff --git a/src/views/dashboard/components/WellCountByDept.vue b/src/views/dashboard/components/WellCountByDept.vue index 8c077ef..1f85c5c 100644 --- a/src/views/dashboard/components/WellCountByDept.vue +++ b/src/views/dashboard/components/WellCountByDept.vue @@ -46,7 +46,6 @@ methods: { fetchData() { wellStaticByDept().then(response => { - debugger this.chartData.rows = response.data }) } diff --git a/src/views/overview/components/infoWindowAlarm.vue b/src/views/overview/components/infoWindowAlarm.vue index 42b11f9..641a296 100644 --- a/src/views/overview/components/infoWindowAlarm.vue +++ b/src/views/overview/components/infoWindowAlarm.vue @@ -15,7 +15,9 @@
设备编号:{{ alarm.devcode }}
-
点位类型:{{ alarmInfo.wellTypeName }}
+
+ 点位类型:{{ alarmInfo.wellTypeName }} +
权属单位:{{ alarmInfo.deptName }}
详细地址:{{ alarmInfo.position }}
diff --git a/src/views/overview/components/mapSearchComp.vue b/src/views/overview/components/mapSearchComp.vue index 0500851..07895e4 100644 --- a/src/views/overview/components/mapSearchComp.vue +++ b/src/views/overview/components/mapSearchComp.vue @@ -7,7 +7,7 @@
- + 搜索 @@ -88,9 +88,16 @@ } }, methods: { + inputChange() { + if (this.keywords) { + this.search(true) + } else { + this.search(false) + } + }, // 点击搜索按钮 - search() { - this.$emit('search', this.keywords) + search(clear) { + this.$emit('search', this.keywords, clear) }, // 切换页码 changePage(val) { diff --git a/src/App.vue b/src/App.vue index d103696..dca0151 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ @@ -11,13 +12,8 @@ name: 'App', mounted() { this.windowResize(window.innerHeight, window.innerWidth) - this.initWebSocket() }, methods: { - initWebSocket() { - console.log('初始化websocket') - this.$store.dispatch('initWebSocket') - }, // 窗口变化 windowResize(height, width) { // 查找header高度 diff --git a/src/components/Amap/AMapContainer.vue b/src/components/Amap/AMapContainer.vue index 5b5057e..ed5eca1 100644 --- a/src/components/Amap/AMapContainer.vue +++ b/src/components/Amap/AMapContainer.vue @@ -61,6 +61,9 @@ } }, watch: { + center(val) { + this.setCenter() + }, baseLayer(val) { this.changeBaseLayer() } @@ -115,6 +118,10 @@ this.$message.error('地图加载失败:'+e) }) }, + setCenter(){ + console.log('setCenter') + this.map.setCenter(this.center) + }, changeBaseLayer() { const layers = this.map.getLayers() const type = this.baseLayer diff --git a/src/layout/components/AppHeader.vue b/src/layout/components/AppHeader.vue index 4c5e534..8f931d5 100644 --- a/src/layout/components/AppHeader.vue +++ b/src/layout/components/AppHeader.vue @@ -61,7 +61,18 @@ this.getSystems() } }, + mounted() { + this.initWebSocket() + }, methods: { + initWebSocket() { + // 当用户id时在加载websocket + if (this.$store.getters.id) { + console.log('初始化websocket') + const that = this + this.$store.dispatch('initWebSocket', that) + } + }, toggleSideBar() { this.$store.dispatch('ToggleSideBar') }, diff --git a/src/main.js b/src/main.js index 6d48f72..44f6174 100644 --- a/src/main.js +++ b/src/main.js @@ -47,9 +47,10 @@ import alarmAudio from '@/assets/audio/alarm.mp3' // 方法1:注册播放音频事件到Vue实例上 -Vue.prototype.playAudio = (audioName) => { +Vue.prototype.playAudio = () => { const audio = document.getElementById('eventAudio') audio.setAttribute('src', alarmAudio) + audio.loop = 'loop' if (audio.paused === true) { // 判断音频是否暂停,暂停重新加载音频元素 audio.load() } else { // 否则 @@ -69,6 +70,12 @@ }, 10) } } +Vue.prototype.pauseAudio = () => { + const audio = document.getElementById('eventAudio') + if (!audio.paused) { // 判断音频是否暂停,暂停重新加载音频元素 + audio.pause() + } +} // 注册全局自定义布局组件 import NormalTable from '@/components/NormalTable/index' import SearchArea from '@/components/SearchArea/SearchArea' diff --git a/src/store/modules/websocket.js b/src/store/modules/websocket.js index 0da8a05..6ed57cf 100644 --- a/src/store/modules/websocket.js +++ b/src/store/modules/websocket.js @@ -24,7 +24,7 @@ actions: { // 连接websocket - initWebSocket({ commit }, wsUrl) { + initWebSocket({ commit }, that) { if (typeof (WebSocket) === 'undefined') { Notification({ title: '提示', @@ -33,6 +33,7 @@ duration: 0 }) } else { + // that.playAudio() // 测试音效 // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改 // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送 const socketUrl = getWsUrl() + user.state.id @@ -56,11 +57,15 @@ // 这里也可以把返回信息加入到message中显示 message: data.message, type: 'warning', + duration: 0, onClick: () => { router.push({ path: '/overview', query: { refresh: true } }) + }, + onClose: () => { + that.pauseAudio() } }) setTimeout(function() { diff --git a/src/views/dashboard/components/WellCountByDept.vue b/src/views/dashboard/components/WellCountByDept.vue index 8c077ef..1f85c5c 100644 --- a/src/views/dashboard/components/WellCountByDept.vue +++ b/src/views/dashboard/components/WellCountByDept.vue @@ -46,7 +46,6 @@ methods: { fetchData() { wellStaticByDept().then(response => { - debugger this.chartData.rows = response.data }) } diff --git a/src/views/overview/components/infoWindowAlarm.vue b/src/views/overview/components/infoWindowAlarm.vue index 42b11f9..641a296 100644 --- a/src/views/overview/components/infoWindowAlarm.vue +++ b/src/views/overview/components/infoWindowAlarm.vue @@ -15,7 +15,9 @@
设备编号:{{ alarm.devcode }}
-
点位类型:{{ alarmInfo.wellTypeName }}
+
+ 点位类型:{{ alarmInfo.wellTypeName }} +
权属单位:{{ alarmInfo.deptName }}
详细地址:{{ alarmInfo.position }}
diff --git a/src/views/overview/components/mapSearchComp.vue b/src/views/overview/components/mapSearchComp.vue index 0500851..07895e4 100644 --- a/src/views/overview/components/mapSearchComp.vue +++ b/src/views/overview/components/mapSearchComp.vue @@ -7,7 +7,7 @@
- + 搜索 @@ -88,9 +88,16 @@ } }, methods: { + inputChange() { + if (this.keywords) { + this.search(true) + } else { + this.search(false) + } + }, // 点击搜索按钮 - search() { - this.$emit('search', this.keywords) + search(clear) { + this.$emit('search', this.keywords, clear) }, // 切换页码 changePage(val) { diff --git a/src/views/overview/overviewAmap.vue b/src/views/overview/overviewAmap.vue index 1da6eb4..f476759 100644 --- a/src/views/overview/overviewAmap.vue +++ b/src/views/overview/overviewAmap.vue @@ -117,7 +117,12 @@ }, watch: { needRefresh(val) { // 需要刷新报警 - if (val) this.refreshAlarm() + if (val) { + if (this.baseConfig.refreshType == 'websocket') { + this.playAudio() + } + this.refreshAlarm() + } }, 'menus.locationWindowShow'(val) { // 打开弹窗设置默认中心,关闭弹窗清空屏幕 if (val) { @@ -215,8 +220,10 @@ this.resultList = [] }, // 数据查询 - search(keywords) { - if (keywords === '') { + search(args) { + const keywords = args[0] + const clear = args[1] + if (keywords === '' && !clear) { this.$message.warning('搜索条件不能为空') } else { this.resultList = this.markers.filter(item => { @@ -236,7 +243,7 @@ // 点击搜索结果项居中,弹窗 searchItemClick(marker) { this.center = marker.lnglat - this.openInfoWindow(marker.wellId, marker.lnglat, this.searchResultOffset[1]) + this.openInfoWindow(marker.id, marker.lnglat, this.searchResultOffset[1]) }, // 过滤海量点,给markers赋visible值 filterMassMarker(listQuery, showMessage = false) { @@ -475,16 +482,18 @@ if (response.code === 200) { this.loading = false // 判断最新报警时间,若和旧的最新时间不一样,则判断是否需要产生声音 - if (response.data.length > 0) { - const latestTime = response.data[0].alarmTime - console.log(latestTime, 'vs', this.latestAlarmTime) - if (this.latestAlarmTime < latestTime) { - // 如果不是初次加载并且声音开关开启状态 - if ((!this.alarmFirstAmount) && this.baseConfig.alarmSound) { - console.log('playAudio') - this.playAudio() + if (this.baseConfig.refreshType != 'websocket') { + if (response.data.length > 0) { + const latestTime = response.data[0].alarmTime + console.log(latestTime, 'vs', this.latestAlarmTime) + if (this.latestAlarmTime < latestTime) { + // 如果不是初次加载并且声音开关开启状态 + if ((!this.alarmFirstAmount) && this.baseConfig.alarmSound) { + console.log('playAudio') + this.playAudio() + } + this.latestAlarmTime = latestTime } - this.latestAlarmTime = latestTime } } this.alarmFirstAmount = false // 初次加载完毕 @@ -587,6 +596,7 @@ if (this.zoom < 16) { this.zoom = 16 } + this.center = alarmWell.coordinates this.openAlarmWindow(alarmWell.wellId, alarmWell.coordinates, true) } }