| | |
| | | const actionRef = useRef<ActionType>(); |
| | | const lastQueryRef = useRef<TenantEmployeeListRequest>({}); |
| | | const { message, modal } = AntdApp.useApp(); |
| | | const [orgOptions, setOrgOptions] = useState<SelectOption[]>([]); |
| | | const [orgTree, setOrgTree] = useState<OrgTreeNode[]>([]); |
| | | const [roleOptions, setRoleOptions] = useState<SelectOption[]>([]); |
| | | const [formOpen, setFormOpen] = useState(false); |
| | | const [formMode, setFormMode] = useState<UserFormMode>('create'); |
| | |
| | | const [orgs, roles] = await Promise.all([getOrgTree(), getRoleOptions()]); |
| | | if (!active) return; |
| | | |
| | | setOrgOptions(flattenOrgOptions(orgs)); |
| | | setOrgTree(orgs); |
| | | setRoleOptions(roles.map((role) => ({ label: role.roleName, value: role.id }))); |
| | | } catch { |
| | | // 错误已由 request 统一提示 |
| | |
| | | active = false; |
| | | }; |
| | | }, []); |
| | | |
| | | const orgOptions = useMemo(() => flattenOrgOptions(orgTree), [orgTree]); |
| | | |
| | | const orgNameMap = useMemo( |
| | | () => new Map(orgOptions.map((option) => [option.value, option.label])), |
| | |
| | | rowKey="id" |
| | | actionRef={actionRef} |
| | | columns={columns} |
| | | cardProps={{ className: 'table-card' }} |
| | | search={{ labelWidth: 'auto', defaultCollapsed: false }} |
| | | scroll={{ x: 1290 }} |
| | | options={false} |
| | |
| | | open={formOpen} |
| | | mode={formMode} |
| | | record={activeEmployee} |
| | | orgOptions={orgOptions} |
| | | orgTree={orgTree} |
| | | roleOptions={roleOptions} |
| | | onClose={closeForm} |
| | | onSuccess={handleFormSuccess} |