ClassifyModal.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { Button, List, Modal, Select, Table } from 'antd';
  2. import TreeSelect from 'rc-tree-select';
  3. import React, { useEffect, useMemo } from 'react';
  4. const ClassifyModal = ({ data, visible, userList, onClose, handleChange, loading }) => {
  5. const { classify = [], project_id } = data;
  6. const list = useMemo(() => {
  7. return userList.map(item => {
  8. return { label: `${item.CName}(${item.UserName})`, value: item.ID };
  9. });
  10. }, [userList]);
  11. const onChange = (e, item) => {
  12. console.log(e, item);
  13. const idx = classify.findIndex(cur => cur.classify_id == item.classify_id);
  14. if (idx > -1) {
  15. const curClassifyItem = { ...classify[idx], uid: e.join(',') };
  16. classify[idx] = curClassifyItem;
  17. handleChange({ project_id, classify });
  18. }
  19. };
  20. const columns = [
  21. {
  22. title: '分类名称',
  23. width: '50%',
  24. render: item => item.name,
  25. },
  26. {
  27. title: '选择操作人',
  28. width: '50%',
  29. render: item => {
  30. return (
  31. <Select
  32. showSearch
  33. mode="multiple"
  34. allowClear
  35. style={{ width: '100%' }}
  36. placeholder="选择操作人"
  37. defaultValue={item.uid ? item.uid.split(',').map(item => Number(item)) : []}
  38. onChange={e => onChange(e, item)}
  39. options={list}
  40. filterOption={(input, option) =>
  41. (option?.label ?? '').toLowerCase().includes(input.toLowerCase())
  42. }
  43. />
  44. );
  45. },
  46. },
  47. ];
  48. return (
  49. <Modal
  50. width="60%"
  51. // confirmLoading={loading}
  52. maskClosable={false}
  53. destroyOnClose
  54. title="编辑分类"
  55. visible={visible}
  56. onCancel={onClose}
  57. onOk={onClose}
  58. footer={[
  59. <Button key="submit" type="primary" onClick={onClose}>
  60. 确定
  61. </Button>,
  62. ]}
  63. >
  64. <Table
  65. loading={loading}
  66. columns={columns}
  67. dataSource={classify}
  68. pagination={{ position: ['none', 'none'], pageSize: 999 }}
  69. scroll={{ y: 500 }}
  70. />
  71. </Modal>
  72. );
  73. };
  74. export default ClassifyModal;