feat: 新增代码生成

This commit is contained in:
Solution_Lin
2024-04-19 00:57:27 +00:00
committed by Charles7c
parent 4a40ab0e7e
commit 6321de7cac
7 changed files with 499 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
<template>
<a-modal v-model:visible="visible" title="生成预览" :mask-closable="false" :esc-to-close="false" width="90%">
<div>
<a-scrollbar style="height: 700px; overflow: auto">
<a-link style="position: absolute; right: 20px; top: 50px; z-index: 999" @click="onCopy">
<template #icon>
<icon-copy size="large" />
</template>
复制
</a-link>
<a-tabs size="large" @tab-click="onTabClick">
<a-tab-pane v-for="item in genPreviewList" :key="item.fileName" :title="item.fileName">
<GiCodeView
:type="'vue' === item.fileName.split('.')[1] ? 'vue' : 'javascript'"
:code-json="item.content"
></GiCodeView>
</a-tab-pane>
</a-tabs>
</a-scrollbar>
</div>
</a-modal>
</template>
<script setup lang="ts">
import { genPreview, type GeneratePreviewResp } from '@/apis'
import { Message } from '@arco-design/web-vue'
import { useClipboard } from '@vueuse/core'
const { copy, copied } = useClipboard()
const copyCodeContent = ref()
const genPreviewList = ref<GeneratePreviewResp[]>([])
const visible = ref(false)
// 打开
const onPreview = async (tableName: string) => {
const res = await genPreview(tableName)
genPreviewList.value = res.data
copyCodeContent.value = genPreviewList.value[0].content
visible.value = true
}
// 点击 Tab
const onTabClick = (key: any) => {
copyCodeContent.value = genPreviewList.value.filter((p) => p.fileName === key)[0].content
}
// 复制
const onCopy = () => {
copy(copyCodeContent.value)
}
watch(copied, () => {
if (copied.value) {
Message.success('复制成功')
}
})
defineExpose({ onPreview })
</script>