import React, { useMemo, useEffect, useState, useRef } from 'react';
import { Steps, Popover, Alert, Button, Spin } from 'antd';
import styles from './Index.less';
import { queryDDProcessesForecast } from '@/services/boom';
import { connect } from 'dva';
const { Step } = Steps;
function AuditFlow(props) {
const {
processCode,
deptId,
userId,
formComponentValues,
// activityId,
direction,
status,
tasks,
userList,
cc_userids = [],
canShowAudit = false,
onApprove,
} = props;
const [flow, setFlow] = useState({ workflowActivityRules: [] });
const [loading, setLoading] = useState(false);
const timerRef = useRef({
id: '',
status: false,
});
const current = useMemo(() => {
if (!tasks || tasks.length == 0) {
return false;
} else {
let current = 0;
flow.workflowActivityRules.forEach((item, index) => {
let task = tasks.find(task => task.activity_id == item.activityId);
if (task) {
if (task.task_status == 'COMPLETED') {
// 完成时节点为下一级
current = index + 1;
} else {
// 未完成则为当前节点
current = index;
}
}
});
return current;
}
}, [tasks, flow]);
const showAduit = useMemo(() => {
if (!canShowAudit) return false;
//当前处理中的审批人和登录人是一个人显示审批通过和拒绝
if (!tasks || tasks.length == 0) {
return false;
} else {
// 查询处于RUNNING的task activityId
const runningTask = tasks.filter(item => item.task_status == 'RUNNING');
// const task = tasks.find(task => task.activity_id == activityId);
if (runningTask.length == 0) return false;
// if (task.task_status == 'RUNNING' && task.userid == userId) return true;
return runningTask.find(task => task.userid == userId);
}
}, [tasks, userId]);
const getTaskId = () => {
const runningTask = tasks.find(item => item.task_status == 'RUNNING' && item.userid == userId);
if (runningTask) return runningTask.taskid;
};
const getDesc = item => {
const { activityId } = item;
if (!tasks || tasks.length == 0) return '';
if (item.activityName == '抄送人') {
let names = cc_userids
.map(userId => {
let user = userList.find(u => u.DingUserId == userId);
return user?.CName;
})
.filter(item => item);
return names.join(',');
} else {
const task = tasks.find(task => task.activity_id == activityId);
if (!task) return;
const user = userList.find(user => task.userid == user.DingUserId);
let result = null;
if (task.task_result !== 'NONE') {
result = (
<>
审批结果: {TASK_RESULT[task.task_result]}
>
);
}
return (
<>
{user?.CName || '未知操作人'}({TASK_STATUS[task.task_status]}){result}
>
);
}
};
const renderAlert = () => {
// const audit_comment = history.list[0]?.audit_comment;
let item = '';
switch (status) {
case -1:
item =