index.tsx 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { useAjax } from "@/Hook/useAjax"
  2. import { PromotedObjectType } from "@/services/launchAdq/enum"
  3. import { getTaskListApi, TaskListProps } from "@/services/launchAdq/taskList"
  4. import { Input, Select, Space } from "antd"
  5. import React, { useEffect, useState } from "react"
  6. import TableData from "../../components/TableData"
  7. import Log from "./log"
  8. import tableConfig from './tableConfig'
  9. const TaskList: React.FC = () => {
  10. /*************************/
  11. const [queryForm, setQueryForm] = useState<TaskListProps>({ pageSize: 20, pageNum: 1 })
  12. const [logVisible, setLogVisible] = useState<boolean>(false)
  13. const [logData, setLogData] = useState<{ taskId: number, campaignName: string } | number>({ taskId: 0, campaignName: '' })
  14. const [allData, setAllData] = useState<any>({})
  15. const getTaskList = useAjax((params) => getTaskListApi(params), { formatResult: true })
  16. /*************************/
  17. useEffect(() => {
  18. let campaignName = sessionStorage.getItem('CAMP')
  19. if (campaignName) {
  20. setQueryForm({ ...queryForm, campaignName })
  21. sessionStorage.removeItem('CAMP')
  22. }
  23. }, [])
  24. useEffect(() => {
  25. getList()
  26. }, [queryForm])
  27. const getList = () => {
  28. getTaskList.run(queryForm)
  29. }
  30. const callback = (data: any, type: 'log' | 'page', allData?: any) => {
  31. switch (type) {
  32. case 'log':
  33. setLogData({ ...data })
  34. setLogVisible(true)
  35. setAllData(allData)
  36. break
  37. }
  38. }
  39. return <>
  40. <TableData
  41. columns={() => tableConfig(callback)}
  42. ajax={getTaskList}
  43. dataSource={getTaskList?.data?.data?.records}
  44. loading={getTaskList?.loading}
  45. scroll={{ y: 600,x:1500}}
  46. total={getTaskList?.data?.data?.total}
  47. page={getTaskList?.data?.data?.current}
  48. pageSize={getTaskList?.data?.data?.size}
  49. leftChild={<Space>
  50. <Input placeholder="计划名称" style={{ width: 150 }} allowClear value={queryForm?.campaignName} onChange={(e) => {setQueryForm({ ...queryForm, campaignName: e.target.value, pageNum: 1 }); sessionStorage.removeItem('CAMP')}} />
  51. <Select
  52. placeholder="计划类型"
  53. maxTagCount={1}
  54. allowClear
  55. style={{ width: 150 }}
  56. value={queryForm?.campaignType}
  57. onChange={(e) => { setQueryForm({ ...queryForm, campaignType: e }) }}
  58. >
  59. <Select.Option value='CAMPAIGN_TYPE_NORMAL'>普通展示广告</Select.Option>
  60. <Select.Option value='CAMPAIGN_TYPE_WECHAT_MOMENTS'>微信朋友圈广告</Select.Option>
  61. </Select>
  62. <Select style={{ width: 150 }} allowClear value={queryForm?.promotedObjectType} placeholder="推广目标" showSearch filterOption={(input: any, option: any) =>
  63. (option!.children as unknown as string).toLowerCase().includes(input.toLowerCase())
  64. } onChange={(e) => { setQueryForm({ ...queryForm, promotedObjectType: e }) }}>
  65. {Object.keys(PromotedObjectType).map(key => {
  66. return <Select.Option value={key} key={key}>{PromotedObjectType[key]}</Select.Option>
  67. })}
  68. </Select>
  69. </Space>}
  70. onChange={(props: any) => {
  71. let { pagination } = props
  72. let { current, pageSize } = pagination
  73. setQueryForm({ ...queryForm, pageNum: current, pageSize })
  74. }}
  75. />
  76. {/* 日志 */}
  77. {logVisible && <Log {...logData as any} visible={logVisible} onClose={() => setLogVisible(false)} allData={allData}/>}
  78. </>
  79. }
  80. export default React.memo(TaskList)