|
@@ -1,235 +1,48 @@
|
|
import React, { useState, useEffect } from 'react';
|
|
import React, { useState, useEffect } from 'react';
|
|
-import { Form, Select, Button, Table, Input, Checkbox, Divider } from 'antd';
|
|
|
|
|
|
+import { Form, Select, Button, Table, Input, Checkbox, Divider, Tabs } from 'antd';
|
|
import { connect } from 'dva';
|
|
import { connect } from 'dva';
|
|
import AuditNodeModal from './AuditNodeModal';
|
|
import AuditNodeModal from './AuditNodeModal';
|
|
import AuditModal from './AuditModal';
|
|
import AuditModal from './AuditModal';
|
|
import styles from './Audit.less';
|
|
import styles from './Audit.less';
|
|
import router from 'umi/router';
|
|
import router from 'umi/router';
|
|
|
|
+import Flow, { FLOW_TYPE } from '@/components/Flow';
|
|
|
|
+import AuditForm from '@/components/AuditForm';
|
|
|
|
|
|
const { Option } = Select;
|
|
const { Option } = Select;
|
|
|
|
+const { TabPane } = Tabs;
|
|
|
|
|
|
function Audit(props) {
|
|
function Audit(props) {
|
|
const { roleList, currentItem, dispatch } = props;
|
|
const { roleList, currentItem, dispatch } = props;
|
|
- const [visible, setVisible] = useState({
|
|
|
|
- audit: false,
|
|
|
|
- auditNode: false,
|
|
|
|
- });
|
|
|
|
- const [current, setCurrent] = useState({ ...currentItem });
|
|
|
|
- const [currentNode, setCurrentNode] = useState({});
|
|
|
|
- const columns = [
|
|
|
|
- {
|
|
|
|
- title: '节点名',
|
|
|
|
- width: "20%",
|
|
|
|
- dataIndex: 'node',
|
|
|
|
- },
|
|
|
|
- // {
|
|
|
|
- // title: '审批级别',
|
|
|
|
- // dataIndex: 'seq',
|
|
|
|
- // width: "20%",
|
|
|
|
- // },
|
|
|
|
- {
|
|
|
|
- title: '审批角色',
|
|
|
|
- dataIndex: 'audit_role',
|
|
|
|
- width: "20%",
|
|
|
|
- render: audit_role => roleList.find(item => item.ID == audit_role)?.Name,
|
|
|
|
- },
|
|
|
|
- // {
|
|
|
|
- // title: '审批关系',
|
|
|
|
- // width: "20%",
|
|
|
|
- // dataIndex: 'seq_relate',
|
|
|
|
- // render: relate => {
|
|
|
|
- // switch (relate) {
|
|
|
|
- // case 0:
|
|
|
|
- // return '无';
|
|
|
|
- // case 1:
|
|
|
|
- // return '或';
|
|
|
|
- // case 2:
|
|
|
|
- // return '并';
|
|
|
|
- // }
|
|
|
|
- // },
|
|
|
|
- // },
|
|
|
|
- {
|
|
|
|
- title: '操作',
|
|
|
|
- width: "20%",
|
|
|
|
- render: item => (
|
|
|
|
- <>
|
|
|
|
- <a
|
|
|
|
- onClick={() => {
|
|
|
|
- setCurrentNode(item);
|
|
|
|
- changeVisible('auditNode', true);
|
|
|
|
- }}
|
|
|
|
- >
|
|
|
|
- 编辑
|
|
|
|
- </a>
|
|
|
|
- <Divider type="vertical" />
|
|
|
|
- <a
|
|
|
|
- onClick={() => {
|
|
|
|
- handleDelete(item);
|
|
|
|
- }}
|
|
|
|
- >
|
|
|
|
- 删除
|
|
|
|
- </a>
|
|
|
|
- </>
|
|
|
|
- ),
|
|
|
|
- },
|
|
|
|
- ];
|
|
|
|
- // const handleAuditOk = values => {
|
|
|
|
- // console.log(values);
|
|
|
|
- // dispatch({
|
|
|
|
- // type: 'flow/addAudit',
|
|
|
|
- // payload: values,
|
|
|
|
- // callback: () => {
|
|
|
|
- // changeVisible('audit', false);
|
|
|
|
- // },
|
|
|
|
- // });
|
|
|
|
- // };
|
|
|
|
- const handleAuditNodeOk = values => {
|
|
|
|
- console.log(values);
|
|
|
|
- let FlowNodes = current.FlowNodes;
|
|
|
|
-
|
|
|
|
- changeVisible('auditNode', false);
|
|
|
|
- if (currentNode.id) {
|
|
|
|
- let index = FlowNodes.findIndex(item => item.id == currentNode.id);
|
|
|
|
- let newNodes = [...FlowNodes];
|
|
|
|
- newNodes[index] = values;
|
|
|
|
- // 将同审批级别的审批关系设置为相同
|
|
|
|
- newNodes.forEach(item => {
|
|
|
|
- if (item.seq == values.seq) {
|
|
|
|
- item.seq_relate = values.seq_relate;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- // 排序
|
|
|
|
- newNodes.sort((a, b) => a.seq - b.seq);
|
|
|
|
- setCurrent({
|
|
|
|
- ...current,
|
|
|
|
- FlowNodes: newNodes,
|
|
|
|
- });
|
|
|
|
- } else {
|
|
|
|
- setCurrent({
|
|
|
|
- ...current,
|
|
|
|
- FlowNodes: [...FlowNodes, values],
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- };
|
|
|
|
- const handleDelete = item => {
|
|
|
|
- let newNodes = [...current.FlowNodes];
|
|
|
|
- let index = newNodes.indexOf(item);
|
|
|
|
- newNodes.splice(index, 1);
|
|
|
|
- setCurrent({
|
|
|
|
- ...current,
|
|
|
|
- FlowNodes: newNodes,
|
|
|
|
- });
|
|
|
|
|
|
+ const [formData, setFormData] = useState([]);
|
|
|
|
+ const flowDetail = {
|
|
|
|
+ nodes: [],
|
|
|
|
+ edgs: [],
|
|
};
|
|
};
|
|
- // const onCancel = () => {
|
|
|
|
- // form.resetFields();
|
|
|
|
- // setCurrent({});
|
|
|
|
- // };
|
|
|
|
- const onSave = () => {
|
|
|
|
- const nodes = current.FlowNodes.map((item,index) => ({
|
|
|
|
- flow_id: current.id,
|
|
|
|
- node: item.node,
|
|
|
|
- desc: item.desc,
|
|
|
|
- audit_role: item.audit_role,
|
|
|
|
- seq: index + 1,
|
|
|
|
- // seq_relate: item.seq_relate,
|
|
|
|
- }));
|
|
|
|
-
|
|
|
|
|
|
+ const onChange = valuse => {
|
|
dispatch({
|
|
dispatch({
|
|
- type: 'flow/addAuditNode',
|
|
|
|
|
|
+ type: 'xflow/save',
|
|
payload: {
|
|
payload: {
|
|
- flowId: current.id,
|
|
|
|
- nodes: nodes,
|
|
|
|
|
|
+ formData: valuse,
|
|
},
|
|
},
|
|
});
|
|
});
|
|
};
|
|
};
|
|
- // const handleSelect = id => {
|
|
|
|
- // const item = list.find(item => item.list?.id == id);
|
|
|
|
- // console.log(item);
|
|
|
|
- // setCurrent({
|
|
|
|
- // ...item.list,
|
|
|
|
- // });
|
|
|
|
- // };
|
|
|
|
- const changeVisible = (type, visible) => {
|
|
|
|
- setVisible({
|
|
|
|
- ...visible,
|
|
|
|
- [type]: visible,
|
|
|
|
- });
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- // const renderTitle = () => {
|
|
|
|
- // return (
|
|
|
|
- // <div className={styles.box}>
|
|
|
|
- // <span>审批详情</span>
|
|
|
|
- // {current?.id && (
|
|
|
|
- // <div className={styles.btns}>
|
|
|
|
- // {/* <Button onClick={onCancel}>取消</Button> */}
|
|
|
|
- // <Button onClick={onSave} type="primary">
|
|
|
|
- // 保存
|
|
|
|
- // </Button>
|
|
|
|
- // <Button
|
|
|
|
- // onClick={() => {
|
|
|
|
- // setCurrentNode({});
|
|
|
|
- // changeVisible('auditNode', true);
|
|
|
|
- // }}
|
|
|
|
- // type="primary"
|
|
|
|
- // >
|
|
|
|
- // 添加节点
|
|
|
|
- // </Button>
|
|
|
|
- // </div>
|
|
|
|
- // )}
|
|
|
|
- // </div>
|
|
|
|
- // );
|
|
|
|
- // };
|
|
|
|
-
|
|
|
|
- useEffect(() => {
|
|
|
|
- if (!current.id) {
|
|
|
|
- router.go(-1);
|
|
|
|
- } else {
|
|
|
|
- dispatch({
|
|
|
|
- type: 'user/fetch',
|
|
|
|
- });
|
|
|
|
- dispatch({
|
|
|
|
- type: 'flow/queryAuditList',
|
|
|
|
- });
|
|
|
|
- dispatch({
|
|
|
|
- type: 'flow/getRoleList',
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- }, []);
|
|
|
|
-
|
|
|
|
return (
|
|
return (
|
|
- <div>
|
|
|
|
- <div className={styles.btns}>
|
|
|
|
- <Button onClick={() => router.go(-1)}>返回</Button>
|
|
|
|
- {/* <Button onClick={onCancel}>取消</Button> */}
|
|
|
|
- <Button onClick={onSave} type="primary">
|
|
|
|
- 保存
|
|
|
|
- </Button>
|
|
|
|
- <Button
|
|
|
|
- onClick={() => {
|
|
|
|
- setCurrentNode({});
|
|
|
|
- changeVisible('auditNode', true);
|
|
|
|
- }}
|
|
|
|
- type="primary"
|
|
|
|
- >
|
|
|
|
- 添加节点
|
|
|
|
- </Button>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
- <Table rowKey="id" dataSource={current?.FlowNodes || []} columns={columns} />
|
|
|
|
- {/* <AuditModal
|
|
|
|
- visible={visible.audit}
|
|
|
|
- onOk={handleAuditOk}
|
|
|
|
- onCancel={() => changeVisible('audit', false)}
|
|
|
|
- /> */}
|
|
|
|
- <AuditNodeModal
|
|
|
|
- roleList={roleList}
|
|
|
|
- data={currentNode}
|
|
|
|
- visible={visible.auditNode}
|
|
|
|
- onOk={handleAuditNodeOk}
|
|
|
|
- onCancel={() => changeVisible('auditNode', false)}
|
|
|
|
- />
|
|
|
|
- </div>
|
|
|
|
|
|
+ <Tabs defaultActiveKey="1">
|
|
|
|
+ <TabPane tab="表单设计" key="1">
|
|
|
|
+ <AuditForm onChange={values => onChange(values)} />
|
|
|
|
+ </TabPane>
|
|
|
|
+ <TabPane tab="流程控制" key="2">
|
|
|
|
+ <Flow
|
|
|
|
+ meta={{ type: 'edit', flowId: 2 }}
|
|
|
|
+ flowDetail={flowDetail}
|
|
|
|
+ // onUpdate={node => this.onUpdate(node)}
|
|
|
|
+ />
|
|
|
|
+ </TabPane>
|
|
|
|
+ </Tabs>
|
|
|
|
+ // <div>
|
|
|
|
+ //
|
|
|
|
+ //
|
|
|
|
+ // </div>
|
|
);
|
|
);
|
|
}
|
|
}
|
|
export default connect(({ flow, loading }) => ({
|
|
export default connect(({ flow, loading }) => ({
|