|
@@ -5,9 +5,10 @@ import { connect } from 'dva';
|
|
|
import { GetTokenFromUrl, getToken } from '@/utils/utils';
|
|
|
import { MODELS, useXFlowApp, useModelAsync } from '@antv/xflow';
|
|
|
import { CheckOutlined } from '@ant-design/icons';
|
|
|
-import { queryRecordSheet, queryVserionByNode } from '@/services/boom';
|
|
|
+import { queryDingInstanceDetail, queryRecordSheet, queryVserionByNode } from '@/services/boom';
|
|
|
import { async } from '@antv/x6/lib/registry/marker/async';
|
|
|
import VersionModal from './VersionModal';
|
|
|
+import AuditFlow from './AuditFlow';
|
|
|
|
|
|
const { Step } = Steps;
|
|
|
|
|
@@ -28,6 +29,7 @@ function FlowModal(props) {
|
|
|
dispatch,
|
|
|
isOut,
|
|
|
onCommit,
|
|
|
+ currentUser,
|
|
|
} = props;
|
|
|
const [data, setData] = useState([]);
|
|
|
const [nodeLoading, setNodeLoading] = useState(false);
|
|
@@ -92,36 +94,41 @@ function FlowModal(props) {
|
|
|
updateSteps([]);
|
|
|
};
|
|
|
|
|
|
- const updateSteps = (data, curNodeId) => {
|
|
|
- let newData = [];
|
|
|
- let set = new Set();
|
|
|
- data.forEach(item => set.add(item.template_node_id));
|
|
|
- let list = [...set];
|
|
|
- if (set.has(curNodeId)) {
|
|
|
- set.delete(curNodeId);
|
|
|
- list = [curNodeId, ...set];
|
|
|
- }
|
|
|
- let dataList = list.map(template_node_id => {
|
|
|
- let itemDataList = data.filter(item => item.template_node_id == template_node_id);
|
|
|
- let curid = 3;
|
|
|
- let status = 'process';
|
|
|
- itemDataList.forEach(item => {
|
|
|
- if (item.audit_status != 3 && item.node_id <= curid) curid = item.node_id - 1;
|
|
|
- if (item.audit_status == 2) status = 'error';
|
|
|
- });
|
|
|
- let curNode = flowDetail.nodes.find(item => item.Id == itemDataList[0].template_node_id);
|
|
|
- let obj = {
|
|
|
- status,
|
|
|
- current: curid,
|
|
|
- list: itemDataList[0].FlowInfo.FlowNodes,
|
|
|
- name: curNode?.label || itemDataList[0].FlowInfo.name,
|
|
|
- };
|
|
|
- itemDataList.forEach((itemData, idx) => {
|
|
|
- if (idx >= obj.list.length) return;
|
|
|
- obj.list[idx].auditor = itemData.AuthorInfo.CName;
|
|
|
+ const updateSteps = async (data, curNodeId) => {
|
|
|
+ const dataList = [];
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
+ let curNode = flowDetail.nodes.find(item => item.Id == data[0].template_node_id);
|
|
|
+ const response = await queryDingInstanceDetail({
|
|
|
+ process_instance_id: data[i].ding_instance_id, //创建表单成功返回的id
|
|
|
});
|
|
|
- return obj;
|
|
|
- });
|
|
|
+ if (response) {
|
|
|
+ const processInstance = response.data?.process_instance;
|
|
|
+ let data = {
|
|
|
+ processCode: '',
|
|
|
+ deptId: '14169890',
|
|
|
+ tasks: [],
|
|
|
+ // userId: '16569001414345099',
|
|
|
+ // deptId: currentUser.DingDepId || getCurrentUser()?.DingDepId,
|
|
|
+ userId: currentUser.DingUserId || getCurrentUser()?.DingUserId,
|
|
|
+ formComponentValues: [],
|
|
|
+ activityId: '',
|
|
|
+ cc_userids: [],
|
|
|
+ status: version.audit_status,
|
|
|
+ };
|
|
|
+ if (processInstance?.tasks && processInstance.tasks?.length > 0) {
|
|
|
+ let item = flowDetail.nodes.find(item => item.Id == version.template_node_id);
|
|
|
+ if (!item) return data;
|
|
|
+ const { tasks, form_component_values, cc_userids } = processInstance;
|
|
|
+ data.processCode = curNode.process_code;
|
|
|
+ data.activityId = tasks[tasks.length - 1]?.activity_id;
|
|
|
+ data.tasks = tasks || [];
|
|
|
+ data.cc_userids = cc_userids;
|
|
|
+ data.formComponentValues = form_component_values?.filter(item => item.name);
|
|
|
+ }
|
|
|
+ dataList.push(data);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log(dataList);
|
|
|
setStepsData(dataList);
|
|
|
};
|
|
|
|
|
@@ -254,24 +261,12 @@ function FlowModal(props) {
|
|
|
/>
|
|
|
</div>
|
|
|
{stepsData.map((item, idx) => (
|
|
|
- <div key={`${item.name}_${idx}`} style={{ marginBottom: '20px' }}>
|
|
|
- <div style={{ marginBottom: '4px' }}>{item.name}</div>
|
|
|
- <Steps size="small" current={item.current} status={item.status}>
|
|
|
- {item.list.map(node => (
|
|
|
- <Step
|
|
|
- key={`${node.id}_${node.node}`}
|
|
|
- title={node.node}
|
|
|
- description={`审批人:${node.auditor || '-'}`}
|
|
|
- />
|
|
|
- ))}
|
|
|
- </Steps>
|
|
|
- </div>
|
|
|
+ <AuditFlow {...item} />
|
|
|
))}
|
|
|
</Col>
|
|
|
</Row>
|
|
|
</Modal>
|
|
|
<VersionModal
|
|
|
- // loading={getLoading()}
|
|
|
visible={versionVisible}
|
|
|
onClose={() => setVersionVisible(false)}
|
|
|
onOk={values => {
|
|
@@ -305,7 +300,8 @@ const getColor = item => {
|
|
|
return color;
|
|
|
};
|
|
|
|
|
|
-export default connect(({ loading }) => ({
|
|
|
+export default connect(({ loading, user }) => ({
|
|
|
loading,
|
|
|
+ currentUser: user.currentUser,
|
|
|
}))(FlowModal);
|
|
|
// export default FlowModal;
|