import React, { useCallback, useEffect } from 'react' import { Modal, Form, Input, Divider, Select, Radio, DatePicker, Switch, Checkbox } from 'antd' import { SiteSetEnum, BidModeEnum, OptimizationGoalEnum, BidStrategyEnum, PromotedObjectType, EducationEnum } from '@/services/launchAdq/enum' import { ModalConfig } from '.' import moment from 'moment'; import { useAjax } from '@/Hook/useAjax'; import { getSceneTagsList } from '@/services/launchAdq/global'; const { RangePicker }: { RangePicker: any } = DatePicker; let DatePickers: any = DatePicker interface Props { title?: string, visible: boolean, PupFn: (arg: ModalConfig) => void, callback: (params: any) => void, confirmLoading: boolean } /**广告模板*/ function AdModal(props: Props) { let { visible, title, confirmLoading, PupFn, callback } = props const sceneTagsList = useAjax((params) => getSceneTagsList(params)) const [form] = Form.useForm(); let dateType = Form.useWatch('dateType', form) let bidMode = Form.useWatch('bidMode', form) let smartBidType = Form.useWatch('smartBidType', form) let autoAcquisitionEnabled = Form.useWatch('autoAcquisitionEnabled', form) let siteSet = Form.useWatch('siteSet', form) let wechatPositionType = Form.useWatch('wechatPositionType', form) let wechatSceneType = Form.useWatch('wechatSceneType', form) // 确定事件 const handleOk = useCallback(() => { form.validateFields().then(values => { let newValues = JSON.parse(JSON.stringify(values)) newValues.sceneSpec = {} if (newValues.dateType === '2') { newValues['beginDate'] = moment(newValues.date).format('YYYY-MM-DD') } else { newValues['beginDate'] = moment(newValues.date[0]).format('YYYY-MM-DD') newValues['endDate'] = moment(newValues.date[1]).format('YYYY-MM-DD') } if (newValues.wechatPositionType === '1') { newValues.sceneSpec = { ...newValues.sceneSpec, wechatPosition: newValues.wechatPosition } } if (newValues.wechatSceneType === '1') { newValues.sceneSpec = { ...newValues.sceneSpec, wechatScene: { officialAccountMediaCategory:newValues.officialAccountMediaCategory, miniProgramAndMiniGame:newValues.miniProgramAndMiniGame, payScene:newValues.payScene } } } if (newValues.sceneSpec.wechatPosition?.length === 0) { delete newValues.sceneSpec.wechatPosition } // if(newValues.sceneSpec.wechatScene) if (!newValues.sceneSpec.wechatPosition && !newValues.sceneSpec.wechatScene) { delete newValues.sceneSpec } delete newValues.officialAccountMediaCategory delete newValues.miniProgramAndMiniGame delete newValues.payScene delete newValues.wechatPositionType delete newValues.wechatPosition delete newValues.wechatScene delete newValues['dateType'] delete newValues['date'] newValues['timeSeries'] = Array(336).fill(1).join('') callback(newValues) }) // PupFn({ visible: false }) }, [form]) // 场景定向 useEffect(() => { sceneTagsList.run({ typeList: ['WECHAT_POSITION', 'OFFICIAL_ACCOUNT_MEDIA_CATEGORY', 'MINI_PROGRAM_AND_MINI_GAME', 'PAY_SCENE'] }) }, []) console.log() return { PupFn({ visible: false }) }} onOk={handleOk} width={900} confirmLoading={confirmLoading} >
{/* ============================================================基本信息============================================================= */} 基本信息 广告名称} name='adgroupName' rules={[{ required: true, message: '请输入广告名称!' }]}> 推广目标类型} name='promotedObjectType' rules={[{ required: true, message: '请选择推广告推广目标类型!' }]}> 广告版位} name='siteSet' rules={[{ required: true, message: '请输入选择广告版位!' }]}> { siteSet?.some((s: string) => s === 'SITE_SET_WECHAT') && <> 微信公众号与小程序定投} name='wechatPositionType' style={wechatPositionType === '1' ? { marginBottom: 5 } : {}}> 不限 自定义 {wechatPositionType === '1' && ({ label: item.description, value: item.id }))} /> } 微信公众号与小程序场景} name='wechatSceneType' style={wechatSceneType === '1' ? { marginBottom: 5 } : {}} > 不限 自定义 {wechatSceneType === '1' && <>

公众号媒体类型

i.description !== '不限')?.map((item: { description: any; id: any; }) => ({ label: item.description, value: item.id }))} />

小程序小游戏流量类型

i.description !== '不限')?.map((item: { description: any; id: any; }) => ({ label: item.description, value: item.id }))} />

订单详情页消费场景

i.description !== '不限')?.map((item: { description: any; id: any; }) => ({ label: item.description, value: item.id }))} /> } } {/* ============================================================排期与出价============================================================= */} 排期与出价 投放日期} name='dateType'> 选择开始与结束日期 长期投放 {/* 投放日期的不同展示不同的日期选择 */} { dateType === '1' ? : } 投放时段}> 全天投放 出价方式} name='bidMode'> { Object.keys(BidModeEnum).map(key => { return {BidModeEnum[key]} }) } {/* 出价方式为OCPM才展示 */} { bidMode === 'BID_MODE_OCPM' && <> 优化目标} name='optimizationGoal' rules={[{ required: true, message: '请选择优化目标' }]}> 出价类型} name='smartBidType'> 手动出价 自动出价 出价策略} name='bidStrategy'> { Object.keys(BidStrategyEnum).map(key => { return {BidStrategyEnum[key]} }) } } {/* 出价类型为手动出价才展示 */} { smartBidType !== 'SMART_BID_TYPE_SYSTEMATIC' && <> 出价} name='bidAmount' rules={[{ required: true, message: '请输入价格' }]}> {/* 当版位选择大于1时才出现 */} {/* {siteSet?.length > 1 &&分版位出价} name='bidAdjustment'> } */} 一键起量} name='autoAcquisitionEnabled' valuePropName="checked"> {/* 一键起量开启时才出现 */} {autoAcquisitionEnabled && 起量预算} name='autoAcquisitionBudget' rules={[{ required: true, message: '请输入起量预算' }]}> } } 广告日预算} name='dailyBudget'>
} export default AdModal