123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- 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<any[]>([])
- 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 <div>
- <TableData
- isCard={false}
- columns={() => 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={<>
- <Row gutter={[10, 10]}>
- <Col>
- <Input
- placeholder='广告账号'
- allowClear
- style={{ width: 150 }}
- onChange={(e) => {
- let value = e.target.value
- set_queryFrom({ ...queryFrom, accountId: value })
- tableIdClick({ activeKey: '1', parma: { accountId: '' } })
- }}
- />
- </Col>
- <Col>
- <Input
- placeholder='计划名称'
- allowClear
- style={{ width: 150 }}
- onChange={(e) => {
- let value = e.target.value
- set_queryFrom({ ...queryFrom, campaignName: value })
- }}
- />
- </Col>
- <Col>
- <Input
- placeholder='计划ID'
- allowClear
- style={{ width: 150 }}
- onChange={(e) => {
- let value = e.target.value
- set_queryFrom({ ...queryFrom, campaignId: value })
- tableIdClick({ activeKey: '2', parma: { campaignId: '' } })
- }}
- />
- </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>
- <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, configuredStatus: value })
- }}>
- {
- Object.keys(ConfiguredStatusEnum).map(key => {
- // let obj = JSON.parse(PromotedObjectType[key])
- return <Select.Option value={key} key={key}>{ConfiguredStatusEnum[key]}</Select.Option>
- })
- }
- </Select>
- </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, campaignType: value })
- }}>
- {
- Object.keys(CampaignTypeEnum).map(key => {
- // let obj = JSON.parse(PromotedObjectType[key])
- console.log(key)
- return <Select.Option value={key} key={key}>{CampaignTypeEnum[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?.campaignId?.toString()),
- onChange: (selectedRowKeys: any, selectedRows: any) => {
- setSelectedRows(selectedRows)
- }
- }}
- />
- </div>
- }
- export default Campaign
|