src/api/tool/gen/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/tool/gen/types.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/tool/gen/importTable.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/tool/gen/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/tool/gen/index.ts
@@ -5,7 +5,6 @@ // 查询生成表数据 export const listTable = (query: TableQuery): AxiosPromise<TableVO[]> => { return request({ headers: { datasource: localStorage.getItem('dataName') }, url: '/tool/gen/list', method: 'get', params: query @@ -14,7 +13,6 @@ // 查询db数据库列表 export const listDbTable = (query: DbTableQuery): AxiosPromise<DbTableVO[]> => { return request({ headers: { datasource: localStorage.getItem('dataName') }, url: '/tool/gen/db/list', method: 'get', params: query @@ -24,7 +22,6 @@ // 查询表详细信息 export const getGenTable = (tableId: string | number): AxiosPromise<GenTableVO> => { return request({ headers: { datasource: localStorage.getItem('dataName') }, url: '/tool/gen/' + tableId, method: 'get' }); @@ -33,7 +30,6 @@ // 修改代码生成信息 export const updateGenTable = (data: DbTableForm) => { return request({ headers: { datasource: localStorage.getItem('dataName') }, url: '/tool/gen', method: 'put', data: data @@ -41,9 +37,8 @@ }; // 导入表 export const importTable = (data: { tables: string }) => { export const importTable = (data: { tables: string, dataName: string }) => { return request({ headers: { datasource: localStorage.getItem('dataName') }, url: '/tool/gen/importTable', method: 'post', params: data @@ -53,7 +48,6 @@ // 预览生成代码 export const previewTable = (tableId: string | number) => { return request({ headers: { datasource: localStorage.getItem('dataName') }, url: '/tool/gen/preview/' + tableId, method: 'get' }); @@ -62,26 +56,31 @@ // 删除表数据 export const delTable = (tableId: string | number | Array<string | number>) => { return request({ headers: { datasource: localStorage.getItem('dataName') }, url: '/tool/gen/' + tableId, method: 'delete' }); }; // 生成代码(自定义路径) export const genCode = (tableName: string) => { export const genCode = (tableId: string | number) => { return request({ headers: { datasource: localStorage.getItem('dataName') }, url: '/tool/gen/genCode/' + tableName, url: '/tool/gen/genCode/' + tableId, method: 'get' }); }; // 同步数据库 export const synchDb = (tableName: string) => { export const synchDb = (tableId: string | number) => { return request({ headers: { datasource: localStorage.getItem('dataName') }, url: '/tool/gen/synchDb/' + tableName, url: '/tool/gen/synchDb/' + tableId, method: 'get' }); }; // 获取数据源名称 export const getDataNames = () => { return request({ url: '/tool/gen/getDataNames', method: 'get' }); }; src/api/tool/gen/types.ts
@@ -1,6 +1,7 @@ export interface TableVO extends BaseEntity { createDept: number | string; tableId: string | number; dataName: string; tableName: string; tableComment: string; subTableName?: any; @@ -97,6 +98,7 @@ } export interface DbTableQuery extends PageQuery { dataName: string; tableName: string; tableComment: string; } src/views/tool/gen/importTable.vue
@@ -1,8 +1,13 @@ <template> <!-- 导入表 --> <el-dialog title="导入表" v-model="visible" width="800px" top="5vh" append-to-body> <el-dialog title="导入表" v-model="visible" width="1100px" top="5vh" append-to-body> <el-form :model="queryParams" ref="queryFormRef" :inline="true"> <el-form-item label="表名称" prop="tableName"> <el-form-item label="数据源" prop="dataName"> <el-select v-model="queryParams.dataName" filterable placeholder="请选择/输入数据源名称" style="width: 200px"> <el-option v-for="item in dataNameList" :key="item" :label="item" :value="item"> </el-option> </el-select> </el-form-item> <el-form-item label="表名称" prop="tableName"> <el-input v-model="queryParams.tableName" placeholder="请输入表名称" clearable @keyup.enter="handleQuery" /> </el-form-item> <el-form-item label="表描述" prop="tableComment"> @@ -33,7 +38,7 @@ </template> <script setup lang="ts"> import { listDbTable, importTable } from '@/api/tool/gen'; import { listDbTable, importTable, getDataNames } from '@/api/tool/gen'; import { DbTableQuery, DbTableVO } from '@/api/tool/gen/types'; import { ComponentInternalInstance } from 'vue'; import { ElTable, ElForm } from 'element-plus'; @@ -50,14 +55,22 @@ const queryParams = reactive<DbTableQuery>({ pageNum: 1, pageSize: 10, dataName: '', tableName: '', tableComment: '' }); const dataNameList = ref<Array<string>>([]); const emit = defineEmits(["ok"]); /** 查询参数列表 */ const show = () => { const show = (dataName: string) => { getDataNameList(); if(dataName){ queryParams.dataName = dataName; } else { queryParams.dataName = 'master'; } getList(); visible.value = true; } @@ -92,13 +105,18 @@ proxy?.$modal.msgError("请选择要导入的表"); return; } const res = await importTable({ tables: tableNames }); const res = await importTable({ tables: tableNames, dataName: queryParams.dataName }); proxy?.$modal.msgSuccess(res.msg); if (res.code === 200) { visible.value = false; emit("ok"); } } /** 查询多数据源名称 */ const getDataNameList = async () => { const res = await getDataNames() dataNameList.value = res.data; } defineExpose({ show, src/views/tool/gen/index.vue
@@ -4,7 +4,10 @@ <div class="search" v-show="showSearch"> <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> <el-form-item label="数据源" prop="dataName"> <el-input v-model="queryParams.dataName" placeholder="请输入数据源名称" clearable style="width: 200px" @keyup.enter="handleQuery" /> <el-select v-model="queryParams.dataName" filterable clearable placeholder="请选择/输入数据源名称" style="width: 200px"> <el-option key="" label="全部" value="" /> <el-option v-for="item in dataNameList" :key="item" :label="item" :value="item"> </el-option> </el-select> </el-form-item> <el-form-item label="表名称" prop="tableName"> <el-input v-model="queryParams.tableName" placeholder="请输入表名称" clearable style="width: 200px" @keyup.enter="handleQuery" /> @@ -58,6 +61,7 @@ <span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span> </template> </el-table-column> <el-table-column label="数据源" align="center" prop="dataName" :show-overflow-tooltip="true" /> <el-table-column label="表名称" align="center" prop="tableName" :show-overflow-tooltip="true" /> <el-table-column label="表描述" align="center" prop="tableComment" :show-overflow-tooltip="true" /> <el-table-column label="实体" align="center" prop="className" :show-overflow-tooltip="true" /> @@ -107,7 +111,7 @@ </template> <script setup name="Gen" lang="ts"> import { listTable, previewTable, delTable, genCode, synchDb } from '@/api/tool/gen'; import { listTable, previewTable, delTable, genCode, synchDb, getDataNames } from '@/api/tool/gen'; import { TableQuery, TableVO } from '@/api/tool/gen/types'; import router from '@/router'; import importTable from './importTable.vue'; @@ -124,9 +128,9 @@ const single = ref(true); const multiple = ref(true); const total = ref(0); const tableNames = ref<Array<string>>([]); const dateRange = ref<[DateModelType, DateModelType]>(['', '']); const uniqueId = ref(""); const dataNameList = ref<Array<string>>([]); const queryFormRef = ref(ElForm); const importRef = ref(importTable); @@ -136,7 +140,7 @@ pageSize: 10, tableName: '', tableComment: '', dataName: "master" dataName: "" }) const preview = ref <any>({ @@ -147,8 +151,6 @@ visible: false, title: '代码预览' }); localStorage.setItem('dataName', queryParams.value.dataName); onActivated(() => { const time = route.query.t; @@ -161,6 +163,12 @@ } }) /** 查询多数据源名称 */ const getDataNameList = async () => { const res = await getDataNames() dataNameList.value = res.data; } /** 查询表集合 */ const getList = async () => { loading.value = true; @@ -171,34 +179,33 @@ } /** 搜索按钮操作 */ const handleQuery = () => { localStorage.setItem('dataName', queryParams.value.dataName); queryParams.value.pageNum = 1; getList(); } /** 生成代码操作 */ const handleGenTable = async (row?: TableVO) => { const tbNames = row?.tableName || tableNames.value; if (tbNames == "") { const tbIds = row?.tableId || ids.value; if (tbIds == "") { proxy?.$modal.msgError('请选择要生成的数据'); return; } if (row?.genType === "1") { await genCode(row.tableName); await genCode(row.tableId); proxy?.$modal.msgSuccess('成功生成到自定义路径:' + row.genPath); } else { proxy?.$download.zip('/tool/gen/batchGenCode?tables=' + tbNames, 'ruoyi.zip'); proxy?.$download.zip('/tool/gen/batchGenCode?tableIdStr=' + tbIds, 'ruoyi.zip'); } } /** 同步数据库操作 */ const handleSynchDb = async (row: TableVO) => { const tableName = row.tableName; await proxy?.$modal.confirm('确认要强制同步"' + tableName + '"表结构吗?'); await synchDb(tableName); const tableId = row.tableId; await proxy?.$modal.confirm('确认要强制同步"' + row.tableName + '"表结构吗?'); await synchDb(tableId); proxy?.$modal.msgSuccess('同步成功'); } /** 打开导入表弹窗 */ const openImportTable = () => { importRef.value.show(); importRef.value.show(queryParams.value.dataName); } /** 重置按钮操作 */ const resetQuery = () => { @@ -220,7 +227,6 @@ // 多选框选中数据 const handleSelectionChange = (selection: TableVO[]) => { ids.value = selection.map(item => item.tableId); tableNames.value = selection.map(item => item.tableName); single.value = selection.length != 1; multiple.value = !selection.length; } @@ -240,5 +246,6 @@ onMounted(() => { getList(); getDataNameList(); }) </script>