Browse Source

chore: 新增数据库类型检查校验

master
wangxiang 1 year ago
parent
commit
d0baa39ba7
  1. 3
      src/api/platform/system/controller/genDatabaseType.ts
  2. 31
      src/views/system/devtools/genDataBaseType/GenDataBaseTypeModal.vue

3
src/api/platform/system/controller/genDatabaseType.ts

@ -3,6 +3,7 @@ import { defHttp } from '/@/utils/http/axios';
enum Api { enum Api {
list = '/system_proxy/system/devtools/genDatabaseType/list', list = '/system_proxy/system/devtools/genDatabaseType/list',
selectListByType = '/system_proxy/system/devtools/genDatabaseType/selectListByType',
add = '/system_proxy/system/devtools/genDatabaseType/save', add = '/system_proxy/system/devtools/genDatabaseType/save',
get = '/system_proxy/system/devtools/genDatabaseType', get = '/system_proxy/system/devtools/genDatabaseType',
edit = '/system_proxy/system/devtools/genDatabaseType/update', edit = '/system_proxy/system/devtools/genDatabaseType/update',
@ -12,6 +13,8 @@ enum Api {
export const listGenDatabaseType = (params?: Partial<GenDatabaseTypeParams>) => defHttp.get<GenDatabaseTypeResult>({ url: Api.list, params }, { isReturnResultResponse: true }); export const listGenDatabaseType = (params?: Partial<GenDatabaseTypeParams>) => defHttp.get<GenDatabaseTypeResult>({ url: Api.list, params }, { isReturnResultResponse: true });
export const selectListByType = (type: string) => defHttp.get<GenDatabaseType[]>({ url: `${Api.selectListByType}/${type}` });
export const addGenDatabaseType = (params: Partial<GenDatabaseType>) => defHttp.post({ url: Api.add, data: params }); export const addGenDatabaseType = (params: Partial<GenDatabaseType>) => defHttp.post({ url: Api.add, data: params });
export const editGenDatabaseType = (params: Partial<GenDatabaseType>) => defHttp.put({ url: Api.edit, data: params }); export const editGenDatabaseType = (params: Partial<GenDatabaseType>) => defHttp.put({ url: Api.edit, data: params });

31
src/views/system/devtools/genDataBaseType/GenDataBaseTypeModal.vue

@ -45,12 +45,13 @@
import { reactive, computed } from 'vue'; import { reactive, computed } from 'vue';
import { BasicForm, useForm } from '/@/components/Form/index'; import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema, genTableFieldTypeReloadColumns } from './genDataBaseType.data'; 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 { BasicModal, ModalProps, useModal, useModalInner } from '/@/components/Modal';
import { BasicTable, TableAction, useTable } from '/@/components/Table'; import { BasicTable, TableAction, useTable } from '/@/components/Table';
import GenTableFieldTypeModal from './GenTableFieldTypeModal.vue'; import GenTableFieldTypeModal from './GenTableFieldTypeModal.vue';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { isNil } from 'lodash-es'; import { isNil } from 'lodash-es';
import { isEmpty } from '/@/utils/is';
/** 通用变量统一声明区域 */ /** 通用变量统一声明区域 */
interface WindowState { interface WindowState {
@ -66,7 +67,7 @@
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const [genTableFieldTypeRegisterModal, { openModal: genTableFieldTypeOpenModal }] = useModal(); const [genTableFieldTypeRegisterModal, { openModal: genTableFieldTypeOpenModal }] = useModal();
const getDataSource = computed(() => state.dataSource.filter(item => item._action != 'del')); 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, labelWidth: 100,
schemas: formSchema, schemas: formSchema,
showActionButtonGroup: false, showActionButtonGroup: false,
@ -95,12 +96,34 @@
// //
await resetFields(); await resetFields();
await clearValidate(); await clearValidate();
await setProps({ disabled: false });
// //
state.tag = data._tag; state.tag = data._tag;
state.dataSource = []; state.dataSource = [];
const id = data.record?.id; const id = data.record?.id;
const type = data.record?.type;
const props: Partial<ModalProps> = { confirmLoading: false, showOkBtn: true }; const props: Partial<ModalProps> = { 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 // tag
switch (state.tag) { switch (state.tag) {
case 'add': case 'add':
@ -108,7 +131,6 @@
break; break;
case 'view': case 'view':
props.title = '查看数据库字段类型'; props.title = '查看数据库字段类型';
await setProps({ disabled: true });
props.showOkBtn = false; props.showOkBtn = false;
const genDatabaseTypeView = await getGenDatabaseType(id); const genDatabaseTypeView = await getGenDatabaseType(id);
state.dataSource = genDatabaseTypeView?.genTableFieldTypeList || []; state.dataSource = genDatabaseTypeView?.genTableFieldTypeList || [];
@ -116,7 +138,6 @@
break; break;
case 'edit': case 'edit':
props.title = '编辑数据库字段类型'; props.title = '编辑数据库字段类型';
await setProps({ disabled: true });
const genDatabaseTypeEdit = await getGenDatabaseType(id); const genDatabaseTypeEdit = await getGenDatabaseType(id);
state.dataSource = genDatabaseTypeEdit?.genTableFieldTypeList || []; state.dataSource = genDatabaseTypeEdit?.genTableFieldTypeList || [];
await setFieldsValue(genDatabaseTypeEdit); await setFieldsValue(genDatabaseTypeEdit);

Loading…
Cancel
Save