diff --git a/src/api/database/index.ts b/src/api/database/index.ts index 722612b6..9758cefb 100644 --- a/src/api/database/index.ts +++ b/src/api/database/index.ts @@ -11,6 +11,7 @@ enum Api { createPicTable = '/api/createTable/createTable', //图形化建表 updateTable = '/api/CreateTable/UpdateTable', //图形化建表-修改 loadTableRecordInfo = '/api/CreateTable/LoadTableRecordInfo', //图形化建表记录 + CheckTableExist = '/api/CreateTable/CheckTableExist', //图形化建表-新建检查 } /** @@ -46,3 +47,6 @@ export const updateTable = (params: AccountParams) => export const loadTableRecordInfo = (params: AccountParams) => defHttp.get({ url: Api.loadTableRecordInfo, params }); + +export const CheckTableExist = (params: AccountParams) => + defHttp.get({ url: Api.CheckTableExist, params }); diff --git a/src/views/demo/onlineform/formdesign/modal/AutomaticModal.vue b/src/views/demo/onlineform/formdesign/modal/AutomaticModal.vue index dc126d92..bf0ac726 100644 --- a/src/views/demo/onlineform/formdesign/modal/AutomaticModal.vue +++ b/src/views/demo/onlineform/formdesign/modal/AutomaticModal.vue @@ -100,11 +100,14 @@ import { CollapseContainer } from '@/components/Container'; import { BasicTable } from '@/components/Table'; import { BasicModal, useModalInner } from '@/components/Modal'; - import { dbColumnInfoColumns } from './modelData'; + import { useMessage } from '@/hooks/web/useMessage'; import { cloneDeep } from 'lodash-es'; + import { dbColumnInfoColumns } from './modelData'; import { functionGetForm, AddTable, AddColumn } from '@/api/demo/formScheme'; + import { CheckTableExist } from '@/api/database/index'; const emit = defineEmits(['automatic-modal-submitsuccess']); + const { createMessage } = useMessage(); const props = defineProps({ isAddVisible: { @@ -705,6 +708,12 @@ // 提交 async function submit() { + // 检测:数据库是否有此表 + let results = checkTablesAndWarn(); + const checkflag = (await results).some(Boolean); + if (checkflag) { + return; + } // 设置子表的relationField getRelationField(); if (props.isAddVisible) { @@ -739,6 +748,24 @@ getFromAndTable(); } + // 检测:数据库是否有此表 + async function checkTablesAndWarn() { + const promises = db_list.value.map(async (db) => { + if (isNewTable(db)) { + let query: any = { tableName: db.tableName }; + let res = await CheckTableExist(query); + if (res) { + createMessage.warn('数据库已有表' + db.tableName); + return true; + } + } + return false; + }); + + const results = await Promise.all(promises); + return results; + } + // 设置子表的relationField function getRelationField() { // 确定primaryKey diff --git a/src/views/demo/system/graphicaltable/modal/index.vue b/src/views/demo/system/graphicaltable/modal/index.vue index ffa46d86..54ef19a7 100644 --- a/src/views/demo/system/graphicaltable/modal/index.vue +++ b/src/views/demo/system/graphicaltable/modal/index.vue @@ -90,7 +90,7 @@ import { columns, columns_isDetail } from './modal.data'; import { useMessage } from '@/hooks/web/useMessage'; // api - import { createPicTable, updateTable } from '@/api/database/index'; + import { createPicTable, updateTable, CheckTableExist } from '@/api/database/index'; import { getLoad } from '@/api/sys/sysDataItemDetail'; const emit = defineEmits(['submit']); @@ -222,7 +222,9 @@ reload(); } // 提交 - function handleOk() { + async function handleOk() { + // 删除两端空格、制表符和换行符 + tableName.value = tableName.value.trim(); // 检测:表名 if (!tableName.value) { createMessage.warn('表名是必填项!'); @@ -233,6 +235,13 @@ createMessage.warn('表名不符合数据库表名的命名规则!'); return; } + // 检测:数据库是否有此表 + let query: any = { tableName: tableName.value }; + let res = await CheckTableExist(query); + if (res) { + createMessage.warn('数据库已有此表名!'); + return; + } let arr = getDataSource(); // 检测:字段行 if (!arr || arr.length == 0) {