mirror of
				https://github.com/continew-org/continew-admin-ui.git
				synced 2025-10-31 10:57:10 +08:00 
			
		
		
		
	feat(generator): 源项目内生成代码 (#44)
This commit is contained in:
		| @@ -32,11 +32,19 @@ export function genPreview(tableNames: Array<string>) { | ||||
| } | ||||
|  | ||||
| /** @desc 生成代码 */ | ||||
| export function generate(tableNames: Array<string>) { | ||||
| export function downloadCode(tableNames: Array<string>) { | ||||
|   return http.requestNative({ | ||||
|     url: `${BASE_URL}/${tableNames}/download`, | ||||
|     method: 'post', | ||||
|     responseType: 'blob', | ||||
|   }) | ||||
| } | ||||
|  | ||||
| /** @desc 生成代码 */ | ||||
| export function generateCode(tableNames: Array<string>) { | ||||
|   return http.requestNative({ | ||||
|     url: `${BASE_URL}/${tableNames}`, | ||||
|     method: 'post', | ||||
|     responseType: 'blob', | ||||
|   }) | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
|     <template #title> | ||||
|       {{ previewTableNames.length === 1 ? `生成 ${previewTableNames[0]} 表预览` : '批量生成预览' }} | ||||
|       <a-link v-permission="['code:generator:generate']" style="margin-left: 10px" icon @click="onDownload">下载源码</a-link> | ||||
|       <a-link v-permission="['code:generator:generate']" style="margin-left: 10px" icon @click="onGenerator">生成源码</a-link> | ||||
|     </template> | ||||
|     <div class="preview-content"> | ||||
|       <a-layout :has-sider="true"> | ||||
| @@ -71,7 +72,7 @@ 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', previewTableNames: string[]): void }>() | ||||
| const emit = defineEmits([ 'download','generate']) | ||||
| const { copy, copied } = useClipboard() | ||||
|  | ||||
| const genPreviewList = ref<GeneratePreviewResp[]>([]) | ||||
| @@ -128,6 +129,11 @@ const assembleTree = (genPreview: GeneratePreviewResp) => { | ||||
|  | ||||
| // 下载 | ||||
| const onDownload = () => { | ||||
|   emit('download', [previewTableNames.value]) | ||||
| } | ||||
|  | ||||
| // 下载 | ||||
| const onGenerator = () => { | ||||
|   emit('generate', [previewTableNames.value]) | ||||
| } | ||||
| // 校验文件类型 | ||||
|   | ||||
| @@ -56,13 +56,14 @@ | ||||
|     </GiTable> | ||||
|  | ||||
|     <GenConfigDrawer ref="GenConfigDrawerRef" @save-success="search" /> | ||||
|     <GenPreviewModal ref="GenPreviewModalRef" @generate="onGenerate" /> | ||||
|     <GenPreviewModal ref="GenPreviewModalRef" @generate="onGenerate" @download="onDownload" /> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script setup lang="ts"> | ||||
| import { Message } from '@arco-design/web-vue' | ||||
| import GenConfigDrawer from './GenConfigDrawer.vue' | ||||
| import { generate, listGenConfig } from '@/apis/code/generator' | ||||
| import { downloadCode, generateCode, listGenConfig } from '@/apis/code/generator' | ||||
| import type { TableInstanceColumns } from '@/components/GiTable/type' | ||||
| import { useTable } from '@/hooks' | ||||
| import { isMobile } from '@/utils' | ||||
| @@ -125,8 +126,8 @@ const onPreview = (tableNames: Array<string>) => { | ||||
| } | ||||
|  | ||||
| // 生成 | ||||
| const onGenerate = async (tableNames: Array<string>) => { | ||||
|   const res = await generate(tableNames) | ||||
| const onDownload = async (tableNames: Array<string>) => { | ||||
|   const res = await downloadCode(tableNames) | ||||
|   const contentDisposition = res.headers['content-disposition'] | ||||
|   const pattern = /filename=([^;]+\.[^.;]+);*/ | ||||
|   const result = pattern.exec(contentDisposition) || '' | ||||
| @@ -148,6 +149,15 @@ const onGenerate = async (tableNames: Array<string>) => { | ||||
|   // 释放掉 blob 对象 | ||||
|   window.URL.revokeObjectURL(href) | ||||
| } | ||||
|  | ||||
| // 生成 | ||||
| const onGenerate = async (tableNames: Array<string>) => { | ||||
|   const res = await generateCode(tableNames) | ||||
|   if(res.code === 0){ | ||||
|     Message.success('代码生成成功') | ||||
|   } | ||||
| } | ||||
|  | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"></style> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 luoqiz
					luoqiz