wjx 2 lat temu
rodzic
commit
697cc18573

+ 13 - 10
src/pages/launchSystemNew/account/appointPut.tsx

@@ -1,5 +1,5 @@
 import { useAjax } from "@/Hook/useAjax"
-import { cutPutApi } from "@/services/operating/accountyyb"
+import { addAccountUserApi, cutPutApi } from "@/services/operating/accountyyb"
 import { Form, message, Modal, Select } from "antd"
 import React, { useEffect, useState } from "react"
 
@@ -9,7 +9,7 @@ interface Props {
     onChange?: () => void
     onClose?: () => void
     visible?: boolean,
-    value?: any
+    value?: any[]
 }
 
 /**
@@ -19,16 +19,18 @@ interface Props {
  */
 const AppointPut: React.FC<Props> = (props) => {
     /*******************************/
-    const { onChange, onClose, visible, allOfMember, value } = props
+    const { onChange, onClose, visible, allOfMember, value = [] } = props
     const [userAll, setUserAll] = useState([])
 
     const [form] = Form.useForm();
-    const cutPut = useAjax((params) => cutPutApi(params))
+    const addAccountUser = useAjax((params) => addAccountUserApi(params))
     /*******************************/
 
     useEffect(() => {
-        if (value && Object.keys(value).length > 0) {
-            form.setFieldsValue({ putUserId: value.putUserId })
+        if (value.length === 1) {
+            console.log('value--->', value[0].accountUsers?.map((item: any) => item.putUserId));
+        
+            form.setFieldsValue({ putUserIds: value[0].accountUsers?.map((item: any) => item.putUserId) })
         }
     }, [value])
 
@@ -57,7 +59,7 @@ const AppointPut: React.FC<Props> = (props) => {
 
     const handleOk = () => {
         form.validateFields().then(values => {
-            cutPut.run({ ...values, accountIds: [value.accountId] }).then(res => {
+            addAccountUser.run({ ...values, accountIds: value.map((item: { accountId: number }) => item.accountId) }).then(res => {
                 message.success('指派成功')
                 onChange?.()
             })
@@ -65,11 +67,11 @@ const AppointPut: React.FC<Props> = (props) => {
     }
 
     return <Modal
-        title="指派"
+        title="指派投放助理"
         visible={visible}
         onOk={handleOk}
         onCancel={() => onClose?.()}
-        confirmLoading={cutPut.loading}
+        confirmLoading={addAccountUser.loading}
     >
         <Form
             form={form}
@@ -77,10 +79,11 @@ const AppointPut: React.FC<Props> = (props) => {
             colon={false}
             initialValues={{}}
         >
-            <Form.Item label={<strong>组员</strong>} name='putUserId' rules={[{ required: true, message: '请选择分组' }]}>
+            <Form.Item label={<strong>组员</strong>} name='putUserIds' rules={[{ required: true, message: '请选择分组' }]}>
                 <Select
                     placeholder='请选择组员'
                     showSearch
+                    mode="multiple"
                     filterOption={(input: string, option: any) => {
                         return option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
                     }}

+ 17 - 6
src/pages/launchSystemNew/account/index.tsx

@@ -1,6 +1,6 @@
 
 import HocError from '@/Hoc/HocError'
-import { Col, Modal, Row, Input, message, Space, Tabs, Button } from 'antd'
+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'
@@ -23,6 +23,7 @@ const AdAuthorize: React.FC = () => {
 
     /*************************/
     const { groupListInit } = useModel('useLaunchAdq.useAdAuthorize')
+    const userInfo = useModel('@@initialState', model => model.initialState?.currentUser)
     const [queryForm, setQueryForm] = useState<GetAdAccountParams>({ pageNum: 1, pageSize: 20 })
     const [remarkData, set_remarkData] = useState<{ visible: boolean, remark: string, data: any }>({
         visible: false,
@@ -50,7 +51,8 @@ const AdAuthorize: React.FC = () => {
     } | undefined>(undefined)
     const [selectAccData, setSelectAccData] = useState<any[]>([])
     const [puShow, setPuShow] = useState<boolean>(false)
-    const [puData, setPuData] = useState<any>()
+    const [puData, setPuData] = useState<any[]>([])
+    const [switchType, setSwitchType] = useState<'account' | 'putUser'>('account')
 
     const putRemark = useAjax((adAccountId: any, remark: any) => putAdAccountApi(adAccountId, remark))
     const delAccountToGroup = useAjax((params) => delAccountToGroupApi(params))
@@ -114,7 +116,7 @@ const AdAuthorize: React.FC = () => {
     }
 
     /** 指派投手 */
-    const putUserHandle = (data: any) => {
+    const putUserHandle = (data: any[]) => {
         setPuData(data)
         setPuShow(true)
     }
@@ -150,13 +152,17 @@ const AdAuthorize: React.FC = () => {
                     ajax={getAdAccountList}
                     dataSource={getAdAccountList?.data?.data?.records}
                     loading={getAdAccountList?.loading}
-                    columns={() => columnsMp(edit, del, checkAccount, changeRecord, putUserHandle, queryForm?.groupId, getAdAccountList)}
+                    columns={() => 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={<Space>
+                        <Radio.Group value={switchType} onChange={(e) => { setSwitchType(e.target.value); setSelectAccData([]) }}>
+                            <Radio.Button value="account">批量切号</Radio.Button>
+                            <Radio.Button value="putUser">批量指派投放助理</Radio.Button>
+                        </Radio.Group>
                         <Input.TextArea
                             placeholder="广告账号, 多个以,隔开(id1,id2)"
                             allowClear
@@ -169,10 +175,15 @@ const AdAuthorize: React.FC = () => {
                         />
                         <Button onClick={getList} type='primary' loading={getAdAccountList.loading}>搜索</Button>
                         <AddAccountToGroup onChange={() => getAdAccountList.refresh()} />
-                        {selectAccData?.length > 0 && <Button type="primary" ghost icon={<SwapOutlined />} onClick={() => { checkAccount(selectAccData) }}>批量切号</Button>}
+                        {switchType === 'account' ?
+                            (selectAccData?.length > 0 && <Button type="primary" ghost icon={<SwapOutlined />} onClick={() => { checkAccount(selectAccData) }}>批量切号</Button>) :
+                            (selectAccData?.length > 0 && <Button type="primary" ghost icon={<SwapOutlined />} onClick={() => { putUserHandle(selectAccData) }}>批量指派投放助理</Button>)}
                     </Space>}
                     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 })
@@ -219,7 +230,7 @@ const AdAuthorize: React.FC = () => {
         {/* 切号 */}
         {checkAccShow && <CheckAccount value={data} visible={checkAccShow} onChange={() => { getList(); setCheckAccShow(false); setSelectAccData([]) }} onClose={() => { setCheckAccShow(false) }} />}
         {/* 指派 */}
-        {puShow && <AppointPut value={puData} visible={puShow} onClose={() => { setPuShow(false) }} allOfMember={allOfMember} onChange={() => { setPuShow(false); getAdAccountList.refresh() }} />}
+        {puShow && <AppointPut value={puData} visible={puShow} onClose={() => { setPuShow(false) }} allOfMember={allOfMember} onChange={() => { setPuShow(false); getAdAccountList.refresh(); setSelectAccData([]) }} />}
 
         {remarkData.visible && <Modal
             visible={remarkData.visible}

+ 18 - 15
src/pages/launchSystemNew/account/tableConfig.tsx

@@ -4,7 +4,7 @@ import { Badge, Button, Popconfirm, Space, Tooltip } from "antd"
 import React from "react"
 import DivideIntoGroups from "./divideIntoGroups"
 import './index.less'
-export function columnsMp(edit: (params: any) => void, del: (groupId: number, accountId: number) => void, checkAccount: (value: any[]) => void, changeRecord: (accountId: number, id: number) => void, putUserHandle: (data: any) => void, groupId?: number, getAdAccountList?: any): any {
+export function columnsMp(edit: (params: any) => void, del: (groupId: number, accountId: number) => void, checkAccount: (value: any[]) => void, changeRecord: (accountId: number, id: number) => void, putUserHandle: (data: any) => void, activeKey: string, userId: string | undefined, groupId?: number, getAdAccountList?: any): any {
     return [
         {
             title: 'ID',
@@ -33,25 +33,25 @@ export function columnsMp(edit: (params: any) => void, del: (groupId: number, ac
             }
         },
         {
-            title: '拥有者',
-            dataIndex: 'authorizationUserName',
-            key: 'authorizationUserName',
+            title: '投手',
+            dataIndex: 'putUserInfo',
+            key: 'putUserInfo',
             width: 70,
             align: 'center',
             ellipsis: true,
             render: (a: any, b: any) => {
-                return <span>{a || '-1'}</span>
+                return <span>{a?.nickname || '-1'}</span>
             }
         },
         {
-            title: '投',
-            dataIndex: 'putUserInfo',
-            key: 'putUserInfo',
+            title: '投放助理',
+            dataIndex: 'accountUsers',
+            key: 'accountUsers',
             width: 70,
             align: 'center',
             ellipsis: true,
-            render: (a: any, b: any) => {
-                return <span>{a?.nickname || '-1'}</span>
+            render: (a: any[], b: any) => {
+                return a && a?.length > 0 ? a.map((item: { putUserName: string, putUseId: number }) => item.putUserName).toString() : '-1'
             }
         },
         {
@@ -177,10 +177,13 @@ export function columnsMp(edit: (params: any) => void, del: (groupId: number, ac
                     <Tooltip title="变更记录">
                         <Button size="small" style={{ color: '#4d5aaf' }} onClick={() => changeRecord(b?.accountId, b?.id)} icon={<FileSearchOutlined />}></Button>
                     </Tooltip>
-                    <Tooltip title="指派">
-                        <Button size="small" style={{ color: '#0eb83a' }} onClick={() => putUserHandle(b)} icon={<UserSwitchOutlined />}></Button>
-                    </Tooltip>
-                    {groupId ? <Popconfirm
+                    {activeKey === '1' && <>
+                        {userId === b?.putUserInfo?.userId?.toString() && <Tooltip title="指派投放助理">
+                            <Button size="small" style={{ color: '#0eb83a' }} onClick={() => putUserHandle([b])} icon={<UserSwitchOutlined />}></Button>
+                        </Tooltip>}
+                        {!groupId && <DivideIntoGroups groupIds={b?.groupIds} getAdAccountList={getAdAccountList} accountId={b?.accountId} />}
+                    </>}
+                    {groupId && <Popconfirm
                         title={`是否把${b?.accountId}移出该分组?`}
                         onConfirm={() => { del(groupId, b?.accountId) }}
                         okText="是"
@@ -189,7 +192,7 @@ export function columnsMp(edit: (params: any) => void, del: (groupId: number, ac
                         <Tooltip title="移出分组">
                             <Button size="small" style={{ color: 'red' }}><UploadOutlined /></Button>
                         </Tooltip>
-                    </Popconfirm> : <DivideIntoGroups groupIds={b?.groupIds} getAdAccountList={getAdAccountList} accountId={b?.accountId}/>}
+                    </Popconfirm>}
                 </Space>
             }
         },

+ 13 - 1
src/services/operating/accountyyb.ts

@@ -208,9 +208,21 @@ export async function getResourceOfUserApi({ userId, resourceType }: { userId: n
 }
 
 
-// 切换投手
+// 指派
 export async function cutPutApi({ accountIds, putUserId }: { accountIds: number, putUserId: number }) {
   return request(`${api}/adq/adAccount/configPutUser/${accountIds}/${putUserId}`, {
     method: 'PUT'
   })
+}
+
+/**
+ * 指派投放助理
+ * @param data 
+ * @returns 
+ */
+export async function addAccountUserApi(data: { accountIds: number[], putUserIds: number }) {
+  return request(`${api}/adq/adAccount/modifyAccountUser`, {
+    method: 'POST',
+    data
+  })
 }