userTactics.tsx 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import { useAjax } from "@/Hook/useAjax"
  2. import { Button, Input, message, Modal, Space, Spin, Table } from "antd"
  3. import React, { useEffect, useState } from "react"
  4. import { Columns } from "./tableConfig"
  5. import { delV3StrategyApi, getV3StrategyListApi } from "@/services/adqV3"
  6. import { getAdqV3AdListApi } from "@/services/launchAdq/adqv3";
  7. import '../../index.less'
  8. interface Props {
  9. userId: number
  10. type: string,
  11. putInType?: 'NOVEL' | 'GAME'
  12. onChange?: (value: any) => void
  13. }
  14. /**
  15. * 使用策略组
  16. * @returns
  17. */
  18. const UserTactics: React.FC<Props> = ({ onChange, type, userId, putInType }) => {
  19. /***********************/
  20. const [visible, setVisible] = useState<boolean>(false)
  21. const [queryFormNew, setQueryFormNew] = useState<PULLIN.GetV3StrategyListProps>({ pageNum: 1, pageSize: 20, type })
  22. const [selectedRowKeys, setSelectedRowKeys] = useState<any[]>([])
  23. const getStrategy = useAjax((params) => getV3StrategyListApi(params))
  24. const delStrategy = useAjax((params) => delV3StrategyApi(params))
  25. const getAdqV3AdList = useAjax((params) => getAdqV3AdListApi(params), { formatResult: true })
  26. /***********************/
  27. useEffect(() => {
  28. if (visible) {
  29. getList()
  30. }
  31. }, [visible, queryFormNew, putInType])
  32. const getList = () => {
  33. getStrategy.run({ ...queryFormNew, taskType: putInType })
  34. }
  35. const use = () => {
  36. setVisible(true)
  37. }
  38. const handleOk = () => {
  39. if (selectedRowKeys.length > 0) {
  40. const hide = message.loading('正在检测广告是否被删除...', 0)
  41. let { strategyValue } = selectedRowKeys[0]
  42. let { adData } = JSON.parse(strategyValue)
  43. getAdqV3AdList.run({ pageNum: 1, pageSize: 100, useType: 1, userId, adgroupIdList: adData.map((item: { adgroupId: any; }) => item.adgroupId) }).then(res => {
  44. if (res?.data) {
  45. if (res.data?.records?.every((item: { isDeleted: boolean }) => !item.isDeleted)) {
  46. onChange?.(selectedRowKeys[0])
  47. } else {
  48. message.error('当前有广告给删除了')
  49. }
  50. } else {
  51. message.error('找不到广告,或者服务器异常')
  52. }
  53. hide()
  54. }).catch(() => hide())
  55. } else {
  56. message.error('请选择策略组')
  57. }
  58. }
  59. const del = (id: number) => {
  60. delStrategy.run(id).then(res => {
  61. message.success('删除成功')
  62. getStrategy.refresh()
  63. })
  64. }
  65. return <>
  66. <Button type='primary' onClick={use}>使用策略组</Button>
  67. {visible && <Modal
  68. title='使用策略组'
  69. open={visible}
  70. onCancel={() => { setVisible(false) }}
  71. onOk={handleOk}
  72. width={1200}
  73. confirmLoading={getAdqV3AdList.loading}
  74. className="modalResetCss"
  75. >
  76. <Space style={{ width: '100%' }} direction='vertical'>
  77. <Space>
  78. <Input.Search enterButton allowClear placeholder="请输入商品名称" onSearch={(value) => setQueryFormNew({ ...queryFormNew, strategyKey: value, pageNum: 1 })} />
  79. <span style={{ color: 'red' }}>请确保广告没有被删除</span>
  80. </Space>
  81. <Table
  82. dataSource={getStrategy?.data?.records}
  83. loading={getStrategy.loading}
  84. columns={Columns(del)}
  85. size="small"
  86. bordered
  87. rowKey={'id'}
  88. scroll={{ x: 800 }}
  89. rowSelection={{
  90. type: 'radio',
  91. onChange: (selectedRowKeys: React.Key[], selectedRows: any[]) => {
  92. console.log(selectedRowKeys, selectedRows);
  93. setSelectedRowKeys(selectedRows)
  94. }
  95. }}
  96. pagination={{
  97. total: getStrategy?.data?.total,
  98. current: queryFormNew?.pageNum,
  99. pageSize: queryFormNew?.pageSize
  100. }}
  101. onChange={(pagination) => {
  102. const { current, pageSize } = pagination
  103. setQueryFormNew({ ...queryFormNew, pageNum: current as number, pageSize: pageSize as number || 20 })
  104. }}
  105. />
  106. </Space>
  107. </Modal>}
  108. </>
  109. }
  110. export default React.memo(UserTactics)