import React, { useContext, useState } from "react" import style from '../index.less' import { Button, Typography } from "antd" import { PlusCircleOutlined, PlusOutlined, RedoOutlined } from "@ant-design/icons" import SelectTarget from "./selectTarget" import { DispatchAddelivery } from ".." import { useModel } from "umi" import DataItem from "./dataItem" import AddTarget from "./addTarget" const { Title } = Typography; /** * 定向 * @returns */ const Target: React.FC = () => { /***************************************/ const { geoLocationList, modelList } = useModel('useLaunchV3.useTargeting') const { addelivery, setAddelivery, clearData } = useContext(DispatchAddelivery)!; const { targeting, adgroups } = addelivery const [addVisible, setAddVisible] = useState(false) const [addTemVisible, setAddTemVisible] = useState(false) const [modifyDta, setModifyDta] = useState() const [modifyLength, setModifyLength] = useState() /***************************************/ return <>
定向 已选 {targeting?.length || 0} {targeting?.length > 0 && }
{targeting?.length > 0 && <> 全部相同 {targeting?.map((item: { targetingName: any; targeting: any, id?: number }, index: number) =>
{ let newTargeting: any[] = JSON.parse(JSON.stringify(targeting)) setAddelivery({ ...addelivery, targeting: newTargeting.filter((_, i) => index !== i) }) }} onModify={() => { setModifyLength(index) setModifyDta({ targetingName: item?.id ? ('修_' + item.targetingName) : item.targetingName, ...item.targeting }) setAddTemVisible(true) }} />
)} }
{/* 添加定向 */} {addVisible && item?.id)} visible={addVisible} onClose={() => { setAddVisible(false) }} onChange={(target) => { // 获取当前新增的,不是模板复制的全是当前和模板没关系 let currentTarget = targeting?.filter((item: { id: any }) => !item?.id) || [] setAddelivery({ ...addelivery, targeting: [...target, ...currentTarget] }) setAddVisible(false) }} />} {/* 新增修改定向模板 */} {addTemVisible && { setAddTemVisible(false) setModifyDta(undefined) }} onChange={(newTargeting) => { setAddTemVisible(false) setModifyDta(undefined) let newTarget: any[] = JSON.parse(JSON.stringify(targeting || [])) if (modifyLength !== undefined) { newTarget[modifyLength] = newTargeting } else { newTarget.push(newTargeting) } setModifyLength(undefined) setAddelivery({ ...addelivery, targeting: newTarget }) clearData() }} />} } export default React.memo(Target)