From 0841ccacc08bddc0e944a52fee1f49bf70c4bd40 Mon Sep 17 00:00:00 2001 From: Amy0104 <97265214+Amy0104@users.noreply.github.com> Date: Sun, 27 Mar 2022 11:33:28 +0800 Subject: [PATCH] [Fix][UI Next][V1.0.0-Alpha] Fix the default items display error in SQOOP. (#9211) --- .../src/components/form/fields/radio.ts | 3 ++- .../src/components/form/get-elements-by-json.ts | 4 ++-- .../src/components/form/index.tsx | 2 +- .../components/node/fields/use-sqoop-datasource.ts | 4 ++-- .../components/node/fields/use-sqoop-source-type.ts | 11 ++++++++--- .../components/node/fields/use-sqoop-target-type.ts | 6 +++--- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/dolphinscheduler-ui-next/src/components/form/fields/radio.ts b/dolphinscheduler-ui-next/src/components/form/fields/radio.ts index 553680f0bd..260756f074 100644 --- a/dolphinscheduler-ui-next/src/components/form/fields/radio.ts +++ b/dolphinscheduler-ui-next/src/components/form/fields/radio.ts @@ -32,8 +32,9 @@ export function renderRadio(item: IJsonItem, fields: { [field: string]: any }) { return h( NRadioGroup, { + ...props, value: fields[field], - onUpdateValue: (value) => void (fields[field] = value) + onUpdateValue: (value: any) => void (fields[field] = value) }, () => h(NSpace, null, () => diff --git a/dolphinscheduler-ui-next/src/components/form/get-elements-by-json.ts b/dolphinscheduler-ui-next/src/components/form/get-elements-by-json.ts index b25ed5f22a..753bdb11e0 100644 --- a/dolphinscheduler-ui-next/src/components/form/get-elements-by-json.ts +++ b/dolphinscheduler-ui-next/src/components/form/get-elements-by-json.ts @@ -31,7 +31,7 @@ export default function getElementByJson( const elements: IFormItem[] = [] for (const item of json) { const mergedItem = isFunction(item) ? item() : item - const { name, value, field, validate, ...rest } = mergedItem + const { name, value, field, children, validate, ...rest } = mergedItem if (value || value === 0) { fields[field] = value initialValues[field] = value @@ -41,7 +41,7 @@ export default function getElementByJson( showLabel: !!name, ...omit(rest, ['type', 'props', 'options']), label: name, - path: field, + path: !children ? field : '', widget: () => getField(item, fields, rules), span: toRef(mergedItem, 'span') as Ref } diff --git a/dolphinscheduler-ui-next/src/components/form/index.tsx b/dolphinscheduler-ui-next/src/components/form/index.tsx index d4962df889..7d9707f642 100644 --- a/dolphinscheduler-ui-next/src/components/form/index.tsx +++ b/dolphinscheduler-ui-next/src/components/form/index.tsx @@ -60,7 +60,7 @@ const Form = defineComponent({ {...formItemProps} span={unref(span) === void 0 ? 24 : unref(span)} path={path} - key={path} + key={path || String(Date.now() + Math.random())} > {h(widget)} diff --git a/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-datasource.ts b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-datasource.ts index 9832b73e45..28095ed08a 100644 --- a/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-datasource.ts +++ b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-datasource.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { onMounted, ref, unref, Ref } from 'vue' +import { onMounted, ref, Ref } from 'vue' import { queryDataSourceList } from '@/service/modules/data-source' import { useI18n } from 'vue-i18n' import type { IJsonItem, IDataBase } from '../types' @@ -52,7 +52,7 @@ export function useDatasource( span: span, options: [{ label: 'MYSQL', value: 'MYSQL' }], validate: { - required: unref(span) !== 0 + required: true } }, { diff --git a/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-source-type.ts b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-source-type.ts index f742c77443..2f90a5ac3e 100644 --- a/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-source-type.ts +++ b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-source-type.ts @@ -33,7 +33,7 @@ export function useSourceType( const columnSpan = ref(0) const hiveSpan = ref(0) const hdfsSpan = ref(0) - const datasourceSpan = ref(0) + const datasourceSpan = ref(12) const resetSpan = () => { mysqlSpan.value = unCustomSpan.value && model.sourceType === 'MYSQL' ? 24 : 0 @@ -94,7 +94,7 @@ export function useSourceType( () => model.modelType, (modelType: ModelType) => { sourceTypes.value = getSourceTypesByModelType(modelType) - if (!sourceTypes.value.find((type) => model.sourceType === type.value)) { + if (!model.sourceType) { model.sourceType = sourceTypes.value[0].value } } @@ -149,7 +149,12 @@ export function useSourceType( label: 'SQL', value: '1' } - ] + ], + props: { + 'on-update:value': (value: '0' | '1') => { + model.targetType = value === '0' ? 'HIVE' : 'HDFS' + } + } }, { type: 'input', diff --git a/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-target-type.ts b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-target-type.ts index 114db2bb2a..5949def7ba 100644 --- a/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-target-type.ts +++ b/dolphinscheduler-ui-next/src/views/projects/task/components/node/fields/use-sqoop-target-type.ts @@ -26,8 +26,8 @@ export function useTargetType( unCustomSpan: Ref ): IJsonItem[] { const { t } = useI18n() - const hiveSpan = ref(24) - const hdfsSpan = ref(0) + const hiveSpan = ref(0) + const hdfsSpan = ref(24) const mysqlSpan = ref(0) const dataSourceSpan = ref(0) const updateSpan = ref(0) @@ -103,7 +103,7 @@ export function useTargetType( () => [model.sourceType, model.srcQueryType], ([sourceType, srcQueryType]) => { targetTypes.value = getTargetTypesBySourceType(sourceType, srcQueryType) - if (!targetTypes.value.find((type) => model.targetType === type.value)) { + if (!model.targetType) { model.targetType = targetTypes.value[0].value } }