fixed: Fixed an issue with asset refresh when clicked

This commit is contained in:
zhaojisen
2024-07-18 12:33:28 +08:00
parent b7d9031889
commit c4a1eb6938
2 changed files with 52 additions and 23 deletions

View File

@@ -140,12 +140,14 @@ export default {
methods: {
setTreeUrlQuery() {
let str = ''
for (const key in this.treeUrlQuery) {
str += `${key}=${this.treeUrlQuery[key]}&`
}
str = str.substr(0, str.length - 1)
if (Object.keys(this.treeUrlQuery).length > 0) {
for (const key in this.treeUrlQuery) {
str += `${key}=${this.treeUrlQuery[key]}&`
}
str = str.substr(0, str.length - 1)
return str
return str
}
},
decorateRMenu() {
const show_current_asset = this.$cookie.get('show_current_asset') || '0'
@@ -159,28 +161,51 @@ export default {
},
getAssetsUrl(treeNode) {
let url = this.treeSetting?.url || this.url
/*
由于需要设置两个 url 然后通过 $set 设置 tableConfig 的 url 的发送请求,就会出现先后问题
导致了当一个请求回来后 tick 更新但是较慢的请求回来的数据视图没有更新的问题
*/
if (treeNode.meta.type === 'node') {
const nodeId = treeNode.meta.data.id
url = setUrlParam(url, 'node_id', nodeId)
url = setUrlParam(url, 'asset_id', '')
setTimeout(() => {
url = setUrlParam(url, 'node_id', nodeId)
})
setTimeout(() => {
url = setUrlParam(url, 'asset_id', '')
})
} else if (treeNode.meta.type === 'asset') {
const assetId = treeNode.meta.data?.id || treeNode.id
url = setUrlParam(url, 'node_id', '')
url = setUrlParam(url, 'asset_id', assetId)
setTimeout(() => {
url = setUrlParam(url, 'node_id', '')
})
setTimeout(() => {
url = setUrlParam(url, 'asset_id', assetId)
})
} else if (treeNode.meta.type === 'category') {
url = setUrlParam(url, 'category', treeNode.meta.category)
} else if (treeNode.meta.type === 'type') {
url = setUrlParam(url, 'category', treeNode.meta.category)
url = setUrlParam(url, 'type', treeNode.meta._type)
setTimeout(() => {
url = setUrlParam(url, 'category', treeNode.meta.category)
})
setTimeout(() => {
url = setUrlParam(url, 'type', treeNode.meta._type)
})
} else if (treeNode.meta.type === 'platform') {
url = setUrlParam(url, 'platform', treeNode.id)
}
const query = this.setTreeUrlQuery()
url = query ? `${url}&${query}` : url
setTimeout(() => {
const query = this.setTreeUrlQuery()
url = query ? `${url}&${query}` : url
this.$set(this.tableConfig, 'url', url)
}, 300)
})
if (this.treeSetting.selectSyncToRoute !== false) {
setRouterQuery(this, url)

View File

@@ -120,16 +120,20 @@ export default {
autoComplete: true,
query: (query, cb) => {
const { hosts, nodes } = this.getSelectedNodesAndHosts()
this.$axios.post('/api/v1/ops/username-hints/', {
nodes: nodes,
assets: hosts,
query: query
}).then(data => {
const ns = data.map(item => {
return { value: item.username }
if (hosts.length > 0 && nodes.length > 0) {
this.$axios.post('/api/v1/ops/username-hints/', {
nodes: nodes,
assets: hosts,
query: query
}).then(data => {
const ns = data.map(item => {
return { value: item.username }
})
cb(ns)
})
cb(ns)
})
} else {
cb([])
}
}
},
options: [],