Ver código fonte

Merge branch 'develop' of http://git.zanxiangnet.com/wjx/ad-manage

wjx 12 horas atrás
pai
commit
fe3a8719d9

+ 9 - 2
src/pages/launchSystemV3/tencentAdPutIn/create/Ad/adgroupsTarget.tsx

@@ -1,14 +1,21 @@
 import React from "react"
 import { Card, Form, Input, InputNumber } from "antd";
 import style from '../index.less'
+import New1Radio from "@/pages/launchSystemV3/components/New1Radio";
 
-const AdgroupsTarget: React.FC = () => {
+const AdgroupsTarget: React.FC<{ marketingCarrierType: string }> = ({ marketingCarrierType }) => {
 
     return <Card
         title={<strong style={{ fontSize: 18 }}>定向</strong>}
         className="cardResetCss"
     >
         <Form.Item
+            label={<strong>定向策略</strong>}
+            name={'smartTargetingMode'}
+        >
+            <New1Radio data={[{ label: '智能定向', value: 'SMART_TARGETING_OPEN' }, { label: '手动定向', value: 'SMART_TARGETING_MANUAL' }]} />
+        </Form.Item>
+        {['MARKETING_CARRIER_TYPE_APP_ANDROID', 'MARKETING_CARRIER_TYPE_APP_IOS'].includes(marketingCarrierType) && <Form.Item
             label={<strong>RTA 策略</strong>}
         >
             <Card bordered className="cardResetCss newCss" bodyStyle={{ padding: 0 }}>
@@ -29,7 +36,7 @@ const AdgroupsTarget: React.FC = () => {
                     </div>
                 </div>
             </Card>
-        </Form.Item>
+        </Form.Item>}
     </Card>
 }
 

+ 18 - 2
src/pages/launchSystemV3/tencentAdPutIn/create/Ad/newCreateAd.tsx

@@ -54,6 +54,7 @@ const NewCreateAd: React.FC<Props> = ({ accountIdList, value, visible, onChange,
             timeSeries,              // 时段
             isSetfirstDayBeginTime,  // 首日开始时间是否开启
             ecomPkamSwitch,
+            smartTargetingMode,
             ...surplusValues
         } = values
         console.log(values)
@@ -84,6 +85,11 @@ const NewCreateAd: React.FC<Props> = ({ accountIdList, value, visible, onChange,
             adgroupsValues.timeSeries = timeSeries.join('');
         }
 
+        // 智能定向处理
+        if (smartTargetingMode === 'SMART_TARGETING_MANUAL') {
+            adgroupsValues.smartTargetingMode = smartTargetingMode
+        }
+
         Object.keys(adgroupsValues).forEach(key => {
             if (adgroupsValues[key] === undefined || adgroupsValues === null) {
                 delete adgroupsValues[key]
@@ -104,6 +110,7 @@ const NewCreateAd: React.FC<Props> = ({ accountIdList, value, visible, onChange,
                 marketingAssetOuterSpec,
                 autoDerivedCreativeEnabled,
                 ecomPkamSwitch,
+                smartTargetingMode,
                 ...surplusValues
             } = JSON.parse(JSON.stringify(value))
             let adgroupsValues: any = {
@@ -172,6 +179,14 @@ const NewCreateAd: React.FC<Props> = ({ accountIdList, value, visible, onChange,
             } else {
                 adgroupsValues.displaySceneType = '0'
             }
+
+            // 智能对象
+            if (smartTargetingMode) {
+                adgroupsValues.smartTargetingMode = smartTargetingMode
+            } else {
+                adgroupsValues.smartTargetingMode = 'SMART_TARGETING_OPEN'
+            }
+
             setOGPparams({
                 bidMode: adgroupsValues.bidMode,
                 siteSet: adgroupsValues.siteSet,
@@ -243,7 +258,8 @@ const NewCreateAd: React.FC<Props> = ({ accountIdList, value, visible, onChange,
                 isSetfirstDayBeginTime: false,
                 autoDerivedCreativeEnabled: false,
                 isConversion: false,
-                explorationStrategy: 'AUTOMATIC_EXPLORATION'
+                explorationStrategy: 'AUTOMATIC_EXPLORATION',
+                smartTargetingMode: 'SMART_TARGETING_MANUAL'
             }}
         >
             <DispatchAd.Provider value={{ form, OGPParams, setOGPparams, putInType }}>
@@ -253,7 +269,7 @@ const NewCreateAd: React.FC<Props> = ({ accountIdList, value, visible, onChange,
                     {/* 广告版位 */}
                     <AdgroupsSitSet />
                     {/* 定向 */}
-                    {['MARKETING_CARRIER_TYPE_APP_ANDROID', 'MARKETING_CARRIER_TYPE_APP_IOS'].includes(marketingCarrierType) && <AdgroupsTarget />}
+                    <AdgroupsTarget marketingCarrierType={marketingCarrierType} />
                     {/* 出价与预算 */}
                     <AdgroupsPrice />
                     {/* 广告设置 */}

+ 29 - 3
src/pages/launchSystemV3/tencentAdPutIn/create/Target/index.tsx

@@ -1,6 +1,6 @@
-import React, { useContext, useState } from "react"
+import React, { useContext, useEffect, useState } from "react"
 import style from '../index.less'
-import { Button, Typography } from "antd"
+import { Button, Radio, Space, Typography } from "antd"
 import { PlusCircleOutlined, PlusOutlined, RedoOutlined } from "@ant-design/icons"
 import SelectTarget from "./selectTarget"
 import { DispatchAddelivery } from ".."
@@ -20,14 +20,27 @@ const Target: React.FC = () => {
     const { geoLocationList, modelList } = useModel('useLaunchV3.useTargeting')
     const { addelivery, setAddelivery, clearData, putInType, setIsDqSubmit } = useContext(DispatchAddelivery)!;
     const { targeting, adgroups } = addelivery
+    const { smartTargetingMode } = adgroups
     const [addVisible, setAddVisible] = useState<boolean>(false)
     const [addTemVisible, setAddTemVisible] = useState<boolean>(false)
     const [modifyDta, setModifyDta] = useState<any>()
     const [modifyLength, setModifyLength] = useState<number>()
     const [copyDta, setCopyDta] = useState<any>()
     const [copyVisible, setCopyVisible] = useState<boolean>(false)
+    const [stm, setStm] = useState<'SMART_TARGETING_OPEN' | 'SMART_TARGETING_MANUAL'>()
     /***************************************/
 
+    useEffect(() => {
+        setStm(smartTargetingMode || 'SMART_TARGETING_OPEN')
+    }, [smartTargetingMode])
+
+    const setSmartTargetingMode = (smartTargetingMode: 'SMART_TARGETING_OPEN' | 'SMART_TARGETING_MANUAL') => {
+        const adgroups = { ...addelivery.adgroups, smartTargetingMode }
+        if (smartTargetingMode === 'SMART_TARGETING_OPEN') {
+            delete adgroups?.smartTargetingMode
+        }
+        setAddelivery({ ...addelivery, adgroups })
+    }
 
     return <>
         <div className={`${style.settingsBody_content_row} ${style.row2}`}>
@@ -46,7 +59,20 @@ const Target: React.FC = () => {
             <div className={style.detail}>
                 <div className={style.detail_body}>
                     {targeting?.length > 0 && <>
-                        <Title level={5} style={{ fontSize: 12 }}>全部相同</Title>
+                        {<Space style={{ marginBottom: 5 }}>
+                            <Title level={5} style={{ fontSize: 12, marginBottom: 0 }}>全部相同</Title>
+                            <Radio.Group
+                                value={stm}
+                                size="small"
+                                optionType="button"
+                                buttonStyle="solid"
+                                options={[
+                                    { label: '智能定向', value: 'SMART_TARGETING_OPEN' },
+                                    { label: '手动定向', value: 'SMART_TARGETING_MANUAL' }
+                                ]}
+                                onChange={(e) => setSmartTargetingMode(e.target.value)}
+                            />
+                        </Space>}
                         {targeting?.map((item: { targetingName: any; targeting: any, taskType: 'NOVEL' | 'GAME', id?: number }, index: number) => <div key={index}>
                             <DataItem
                                 geoLocationList={geoLocationList}

+ 1 - 0
src/pages/launchSystemV3/tencentAdPutIn/create/index.tsx

@@ -72,6 +72,7 @@ const Create: React.FC = () => {
     const getSelectTaskDetail = useAjax((params) => getSelectTaskDetailApi(params))
     const getCreativeDetails = useAjax((params) => getCreativeDetailsApi(params))
     /*******************************************/
+    console.log('=============>', addelivery)
 
     // 判断游戏还是小说短剧
     useEffect(() => {