From 9f73ea2d329abd721afd0213fb5803aad723f667 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: 星期六, 06 四月 2024 11:21:17 +0800 Subject: [PATCH] update 优化表单绑定逻辑,移除流程定义配置表单,添加模型复制 --- src/components/Process/submitVerify.vue | 13 +++- src/api/workflow/model/index.ts | 13 ++++ src/api/workflow/workflowCommon/index.ts | 24 ------- src/api/workflow/task/types.ts | 1 src/api/workflow/workflowCommon/types.ts | 2 src/views/workflow/processDefinition/index.vue | 70 ----------------------- src/views/workflow/model/index.vue | 43 +++++++++++--- 7 files changed, 58 insertions(+), 108 deletions(-) diff --git a/src/api/workflow/model/index.ts b/src/api/workflow/model/index.ts index f58cdd3..56f7fed 100644 --- a/src/api/workflow/model/index.ts +++ b/src/api/workflow/model/index.ts @@ -89,3 +89,16 @@ method: 'post' }); }; + +/** + * 澶嶅埗妯″瀷 + * @param data + * @returns {*} + */ +export const copyModel = (data: ModelForm): AxiosPromise<void> => { + return request({ + url: '/workflow/model/copyModel', + method: 'post', + data: data + }); +}; \ No newline at end of file diff --git a/src/api/workflow/task/types.ts b/src/api/workflow/task/types.ts index 0425a1a..5b24aa0 100644 --- a/src/api/workflow/task/types.ts +++ b/src/api/workflow/task/types.ts @@ -40,7 +40,6 @@ multiInstance?: boolean; businessKey?: string; wfNodeConfigVo?: NodeConfigVO; - wfDefinitionConfigVo?: DefinitionConfigVO; } export interface VariableVo { diff --git a/src/api/workflow/workflowCommon/index.ts b/src/api/workflow/workflowCommon/index.ts index b2846b2..a90216a 100644 --- a/src/api/workflow/workflowCommon/index.ts +++ b/src/api/workflow/workflowCommon/index.ts @@ -22,28 +22,8 @@ taskId: routerJumpVo.taskId } }); - }else if (routerJumpVo.wfDefinitionConfigVo && routerJumpVo.wfDefinitionConfigVo.wfFormManageVo && routerJumpVo.wfDefinitionConfigVo.wfFormManageVo.formType === 'static') { - proxy.$tab.closePage(proxy.$route); - proxy.$router.push({ - path: `${routerJumpVo.wfDefinitionConfigVo.wfFormManageVo.router}`, - query: { - id: routerJumpVo.businessKey, - type: routerJumpVo.type, - taskId: routerJumpVo.taskId - } - }); - }else if (routerJumpVo.wfDefinitionConfigVo && routerJumpVo.wfDefinitionConfigVo.wfFormManageVo && routerJumpVo.wfDefinitionConfigVo.wfFormManageVo.formType === 'dynamic') { - proxy.$tab.closePage(proxy.$route); - proxy.$router.push({ - path: `${routerJumpVo.wfDefinitionConfigVo.wfFormManageVo.router}`, - query: { - id: routerJumpVo.businessKey, - type: routerJumpVo.type, - taskId: routerJumpVo.taskId - } - }); - } else { - proxy?.$modal.msgError('璇峰埌娴佺▼瀹氫箟鑿滃崟閰嶇疆璺敱锛�'); + }else { + proxy?.$modal.msgError('璇峰埌妯″瀷閰嶇疆鑿滃崟锛�'); } } } \ No newline at end of file diff --git a/src/api/workflow/workflowCommon/types.ts b/src/api/workflow/workflowCommon/types.ts index 698c849..9bd2454 100644 --- a/src/api/workflow/workflowCommon/types.ts +++ b/src/api/workflow/workflowCommon/types.ts @@ -1,8 +1,6 @@ import { NodeConfigVO } from '@/api/workflow/nodeConfig/types'; -import { DefinitionConfigVO } from '@/api/workflow/definitionConfig/types'; export interface RouterJumpVo { - wfDefinitionConfigVo: DefinitionConfigVO; wfNodeConfigVo: NodeConfigVO; businessKey: string; taskId: string; diff --git a/src/components/Process/submitVerify.vue b/src/components/Process/submitVerify.vue index b0e4c11..ca8ac9e 100644 --- a/src/components/Process/submitVerify.vue +++ b/src/components/Process/submitVerify.vue @@ -209,10 +209,15 @@ await proxy?.$modal.confirm('鏄惁纭鎻愪氦锛�'); loading.value = true; buttonLoading.value = true; - await completeTask(form.value).finally(() => (loading.value = false)); - dialog.visible = false; - emits('submitCallback'); - proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); + try { + await completeTask(form.value); + dialog.visible = false; + emits('submitCallback'); + proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); + }finally { + loading.value = false + buttonLoading.value = false + } }; /** 椹冲洖寮圭獥鎵撳紑 */ diff --git a/src/views/workflow/model/index.vue b/src/views/workflow/model/index.vue index b3a7a68..e5cff45 100644 --- a/src/views/workflow/model/index.vue +++ b/src/views/workflow/model/index.vue @@ -59,7 +59,7 @@ <el-table border v-loading="loading" :data="modelList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> - <el-table-column fixed align="center" type="index" label="搴忓彿" width="50"></el-table-column> + <el-table-column fixed align="center" type="index" label="搴忓彿" width="80"></el-table-column> <el-table-column align="center" :show-overflow-tooltip="true" prop="name" label="妯″瀷鍚嶇О" width="200"></el-table-column> <el-table-column align="center" prop="key" label="妯″瀷KEY"></el-table-column> <el-table-column align="center" prop="version" label="鐗堟湰鍙�" width="90"> @@ -68,7 +68,7 @@ <el-table-column align="center" prop="metaInfo" label="澶囨敞璇存槑" min-width="130"></el-table-column> <el-table-column align="center" :show-overflow-tooltip="true" prop="createTime" label="鍒涘缓鏃堕棿" width="160"></el-table-column> <el-table-column align="center" :show-overflow-tooltip="true" prop="lastUpdateTime" label="鏇存柊鏃堕棿" width="160"></el-table-column> - <el-table-column fixed="right" label="鎿嶄綔" align="center" width="150" class-name="small-padding fixed-width"> + <el-table-column fixed="right" label="鎿嶄綔" align="center" width="170" class-name="small-padding fixed-width"> <template #default="scope"> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> @@ -82,6 +82,11 @@ <el-col :span="1.5"> <el-button link type="primary" size="small" icon="ScaleToOriginal" @click="clickDeploy(scope.row.id, scope.row.key)"> 娴佺▼閮ㄧ讲 + </el-button> + </el-col> + <el-col :span="1.5"> + <el-button link type="primary" size="small" icon="CopyDocument" @click="handleCopy(scope.row)"> + 澶嶅埗妯″瀷 </el-button> </el-col> </el-row> @@ -105,10 +110,10 @@ <el-dialog v-model="dialog.visible" :title="dialog.title" width="650px" append-to-body :close-on-click-modal="false"> <el-form ref="formRef" :model="form" :rules="rules" label-width="100px"> <el-form-item label="妯″瀷鍚嶇О锛�" prop="name"> - <el-input v-model="form.name" :disabled="ids && ids.length > 0" maxlength="20" show-word-limit /> + <el-input v-model="form.name" :disabled="ids && ids.length > 0 && billType === 'update'" maxlength="20" show-word-limit /> </el-form-item> <el-form-item label="妯″瀷KEY锛�" prop="key"> - <el-input v-model="form.key" :disabled="ids && ids.length > 0" maxlength="20" show-word-limit /> + <el-input v-model="form.key" :disabled="ids && ids.length > 0 && billType === 'update'" maxlength="20" show-word-limit /> </el-form-item> <el-form-item label="娴佺▼鍒嗙被" prop="categoryCode"> <el-tree-select @@ -139,6 +144,7 @@ import { listModel, addModel, delModel, modelDeploy, getInfo, update } from '@/api/workflow/model'; import { ModelQuery, ModelForm, ModelVO } from '@/api/workflow/model/types'; import { listCategory } from '@/api/workflow/category'; +import { copyModel } from '@/api/workflow/model/index'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; @@ -163,7 +169,7 @@ const modelList = ref<ModelVO[]>([]); const categoryOptions = ref<CategoryOption[]>([]); const categoryName = ref(''); -const modelId = ref<string>(''); +const billType = ref<string>(''); const dialog = reactive<DialogOption>({ visible: false, @@ -268,14 +274,18 @@ await getList(); proxy?.$modal.msgSuccess('閮ㄧ讲鎴愬姛'); }; +//鏂板鎵撳紑 const handleAdd = () => { + billType.value = 'add'; ids.value = []; getTreeselect(); form.value = { ...initFormData }; dialog.visible = true; dialog.title = '鏂板妯″瀷'; }; +//淇敼鎵撳紑 const handleUpdate = () => { + billType.value = 'update'; dialog.title = '淇敼妯″瀷'; nextTick(async () => { await getTreeselect(); @@ -286,20 +296,35 @@ }); }; +//澶嶅埗鎵撳紑 +const handleCopy = (row?: ModelVO) => { + billType.value = 'copy'; + dialog.title = '澶嶅埗妯″瀷'; + nextTick(async () => { + await getTreeselect(); + form.value = { ...initFormData }; + form.value.id = row.id + dialog.visible = true; + }); +}; + /** 鎻愪氦鎸夐挳 */ const submitForm = () => { formRef.value.validate(async (valid: boolean) => { if (valid) { buttonLoading.value = true; - if (ids.value && ids.value.length > 0) { + if('copy' === billType.value){ + await copyModel(form.value); + proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); + }else if(ids.value && ids.value.length > 0 && 'update' === billType.value){ form.value.id = ids.value[0]; await update(form.value); - proxy?.$modal.msgSuccess('鏂板鎴愬姛'); - } else { + proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); + }else { initXml(form.value.key, form.value.name); form.value.xml = xml.value; await addModel(form.value); - proxy?.$modal.msgSuccess('鏂板鎴愬姛'); + proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); } dialog.visible = false; await getList(); diff --git a/src/views/workflow/processDefinition/index.vue b/src/views/workflow/processDefinition/index.vue index d41bc95..a3c26df 100644 --- a/src/views/workflow/processDefinition/index.vue +++ b/src/views/workflow/processDefinition/index.vue @@ -108,7 +108,6 @@ <template #dropdown> <el-dropdown-menu> <el-dropdown-item @click="getProcessDefinitionHitoryList(scope.row.id, scope.row.key)">鍘嗗彶鐗堟湰</el-dropdown-item> - <el-dropdown-item @click="handleFormOpen(scope.row)">琛ㄥ崟閰嶇疆</el-dropdown-item> </el-dropdown-menu> </template> </el-dropdown> @@ -211,38 +210,10 @@ <el-col :span="1.5"> <el-button link type="primary" icon="Sort" size="small" @click="handleConvertToModel(scope.row)"> 杞崲妯″瀷 </el-button> </el-col> - <el-col :span="1.5"> - <el-button link type="primary" icon="Setting" size="small" @click="handleFormOpen(scope.row)"> 琛ㄥ崟閰嶇疆 </el-button> - </el-col> </el-row> </template> </el-table-column> </el-table> - </el-dialog> - <!-- 琛ㄥ崟閰嶇疆 --> - <el-dialog v-model="formDialog.visible" :title="formDialog.title" width="650px" append-to-body :close-on-click-modal="false"> - <el-form :model="definitionConfigForm" label-width="auto"> - <el-form-item label="娴佺▼KEY"> - <el-input v-model="definitionConfigForm.processKey" disabled/> - </el-form-item> - <el-form-item label="琛ㄥ崟" prop="formId"> - <el-select v-model="definitionConfigForm.formId" clearable filterable placeholder="璇烽�夋嫨琛ㄥ崟" style="width: 260px" > - <el-option v-for="item in formManageList" :key="item.id" :label="item.formTypeName+':'+item.formName" :value="item.id" /> - </el-select> - </el-form-item> - <el-form-item label="澶囨敞"> - <el-input v-model="definitionConfigForm.remark" type="textarea" resize="none"/> - </el-form-item> - </el-form> - - <template #footer> - <div class="dialog-footer"> - <el-button @click="formDialog.visible = false">鍙栨秷</el-button> - <el-button type="primary" @click="handlerSaveForm"> - 淇濆瓨 - </el-button> - </div> - </template> </el-dialog> </div> </template> @@ -260,15 +231,10 @@ } from '@/api/workflow/processDefinition'; import ProcessPreview from './components/processPreview.vue'; import { listCategory } from '@/api/workflow/category'; -import { getByDefId,saveOrUpdate } from '@/api/workflow/definitionConfig'; import { CategoryVO } from '@/api/workflow/category/types'; import { ProcessDefinitionQuery, ProcessDefinitionVO } from '@/api/workflow/processDefinition/types'; -import { definitionConfigForm } from '@/api/workflow/definitionConfig/types'; import { UploadRequestOptions } from 'element-plus'; -import { FormManageVO } from '@/api/workflow/formManage/types'; -import { selectListFormManage } from '@/api/workflow/formManage'; -const formManageList = ref<FormManageVO[]>([]); const { proxy } = getCurrentInstance() as ComponentInternalInstance; const previewRef = ref<InstanceType<typeof ProcessPreview>>(); @@ -295,7 +261,6 @@ const categoryName = ref(''); /** 閮ㄧ讲鏂囦欢鍒嗙被閫夋嫨 */ const selectCategory = ref(); -const definitionConfigForm = ref<definitionConfigForm>({}); const uploadDialog = reactive<DialogOption>({ visible: false, @@ -305,11 +270,6 @@ const processDefinitionDialog = reactive<DialogOption>({ visible: false, title: '鍘嗗彶鐗堟湰' -}); - -const formDialog = reactive<DialogOption>({ - visible: false, - title: '琛ㄥ崟閰嶇疆' }); // 鏌ヨ鍙傛暟 @@ -476,34 +436,4 @@ }); return; }; -//鎵撳紑琛ㄥ崟閰嶇疆 -const handleFormOpen = async (row: ProcessDefinitionVO) => { - listFormManage() - formDialog.visible = true - definitionConfigForm.value.processKey = row.key - definitionConfigForm.value.definitionId = row.id - const resp = await getByDefId(row.id) - if(resp.data){ - definitionConfigForm.value = resp.data - }else{ - definitionConfigForm.value.formId = undefined - definitionConfigForm.value.remark = undefined - } -} -//淇濆瓨琛ㄥ崟 -const handlerSaveForm = async () => { - await proxy?.$modal.confirm('鏄惁纭淇濆瓨锛�'); - saveOrUpdate(definitionConfigForm.value).then(resp=>{ - if(resp.code === 200){ - proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); - formDialog.visible = false - getList(); - } - }) -} -//琛ㄥ崟鍒楄〃 -const listFormManage = async () => { - const res = await selectListFormManage(); - formManageList.value = res.data; -} </script> -- Gitblit v1.9.3