SelectActivity.jsx 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import React, { useState, useEffect } from 'react';
  2. import { Form, Select, Modal, Button, Table, Divider, Tag, Input } from 'antd';
  3. import { apis, fetch } from '../../utils/request';
  4. import Navigate from '@/components/Navigate';
  5. const getActivities = fetch(apis.activity.listSelected)
  6. const { Search } = Input;
  7. export default (props) => {
  8. const {
  9. value,
  10. onChange,
  11. ...rest
  12. } = props;
  13. const [list, setList] = useState([]);
  14. const [visible, setVisible] = useState(false);
  15. const [activity, setActivity] = useState({ dynamicId: undefined, title: '请选择活动' })
  16. const getActTitle = val => ((list.filter(x => x.dynamicId === val)[0]) || {}).title || '请选择活动'
  17. const setAct = val => setActivity({ dynamicId: val, title: getActTitle(val) })
  18. const buildingId = props.buildingId()
  19. useEffect(() => {
  20. getActivities({
  21. params: {
  22. buildingId,
  23. pageNum: 1,
  24. pageSize: 999,
  25. activityStatus: 2,
  26. }
  27. }).then((data) => {
  28. setList(data.list || [])
  29. console.log('----', buildingId, value)
  30. setAct(buildingId ? undefined : value);
  31. })
  32. }, [buildingId]);
  33. if (value !== activity.dynamicId) {
  34. setAct(value);
  35. }
  36. const searchActivity =(e)=>{
  37. getActivities({
  38. params: {
  39. buildingId,
  40. pageNum: 1,
  41. pageSize: 999,
  42. activityStatus: 2,
  43. name:e
  44. }
  45. }).then((data) => {
  46. setList(data.list || [])
  47. console.log('----', buildingId, value)
  48. // setAct(buildingId ? undefined : value);
  49. })
  50. }
  51. let chooseVal = value
  52. const handleChange = val => chooseVal = val
  53. const setData = val => {
  54. setAct(val)
  55. onChange(val)
  56. setVisible(false)
  57. }
  58. const columns = [
  59. {
  60. title: '标题',
  61. dataIndex: 'title',
  62. key: 'dynamicId',
  63. align: 'center',
  64. ellipsis: true,
  65. render: text => <a>{text}</a>,
  66. },
  67. {
  68. title: '操作',
  69. dataIndex: 'name',
  70. align: 'center',
  71. width: '20%',
  72. render: (text, record) => (
  73. <Navigate onClick={() => setData(record.dynamicId)}>选择</Navigate>
  74. ),
  75. },
  76. ];
  77. return (
  78. <div>
  79. <div ><Navigate onClick={() => setVisible(true)}>{activity.title}</Navigate></div>
  80. <Modal
  81. title="请选择"
  82. visible={visible}
  83. onCancel={() => setVisible(false)}
  84. footer={[]}
  85. >
  86. <Search
  87. placeholder="请输入标题"
  88. enterButton="搜索"
  89. size="large"
  90. onSearch={value => searchActivity(value)}
  91. style={{ marginBottom: '16px' }}
  92. />
  93. <Table rowKey={list => list.dynamicId} columns={columns} dataSource={list} />
  94. </Modal>
  95. </div>
  96. );
  97. }