ExecutionModal.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import React, { useState, useEffect } from 'react';
  2. import { Form, Select, Modal, Input, TreeSelect } from 'antd';
  3. import { connect } from 'dva';
  4. const { Option } = Select;
  5. const { TreeNode } = TreeSelect;
  6. function ExecutionModal(props) {
  7. const { visible, onOk, onClose, currentItem, loading, depUserTree, dispatch } = props;
  8. const [form] = Form.useForm();
  9. const handleOk = () => {
  10. form.validateFields().then(({ managerID, contractStatus }) => {
  11. const [exe_manager_id, dep_id] = managerID.split('||');
  12. dispatch({
  13. type: 'approval/startExecution',
  14. payload: {
  15. project_code_id: currentItem.id,
  16. with_contract: Number(contractStatus),
  17. dep_id: Number(dep_id),
  18. exe_manager_id: Number(exe_manager_id),
  19. },
  20. callback: () => onOk(),
  21. });
  22. });
  23. };
  24. const onChangeManager = (id, e) => {
  25. console.log(id);
  26. };
  27. const renderUserSelectTreeNodes = data => {
  28. return data.map(item => {
  29. if (item.children) {
  30. return (
  31. <TreeNode
  32. title={item.title}
  33. key={item.key}
  34. value={item.manage || item.value}
  35. dataRef={item}
  36. selectable={item.selectable}
  37. >
  38. {renderUserSelectTreeNodes(item.children)}
  39. </TreeNode>
  40. );
  41. }
  42. return (
  43. <TreeNode
  44. title={item.title}
  45. key={item.ID}
  46. value={item.manage || item.value}
  47. selectable={item.selectable}
  48. />
  49. );
  50. });
  51. };
  52. return (
  53. <Modal
  54. title="转执行"
  55. confirmLoading={loading}
  56. maskClosable={false}
  57. destroyOnClose
  58. visible={visible}
  59. onCancel={onClose}
  60. onOk={handleOk}
  61. >
  62. <Form labelCol={{ span: 5 }} wrapperCol={{ span: 15 }} form={form}>
  63. <Form.Item
  64. label="项目经理"
  65. name="managerID"
  66. rules={[{ required: true, message: '请选择项目经理' }]}
  67. >
  68. <TreeSelect
  69. showSearch
  70. allowClear
  71. style={{ width: '100%' }}
  72. placeholder="请选择项目经理"
  73. multiple={false}
  74. filterTreeNode={(input, option) => {
  75. return option.props.title === input;
  76. }}
  77. onChange={onChangeManager}
  78. >
  79. {renderUserSelectTreeNodes(depUserTree)}
  80. </TreeSelect>
  81. </Form.Item>
  82. <Form.Item
  83. label="合同状态"
  84. name="contractStatus"
  85. rules={[{ required: true, message: '请选择合同状态' }]}
  86. >
  87. <Select style={{ width: '100%' }}>
  88. <Option key={0}>无合同</Option>
  89. <Option key={1}>有合同</Option>
  90. </Select>
  91. </Form.Item>
  92. </Form>
  93. </Modal>
  94. );
  95. }
  96. export default connect()(ExecutionModal);