24282 11 달 전
부모
커밋
5c83ce8678

+ 7 - 6
jy-business/src/main/java/com/jy/business/payment/service/impl/PaymentRequestsServiceImpl.java

@@ -8,10 +8,9 @@ import com.jy.business.payment.model.dto.PaymentRequestsSelectDto;
 import com.jy.business.payment.model.entity.PaymentRequestsDetail;
 import com.jy.business.payment.model.vo.PaymentRequestsVo;
 import com.jy.business.payment.service.PaymentRequestsService;
+import com.jy.flow.utils.FlowUtil;
 import com.jy.framework.model.constants.FlowConstant;
-import com.jy.framework.satoken.LoginContext;
 import com.jy.framework.utils.AssertUtil;
-import com.warm.flow.core.dto.FlowParams;
 import com.warm.flow.core.service.InsService;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
@@ -64,16 +63,18 @@ public class PaymentRequestsServiceImpl implements PaymentRequestsService {
         paymentRequestsDetailDao.saveBatch(paymentRequestsDetailList);
 
         // 启动流程
-        FlowParams flowParams = FlowParams.build()
-                .flowCode(FlowConstant.PAYMENT_REQUESTS)
-                .setHandler(LoginContext.getUserId().toString());
-        insService.start(dto.getId().toString(), flowParams);
+        FlowUtil.start(FlowConstant.PAYMENT_REQUESTS, dto.getId());
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void edit(PaymentRequestsDto dto) {
         paymentRequestsDao.updateById(dto);
+        List<PaymentRequestsDetail> paymentRequestsDetailList = dto.getPaymentRequestsDetailList();
+        paymentRequestsDetailList.forEach(item -> item.setPaymentRequestsId(dto.getId()));
+        paymentRequestsDetailDao.updateLinked(paymentRequestsDetailList, PaymentRequestsDetail::getPaymentRequestsId, dto.getId());
+
+
     }
 
     @Transactional(rollbackFor = Exception.class)

+ 83 - 5
jy-flow/src/main/java/com/jy/flow/controller/ExecuteController.java

@@ -9,8 +9,10 @@ import com.jy.flow.adapter.AbstractWarmFlowAdapter;
 import com.jy.flow.model.dto.FlowHisTaskDto;
 import com.jy.flow.model.dto.FlowTaskDto;
 import com.jy.flow.model.dto.WarmFlowHandleDto;
+import com.jy.flow.model.enums.FlowStatusEnum;
 import com.jy.flow.model.vo.FlowTaskVo;
 import com.jy.flow.service.ExecuteService;
+import com.jy.framework.exception.ServiceException;
 import com.jy.framework.satoken.LoginContext;
 import com.jy.system.dao.SysDeptDao;
 import com.jy.system.dao.SysRoleDao;
@@ -21,16 +23,20 @@ import com.warm.flow.core.dto.FlowParams;
 import com.warm.flow.core.entity.HisTask;
 import com.warm.flow.core.entity.Instance;
 import com.warm.flow.core.entity.Node;
+import com.warm.flow.core.entity.Skip;
+import com.warm.flow.core.entity.Task;
 import com.warm.flow.core.entity.User;
 import com.warm.flow.core.enums.SkipType;
 import com.warm.flow.core.enums.UserType;
 import com.warm.flow.core.service.HisTaskService;
 import com.warm.flow.core.service.InsService;
 import com.warm.flow.core.service.NodeService;
+import com.warm.flow.core.service.SkipService;
 import com.warm.flow.core.service.TaskService;
 import com.warm.flow.core.service.UserService;
 import com.warm.flow.core.utils.StreamUtils;
 import com.warm.flow.orm.entity.FlowHisTask;
+import com.warm.flow.orm.entity.FlowSkip;
 import jakarta.annotation.Resource;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -75,6 +81,9 @@ public class ExecuteController {
     @Resource
     private ExecuteService executeService;
 
+    @Resource
+    private SkipService skipService;
+
     /**
      * 分页待办任务列表
      */
@@ -83,6 +92,9 @@ public class ExecuteController {
         dto.setPermissionList(AbstractWarmFlowAdapter.permissionList());
         Page<FlowTaskVo> page = executeService.toDoPage(dto);
         List<FlowTaskVo> list = page.getRecords();
+        if (list.isEmpty()) {
+            return page;
+        }
 
         List<Long> taskIds = StreamUtils.toList(list, FlowTaskVo::getId);
         List<User> userList = flowUserservice.getByAssociateds(taskIds);
@@ -203,20 +215,86 @@ public class ExecuteController {
      */
     @PostMapping("/handle")
     public void handle(@RequestBody WarmFlowHandleDto dto) {
+        Task task = taskService.getById(dto.getTaskId());
+        Long definitionId = task.getDefinitionId();
+        String nodeCode = null;
+        FlowStatusEnum flowStatus = FlowStatusEnum.UNDER_WAY;
+
         Integer handleType = dto.getHandleType();
         String skipType = switch (handleType) {
-            case 1 -> SkipType.PASS.getKey();
-            case 2 -> SkipType.REJECT.getKey();
-            default -> null;
+            case 1 -> {
+                Node nextNode = nodeService.getNextNode(definitionId, task.getNodeCode(), "", "PASS");
+                nodeCode = nextNode.getNodeCode();
+                // 如果是结束节点
+                if (nextNode.getNodeType() == 2) {
+                    flowStatus = FlowStatusEnum.COMPLETED;
+                }
+                yield SkipType.PASS.getKey();
+            }
+            case 2 -> {
+
+                nodeCode = task.getNodeCode();
+
+                List<Skip> skipList = skipService.list(new FlowSkip().setDefinitionId(definitionId));
+
+                List<Skip> rejectSkipList = skipList.stream()
+                        .filter(item -> "REJECT".equals(item.getSkipType()))
+                        .filter(item -> item.getNowNodeCode().equals(task.getNodeCode()))
+                        .toList();
+
+                int rejectSkipSize = rejectSkipList.size();
+                if (rejectSkipSize == 0) {
+                    while (true) {
+                        String tempNodeCode = nodeCode;
+
+                        Skip skip = skipList.stream()
+                                .filter(item -> "PASS".equals(item.getSkipType()))
+                                .filter(item -> item.getNextNodeCode().equals(tempNodeCode))
+                                .findFirst()
+                                .orElse(null);
+
+                        if (skip == null) {
+                            throw new ServiceException("流程配置错误:不存在回退节点");
+                        }
+
+                        nodeCode = skip.getNowNodeCode();
+
+                        if (ObjectUtil.notEqual(skip.getNowNodeType(), 3)) {
+                            // 回退到开始节点
+                            if (skip.getNowNodeType() == 0) {
+                                flowStatus = FlowStatusEnum.PRIMED_FOR_ACTION;
+                            }
+                            break;
+                        }
+                    }
+
+                } else if (rejectSkipSize == 1) {
+                    Skip skip = rejectSkipList.get(0);
+                    if (skip.getNextNodeType().equals(3)) {
+                        throw new ServiceException("流程配置错误:节点回退到网关");
+                    }
+                    nodeCode = skip.getNextNodeCode();
+                } else {
+                    throw new ServiceException("流程配置错误:存在多个回退节点");
+                }
+
+
+                yield SkipType.REJECT.getKey();
+            }
+            case 3 -> {
+                flowStatus = FlowStatusEnum.DECLINED;
+                yield null;
+            }
+            default -> throw new ServiceException("办理类型不存在");
         };
 
         FlowParams flowParams = FlowParams.build()
                 .skipType(skipType)
                 .handler(LoginContext.getUserId().toString())
-                .nodeCode(dto.getNodeCode())
+                .nodeCode(nodeCode)
                 .message(dto.getMessage())
                 .permissionFlag(AbstractWarmFlowAdapter.permissionList())
-                .setFlowStatus("");
+                .flowStatus(flowStatus.getKeyStr());
 
         if (handleType == 3) {
             taskService.termination(dto.getTaskId(), flowParams);

+ 11 - 0
jy-flow/src/main/java/com/jy/flow/model/dto/FlowTaskDto.java

@@ -1,9 +1,13 @@
 package com.jy.flow.model.dto;
 
+import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.warm.flow.orm.entity.FlowTask;
 import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 @Setter
 public class FlowTaskDto extends FlowTask {
@@ -33,4 +37,11 @@ public class FlowTaskDto extends FlowTask {
         return ObjectUtil.defaultIfNull(pageSize, 10);
     }
 
+    @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @Override
+    public FlowTask setCreateTime(Date createTime) {
+        super.setCreateTime(createTime);
+        return this;
+    }
+
 }

+ 22 - 0
jy-flow/src/main/java/com/jy/flow/model/enums/FlowStatusEnum.java

@@ -0,0 +1,22 @@
+package com.jy.flow.model.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum FlowStatusEnum {
+
+    PRIMED_FOR_ACTION(0, "待发起"),
+    UNDER_WAY(1, "进行中"),
+    COMPLETED(2, "已完成"),
+    DECLINED(3, "已驳回");
+
+    private final int key;
+    private final String desc;
+
+    public String getKeyStr() {
+        return key + "";
+    }
+
+}

+ 39 - 0
jy-flow/src/main/java/com/jy/flow/utils/FlowUtil.java

@@ -0,0 +1,39 @@
+package com.jy.flow.utils;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.jy.flow.model.enums.FlowStatusEnum;
+import com.jy.framework.satoken.LoginContext;
+import com.warm.flow.core.dto.FlowParams;
+import com.warm.flow.core.service.InsService;
+
+import java.util.Map;
+
+public class FlowUtil {
+    private final static InsService insService = SpringUtil.getBean(InsService.class);
+
+    /**
+     * 发起流程
+     */
+    public static void start(String flowCode, Long businessId) {
+        FlowParams flowParams = FlowParams.build()
+                .flowCode(flowCode)
+                .handler(LoginContext.getUserId().toString())
+                .flowStatus(FlowStatusEnum.UNDER_WAY.getKeyStr());
+
+        insService.start(businessId.toString(), flowParams);
+    }
+
+    /**
+     * 发起流程
+     */
+    public static void start(String flowCode, Long businessId, Map<String, Object> variable) {
+        FlowParams flowParams = FlowParams.build()
+                .flowCode(flowCode)
+                .handler(LoginContext.getUserId().toString())
+                .variable(variable)
+                .flowStatus(FlowStatusEnum.UNDER_WAY.getKeyStr());
+
+        insService.start(businessId.toString(), flowParams);
+    }
+
+}

+ 3 - 0
jy-framework/src/main/java/com/jy/framework/model/constants/FlowConstant.java

@@ -2,6 +2,9 @@ package com.jy.framework.model.constants;
 
 public interface FlowConstant {
 
+    /**
+     * 请款流程
+     */
     String PAYMENT_REQUESTS = "PAYMENT_REQUESTS";
 
 }

+ 1 - 1
jy-ui/src/api/flow/execute.ts

@@ -19,4 +19,4 @@ export function handleApi(data: StrAnyObj): Promise<void> {
 // 查询已办任务分页
 export function getDonePageApi(params: StrAnyObj): Promise<PageType<StrAnyObj>> {
   return request.get('/flow/execute/donePage', params)
-}
+}

+ 1 - 1
jy-ui/src/components/flow/PropertySetting/index.vue

@@ -125,7 +125,7 @@ watch(
         const listenerType = n.properties?.listenerType
         const nodeRatioNumber = Number(n.properties.nodeRatio)
 
-        n.properties.formCustom = propertiesStr === '{}' ? 'N' : n.properties.formCustom || ''
+        n.properties.formCustom = propertiesStr === '{}' ? '1' : n.properties.formCustom || ''
         form.value = {
           nodeType: n.type,
           nodeCode: n.id,

+ 0 - 8
jy-ui/src/views/flow/definition/design.vue

@@ -117,17 +117,9 @@ function initDndPanel() {
       type: 'serial',
       text: '',
       label: '互斥网关',
-      properties: {},
       icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAAHeEJUAAAAABGdBTUEAALGPC/xhBQAAAvVJREFUOBGNVEFrE0EU/mY3bQoiFlOkaUJrQUQoWMGePLX24EH0IIoHKQiCV0G8iE1covgLiqA/QTzVm1JPogc9tIJYFaQtlhQxqYjSpunu+L7JvmUTU3AgmTfvffPNN++9WSA1DO182f6xwILzD5btfAoQmwL5KJEwiQyVbSVZ0IgRyV6PTpIJ81E5ZvqfHQR0HUOBHW4L5Et2kQ6Zf7iAOhTFAA8s0pEP7AXO1uAA52SbqGk6h/6J45LaLhO64ByfcUzM39V7ZiAdS2yCePPEIQYvTUHqM/n7dgQNfBKWPjpF4ISk8q3J4nB11qw6X8l+FsF3EhlkEMfrjIer3wJTLwS2aCNcj4DbGxXTw00JmAuO+Ni6bBxVUCvS5d9aa04+so4pHW5jLTywuXAL7jJ+D06sl82Sgl2JuVBQn498zkc2bGKxULHjCnSMadBKYDYYHAtsby1EQ5lNGrQd4Y3v4Zo0XdGEmDno46yCM9Tk+RiJmUYHS/aXHPNTcjxcbTFna000PFJHIVZ5lFRqRpJWk9/+QtlOUYJj9HG5pVFEU7zqIYDVsw2s+AJaD8wTd2umgSCCyUxgGsS1Y6TBwXQQTFuZaHcd8gAGioE90hlsY+wMcs30RduYtxanjMGal8H5dMW67dmT1JFtYUEe8LiQLRsPZ6IIc7A4J5tqco3T0pnv/4u0kyzrYUq7gASuEyI8VXKvB9Odytv6jS/PNaZBln0nioJG/AVQRZvApOdhjj3Jt8QC8Im09SafwdBdvIpztpxWxpeKCC+EsFdS8DCyuCn2munFpL7ctHKp+Xc5cMybeIyMAN33SPL3ZR9QV1XVwLyzHm6Iv0/yeUuUb7PPlZC4D4HZkeu6dpF4v9j9MreGtMbxMMRLIcjJic9yHi7WQ3yVKzZVWUr5UrViJvn1FfUlwe/KYVfYyWRLSGNu16hR01U9IacajXPei0wx/5BqgInvJN+MMNtNme7ReU9SBbgntovn0kKHpFg7UogZvaZiOue/q1SBo9ktHzQAAAAASUVORK5CYII='
     },
     {
-      type: 'parallel',
-      text: '',
-      label: '并行网关',
-      properties: {},
-      icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAuMTQxOTM3MjU1ODU5Mzc1IiBoZWlnaHQ9IjIwLjE0MTkzNzI1NTg1OTM3NSIgdmlld0JveD0iMCAwIDIwLjE0MTkzNzI1NTg1OTM3NSAyMC4xNDE5MzcyNTU4NTkzNzUiIGZpbGw9Im5vbmUiPg0KPHBhdGggZD0iTTE5LjI2MzMgNy45NDk2N0wxMi4xOTIzIDAuODc4NjY5QzExLjAyMDcgLTAuMjkyODkyIDkuMTIxMjMgLTAuMjkyODkyIDcuOTQ5NjcgMC44Nzg2NjlMMC44Nzg2NyA3Ljk0OTY3Qy0wLjI5Mjg5MiA5LjEyMTIzIC0wLjI5Mjg5MiAxMS4wMjA3IDAuODc4NjcgMTIuMTkyM0w3Ljk0OTY3IDE5LjI2MzNDOS4xMjEyMyAyMC40MzQ4IDExLjAyMDcgMjAuNDM0OCAxMi4xOTIzIDE5LjI2MzNMMTkuMjYzMyAxMi4xOTIzQzIwLjQzNDggMTEuMDIwNyAyMC40MzQ4IDkuMTIxMjMgMTkuMjYzMyA3Ljk0OTY3Wk05LjM2Mzg3IDIuMjkyODdDOS43NTQzOSAxLjkwMjM1IDEwLjM4NzUgMS45MDIzNSAxMC43NzgxIDIuMjkyODdMMTcuODQ5MSA5LjM2Mzg3QzE4LjIzOTYgOS43NTQzOSAxOC4yMzk2IDEwLjM4NzUgMTcuODQ5MSAxMC43NzgxTDEwLjc3ODEgMTcuODQ5MUMxMC4zODc1IDE4LjIzOTYgOS43NTQzOSAxOC4yMzk2IDkuMzYzODcgMTcuODQ5MUwyLjI5Mjg3IDEwLjc3ODFDMS45MDIzNSAxMC4zODc1IDEuOTAyMzUgOS43NTQzOSAyLjI5Mjg3IDkuMzYzODdMOS4zNjM4NyAyLjI5Mjg3Wk05LjI0OTk3IDkuMDQ5OTdMOS4yNDk5NyA2LjQ5OTk2QzkuMjQ5OTcgNS45NDc2OCA5LjY5NzY4IDUuNDk5OTYgMTAuMjUgNS40OTk5NkMxMC44MDIzIDUuNDk5OTYgMTEuMjUgNS45NDc2OCAxMS4yNSA2LjQ5OTk2TDExLjI1IDkuMDQ5OTdMMTMuNDYgOS4wNDk5N0MxNC4wMTIzIDkuMDQ5OTcgMTQuNDYgOS40OTc2OCAxNC40NiAxMC4wNUMxNC40NiAxMC42MDIzIDE0LjAxMjMgMTEuMDUgMTMuNDYgMTEuMDVMMTEuMjUgMTEuMDVMMTEuMjUgMTMuMjVDMTEuMjUgMTMuODAyMyAxMC44MDIzIDE0LjI1IDEwLjI1IDE0LjI1QzkuNjk3NjggMTQuMjUgOS4yNDk5NyAxMy44MDIzIDkuMjQ5OTcgMTMuMjVMOS4yNDk5NyAxMS4wNUw2LjcwOTk3IDExLjA1QzYuMTU3NjggMTEuMDUgNS43MDk5NyAxMC42MDIzIDUuNzA5OTcgMTAuMDVDNS43MDk5NyA5LjQ5NzY4IDYuMTU3NjggOS4wNDk5NyA2LjcwOTk3IDkuMDQ5OTdMOS4yNDk5NyA5LjA0OTk3WiIgZmlsbC1ydWxlPSJldmVub2RkIiAgZmlsbD0iIzI5ODZGRiIgPg0KPC9wYXRoPg0KPC9zdmc+DQo='
-    },
-    {
       type: 'end',
       text: '结束',
       label: '结束节点',

+ 59 - 17
jy-ui/src/views/flow/taskDone/index.vue

@@ -4,7 +4,7 @@ import { FormConfigType } from '@/components/AForm/type'
 import { ToolbarConfigType } from '@/components/AToolbar/type'
 import { ColumnConfigType } from '@/components/ATable/type'
 import { StrAnyObj, StrAnyObjArr } from '@/typings'
-import {getDoneListApi, getDonePageApi, handleApi} from '@/api/flow/execute'
+import { getDoneListApi, getDonePageApi, handleApi } from '@/api/flow/execute'
 import { getChartApi } from '@/api/flow/definition'
 
 const modules = import.meta.glob('@/views/**/*.vue')
@@ -33,20 +33,37 @@ const queryConfig: FormConfigType[] = [
     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'
-  }
+  // {
+  //   type: 'select',
+  //   prop: 'flowStatus',
+  //   label: '流程状态',
+  //   option: [
+  //     {
+  //       key: '0',
+  //       label: '待发起'
+  //     },
+  //     {
+  //       key: '1',
+  //       label: '进行中'
+  //     },
+  //     {
+  //       key: '2',
+  //       label: '已完成'
+  //     },
+  //     {
+  //       key: '3',
+  //       label: '已驳回'
+  //     }
+  //   ]
+  // },
+  // {
+  //   type: 'datePicker',
+  //   prop: 'createTime',
+  //   label: '创建时间',
+  //   datePickerType: 'date',
+  //   format: 'YYYY-MM-DD',
+  //   valueFormat: 'YYYY-MM-DD 00:00:00'
+  // }
 ]
 
 const toolbarConfig: ToolbarConfigType[] = [
@@ -86,7 +103,20 @@ const columnConfig: ColumnConfigType[] = [
   {
     prop: 'flowStatus',
     label: '流程状态',
-    dict: 'flow_status'
+    formatter: (row) => {
+      console.log(row)
+      console.log(row.flowStatus)
+      switch (row.flowStatus) {
+        case '0':
+          return '待发起'
+        case '1':
+          return '进行中'
+        case '2':
+          return '已完成'
+        case '3':
+          return '已驳回'
+      }
+    }
   },
   {
     prop: 'createTime',
@@ -149,6 +179,19 @@ const doneListColumnConfig: ColumnConfigType[] = [
     label: '审批时间'
   },
   {
+    prop: 'type',
+    label: '审批类型',
+    formatter(row) {
+      if (row.flowStatus == 3){
+        return "驳回"
+      }
+      if (row.skipType == 'PASS'){
+        return '通过'
+      }
+      return '退回'
+    }
+  },
+  {
     prop: 'message',
     label: '审批意见',
     showOverflowTooltip: true
@@ -165,7 +208,6 @@ function getPage() {
     pageTotal.value = resp.total
   })
 }
-
 </script>
 
 <template>

+ 65 - 24
jy-ui/src/views/flow/taskTodo/index.vue

@@ -36,20 +36,37 @@ const queryConfig: FormConfigType[] = [
     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'
-  }
+  // {
+  //   type: 'select',
+  //   prop: 'flowStatus',
+  //   label: '流程状态',
+  //   option: [
+  //     {
+  //       key: '0',
+  //       label: '待发起'
+  //     },
+  //     {
+  //       key: '1',
+  //       label: '进行中'
+  //     },
+  //     {
+  //       key: '2',
+  //       label: '已完成'
+  //     },
+  //     {
+  //       key: '3',
+  //       label: '已驳回'
+  //     }
+  //   ]
+  // },
+  // {
+  //   type: 'datePicker',
+  //   prop: 'createTime',
+  //   label: '创建时间',
+  //   datePickerType: 'date',
+  //   format: 'YYYY-MM-DD',
+  //   valueFormat: 'YYYY-MM-DD 00:00:00'
+  // }
 ]
 
 const toolbarConfig: ToolbarConfigType[] = [
@@ -82,18 +99,29 @@ const columnConfig: ColumnConfigType[] = [
     prop: 'approver',
     label: '审批人'
   },
-  {
-    prop: 'transferredBy',
-    label: '转办人'
-  },
-  {
-    prop: 'delegate',
-    label: '委派人'
-  },
+  // {
+  //   prop: 'transferredBy',
+  //   label: '转办人'
+  // },
+  // {
+  //   prop: 'delegate',
+  //   label: '委派人'
+  // },
   {
     prop: 'flowStatus',
     label: '流程状态',
-    dict: 'flow_status'
+    formatter: (row) => {
+      switch (row.flowStatus) {
+        case '0':
+          return '待发起'
+        case '1':
+          return '进行中'
+        case '2':
+          return '已完成'
+        case '3':
+          return '已驳回'
+      }
+    }
   },
   {
     prop: 'createTime',
@@ -134,7 +162,7 @@ const columnConfig: ColumnConfigType[] = [
             imgUrl.value = 'data:image/gif;base64,' + resp
           })
         }
-      },
+      }
     ]
   }
 ]
@@ -153,6 +181,19 @@ const doneListColumnConfig: ColumnConfigType[] = [
     label: '审批人'
   },
   {
+    prop: 'type',
+    label: '审批类型',
+    formatter(row) {
+      if (row.flowStatus == 3){
+        return "驳回"
+      }
+      if (row.skipType == 'PASS'){
+        return '通过'
+      }
+      return '退回'
+    }
+  },
+  {
     prop: 'createTime',
     label: '审批时间'
   },