diff --git a/src/api/DesignForm/requestapi.ts b/src/api/DesignForm/requestapi.ts index 86683609d..a57f87ead 100644 --- a/src/api/DesignForm/requestapi.ts +++ b/src/api/DesignForm/requestapi.ts @@ -22,7 +22,8 @@ import { gogoBackFormTabelStruct, nodeFlow, searchUserListForm, - taskflowquery + taskflowquery, + editFlowFormStatus } from './type'; //自定义表单列表 export function getCustomerFormList(queryParams: SearchForm): AxiosPromise { @@ -219,3 +220,19 @@ export function submitApprovalResults(data?:customerFormLogo){ data: data }); } +//改变工作流任务状态 +export function delRunFlow(data?:editFlowFormStatus){ + return request({ + url: '/systemapi/task_flow/delRunFlow', + method: 'post', + data: data + }); +} +//重新发起流程 +export function afreshRunFlow(data?:enableVersionId){ + return request({ + url: '/systemapi/task_flow/afreshRunFlow', + method: 'post', + data: data + }); +} diff --git a/src/api/DesignForm/type.ts b/src/api/DesignForm/type.ts index 0677054db..0f0526d98 100644 --- a/src/api/DesignForm/type.ts +++ b/src/api/DesignForm/type.ts @@ -177,3 +177,8 @@ export interface taskflowquery extends PageQuery{ class?:number; //类型:1、我的请求;2、待办事宜;3、已办事宜;4:草稿箱 state?:number; //状态:状态:1、草稿;2:驳回;3:审批中;4:归档;5:删除 } +//编辑表单状态 +export interface editFlowFormStatus{ + id:string; + status:number; +} diff --git a/src/components/DesignForm/public/form/form.vue b/src/components/DesignForm/public/form/form.vue index a291f48ee..8b817b3fe 100644 --- a/src/components/DesignForm/public/form/form.vue +++ b/src/components/DesignForm/public/form/form.vue @@ -34,8 +34,12 @@ const props = withDefaults( editUrl?: string // 表单数据修改保存提交url beforeSubmit?: Function | string // 表单提交前数据处理,可对提交数据处理,新增和保存都会触发 afterSubmit?: Function // 表单提交后,默认提示提交结果,可return false阻止提示 - closeAppSubmit?: Function + closeAppSubmit?: Function //关闭拉窗 changeKeyVal?: Function //监听表单值该表 + anewSubmit?: Function //重新提交表单 + saveDraftPage?: Function //保存草稿 + saveEditFormInfo?: Function //保存草稿 只改表单不操作流程 + sendDraftSubmit?: Function //草稿提交审批 value?: { [key: string]: any } // 表单初始值,同setValue options?: { [key: string]: any } // 表单组件选项,同setOptions dict?: object // 固定匹配的字典 @@ -316,6 +320,20 @@ provide(constFormBtnEvent, (obj: any) => { notReturn = props.closeAppSubmit() } break + case 'saveDraft': //保存草稿 + saveDraft() // 保存草稿 + break + case "saveEditDraft": //保存草稿 只保存表单不操作流程 + saveEditDraft() + break + case 'afreshSubmit': //重新提交流程 + afreshSubmit() // 提交 + break + case 'draftSubmit': //草稿提交审批 + draftSubmit() + break + default: + break } }) // 获取表单数据,编辑时,外部调用 @@ -334,7 +352,7 @@ const getData = (params = {}) => { requestUrl ="/systemapi/task_management/add_form_data" break; case "editFormContent": - requestUrl ="/systemapi/task_management/customer_form_editdata" + requestUrl ="/systemapi/task_management/newcust_form_editdata" break; default: } @@ -357,7 +375,9 @@ const getData = (params = {}) => { .then((res: any) => { loading.value = false const result = res.data - // console.log("停止数据请求--->",res) + result.formKey = newParams.id + result.formId = newParams.version + console.log("停止数据请求--->",newParams) if (result) { let formatRes: any = result // 比较适用通用表单,保存在服务端 @@ -393,6 +413,7 @@ const getData = (params = {}) => { } +//新增、查看、保存数据 const submit = (params = {}) => { let addUrl = props.formData.config?.addUrl || props.addUrl let editUrl = props.formData.config?.editUrl || props.editUrl @@ -416,7 +437,7 @@ const submit = (params = {}) => { apiUrl ="/systemapi/task_management/add_form_newdata" break; case "editFormContent": - apiUrl ="/systemapi/task_management/customer_form_editdata" + apiUrl ="/systemapi/task_management/newcust_form_editdata" break; default: } @@ -531,6 +552,7 @@ const resetFields = () => { // setValue(Object.assign(model.value, obj || {})) // 这才能清空组件显示的值 } onMounted(() => { + console.log("数据处理结束--->",props.type) getInitModel() nextTick(() => { appendRemoveStyle(true) @@ -543,6 +565,281 @@ onUnmounted(() => { } appendRemoveStyle() }) + +//重洗提交表单流程 +const afreshSubmit = (params = {}) => { + let apiUrl = "/systemapi/task_management/newcust_form_editdata" + 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 + } + // 提交保存表单 + currencyFormApiSubmit(apiUrl, submitParams ?? formatParams) + .then((res: any) => { + anewSubmit('success', res) + }) + .catch(res => { + anewSubmit('fail', res) + }) + }else { + // 没通过校验 + anewSubmit('validate', fields) + } + }) +} + +const anewSubmit = (type: string, res: any) => { + const anewSubmit = props.formData.events?.anewSubmit + let notReturn + if (typeof anewSubmit === 'function') { + notReturn = anewSubmit(type, res) + // console.log("notReturn-1-123456->",props.anewSubmit) + } else if (typeof props.anewSubmit === 'function') { + notReturn = props.anewSubmit(type, res) + // console.log("notReturn--123456->",props.anewSubmit) + } + loading.value = false + if (notReturn === false) { + // 有返回false时则不提示 + return + } + if (type === 'success') { + ElMessage.success(res.msg || '保存成功!') + } else if (type === 'fail') { + ElMessage.error(res.message || '保存失败!') + } +} + +//保存草稿 +const saveDraft = (params = {}) => { + let apiUrl ="/systemapi/task_management/add_form_newdata" + 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 + } + // 提交保存表单 + currencyFormApiSubmit(apiUrl, submitParams ?? formatParams) + .then((res: any) => { + saveDraftPage('success', res) + }) + .catch(res => { + saveDraftPage('fail', res) + }) + }else { + // 没通过校验 + saveDraftPage('validate', fields) + } + }) +} +const saveDraftPage = (type: string, res: any) => { + const saveDraftPage = props.formData.events?.saveDraftPage + let notReturn + if (typeof saveDraftPage === 'function') { + notReturn = saveDraftPage(type, res) + // console.log("notReturn-1-123456->",props.anewSubmit) + } else if (typeof props.saveDraftPage === 'function') { + notReturn = props.saveDraftPage(type, res) + // console.log("notReturn--123456->",props.anewSubmit) + } + loading.value = false + if (notReturn === false) { + // 有返回false时则不提示 + return + } + if (type === 'success') { + ElMessage.success(res.msg || '保存成功!') + } else if (type === 'fail') { + ElMessage.error(res.message || '保存失败!') + } +} +//保存草稿 只保存表单,不操作流程 +const saveEditDraft = (params = {}) => { + let apiUrl = "/systemapi/task_management/newcust_form_editdata" + 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 + } + // 提交保存表单 + currencyFormApiSubmit(apiUrl, submitParams ?? formatParams) + .then((res: any) => { + saveEditFormInfo('success', res) + }) + .catch(res => { + saveEditFormInfo('fail', res) + }) + }else { + // 没通过校验 + saveEditFormInfo('validate', fields) + } + }) +} +const saveEditFormInfo = (type: string, res: any) => { + const saveEditFormInfo = props.formData.events?.saveEditFormInfo + let notReturn + if (typeof saveEditFormInfo === 'function') { + notReturn = saveEditFormInfo(type, res) + // console.log("notReturn-1-123456->",props.saveEditFormInfo) + } else if (typeof props.saveEditFormInfo === 'function') { + notReturn = props.saveEditFormInfo(type, res) + // console.log("notReturn--123456->",props.anewSubmit) + } + loading.value = false + if (notReturn === false) { + // 有返回false时则不提示 + return + } + if (type === 'success') { + ElMessage.success(res.msg || '保存成功!') + } else if (type === 'fail') { + ElMessage.error(res.message || '保存失败!') + } +} +/** + * 草稿提交审批 + */ +const draftSubmit = (params = {}) => { + let apiUrl = "/systemapi/task_management/newcust_form_editdata" + 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 + } + // 提交保存表单 + currencyFormApiSubmit(apiUrl, submitParams ?? formatParams) + .then((res: any) => { + sendDraftSubmit('success', res) + }) + .catch(res => { + sendDraftSubmit('fail', res) + }) + }else { + // 没通过校验 + sendDraftSubmit('validate', fields) + } + }) +} + +const sendDraftSubmit = (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 + } + if (type === 'success') { + ElMessage.success(res.msg || '提交成功!') + } else if (type === 'fail') { + ElMessage.error(res.message || '提交失败!') + } +} + defineExpose({ setOptions, setValue, @@ -550,7 +847,10 @@ defineExpose({ validate, resetFields, getData, - submit + submit, + anewSubmit, + saveDraftPage, + saveEditFormInfo })