import React, { useState, useEffect } from 'react' import { PlusOutlined, DownOutlined } from '@ant-design/icons' import { Button, message, Popconfirm, Popover, Input } from 'antd' import { useRequest } from 'umi' import { createRoleWithMenuId, fetchRoleListByMenuId, deleteRole, updateStaff } from '@/services/user/api' import { ModalForm, ProFormText } from '@ant-design/pro-form' type RoleMenuProps = { menuId: string onSelect?: (id: string) => void itemCount?: number } const RoleMenu: React.FC = ({ menuId, onSelect, itemCount }) => { const [state, setState] = useState({ value: '' }) const [activeId, setActiveId] = useState('') const [menuRoles, setMenuRoles] = useState([]) const { run: tryFetchMenuRoles } = useRequest((id: string) => fetchRoleListByMenuId(id), { manual: true, onSuccess: result => { setMenuRoles(result) } }) const { run: tryDeleteRole } = useRequest( (id: string) => { if (activeId === id) { setActiveId('') } return deleteRole({ id }) }, { manual: true, onSuccess: () => { tryFetchMenuRoles(menuId) } } ) const { run: tryUpdateStaff } = useRequest( (id: string, name: string) => { if (activeId === id) { setActiveId('') } return updateStaff({ id, name }) }, { manual: true, onSuccess: () => { message.success('修改成功') tryFetchMenuRoles(menuId) } } ) const onChangeName = value => { setState({ ...state, name: value }) } const { run: tryAddRole } = useRequest( (params: API.CreateRoleParams) => createRoleWithMenuId(params), { manual: true, onSuccess: () => { tryFetchMenuRoles(menuId) } } ) useEffect(() => { tryFetchMenuRoles(menuId) }, []) const handleItemClick = (id: string) => { setActiveId(id) if (onSelect) { onSelect(id) } } return (
角色列表 title="添加新的角色" width="500px" trigger={ } onFinish={async values => { await tryAddRole(values) message.success('添加成功') return true }} initialValues={{ backstageMenuId: menuId }}>
    {menuRoles.map(item => (
  • handleItemClick(item.id)}> {item.name}
      onChangeName(e.currentTarget.value)} /> } okText="确认" cancelText="取消" onConfirm={() => tryUpdateStaff(item.id, state.name)} icon="">
    • 编辑
    • { if (itemCount && itemCount !== 0) { return message.warning('请先移除已经关联的员工') } return tryDeleteRole(item.id) }}>
    • 删除
} trigger="click"> ))}
) } export default RoleMenu