import Selector from "@/pages/launchSystemNew/launchManage/createAd/selector" import React, { useEffect, useState } from "react" import style from './index.less' import { Button, Col, Form, Input, Row, Select, Space, Table, Tag, Tooltip, Typography } from "antd"; import { CloseCircleFilled } from "@ant-design/icons"; import { useAjax } from "@/Hook/useAjax"; import { getUserAccountListApi } from "@/services/launchAdq/adAuthorize"; import { arraysHaveSameValues } from "@/utils/utils"; import '@/pages/launchSystemV3/tencentAdPutIn/index.less' const { Text } = Typography; interface Props { value?: number[] onChange?: (value?: number[] | number, data?: any[] | any) => void type?: 'checkbox' | 'radio' /** 是否第一次获取的时候返回值 */ isReturnFirstValue?: boolean allowClear?: boolean initialValues?: any } const SelectAdAccount: React.FC = ({ value, onChange, isReturnFirstValue, type = 'checkbox', allowClear = true, initialValues = {} }) => { value = value && typeof value !== 'object' ? [value] : value /***********************************/ const [form] = Form.useForm() const [visible, setVisible] = useState(false) const [selectedRows, setSelectedRows] = useState([]) const [queryForm, setQueryForm] = useState<{ accountIdList?: number[], adUnitTypeList?: string[], groupId?: number, remark?: string, putInType?: 'NOVEL' | 'GAME', sysGroupId?: number, pageNum: number, pageSize: number }>({ pageNum: 1, pageSize: 50, ...initialValues }) const [isFirstReturn, setIsFirstReturn] = useState(false) const getUserAccountList = useAjax((params) => getUserAccountListApi(params)) /***********************************/ const onFinish = (data: any) => { let oldQueryFrom = JSON.parse(JSON.stringify(queryForm)) let params = { ...oldQueryFrom, ...data, pageNum: 1 } if (params?.accountIdList) { params.accountIdList = params?.accountIdList.split(/[,,\n\s]+/ig).filter((item: any) => item) } else { delete params?.accountIdList } setQueryForm(params) } useEffect(() => { if (visible) { setSelectedRows(value?.map(accountId => ({ accountId })) || []) } }, [value, visible]) useEffect(() => { if (visible || isReturnFirstValue) { let params = { ...queryForm } if (queryForm?.putInType) { params.adUnitTypeList = queryForm?.putInType === 'NOVEL' ? ['NOVEL', 'NOVEL_IAA', 'SKIT_IAA'] : ['GAME', 'GAME_IAA'] delete queryForm.putInType } else { delete params?.adUnitTypeList } getUserAccountList.run(params).then(res => { if (isReturnFirstValue && !isFirstReturn) { setIsFirstReturn(() => true) if (res?.records?.length) { onChange?.(res.records[0].accountId, res.records[0]) } } }) } }, [queryForm, visible, isFirstReturn]) useEffect(() => { return () => { document.body.style.overflow = 'auto'; } }, []) const handleCancel = () => { document.body.style.overflow = 'auto'; setSelectedRows([]) setVisible(false) } return
{ document.body.style.overflow = 'hidden'; setVisible(true) }} >
{(visible && selectedRows.length > 0) ? <> { setSelectedRows(selectedRows.slice(1)) }} >{selectedRows[0].accountId} {selectedRows?.length > 1 && {selectedRows?.filter((_, index) => index !== 0)?.map((item) => { setSelectedRows(selectedRows?.filter(item1 => item1.accountId !== item.accountId)) }} >{item.accountId})} } > +{selectedRows.length - 1} } : (!visible && value && value?.length > 0) ? <> { onChange?.(value.slice(1)) }} >{value[0]} {value?.length > 1 && {value?.filter((_, index) => index !== 0)?.map((accountId) => { onChange?.(value?.filter(accountId1 => accountId1 !== accountId)) }} >{accountId})} } > +{value.length - 1} } : 请选择媒体账户}
{visible} {((visible && selectedRows.length > 0) || (!visible && value && value?.length > 0)) && allowClear && { e.stopPropagation() if (visible) { setSelectedRows([]) } else { onChange?.(type === 'checkbox' ? [] : undefined, type === 'checkbox' ? [] : undefined) } }}>}
{visible &&
`总共 ${total} 账户`, total: getUserAccountList?.data?.total, showSizeChanger: true, showLessItems: true, defaultCurrent: 1, defaultPageSize: 50,//默认初始的每页条数 onChange: (page, pageSize) => { setQueryForm({ ...queryForm, pageNum: page, pageSize }) } }} loading={getUserAccountList.loading} columns={[ { title: '账号', dataIndex: 'accountId', key: 'accountId', width: 80, align: 'center', render(value) { return {value} } }, { title: '企业', dataIndex: 'corporationName', key: 'corporationName', width: 160, ellipsis: true, render(value) { return {value || '--'} } }, { title: '企业标识', dataIndex: 'corporationLicence', key: 'corporationLicence', width: 150, ellipsis: true, render(value) { return {value || '--'} } }, { title: '业务单元账号', dataIndex: 'adUnitAccountId', key: 'adUnitAccountId', width: 100, align: 'center', render(value) { return {value || '--'} } }, { title: '业务单元号?', dataIndex: 'adUnitAccount', key: 'adUnitAccount', width: 90, align: 'center', render(value) { return {value ? '是' : '否'} } }, { title: '备注', dataIndex: 'remark', key: 'remark', ellipsis: true, render(value) { return {value || '--'} } }, ]} rowSelection={type === 'checkbox' ? { selectedRowKeys: selectedRows.map(item => item.accountId), type, onSelect: (record: { accountId: number }, selected: boolean) => { if (selected) { selectedRows.push({ ...record }) setSelectedRows([...selectedRows]) } else { let newSelectAccData = selectedRows.filter((item: { accountId: number }) => item.accountId !== record.accountId) setSelectedRows([...newSelectAccData]) } }, onSelectAll: (selected: boolean, selectedRowss: { accountId: number }[], changeRows: { accountId: number }[]) => { if (selected) { let newSelectAccData = [...selectedRows] changeRows.forEach((item: { accountId: number }) => { let index = newSelectAccData.findIndex((ite: { accountId: number }) => ite.accountId === item.accountId) if (index === -1) { let data: any = { ...item } newSelectAccData.push(data) } }) setSelectedRows([...newSelectAccData]) } else { let newSelectAccData = selectedRows.filter((item: { accountId: number }) => { let index = changeRows.findIndex((ite: { accountId: number }) => ite.accountId === item.accountId) if (index !== -1) { return false } else { return true } }) setSelectedRows([...newSelectAccData]) } } } : { selectedRowKeys: selectedRows.map(item => item.accountId), type, onChange(selectedRowKeys, selectedRows, info) { setSelectedRows(selectedRows) }, }} />
} {visible &&
} } export default React.memo(SelectAdAccount)