import type { ActionType } from '@ant-design/pro-table'; import { Button, Drawer, Popconfirm, message } from 'antd'; import React, { cloneElement, isValidElement, useImperativeHandle, useRef, useState } from 'react'; import { FormattedMessage, request } from 'umi'; import CustomTable from '../CustomTable'; import UserSelect from '../UserSelect'; import UserSelectModal from '../UserSelectModal'; import { formatUserRender } from '../utils'; import PermissionManage from './PermissionManage'; const ManageAdmin = React.forwardRef( ( { children, appId, }: { appId: number; children?: React.ReactElement<{ onClick: () => void }>; }, ref, ) => { const [open, setOpen] = useState(false); const [manualOpen, setManualOpen] = useState(false); const [userId, setUserId] = useState(); const actionRef = useRef(); const listFetch = async function (params: { pageSize?: number; current?: number; userId?: number; appId?: number; }) { const { data } = await request('/goapi/app/managerUser/list', { method: 'POST', data: params, headers: { 'Content-Type': 'application/json', }, }); return { data: data?.filter((item) => (params?.userId ? item.id === params?.userId : true)), total: data?.length, success: true, }; }; const onClose = () => { setOpen(false); }; const triggerRender = () => { if (!isValidElement(children)) { return; } return cloneElement(children, { onClick: () => { setOpen(true); }, }); }; const columns = [ { title: ( ), dataIndex: 'userId', colSize: 2, render: (id, record) => { return formatUserRender({ id: record.id, name: record.nameZh, account: record.nameEn, state: record.state, }); }, renderFormItem: () => , }, { title: , dataIndex: 'option', valueType: 'option', width: 140, render: (text, record) => [ } onConfirm={async () => { await request('/goapi/app/managerUser/delete', { method: 'POST', data: { userId: record.id, appId, }, }); message.success( , ); actionRef?.current?.reload(); }} > , actionRef?.current?.reload()} > , ], }, ]; const toolbar = { actions: [ , title: ( ), }} key="create" onChange={(val) => { setUserId(val); setManualOpen(true); }} > , ], }; useImperativeHandle(ref, () => ({ toggleDrawer: (value: boolean) => setOpen(value), })); return ( <> {triggerRender()} actionRef?.current?.reload()} /> } onClose={onClose} open={open} destroyOnClose > ); }, ); export default ManageAdmin;