From 56ea74d3650103ce20ac22be74ba6ef847e62bb6 Mon Sep 17 00:00:00 2001 From: suguangxu <274928232@qq.com> Date: Thu, 24 Apr 2025 11:58:04 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1.=E6=95=B0=E6=8D=AE=E4=BC=98=E5=85=88?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=EF=BC=9A=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=99=A8=E5=A2=9E=E5=8A=A0=E6=89=93=E5=8C=85=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82=202.=E8=A1=A8=E5=8D=95=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=EF=BC=9A=E5=8E=86=E5=8F=B2=E7=89=88=E6=9C=AC=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E4=B8=AD=E5=A2=9E=E5=8A=A0=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/generator/index.ts | 21 +++++++++++ src/api/system/generator/model/index.ts | 1 + .../form/design/components/HistoryModal.vue | 13 ++++--- .../dev/components/DataFirstModal.vue | 35 ++++++++++++++++--- 4 files changed, 61 insertions(+), 9 deletions(-) diff --git a/src/api/system/generator/index.ts b/src/api/system/generator/index.ts index 65b7dc7..e279ed2 100644 --- a/src/api/system/generator/index.ts +++ b/src/api/system/generator/index.ts @@ -22,6 +22,7 @@ enum Api { App = '/system/generator/generator-app-code', Master = '/system/databaselink/master-info', Batch = '/system/generator/generator-code/batch', + DownloadCodes='/system/generator/downloadCodes', } /** @@ -251,3 +252,23 @@ export async function batchGeneratorCode(data: GeneratorModel, mode: ErrorMessag }, ); } + + +/** + * @description: 根据uuid(目录名称)下载代码 + */ +export async function downloadCodes( + params?: object, + mode: ErrorMessageMode = 'modal' +) { + return defHttp.download( + { + url: Api.DownloadCodes+"/"+params.uuid, + method: 'GET', + responseType: 'blob', + }, + { + errorMessageMode: mode, + }, + ); +} diff --git a/src/api/system/generator/model/index.ts b/src/api/system/generator/model/index.ts index ce82158..68d4132 100644 --- a/src/api/system/generator/model/index.ts +++ b/src/api/system/generator/model/index.ts @@ -4,6 +4,7 @@ import { TableStructureConfig } from '/@/model/generator/tableStructureConfig'; export interface GeneratorModel extends GeneratorConfig { frontCode: FrontCode; id?: string; + actionType?: string; } export interface GeneratorAppModel extends FrontCode { diff --git a/src/views/form/design/components/HistoryModal.vue b/src/views/form/design/components/HistoryModal.vue index 863a84d..6d44e42 100644 --- a/src/views/form/design/components/HistoryModal.vue +++ b/src/views/form/design/components/HistoryModal.vue @@ -33,11 +33,16 @@ const { t } = useI18n(); const columns: BasicColumn[] = [ { - dataIndex: 'activityFlag', - title: t('版本'), - customRender: ({ record }) => - `${record.activityFlag === 1 ? t('当前版本') : t('非当前版本')}`, //1-当前版本 0-非当前版本 + dataIndex: 'activityFlag', + title: t('状态'), + customRender: ({ record }) => + `${record.activityFlag === 1 ? t('当前版本') : t('非当前版本')}`, //1-当前版本 0-非当前版本 }, + { + dataIndex: 'version', + title: t('版本'), + }, + { dataIndex: 'createUserName', title: t('创建人'), diff --git a/src/views/generator/dev/components/DataFirstModal.vue b/src/views/generator/dev/components/DataFirstModal.vue index ca83bb4..21ae291 100644 --- a/src/views/generator/dev/components/DataFirstModal.vue +++ b/src/views/generator/dev/components/DataFirstModal.vue @@ -24,9 +24,22 @@ {{ t('下一步') }} - - {{ t('完成') }} - + + + {{ t('完成') }} + + + {{ t('关闭') }} @@ -51,6 +64,7 @@ getCodeTemplateInfo, saveDraftGeneratorCode, updateDraftGeneratorCode, + downloadCodes, } from '/@/api/system/generator'; import { FormProps } from '/@/components/Form'; import { buildOption } from '/@/utils/helper/designHelper'; @@ -66,6 +80,8 @@ import DesignLogo from '/@/components/ModalPanel/src/DesignLogo.vue'; import useGlobalFlag from '/@/hooks/core/useGlobalFlag'; import AjaxErrorIcon from '/@/components/SecondDev/AjaxErrorIcon.vue'; + import { downloadByData } from '/@/utils/file/download'; + import { dateUtil } from '/@/utils/dateUtil'; const { t } = useI18n(); const TableConfigStep = defineAsyncComponent({ @@ -240,7 +256,7 @@ handleClose(); emit('success'); } - async function handleCodeGenerator() { + async function handleCodeGenerator(actionType:String) { const isOk = await stepValidate[5](); if ( generatorConfig.formJson?.hiddenComponent && @@ -259,7 +275,16 @@ buildOption(generatorConfig.formJson) as FormProps, ); if (templateId.value) data.id = templateId.value; - await dataFirstGeneratorCode(data); + data.actionType=actionType; + const result = await dataFirstGeneratorCode(data); + if(data.actionType=="packAndDownload"&&result){ + const fileName=data.outputConfig.className+'_'+dateUtil(new Date()).format('YYYY-MM-DD_HH_mm_ss'); + const res = await downloadCodes({uuid:result}); + downloadByData( + res.data, + fileName+".zip" + ); + } handleClose(); emit('success'); } From be3f19fb05a07dceb4cfef77807a3eaa51b048ee Mon Sep 17 00:00:00 2001 From: suguangxu <274928232@qq.com> Date: Thu, 24 Apr 2025 15:05:13 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=95=8C=E9=9D=A2=E4=BC=98=E5=85=88?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E3=80=81=E7=AE=80=E6=98=93=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=EF=BC=9A=E4=BB=A3=E7=A0=81=E6=89=93=E5=8C=85=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dev/components/CodeFirstModal.vue | 38 +++++++++++++++---- .../dev/components/SimpleTemplateModal.vue | 34 ++++++++++++++--- 2 files changed, 59 insertions(+), 13 deletions(-) diff --git a/src/views/generator/dev/components/CodeFirstModal.vue b/src/views/generator/dev/components/CodeFirstModal.vue index 34d7603..b2816b5 100644 --- a/src/views/generator/dev/components/CodeFirstModal.vue +++ b/src/views/generator/dev/components/CodeFirstModal.vue @@ -25,9 +25,21 @@ {{ t('下一步') }} - - {{ t('完成') }} - + + + {{ t('完成') }} + + + {{ t('关闭') }} @@ -57,6 +69,7 @@ getCodeTemplateInfo, saveDraftGeneratorCode, updateDraftGeneratorCode, + downloadCodes, } from '/@/api/system/generator'; import { FormProps } from '/@/components/Form'; import { buildOption } from '/@/utils/helper/designHelper'; @@ -73,6 +86,9 @@ import DesignLogo from '/@/components/ModalPanel/src/DesignLogo.vue'; import AjaxErrorIcon from '/@/components/SecondDev/AjaxErrorIcon.vue'; import useGlobalFlag from '/@/hooks/core/useGlobalFlag'; + import { downloadByData } from '/@/utils/file/download'; + import { dateUtil } from '/@/utils/dateUtil'; + const { t } = useI18n(); const StructureConfigStep = defineAsyncComponent({ loader: () => import('/@/components/CreateCodeStep/src/StructureConfigStep.vue'), @@ -114,7 +130,6 @@ const widgetForm = ref(JSON.parse(JSON.stringify(antd.widgetForm))); //FormDesignStep -> designer和StructureConfigStep页面使用 const mainTableName = ref('table_' + random(10000, 99999)); const emit = defineEmits(['close', 'register', 'success']); - watch(current, () => { isEditorOpen.value = current.value === 0; }); @@ -245,7 +260,7 @@ handleClose(); emit('success'); } - async function handleCodeGenerator() { + async function handleCodeGenerator(actionType:String) { const isOk = await stepValidate[5](); if ( generatorConfig.formJson?.hiddenComponent && @@ -268,9 +283,16 @@ // await appGeneratorCode( // buildAppCode(generatorConfig, buildAppFormProps(generatorConfig.formJson)), // ); - - await codeFirstGeneratorCode(data); - + data.actionType=actionType; + const result =await codeFirstGeneratorCode(data); + if(data.actionType=="packAndDownload"&&result){ + const fileName=data.outputConfig.className+'_'+dateUtil(new Date()).format('YYYY-MM-DD_HH_mm_ss'); + const res = await downloadCodes({uuid:result}); + downloadByData( + res.data, + fileName+".zip" + ); + } handleClose(); emit('success'); } diff --git a/src/views/generator/dev/components/SimpleTemplateModal.vue b/src/views/generator/dev/components/SimpleTemplateModal.vue index 6b74f16..1fb4859 100644 --- a/src/views/generator/dev/components/SimpleTemplateModal.vue +++ b/src/views/generator/dev/components/SimpleTemplateModal.vue @@ -24,9 +24,21 @@ {{ t('下一步') }} - - {{ t('完成') }} - + + + {{ t('完成') }} + + + {{ t('关闭') }} @@ -57,6 +69,7 @@ saveDraftGeneratorCode, updateDraftGeneratorCode, getMasterInfo, + downloadCodes, } from '/@/api/system/generator'; import { FormProps } from '/@/components/Form'; import { buildOption } from '/@/utils/helper/designHelper'; @@ -71,6 +84,8 @@ import { MenuConfig } from '/@/model/generator/menuConfig'; import { FormEventColumnConfig } from '/@/model/generator/formEventConfig'; import DesignLogo from '/@/components/ModalPanel/src/DesignLogo.vue'; + import { downloadByData } from '/@/utils/file/download'; + import { dateUtil } from '/@/utils/dateUtil'; const { t } = useI18n(); const StructureConfigStep = defineAsyncComponent({ @@ -244,7 +259,7 @@ handleClose(); emit('success'); } - async function handleCodeGenerator() { + async function handleCodeGenerator(actionType:String) { const isOk = await stepValidate[5](); if ( generatorConfig.formJson?.hiddenComponent && @@ -263,7 +278,16 @@ buildOption(generatorConfig.formJson) as FormProps, ); if (templateId.value) data.id = templateId.value; - await codeFirstGeneratorCode(data); + data.actionType=actionType; + const result =await codeFirstGeneratorCode(data); + if(data.actionType=="packAndDownload"&&result){ + const fileName=data.outputConfig.className+'_'+dateUtil(new Date()).format('YYYY-MM-DD_HH_mm_ss'); + const res = await downloadCodes({uuid:result}); + downloadByData( + res.data, + fileName+".zip" + ); + } handleClose(); emit('success'); }