import { allPlanProps, downLoadAllAdListApi } from "@/services/adMonitor/adMonitor" import React, { useState, useEffect, useCallback } from "react" import { useModel } from "umi" import moment from "moment" import { downloadFile1, formatDate } from "@/utils/downloadFile" import { Button, Card, DatePicker, Input, Select, Space } from "antd" import PlanDetail from "./components/planDetail" import { GUANGGAOZHUANGTAI } from "./enum" import TableData from "@/pages/launchSystemNew/components/TableData"; import { CloudDownloadOutlined } from "@ant-design/icons" import { guanggao } from "./config" import columnsPlanList from './tablePlanListConfig' const PlanList: React.FC = () => { const { getAllPlanList, getBookListAll, getAdqAccountList } = useModel('useAdMonitor.useMonitor') const { getPicherList } = useModel('useOperating.useWxGroupList') // 变量开始 const [queryForm, setQueryForm] = useState({ pageNum: 1, pageSize: 20, createStartTime: moment().subtract(3, 'days').format('YYYY-MM-DD'), createEndTime: moment().format('YYYY-MM-DD') }) // 搜索变量 const [visible, setVisible] = useState(false) // 详情弹窗控制 const [adId, setAdId] = useState() const [downLoadLoading, setDownLoadLoading] = useState(false) // 变量结束 // 获取广告账号 useEffect(() => { getAdqAccountList.run() }, []) // 获取投手 useEffect(() => { getPicherList.run() }, []) useEffect(() => { if (sessionStorage.getItem('ADIDORNAME')) { let data = JSON.parse(sessionStorage.getItem('ADIDORNAME') as any) setQueryForm({ ...queryForm, createStartTime: undefined, createEndTime: undefined, adgroup: data.adgroupId, campaign: data.campaignId, sysUserId: data.putUserId ? data.putUserId?.toString()?.split() : [], accountId: data?.accountId?.toString()?.split() }) sessionStorage.removeItem('ADIDORNAME') } }, []) // 获取分组 useEffect(() => { getList() }, [queryForm]) const getList = useCallback(() => { getAllPlanList.run(queryForm) }, [queryForm]) /** 获取书 */ useEffect(() => { getBookListAll.run() }, []) // 设置创建时间 const setUnix = ([str, end]: string[]) => { if (str && end) { setQueryForm({ ...queryForm, pageNum: 1, createStartTime: moment(str).format('YYYY-MM-DD'), createEndTime: moment(end).format('YYYY-MM-DD') }) } else { const { createStartTime, createEndTime, ...newQueyFor } = queryForm setQueryForm({ ...newQueyFor, pageNum: 1 }) } } // 详情 const detail = (data: number) => { setAdId(data) setVisible(true) } // 接口自动刷新10分钟一次 useEffect(() => { let time = setInterval(() => { console.log('广告列表10分钟刷新') getAllPlanList.refresh() }, 1000 * 60 * 10) return () => { clearInterval(time) } }, [getAllPlanList]) // 下载 const downLoadExcel = useCallback(() => { setDownLoadLoading(true) let newQueryForm = JSON.parse(JSON.stringify(queryForm)) downLoadAllAdListApi(newQueryForm).then(res => { setDownLoadLoading(false) downloadFile1(res, 'octet-stream', formatDate(new Date()) + ".xlsx") }).catch(() => setDownLoadLoading(false)) }, [queryForm, downLoadLoading]) return {/* 详情弹窗 */} {visible && { setVisible(false) }} data={adId} dataStartTime={queryForm?.dataStartTime} dataEndTime={queryForm?.dataEndTime} />} {/* */} {/* */} {/* */} { setQueryForm({ ...queryForm, pageNum: 1, campaign: e.target.value }) }} /> { setQueryForm({ ...queryForm, pageNum: 1, adgroup: e.target.value }) }} /> { setQueryForm({ ...queryForm, pageNum: 1, creativeId: e.target.value }) }} /> { setQueryForm({ ...queryForm, pageNum: 1, dataStartTime: str[0], dataEndTime: str[1] }) }} value={(queryForm?.dataStartTime && queryForm?.dataEndTime ? [moment(queryForm?.dataStartTime), moment(queryForm?.dataEndTime)] : null) as any} /> { setUnix(str) }} value={(queryForm?.createStartTime && queryForm?.createEndTime ? [moment(queryForm?.createStartTime), moment(queryForm?.createEndTime)] : null) as any} /> {/* { e ? setQueryForm({ ...queryForm, dataTime: moment(e).format('YYYY-MM-DD') }) : setQueryForm({ ...queryForm, dataTime: '' }) }} value={queryForm?.dataTime ? moment(queryForm?.dataTime) : null} /> */} } loading={downLoadLoading} onClick={downLoadExcel}>下载} onChange={(props: any) => { let { sortData, pagination } = props let { current, pageSize } = pagination let newQueryForm = JSON.parse(JSON.stringify(queryForm)) newQueryForm.pageNum = current newQueryForm.pageSize = pageSize if (sortData && JSON.stringify('sortData') !== '{}') { let { field, order } = sortData // descend 降序 大到小 ascend 升序 小到大 if (order) { newQueryForm.sortField = field newQueryForm.sort = order === 'ascend' ? 'ASC' : 'DESC' } else { Object.keys(newQueryForm).forEach(key => { if (key === 'sortField' || key === 'sort') { delete newQueryForm[key] } }) } } else { Object.keys(newQueryForm).forEach(key => { if (key === 'sortField' || key === 'sort') { delete newQueryForm[key] } }) } setQueryForm({ ...newQueryForm }) }} config={guanggao} configName={'广告列表'} /> } export default React.memo(PlanList)