diff --git a/src/main/java/cn/bunny/domain/entity/TableMetaData.java b/src/main/java/cn/bunny/domain/entity/TableMetaData.java index 543c26c..c571c16 100644 --- a/src/main/java/cn/bunny/domain/entity/TableMetaData.java +++ b/src/main/java/cn/bunny/domain/entity/TableMetaData.java @@ -31,6 +31,6 @@ public class TableMetaData { private String className; @Schema(name = "columns", description = "列名称") - private List columns; + private List columns = List.of(); } \ No newline at end of file diff --git a/src/main/resources/static/src/views/database/DatabaseTable.js b/src/main/resources/static/src/views/database/DatabaseTable.js index 4ff5abc..c42019e 100644 --- a/src/main/resources/static/src/views/database/DatabaseTable.js +++ b/src/main/resources/static/src/views/database/DatabaseTable.js @@ -1,138 +1,197 @@ const DatabaseTable = defineComponent({ name: "MainTable", template: ` -
- -
-
- 数据表列表 -
- -
-
- - -
-
- - -
-
-
- - -
-
- -
-
- Loading... +
+ +
+
+ 数据表列表 +
+ +
+
+ + +
+
+ + +
- - -
- -

没有找到数据表

+ + +
+
+ +
+
+ Loading... +
+
+ + +
+ +

没有找到数据表

+
+ + + + + + + + + + + + + + + + +
+ + #表名注释所属数据库操作
+
- - - - - - - - - - - - - - - - - - - - - - - -
- - #表名注释所属数据库操作
- - {{ (currentPage - 1) * itemsPerPage + index + 1 }} - - {{ table.tableName }} - - {{ table.comment || '无注释' }}{{ table.tableCat }} - -
-
-
- - -
-
-
`, props: { // 加载状态 @@ -264,6 +323,32 @@ const DatabaseTable = defineComponent({ } }, + /** + * 切换表格详情展开/收起状态 + * 如果是首次展开且没有列数据,则请求获取列信息 + * @param {Object} table - 表格对象 + * @returns {Promise} + */ + async toggleTableDetails(table) { + // 如果是展开操作且没有列数据,则请求获取列信息 + if (!table.showDetails && !table.columns) { + // 发送请求获取列信息 + const {data, code, message} = await axiosInstance({ + url: "/table/tableColumnInfo", + params: {tableName: table.tableName} + }); + + // 请求成功时保存列数据 + if (code === 200) { + table.columns = data; + antd.message.success(message); + } + } + + // 切换展开/收起状态 + table.showDetails = !table.showDetails; + }, + /* 更新表单中选中的表名 */ updateFormSelectedTables() { const payload = { @@ -279,39 +364,20 @@ const DatabaseTable = defineComponent({ * 如果要同时更新会变得很复杂所以在这里讲逻辑定义为: * 选型变化时直接取消全部,之后重新选择 */ - restForm() { + resetForm() { this.tableSelectAllChecked = false; this.tableList.forEach(table => table.checked = false); this.updateFormSelectedTables(); } }, watch: { - /** - * 监听选择模式变化 - */ - selectedOption() { - this.restForm(); - }, - - /** - * 监听当前页变化 - */ - currentPage() { - this.restForm(); - }, - - /** - * 监听每页条数变化 - */ - itemsPerPage() { - this.restForm(); - }, - - /** - * 数据库选择发生变化也重置表单 - */ - dbSelect() { - this.restForm(); - } + /* 监听选择模式变化 */ + selectedOption: 'resetForm', + /* 监听当前页变化 */ + currentPage: 'resetForm', + /* 监听每页条数变化 */ + itemsPerPage: 'resetForm', + /* 数据库选择发生变化也重置表单 */ + dbSelect: 'resetForm', } }); \ No newline at end of file