ExecutionModal.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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, form, currentItem, loading, depUserTree, dispatch } = props;
  8. const handleOk = () => {
  9. form.validateFields((err, {managerID, contractStatus}) => {
  10. if (err) return;
  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 }}>
  63. <Form.Item label="项目经理">
  64. {form.getFieldDecorator('managerID', {
  65. rules: [
  66. {
  67. required: true,
  68. message: '请选择项目经理',
  69. },
  70. ],
  71. })(
  72. <TreeSelect
  73. showSearch
  74. allowClear
  75. style={{ width: '100%' }}
  76. placeholder="请选择项目经理"
  77. multiple={false}
  78. filterTreeNode={(input, option) => {
  79. return option.props.title === input;
  80. }}
  81. onChange={onChangeManager}
  82. >
  83. {renderUserSelectTreeNodes(depUserTree)}
  84. </TreeSelect>
  85. )}
  86. </Form.Item>
  87. <Form.Item label="合同状态">
  88. {form.getFieldDecorator('contractStatus', {
  89. rules: [{ required: true, message: '请选择合同状态' }],
  90. })(
  91. <Select style={{ width: '100%' }}>
  92. <Option key={0}>无合同</Option>
  93. <Option key={1}>有合同</Option>
  94. </Select>
  95. )}
  96. </Form.Item>
  97. </Form>
  98. </Modal>
  99. );
  100. }
  101. export default connect()(Form.create()(ExecutionModal));