From e309d7e0491815e4957eb9481e2b3aedd4684fb1 Mon Sep 17 00:00:00 2001
From: fit2bot <68588906+fit2bot@users.noreply.github.com>
Date: Tue, 8 Apr 2025 18:27:02 +0800
Subject: [PATCH] perf: Added cloud sync global released asset tab (#4929)

---
 Dockerfile                                    |  2 +-
 .../AccountDetail/TaskSyncAssetList.vue       | 19 +++++++++++++++++--
 src/views/assets/Cloud/index.vue              |  6 ++++++
 3 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index 5cf8c6f70..7b731df41 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM jumpserver/lina-base:20250327_104059 AS stage-build
+FROM jumpserver/lina-base:20250408_074136 AS stage-build
 
 ARG VERSION
 ENV VERSION=$VERSION
diff --git a/src/views/assets/Cloud/Account/AccountDetail/TaskSyncAssetList.vue b/src/views/assets/Cloud/Account/AccountDetail/TaskSyncAssetList.vue
index 4198ed3f1..3c8920c1b 100644
--- a/src/views/assets/Cloud/Account/AccountDetail/TaskSyncAssetList.vue
+++ b/src/views/assets/Cloud/Account/AccountDetail/TaskSyncAssetList.vue
@@ -41,7 +41,7 @@ export default {
         ]
       },
       tableConfig: {
-        url: `/api/v1/xpack/cloud/sync-instance-tasks/${this.object.task?.id}/instances/`,
+        url: '',
         hasSelection: false,
         columns: [
           'instance_id',
@@ -49,6 +49,10 @@ export default {
             prop: 'asset_ip',
             label: this.$t('IP')
           },
+          {
+            prop: 'asset_display',
+            label: this.$t('Asset')
+          },
           'region',
           {
             prop: 'status',
@@ -76,9 +80,20 @@ export default {
       }
     }
   },
+  computed: {
+    dynamicUrl() {
+      const baseUrl = '/api/v1/xpack/cloud/sync-instance-tasks/instances/'
+      return this.object ? `${baseUrl}?task_id=${this.object.task.id}` : baseUrl
+    }
+  },
+  mounted() {
+    this.tableConfig.url = this.dynamicUrl
+  },
   methods: {
     DeleteReleasedAssets() {
-      this.$axios.delete(`/api/v1/xpack/cloud/sync-instance-tasks/${this.object.task?.id}/released-assets/`).then(
+      const baseUrl = '/api/v1/xpack/cloud/sync-instance-tasks/released-assets/'
+      const url = this.object ? `${baseUrl}?task_id=${this.object.task.id}` : baseUrl
+      this.$axios.delete(url).then(
         res => {
           this.$message.success(this.$tc('DeleteSuccessMsg'))
           this.$refs.GenericListTable.$refs.ListTable.reloadTable()
diff --git a/src/views/assets/Cloud/index.vue b/src/views/assets/Cloud/index.vue
index d2008f667..21c3a7831 100644
--- a/src/views/assets/Cloud/index.vue
+++ b/src/views/assets/Cloud/index.vue
@@ -26,6 +26,12 @@ export default {
             name: 'StrategyList',
             hidden: () => !this.$hasPerm('xpack.view_strategy'),
             component: () => import('@/views/assets/Cloud/Strategy/StrategyList.vue')
+          },
+          {
+            title: this.$t('SyncInstanceTaskHistoryAssetList'),
+            name: 'TaskSyncAssetList',
+            hidden: () => !this.$hasLicense() || !this.$hasPerm('xpack.view_syncinstancedetail'),
+            component: () => import('@/views/assets/Cloud/Account/AccountDetail/TaskSyncAssetList.vue')
           }
         ],
         actions: {