import { useAjax } from '@/Hook/useAjax' import { CampaignTypeEnum, ConfiguredStatusEnum, 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 { getAdqCampaignList, putAdqCampaignPage, putAdqCampaignConfigStatus } 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 Campaign(props: Props) { let { accountId, adAccountId, userId, queryParmas, tableIdClick } = props // api方法 const listAjax = useAjax((params) => getAdqCampaignList(params), { formatResult: true }) const syncAjax = useAjax((adAccountId) => putAdqCampaignPage(adAccountId)) const switchAjax = useAjax((params) => putAdqCampaignConfigStatus(params)) const [selectedRows, setSelectedRows] = useState([]) const [queryFrom, set_queryFrom] = useState<{ pageNum: number; pageSize: number; userId?: string;//用户ID accountId?: string;//账号本地ID campaignName?: string;//计划名称 campaignId?: string;//计划ID configuredStatus?: string;//计划状态 campaignType?: string;//计划类型 promotedObjectType?: string;//推广目标类型 }>({ pageNum: 1, pageSize: 20 }) console.log('计划=====》') useEffect(() => { getList({ pageSize: 20, pageNum: 1, accountId: queryParmas.accountId, campaignId: queryParmas.campaignId }) }, [userId, queryParmas.accountId, queryParmas.campaignId]) // 获取列表 const getList = useCallback((params: any) => { // if (!params.campaignName || params.campaignName !== listAjax?.params[0]?.adcreativeName) { // !params.campaignName && delete params.campaignName // } 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]) // 启停 const switchHandle = useCallback((data, checked) => { let { accountId, campaignId } = data let configuredStatus = checked ? 'AD_STATUS_NORMAL' : 'AD_STATUS_SUSPEND' switchAjax.run({ accountId, campaignId, configuredStatus }).then(res => { res && listAjax.refresh() res ? message.success(checked ? '开启计划成功!' : '关闭计划成功!') : message.error(checked ? '开启计划失败' : '关闭计划失败!') }) }, []) return
tableConfig(switchHandle, tableIdClick)} ajax={listAjax} syncAjax={sync} dataSource={listAjax?.data?.data?.records} loading={listAjax?.loading || syncAjax?.loading} scroll={{ x: 2000, y: 550 }} total={listAjax?.data?.data?.total} page={listAjax?.data?.data?.current} pageSize={listAjax?.data?.data?.size} myKey={'campaignId'} leftChild={<> { let value = e.target.value set_queryFrom({ ...queryFrom, accountId: value }) tableIdClick({ activeKey: '1', parma: { accountId: '' } }) }} /> { let value = e.target.value set_queryFrom({ ...queryFrom, campaignName: value }) }} /> { let value = e.target.value set_queryFrom({ ...queryFrom, campaignId: value }) tableIdClick({ activeKey: '2', parma: { campaignId: '' } }) }} /> } 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?.campaignId?.toString()), onChange: (selectedRowKeys: any, selectedRows: any) => { setSelectedRows(selectedRows) } }} />
} export default Campaign