index.tsx 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import { useAjax } from '@/Hook/useAjax'
  2. import { CampaignTypeEnum, ConfiguredStatusEnum, PromotedObjectType } from '@/services/launchAdq/enum'
  3. import { Col, Row, Input, Select, Button, message } from 'antd'
  4. import React, { useEffect, useState, useCallback } from 'react'
  5. import TableData from '../../components/TableData'
  6. import tableConfig from './tableConfig'
  7. import { getAdqCampaignList, putAdqCampaignPage } from '@/services/launchAdq/adq'
  8. function Campaign(props: { accountId: string, adAccountId: string, userId: string }) {
  9. let { accountId, adAccountId, userId } = props
  10. // api方法
  11. const listAjax = useAjax((params) => getAdqCampaignList(params), { formatResult: true })
  12. const syncAjax = useAjax((adAccountId) => putAdqCampaignPage(adAccountId))
  13. console.log('创意=====》')
  14. useEffect(() => {
  15. getList({ pageNum: 1, pageSize: 20 })
  16. }, [accountId, userId])
  17. // 获取列表
  18. const getList = useCallback((params: {
  19. pageNum: number;
  20. pageSize: number;
  21. userId?: string;//用户ID
  22. accountId?: string;//账号本地ID
  23. campaignName?: string;//计划名称
  24. configuredStatus?: string;//计划状态
  25. campaignType?: string;//计划类型
  26. promotedObjectType?: string;//推广目标类型
  27. }) => {
  28. if (!params.campaignName || params.campaignName !== listAjax?.params[0]?.adcreativeName) {
  29. !params.campaignName && delete params.campaignName
  30. listAjax.run({ ...params, userId, accountId })
  31. }
  32. }, [accountId, userId, listAjax])
  33. // 同步
  34. const sync = useCallback(() => {
  35. if (!adAccountId) {
  36. message.error('请先选择要同步的广点通账号!')
  37. return
  38. }
  39. syncAjax.run(adAccountId).then(res => {
  40. console.log(res)
  41. res && listAjax.refresh()
  42. res ? message.success('同步成功!') : message.error('同步失败!')
  43. })
  44. }, [adAccountId, listAjax])
  45. return <div>
  46. <TableData
  47. columns={tableConfig}
  48. ajax={listAjax}
  49. syncAjax={sync}
  50. dataSource={listAjax?.data?.data?.records}
  51. loading={listAjax?.loading || syncAjax?.loading}
  52. scroll={{ x: 2000 }}
  53. total={listAjax?.data?.data?.total}
  54. page={listAjax?.data?.data?.current}
  55. pageSize={listAjax?.data?.data?.size}
  56. myKey={'adcreativeId'}
  57. leftChild={<>
  58. <Row gutter={[10, 10]}>
  59. <Col>
  60. <Input
  61. placeholder='创意名称'
  62. allowClear
  63. onBlur={(e) => {
  64. let value = e.target.value
  65. getList({ pageNum: 1, pageSize: 20, campaignName: value })
  66. }}
  67. onKeyDownCapture={(e: any) => {
  68. let key = e.key
  69. if (key === 'Enter') {
  70. let value = e.target.value
  71. getList({ pageNum: 1, pageSize: 20, campaignName: value })
  72. }
  73. }}
  74. onChange={(e) => {
  75. let value = e.target.value
  76. if (!value) {
  77. getList({ pageNum: 1, pageSize: 20, campaignName: value })
  78. }
  79. }}
  80. />
  81. </Col>
  82. <Col>
  83. <Select placeholder='推广目标选择' style={{ minWidth: 200 }} showSearch filterOption={(input: any, option: any) =>
  84. (option!.children as unknown as string).toLowerCase().includes(input.toLowerCase())
  85. } allowClear onChange={(value: any) => {
  86. getList({ pageNum: 1, pageSize: 20, promotedObjectType:value })
  87. }}>
  88. {
  89. Object.keys(PromotedObjectType).map(key => {
  90. // let obj = JSON.parse(PromotedObjectType[key])
  91. return <Select.Option value={key} key={key}>{PromotedObjectType[key]}</Select.Option>
  92. })
  93. }
  94. </Select>
  95. </Col>
  96. <Col>
  97. <Select placeholder='计划状态' style={{ minWidth: 200 }} showSearch filterOption={(input: any, option: any) =>
  98. (option!.children as unknown as string).toLowerCase().includes(input.toLowerCase())
  99. } allowClear onChange={(value: any) => {
  100. getList({ pageNum: 1, pageSize: 20, configuredStatus: value })
  101. }}>
  102. {
  103. Object.keys(ConfiguredStatusEnum).map(key => {
  104. // let obj = JSON.parse(PromotedObjectType[key])
  105. return <Select.Option value={key} key={key}>{ConfiguredStatusEnum[key]}</Select.Option>
  106. })
  107. }
  108. </Select>
  109. </Col>
  110. <Col>
  111. <Select placeholder='计划类型' style={{ minWidth: 200 }} showSearch filterOption={(input: any, option: any) =>
  112. (option!.children as unknown as string).toLowerCase().includes(input.toLowerCase())
  113. } allowClear onChange={(value: any) => {
  114. getList({ pageNum: 1, pageSize: 20, campaignType: value })
  115. }}>
  116. {
  117. Object.keys(CampaignTypeEnum).map(key => {
  118. // let obj = JSON.parse(PromotedObjectType[key])
  119. console.log(key)
  120. return <Select.Option value={key} key={key}>{CampaignTypeEnum[key]}</Select.Option>
  121. })
  122. }
  123. </Select>
  124. </Col>
  125. </Row>
  126. </>}
  127. onChange={(props: any) => {
  128. let { sortData, pagination } = props
  129. let { current, pageSize } = pagination
  130. getList({ pageNum: current, pageSize })
  131. }}
  132. />
  133. </div>
  134. }
  135. export default Campaign