From c4a1eb6938827aa7c6d9a39eea5b3ade24f319e3 Mon Sep 17 00:00:00 2001 From: zhaojisen <1301338853@qq.com> Date: Thu, 18 Jul 2024 12:33:28 +0800 Subject: [PATCH] fixed: Fixed an issue with asset refresh when clicked --- src/components/Apps/AssetTreeTable/index.vue | 53 ++++++++++++++------ src/views/ops/Adhoc/QuickJob.vue | 22 ++++---- 2 files changed, 52 insertions(+), 23 deletions(-) diff --git a/src/components/Apps/AssetTreeTable/index.vue b/src/components/Apps/AssetTreeTable/index.vue index 16ad95325..2ee69756a 100644 --- a/src/components/Apps/AssetTreeTable/index.vue +++ b/src/components/Apps/AssetTreeTable/index.vue @@ -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) diff --git a/src/views/ops/Adhoc/QuickJob.vue b/src/views/ops/Adhoc/QuickJob.vue index ff2830e1b..d91876ecb 100644 --- a/src/views/ops/Adhoc/QuickJob.vue +++ b/src/views/ops/Adhoc/QuickJob.vue @@ -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: [],