From eb67a6912a32c55e04156c00ecdb92a4e1f73246 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Sat, 2 Dec 2023 15:36:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=B7=A5=E4=BD=9C=E6=B5=81?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/DesignForm/requestapi.ts | 25 ++ .../DesignForm/public/form/form.vue | 135 +++++++- src/utils/workflow/const.ts | 52 ++- .../taskplatform/taskmanagement/drafts.vue | 24 +- .../taskmanagement/editFlowData.vue | 317 ++++++++++++++++++ .../taskmanagement/lookFlowInfo.vue | 127 ++++++- .../taskplatform/taskmanagement/myrequest.vue | 48 ++- .../taskmanagement/runFlowStep.vue | 6 +- 8 files changed, 711 insertions(+), 23 deletions(-) create mode 100644 src/views/taskplatform/taskmanagement/editFlowData.vue diff --git a/src/api/DesignForm/requestapi.ts b/src/api/DesignForm/requestapi.ts index a57f87ead..5f5c00c4b 100644 --- a/src/api/DesignForm/requestapi.ts +++ b/src/api/DesignForm/requestapi.ts @@ -236,3 +236,28 @@ export function afreshRunFlow(data?:enableVersionId){ data: data }); } +//已有表单数据,只发布流程 +export function onlyPublishFlow(data?:any){ + return request({ + url: '/systemapi/task_flow/onlyPublishFlow', + method: 'post', + data: data + }); +} +//撤回申请 +export function retractRunFlow(data?:enableVersionId){ + return request({ + url: '/systemapi/task_flow/retractRunFlow', + method: 'post', + data: data + }); +} + +//获取要修改的数据 +export function gainEditFormFlowInfo(data?:enableVersionId){ + return request({ + url: '/systemapi/task_flow/gainEditFormFlowInfo', + method: 'post', + data: data + }); +} diff --git a/src/components/DesignForm/public/form/form.vue b/src/components/DesignForm/public/form/form.vue index 8b817b3fe..9e16f4aa3 100644 --- a/src/components/DesignForm/public/form/form.vue +++ b/src/components/DesignForm/public/form/form.vue @@ -40,6 +40,7 @@ const props = withDefaults( saveDraftPage?: Function //保存草稿 saveEditFormInfo?: Function //保存草稿 只改表单不操作流程 sendDraftSubmit?: Function //草稿提交审批 + submitEdit?: Function //提交修改数据申请 value?: { [key: string]: any } // 表单初始值,同setValue options?: { [key: string]: any } // 表单组件选项,同setOptions dict?: object // 固定匹配的字典 @@ -332,10 +333,74 @@ provide(constFormBtnEvent, (obj: any) => { case 'draftSubmit': //草稿提交审批 draftSubmit() break + case 'submitEdit': //申请修改 + submitEditButton() + break default: break } }) +//修改流程表单数据回显 +const getEditData = (params = {}) => { + let requestUrl ="/systemapi/task_flow/gainEditFormFlowInfo" + loading.value = true + const newParams: any = params + // 同时可使用props或是events里的事件,根据使用使用其中一种即可 + let newParams2 + const beforeRequest = props.formData.events?.beforeRequest + if (typeof beforeRequest === 'function') { + newParams2 = beforeRequest(newParams, route) + } + if (typeof props.beforeRequest === 'function') { + newParams2 = props.beforeRequest(newParams, route) + } + if (newParams2 === false) { + // 停止数据请求 + return + } + currencyFormApiSubmit(requestUrl, newParams2 ?? newParams) + .then((res: any) => { + loading.value = false + const result = res.data.masterDataInfo + result.formKey = newParams.id + result.formId = newParams.version + + if (result) { + let formatRes: any = result + // 比较适用通用表单,保存在服务端 + const afterResponse = props.formData.events?.afterResponse + + if (typeof afterResponse === 'string' && afterResponse) { + formatRes = formatResult(result, afterResponse) + } else if (typeof afterResponse === 'function') { + formatRes = afterResponse(result) ?? result + } + // 比较适用于导出vue文件 + if (typeof props.afterResponse === 'string' && props.afterResponse) { + formatRes = formatResult(result, props.afterResponse) + } else if (typeof props.afterResponse === 'function') { + formatRes = props.afterResponse(result) ?? result + } + if (formatRes === false) { + return + } + console.log("停止数据请求--->",formatRes) + setValue(formatRes.result || formatRes) + nextTick(() => { + // 将dict保存,可用于从接口中设置表单组件options。 + if (formatRes.dict && Object.keys(formatRes.dict).length) { + resultDict.value = formatRes.dict + } + }) + } + return res.data + }) + .catch(res => { + loading.value = false + return ElMessage.error(res.message) + }) +} + // 获取表单数据,编辑时,外部调用 const getData = (params = {}) => { let requestUrl = props.formData.config?.requestUrl || props.requestUrl @@ -839,6 +904,72 @@ const sendDraftSubmit = (type: string, res: any) => { ElMessage.error(res.message || '提交失败!') } } +/** + * 申请修改 + */ + const submitEditButton = (params = {}) => { + let apiUrl = "/systemapi/task_flow/editFormLogData" + if (props.isSearch || !apiUrl || loading.value) { + if (!props.isSearch && !apiUrl) { + console.error( + new Error('请在表单设计处配置接口事件url或选择数据源或设置props') + ) + } + // 列表里作为筛选时,不提交表单 + return + } + validate((valid: boolean, fields: any) => { + if (valid) { + const formatParams = Object.assign({}, fields, params) + let submitParams + const beforeSubmit = props.formData.events?.beforeSubmit + if (beforeSubmit) { + if (typeof beforeSubmit === 'function') { + submitParams = beforeSubmit(formatParams, route) + } else { + submitParams = formatResult(formatParams, beforeSubmit) + } + } + if (props.beforeSubmit && typeof props.beforeSubmit === 'string') { + submitParams = formatResult(formatParams, props.beforeSubmit) + } else if (typeof props.beforeSubmit === 'function') { + submitParams = props.beforeSubmit(formatParams, route) + } + if (submitParams === false) { + return + } + console.log("提交修改数据",apiUrl,submitParams,formatParams) + // 提交保存表单 + currencyFormApiSubmit(apiUrl, submitParams ?? formatParams) + .then((res: any) => { + submitEdit('success', res) + }) + .catch(res => { + submitEdit('fail', res) + }) + }else { + // 没通过校验 + submitEdit('validate', fields) + } + }) +} +//提交修改数据 +const submitEdit = (type: string, res: any) => { + const sendDraftSubmit = props.formData.events?.sendDraftSubmit + let notReturn + if (typeof sendDraftSubmit === 'function') { + notReturn = sendDraftSubmit(type, res) + // console.log("notReturn-1-123456->",props.sendDraftSubmit) + } else if (typeof props.sendDraftSubmit === 'function') { + notReturn = props.sendDraftSubmit(type, res) + // console.log("notReturn--123456->",props.anewSubmit) + } + loading.value = false + if (notReturn === false) { + // 有返回false时则不提示 + return + } +} defineExpose({ setOptions, @@ -850,7 +981,9 @@ defineExpose({ submit, anewSubmit, saveDraftPage, - saveEditFormInfo + saveEditFormInfo, + getEditData, + submitEdit })