From 407f5b7390c60dcd89a1fd5016b494990bdf4418 Mon Sep 17 00:00:00 2001 From: GAOANG <1140589958@qq.com> Date: Tue, 22 Apr 2025 11:02:15 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E6=B5=81=E7=A8=8B=E4=B8=AD?= =?UTF-8?q?=E6=9A=82=E5=AD=98=E8=8D=89=E7=A8=BF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/workflow/process.ts | 12 ++-- src/views/secondDev/approveFlowPage.vue | 68 ++++++++++++++++++- .../task/components/processTasks/DraftsV2.vue | 27 +++++--- 3 files changed, 94 insertions(+), 13 deletions(-) diff --git a/src/api/workflow/process.ts b/src/api/workflow/process.ts index 2f96a25..a7bcaf1 100644 --- a/src/api/workflow/process.ts +++ b/src/api/workflow/process.ts @@ -74,12 +74,14 @@ export async function postDraft( schemaId: string, formData: Array, dataId?: string, + processId='', + taskId='', mode: ErrorMessageMode = 'modal', ) { return defHttp.post( { url: Api.Draft, - params: { formData, schemaId, dataId }, + params: { formData, schemaId, dataId, processId, taskId }, }, { errorMessageMode: mode, @@ -109,12 +111,14 @@ export async function putDraft( formData: Array, id: string, dataId?: string, + processId='', + taskId='', mode: ErrorMessageMode = 'modal', ) { return defHttp.put( { url: Api.Draft, - params: { formData, schemaId, id, dataId }, + params: { formData, schemaId, id, dataId, processId, taskId }, }, { errorMessageMode: mode, @@ -139,7 +143,7 @@ export async function deleteDraft(ids: string[], mode: ErrorMessageMode = 'modal /** * @description: 获取草稿详情 */ -export async function getDraftInfo(id: string, mode: ErrorMessageMode = 'modal') { +export async function getDraftInfo(id: string, taskId, userId, mode: ErrorMessageMode = 'modal') { return defHttp.get<{ formData: string; name: string; @@ -148,7 +152,7 @@ export async function getDraftInfo(id: string, mode: ErrorMessageMode = 'modal') }>( { url: Api.DraftInfo, - params: { id }, + params: { id, taskId, userId }, }, { errorMessageMode: mode, diff --git a/src/views/secondDev/approveFlowPage.vue b/src/views/secondDev/approveFlowPage.vue index 9b91881..d935f1d 100644 --- a/src/views/secondDev/approveFlowPage.vue +++ b/src/views/secondDev/approveFlowPage.vue @@ -10,6 +10,12 @@ 关闭 + + 暂存 + + + 从草稿导入 + @@ -86,6 +92,9 @@ import { useI18n } from '/@/hooks/web/useI18n'; import { useMessage } from '/@/hooks/web/useMessage'; import { useUserStore } from '/@/store/modules/user'; + import { deleteDraft, postDraft, putDraft, getDraftInfo } from '/@/api/workflow/process'; + import { TaskTypeUrl } from '/@/enums/workflowEnum'; + const spinning = ref(false); const userStore = useUserStore(); @@ -105,6 +114,7 @@ const taskId = ref(rQuery.taskId); const processId = ref(rParams.arg2); const readonly = ref(!!rQuery.readonly); // 查看流程会触发只读模式 + const rDraftsId = ref(rQuery.draftId || '') const renderKey = ref(''); const formConfigs = ref(); const opinionDlg = ref(); @@ -115,7 +125,13 @@ const hasBtnApprove = ref(true); const hasBtnReject = ref(false); const hasBtnFinish = ref(false); + let draftData = {} const drawNode = ref(''); + const props = defineProps({ + rowKeyData: { + type: String + } + }); let approvalData = reactive({ isCountersign: false, @@ -135,7 +151,6 @@ nextTaskUser: {} // 格式为taskKey: 用户id(逗号分隔) }); let approvedType = ref(ApproveType.AGREE); - function onMoreClick(e) { const key = e.key; if (key === 'flowchart') { @@ -194,6 +209,56 @@ function close() { tabStore.closeTab(currentRoute, router); } + async function setDraft(needModal = true) { + let formData = []; + let params = { + taskId: taskId.value, + userId: userStore.getUserInfo.id, + } + let res = await getDraftInfo('', taskId.value, userStore.getUserInfo.id) + if(res) { + draftData = JSON.parse(res.formData) + rDraftsId.value = res.id + if(!needModal) return + Modal.confirm({ + title: () => '提示', + content: () => '确认使用草稿覆盖当前数据?', + onOk: async () => { + data.formInfos.forEach((item) => { + if (draftData && item.formConfig && item.formConfig.key && draftData[item.formConfig.key]) { + formData.push(item.formConfig.key ? draftData[item.formConfig.key] : {}); + } + }); + await formInformation.value.setFormData(formData); + } + }); + } + } + async function saveDraft() { + try { + spinning.value = true; + let formModels = await formInformation.value.saveDraftData(); + if (rDraftsId.value) { + let res = await putDraft(schemaId.value, formModels, rDraftsId.value, props.rowKeyData, processId.value, taskId.value); + showResult(res, '保存草稿'); + } else { + let res = await postDraft(schemaId.value, formModels, props.rowKeyData, processId.value, taskId.value ); + showResult(res, '保存草稿'); + } + setDraft(false) + spinning.value = false; + } catch (error) { + spinning.value = false; + notificationError('保存草稿'); + } + } + function showResult(res, title) { + if (res) { + notificationSuccess(title); + } else { + notificationError(title); + } + } async function onApproveClick(isAutoAgreeBreak = false) { openSpinning(); @@ -360,6 +425,7 @@ } renderKey.value = Math.random() + ''; getBackNode(); + setDraft() } catch (error) {} }); diff --git a/src/views/workflow/task/components/processTasks/DraftsV2.vue b/src/views/workflow/task/components/processTasks/DraftsV2.vue index 47c66f9..e7c8ab0 100644 --- a/src/views/workflow/task/components/processTasks/DraftsV2.vue +++ b/src/views/workflow/task/components/processTasks/DraftsV2.vue @@ -97,18 +97,29 @@ function tableActions(record) { async function handleEdit(record) { try { - let res = await getDraftInfo(record.id); /*processData.draftsId = record.id; processData.schemaId = res.schemaId; processData.draftsJsonStr = res.formData; processData.visible = true;*/ - localStorage.setItem('draftsJsonStr', res.formData); - router.push({ - path: `/flow/${res.schemaId}/${record.id}/createFlow`, - query: { - createType: 'drafts' - } - }); + const { schemaId, processId, taskId, id } = record; + if(taskId){ + router.push({ + path: '/flow/' + schemaId + '/' + (processId || '') + '/approveFlow', + query: { + taskId: taskId, + draftId: id, + } + }); + } else { + let res = await getDraftInfo(record.id); + localStorage.setItem('draftsJsonStr', res.formData); + router.push({ + path: `/flow/${schemaId}/${id}/createFlow`, + query: { + createType: 'drafts' + } + }); + } } catch (error) { } } From ca885bb644ea04f80198cf13ee9bb8dfe31ae448 Mon Sep 17 00:00:00 2001 From: lvjunzhao <967725@dms.yudean.com> Date: Wed, 23 Apr 2025 09:00:39 +0800 Subject: [PATCH 2/6] =?UTF-8?q?fixbug:=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=EF=BC=8Cwatch=20=E5=AF=B9=E4=BA=8Eval=20=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E8=A6=81=E7=BD=AE=E7=A9=BA?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E6=98=AF=E4=BC=9A=E5=AF=BC=E8=87=B4=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E8=A1=A8=E5=8D=95=E7=B2=98=E5=80=BC=E8=BF=87=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Form/src/components/Upload.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/Form/src/components/Upload.vue b/src/components/Form/src/components/Upload.vue index e247737..2aca9d5 100644 --- a/src/components/Form/src/components/Upload.vue +++ b/src/components/Form/src/components/Upload.vue @@ -150,6 +150,8 @@ }); folderId.value = fileList.value[0].folderId; } + } else { + folderId.value = ''; } if (!val) { fileList.value = []; From cc76b5269e160e846cc5c414b646b08631f1794f Mon Sep 17 00:00:00 2001 From: lvjunzhao <967725@dms.yudean.com> Date: Wed, 23 Apr 2025 10:08:29 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat:=E5=89=8D=E5=90=8E=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=20=E7=9A=84=E7=A9=BA=E5=80=BC=E7=BD=AE=E6=8D=A2=E6=95=B0?= =?UTF-8?q?=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpmn/panel/process/globalEvent/Index.vue | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/views/workflow/design/bpmn/panel/process/globalEvent/Index.vue b/src/views/workflow/design/bpmn/panel/process/globalEvent/Index.vue index 936b6a6..4da074f 100644 --- a/src/views/workflow/design/bpmn/panel/process/globalEvent/Index.vue +++ b/src/views/workflow/design/bpmn/panel/process/globalEvent/Index.vue @@ -750,6 +750,9 @@ const deletePrequalifyAfterEvent = (index) => { }; const addGlobalFinishBeforeEvent = () => { + if(!processInfo.value.globalFinishBeforeEventConfigs) { + processInfo.value.globalFinishBeforeEventConfigs = []; + } processInfo.value.globalFinishBeforeEventConfigs.push({ type: NodeEventExType.API, apiConfig: {}, @@ -761,6 +764,9 @@ const deleteFinishBeforeEvent = (index) => { }; const addGlobalRejectAfterEvent = () => { + if(!processInfo.value.globalRejectAfterEventConfigs) { + processInfo.value.globalRejectAfterEventConfigs = []; + } processInfo.value.globalRejectAfterEventConfigs.push({ type: NodeEventExType.API, apiConfig: {}, @@ -772,6 +778,9 @@ const deleteRejectAfterEvent = (index) => { }; const addGlobalAgreeAfterEvent = () => { + if(!processInfo.value.globalAgreeAfterEventConfigs) { + processInfo.value.globalAgreeAfterEventConfigs = []; + } processInfo.value.globalAgreeAfterEventConfigs.push({ type: NodeEventExType.API, apiConfig: {}, @@ -783,6 +792,9 @@ const deleteAgreeAfterEvent = (index) => { }; const addGlobalSuspendedBeforeEvent = () => { + if(!processInfo.value.globalSuspendedBeforeEventConfigs) { + processInfo.value.globalSuspendedBeforeEventConfigs = []; + } processInfo.value.globalSuspendedBeforeEventConfigs.push({ type: NodeEventExType.API, apiConfig: {}, @@ -794,6 +806,9 @@ const deleteSuspendedBeforeEvent = (index) => { }; const addGlobalRestoreAfterEvent = () => { + if(!processInfo.value.globalRestoreAfterEventConfigs) { + processInfo.value.globalRestoreAfterEventConfigs = []; + } processInfo.value.globalRestoreAfterEventConfigs.push({ type: NodeEventExType.API, apiConfig: {}, @@ -805,6 +820,9 @@ const deleteRestoreAfterEvent = (index) => { }; // 全局会签事件添加 const addGlobalSetSignAfterEvent = () => { + if(!processInfo.value.globalSetSignAfterEventConfigs) { + processInfo.value.globalSetSignAfterEventConfigs = []; + } processInfo.value.globalSetSignAfterEventConfigs.push({ type: NodeEventExType.API, apiConfig: {}, From b0fb94e2721d841301bea5f3990d55987743bed2 Mon Sep 17 00:00:00 2001 From: lvjunzhao <967725@dms.yudean.com> Date: Wed, 23 Apr 2025 14:19:54 +0800 Subject: [PATCH 4/6] =?UTF-8?q?feat:=E5=89=8D=E5=90=8E=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=20=E7=9A=84=E7=A9=BA=E5=80=BC=E7=BD=AE=E6=8D=A2=E6=95=B0?= =?UTF-8?q?=E7=BB=84=20=E5=85=A8=E9=83=A8=E9=83=BD=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/bpmn/panel/process/globalEvent/Index.vue | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/views/workflow/design/bpmn/panel/process/globalEvent/Index.vue b/src/views/workflow/design/bpmn/panel/process/globalEvent/Index.vue index 4da074f..0035584 100644 --- a/src/views/workflow/design/bpmn/panel/process/globalEvent/Index.vue +++ b/src/views/workflow/design/bpmn/panel/process/globalEvent/Index.vue @@ -707,6 +707,9 @@ const columns = ref([ ]); const addGlobalStartEvent = () => { + if(!processInfo.value.globalStartEventConfigs) { + processInfo.value.globalStartEventConfigs = []; + } processInfo.value.globalStartEventConfigs.push({ type: NodeEventExType.API, apiConfig: {}, @@ -717,6 +720,9 @@ const deleteStartEvent = (index) => { processInfo.value.globalStartEventConfigs.splice(index, 1); }; const addGlobalEndEvent = () => { + if(!processInfo.value.globalEndEventConfigs) { + processInfo.value.globalEndEventConfigs = []; + } processInfo.value.globalEndEventConfigs.push({ type: NodeEventExType.API, apiConfig: {}, @@ -728,6 +734,9 @@ const deleteEndEvent = (index) => { }; const addGlobalPrequalifyBeforeEvent = () => { + if(!processInfo.value.globalPrequalifyBeforeEventConfigs) { + processInfo.value.globalPrequalifyBeforeEventConfigs = []; + } processInfo.value.globalPrequalifyBeforeEventConfigs.push({ type: NodeEventExType.API, apiConfig: {}, @@ -739,6 +748,9 @@ const deletePrequalifyBeforeEvent = (index) => { }; const addGlobalPrequalifyAfterEvent = () => { + if(!processInfo.value.globalPrequalifyAfterEventConfigs) { + processInfo.value.globalPrequalifyAfterEventConfigs = []; + } processInfo.value.globalPrequalifyAfterEventConfigs.push({ type: NodeEventExType.API, apiConfig: {}, 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 5/6] =?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 6/6] =?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'); }