import React, { useEffect, useState } from "react" import { useAjax } from "@/Hook/useAjax" import { getDynamicListApi, getDynamicTotalApi, GetGDTListProps } from "@/services/iaaData" import TablePro from "@/components/TablePro" import columns12 from "./tableConfig" import QueryForm from "@/components/QueryForm" import moment from "moment" import { useModel } from "umi" import { Button, message, Modal, Space, Table } from "antd" import { updateBatchDynamicCreativesInfoApi } from "@/services/gameData" import { PauseCircleOutlined, PlayCircleOutlined } from "@ant-design/icons" import DayAd from "./dayAd" /** * 腾讯创意列表 * @returns */ const Dynamic: React.FC = () => { /****************************************/ const { initialState } = useModel('@@initialState'); const [selectedRows, setSelectedRows] = useState([]) const [queryForm, setQueryForm] = useState({ pageNum: 1, pageSize: 30, costDayBegin: moment().format('YYYY-MM-DD'), costDayEnd: moment().format('YYYY-MM-DD'), }) const [totalData, setTotalData] = useState([{ dynamicCreativeId: 1, accountId: '总计' }]) const [visible, setVisible] = useState(false) const [promotionId, setPromotionId] = useState() const [dynamicCreativeId, setDynamicCreativeId] = useState() const [adName, setAdName] = useState('') const [failIdList, setFailIdList] = useState<{ adgroupId: number, code: number, message: string, messageCn: string }[]>([]) const [failVisible, setFailVisible] = useState(false) const updateBatchDynamicCreativesInfo = useAjax((params) => updateBatchDynamicCreativesInfoApi(params)) const getDynamicList = useAjax((params) => getDynamicListApi(params)) const getDynamicTotal = useAjax((params) => getDynamicTotalApi(params)) /****************************************/ useEffect(() => { if (initialState?.iaaApp?.length && initialState?.productType) { getDynamicList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }) getDynamicTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { dynamicCreativeId: number; accountId: string } }) => { if (res?.data) { let data = res?.data data.dynamicCreativeId = 1 data.accountId = '总计' setTotalData([data]) } else { setTotalData([{ dynamicCreativeId: 1, accountId: '总计' }]) } }) } else { setTotalData([{ dynamicCreativeId: 1, accountId: '总计' }]) getDynamicList.mutate({ data: undefined }) } }, [queryForm, initialState?.iaaApp, initialState?.productType]) const dayHandle = (data: any) => { setVisible(true) setAdName(data.promotionName) setPromotionId(data.promotionId) setDynamicCreativeId(data.dynamicCreativeId) } const dynamicHandle = (type: '删除' | '启动' | '暂停', data?: any) => { let accountAdgroupMaps = data ? [data.accountId + ',' + data.dynamicCreativeId] : [...new Set(selectedRows?.map(item => item.accountId + ',' + item.dynamicCreativeId))] let hide: any if (data) { hide = message.loading(`正在设置...`, 0, () => { message.success('设置成功'); }); } switch (type) { case '启动': case '暂停': updateBatchDynamicCreativesInfo.run({ accountAdgroupMaps, suspend: type === '暂停' }).then(res => { if (res?.failIdList?.length === 0) { message.success(`修改操作完成!`) getDynamicList.refresh() setSelectedRows([]) } else { setFailIdList(res?.list || []) setFailVisible(true) } if (hide) { hide() } }) break } } return
{/* { setIsZj(!e); }} /> */} 操作完数据结果延时5分钟之内,即时结果去腾讯后台查看 } leftChild={ { console.log(data) const { day1, day2, day3, day4, ...params } = data let newQueryForm = JSON.parse(JSON.stringify(queryForm)) newQueryForm.pageNum = 1 if (day1 && day1?.length === 2) { newQueryForm['adCreateBegin'] = moment(day1[0]).format('YYYY-MM-DD') newQueryForm['adCreateEnd'] = moment(day1[1]).format('YYYY-MM-DD') } else { delete newQueryForm['adCreateBegin'] delete newQueryForm['adCreateEnd'] } if (day2 && day2?.length === 2) { newQueryForm['putDayBegin'] = moment(day2[0]).format('YYYY-MM-DD') newQueryForm['putDayEnd'] = moment(day2[1]).format('YYYY-MM-DD') } else { delete newQueryForm['putDayBegin'] delete newQueryForm['putDayEnd'] } if (day3 && day3?.length === 2) { newQueryForm['costDayBegin'] = moment(day3[0]).format('YYYY-MM-DD') newQueryForm['costDayEnd'] = moment(day3[1]).format('YYYY-MM-DD') } else { delete newQueryForm['costDayBegin'] delete newQueryForm['costDayEnd'] } if (day4 && day4?.length === 2) { newQueryForm['creativeCreateBegin'] = moment(day4[0]).format('YYYY-MM-DD') newQueryForm['creativeCreateEnd'] = moment(day4[1]).format('YYYY-MM-DD') } else { delete newQueryForm['creativeCreateBegin'] delete newQueryForm['creativeCreateEnd'] } setQueryForm({ ...newQueryForm, ...params }) }} />} isZj totalData={totalData} config={columns12(dayHandle, () => { getDynamicList.refresh() })} configName={'腾讯创意列表'} fixed={{ left: 4, right: 2 }} scroll={{ x: 1000, y: 620 }} title='腾讯创意列表' rowKey={'dynamicCreativeId'} loading={getDynamicList.loading} ajax={getDynamicList} page={getDynamicList?.data?.data?.current || 1} pageSize={getDynamicList?.data?.data?.size || 20} total={getDynamicList?.data?.data?.total || 0} dataSource={getDynamicList?.data?.data?.records?.map((item: any) => ({ ...item, id: item.promotionId }))} onChange={(pagination: any, _: any, sortData: any) => { let { current, pageSize } = pagination let newQueryForm = JSON.parse(JSON.stringify(queryForm)) if (sortData && sortData?.order) { newQueryForm['sortAsc'] = sortData?.order === 'ascend' ? true : false newQueryForm['sortFiled'] = sortData?.field } else { delete newQueryForm['sortAsc'] delete newQueryForm['sortFiled'] } newQueryForm.pageNum = current || newQueryForm.pageNum newQueryForm.pageSize = pageSize || newQueryForm.pageSize setQueryForm({ ...newQueryForm }) }} rowSelection={{ selectedRowKeys: selectedRows.map(item => item.dynamicCreativeId), getCheckboxProps: (record: any) => ({ disabled: record.dynamicCreativeIsDeleted == 1 || record?.accountId === '总计' }), onSelect: (record: { dynamicCreativeId: number }, selected: boolean) => { if (selected) { selectedRows.push({ ...record }) setSelectedRows([...selectedRows]) } else { let newSelectAccData = selectedRows.filter((item: { dynamicCreativeId: number }) => item.dynamicCreativeId !== record.dynamicCreativeId) setSelectedRows([...newSelectAccData]) } }, onSelectAll: (selected: boolean, selectedRowss: { dynamicCreativeId: number }[], changeRows: { dynamicCreativeId: number }[]) => { if (selected) { let newSelectAccData = [...selectedRows] changeRows.forEach((item: { dynamicCreativeId: number }) => { let index = newSelectAccData.findIndex((ite: { dynamicCreativeId: number }) => ite.dynamicCreativeId === item.dynamicCreativeId) if (index === -1) { newSelectAccData.push({ ...item }) } }) setSelectedRows([...newSelectAccData]) } else { let newSelectAccData = selectedRows.filter((item: { dynamicCreativeId: number }) => { let index = changeRows.findIndex((ite: { dynamicCreativeId: number }) => ite.dynamicCreativeId === item.dynamicCreativeId) if (index !== -1) { return false } else { return true } }) setSelectedRows([...newSelectAccData]) } } }} /> {visible && { setVisible(false); setPromotionId(undefined); setDynamicCreativeId(undefined) }} queryForm={queryForm} promotionId={promotionId} dynamicCreativeId={dynamicCreativeId} />} {failVisible && 报错信息} open={failVisible} className='modalResetCss' width={650} onCancel={() => { setFailVisible(false); setFailIdList([]) }} footer={null} > {value}, }, { title: 'code', dataIndex: 'code', key: 'code', width: 70, align: 'center', render: (value) => {value}, }, { title: '错误信息', dataIndex: 'messageCn', key: 'messageCn', render: (value) => {value}, }]} dataSource={failIdList} /> } } export default Dynamic