saveUseImg.tsx 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import { useAjax } from "@/Hook/useAjax"
  2. import { Button, message, Modal, Space, 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. import { DiffOutlined } from "@ant-design/icons"
  9. interface Props {
  10. type: string,
  11. onChange?: (value: { dynamicMaterialDTos: any, mediaType: number, deliveryMode: string, creativeTemplateId: number, dynamicCreativesTextDTOS: any }) => void
  12. }
  13. /**
  14. * 使用素材
  15. * @returns
  16. */
  17. const SaveUseImg: React.FC<Props> = ({ onChange, type }) => {
  18. /***********************/
  19. const [visible, setVisible] = useState<boolean>(false)
  20. const [queryFormNew, setQueryFormNew] = useState<PULLIN.GetV3StrategyListProps>({ pageNum: 1, pageSize: 20, type })
  21. const [selectedRowKeys, setSelectedRowKeys] = useState<any[]>([])
  22. const getStrategy = useAjax((params) => getV3StrategyListApi(params))
  23. const delStrategy = useAjax((params) => delV3StrategyApi(params))
  24. const getAdqV3AdList = useAjax((params) => getAdqV3AdListApi(params), { formatResult: true })
  25. /***********************/
  26. useEffect(() => {
  27. if (visible) {
  28. getList()
  29. }
  30. }, [visible, queryFormNew])
  31. const getList = () => {
  32. getStrategy.run(queryFormNew)
  33. }
  34. const use = () => {
  35. setVisible(true)
  36. }
  37. const handleOk = () => {
  38. if (selectedRowKeys.length > 0) {
  39. onChange?.(JSON.parse(selectedRowKeys[0].strategyValue))
  40. setVisible(false)
  41. } else {
  42. message.error('请选择素材组')
  43. }
  44. }
  45. const del = (id: number) => {
  46. delStrategy.run(id).then(res => {
  47. message.success('删除成功')
  48. getStrategy.refresh()
  49. })
  50. }
  51. return <>
  52. <Button type='link' style={{ padding: 0, fontSize: 12 }} onClick={use} icon={<DiffOutlined />}>使用素材组</Button>
  53. {visible && <Modal
  54. title={<strong>使用策略组</strong>}
  55. visible={visible}
  56. onCancel={() => { setVisible(false) }}
  57. onOk={handleOk}
  58. width={700}
  59. confirmLoading={getAdqV3AdList.loading}
  60. className="modalResetCss"
  61. >
  62. <Space style={{ width: '100%' }} direction='vertical'>
  63. <Table
  64. dataSource={getStrategy?.data?.records}
  65. loading={getStrategy.loading}
  66. columns={Columns(del)}
  67. size="small"
  68. bordered
  69. rowKey={'id'}
  70. scroll={{ x: 650 }}
  71. rowSelection={{
  72. type: 'radio',
  73. onChange: (selectedRowKeys: React.Key[], selectedRows: any[]) => {
  74. console.log(selectedRowKeys, selectedRows);
  75. setSelectedRowKeys(selectedRows)
  76. }
  77. }}
  78. pagination={{
  79. total: getStrategy?.data?.total,
  80. current: queryFormNew?.pageNum,
  81. pageSize: queryFormNew?.pageSize
  82. }}
  83. onChange={(pagination) => {
  84. const { current, pageSize } = pagination
  85. setQueryFormNew({ ...queryFormNew, pageNum: current as number, pageSize: pageSize as number || 20 })
  86. }}
  87. />
  88. </Space>
  89. </Modal>}
  90. </>
  91. }
  92. export default React.memo(SaveUseImg)