index.tsx 4.2 KB

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