From f8d8407fb41861ed6a7b58e988b7d9eec375d5e2 Mon Sep 17 00:00:00 2001 From: xingyu Date: Thu, 23 Mar 2023 21:52:51 +0800 Subject: [PATCH] feat: codegen --- src/api/infra/codegen/index.ts | 4 +- src/utils/tree.ts | 35 +++++ src/views/infra/codegen/EditTable.vue | 1 + src/views/infra/codegen/PreviewModal.vue | 54 ------- .../{ => components}/ImportTableModal.vue | 2 +- .../infra/codegen/components/PreviewModal.vue | 141 ++++++++++++++++++ src/views/infra/codegen/index.vue | 49 ++++-- 7 files changed, 216 insertions(+), 70 deletions(-) create mode 100644 src/views/infra/codegen/EditTable.vue delete mode 100644 src/views/infra/codegen/PreviewModal.vue rename src/views/infra/codegen/{ => components}/ImportTableModal.vue (98%) create mode 100644 src/views/infra/codegen/components/PreviewModal.vue diff --git a/src/api/infra/codegen/index.ts b/src/api/infra/codegen/index.ts index f968472..bdfa223 100644 --- a/src/api/infra/codegen/index.ts +++ b/src/api/infra/codegen/index.ts @@ -37,8 +37,8 @@ export function previewCodegen(id: number) { } // 下载生成代码 -export function downloadCodegen(id: number) { - return defHttp.download({ url: '/infra/codegen/download?tableId=' + id }, '生成代码.zip') +export function downloadCodegen(data) { + return defHttp.download({ url: '/infra/codegen/download?tableId=' + data.id }, data.tableName + '.zip') } // 获得表定义 diff --git a/src/utils/tree.ts b/src/utils/tree.ts index 298c306..e9d30f4 100644 --- a/src/utils/tree.ts +++ b/src/utils/tree.ts @@ -239,3 +239,38 @@ export const handleTree = (data: any[], id?: string, parentId?: string, children } return tree } + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + * @param {*} rootId 根Id 默认 0 + */ +export const handleTree2 = (data, id, parentId, children, rootId) => { + id = id || 'id' + parentId = parentId || 'parentId' + children = children || 'children' + rootId = + rootId || + Math.min( + ...data.map((item) => { + return item[parentId] + }) + ) || + 0 + //对源数据深度克隆 + const cloneData = JSON.parse(JSON.stringify(data)) + //循环所有项 + const treeData = cloneData.filter((father) => { + const branchArr = cloneData.filter((child) => { + //返回每一项的子级数组 + return father[id] === child[parentId] + }) + branchArr.length > 0 ? (father.children = branchArr) : '' + //返回第一层 + return father[parentId] === rootId + }) + return treeData !== '' ? treeData : data +} diff --git a/src/views/infra/codegen/EditTable.vue b/src/views/infra/codegen/EditTable.vue new file mode 100644 index 0000000..dad38a6 --- /dev/null +++ b/src/views/infra/codegen/EditTable.vue @@ -0,0 +1 @@ + diff --git a/src/views/infra/codegen/PreviewModal.vue b/src/views/infra/codegen/PreviewModal.vue deleted file mode 100644 index 5aca16d..0000000 --- a/src/views/infra/codegen/PreviewModal.vue +++ /dev/null @@ -1,54 +0,0 @@ - - diff --git a/src/views/infra/codegen/ImportTableModal.vue b/src/views/infra/codegen/components/ImportTableModal.vue similarity index 98% rename from src/views/infra/codegen/ImportTableModal.vue rename to src/views/infra/codegen/components/ImportTableModal.vue index 01a94b6..30623a6 100644 --- a/src/views/infra/codegen/ImportTableModal.vue +++ b/src/views/infra/codegen/components/ImportTableModal.vue @@ -6,7 +6,7 @@ diff --git a/src/views/infra/codegen/index.vue b/src/views/infra/codegen/index.vue index 52d69e7..f0f4531 100644 --- a/src/views/infra/codegen/index.vue +++ b/src/views/infra/codegen/index.vue @@ -2,16 +2,24 @@