import HocError from '@/Hoc/HocError' import { Col, Modal, Row, Input, message, Space, Tabs, Button, Radio, Select } from 'antd' import React, { useCallback, useEffect, useState } from 'react' import { columnsMp } from './tableConfig' import { useAjax } from '@/Hook/useAjax' import { getAdAccountListApi, GetAdAccountParams, putAdAccountApi } from '@/services/launchAdq/adAuthorize' import style from './index.less' import TableData from '../components/TableData' import GroupLeft from './groupLeft' import QQAuth from './qqAuto' import { MenuFoldOutlined, MenuUnfoldOutlined, PlusOutlined, SwapOutlined } from '@ant-design/icons' import TeamMembers from '../components/teamMembers' import { getAdAccountAllOfMember, getErpUserAll, getServiceProviderAll, putConfigServiceProvider } from '@/services/launchAdq/adq' import AddAccountToGroup from './addAccountToGroup' import { delAccountToGroupApi } from '@/services/launchAdq/subgroup' import { useModel } from 'umi' import ChangeRecord from './changeRecord' import CheckAccount from './checkAccount' import AppointPut from './appointPut' /** 投放管理 */ const AdAuthorize: React.FC = () => { let [visible, setVisible] = useState(false) /*************************/ const { groupListInit } = useModel('useLaunchAdq.useAdAuthorize') const userInfo = useModel('@@initialState', model => model.initialState?.currentUser) const [queryForm, setQueryForm] = useState({ pageNum: 1, pageSize: 20 }) const [remarkData, set_remarkData] = useState<{ visible: boolean, remark: string, data: any }>({ visible: false, remark: '', data: null }) const [activeKey, setActiveKey] = useState('1') const [showLeft, setShowLeft] = useState(false) const [crShow, setCrShow] = useState(false) // 变更记录控制 const [crData, setCrData] = useState<{ name: number, id: number } | null>(null) const [checkAccShow, setCheckAccShow] = useState(false) const [openServer, setOpenServer] = useState([])//配置服务商数据 const [serverName, setServerName] = useState(null)//选择的服务商名称 const [data, setData] = useState<{ putResourceId?: number | undefined, beginTime?: string | undefined, gdtAccountId?: number, accountIds?: string, accountId?: string, gdtAccountIds?: string, advertiserId?: string, accountName?: string, account?: string, accountPassword?: string, quickAppAccountIds?: string resourceNames?: string } | undefined>(undefined) const [selectAccData, setSelectAccData] = useState([]) const [puShow, setPuShow] = useState(false) const [puData, setPuData] = useState([]) const [switchType, setSwitchType] = useState<'account' | 'putUser' | 'setServer'>('account') const putRemark = useAjax((adAccountId: any, remark: any) => putAdAccountApi(adAccountId, remark)) const delAccountToGroup = useAjax((params) => delAccountToGroupApi(params)) const getAdAccountList = useAjax((params) => getAdAccountListApi(params), { formatResult: true }) const allOfMember = useAjax(() => getAdAccountAllOfMember(), { formatResult: true }) const erpUserALL = useAjax(() => getErpUserAll(), { formatResult: true }) const api_getServiceProviderAll = useAjax(() => getServiceProviderAll(), { formatResult: true }) const api_putConfigServiceProvider = useAjax((params) => putConfigServiceProvider(params), { formatResult: true }) /*************************/ useEffect(() => { groupListInit() !erpUserALL.data && erpUserALL.run() !api_getServiceProviderAll.data && api_getServiceProviderAll.run() }, []) useEffect(() => { getList() }, [queryForm]) /** 获取账号列表 */ const getList = () => { let params = JSON.parse(JSON.stringify(queryForm)) if (params.accountIds) { params.accountIds = params.accountIds.split(/[\,\,]/) } else { delete params?.accountIds } getAdAccountList.run(params) } const remark = () => { if (remarkData.remark && remarkData.data) { putRemark.run(remarkData.data.accountId, remarkData.remark).then(res => { set_remarkData({ ...remarkData, visible: false, remark: '', data: null }) getList() }) } else { message.error('请输入备注!') } } const edit = useCallback((data) => { set_remarkData({ ...remarkData, visible: true, data, remark: data.remark }) }, [remarkData]) /** 移除分组里账号 */ const del = (groupId: number, accountId: number) => { delAccountToGroup.run({ currGroupId: groupId, accountIds: [accountId] }).then(res => { message.success('移出成功') getAdAccountList.refresh() }) } /** 切号 */ const checkAccount = (value: any[]) => { let ids = value?.map((item: any) => item.id) setData({ resourceNames: value?.map((item: any) => item.putResourceName).toString(), accountIds: value?.map((item: any) => item.accountId).toString(), gdtAccountIds: ids.toString(), putResourceId: undefined, beginTime: undefined }) setCheckAccShow(true); } /** 变更记录 */ const changeRecord = (name: number, id: number) => { setCrData({ name, id }) setCrShow(true) } /** 指派投手 */ const putUserHandle = (data: any[]) => { setPuData(data) setPuShow(true) } // 批量配置服务商 const setServiceProviderName = (accountIds: any) => { api_putConfigServiceProvider.run({ accountIds, serviceProviderName: serverName.label }).then(res => { if (res.data) { message.success("配置成功!") setOpenServer([]); setServerName(null) getAdAccountList.refresh() } else { message.error("配置失败!") } }) } // return
setVisible(true)}>广告账号授权} onChange={(activeKey) => { if (activeKey !== 'contract') { let newQueryForm = JSON.parse(JSON.stringify(queryForm)) delete newQueryForm?.groupId delete newQueryForm?.putUserId setQueryForm(newQueryForm) setActiveKey(activeKey) } else { setShowLeft(!showLeft) } }} > : } key='contract' />
{!showLeft && activeKey === '1' && setQueryForm({ ...queryForm, groupId, pageNum: 1 })} value={queryForm?.groupId} />} {!showLeft && activeKey === '2' && setQueryForm({ ...queryForm, putUserId, pageNum: 1 })} value={queryForm?.putUserId} />}
columnsMp(edit, setOpenServer, del, checkAccount, changeRecord, putUserHandle, activeKey, userInfo?.userId?.toString(), queryForm?.groupId, getAdAccountList)} total={getAdAccountList?.data?.data?.total} page={getAdAccountList?.data?.data?.current} pageSize={getAdAccountList?.data?.data?.size} size="small" scroll={{ y: 600 }} leftChild={ { setSwitchType(e.target.value); setSelectAccData([]) }}> 批量切号 批量指派投放助理 批量配置服务商 { setQueryForm({ ...queryForm, accountIds: e.target.value.replaceAll(/\s/ig, '') }) }} /> getAdAccountList.refresh()} /> {switchType === 'account' ? (selectAccData?.length > 0 && ) : switchType === 'putUser' ? (selectAccData?.length > 0 && ) : selectAccData?.length > 0 && } } rowSelection={{ selectedRowKeys: selectAccData?.map((item: any) => item.id?.toString()), getCheckboxProps: (record: any) => ({ disabled: switchType === 'putUser' ? activeKey === '2' || userInfo?.userId !== record?.putUserInfo?.userId : false }), onSelect: (record: { id: number, mpName: string }, selected: boolean) => { if (selected) { selectAccData.push({ ...record }) setSelectAccData([...selectAccData]) } else { let newSelectAccData = selectAccData.filter((item: { id: number }) => item.id !== record.id) setSelectAccData([...newSelectAccData]) } }, onSelectAll: (selected: boolean, selectedRows: { id: number }[], changeRows: { id: number }[]) => { if (selected) { let newSelectAccData = [...selectAccData] changeRows.forEach((item: { id: number }) => { let index = newSelectAccData.findIndex((ite: { id: number }) => ite.id === item.id) if (index === -1) { newSelectAccData.push({ ...item }) } }) setSelectAccData([...newSelectAccData]) } else { let newSelectAccData = selectAccData.filter((item: { id: number }) => { let index = changeRows.findIndex((ite: { id: number }) => ite.id === item.id) if (index !== -1) { return false } else { return true } }) setSelectAccData([...newSelectAccData]) } } }} onChange={(props: any) => { let { pagination } = props let { current, pageSize } = pagination setQueryForm({ ...queryForm, pageNum: current, pageSize }) }} />
{/* 批量设置服务商 */} {openServer.length > 0 && setServiceProviderName(openServer?.map(item => item.accountId))} onCancel={() => { setOpenServer([]); setServerName(null) }} visible={openServer.length > 0} confirmLoading={api_putConfigServiceProvider.loading} > 广告主: {openServer.map((item, index) => { return index === openServer.length - 1 ? item.accountId : item.accountId + ',' })} 服务商: