|
@@ -1,13 +1,18 @@
|
|
|
import React, { useEffect, useState, useRef, useMemo } from 'react';
|
|
|
import '@ant-design/compatible/assets/index.css';
|
|
|
-import { Modal, Input, Select, message, Cascader, Form } from 'antd';
|
|
|
+import { Modal, Input, Select, message, Cascader, Form, Tabs } from 'antd';
|
|
|
import { connect } from 'dva';
|
|
|
import { isArray, result } from 'lodash';
|
|
|
import { useForm } from 'rc-field-form';
|
|
|
import { async } from '@antv/x6/lib/registry/marker/async';
|
|
|
+import AuditDetailed from './AuditDetailed';
|
|
|
+import AuditFlow from './AuditFlow';
|
|
|
+import { queryDingSchema } from '@/services/boom';
|
|
|
+import { Form as Form3x } from '@ant-design/compatible';
|
|
|
|
|
|
const { TextArea } = Input;
|
|
|
const { Option } = Select;
|
|
|
+const { TabPane } = Tabs;
|
|
|
|
|
|
// 提交
|
|
|
function CommitAuditModal(props) {
|
|
@@ -16,18 +21,33 @@ function CommitAuditModal(props) {
|
|
|
const [data, setData] = useState([]);
|
|
|
const [length, setLength] = useState(1);
|
|
|
const [formData, setFromData] = useState({});
|
|
|
+<<<<<<< HEAD
|
|
|
+=======
|
|
|
+ const [auditList, setAuditList] = useState([]); //用于创建Tabs表单
|
|
|
+ const [formComponentValues, setFormComponentValues] = useState({}); //用于创建Tabs表单
|
|
|
+>>>>>>> develop_0715
|
|
|
const [form] = Form.useForm();
|
|
|
+
|
|
|
useEffect(() => {
|
|
|
+ if (!visible) return;
|
|
|
const { edges, nodes } = flowDetail;
|
|
|
let Id = version.template_node_id;
|
|
|
const currentId = flowDetail.nodes.find?.(item => item.Id == Id)?.node_id;
|
|
|
const data = treeData(currentId);
|
|
|
if (data.length <= 0) setAuditId(currentId);
|
|
|
setData(data);
|
|
|
+<<<<<<< HEAD
|
|
|
}, [auditId, version.template_node_id]);
|
|
|
|
|
|
useEffect(() => {
|
|
|
form.resetFields();
|
|
|
+=======
|
|
|
+ }, [auditId, version.template_node_id, visible]);
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ form.resetFields();
|
|
|
+ setAuditList([]);
|
|
|
+>>>>>>> develop_0715
|
|
|
}, [visible]);
|
|
|
|
|
|
const treeData = currentId => {
|
|
@@ -40,7 +60,10 @@ function CommitAuditModal(props) {
|
|
|
});
|
|
|
};
|
|
|
fun(list);
|
|
|
+<<<<<<< HEAD
|
|
|
console.log(list);
|
|
|
+=======
|
|
|
+>>>>>>> develop_0715
|
|
|
const fun2 = list => {
|
|
|
const parents = list.filter(item => list.findIndex(node => node.Id == item.parentId) == -1);
|
|
|
let translator = (parents, children) => {
|
|
@@ -87,7 +110,11 @@ function CommitAuditModal(props) {
|
|
|
let targetIds = edges
|
|
|
.filter(edge => edge.source.cell == currentId)
|
|
|
.map(item => item.target.cell);
|
|
|
+<<<<<<< HEAD
|
|
|
console.log(edges.filter(edge => edge.source.cell == currentId));
|
|
|
+=======
|
|
|
+ edges.filter(edge => edge.source.cell == currentId);
|
|
|
+>>>>>>> develop_0715
|
|
|
let auditNodes = nodes.filter(node => {
|
|
|
if (type && node.name != type) {
|
|
|
return false;
|
|
@@ -113,11 +140,113 @@ function CommitAuditModal(props) {
|
|
|
|
|
|
const onChange = value => {
|
|
|
changeAudit(value[value.length - 1]);
|
|
|
+<<<<<<< HEAD
|
|
|
};
|
|
|
|
|
|
const onFinish = async () => {
|
|
|
+=======
|
|
|
+ setAuditListFun();
|
|
|
+ };
|
|
|
+ //处理tabs页
|
|
|
+ const setAuditListFun = async () => {
|
|
|
+>>>>>>> develop_0715
|
|
|
var fieldsValue = await form.validateFields();
|
|
|
+ let addAuditList = [];
|
|
|
+ let result = Object.values(fieldsValue)
|
|
|
+ .map(item => {
|
|
|
+ if (item && Array.isArray(item)) return item;
|
|
|
+ })
|
|
|
+ .filter(item => item)
|
|
|
+ .flat(Infinity);
|
|
|
+ let codeList = [...new Set(result)]
|
|
|
+ .map(Id => {
|
|
|
+ return flowDetail.nodes.find?.(item => item.Id == Id);
|
|
|
+ })
|
|
|
+ .filter(item => item.process_code);
|
|
|
+ for (let i = 0; i < codeList.length; i++) {
|
|
|
+ let res = await queryDingSchema({ process_code: codeList[i].process_code });
|
|
|
+ if (res) {
|
|
|
+ res.data.result.nodeId = codeList[i].Id;
|
|
|
+ addAuditList.push(res.data.result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log(addAuditList);
|
|
|
+ addAuditList.forEach((item, index) => {
|
|
|
+ let Components = Form3x.create({
|
|
|
+ onValuesChange: (props, changedValues, allValues) => {
|
|
|
+ const { items } = props;
|
|
|
+ console.log(item);
|
|
|
+ formComponentValues[item.nodeId] = items
|
|
|
+ .map(item => {
|
|
|
+ const itemProps = item.props;
|
|
|
+ if (!itemProps.label) return;
|
|
|
+ let val = allValues[itemProps.id];
|
|
|
+ if (val instanceof Object) {
|
|
|
+ return {
|
|
|
+ name: itemProps.label,
|
|
|
+ id: itemProps.id,
|
|
|
+ ...val,
|
|
|
+ };
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ name: itemProps.label,
|
|
|
+ // id: itemProps.id,
|
|
|
+ value: allValues[itemProps.id] || '',
|
|
|
+ };
|
|
|
+ })
|
|
|
+ .filter(item => item);
|
|
|
+ setFormComponentValues({ ...formComponentValues });
|
|
|
+ },
|
|
|
+ })(AuditDetailed);
|
|
|
+ item.FormComponents = <Components items={item.schemaContent.items} />;
|
|
|
+ });
|
|
|
+ setAuditList(addAuditList);
|
|
|
+ };
|
|
|
|
|
|
+<<<<<<< HEAD
|
|
|
+=======
|
|
|
+ const getFromData = idList => {
|
|
|
+ const data = formComponentValues;
|
|
|
+ const result = [];
|
|
|
+ //获取流转节点的层级关系
|
|
|
+ let len = 0;
|
|
|
+ let list = [];
|
|
|
+ idList.forEach(item => {
|
|
|
+ if (len < item.length) len = item.length;
|
|
|
+ });
|
|
|
+ for (let i = 0; i < len; i++) {
|
|
|
+ idList.forEach(item => {
|
|
|
+ if (item && item[i]) list.push(item[i]);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ let firstList = [...new Set(list)];
|
|
|
+ // let firstList = idList[0];
|
|
|
+ // for (let i = 1; i < idList.length; i++) {
|
|
|
+ // let item = idList[i];
|
|
|
+ // item.forEach(itemId => {
|
|
|
+ // let idx = firstList.findIndex(id => id == itemId);
|
|
|
+ // if (idx > 0 && !firstList.find(cur => cur == item[idx - 1])) {
|
|
|
+ // firstList.splice(idx, 0, item[i - 1]);
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ firstList.forEach(id => {
|
|
|
+ let approvalNode = flowDetail.nodes.find?.(item => item.Id == id);
|
|
|
+ const formItem = {
|
|
|
+ processCode: approvalNode.process_code,
|
|
|
+ originatorUserId: '16569001414345099',
|
|
|
+ deptId: '14169890',
|
|
|
+ formComponentValues: data[approvalNode.Id],
|
|
|
+ };
|
|
|
+ result.push(JSON.stringify(formItem));
|
|
|
+ });
|
|
|
+ return result;
|
|
|
+ };
|
|
|
+ const onFinish = async () => {
|
|
|
+ var fieldsValue = await form.validateFields();
|
|
|
+ console.log(formComponentValues);
|
|
|
+ let hasFlowId = true; //是否都绑定审批节点
|
|
|
+>>>>>>> develop_0715
|
|
|
const getFlowPath = node => {
|
|
|
//[134, 135]
|
|
|
let itemData = {};
|
|
@@ -130,6 +259,11 @@ function CommitAuditModal(props) {
|
|
|
data.node_level_id = approvalNode?.flow_id ? 1 : 0;
|
|
|
data.template_node_id = approvalNode?.Id;
|
|
|
index++;
|
|
|
+ if (approvalNode?.Id) {
|
|
|
+ if (!approvalNode?.flow_id) {
|
|
|
+ hasFlowId = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
const res = Function(node[index], index);
|
|
|
if (res) {
|
|
|
data.flow_path = [res];
|
|
@@ -145,6 +279,16 @@ function CommitAuditModal(props) {
|
|
|
})
|
|
|
.filter(item => item);
|
|
|
let serviceNode = flowDetail.nodes.find?.(item => item.Id == fieldsValue.next_template_node_id);
|
|
|
+<<<<<<< HEAD
|
|
|
+=======
|
|
|
+ if (!serviceNode) {
|
|
|
+ message.error('请选择需要流转的业务节点。');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const flowPath = result.map(item => getFlowPath(item));
|
|
|
+ const formList = getFromData(result);
|
|
|
+>>>>>>> develop_0715
|
|
|
let params = {
|
|
|
desc: fieldsValue.desc,
|
|
|
// 审核流程id
|
|
@@ -170,6 +314,7 @@ function CommitAuditModal(props) {
|
|
|
params.flow_id = approvalNode?.flow_id || 0;
|
|
|
params.node_level_id = approvalNode?.flow_id ? 1 : 0;
|
|
|
params.template_node_id = result[0][0]; // 将要流转的节点审批节点
|
|
|
+<<<<<<< HEAD
|
|
|
} else {
|
|
|
//多节点审批
|
|
|
params.template_node_id = result[0][0]; // 将要流转的节点审批节点
|
|
@@ -186,6 +331,33 @@ function CommitAuditModal(props) {
|
|
|
// setAuditId();
|
|
|
onOk(params);
|
|
|
};
|
|
|
+=======
|
|
|
+ params.form_list = formList; //创建钉钉表单所需数据
|
|
|
+ if (approvalNode?.Id) {
|
|
|
+ if (!approvalNode?.flow_id) {
|
|
|
+ hasFlowId = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //多节点审批
|
|
|
+ params.template_node_id = result[0][0]; // 将要流转的节点审批节点
|
|
|
+ params.flow_path = flowPath;
|
|
|
+ params.form_list = formList; //创建钉钉表单所需数据
|
|
|
+ }
|
|
|
+ if (!hasFlowId) {
|
|
|
+ message.error('当前存在审批节点未绑定审批流程!请联系管理员。');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log(JSON.stringify(params));
|
|
|
+ console.log(params);
|
|
|
+ onOk(params);
|
|
|
+ };
|
|
|
+
|
|
|
+ const onTabChange = key => {
|
|
|
+ console.log('=====================', key);
|
|
|
+ };
|
|
|
+>>>>>>> develop_0715
|
|
|
|
|
|
const CascaderNode = index => {
|
|
|
return (
|
|
@@ -231,6 +403,23 @@ function CommitAuditModal(props) {
|
|
|
<Input.TextArea />
|
|
|
</Form.Item>
|
|
|
</Form>
|
|
|
+<<<<<<< HEAD
|
|
|
+=======
|
|
|
+ <Tabs defaultActiveKey="1" onChange={onTabChange}>
|
|
|
+ {auditList.map((item, idx) => (
|
|
|
+ // <TabPane tab={item.label} key={`${item.Id}_${item.label}`}>
|
|
|
+ // <AuditDetailed />
|
|
|
+ // </TabPane>
|
|
|
+ <TabPane tab={item.name} key={`${idx}_${item.title}`}>
|
|
|
+ {item.FormComponents}
|
|
|
+ <AuditFlow
|
|
|
+ processCode={item.formCode}
|
|
|
+ formComponentValues={formComponentValues[item.nodeId]}
|
|
|
+ />
|
|
|
+ </TabPane>
|
|
|
+ ))}
|
|
|
+ </Tabs>
|
|
|
+>>>>>>> develop_0715
|
|
|
</Modal>
|
|
|
);
|
|
|
}
|