From fea6155306e8c89c7d8306019566f0d27a0d35f2 Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 20 Feb 2023 17:59:57 +0800 Subject: [PATCH 1/5] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=20account=20task?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/AutoDataTable/index.vue | 12 +++++++ .../AssetAccountDetail/Activity.vue | 36 ------------------- .../AssetAccountDetail/Detail.vue | 31 +++++++++++++--- .../Platform/PlatformDetail/Automation.vue | 5 ++- src/views/settings/Ldap/SyncSettingDialog.vue | 15 +++++--- src/views/tasks/TaskDetail/TaskHistory.vue | 8 +++-- 6 files changed, 58 insertions(+), 49 deletions(-) delete mode 100644 src/views/accounts/AssetAccount/AssetAccountDetail/Activity.vue diff --git a/src/components/AutoDataTable/index.vue b/src/components/AutoDataTable/index.vue index 26ea2428c..aee79a1c5 100644 --- a/src/components/AutoDataTable/index.vue +++ b/src/components/AutoDataTable/index.vue @@ -232,6 +232,16 @@ export default { } return col }, + addOrderingIfNeed(col) { + if (col.prop) { + const column = this.meta[col.prop] || {} + if (column.order) { + col.sortable = 'custom' + col['column-key'] = col.prop + } + } + return col + }, setDefaultFormatterIfNeed(col) { if (!col.formatter) { col.formatter = (row, column, cellValue) => { @@ -247,6 +257,7 @@ export default { } return col }, + generateColumn(name) { const colMeta = this.meta[name] || {} const customMeta = this.config.columnsMeta ? this.config.columnsMeta[name] : {} @@ -258,6 +269,7 @@ export default { col = Object.assign(col, customMeta) col = this.addHelpTipsIfNeed(col) col = this.addFilterIfNeed(col) + col = this.addOrderingIfNeed(col) return col }, generateTotalColumns() { diff --git a/src/views/accounts/AssetAccount/AssetAccountDetail/Activity.vue b/src/views/accounts/AssetAccount/AssetAccountDetail/Activity.vue deleted file mode 100644 index ce9ade964..000000000 --- a/src/views/accounts/AssetAccount/AssetAccountDetail/Activity.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - - - diff --git a/src/views/accounts/AssetAccount/AssetAccountDetail/Detail.vue b/src/views/accounts/AssetAccount/AssetAccountDetail/Detail.vue index 28a67de04..6440a82b9 100644 --- a/src/views/accounts/AssetAccount/AssetAccountDetail/Detail.vue +++ b/src/views/accounts/AssetAccount/AssetAccountDetail/Detail.vue @@ -1,10 +1,10 @@ @@ -78,8 +78,29 @@ export default { callbacks: Object.freeze({ click: () => { this.$axios.post( - `/api/v1/accounts/accounts/${this.object.id}/verify/`, - { action: 'test' } + `/api/v1/accounts/accounts/tasks/`, + { + action: 'test', + accounts: [this.object.id] + } + ).then(res => { + openTaskPage(res['task']) + }) + } + }) + }, + { + title: this.$t('assets.PushAccount'), + attrs: { + type: 'primary', + label: this.$t('assets.Push'), + disabled: !vm.$hasPerm('accounts.create_account') + }, + callbacks: Object.freeze({ + click: () => { + this.$axios.post( + `/api/v1/accounts/accounts/tasks/`, + { action: 'verify', accounts: [this.object.id] } ).then(res => { openTaskPage(res['task']) }) @@ -124,5 +145,5 @@ export default { } - diff --git a/src/views/assets/Platform/PlatformDetail/Automation.vue b/src/views/assets/Platform/PlatformDetail/Automation.vue index 7b28dfd6e..db1886eed 100644 --- a/src/views/assets/Platform/PlatformDetail/Automation.vue +++ b/src/views/assets/Platform/PlatformDetail/Automation.vue @@ -1,6 +1,6 @@ @@ -69,5 +69,8 @@ export default { diff --git a/src/views/settings/Ldap/SyncSettingDialog.vue b/src/views/settings/Ldap/SyncSettingDialog.vue index ab54e5b5a..f5a6c7c46 100644 --- a/src/views/settings/Ldap/SyncSettingDialog.vue +++ b/src/views/settings/Ldap/SyncSettingDialog.vue @@ -1,27 +1,27 @@ diff --git a/src/views/tasks/TaskDetail/TaskHistory.vue b/src/views/tasks/TaskDetail/TaskHistory.vue index 63a8b5096..27f4bbcb5 100644 --- a/src/views/tasks/TaskDetail/TaskHistory.vue +++ b/src/views/tasks/TaskDetail/TaskHistory.vue @@ -1,5 +1,5 @@ diff --git a/src/components/DetailCard/auto.vue b/src/components/DetailCard/auto.vue index 828aba1d4..d610cfb9b 100644 --- a/src/components/DetailCard/auto.vue +++ b/src/components/DetailCard/auto.vue @@ -29,6 +29,10 @@ export default { showUndefine: { type: Boolean, default: true + }, + formatters: { + type: Object, + default: () => ({}) } }, data() { @@ -85,7 +89,7 @@ export default { value = toSafeLocalDateStr(value) } else if (fieldMeta.type === 'labeled_choice') { value = value?.['label'] - } else if (fieldMeta.type === 'related_field') { + } else if (fieldMeta.type === 'related_field' || fieldMeta.type === 'nested object') { value = value['name'] } else if (fieldMeta.type === 'm2m_related_field') { value = value.map(item => item['name']).join(', ') @@ -103,7 +107,8 @@ export default { const item = { key: label, - value: value + value: value, + formatter: this.formatters[name] } this.items.push(item) } diff --git a/src/router/console/accounts.js b/src/router/console/accounts.js index feb27701c..ad4f79556 100644 --- a/src/router/console/accounts.js +++ b/src/router/console/accounts.js @@ -15,7 +15,7 @@ export default [ { path: '', name: 'AssetAccountList', - component: () => import('@/views/accounts/AssetAccount/AssetAccountList'), + component: () => import('@/views/accounts/Account/AccountList.vue'), meta: { title: i18n.t('route.AssetAccount'), app: 'accounts', @@ -24,7 +24,7 @@ export default [ }, { path: ':id', - component: () => import('@/views/accounts/AssetAccount/AssetAccountDetail/index.vue'), + component: () => import('@/views/accounts/Account/AccountDetail/index.vue'), name: 'AssetAccountDetail', meta: { title: i18n.t('route.AssetAccount') }, hidden: true diff --git a/src/views/accounts/AssetAccount/AssetAccountDetail/Detail.vue b/src/views/accounts/Account/AccountDetail/Detail.vue similarity index 91% rename from src/views/accounts/AssetAccount/AssetAccountDetail/Detail.vue rename to src/views/accounts/Account/AccountDetail/Detail.vue index c30884f9b..a1a4049e4 100644 --- a/src/views/accounts/AssetAccount/AssetAccountDetail/Detail.vue +++ b/src/views/accounts/Account/AccountDetail/Detail.vue @@ -1,7 +1,7 @@