shenwu %!s(int64=2) %!d(string=hai) anos
pai
achega
b132db9708

+ 27 - 3
src/pages/launchSystemNew/adq/ad/index.tsx

@@ -31,21 +31,22 @@ type Props = {
 }
 
 function Ad(props:Props) {
-    let { accountId, adAccountId,userId,tableIdClick } = props
+    let { accountId, adAccountId,userId,tableIdClick,queryParmas } = props
     // api方法
     const listAjax = useAjax((params) => getAdqAdgroupsList(params), { formatResult: true })
     const syncAjax = useAjax((adAccountId) => putAdqAdgroupsSync(adAccountId))
     const switchAjax = useAjax((params) => putAdqAdgroupsConfigStatus(params))
     console.log('创意=====》')
     useEffect(() => {
-        getList({ pageNum: 1, pageSize: 20 })
-    }, [accountId,userId])
+        getList({ pageNum: 1, pageSize: 20,...queryParmas })
+    }, [accountId,userId,queryParmas])
     // 获取列表
     const getList = useCallback((params: {
         pageNum: number;
         pageSize: number;
         accountId?: string;
         adcreativeName?: string;
+        adgroupId?:string
     }) => {
         if (!params.adcreativeName || params.adcreativeName !== listAjax?.params[0]?.adcreativeName) {
             !params.adcreativeName && delete params.adcreativeName
@@ -111,6 +112,29 @@ function Ad(props:Props) {
                             }}
                         />
                     </Col>
+                    <Col>
+                        <Input
+                            placeholder='广告ID'
+                            allowClear
+                            onBlur={(e) => {
+                                let value = e.target.value
+                                getList({ pageNum: 1, pageSize: 20, adgroupId: value })
+                            }}
+                            onKeyDownCapture={(e: any) => {
+                                let key = e.key
+                                if (key === 'Enter') {
+                                    let value = e.target.value
+                                    getList({ pageNum: 1, pageSize: 20, adgroupId: value })
+                                }
+                            }}
+                            onChange={(e) => {
+                                let value = e.target.value
+                                if (!value) {
+                                    getList({ pageNum: 1, pageSize: 20, adgroupId: value })
+                                }
+                            }}
+                        />
+                    </Col>
                     <Col>
                         <Select placeholder='推广目标选择' style={{ minWidth: 200 }} showSearch filterOption={(input: any, option: any) =>
                             (option!.children as unknown as string).toLowerCase().includes(input.toLowerCase())

+ 1 - 1
src/pages/launchSystemNew/adq/adAccount/tableConfig.tsx

@@ -53,7 +53,7 @@ function tableConfig(tableIdClick: (props: {
            } 
         },
         {
-            title: '是否启用',
+            title: '是否有效',
             dataIndex: 'enabled',
             key: 'enabled',
             align: 'center',

+ 27 - 3
src/pages/launchSystemNew/adq/campaign/index.tsx

@@ -38,8 +38,8 @@ function Campaign(props: Props) {
     const switchAjax = useAjax((params) => putAdqCampaignConfigStatus(params))
     console.log('创意=====》')
     useEffect(() => {
-        getList({ pageNum: 1, pageSize: 20 })
-    }, [accountId, userId])
+        getList({ pageNum: 1, pageSize: 20,...queryParmas })
+    }, [accountId, userId,queryParmas])
     // 获取列表
     const getList = useCallback((params: {
         pageNum: number;
@@ -47,6 +47,7 @@ function Campaign(props: Props) {
         userId?: string;//用户ID
         accountId?: string;//账号本地ID
         campaignName?: string;//计划名称
+        campaignId?: string;//计划ID
         configuredStatus?: string;//计划状态
         campaignType?: string;//计划类型
         promotedObjectType?: string;//推广目标类型
@@ -94,7 +95,7 @@ function Campaign(props: Props) {
                 <Row gutter={[10, 10]}>
                     <Col>
                         <Input
-                            placeholder='创意名称'
+                            placeholder='计划名称'
                             allowClear
                             onBlur={(e) => {
                                 let value = e.target.value
@@ -115,6 +116,29 @@ function Campaign(props: Props) {
                             }}
                         />
                     </Col>
+                    <Col>
+                        <Input
+                            placeholder='计划ID'
+                            allowClear
+                            onBlur={(e) => {
+                                let value = e.target.value
+                                getList({ pageNum: 1, pageSize: 20, campaignId: value })
+                            }}
+                            onKeyDownCapture={(e: any) => {
+                                let key = e.key
+                                if (key === 'Enter') {
+                                    let value = e.target.value
+                                    getList({ pageNum: 1, pageSize: 20, campaignId: value })
+                                }
+                            }}
+                            onChange={(e) => {
+                                let value = e.target.value
+                                if (!value) {
+                                    getList({ pageNum: 1, pageSize: 20, campaignId: value })
+                                }
+                            }}
+                        />
+                    </Col>
                     <Col>
                         <Select placeholder='推广目标选择' style={{ minWidth: 200 }} showSearch filterOption={(input: any, option: any) =>
                             (option!.children as unknown as string).toLowerCase().includes(input.toLowerCase())

+ 27 - 3
src/pages/launchSystemNew/adq/creative/index.tsx

@@ -30,20 +30,21 @@ type Props = {
     }) => void
 }
 function Creative(props: Props) {
-    let { accountId, adAccountId,userId,tableIdClick } = props
+    let { accountId, adAccountId,userId,tableIdClick ,queryParmas} = props
     // api方法
     const listAjax = useAjax((params) => getAdqAdcreativeList(params), { formatResult: true })
     const syncAjax = useAjax((adAccountId) => putAdqTargetingSyncAll(adAccountId))
     console.log('创意=====》')
     useEffect(() => {
-        getList({ pageNum: 1, pageSize: 20 })
-    }, [accountId,userId])
+        getList({ pageNum: 1, pageSize: 20,...queryParmas })
+    }, [accountId,userId,queryParmas])
     // 获取列表
     const getList = useCallback((params: {
         pageNum: number;
         pageSize: number;
         accountId?: string;
         adcreativeName?: string;
+        adcreativeId?: string;
     }) => {
         if (!params.adcreativeName || params.adcreativeName !== listAjax?.params[0]?.adcreativeName) {
             !params.adcreativeName && delete params.adcreativeName
@@ -100,6 +101,29 @@ function Creative(props: Props) {
                             }}
                         />
                     </Col>
+                    <Col>
+                        <Input
+                            placeholder='创意ID'
+                            allowClear
+                            onBlur={(e) => {
+                                let value = e.target.value
+                                getList({ pageNum: 1, pageSize: 20, adcreativeId: value })
+                            }}
+                            onKeyDownCapture={(e: any) => {
+                                let key = e.key
+                                if (key === 'Enter') {
+                                    let value = e.target.value
+                                    getList({ pageNum: 1, pageSize: 20, adcreativeId: value })
+                                }
+                            }}
+                            onChange={(e) => {
+                                let value = e.target.value
+                                if (!value) {
+                                    getList({ pageNum: 1, pageSize: 20, adcreativeId: value })
+                                }
+                            }}
+                        />
+                    </Col>
                     <Col>
                         <Select placeholder='推广目标选择' style={{ minWidth: 200 }} showSearch filterOption={(input: any, option: any) =>
                             (option!.children as unknown as string).toLowerCase().includes(input.toLowerCase())

+ 40 - 11
src/pages/launchSystemNew/adq/index.tsx

@@ -28,13 +28,13 @@ function Adq() {
     const [activeKey, setActiveKey] = useState('1')
     const [userId, setUserId] = useState<any>(userInfo?.userId?.toString())
     const [selectedArr, setSelectedArr] = useState([])
-    const [queryParmas, setQueryParmas] = useState({
-        accountId: '',//账户ID
-        campaignId: '',//计划ID
-        adgroupId: '',//广告ID
-        adcreativeId: '',//创意ID
-        pageId: '',//落地页ID
-        targetingId: '',//定向ID
+    const [queryParmas, setQueryParmas] = useState<any>({
+        accountId: undefined,//账户ID
+        campaignId: undefined,//计划ID
+        adgroupId: undefined,//广告ID
+        adcreativeId: undefined,//创意ID
+        pageId: undefined,//落地页ID
+        targetingId: undefined,//定向ID
     })
     const [idS, setIds] = useState({//需要用到的accountId,adAccountId
         accountId: '',
@@ -42,7 +42,8 @@ function Adq() {
     })
     // 点击table中的ID添加对应条件
     const tableIdClick = useCallback((props: {
-        activeKey: string, parma: {
+        activeKey: string,
+        parma: {
             accountId?: string,//账户ID
             campaignId?: string,//计划ID
             adgroupId?: string,//广告ID
@@ -52,9 +53,9 @@ function Adq() {
         }
     }) => {
         // 暂时注释不开放
-        // let { activeKey, parma } = props
-        // setQueryParmas({ ...queryParmas, ...parma })
-        // setActiveKey(activeKey)
+        let { activeKey, parma } = props
+        setQueryParmas({ ...queryParmas, ...parma })
+        setActiveKey(activeKey)
 
     }, [queryParmas, activeKey])
     // 获取组员
@@ -107,6 +108,34 @@ function Adq() {
             }
         }
     }, [userId, userAll])
+    //判定是否从任务列表跳转过来
+    useEffect(()=>{
+        let data = sessionStorage.getItem('adqQuery')
+        if(data){
+            let obj = JSON.parse(data)
+            Object.keys(obj).forEach(key=>{
+                switch(key){
+                    case 'accountId':
+                        setQueryParmas(obj)
+                        setActiveKey('1')
+                        break
+                    case 'campaignId':
+                        setQueryParmas(obj)
+                        setActiveKey('2')
+                        break
+                    case 'adgroupId':
+                        setQueryParmas(obj)
+                        setActiveKey('3')
+                        break
+                    case 'adcreativeId':
+                        setQueryParmas(obj)
+                        setActiveKey('4')
+                        break
+                }
+            })
+            sessionStorage.removeItem('adqQuery')
+        }
+    },[])
     return <Row style={{ position: 'relative' }}>
         <Col style={{ height: '100%', minHeight: 'calc(100vh - 100px)', overflowY: 'auto', position: 'absolute', left: 0, top: 0, bottom: 0, width: 150, background: '#fff' }}>
             <Select

+ 16 - 4
src/pages/launchSystemNew/launchManage/adAuthorize/index.tsx

@@ -12,7 +12,7 @@ import TableData from '../../components/TableData'
 /** 投放管理 */
 const AdAuthorize: React.FC = () => {
     const { getAdAccount } = useModel('useLaunchAdq.useAdAuthorize')
-    const [queryValue, setQueryValue] = useState('')
+    const [tableData, setTableData] = useState<any[]>([])
     const [remarkData, set_remarkData] = useState<{
         visible: boolean,
         remark: string,
@@ -25,7 +25,11 @@ const AdAuthorize: React.FC = () => {
     const putRemark = useAjax((adAccountId: any, remark: any) => putAdAccountApi(adAccountId, remark))
     useEffect(() => {
         // 获取账号列表
-        getAdAccount.run()
+        getAdAccount.run().then(res => {
+            if (res) {
+                setTableData(res?.data || [])
+            }
+        })
     }, [])
     const remark = useCallback(() => {
         if (remarkData.remark && remarkData.data) {
@@ -44,13 +48,21 @@ const AdAuthorize: React.FC = () => {
     return <Card>
         <TableData
             ajax={getAdAccount}
-            dataSource={getAdAccount?.data?.data}
+            dataSource={tableData}
             loading={getAdAccount?.loading}
             columns={() => columnsMp(edit)}
             size="small"
             scroll={{ x: 2000, y: 600 }}
             leftChild={<Space>
-                <Input placeholder="广告主ID" style={{ width: 150 }} allowClear value={queryValue} onChange={(e) => { }} />
+                <Input placeholder="广告主ID" style={{ width: 150 }} allowClear  onChange={(e) => {
+                    let value = e.target.value
+                    if (value) {
+                        let newArr = tableData?.filter(item => String(item.accountId).includes(value))
+                        setTableData(newArr)
+                    } else {
+                        setTableData(getAdAccount?.data?.data)
+                    }
+                }} />
             </Space>}
         />
         {remarkData.visible && <Modal

+ 51 - 36
src/pages/launchSystemNew/launchManage/adAuthorize/tableConfig.tsx

@@ -1,4 +1,5 @@
-import { Space, Tooltip } from "antd"
+import { FundStatusEnum } from "@/services/launchAdq/enum"
+import { Badge, Space, Tooltip } from "antd"
 import React from "react"
 import './index.less'
 export function columnsMp(edit:(params: any)=>void): any {
@@ -37,19 +38,19 @@ export function columnsMp(edit:(params: any)=>void): any {
             width: 200,
             ellipsis:true,
         },
-        {
-            title: '公众号信息',
-            dataIndex: 'wechatAccountName',
-            key: 'wechatAccountName',
-            width: 150,
-            align: 'center',
-            render: (a: any, b: any) => {
-                return <div className="verticalCenter">
-                    <div><strong>{a}</strong></div>
-                    <div style={{ color: "rgb(136, 136, 136)", fontSize: 13 }}>{b?.wechatAccountId}</div>
-                </div>
-            }
-        },
+        // {
+        //     title: '公众号信息',
+        //     dataIndex: 'wechatAccountName',
+        //     key: 'wechatAccountName',
+        //     width: 150,
+        //     align: 'center',
+        //     render: (a: any, b: any) => {
+        //         return <div className="verticalCenter">
+        //             <div><strong>{a}</strong></div>
+        //             <div style={{ color: "rgb(136, 136, 136)", fontSize: 13 }}>{b?.wechatAccountId}</div>
+        //         </div>
+        //     }
+        // },
         {
             title: '企业名称',
             dataIndex: 'corporationName',
@@ -58,20 +59,20 @@ export function columnsMp(edit:(params: any)=>void): any {
             align: 'center',
             ellipsis: true
         },
-        {
-            title: '服务商ID列表',
-            dataIndex: 'agencyIdList',
-            key: 'agencyIdList',
-            width: 130,
-            align: 'center',
-            render: (a: any) => {
-                return <Tooltip title={a}>
-                    <div className="name-wrapper">
-                        <p>{ a }</p>
-                    </div>
-                </Tooltip>
-            }
-        },
+        // {
+        //     title: '服务商ID列表',
+        //     dataIndex: 'agencyIdList',
+        //     key: 'agencyIdList',
+        //     width: 130,
+        //     align: 'center',
+        //     render: (a: any) => {
+        //         return <Tooltip title={a}>
+        //             <div className="name-wrapper">
+        //                 <p>{ a }</p>
+        //             </div>
+        //         </Tooltip>
+        //     }
+        // },
         {
             title: '行业ID',
             dataIndex: 'systemIndustryId',
@@ -85,11 +86,21 @@ export function columnsMp(edit:(params: any)=>void): any {
             }
         },
         {
-            title: '授权状态',
-            dataIndex: 'authStatus',
-            key: 'authStatus',
-            width: 80,
+            title: '是否有效',
+            dataIndex: 'enabled',
+            key: 'enabled',
             align: 'center',
+            width:60,
+            render: (a: any, b: any) => {
+                return  <Badge status={a ? "processing" :"error" } text={a? '是' : '否'} />
+            }
+        },
+        {
+            title: '授权时间',
+            dataIndex: 'createTime',
+            key: 'createTime',
+            align: 'center',
+            width: 120
         },
         {
             title: '日限额(分)',
@@ -99,12 +110,16 @@ export function columnsMp(edit:(params: any)=>void): any {
             width: 100
         },
         {
-            title: '授权时间',
-            dataIndex: 'createTime',
-            key: 'createTime',
+            title: '资金状态',
+            dataIndex: 'fundStatus',
+            key: 'fundStatus',
             align: 'center',
-            width: 120
+            width:100,
+            render:(a: string | number)=>{
+             return FundStatusEnum[a]
+            } 
         },
+        
         {
             title: '操作',
             dataIndex: 'cz',

+ 5 - 5
src/pages/launchSystemNew/launchManage/createAd/index.tsx

@@ -199,13 +199,13 @@ const CreateAd: React.FC = () => {
         setTableData(data)
     }
 
-    const submit = (data: { adgroupName: string, campaignName: string }) => {
+    const submit = (props: { campaignName: string,count?:number }) => {
         console.log(111111, tableSelect);
-        let params = { ...queryForm, ...data }
+        let params = { ...queryForm, ...props }
         console.log(accountCreateLogs)
         let accountLogs = accountCreateLogs.map((item: any, index) => {
             // userActionSetsList 数据源  productList 商品
-            let data: any = { adAccountId: item.id }
+            let data: any = { adAccountId: item.id ,count:props.count || 1}
             if (item?.userActionSetsList?.length > 0) { // 数据源
                 data.userActionSets = item?.userActionSetsList?.map((item: any) => ({ id: item?.id, type: item?.type }))
             }
@@ -230,11 +230,11 @@ const CreateAd: React.FC = () => {
         delete params.sysTargetingId
         delete params.pageList
         delete params.adqPageList
+        delete params.count
         console.log('paramsSubmit====>', params)
-        // return
         createAdBatch.run(params).then(res => {
             if (res) {
-                sessionStorage.setItem('CAMP', data?.campaignName)
+                sessionStorage.setItem('CAMP', props?.campaignName)
                 message.success('创建成功')
                 window.location.href = '/#/launchSystemNew/launchManage/taskList'
             }

+ 6 - 67
src/pages/launchSystemNew/launchManage/createAd/submitModal.tsx

@@ -1,7 +1,6 @@
-import { AdStatus } from "@/services/launchAdq/enum"
-import { DatePicker, Form, Input, Modal, Radio, Select } from "antd"
-import React, { useEffect, useState } from "react"
-import moment from 'moment';
+import { QuestionCircleOutlined } from "@ant-design/icons"
+import { Form, Input, Modal, InputNumber, Tooltip } from "antd"
+import React, {useState } from "react"
 
 
 /**
@@ -21,46 +20,11 @@ const SubmitModal: React.FC<Props> = (props) => {
     const { visible, onClose, onChange, ajax, data } = props
     // const { endDate, beginDate, bidAmount } = data
     const [form] = Form.useForm()
-    let dateType = Form.useWatch('dateType', form)
-    const [initialValues, setInitialValues] = useState<{ configuredStatus?: string, dateType?: string, date?: [any, any], beginDate?: any, bidAmount?: number, firstDayBeginTime?: any }>({ dateType: '1', configuredStatus: 'AD_STATUS_SUSPEND' })
-    /********************/
-
-    // useEffect(() => {
-    //     let params: { configuredStatus?: string, dateType?: string, date?: [any, any], beginDate?: any, bidAmount?: number, firstDayBeginTime?: any } = { bidAmount, configuredStatus: 'AD_STATUS_SUSPEND' }
-    //     if (endDate) {
-    //         params.dateType = '1'
-    //         params.date = [moment(beginDate), moment(endDate)]
-    //     } else {
-    //         params.dateType = '2'
-    //         params.beginDate = moment(beginDate)
-    //     }
-    //     setInitialValues(params)
-    //     setTimeout(() => {
-    //         form.resetFields();
-    //     }, 50)
-    // }, [])
+    const [initialValues, setInitialValues] = useState<{count?:number}>({count:1})
 
     const handleOk = async () => {
         form.submit()
         let data = await form.validateFields()
-        // const { dateType, date, beginDate, firstDayBeginTime, bidAmount, ...value } = data
-        // let params: any = {}
-        // if (dateType === '1') { // 选择开始与结束日期
-        //     if (date) {
-        //         params.beginDate = moment(date[0]).format('YYYY-MM-DD')
-        //         params.endDate = moment(date[1]).format('YYYY-MM-DD')
-        //     }
-        // } else { // 长期投放
-        //     if (beginDate) {
-        //         params.beginDate = moment(beginDate).format('YYYY-MM-DD')
-        //     }
-        // }
-        // if (firstDayBeginTime) {
-        //     params.firstDayBeginTime = moment(firstDayBeginTime).format('hh:mm:ss')
-        // }
-        // if (bidAmount) {
-        //     params.bidAmount = bidAmount
-        // }
         onChange && onChange(data)
     }
 
@@ -73,37 +37,12 @@ const SubmitModal: React.FC<Props> = (props) => {
             autoComplete="off"
             initialValues={{ ...initialValues }}
         >
-            {/* <Form.Item label={<strong>广告名称</strong>} name="adgroupName">
-                <Input placeholder="请输入广告名称" />
-            </Form.Item> */}
             <Form.Item label={<strong>计划名称</strong>} name="campaignName">
                 <Input placeholder="请输入计划名称" />
             </Form.Item>
-            {/* <Form.Item label={<strong>广告状态</strong>} name="configuredStatus" rules={[{ required: true, message: '请选择广告状态' }]}>
-                <Select placeholder="选择广告状态">
-                    {Object.keys(AdStatus).map(key => {
-                        return <Select.Option value={key} key={key}>{AdStatus[key]}</Select.Option>
-                    })}
-                </Select>
-            </Form.Item>
-            <Form.Item label={<strong>投放日期</strong>} name='dateType'>
-                <Radio.Group >
-                    <Radio.Button value="1">选择开始与结束日期</Radio.Button>
-                    <Radio.Button value="2">长期投放</Radio.Button>
-                </Radio.Group>
-            </Form.Item>
-            {dateType === '1' && <Form.Item name='date' style={{ marginLeft: 78 }} rules={[{ required: true, message: '请选择日期' }]}>
-                <DatePicker.RangePicker />
-            </Form.Item>}
-            {dateType === '2' && <Form.Item name='beginDate' style={{ marginLeft: 78 }} rules={[{ required: true, message: '请选择日期' }]}>
-                <DatePicker />
-            </Form.Item>}
-            <Form.Item label={<strong>开始时间</strong>} name='firstDayBeginTime'>
-                <DatePicker.TimePicker />
+            <Form.Item label={<strong>创建数量<Tooltip title='每条计划创建的数量!'><QuestionCircleOutlined /></Tooltip></strong>} name="count">
+                <InputNumber placeholder="创建数量" min={1} max={30}/>
             </Form.Item>
-            <Form.Item label={<strong>出价</strong>} name='bidAmount' rules={[{ required: true, message: '请输入价格' }]}>
-                <Input placeholder='输入价格 元/千次曝光' />
-            </Form.Item> */}
         </Form>
     </Modal>
 }

+ 61 - 12
src/pages/launchSystemNew/launchManage/taskList/logTableConfig.tsx

@@ -1,9 +1,44 @@
 import { copy } from "@/utils/utils";
-import { DownOutlined, EyeOutlined } from "@ant-design/icons";
-import { Badge, Button, Dropdown, Menu, Space } from "antd"
-import React from "react"
+import { EyeOutlined } from "@ant-design/icons";
+import { Badge, Popover, Space } from "antd"
+import React, { useState } from "react"
 import AdcreativePopover from "../../components/adcreativePopover";
+type Props = {
+    arr: any[],
+    title: string,
+    key:string
+}
+const Modal: React.FC<Props> = (props) => {
+
+    /***************************/
+    const { arr, title ,key} = props
+    const [visible, setVisible] = useState<boolean>(false)
+    function goTo(obj:any){
+        sessionStorage.setItem('adqQuery',obj)
+        location.href = location.origin + '/#/launchSystemNew/adq'
+    }
+    /***************************/
+    return <Popover
+        content={<Space direction="vertical">
+            {arr?.map(id => {
+                return <a key={id} onClick={()=>goTo({[key]:id})}>{id}</a>
+            })}
+        </Space>}
+        title={title}
+        trigger="click"
+        placement="left"
+        visible={visible}
+        onVisibleChange={(newVisible) => { setVisible(newVisible) }}
+    >
+        {/* 查看 */}
+        <a style={{ color: '#1890ff', fontSize: 12 }}><EyeOutlined /></a>
+    </Popover>
+}
 function tableConfig(copyCreative: (data: any) => void, callback: (data: any) => void): any {
+    function goTo(obj:any){
+        sessionStorage.setItem('adqQuery',obj)
+        location.href = location.origin + '/#/launchSystemNew/adq'
+    }
     return [
         {
             title: 'ID',
@@ -17,9 +52,9 @@ function tableConfig(copyCreative: (data: any) => void, callback: (data: any) =>
             dataIndex: 'accountId',
             key: 'accountId',
             align: 'center',
-            width: 80,
+            width: 90,
             render: (a: any, b: any) => {
-                return <span style={{ fontSize: "12px" }}>{a || '--'}</span>
+                return <a onClick={()=>{goTo(JSON.stringify({accountId:a}))}}>{a || '--'}</a>
             }
         },
         {
@@ -29,13 +64,27 @@ function tableConfig(copyCreative: (data: any) => void, callback: (data: any) =>
             align: 'center',
             width: 100,
             render: (a: any[]) => {
-                return <Space>
-                    {
-                        a?.map(id => {
-                            return <a>{id}</a>
-                        })
-                    }
-                </Space>
+                return a ? a?.length <= 1 ? <a onClick={()=>{goTo(JSON.stringify({campaignId:a[0]}))}}>{a}</a> : <Modal arr={a} title={'计划ID'} key='campaignId'/> : '--'
+            }
+        },
+        {
+            title: '广告ID',
+            dataIndex: 'adgroupIds',
+            key: 'adgroupIds',
+            align: 'center',
+            width: 100,
+            render: (a: any[]) => {
+                return a ? a?.length <= 1 ? <a onClick={()=>{goTo(JSON.stringify({adgroupId:a[0]}))}}>{a}</a> : <Modal arr={a} title={'广告ID'} key='adgroupId'/> : '--'
+            }
+        },
+        {
+            title: '创意ID',
+            dataIndex: 'adcreativeIds',
+            key: 'adcreativeIds',
+            align: 'center',
+            width: 100,
+            render: (a: any[]) => {
+                return a ? a?.length <= 1 ? <a onClick={()=>{goTo(JSON.stringify({adcreativeId:a[0]}))}}>{a}</a> : <Modal arr={a} title={'创意ID'}  key='adcreativeId'/> : '--'
             }
         },
         {