fix: 解决refreshTime非off,改为off下钻后返回仍为下钻前状态的问题

This commit is contained in:
刘洪洪
2022-10-12 18:20:08 +08:00
parent b1e247c36c
commit e0c42c8b4c
2 changed files with 35 additions and 4 deletions

View File

@@ -23,8 +23,8 @@
<script>
// import { ref } from 'vue'
import { overwriteUrl, urlParamsHandler } from '@/utils/tools'
import { dateFormatToUTC } from '@/utils/date-util'
import { useRoute } from 'vue-router'
import { useStore } from 'vuex'
export default {
name: 'TimeRefresh',
@@ -54,6 +54,7 @@ export default {
},
setup (props, ctx) {
const { query } = useRoute()
const store = useStore()
const refreshArr = [
{ value: -1, label: 'off' },
{ value: 30, label: '30s' },
@@ -64,8 +65,25 @@ export default {
]
let refreshObj = {}
if (query.refreshTime !== undefined) {
refreshObj = refreshArr.find(item => item.value === Number(query.refreshTime))
// 是否关闭refreshTime标志
// 即时间选择30s后再off下钻再返回时地址栏会带着refreshTime
// 此时通过refreshFlag判断已经off再清除地址栏地址栏会带着refreshTime
const refreshFlag = store.state.panel.refreshFlag
const refreshTime = store.state.panel.refreshTime
if (refreshFlag) {
if (query.refreshTime !== undefined) {
refreshObj = refreshArr.find(item => item.value === Number(query.refreshTime))
} else if (refreshTime !== null) {
// 此处是避免下钻后浏览器返回获取不到url的refreshTime情况
refreshObj = refreshArr.find(item => item.value === refreshTime)
}
} else {
// 浏览器回退时清除掉地址栏的refreshTime
const newQuery = JSON.parse(JSON.stringify(query))
delete newQuery.refreshTime
const newUrl = urlParamsHandler(window.location.href, query, newQuery, 'clean')
overwriteUrl(newUrl)
}
return {
@@ -90,6 +108,7 @@ export default {
refreshTime: val.value
}
this.reloadUrl(dateParam)
this.$store.commit('setRefreshTime', val.value)
// 设置定时器
this.intervalTimer = setInterval(() => {
@@ -109,7 +128,11 @@ export default {
const routeQuery = this.$route.query
delete routeQuery.refreshTime
this.reloadUrl(routeQuery, 'cleanOldParams')
this.$store.commit('setRefreshTime', null)
this.$store.commit('setRefreshFlag', false)
}
console.log('查看此时的值=============================')
},
showRefreshList () {
this.dropdownShow = !this.dropdownShow