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