wjx 2 лет назад
Родитель
Сommit
367f20e79c

+ 12 - 28
src/components/FileBoxAD/index.tsx

@@ -73,13 +73,9 @@ function FlieBox(props: Props) {
     }, [])
     /**全局右键菜单 */
     const Menu = useCallback((props: { isItem?: boolean }) => {
-        console.log('props--->', props, rightClickPup);
-
         if (props.isItem && isAll) {
             return <ul style={{ top: xy?.y, left: xy?.x }} className={style.menu} >
-                {
-                    isAll || num === 100 && <li onClick={allFile}>全选/反选</li>
-                }
+                {isAll || num === 100 && <li onClick={allFile}>全选/反选</li>}
                 {mediaType === 'PAGE' && !rightClickPup.folder ? <>
                     {/* <li onClick={() => { setPage && setPage(1, rightClickPup.id) }}>查看</li> */}
                     <li onClick={() => { setPage && setPage(2, rightClickPup.id) }}>复制</li>
@@ -91,27 +87,17 @@ function FlieBox(props: Props) {
                 <li onClick={() => { set({ fileVisible: true }) }}>新建文件夹</li>
                 <li onClick={() => { set({ imgVisrible: true }) }}>新建素材</li>
                 <li onClick={(e) => { delPupOn(rightClickPup.id); onFile(e, rightClickPup, isAll, true) }} style={{ color: 'red' }}> 删除</li>
-                {
-                    isAll && selectFile && selectFile?.length > 0 && <li onClick={dels} style={{ color: 'red' }}>删除选中文件</li>
-                }
+                {isAll && selectFile && selectFile?.length > 0 && <li onClick={dels} style={{ color: 'red' }}>删除选中文件</li>}
             </ul>
         }
         return <ul style={{ top: xy?.y, left: xy?.x }} className={style.menu}>
-            {
-                isAll || num === 100 && <li onClick={allFile}>全选/反选</li>
-            }
+            {isAll || num === 100 && <li onClick={allFile}>全选/反选</li>}
             {//防止K图文无限嵌套创建判断
                 (isAll !== false) && <li onClick={() => { set({ fileVisible: true }) }}>新建文件夹</li> //: <li>此处无法新建操作</li>
             }
-            {
-                mediaType === 'PAGE' ? isAll ? <li onClick={() => { setPage && setPage(0) }}>新建素材</li> : <li>此处无法新建操作</li> : <li onClick={() => { set({ imgVisrible: true }) }}>新建素材</li>
-            }
-            {
-                mediaType === 'IMG' && <li onClick={() => { set({ imgsVisrible: true }) }}>批量新建素材</li>
-            }
-            {
-                isAll && selectFile && selectFile?.length > 0 && <li onClick={dels} style={{ color: 'red' }}>删除选中文件</li>
-            }
+            {mediaType === 'PAGE' ? isAll ? <li onClick={() => { setPage && setPage(0) }}>新建素材</li> : <li>此处无法新建操作</li> : <li onClick={() => { set({ imgVisrible: true }) }}>新建素材</li>}
+            {mediaType === 'IMG' && <li onClick={() => { set({ imgsVisrible: true }) }}>批量新建素材</li>}
+            {isAll && selectFile && selectFile?.length > 0 && <li onClick={dels} style={{ color: 'red' }}>删除选中文件</li>}
         </ul>
     }, [xy, rightClickPup, allFile, mediaType])
     /**鼠标右键 */
@@ -211,14 +197,12 @@ function FlieBox(props: Props) {
                             </span>
                         })
                     }
-                    {
-                        belongUser == '0' && publicPath?.map((item: { title: string }, index: number) => {
-                            return <span key={index} onClick={() => { pathClick({ ...item, index }) }} >
-                                <span className={publicPath?.length !== index + 1 ? style.path_color : ''}>{item?.title}</span>
-                                {publicPath?.length !== index + 1 && <span className={style.rt} >{'>'}</span>}
-                            </span>
-                        })
-                    }
+                    {belongUser == '0' && publicPath?.map((item: { title: string }, index: number) => {
+                        return <span key={index} onClick={() => { pathClick({ ...item, index }) }} >
+                            <span className={publicPath?.length !== index + 1 ? style.path_color : ''}>{item?.title}</span>
+                            {publicPath?.length !== index + 1 && <span className={style.rt} >{'>'}</span>}
+                        </span>
+                    })}
                 </div>
                 {/* 内容 */}
                 <Spin spinning={list.loading} style={{ width: '100%' }}>

+ 2 - 2
src/models/useLaunchAdq/useBdMedia.ts

@@ -356,7 +356,7 @@ function useBdMediaPup() {
     }, [list, selectFile, mediaType])
     /**获取本地素材数据列表 */
     const getList = useCallback((props?: any) => {
-        let obj = { pageSize: 20, pageNum: 1, belongUser: belongUser === '0' ? false : true, mediaType, parentId, ...props }
+        let obj = { pageSize: 30, pageNum: 1, belongUser: belongUser === '0' ? false : true, mediaType, parentId, ...props }
         list.run(obj).then((res) => {
             setIsOk(true)
         })
@@ -426,7 +426,7 @@ function useBdMediaPup() {
         }
         set({ parentId: item.parentId })
         console.log(item)
-        getList({ pageSize: 20, pageNum: 1, mediaType, belongUser: belongUser === '0' ? false : true, parentId: item.id })
+        getList({ pageSize: 30, pageNum: 1, mediaType, belongUser: belongUser === '0' ? false : true, parentId: item.id })
         console.log('文件夹被点击')
     }, [path, mediaType, belongUser, publicPath])
     /**取消文件 */

+ 2 - 2
src/models/useLaunchAdq/useBdMediaPup.ts

@@ -456,7 +456,7 @@ function useBdMediaPup() {
     (props?: any) => {
       console.log('getList====>', props);
       let obj = {
-        pageSize: 20,
+        pageSize: 30,
         pageNum: 1,
         belongUser: belongUser === '0' ? false : true,
         mediaType,
@@ -560,7 +560,7 @@ function useBdMediaPup() {
       }
       set({ parentId: item.parentId });
       getList({
-        pageSize: 20,
+        pageSize: 30,
         pageNum: 1,
         mediaType,
         belongUser: belongUser === '0' ? false : true,

+ 50 - 3
src/pages/launchSystemNew/components/crowdPackModal/index.tsx

@@ -1,8 +1,8 @@
 import Tables from "@/components/Tables"
 import { useAjax } from "@/Hook/useAjax"
 import { getCrowdPackApi, sysCrowdPackApi } from "@/services/launchAdq/createAd"
-import { CheckOutlined, SyncOutlined } from "@ant-design/icons"
-import { Button, Input, Modal, Space } from "antd"
+import { CheckOutlined, QuestionCircleOutlined, SyncOutlined } from "@ant-design/icons"
+import { Button, Input, message, Modal, Space, Tooltip } from "antd"
 import React, { useEffect, useState } from "react"
 import style from '../goodsModal/index.less'
 import columns from "./tableConfig"
@@ -107,6 +107,44 @@ const CrowdPackModal: React.FC<Props> = (props) => {
         setData([...newData])
     }
 
+    /** 一键设置 */
+    const setOnekey = () => {
+        // selectCp 人或目标场景 1 customAudienceList 2 excludedCustomAudienceList  selectAdz 媒体账户  控制
+        let crowdPackNames: string[] = data[selectAdz - 1][getKey(selectCp)]?.map((item: { name: string }) => item.name)
+        let newData = JSON.parse(JSON.stringify(data))
+        const hide = message.loading(`正在设置...`, 0, () => {
+            message.success('设置成功');
+        });
+        getCrowdPack.run({ accountIds: newData?.filter((item: { adAccountId: number }) => item.adAccountId !== data[selectAdz - 1].adAccountId)?.map((item: { adAccountId: number }) => item?.adAccountId) }).then(res => {
+            if (res && typeof res === 'object') {
+                Object.keys(res).forEach((key: string) => {
+                    let values = crowdPackNames.map(name => {
+                        let value = res[key]?.find((item: { name: string }) => item.name === name)
+                        if (value) {
+                            return { ...value, id: value.audienceId }
+                        }
+                        return undefined
+                    }).filter(item => item)
+                    if (values.length > 0) {
+                        newData = newData.map((item: { adAccountId: string }) => {
+                            if (item.adAccountId === key) {
+                                if (selectCp === 1) {
+                                    return { ...item, customAudienceList: values }
+                                } else {
+                                    return { ...item, excludedCustomAudienceList: values }
+                                }
+                            }
+                            return item
+                        })
+                    }
+                })
+                setData(newData)
+            }
+            message.success('设置完成');
+            hide()
+        })
+    }
+
     return <Modal
         title={<Space>
             <span>人群包</span>
@@ -135,12 +173,21 @@ const CrowdPackModal: React.FC<Props> = (props) => {
                     <div key={index} onClick={() => { handleSelectAdz(index + 1, item) }} className={`${style.accItem} ${selectAdz === index + 1 && style.select} `}>
                         {item?.adAccountId}
                         {data[index][getKey(selectCp)]?.length > 0 && <CheckOutlined style={{ color: '#1890ff' }} />}
-                    </div>))}
+                    </div>
+                ))}
             </div>
             <div className={style.right}>
                 <Space style={{ marginBottom: 10 }}>
                     <Input placeholder="请输入用户群名称" allowClear value={name} onChange={(e) => setName(e.target.value)} />
                     <Button icon={<SyncOutlined />} type='link' loading={getCrowdPack?.loading} onClick={() => { getList([data[selectAdz - 1].adAccountId]) }}></Button>
+                    {data?.length > 1 && <Button size="small" disabled={!data[selectAdz - 1][getKey(selectCp)]?.length} onClick={setOnekey} type="link" loading={sysCrowdPack.loading}>
+                        <Space>
+                            <span>一键设置</span>
+                            <Tooltip color="#FFF" overlayInnerStyle={{ color: '#000' }} title="设置其它账号下的人群包与当前账号选中的人群包名一模一样的配置(注意需要人群包名相同,否则不设置)">
+                                <QuestionCircleOutlined />
+                            </Tooltip>
+                        </Space>
+                    </Button>}
                 </Space>
                 <Tables
                     columns={columns()}

+ 46 - 4
src/pages/launchSystemNew/components/dataSourceModal/index.tsx

@@ -1,8 +1,8 @@
 import Tables from "@/components/Tables"
 import { useAjax } from "@/Hook/useAjax"
 import { getDataSourceApi, sysDataSourceApi } from "@/services/launchAdq/createAd"
-import { CheckOutlined, SyncOutlined } from "@ant-design/icons"
-import { Button, Modal, Space } from "antd"
+import { CheckOutlined, QuestionCircleOutlined, SyncOutlined } from "@ant-design/icons"
+import { Button, message, Modal, Space, Tooltip } from "antd"
 import React, { useEffect, useState } from "react"
 import style from '../goodsModal/index.less'
 import columns from './tableConfig'
@@ -77,6 +77,39 @@ const DataSourceModal: React.FC<Props> = (props) => {
         setData([...newData])
     }
 
+    /** 一键设置 */
+    const setOnekey = () => {
+        let dataSourceNames: string[] = data[selectAdz - 1]['userActionSetsList']?.map((item: { name: string }) => item.name)
+        let newData = JSON.parse(JSON.stringify(data))
+        const hide = message.loading(`正在设置...`, 0, () => {
+            message.success('设置成功');
+        });
+        getDataSource.run({ accountIds: newData?.filter((item: { adAccountId: number }) => item.adAccountId !== data[selectAdz - 1].adAccountId)?.map((item: { adAccountId: number }) => item?.adAccountId), promotedObjectType }).then(res => {
+            if (res && typeof res === 'object') {
+                Object.keys(res).forEach((key: string) => {
+                    let values = dataSourceNames.map(name => {
+                        let value = res[key]?.find((item: { name: string }) => item.name === name)
+                        if (value) {
+                            return { ...value, id: value.userActionSetId }
+                        }
+                        return undefined
+                    }).filter(item => item)
+                    if (values.length > 0) {
+                        newData = newData.map((item: { adAccountId: string }) => {
+                            if (item.adAccountId === key) {
+                                return { ...item, userActionSetsList: values }
+                            }
+                            return item
+                        })
+                    }
+                })
+                setData(newData)
+            }
+            message.success('设置完成');
+            hide()
+        })
+    }
+
     return <Modal
         title={<Space>
             <span>数据源</span>
@@ -96,11 +129,20 @@ const DataSourceModal: React.FC<Props> = (props) => {
                     <div key={index} onClick={() => { handleSelectAdz(index + 1, item) }} className={`${style.accItem} ${selectAdz === index + 1 && style.select} `}>
                         {item?.adAccountId}
                         {data[index].userActionSetsList?.length > 0 && <CheckOutlined style={{ color: '#1890ff' }} />}
-                    </div>))}
+                    </div>
+                ))}
             </div>
             <div className={style.right}>
-                <Space style={{ marginBottom: 10 }} align="end">
+                <Space style={{ marginBottom: 10 }} align="end" size={0}>
                     <Button icon={<SyncOutlined />} type='link' loading={getDataSource?.loading} onClick={() => { getList([data[selectAdz - 1].adAccountId]) }}></Button>
+                    {data.length > 1 && <Button disabled={!data[selectAdz - 1]['userActionSetsList']?.length} onClick={setOnekey} type="link" loading={getDataSource.loading}>
+                        <Space>
+                            <span>一键设置</span>
+                            <Tooltip color="#FFF" overlayInnerStyle={{ color: '#000' }} title="设置其它账号有相同名称的数据源为那个账号的数据源(注意需要数据源名称相同,否则不设置)">
+                                <QuestionCircleOutlined />
+                            </Tooltip>
+                        </Space>
+                    </Button>}
                 </Space>
                 <Tables
                     columns={columns()}

+ 45 - 8
src/pages/launchSystemNew/components/expandModal/index.tsx

@@ -1,10 +1,10 @@
 import { useAjax } from "@/Hook/useAjax"
 import { getCrowdPackApi, sysCrowdPackApi } from "@/services/launchAdq/createAd"
-import { Button, Checkbox, Input, message, Modal, Space, Switch } from "antd"
+import { Button, Checkbox, Input, message, Modal, Space, Switch, Tooltip } from "antd"
 import React, { useEffect, useState } from "react"
 import style from '../goodsModal/index.less'
 import columns from "../crowdPackModal/tableConfig"
-import { CheckOutlined, SyncOutlined } from "@ant-design/icons"
+import { CheckOutlined, QuestionCircleOutlined, SyncOutlined } from "@ant-design/icons"
 import Tables from "@/components/Tables"
 
 /**
@@ -96,8 +96,6 @@ const ExpandModal: React.FC<Props> = (props) => {
             message.error('扩量种子人群最多选择10个')
             return
         }
-        console.log('11111111111111');
-        
         let newData = JSON.parse(JSON.stringify(data))
         newData[selectAdz - 1]['coldStartAudienceList'] = selectedRows
         setData([...newData])
@@ -111,8 +109,38 @@ const ExpandModal: React.FC<Props> = (props) => {
         setSelectAdz(value)
     }
 
-    console.log('data---->', data);
-
+    /** 一键设置 */
+    const setOnekey = () => {
+        let expandNames: string[] = data[selectAdz - 1]['coldStartAudienceList']?.map((item: { name: string }) => item.name)
+        let newData = JSON.parse(JSON.stringify(data))
+        const hide = message.loading(`正在设置...`, 0, () => {
+            message.success('设置成功');
+        });
+        getCrowdPack.run({ accountIds: newData?.filter((item: { adAccountId: number }) => item.adAccountId !== data[selectAdz - 1].adAccountId)?.map((item: { adAccountId: number }) => item?.adAccountId), source: 'ADVERTISER_OWN_DATA' }).then(res => {
+            if (res && typeof res === 'object') {
+                Object.keys(res).forEach((key: string) => {
+                    let values = expandNames.map(name => {
+                        let value = res[key]?.find((item: { name: string }) => item.name === name)
+                        if (value) {
+                            return { ...value, id: value.audienceId }
+                        }
+                        return undefined
+                    }).filter(item => item)
+                    if (values.length > 0) {
+                        newData = newData.map((item: { adAccountId: string }) => {
+                            if (item.adAccountId === key) {
+                                return { ...item, coldStartAudienceList: values }
+                            }
+                            return item
+                        })
+                    }
+                })
+                setData(newData)
+            }
+            message.success('设置完成');
+            hide()
+        })
+    }
 
     return <Modal
         title={<Space>
@@ -134,7 +162,7 @@ const ExpandModal: React.FC<Props> = (props) => {
                         setQueryForm({ ...queryForm, expandEnabled: e, expandTargeting: [] });
                         if (!e) {
                             let newData = JSON.parse(JSON.stringify(data))
-                            newData = newData?.map((item: { coldStartAudienceList: any}) => {
+                            newData = newData?.map((item: { coldStartAudienceList: any }) => {
                                 return { ...item, coldStartAudienceList: [] }
                             })
                             setData([...newData])
@@ -164,12 +192,21 @@ const ExpandModal: React.FC<Props> = (props) => {
                     <div key={index} onClick={() => { handleSelectAdz(index + 1, item) }} className={`${style.accItem} ${selectAdz === index + 1 && style.select} `}>
                         {item?.adAccountId}
                         {data[index]['coldStartAudienceList']?.length > 0 && <CheckOutlined style={{ color: '#1890ff' }} />}
-                    </div>))}
+                    </div>
+                ))}
             </div>
             <div className={style.right}>
                 <Space style={{ marginBottom: 10 }}>
                     <Input placeholder="请输入用户群名称" allowClear value={name} onChange={(e) => setName(e.target.value)} />
                     <Button icon={<SyncOutlined />} type='link' loading={getCrowdPack?.loading} onClick={() => { getList([data[selectAdz - 1].adAccountId]) }}></Button>
+                    {data?.length > 1 && <Button disabled={!data[selectAdz - 1]['coldStartAudienceList']?.length} onClick={setOnekey} type="link" loading={getCrowdPack.loading}>
+                        <Space>
+                            <span>一键设置</span>
+                            <Tooltip color="#FFF" overlayInnerStyle={{ color: '#000' }} title="设置其它账号有相同名称的种子人群为那个账号的种子人群(注意需要用户群名称相同,否则不设置)">
+                                <QuestionCircleOutlined />
+                            </Tooltip>
+                        </Space>
+                    </Button>}
                 </Space>
                 <Tables
                     columns={columns()}

+ 47 - 4
src/pages/launchSystemNew/components/goodsModal/index.tsx

@@ -1,8 +1,8 @@
 import Tables from "@/components/Tables"
 import { useAjax } from "@/Hook/useAjax"
 import { getGoodsApi, synGoodsApi } from "@/services/launchAdq/createAd"
-import { CheckOutlined, SyncOutlined } from "@ant-design/icons"
-import { Button, Modal, Space } from "antd"
+import { CheckOutlined, QuestionCircleOutlined, SyncOutlined } from "@ant-design/icons"
+import { Button, message, Modal, Space, Tooltip } from "antd"
 import React, { useEffect, useState } from "react"
 import style from './index.less'
 import columns from './tableConfig'
@@ -82,6 +82,40 @@ const GoodsModal: React.FC<Props> = (props) => {
         setData([...newData])
     }
 
+    /** 一键设置 */
+    const setOnekey = () => {
+        let goodsNames: string[] = data[selectAdz - 1]['productList']?.map((item: { productName: string }) => item.productName)
+        let newData = JSON.parse(JSON.stringify(data))
+        const hide = message.loading(`正在设置...`, 0, () => {
+            message.success('设置成功');
+        });
+        getGoods.run(newData?.filter((item: { adAccountId: number }) => item.adAccountId !== data[selectAdz - 1].adAccountId)?.map((item: { adAccountId: number }) => item?.adAccountId)).then(res => {
+            if (res && typeof res === 'object') {
+                Object.keys(res).forEach((key: string) => {
+                    let values = goodsNames.map(name => {
+                        let value = res[key]?.find((item: { productName: string }) => item.productName === name)
+                        if (value) {
+                            return { ...value, id: Number(value?.productOuterId?.replace(/\D/ig, '')) }
+                        }
+                        return undefined
+                    }).filter(item => item)
+                    if (values.length > 0) {
+                        newData = newData.map((item: { adAccountId: string }) => {
+                            if (item.adAccountId === key) {
+                                return { ...item, productList: values }
+                            }
+                            return item
+                        })
+                    }
+                })
+                setData(newData)
+            }
+            message.success('设置完成');
+            hide()
+        })
+    }
+    
+
     return <Modal
         title={<Space>
             <span>商品库</span>
@@ -101,11 +135,20 @@ const GoodsModal: React.FC<Props> = (props) => {
                     <div key={index} onClick={() => { handleSelectAdz(index + 1, item) }} className={`${style.accItem} ${selectAdz === index + 1 && style.select} `}>
                         {item?.adAccountId}
                         {data[index].productList?.length > 0 && <CheckOutlined style={{ color: '#1890ff' }} />}
-                    </div>))}
+                    </div>
+                ))}
             </div>
             <div className={style.right}>
-                <Space style={{ marginBottom: 10 }} align="end" size={2}>
+                <Space style={{ marginBottom: 10 }} align="end" size={0}>
                     <Button icon={<SyncOutlined />} type='link' loading={getGoods?.loading} onClick={() => { getList([data[selectAdz - 1].adAccountId]) }}>刷新</Button>
+                    {data?.length > 1 && <Button disabled={!data[selectAdz - 1]['productList']?.length} onClick={setOnekey} type="link" loading={getGoods.loading}>
+                        <Space>
+                            <span>一键设置</span>
+                            <Tooltip color="#FFF" overlayInnerStyle={{ color: '#000' }} title="设置其它账号有相同名称的商品为那个账号的商品(注意需要用户商品称相同,否则不设置)">
+                                <QuestionCircleOutlined />
+                            </Tooltip>
+                        </Space>
+                    </Button>}
                     {data[selectAdz - 1]?.productList?.length > 0 && <Button type='link' onClick={() => { clearGoods() }}>清空</Button>}
                 </Space>
                 <Tables

+ 48 - 8
src/pages/launchSystemNew/components/pageModal/index.tsx

@@ -2,8 +2,8 @@
 import Tables from "@/components/Tables"
 import { useAjax } from "@/Hook/useAjax"
 import { getAdqLandingPageList, putAdqLandingPage } from "@/services/launchAdq/adq"
-import { CheckOutlined, SyncOutlined } from "@ant-design/icons"
-import { Button, message, Modal, Space } from "antd"
+import { CheckOutlined, QuestionCircleOutlined, SyncOutlined } from "@ant-design/icons"
+import { Button, Input, message, Modal, Space, Tooltip } from "antd"
 import React, { useEffect, useState } from "react"
 import style from '../goodsModal/index.less'
 import columns from "./tableConfig"
@@ -26,7 +26,7 @@ const PageModal: React.FC<Props> = (props) => {
     const { cloudParams, visible, onClose, data: data1, onChange } = props
     const [selectAdz, setSelectAdz] = useState<number>(1)   // 选择广告主
     const [data, setData] = useState<any>(data1 || [])
-    const [queryForm, setQueryForm] = useState<{ accountId?: number, pageSize: number, pageNum: number }>({ pageNum: 1, pageSize: 20 })
+    const [queryForm, setQueryForm] = useState<{ accountId?: number, pageName?: string, pageSize: number, pageNum: number }>({ pageNum: 1, pageSize: 20 })
     const [loading, setLoading] = useState<boolean>(false)
 
     const listAjax = useAjax((params) => getAdqLandingPageList(params))
@@ -34,7 +34,7 @@ const PageModal: React.FC<Props> = (props) => {
 
     useEffect(() => {
         if (data?.length > 0) {
-            setQueryForm({ ...queryForm, accountId: data[selectAdz - 1].adAccountId })
+            setQueryForm({ ...queryForm, pageNum: 1, accountId: data[selectAdz - 1].adAccountId })
         }
     }, [selectAdz])
 
@@ -46,13 +46,10 @@ const PageModal: React.FC<Props> = (props) => {
 
     // 获取落地页列表
     const getList = () => {
-        console.log('data-->', cloudParams);
-
         listAjax.run({ ...queryForm, ...cloudParams, pageStatus: 'NORMAL' })
     }
 
     const handleOk = () => {
-        console.log('data---->', data);
         if (data?.every((item: { pageList: any }) => item.pageList)) {
             onChange && onChange(data)
         } else {
@@ -85,6 +82,37 @@ const PageModal: React.FC<Props> = (props) => {
         }).catch(() => setLoading(false))
     }
 
+    /** 一键设置 */
+    const setOnekey = () => {
+        let pageName: string = data[selectAdz - 1]['pageList']?.[0]?.pageName
+        let newData = JSON.parse(JSON.stringify(data))
+        const hide = message.loading(`正在设置...`, 0, () => {
+            message.success('设置成功');
+        });
+        let ajax = newData?.filter((item: { adAccountId: number }) => item.adAccountId !== data[selectAdz - 1].adAccountId)?.map((item: { adAccountId: number }) => {
+            return getAdqLandingPageList({ pageName, accountId: item.adAccountId, pageNum: 1, pageSize: 20, pageStatus: 'NORMAL' })
+        })
+        Promise.all(ajax).then(res => {
+            if (res && Array.isArray(res)) {
+                res.forEach((item: any) => {
+                    let records = item?.data?.records
+                    if (Array.isArray(records) && records?.length > 0) {
+                        let record = records[0]
+                        newData = newData.map((item: { adAccountId: string }) => {
+                            if (item.adAccountId === record.accountId.toString()) {
+                                return { ...item, pageList: [{ ...record, id: record.pageId }] }
+                            }
+                            return item
+                        })
+                    }
+                })
+                setData(newData)
+            }
+            message.success('设置完成');
+            hide()
+        })
+    }
+
     return <Modal
         title={<Space>
             <span>ADQ落地页</span>
@@ -105,10 +133,20 @@ const PageModal: React.FC<Props> = (props) => {
                     <div key={index} onClick={() => { handleSelectAdz(index + 1, item) }} className={`${style.accItem} ${selectAdz === index + 1 && style.select} `}>
                         {item?.adAccountId}
                         {data[index].pageList?.length > 0 && <CheckOutlined style={{ color: '#1890ff' }} />}
-                    </div>))}
+                    </div>
+                ))}
             </div>
             <div className={style.right}>
                 <Space style={{ marginBottom: 10 }} align="end">
+                    <Input value={queryForm?.pageName} allowClear placeholder='请输入落地页名称' onChange={(e) => setQueryForm({ ...queryForm, pageNum: 1, pageName: e.target.value })}/>
+                    {data?.length > 1 && <Button disabled={!data[selectAdz - 1]['pageList']?.length} onClick={setOnekey} type="link" loading={listAjax.loading}>
+                        <Space>
+                            <span>一键设置</span>
+                            <Tooltip color="#FFF" overlayInnerStyle={{ color: '#000' }} title="设置其它账号有相同名称的落地页为那个账号的落地页(注意需要落地页名称相同,否则不设置)">
+                                <QuestionCircleOutlined />
+                            </Tooltip>
+                        </Space>
+                    </Button>} 
                     <Button icon={<SyncOutlined />} type='link' loading={listAjax?.loading} onClick={() => { listAjax?.refresh() }}></Button>
                 </Space>
                 <Tables
@@ -120,6 +158,8 @@ const PageModal: React.FC<Props> = (props) => {
                     bordered
                     total={listAjax?.data?.total}
                     defaultPageSize={20}
+                    current={listAjax?.data?.current}
+                    pageSize={listAjax?.data?.size}
                     pageChange={(page: number, pageSize?: number) => {
                         setQueryForm({ ...queryForm, pageNum: page, pageSize: pageSize as number || 20 })
                     }}

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

@@ -360,11 +360,11 @@ const CreateAd: React.FC = () => {
                         type2Data['model'] = 'corres'
                     }
                 }
-                if (moment(sysAdgroup?.beginDate) < moment()) {
+                if (sysAdgroup?.beginDate && moment(sysAdgroup?.beginDate) < moment()) {
                     sysAdgroup.beginDate = moment().format('YYYY-MM-DD')
                     message.warning('请注意,检测投放开始日期小于今天,以自动改成今天,如需修改,请重新设置')
                 }
-                if (moment(sysAdgroup?.endDate) < moment()) {
+                if (sysAdgroup?.endDate && moment(sysAdgroup?.endDate) < moment()) {
                     sysAdgroup.endDate = moment().format('YYYY-MM-DD')
                     message.warning('请注意,检测投放结束日期小于今天,以自动改成今天,如需修改,请重新设置')
                 }
@@ -393,11 +393,11 @@ const CreateAd: React.FC = () => {
             if (adqAdData) {
                 const { queryForm, accountCreateLogs } = JSON.parse(adqAdData)
                 if (queryForm?.sysAdgroup) {
-                    if (moment(queryForm?.sysAdgroup?.beginDate) < moment()) {
+                    if (queryForm?.sysAdgroup?.beginDate && moment(queryForm?.sysAdgroup?.beginDate) < moment()) {
                         queryForm.sysAdgroup.beginDate = moment().format('YYYY-MM-DD')
                         message.warning('请注意,检测投放开始日期小于今天,已自动改成今天,如需修改,请重新设置')
                     }
-                    if (moment(queryForm?.sysAdgroup?.endDate) < moment()) {
+                    if (queryForm?.sysAdgroup?.endDate && moment(queryForm?.sysAdgroup?.endDate) < moment()) {
                         queryForm.sysAdgroup.endDate = moment().format('YYYY-MM-DD')
                         message.warning('请注意,检测投放结束日期小于今天,已自动改成今天,如需修改,请重新设置')
                     }

+ 10 - 5
src/services/launchAdq/adq.ts

@@ -237,12 +237,17 @@ export async function getAdqAdcreativeList(params: {
 export async function getAdqLandingPageList(params: {
   pageNum: number;
   pageSize: number;
-  accountId: string;
-  pageName: string;
-  pageType: string;
-  pageTemplateId: string;
-  pageStatus: string;
+  accountId?: number;
+  pageName?: string;
+  pageType?: string;
+  pageTemplateId?: string;
+  pageStatus?: string;
 }) {
+  Object.keys(params).forEach(key => {
+    if (!params[key]) {
+      delete params[key]
+    }
+  })
   return request(api + '/adq/landingPageWechat/list ', {
     method: 'POST',
     data: params,