diff --git a/packages/nc-gui/components/dlg/TableCreate.vue b/packages/nc-gui/components/dlg/TableCreate.vue index 875364fa42..7c36fa06e7 100644 --- a/packages/nc-gui/components/dlg/TableCreate.vue +++ b/packages/nc-gui/components/dlg/TableCreate.vue @@ -32,13 +32,21 @@ const { table, createTable, generateUniqueTitle, tables, project } = useTable(as const useForm = Form.useForm -const validateDuplicateAlias = (v: string) => (tables.value || []).every((t) => t.title !== (v || '')) || 'Duplicate table alias' - const validators = computed(() => { return { title: [ validateTableName, - validateDuplicateAlias, + { + validator: (_: any, value: any) => { + // validate duplicate alias + return new Promise((resolve, reject) => { + if ((tables.value || []).some((t) => t.title === (value || ''))) { + return reject(new Error('Duplicate table alias')) + } + return resolve(true) + }) + }, + }, { validator: (rule: any, value: any) => { return new Promise((resolve, reject) => { @@ -62,13 +70,23 @@ const validators = computed(() => { table_name: [validateTableName], } }) -const { validateInfos } = useForm(table, validators) +const { validate, validateInfos } = useForm(table, validators) const systemColumnsCheckboxInfo = SYSTEM_COLUMNS.map((c, index) => ({ value: c, disabled: index === 0, })) +const _createTable = async () => { + try { + await validate() + } catch (e: any) { + e.errorFields.map((f: Record) => message.error(f.errors.join(','))) + if (e.errorFields.length) return + } + await createTable() +} + onMounted(() => { generateUniqueTitle() @@ -87,11 +105,11 @@ onMounted(() => {
- +
{{ $t('activity.createTable') }}