mirror of
https://github.com/continew-org/continew-admin-ui.git
synced 2025-09-13 02:57:11 +08:00
style: 优化代码生成预览样式
This commit is contained in:
@@ -91,11 +91,7 @@ const getTreeData = async (query: DeptQuery = { ...queryForm }) => {
|
|||||||
popupVisible: false,
|
popupVisible: false,
|
||||||
switcherIcon: (node: any) => {
|
switcherIcon: (node: any) => {
|
||||||
if (!node.isLeaf) {
|
if (!node.isLeaf) {
|
||||||
if (node.expanded) {
|
return <icon-caret-down />
|
||||||
return <icon-down />
|
|
||||||
} else {
|
|
||||||
return <icon-down />
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return <icon-idcard />
|
return <icon-idcard />
|
||||||
}
|
}
|
||||||
|
@@ -1,25 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-modal
|
<a-modal v-model:visible="visible" width="90%" :footer="false">
|
||||||
v-model:visible="visible"
|
|
||||||
width="90%"
|
|
||||||
draggable
|
|
||||||
:footer="false"
|
|
||||||
>
|
|
||||||
<template #title>
|
<template #title>
|
||||||
{{ `生成 ${previewTableName} 表预览` }}
|
{{ `生成 ${previewTableName} 表预览` }}
|
||||||
<a-link style="margin-left: 10px" icon @click="gen">下载源码</a-link>
|
<a-link style="margin-left: 10px" icon @click="onDownload">下载源码</a-link>
|
||||||
</template>
|
</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="370">
|
<a-layout-sider theme="dark" style="max-width:600px; height: 700px" :resize-directions="['right']" :width="370">
|
||||||
<a-tree
|
<a-tree
|
||||||
ref="treeRef" class="selectPreview"
|
ref="treeRef"
|
||||||
:data="treeData"
|
:data="treeData"
|
||||||
:selectable="(node, info) => info.isLeaf"
|
show-line
|
||||||
default-expand-all
|
block-node
|
||||||
|
:selected-keys="selectedKeys"
|
||||||
|
class="selectPreview"
|
||||||
@select="onSelectPreview"
|
@select="onSelectPreview"
|
||||||
>
|
>
|
||||||
<template #icon=" node ">
|
<template #switcher-icon="node, { isLeaf }">
|
||||||
|
<icon-caret-down v-if="!isLeaf" />
|
||||||
|
</template>
|
||||||
|
<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" />
|
||||||
@@ -75,9 +75,10 @@ const currentPreview = ref<GeneratePreviewResp>()
|
|||||||
const genPreviewList = ref<GeneratePreviewResp[]>([])
|
const genPreviewList = ref<GeneratePreviewResp[]>([])
|
||||||
|
|
||||||
const visible = ref(false)
|
const visible = ref(false)
|
||||||
const treeData = ref<TreeNodeData[]>([])
|
|
||||||
const previewTableName = ref<string>('')
|
const previewTableName = ref<string>('')
|
||||||
const treeRef = ref()
|
const treeRef = ref()
|
||||||
|
const treeData = ref<TreeNodeData[]>([])
|
||||||
|
// 合并目录
|
||||||
const mergeDir = (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') {
|
||||||
@@ -94,13 +95,9 @@ const mergeDir = (parent: TreeNodeData) => {
|
|||||||
mergeDir(child)
|
mergeDir(child)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nextTick(() => {
|
|
||||||
treeRef.value?.expandAll(true)
|
|
||||||
})
|
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
const expandKeys = ref<any[]>([])
|
|
||||||
const pushDir = (children: TreeNodeData[] | undefined, treeNode: TreeNodeData) => {
|
const pushDir = (children: TreeNodeData[] | undefined, treeNode: TreeNodeData) => {
|
||||||
if (children) {
|
if (children) {
|
||||||
for (const child of children) {
|
for (const child of children) {
|
||||||
@@ -110,7 +107,6 @@ const pushDir = (children: TreeNodeData[] | undefined, treeNode: TreeNodeData) =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
children?.push(treeNode)
|
children?.push(treeNode)
|
||||||
expandKeys.value.push(treeNode.key)
|
|
||||||
return treeNode.children
|
return treeNode.children
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,7 +114,8 @@ const pushDir = (children: TreeNodeData[] | undefined, treeNode: TreeNodeData) =
|
|||||||
let autoIncrementKey = 0
|
let autoIncrementKey = 0
|
||||||
// 将生成的目录组装成树结构
|
// 将生成的目录组装成树结构
|
||||||
const assembleTree = (genPreview: GeneratePreviewResp) => {
|
const assembleTree = (genPreview: GeneratePreviewResp) => {
|
||||||
const paths: string[] = genPreview.path.split('\\')
|
const separator = genPreview.path.includes('/') ? '/' : '\\'
|
||||||
|
const paths: string[] = genPreview.path.split(separator)
|
||||||
let tempChildren: TreeNodeData[] | undefined = treeData.value
|
let tempChildren: TreeNodeData[] | undefined = treeData.value
|
||||||
for (const path of paths) {
|
for (const path of paths) {
|
||||||
// 向treeData中推送目录,如果该级目录有那么不推送进行下级的合并
|
// 向treeData中推送目录,如果该级目录有那么不推送进行下级的合并
|
||||||
@@ -127,6 +124,7 @@ const assembleTree = (genPreview: GeneratePreviewResp) => {
|
|||||||
tempChildren?.push({ title: genPreview.fileName, key: genPreview.fileName, children: new Array<TreeNodeData>() })
|
tempChildren?.push({ title: genPreview.fileName, key: genPreview.fileName, children: new Array<TreeNodeData>() })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const selectedKeys = ref()
|
||||||
// 打开
|
// 打开
|
||||||
const onPreview = async (tableName: string) => {
|
const onPreview = async (tableName: string) => {
|
||||||
treeData.value = []
|
treeData.value = []
|
||||||
@@ -139,14 +137,22 @@ const onPreview = async (tableName: string) => {
|
|||||||
for (const valueElement of treeData.value) {
|
for (const valueElement of treeData.value) {
|
||||||
mergeDir(valueElement)
|
mergeDir(valueElement)
|
||||||
}
|
}
|
||||||
|
selectedKeys.value = genPreviewList.value[0].fileName
|
||||||
currentPreview.value = genPreviewList.value[0]
|
currentPreview.value = genPreviewList.value[0]
|
||||||
|
await nextTick(() => {
|
||||||
|
treeRef.value.expandAll(true)
|
||||||
|
})
|
||||||
visible.value = true
|
visible.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// 选择文件预览
|
// 选择文件预览
|
||||||
const onSelectPreview = (selectedKeys) => {
|
const onSelectPreview = (keys: (string | number)[]) => {
|
||||||
if (typeof selectedKeys[0] === 'string') {
|
if (typeof keys[0] === 'string') {
|
||||||
currentPreview.value = genPreviewList.value.filter((p) => p.fileName === selectedKeys[0])[0]
|
currentPreview.value = genPreviewList.value.filter((p) => p.fileName === keys[0])[0]
|
||||||
|
selectedKeys.value = keys[0]
|
||||||
|
} else {
|
||||||
|
const expandedKeys = treeRef.value.getExpandedNodes().map((node) => node.key)
|
||||||
|
treeRef.value.expandNode(keys[0], !expandedKeys.includes(keys[0]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,13 +162,14 @@ const onCopy = () => {
|
|||||||
copy(currentPreview.value?.content)
|
copy(currentPreview.value?.content)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(copied, () => {
|
watch(copied, () => {
|
||||||
if (copied.value) {
|
if (copied.value) {
|
||||||
Message.success('复制成功')
|
Message.success('复制成功')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const gen = () => {
|
|
||||||
|
// 下载
|
||||||
|
const onDownload = () => {
|
||||||
emit('generate', [previewTableName.value])
|
emit('generate', [previewTableName.value])
|
||||||
}
|
}
|
||||||
// 校验文件类型
|
// 校验文件类型
|
||||||
@@ -174,6 +181,9 @@ defineExpose({ onPreview })
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
:deep(.arco-tree-show-line .arco-tree-node-is-leaf:not(.arco-tree-node-is-tail) .arco-tree-node-indent::after) {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
.preview-content :deep(.arco-layout-sider) {
|
.preview-content :deep(.arco-layout-sider) {
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
Reference in New Issue
Block a user