| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 | 
import { useAjax } from '@/Hook/useAjax'import { PromotedObjectType } from '@/services/launchAdq/enum'import { Col, Row, Input, Select, message, Button } from 'antd'import React, { useEffect, useCallback, useState } from 'react'import TableData from '../../components/TableData'import tableConfig from './tableConfig'import { adcreativeSyncAll, getAdqAdcreativeList } from '@/services/launchAdq/adq'type Props = {    accountId: string,    adAccountId: string,    userId: string,    queryParmas: {        accountId?: string,//账户ID        campaignId?: string,//计划ID        adgroupId?: string,//广告ID        adcreativeId?: string,//创意ID        pageId?: string,//落地页ID        targetingId?: string,//定向ID}    },    tableIdClick: (props: {        activeKey: string, parma: {            accountId?: string,//账户ID            campaignId?: string,//计划ID            adgroupId?: string,//广告ID            adcreativeId?: string,//创意ID            pageId?: string,//落地页ID            targetingId?: string,//定向ID        }    }) => void}function Creative(props: Props) {    let { accountId, adAccountId, userId, tableIdClick, queryParmas } = props    // api方法    const listAjax = useAjax((params) => getAdqAdcreativeList(params), { formatResult: true })    const syncAjax = useAjax((adAccountId) => adcreativeSyncAll(adAccountId))    const [selectedRows, setSelectedRows] = useState<any[]>([])    const [queryFrom,set_queryFrom]=useState<{        pageNum: number;        pageSize: number;        accountId?: string;        adcreativeName?: string;        adcreativeId?: string;        promotedObjectType?:string    }>({pageNum:1,pageSize:20})    console.log('创意=====》')    useEffect(() => {        getList({ pageNum: 1, pageSize: 20 })    }, [])    // 获取列表    const getList = useCallback((params: {        pageNum: number;        pageSize: number;        accountId?: string;        adcreativeName?: string;        adcreativeId?: string;    }) => {        listAjax.run({ ...params, userId })    }, [userId, listAjax])    // 同步     const sync = useCallback(() => {        if (selectedRows?.length === 0) {            message.error('请先勾选要同步的广点通账号!')            return        }        let arr = [...new Set(selectedRows?.map(item=>item.accountId))]        syncAjax.run({ accountIdList:arr }).then(res => {            res && listAjax.refresh()            res ? message.success('同步成功!') : message.error('同步失败!')        })    }, [listAjax,selectedRows])    return <div>        <TableData            isCard={false}            columns={() => tableConfig(tableIdClick)}            ajax={listAjax}            syncAjax={sync}            dataSource={listAjax?.data?.data?.records}            loading={listAjax?.loading || syncAjax?.loading}            scroll={{ x: 1200, y: 550 }}            total={listAjax?.data?.data?.total}            page={listAjax?.data?.data?.current}            pageSize={listAjax?.data?.data?.size}            myKey={'adcreativeId'}            leftChild={<>                <Row gutter={[10, 10]}>                    <Col>                        <Input                            placeholder='广告账号'                            allowClear                            style={{ width: 150 }}                            onChange={(e) => {                                let value = e.target.value                                set_queryFrom({...queryFrom,accountId: value })                            }}                        />                    </Col>                    <Col>                        <Input                            placeholder='创意名称'                            allowClear                            style={{ width: 150 }}                            onChange={(e) => {                                let value = e.target.value                                set_queryFrom({...queryFrom,adcreativeName: value })                            }}                        />                    </Col>                    <Col>                        <Input                            placeholder='创意ID'                            allowClear                            style={{ width: 150 }}                            onChange={(e) => {                                let value = e.target.value                                set_queryFrom({...queryFrom,adcreativeId: value })                            }}                        />                    </Col>                    <Col>                        <Select placeholder='推广目标选择' style={{ minWidth: 150 }} showSearch filterOption={(input: any, option: any) =>                            (option!.children as unknown as string).toLowerCase().includes(input.toLowerCase())                        } allowClear onChange={(value: any) => {                            set_queryFrom({...queryFrom,promotedObjectType: value })                        }}>                            {                                Object.keys(PromotedObjectType).map(key => {                                    // let obj = JSON.parse(PromotedObjectType[key])                                    return <Select.Option value={key} key={key}>{PromotedObjectType[key]}</Select.Option>                                })                            }                        </Select>                    </Col>                    <Col>                            <Button type='primary' onClick={()=>{getList({...queryFrom,pageNum:1})}}>搜索</Button>                    </Col>                </Row>            </>}            onChange={(props: any) => {                let { sortData, pagination } = props                let { current, pageSize } = pagination                set_queryFrom({...queryFrom,pageNum:current,pageSize})                getList({...queryFrom, pageNum: current, pageSize })            }}            rowSelection={{                selectedRowKeys: selectedRows?.map(item => item?.adcreativeId?.toString()),                onChange: (selectedRowKeys: any, selectedRows: any) => {                    setSelectedRows(selectedRows)                }            }}        />    </div>}export default Creative
 |