From d0baa39ba7edcc158aed9ff07920ed7e3f7bfc84 Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Tue, 20 Feb 2024 18:24:59 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=96=B0=E5=A2=9E=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E7=B1=BB=E5=9E=8B=E6=A3=80=E6=9F=A5=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/genDatabaseType.ts | 3 ++ .../genDataBaseType/GenDataBaseTypeModal.vue | 31 ++++++++++++++++--- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/api/platform/system/controller/genDatabaseType.ts b/src/api/platform/system/controller/genDatabaseType.ts index 8270a83..5ea3705 100644 --- a/src/api/platform/system/controller/genDatabaseType.ts +++ b/src/api/platform/system/controller/genDatabaseType.ts @@ -3,6 +3,7 @@ import { defHttp } from '/@/utils/http/axios'; enum Api { list = '/system_proxy/system/devtools/genDatabaseType/list', + selectListByType = '/system_proxy/system/devtools/genDatabaseType/selectListByType', add = '/system_proxy/system/devtools/genDatabaseType/save', get = '/system_proxy/system/devtools/genDatabaseType', edit = '/system_proxy/system/devtools/genDatabaseType/update', @@ -12,6 +13,8 @@ enum Api { export const listGenDatabaseType = (params?: Partial) => defHttp.get({ url: Api.list, params }, { isReturnResultResponse: true }); +export const selectListByType = (type: string) => defHttp.get({ url: `${Api.selectListByType}/${type}` }); + export const addGenDatabaseType = (params: Partial) => defHttp.post({ url: Api.add, data: params }); export const editGenDatabaseType = (params: Partial) => defHttp.put({ url: Api.edit, data: params }); diff --git a/src/views/system/devtools/genDataBaseType/GenDataBaseTypeModal.vue b/src/views/system/devtools/genDataBaseType/GenDataBaseTypeModal.vue index bbe75de..3288e1f 100644 --- a/src/views/system/devtools/genDataBaseType/GenDataBaseTypeModal.vue +++ b/src/views/system/devtools/genDataBaseType/GenDataBaseTypeModal.vue @@ -45,12 +45,13 @@ import { reactive, computed } from 'vue'; import { BasicForm, useForm } from '/@/components/Form/index'; import { formSchema, genTableFieldTypeReloadColumns } from './genDataBaseType.data'; - import { saveAndGenTableFieldType, getGenDatabaseType } from '/@/api/platform/system/controller/genDatabaseType'; + import { saveAndGenTableFieldType, getGenDatabaseType, selectListByType } from '/@/api/platform/system/controller/genDatabaseType'; import { BasicModal, ModalProps, useModal, useModalInner } from '/@/components/Modal'; import { BasicTable, TableAction, useTable } from '/@/components/Table'; import GenTableFieldTypeModal from './GenTableFieldTypeModal.vue'; import { useMessage } from '/@/hooks/web/useMessage'; import { isNil } from 'lodash-es'; + import { isEmpty } from '/@/utils/is'; /** 通用变量统一声明区域 */ interface WindowState { @@ -66,7 +67,7 @@ const emit = defineEmits(['success', 'register']); const [genTableFieldTypeRegisterModal, { openModal: genTableFieldTypeOpenModal }] = useModal(); const getDataSource = computed(() => state.dataSource.filter(item => item._action != 'del')); - const [registerForm, { resetFields, setFieldsValue, validate, clearValidate, setProps }] = useForm({ + const [registerForm, { resetFields, setFieldsValue, validate, clearValidate, setProps, updateSchema }] = useForm({ labelWidth: 100, schemas: formSchema, showActionButtonGroup: false, @@ -95,12 +96,34 @@ // 处理清除脏数据 await resetFields(); await clearValidate(); - await setProps({ disabled: false }); // 处理设置数据 state.tag = data._tag; state.dataSource = []; const id = data.record?.id; + const type = data.record?.type; const props: Partial = { confirmLoading: false, showOkBtn: true }; + await updateSchema({ + field: 'type', + componentProps: { + disabled: state.tag != 'add' + }, + rules: [ + { + required: true, + message: '请选择数据库类型' + }, + { + validator: async (rule, value) => { + if (!isEmpty(value)) { + const result = await selectListByType(value); + const list = result.filter(item => item.type != type); + if(list?.length > 0) return Promise.reject('该数据库类型已存在'); + } + return Promise.resolve(); + }, + validateTrigger: 'blur' + }] + }); // 采用tag标签区分操作 switch (state.tag) { case 'add': @@ -108,7 +131,6 @@ break; case 'view': props.title = '查看数据库字段类型'; - await setProps({ disabled: true }); props.showOkBtn = false; const genDatabaseTypeView = await getGenDatabaseType(id); state.dataSource = genDatabaseTypeView?.genTableFieldTypeList || []; @@ -116,7 +138,6 @@ break; case 'edit': props.title = '编辑数据库字段类型'; - await setProps({ disabled: true }); const genDatabaseTypeEdit = await getGenDatabaseType(id); state.dataSource = genDatabaseTypeEdit?.genTableFieldTypeList || []; await setFieldsValue(genDatabaseTypeEdit);