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