import { Checkbox, DatePicker, Form, Input, message, Modal, notification, Radio, Select, Space, TimePicker, Tooltip } from "antd" import React, { useEffect, useState } from "react" import TimeInSelect from "../../components/timeInSelect" import moment from "moment" import { getTimeSeriesList } from "./const"; import { editAdqAdgroupsDataApi } from "@/services/launchAdq/adq"; import { useAjax } from "@/Hook/useAjax"; import { BidStrategyEnum, GoalRoasEnum } from "@/services/launchAdq/enum"; import { QuestionCircleOutlined } from "@ant-design/icons"; import { RangePickerProps } from "antd/lib/date-picker"; const { RangePicker } = DatePicker; let DatePickers: any = DatePicker interface Props { title: string, visible?: boolean, onChange?: () => void, onClose?: () => void, selectedRows: any[] } /** * 修改广告 * @returns */ const UpdateAd: React.FC = ({ title = '修改广告', visible, onChange, onClose, selectedRows }) => { /***************************/ const [form] = Form.useForm(); let dateType = Form.useWatch('dateType', form) let field = Form.useWatch('field', form) const [state, setState] = useState({ isShowTime: [] }) const [isBidSType, setIsBidSType] = useState(true) const [timeSeriesType, setTimeSeriesType] = useState<'allDayLong' | 'timeInterValS'>('allDayLong') const editAdqAdgroupsData = useAjax((params) => editAdqAdgroupsDataApi(params)) /***************************/ useEffect(() => { setIsBidSType(selectedRows.every((item: { smartBidType: string }) => item.smartBidType === 'SMART_BID_TYPE_CUSTOM')) }, [selectedRows]) const handleOk = () => { form.validateFields().then(values => { console.log(values); let newValues = JSON.parse(JSON.stringify(values)) let field = newValues.field let adgroupsUpdateDatetimeDTO = {} // 排期 let adgroupsUpdateBidAmountDTO = {} // 出价 let deepConversionSpec = {} // ROI let data = {} if (timeSeriesType === 'allDayLong') { newValues.timeSeries = getTimeSeriesList() } if (title === '批量修改深度优化') { deepConversionSpec['deepConversionType'] = newValues.deepConversionType deepConversionSpec['deepConversionWorthSpec'] = { expectedRoi: newValues.deepBidAmount, goal: newValues.goal } } else { field?.forEach((key: string) => { switch (key) { case 'dateType': if (newValues.dateType === '2') { adgroupsUpdateDatetimeDTO['beginDate'] = moment(newValues.date).format('YYYY-MM-DD') adgroupsUpdateDatetimeDTO['endDate'] = '' } else { adgroupsUpdateDatetimeDTO['beginDate'] = moment(newValues.date[0]).format('YYYY-MM-DD') adgroupsUpdateDatetimeDTO['endDate'] = moment(newValues.date[1]).format('YYYY-MM-DD') } break case 'timeType': // if (timeSeriesType === 'timeInterValS') { // if (newValues.firstDayBeginTime && moment(newValues.firstDayBeginTime).format('HH:mm:ss') !== '00:00:00') { // message.error('1111') // return // } // } if (newValues.timeSeries) { adgroupsUpdateDatetimeDTO['timeSeries'] = newValues.timeSeries.join('') } if (newValues.firstDayBeginTime) { adgroupsUpdateDatetimeDTO['firstDayBeginTime'] = moment(newValues.firstDayBeginTime).format('HH:mm:ss') } break case 'bidSType': adgroupsUpdateBidAmountDTO['bidStrategy'] = newValues.bidStrategy adgroupsUpdateBidAmountDTO['bidAmount'] = newValues.bidAmount * 100 break case 'adgroupName': data['adgroupName'] = newValues.adgroupName break } }) } editAdqAdgroupsData.run({ adgroupIds: selectedRows.map((item: { adgroupId: number }) => item.adgroupId), adgroupsUpdateDatetimeDTO, adgroupsUpdateBidAmountDTO, deepConversionSpec, ...data }).then(res => { if (res) { message.success(`修改操作完成.结果请在操作记录查询!`)//成功: ${res.success},失败: ${res.fail} if (res?.fail) { notification.error({ message: `修改失败`, description: `成功: ${res.success},修改失败${res.fail}条,失败的请到任务列表查看`, duration: 0 }); } onChange?.() } }) }) } /** 禁止选择以前时间 */ const disabledDate: RangePickerProps['disabledDate'] = current => { // Can not select days before today and today return current && current < moment().startOf('day'); }; return onClose && onClose()} confirmLoading={editAdqAdgroupsData.loading} >
{title === '批量修改' ? <> 选择修改字段} name='field' rules={[{ required: true, message: '选择修改字段' }]}> 投放日期 投放时段 出价 {!isBidSType && } 广告名称 {field?.includes('dateType') && <> 投放日期} name='dateType'> { if (e.target.value === "1") { form.setFieldsValue({ date: [moment().startOf('day'), moment().startOf('day').add(1, 'M')] }) } if (e.target.value === "2") { form.setFieldsValue({ date: moment().startOf('day') }) } }}> 选择开始与结束日期 长期投放 {/* 投放日期的不同展示不同的日期选择 */} {dateType === '1' ? : } } {field?.includes('timeType') && <> 投放时段} style={{ marginBottom: 0 }}> { setTimeSeriesType(value.target.value) if (value.target.value === 'timeInterValS') { setState({ isShowTime: ['1'] }) } }}> 全天投放 指定多个时段 {timeSeriesType === 'timeInterValS' && } }> { setState({ ...state, isShowTime: checkedValue }) }} /> {state?.isShowTime?.length > 0 && } } {field?.includes('bidSType') && <> 出价策略} name='bidStrategy' rules={[{ required: true, message: '请选择出价策略' }]}> {Object.keys(BidStrategyEnum).map(key => { return {BidStrategyEnum[key]} })} 出价} name='bidAmount' rules={[{ required: true, message: '请输入价格' }]}> } {field?.includes('adgroupName') && <> 广告名称} name='adgroupName' rules={[{ required: true, message: '请输入广告名称' }]}> } : <> 深度优化方式} name='optimizationMode' rules={[{ required: true, message: '请选择深度优化方式' }]}> 深度目标优化 深度优化类型} name='deepConversionType' rules={[{ required: true, message: '请选择深度优化类型' }]}> { form.setFieldsValue({ goal: undefined, deepBidAmount: undefined }) }}> 优化 ROI 深度优化目标} name='goal' rules={[{ required: true, message: '请选择深度优化目标' }]}> 期望ROI} name='deepBidAmount' rules={[{ required: true, message: '请输入期望ROI' }]}> }
} export default React.memo(UpdateAd)