diff --git a/src/components/Apps/AssetTreeTable/index.vue b/src/components/Apps/AssetTreeTable/index.vue index 4ba02a04c..5164802a5 100644 --- a/src/components/Apps/AssetTreeTable/index.vue +++ b/src/components/Apps/AssetTreeTable/index.vue @@ -60,6 +60,7 @@ export default { const showAssets = this.treeSetting?.showAssets || this.showAssets const treeUrlQuery = this.setTreeUrlQuery() const assetTreeUrl = `${this.treeUrl}?assets=${showAssets ? '1' : '0'}&${treeUrlQuery}` + const vm = this return { treeTabConfig: { @@ -81,7 +82,13 @@ export default { nodeUrl: this.nodeUrl, treeUrl: assetTreeUrl, callback: { - onSelected: (event, treeNode) => this.getAssetsUrl(treeNode) + onSelected: (event, treeNode) => this.getAssetsUrl(treeNode), + beforeRefresh: () => { + const query = { ...this.$route.query, node_id: '', asset_id: '' } + setTimeout(() => { + vm.$router.replace({ query: query }) + }, 100) + } }, ...this.treeSetting } diff --git a/src/components/Tree/DataZTree/components/ZTree/index.vue b/src/components/Tree/DataZTree/components/ZTree/index.vue index dfaadc653..34665402d 100644 --- a/src/components/Tree/DataZTree/components/ZTree/index.vue +++ b/src/components/Tree/DataZTree/components/ZTree/index.vue @@ -167,6 +167,9 @@ export default { }, async refresh() { this.treeSearchValue = '' + if (this.treeSetting?.callback?.beforeRefresh) { + this.treeSetting.callback.beforeRefresh() + } if (this.treeSetting?.callback?.refresh) { await this.treeSetting.callback.refresh() } diff --git a/src/views/assets/Asset/AssetList/components/BaseList.vue b/src/views/assets/Asset/AssetList/components/BaseList.vue index e6f4029c7..b9ebaf925 100644 --- a/src/views/assets/Asset/AssetList/components/BaseList.vue +++ b/src/views/assets/Asset/AssetList/components/BaseList.vue @@ -97,8 +97,13 @@ export default { route.query.type = row.type.value route.query.category = row.type.category } - const { href } = vm.$router.resolve(route) - window.open(href, '_blank') + const createInNewPage = this.$route.query.node_id && routeAction === 'Create' + if (createInNewPage) { + const { href } = vm.$router.resolve(route) + window.open(href, '_blank') + } else { + this.$router.push(route) + } } const extraQuery = this.$route.params?.extraQuery || {} return { diff --git a/src/views/assets/Asset/AssetList/components/PlatformDialog.vue b/src/views/assets/Asset/AssetList/components/PlatformDialog.vue index d2930ef0e..ac7457887 100644 --- a/src/views/assets/Asset/AssetList/components/PlatformDialog.vue +++ b/src/views/assets/Asset/AssetList/components/PlatformDialog.vue @@ -160,8 +160,12 @@ export default { } const router = { name: route, query } - const { href } = this.$router.resolve(router) - window.open(href, '_blank') + if (this.$route.query.node_id) { + const { href } = this.$router.resolve(router) + window.open(href, '_blank') + } else { + this.$router.push(router) + } } } } diff --git a/src/views/perms/AssetPermission/AssetPermissionList.vue b/src/views/perms/AssetPermission/AssetPermissionList.vue index 2440f970e..69b979bc0 100644 --- a/src/views/perms/AssetPermission/AssetPermissionList.vue +++ b/src/views/perms/AssetPermission/AssetPermissionList.vue @@ -157,11 +157,17 @@ export default { headerActions: { hasLabelSearch: true, hasBulkDelete: true, - createRoute() { - return { + onCreate: () => { + const route = { name: 'AssetPermissionCreate', query: this.$route.query } + if (vm.$route.query.node_id) { + const { href } = this.$router.resolve(route) + window.open(href, '_blank') + } else { + this.$router.push(route) + } }, handleImportClick: ({ selectedRows }) => { this.$eventBus.$emit('showImportDialog', { @@ -169,7 +175,6 @@ export default { url: '/api/v1/perms/asset-permissions/' }) }, - createInNewPage: true, searchConfig: { url: '', options: AssetPermissionListPageSearchConfigOptions