Browse Source

!804 feat: 工作流支持审批人撤回
Merge pull request !804 from Lesan/dev

芋道源码 7 months ago
parent
commit
120499a07d

+ 5 - 0
src/api/bpm/task/index.ts

@@ -106,6 +106,11 @@ export const copyTask = async (data: any) => {
   return await request.put({ url: '/bpm/task/copy', data })
 }
 
+// 撤回
+export const withdrawTask = async (taskId: string) => {
+  return await request.put({ url: '/bpm/task/withdraw', params: { taskId } })
+}
+
 // 获取我的待办任务
 export const myTodoTask = async (processInstanceId: string) => {
   return await request.get({ url: '/bpm/task/my-todo?processInstanceId=' + processInstanceId })

+ 21 - 8
src/views/bpm/model/form/ExtraSettings.vue

@@ -11,6 +11,17 @@
         </div>
       </div>
     </el-form-item>
+    <el-form-item class="mb-20px">
+      <template #label>
+        <el-text size="large" tag="b">审批人权限</el-text>
+      </template>
+      <div class="flex flex-col">
+        <el-checkbox v-model="modelData.allowWithdrawTask" label="允许审批人撤回任务" />
+        <div class="ml-22px">
+          <el-text type="info"> 审批人可撤回正在审批节点的前一节点 </el-text>
+        </div>
+      </div>
+    </el-form-item>
     <el-form-item v-if="modelData.processIdRule" class="mb-20px">
       <template #label>
         <el-text size="large" tag="b">流程编码</el-text>
@@ -233,31 +244,30 @@ import HttpRequestSetting from '@/components/SimpleProcessDesignerV2/src/nodes-c
 
 const modelData = defineModel<any>()
 const formFields = ref<string[]>([])
-   
+
 const props = defineProps({
   // 流程表单 ID
   modelFormId: {
     type: Number,
     required: false,
-    default: undefined,
+    default: undefined
   }
 })
 
-
 // 监听 modelFormId 变化
 watch(
   () => props.modelFormId,
   async (newVal) => {
     if (newVal) {
-      const form = await FormApi.getForm(newVal);
-      formFields.value = form?.fields;
+      const form = await FormApi.getForm(newVal)
+      formFields.value = form?.fields
     } else {
       // 如果 modelFormId 为空,清空表单字段
-      formFields.value = [];
+      formFields.value = []
     }
   },
-  { immediate: true },
-);
+  { immediate: true }
+)
 // 暴露给子组件使用
 provide('formFields', formFields)
 
@@ -445,6 +455,9 @@ const initData = () => {
   if (modelData.value.taskAfterTriggerSetting) {
     taskAfterTriggerEnable.value = true
   }
+  if (modelData.value.allowWithdrawTask) {
+    modelData.value.allowWithdrawTask = false
+  }
 }
 defineExpose({ initData })
 

+ 6 - 4
src/views/bpm/model/form/index.vue

@@ -78,9 +78,10 @@
         <!-- 第四步:更多设置 -->
         <div v-show="currentStep === 3" class="mx-auto w-700px">
           <ExtraSettings
-            ref="extraSettingsRef"   
-            v-model="formData" 
-            :model-form-id="formData.formId"/>
+            ref="extraSettingsRef"
+            v-model="formData"
+            :model-form-id="formData.formId"
+          />
         </div>
       </div>
     </div>
@@ -176,7 +177,8 @@ const formData: any = ref({
   summarySetting: {
     enable: false,
     summary: []
-  }
+  },
+  allowWithdrawTask: false
 })
 
 // 流程数据

+ 11 - 1
src/views/bpm/task/done/index.vue

@@ -184,8 +184,9 @@
         :show-overflow-tooltip="true"
       />
       <el-table-column align="center" label="任务编号" prop="id" :show-overflow-tooltip="true" />
-      <el-table-column align="center" label="操作" fixed="right" width="80">
+      <el-table-column align="center" label="操作" fixed="right" width="130">
         <template #default="scope">
+          <el-button link type="warning" @click="handleWithdraw(scope.row)">撤回</el-button>
           <el-button link type="primary" @click="handleAudit(scope.row)">历史</el-button>
         </template>
       </el-table-column>
@@ -209,6 +210,7 @@ import * as DefinitionApi from '@/api/bpm/definition'
 defineOptions({ name: 'BpmDoneTask' })
 
 const { push } = useRouter() // 路由
+const message = useMessage()
 
 const loading = ref(true) // 列表的加载中
 const total = ref(0) // 列表的总页数
@@ -262,6 +264,14 @@ const handleAudit = (row: any) => {
   })
 }
 
+/** 测回按钮 */
+const handleWithdraw = (row: any) => {
+  TaskApi.withdrawTask(row.id).then(() => {
+    message.success('撤回成功')
+    getList()
+  })
+}
+
 /** 初始化 **/
 onMounted(async () => {
   await getList()