style: 优化代码生成预览样式

This commit is contained in:
2024-06-12 23:11:12 +08:00
parent 5601092f66
commit b08b57fa08

View File

@@ -1,56 +1,59 @@
<template> <template>
<a-modal <a-modal
v-model:visible="visible" v-model:visible="visible"
:title="`生成 ${previewTableName} 表预览`" width="90%"
:mask-closable="false" draggable
:esc-to-close="false" :footer="false"
width="90%"
draggable
:footer="false"
> >
<template #title>
{{ `生成 ${previewTableName} 表预览` }}
<a-link style="margin-left: 10px" icon @click="gen">下载源码</a-link>
</template>
<div class="preview-content"> <div class="preview-content">
<a-layout :has-sider="true"> <a-layout :has-sider="true">
<a-layout-sider theme="dark" style="max-width:600px;height: 700px" :resize-directions="['right']" :width="500"> <a-layout-sider theme="dark" style="max-width:600px; height: 700px" :resize-directions="['right']" :width="370">
<a-tree ref="treeRef" class="selectPreview" <a-tree
:data="treeData" ref="treeRef" class="selectPreview"
default-expand-all :data="treeData"
@select="onSelectPreview" :selectable="(node, info) => info.isLeaf"
default-expand-all
@select="onSelectPreview"
> >
<template #icon=" node "> <template #icon=" node ">
<GiSvgIcon v-if="!node.isLeaf && !node.expanded" :size="16" name="directory-blue" /> <GiSvgIcon v-if="!node.isLeaf && !node.expanded" :size="16" name="directory-blue" />
<GiSvgIcon v-if="!node.isLeaf && node.expanded" :size="16" name="directory-open-blue" /> <GiSvgIcon v-if="!node.isLeaf && node.expanded" :size="16" name="directory-open-blue" />
<GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.java')" :size="16" name="file-java" /> <GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.java')" :size="16" name="file-java" />
<GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.vue')" :size="16" name="file-vue" /> <GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.vue')" :size="16" name="file-vue" />
<GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.ts')" :size="16" name="file-typescript" /> <GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.ts')" :size="16"
<GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.js')" :size="16" name="file-javascript" /> name="file-typescript" />
<GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.js')" :size="16"
name="file-javascript" />
<GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.json')" :size="16" name="file-json" /> <GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.json')" :size="16" name="file-json" />
<GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, 'pom.xml')" :size="16" name="file-maven" /> <GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, 'pom.xml')" :size="16" name="file-maven" />
<GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.xml') && !checkFileType(node.node.title, 'pom.xml')" :size="16" name="file-xml" /> <GiSvgIcon
v-if="node.isLeaf && checkFileType(node.node.title, '.xml') && !checkFileType(node.node.title, 'pom.xml')"
:size="16" name="file-xml" />
<GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.sql')" :size="16" name="file-sql" /> <GiSvgIcon v-if="node.isLeaf && checkFileType(node.node.title, '.sql')" :size="16" name="file-sql" />
</template> </template>
</a-tree> </a-tree>
</a-layout-sider> </a-layout-sider>
<a-layout-content> <a-layout-content>
<a-card :header-style="{ height: '50px' }"> <a-card>
<template #title> {{ currentPreview?.path }}\{{ currentPreview?.fileName }}</template> <template #title>
<template #extra> <a-typography-title :heading="6" ellipsis>
<a-button-group type="outline" size="small"> {{ currentPreview?.path }}{{ currentPreview?.path.indexOf('/') !== -1 ? '/' : '\\' }}{{ currentPreview?.fileName }}
<a-button @click="onCopy"> </a-typography-title>
<template #icon>
<icon-copy />
</template>
</a-button>
<a-button @click="gen">
<template #icon>
<icon-download />
</template>
</a-button>
</a-button-group>
</template> </template>
<a-scrollbar style="height: 650px; overflow: auto"> <a-scrollbar style="height: 650px; overflow: auto">
<a-link style="position: absolute; right: 20px; z-index: 999" @click="onCopy">
<template #icon>
<icon-copy size="large" />
</template>
复制
</a-link>
<GiCodeView <GiCodeView
:type="'vue' === currentPreview?.fileName.split('.')[1] ? 'vue' : 'javascript'" :type="'vue' === currentPreview?.fileName.split('.')[1] ? 'vue' : 'javascript'"
:code-json="currentPreview?.content" :code-json="currentPreview?.content"
/> />
</a-scrollbar> </a-scrollbar>
</a-card> </a-card>
@@ -75,7 +78,7 @@ const visible = ref(false)
const treeData = ref<TreeNodeData[]>([]) const treeData = ref<TreeNodeData[]>([])
const previewTableName = ref<string>('') const previewTableName = ref<string>('')
const treeRef = ref() const treeRef = ref()
const mergeDir = async (parent: TreeNodeData) => { const mergeDir = (parent: TreeNodeData) => {
// 合并目录 // 合并目录
if (parent.children?.length === 1 && typeof parent.children[0].key === 'number') { if (parent.children?.length === 1 && typeof parent.children[0].key === 'number') {
const mergeTitle = mergeDir(parent.children[0]) const mergeTitle = mergeDir(parent.children[0])
@@ -92,7 +95,7 @@ const mergeDir = async (parent: TreeNodeData) => {
} }
} }
await nextTick(() => { nextTick(() => {
treeRef.value?.expandAll(true) treeRef.value?.expandAll(true)
}) })
return '' return ''