From 790e2315e20fd0561bd316ec6c5e2559751e04ae Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 18 Aug 2021 17:05:39 +0800 Subject: [PATCH 1/5] =?UTF-8?q?perf:=20=E4=BF=AE=E5=A4=8Dapp=20=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E8=AF=A6=E6=83=85=E4=B8=AD=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/GenericDetailPage/index.vue | 8 +++++-- .../ApplicationPermissionDetail/index.vue | 21 +++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/layout/components/GenericDetailPage/index.vue b/src/layout/components/GenericDetailPage/index.vue index 13627c204..d215d3f6f 100644 --- a/src/layout/components/GenericDetailPage/index.vue +++ b/src/layout/components/GenericDetailPage/index.vue @@ -175,8 +175,12 @@ export default { }, defaultUpdate() { const id = this.$route.params.id - const routeName = this.validActions.updateRoute - this.$router.push({ name: routeName, params: { id: id }}) + let route = this.validActions.updateRoute + if (typeof route === 'string') { + route = { name: route, params: {}} + } + route.params.id = id + this.$router.push(route) }, getObject() { const url = this.validActions.detailApiUrl diff --git a/src/views/perms/ApplicationPermission/ApplicationPermissionDetail/index.vue b/src/views/perms/ApplicationPermission/ApplicationPermissionDetail/index.vue index 966b9812c..48ffde85f 100644 --- a/src/views/perms/ApplicationPermission/ApplicationPermissionDetail/index.vue +++ b/src/views/perms/ApplicationPermission/ApplicationPermissionDetail/index.vue @@ -1,7 +1,7 @@ @@ -22,7 +22,7 @@ export default { }, data() { return { - RemoteAppPermission: {}, + app: { type: '', category: '', id: '' }, config: { activeMenu: 'ApplicationPermissionDetail', submenu: [ @@ -41,7 +41,20 @@ export default { ], actions: { detailApiUrl: `/api/v1/perms/application-permissions/${this.$route.params.id}/`, - deleteApiUrl: `/api/v1/perms/application-permissions/${this.$route.params.id}/` + deleteApiUrl: `/api/v1/perms/application-permissions/${this.$route.params.id}/`, + updateCallback: () => { + const route = { + name: 'ApplicationPermissionUpdate', + query: { + type: this.app.type, + category: this.app.category + }, + params: { + id: this.app.id + } + } + this.$router.push(route) + } } } } From a18507f9c614c194b808fee09c081ce7e0a044b5 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 19 Aug 2021 14:54:39 +0800 Subject: [PATCH 2/5] =?UTF-8?q?perf:=20=E4=BF=AE=E5=A4=8D=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E5=AF=BC=E5=87=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit perf: 优化 --- .../ListTable/TableAction/ExportDialog.vue | 14 ++++---- src/components/ListTable/index.vue | 17 ++++++++-- src/components/TreeTable/index.vue | 6 ++-- src/views/sessions/CommandList.vue | 34 +++++++++++++++++-- 4 files changed, 56 insertions(+), 15 deletions(-) diff --git a/src/components/ListTable/TableAction/ExportDialog.vue b/src/components/ListTable/TableAction/ExportDialog.vue index fe058b05e..5babaa8ba 100644 --- a/src/components/ListTable/TableAction/ExportDialog.vue +++ b/src/components/ListTable/TableAction/ExportDialog.vue @@ -60,8 +60,8 @@ export default { }, performExport: { type: Function, - default(selectedRows, exportOptions, query) { - return this.defaultPerformExport(selectedRows, exportOptions, query) + default(selectedRows, exportOptions, query, exportType) { + return this.defaultPerformExport(selectedRows, exportOptions, query, exportType) } }, canExportAll: { @@ -143,7 +143,7 @@ export default { mounted() { this.$eventBus.$on('showExportDialog', ({ selectedRows, url, name }) => { // Todo: 没有时间了,只能先这么处理了 - if (url === this.url || url.indexOf('account') > -1) { + if (url === this.url || url.indexOf(this.url) > -1 || url.indexOf('account') > -1) { this.showExportDialog() } }) @@ -167,7 +167,7 @@ export default { a.click() window.URL.revokeObjectURL(url) }, - async defaultPerformExport(selectRows, exportOption, q) { + async defaultPerformExport(selectRows, exportOption, q, exportTypeOption) { const url = (process.env.VUE_APP_ENV === 'production') ? (`${this.url}`) : (`${process.env.VUE_APP_BASE_API}${this.url}`) const query = Object.assign({}, q) if (exportOption === 'selected') { @@ -179,7 +179,7 @@ export default { const spm = await createSourceIdCache(resources) query['spm'] = spm.spm } - query['format'] = this.exportTypeOption + query['format'] = exportTypeOption const queryStr = (url.indexOf('?') > -1 ? '&' : '?') + queryUtil.stringify(query, '=', '&') @@ -187,11 +187,11 @@ export default { }, async handleExport() { const listTableRef = this.$parent.$parent.$parent.$parent - const query = listTableRef.dataTable.getQuery() + const query = listTableRef['dataTable'].getQuery() delete query['limit'] delete query['offset'] await this.beforeExport() - return this.performExport(this.selectedRows, this.exportOption, query) + return this.performExport(this.selectedRows, this.exportOption, query, this.exportTypeOption) }, async handleExportConfirm() { await this.handleExport() diff --git a/src/components/ListTable/index.vue b/src/components/ListTable/index.vue index 324899079..5c47462e9 100644 --- a/src/components/ListTable/index.vue +++ b/src/components/ListTable/index.vue @@ -1,8 +1,21 @@ diff --git a/src/components/TreeTable/index.vue b/src/components/TreeTable/index.vue index 974b0bf83..f72112814 100644 --- a/src/components/TreeTable/index.vue +++ b/src/components/TreeTable/index.vue @@ -77,9 +77,9 @@ export default { } }, methods: { - handleUrlChange(_url) { - this.$set(this.iTableConfig, 'url', _url) - this.$emit('urlChange', _url) + handleUrlChange(url) { + this.$set(this.iTableConfig, 'url', url) + this.$emit('urlChange', url) this.forceRerender() }, forceRerender() { diff --git a/src/views/sessions/CommandList.vue b/src/views/sessions/CommandList.vue index 277627518..7a61156e0 100644 --- a/src/views/sessions/CommandList.vue +++ b/src/views/sessions/CommandList.vue @@ -21,6 +21,7 @@ import { DetailFormatter } from '@/components/TableFormatters' import isFalsey from '@/components/DataTable/compenents/el-data-table/utils/is-falsey' import deepmerge from 'deepmerge' import * as queryUtil from '@/components/DataTable/compenents/el-data-table/utils/query' +import { createSourceIdCache } from '@/api/common' export default { components: { @@ -66,7 +67,7 @@ export default { label: this.$t('sessions.riskLevel'), width: '105px', formatter: (row, col, cellValue) => { - const display = row.risk_level_display + const display = row['risk_level_display'] if (cellValue === 0) { return display } else { @@ -117,6 +118,33 @@ export default { hasImport: false, hasDatePicker: true, canExportSelected: true, + exportOptions: { + // Todo: 优化这里,和抽象组件重复了 + performExport: async(selectRows, exportOption, q, exportTypeOption) => { + let url = this.tableConfig.url + url = (process.env.VUE_APP_ENV === 'production') ? (`${url}`) : (`${process.env.VUE_APP_BASE_API}${url}`) + const query = Object.assign({}, q) + if (exportOption === 'selected') { + const resources = [] + const data = selectRows + for (let index = 0; index < data.length; index++) { + resources.push(data[index].id) + } + const spm = await createSourceIdCache(resources) + query['spm'] = spm.spm + } + query['format'] = exportTypeOption + const queryStr = + (url.indexOf('?') > -1 ? '&' : '?') + + queryUtil.stringify(query, '=', '&') + url = url + queryStr + this.$log.debug('Export url: ', this.url, '=>', url) + const a = document.createElement('a') + a.href = url + a.click() + window.URL.revokeObjectURL(url + queryStr) + } + }, datePicker: { dateStart: dateFrom, dateEnd: dateTo @@ -138,7 +166,7 @@ export default { } }, callback: { - onSelected: function(event, treeNode) { + onSelected: (event, treeNode) => { // 禁止点击根节点 if (treeNode.id === 'root') { return @@ -148,7 +176,7 @@ export default { return } this.tableConfig.url = `/api/v1/terminal/commands/?command_storage_id=${treeNode.id}` - }.bind(this) + } } } } From 1cc395c22d8acb77647afe4e00c2d7a2a3e815ad Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 19 Aug 2021 15:35:09 +0800 Subject: [PATCH 3/5] =?UTF-8?q?perf:=20=E4=BF=AE=E5=A4=8D=20url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ListTable/index.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/ListTable/index.vue b/src/components/ListTable/index.vue index 5c47462e9..87a3ebaf7 100644 --- a/src/components/ListTable/index.vue +++ b/src/components/ListTable/index.vue @@ -63,6 +63,9 @@ export default { this.$log.debug('Header actions', this.headerActions) this.$log.debug('ListTable: iTableConfig change', config) return config + }, + tableUrl() { + return this.iTableConfig.url } }, watch: { From 07151b2bfee72991f90197ffb857e4b3ef6aac25 Mon Sep 17 00:00:00 2001 From: xinwen Date: Thu, 19 Aug 2021 15:33:11 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E5=91=BD=E4=BB=A4=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=80=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/sessions/CommandList.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/sessions/CommandList.vue b/src/views/sessions/CommandList.vue index 7a61156e0..d96c6c1ed 100644 --- a/src/views/sessions/CommandList.vue +++ b/src/views/sessions/CommandList.vue @@ -175,7 +175,7 @@ export default { this.$message.error(this.$t('sessions.EsDisabled')) return } - this.tableConfig.url = `/api/v1/terminal/commands/?command_storage_id=${treeNode.id}` + this.tableConfig.url = `/api/v1/terminal/commands/?command_storage_id=${treeNode.id}&order=-timestamp` } } } From 78174b23fdb673f8a70cdbba4181479426af7695 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 19 Aug 2021 16:02:12 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dapp=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=9B=B4=E6=96=B0=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/AppAccountListTable/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AppAccountListTable/index.vue b/src/components/AppAccountListTable/index.vue index f6aa0cd38..d9c7a19c1 100644 --- a/src/components/AppAccountListTable/index.vue +++ b/src/components/AppAccountListTable/index.vue @@ -57,7 +57,7 @@ export default { formatter: DetailFormatter, formatterArgs: { getRoute({ row }) { - switch (row['app_category']) { + switch (row['category']) { case 'remote_app': return { name: 'RemoteAppDetail',