import HocError from '@/Hoc/HocError' import { Col, Modal, Row, Input, message, Space, Tabs, Button, Radio } 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 { MenuFoldOutlined, MenuUnfoldOutlined, SwapOutlined } from '@ant-design/icons' import TeamMembers from '../components/teamMembers' import { getAdAccountAllOfMember } 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 = () => { /*************************/ 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 [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'>('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 }) /*************************/ useEffect(() => { groupListInit() }, []) 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.id, 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) } return
{ 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, 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 }) }} /> getAdAccountList.refresh()} /> {switchType === 'account' ? (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 }) }} />
{/* 变更记录 */} {crShow && { setCrShow(false); setCrData(null) }} />} {/* 切号 */} {checkAccShow && { getList(); setCheckAccShow(false); setSelectAccData([]) }} onClose={() => { setCheckAccShow(false) }} />} {/* 指派 */} {puShow && { setPuShow(false) }} allOfMember={allOfMember} onChange={() => { setPuShow(false); getAdAccountList.refresh(); setSelectAccData([]) }} />} {remarkData.visible && { set_remarkData({ ...remarkData, visible: false, data: null }) }} onOk={remark} confirmLoading={putRemark.loading} > 广告主ID:{remarkData?.data.accountId} 类型:{remarkData?.data.sourceType === 0 ? '微信' : 'QQ'} 公众号信息:{remarkData?.data.wechatAccountName || '无'} 企业名称:{remarkData?.data.corporationName || '无'} 服务商ID列表:{remarkData?.data.agencyIdList ? remarkData.data.agencyIdList?.join() : '无'} 行业ID:{remarkData?.data.systemIndustryId || '无'} 授权状态:{remarkData?.data.authStatus || '无'} 日限额(分):{remarkData?.data.dailyBudget || '无'} 授权时间:{remarkData?.data.createTime || '无'} 备注: { let value = e.target.value set_remarkData({ ...remarkData, remark: value }) }} /> }
} export default HocError(AdAuthorize)