import { useAjax } from "@/Hook/useAjax" import { addGroupApi, delGroupApi, editGroupApi, getGroupListApi } from "@/services/launchAdq/subgroup" import { DeleteOutlined, FormOutlined, PlusOutlined } from "@ant-design/icons" import { Button, Input, message, Popconfirm, Space, Spin } from "antd" import React, { useEffect, useRef, useState } from "react" import { useModel } from "umi" import './index.less' /** * 分组管理Left 菜单 */ interface Props { onChange?: (groupId?: number) => void value?: number } const GroupLeft: React.FC = (props) => { /*************************/ const { onChange, value } = props const [isNewGrouping, setIsNewGrouping] = useState(false); // 是否新增分组 const inputRef = useRef(null); const [groupData, setGroupData] = useState<{ groupName: string, remark?: string, groupId?: number }>({ groupName: '' }) // 分组添加 const [selectAccData, setSelectAccData] = useState<{ id: number, mpName: string }[]>([]) // 选中 const [groupId, setGroupId] = useState(value || 0) const { getGroupList } = useModel('useLaunchAdq.useAdAuthorize') const addGroup = useAjax((params) => addGroupApi(params)) const editGroup = useAjax((params) => editGroupApi(params)) const delGroup = useAjax((params) => delGroupApi(params)) /*************************/ useEffect(() => { if (value) { setGroupId(value || 0) } }, [value]) /** 点击新增处理聚焦 */ useEffect(() => { if (isNewGrouping && inputRef?.current) { inputRef.current!.focus({ cursor: 'end', }); } }, [inputRef, isNewGrouping]) /** 新增修改分组 */ const addEditHandle = () => { if (groupData?.groupName) { if (groupData?.groupId) { editGroup.run(groupData).then((res: any) => { message.success('修改成功') setGroupData({ groupName: '' }) setIsNewGrouping(false) getGroupList.refresh() }) } else { addGroup.run(groupData).then((res: any) => { message.success('添加成功') setGroupData({ groupName: '' }) setIsNewGrouping(false) getGroupList.refresh() }) } } else { message.error('请填写分组名称') } } /** 删除分组 */ const delGroupHandle = (id: number) => { delGroup.run({ groupId: id }).then(res => { message.success('删除成功') getGroupList.refresh() if (groupId === id) { setGroupId(0) onChange?.(undefined) } }) } return
全部分组
{isNewGrouping &&
组名
{ setGroupData({ ...groupData, groupName: e.target.value }) }} value={groupData?.groupName} />
}
{ setGroupId(0); onChange?.(undefined); setSelectAccData([]) }}>
全部
{getGroupList && Array.isArray(getGroupList?.data) && getGroupList?.data?.map((item: { groupName: string, groupId: number }, index: number) =>
{groupData?.groupId && groupData?.groupId === item?.groupId ?
组名
{ setGroupData({ ...groupData, groupName: e.target.value }) }} value={groupData?.groupName} />
:
{ setGroupId(item.groupId); onChange?.(item.groupId); setSelectAccData([]) }} key={item.groupId || index}>
{item.groupName}
{ e.stopPropagation(); setGroupData({ ...item }); setIsNewGrouping(false) }} /> { delGroupHandle(item.groupId) }} okText="确定" cancelText="取消" >
}
)}
} export default React.memo(GroupLeft)