From 986f7fd4711ae8bdd0e1b472da4ef0b2cef14b3b Mon Sep 17 00:00:00 2001 From: kennen <317052920@qq.com> Date: Mon, 20 Feb 2023 17:31:10 +0800 Subject: [PATCH 01/10] feat(DatabaseForm): add goToAuthorized function in schemaScope --- .../src/views/connections/DatabaseForm.vue | 15 ++++++++++++++- packages/shared/src/util.js | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/business/src/views/connections/DatabaseForm.vue b/packages/business/src/views/connections/DatabaseForm.vue index 5716f32b49..6377fc01a3 100644 --- a/packages/business/src/views/connections/DatabaseForm.vue +++ b/packages/business/src/views/connections/DatabaseForm.vue @@ -115,7 +115,7 @@ import i18n from '@tap/i18n' import { clusterApi, connectionsApi, databaseTypesApi, pdkApi, externalStorageApi, proxyApi } from '@tap/api' import { VIcon, GitBook } from '@tap/component' import { SchemaToForm } from '@tap/form' -import { checkConnectionName, isEmpty } from '@tap/shared' +import { checkConnectionName, isEmpty, submitForm } from '@tap/shared' import Test from './Test' import { getConnectionIcon } from './util' import DatabaseTypeDialog from './DatabaseTypeDialog' @@ -898,6 +898,19 @@ export default { } catch (e) { return [] } + }, + goToAuthorized: async params => { + this.schemaFormInstance?.validate().then(async () => { + const { __TAPDATA, ...__TAPDATA_CONFIG } = this.$refs.schemaToForm?.getFormValues?.() || {} + const data = Object.assign({}, params, { + url: location.href, + connectionConfig: { + __TAPDATA, + __TAPDATA_CONFIG + } + }) + submitForm(params?.target, data) + }) } } this.schemaData = result diff --git a/packages/shared/src/util.js b/packages/shared/src/util.js index 8319b4d00b..b5f3878706 100644 --- a/packages/shared/src/util.js +++ b/packages/shared/src/util.js @@ -216,6 +216,22 @@ export function openUrl(url, target = '_blank', name = '') { window.URL.revokeObjectURL(url) } +export function submitForm(url, obj = {}, method = 'post') { + const form = document.createElement('form') + form.action = url + form.method = method + for (let key in obj) { + const dom = document.createElement('input') + dom.setAttribute('type', 'hidden') + dom.setAttribute('name', key) + dom.value = typeof obj[key] === 'object' ? JSON.stringify(obj[key]) : obj[key] + form.appendChild(dom) + } + document.body.appendChild(form) + form.submit() + form.parentNode.removeChild(form) +} + // 下载Blob export function downloadBlob(res, name = '') { if (!res) { From 07590178dbb10eba54e2cb461373c3a94dc1929a Mon Sep 17 00:00:00 2001 From: kennen <317052920@qq.com> Date: Mon, 20 Feb 2023 17:37:47 +0800 Subject: [PATCH 02/10] feat(DatabaseForm): setValues when route.query have connectionConfig --- .../business/src/views/connections/DatabaseForm.vue | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/business/src/views/connections/DatabaseForm.vue b/packages/business/src/views/connections/DatabaseForm.vue index 6377fc01a3..79d2ad3759 100644 --- a/packages/business/src/views/connections/DatabaseForm.vue +++ b/packages/business/src/views/connections/DatabaseForm.vue @@ -772,6 +772,18 @@ export default { delete result.properties.START.properties.__TAPDATA.properties.name } + const { connectionConfig } = this.$route.query || {} + if (connectionConfig) { + const { __TAPDATA, __TAPDATA_CONFIG = {} } = JSON.parse(connectionConfig) || {} + Object.assign(this.model, __TAPDATA, { + config: __TAPDATA_CONFIG + }) + this.schemaFormInstance.setValues({ + __TAPDATA, + ...__TAPDATA_CONFIG + }) + } + this.schemaScope = { isEdit: !!id, useAsyncDataSource: (service, fieldName = 'dataSource', ...serviceParams) => { From b7c5a058a0ca8cf5f061e79ce71e771c3020e6d0 Mon Sep 17 00:00:00 2001 From: kennen <317052920@qq.com> Date: Mon, 20 Feb 2023 17:41:24 +0800 Subject: [PATCH 03/10] feat(DatabaseForm): setValues when route.query have connectionConfig --- packages/business/src/views/connections/DatabaseForm.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/business/src/views/connections/DatabaseForm.vue b/packages/business/src/views/connections/DatabaseForm.vue index 79d2ad3759..1d0ad2b14f 100644 --- a/packages/business/src/views/connections/DatabaseForm.vue +++ b/packages/business/src/views/connections/DatabaseForm.vue @@ -774,13 +774,14 @@ export default { const { connectionConfig } = this.$route.query || {} if (connectionConfig) { - const { __TAPDATA, __TAPDATA_CONFIG = {} } = JSON.parse(connectionConfig) || {} + const { __TAPDATA, __TAPDATA_CONFIG = {}, ...trace } = JSON.parse(connectionConfig) || {} Object.assign(this.model, __TAPDATA, { config: __TAPDATA_CONFIG }) this.schemaFormInstance.setValues({ __TAPDATA, - ...__TAPDATA_CONFIG + ...__TAPDATA_CONFIG, + ...trace }) } From 875c61ca926bbac2b428e2467b638bfd9c3adb5a Mon Sep 17 00:00:00 2001 From: kennen <317052920@qq.com> Date: Mon, 20 Feb 2023 17:46:34 +0800 Subject: [PATCH 04/10] feat(DatabaseForm): add trace --- .../business/src/views/connections/DatabaseForm.vue | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/business/src/views/connections/DatabaseForm.vue b/packages/business/src/views/connections/DatabaseForm.vue index 1d0ad2b14f..ad6c9e6f9a 100644 --- a/packages/business/src/views/connections/DatabaseForm.vue +++ b/packages/business/src/views/connections/DatabaseForm.vue @@ -775,9 +775,14 @@ export default { const { connectionConfig } = this.$route.query || {} if (connectionConfig) { const { __TAPDATA, __TAPDATA_CONFIG = {}, ...trace } = JSON.parse(connectionConfig) || {} - Object.assign(this.model, __TAPDATA, { - config: __TAPDATA_CONFIG - }) + Object.assign( + this.model, + __TAPDATA, + { + config: __TAPDATA_CONFIG + }, + trace + ) this.schemaFormInstance.setValues({ __TAPDATA, ...__TAPDATA_CONFIG, From 1b3d2e4930d5fc3516c821ce33a354d7d6a3b6a7 Mon Sep 17 00:00:00 2001 From: kennen <317052920@qq.com> Date: Mon, 20 Feb 2023 19:32:20 +0800 Subject: [PATCH 05/10] feat(DatabaseForm): get current url in goToAuthorized function --- .../business/src/views/connections/DatabaseForm.vue | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/business/src/views/connections/DatabaseForm.vue b/packages/business/src/views/connections/DatabaseForm.vue index ad6c9e6f9a..5284b73db2 100644 --- a/packages/business/src/views/connections/DatabaseForm.vue +++ b/packages/business/src/views/connections/DatabaseForm.vue @@ -110,6 +110,7 @@