feat(generator): 代码生成、预览支持批量

This commit is contained in:
2024-12-12 20:52:22 +08:00
parent 7f503f3af3
commit f292db55af
4 changed files with 50 additions and 13 deletions

View File

@@ -1,7 +1,7 @@
<template>
<a-modal v-model:visible="visible" width="90%" :footer="false">
<template #title>
{{ `生成 ${previewTableName} 表预览` }}
{{ previewTableNames.length === 1 ? `生成 ${previewTableNames[0]} 表预览` : '批量生成预览' }}
<a-link v-permission="['code:generator:generate']" style="margin-left: 10px" icon @click="onDownload">下载源码</a-link>
</template>
<div class="preview-content">
@@ -71,13 +71,13 @@ import { Message, type TreeNodeData } from '@arco-design/web-vue'
import { useClipboard } from '@vueuse/core'
import { type GeneratePreviewResp, genPreview } from '@/apis/code/generator'
const emit = defineEmits<{ (e: 'generate', tableNames: string[]): void }>()
const emit = defineEmits<{ (e: 'generate', previewTableNames: string[]): void }>()
const { copy, copied } = useClipboard()
const genPreviewList = ref<GeneratePreviewResp[]>([])
const currentPreview = ref<GeneratePreviewResp>()
const visible = ref(false)
const previewTableName = ref<string>('')
const previewTableNames = ref<string[]>([])
const treeRef = ref()
const treeData = ref<TreeNodeData[]>([])
// 合并目录
@@ -128,7 +128,7 @@ const assembleTree = (genPreview: GeneratePreviewResp) => {
// 下载
const onDownload = () => {
emit('generate', [previewTableName.value])
emit('generate', [previewTableNames.value])
}
// 校验文件类型
const checkFileType = (title: string, type: string) => {
@@ -160,10 +160,10 @@ const onSelectPreview = (keys: (string | number)[]) => {
}
// 打开
const onOpen = async (tableName: string) => {
const onOpen = async (tableNames: Array<string>) => {
treeData.value = []
previewTableName.value = tableName
const { data } = await genPreview(tableName)
previewTableNames.value = tableNames
const { data } = await genPreview(tableNames)
genPreviewList.value = data
for (const genPreview of genPreviewList.value) {
assembleTree(genPreview)