24282 11 ヶ月 前
コミット
14a3bac580

+ 4 - 2
jy-flow/src/main/java/com/jy/flow/adapter/AbstractWarmFlowAdapter.java

@@ -1,6 +1,6 @@
 package com.jy.flow.adapter;
 
-
+import cn.hutool.core.util.ObjectUtil;
 import com.jy.framework.satoken.LoginContext;
 import com.warm.flow.core.enums.CooperateType;
 import com.warm.flow.core.service.TaskService;
@@ -24,7 +24,9 @@ public abstract class AbstractWarmFlowAdapter {
     public static List<String> permissionList() {
         List<String> permissionList = new ArrayList<>();
         permissionList.add(LoginContext.getUserId().toString());
-        permissionList.add("dept:" + LoginContext.getDeptId());
+        if (ObjectUtil.isNotEmpty(LoginContext.getDeptId())) {
+            permissionList.add("dept:" + LoginContext.getDeptId());
+        }
         for (Long roleId : LoginContext.getRoleIdSet()) {
             permissionList.add("role:" + roleId);
         }

+ 23 - 21
jy-flow/src/main/java/com/jy/flow/controller/ExecuteController.java

@@ -91,7 +91,7 @@ public class ExecuteController {
     /**
      * 分页待办任务列表
      */
-    @GetMapping("/toDoPage")
+    @GetMapping("/todoPage")
     public Page<FlowTaskVo> toDoPage(FlowTaskDto dto) {
         dto.setPermissionList(AbstractWarmFlowAdapter.permissionList());
         Page<FlowTaskVo> page = executeService.toDoPage(dto);
@@ -111,31 +111,33 @@ public class ExecuteController {
             }
 
             for (User user : users) {
-                if (UserType.APPROVAL.getKey().equals(user.getType())) {
-                    if (StrUtil.isEmpty(taskVo.getApprover())) {
-                        taskVo.setApprover("");
+                switch (UserType.getByKey(user.getType())) {
+                    case APPROVAL -> {
+                        if (StrUtil.isEmpty(taskVo.getApprover())) {
+                            taskVo.setApprover("");
+                        }
+                        String name = getName(user.getProcessedBy());
+                        if (StrUtil.isNotEmpty(name))
+                            taskVo.setApprover(taskVo.getApprover().concat(name).concat(";"));
                     }
-                    String name = getName(user.getProcessedBy());
-                    if (StrUtil.isNotEmpty(name))
-                        taskVo.setApprover(taskVo.getApprover().concat(name).concat(";"));
-
-                } else if (UserType.TRANSFER.getKey().equals(user.getType())) {
-                    if (StrUtil.isEmpty(taskVo.getTransferredBy())) {
-                        taskVo.setTransferredBy("");
+                    case TRANSFER -> {
+                        if (StrUtil.isEmpty(taskVo.getTransferredBy())) {
+                            taskVo.setTransferredBy("");
+                        }
+                        String name = getName(user.getProcessedBy());
+                        if (StrUtil.isNotEmpty(name))
+                            taskVo.setTransferredBy(taskVo.getTransferredBy().concat(name).concat(";"));
                     }
-                    String name = getName(user.getProcessedBy());
-                    if (StrUtil.isNotEmpty(name))
-                        taskVo.setTransferredBy(taskVo.getTransferredBy().concat(name).concat(";"));
-                } else if (UserType.DEPUTE.getKey().equals(user.getType())) {
-                    if (StrUtil.isEmpty(taskVo.getDelegate())) {
-                        taskVo.setDelegate("");
+                    case DEPUTE -> {
+                        if (StrUtil.isEmpty(taskVo.getDelegate())) {
+                            taskVo.setDelegate("");
+                        }
+                        String name = getName(user.getProcessedBy());
+                        if (StrUtil.isNotEmpty(name))
+                            taskVo.setDelegate(taskVo.getDelegate().concat(name).concat(";"));
                     }
-                    String name = getName(user.getProcessedBy());
-                    if (StrUtil.isNotEmpty(name))
-                        taskVo.setDelegate(taskVo.getDelegate().concat(name).concat(";"));
                 }
             }
-
         }
         return page;
     }

+ 7 - 0
jy-ui/src/api/flow/execute.ts

@@ -0,0 +1,7 @@
+import request from '@/utils/request'
+import {PageType, StrAnyObj} from '@/typings'
+
+// 查询待办任务列表
+export function getToDoPageApi(params: StrAnyObj): Promise<PageType<StrAnyObj>> {
+    return request.get('/flow/execute/todoPage', params)
+}

+ 228 - 0
jy-ui/src/views/flow/taskTodo/index.vue

@@ -0,0 +1,228 @@
+<script setup lang="ts">
+import AForm from '@/components/AForm/index.vue'
+import { FormConfigType } from '@/components/AForm/type'
+import { ToolbarConfigType } from '@/components/AToolbar/type'
+import { ColumnConfigType } from '@/components/ATable/type'
+import { StrAnyObj, StrAnyObjArr } from '@/typings'
+import { useHandleData } from '@/utils/useHandleData'
+import { getPageApi, getDetailApi, addApi, editApi, deleteApi } from '@/api/system/config'
+import {getToDoPageApi} from "@/api/flow/execute";
+
+const queryRef = ref<InstanceType<typeof AForm>>()
+const formRef = ref<InstanceType<typeof AForm>>()
+
+const showQuery = ref<boolean>(true)
+const pageTotal = ref<number>(0)
+
+const queryData = ref<StrAnyObj>({ pageNum: 1, pageSize: 10 })
+const tableData = ref<StrAnyObjArr>([])
+const formData = ref<StrAnyObj>({})
+
+const dialogTitle = ref<string>('')
+const dialogVisible = ref<boolean>(false)
+
+const queryConfig: FormConfigType[] = [
+  {
+    type: 'input',
+    prop: 'nodeName',
+    label: '任务名称'
+  },
+  {
+    type: 'select',
+    prop: 'flowStatus',
+    label: '流程状态',
+    dict: 'flow_status'
+  },
+  {
+    type: 'datePicker',
+    prop: 'createTime',
+    label: '创建时间',
+    datePickerType: 'date',
+    format: 'YYYY-MM-DD',
+    valueFormat: 'YYYY-MM-DD 00:00:00'
+  }
+]
+
+const toolbarConfig: ToolbarConfigType[] = [
+  {
+    common: 'search',
+    click() {
+      queryData.value.pageNum = 1
+      getPage()
+    }
+  },
+  {
+    common: 'reset',
+    click() {
+      queryRef.value?.resetFields()
+      getPage()
+    }
+  },
+  {
+    common: 'add',
+    permissions: 'sysConfig:add',
+    click() {
+      dialogVisible.value = true
+      dialogTitle.value = '新增'
+    }
+  }
+]
+
+const columnConfig: ColumnConfigType[] = [
+  {
+    prop: 'flowName',
+    label: '流程名称'
+  },
+  {
+    prop: 'nodeName',
+    label: '任务名称'
+  },
+  {
+    prop: 'approver',
+    label: '审批人'
+  },
+  {
+    prop: 'transferredBy',
+    label: '转办人'
+  },
+  {
+    prop: 'delegate',
+    label: '委派人'
+  },
+  {
+    prop: 'flowStatus',
+    label: '流程状态',
+    dict: 'flow_status'
+  },
+  {
+    prop: 'activityStatus',
+    label: '激活状态',
+    dict: 'activity_status'
+  },
+  {
+    prop: 'createTime',
+    label: '创建时间'
+  },
+  {
+    width: 200,
+    handleConfig: [
+      // {
+      //   common: 'update',
+      //   permissions: 'sysConfig:edit',
+      //   click(row) {
+      //     dialogVisible.value = true
+      //     dialogTitle.value = '编辑'
+      //     getDetailApi({ id: row.id }).then((resp: StrAnyObj) => {
+      //       formData.value = resp
+      //     })
+      //   }
+      // },
+      // {
+      //   common: 'delete',
+      //   permissions: 'sysConfig:delete',
+      //   click(row) {
+      //     handleRemove([row.id])
+      //   }
+      // }
+    ]
+  }
+]
+
+const formConfig: FormConfigType[] = [
+  {
+    type: 'input',
+    prop: 'name',
+    label: '参数名称',
+    rule: [{ required: true, message: '参数名称不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'input',
+    prop: 'code',
+    label: '参数编码',
+    rule: [{ required: true, message: '参数编码不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'input',
+    prop: 'value',
+    label: '参数值',
+    rule: [{ required: true, message: '参数键值不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'radio',
+    prop: 'builtin',
+    label: '系统内置',
+    dict: 'yes_no',
+    rule: [{ required: true, message: '系统内置不能为空', trigger: 'blur' }]
+  },
+  {
+    type: 'input',
+    prop: 'remark',
+    label: '备注',
+    itemType: 'textarea',
+    rows: 5
+  }
+]
+
+onMounted(() => {
+  getPage()
+})
+
+function getPage() {
+  getToDoPageApi(queryData.value).then((resp) => {
+    tableData.value = resp.records
+    pageTotal.value = resp.total
+  })
+}
+
+function formSubmit() {
+  formRef.value?.validate(() => {
+    if (formData.value.id) {
+      editApi(formData.value).then(() => {
+        dialogVisible.value = false
+        ElMessage.success('修改成功')
+        getPage()
+      })
+    } else {
+      addApi(formData.value).then(() => {
+        dialogVisible.value = false
+        ElMessage.success('新增成功')
+        getPage()
+      })
+    }
+  })
+}
+
+function formClosed() {
+  formRef.value?.resetFields()
+}
+</script>
+
+<template>
+  <div>
+    <el-card v-if="showQuery">
+      <a-form ref="queryRef" v-model="queryData" :config="queryConfig" :span="6"> </a-form>
+    </el-card>
+
+    <a-table
+      :data="tableData"
+      :page-total="pageTotal"
+      :toolbar-config="toolbarConfig"
+      :column-config="columnConfig"
+      v-model:showQuery="showQuery"
+      v-model:page-num="queryData.pageNum"
+      v-model:page-size="queryData.pageSize"
+      @page-num-change="getPage"
+      @page-size-change="getPage"
+    >
+    </a-table>
+
+    <a-dialog
+      v-model="dialogVisible"
+      :title="dialogTitle"
+      @submit="formSubmit"
+      @closed="formClosed"
+    >
+      <a-form ref="formRef" v-model="formData" :config="formConfig" :span="24"> </a-form>
+    </a-dialog>
+  </div>
+</template>