PermTab.tsx 1015 B

12345678910111213141516171819202122232425262728293031
  1. import { PermTree } from '@/pages/Admin/_shared/PermTree';
  2. import { fetchPermList } from '@/services/perm';
  3. import { Spin, Typography } from 'antd';
  4. import { useEffect, useState } from 'react';
  5. interface PermTabProps {
  6. productCode: string;
  7. }
  8. export const PermTab = ({ productCode }: PermTabProps) => {
  9. const [loading, setLoading] = useState(false);
  10. const [perms, setPerms] = useState<API.PermItem[]>([]);
  11. useEffect(() => {
  12. setLoading(true);
  13. fetchPermList({ productCode, pageSize: 9999 })
  14. .then((res) => setPerms(res.data ?? []))
  15. .finally(() => setLoading(false));
  16. }, [productCode]);
  17. return (
  18. <Spin spinning={loading}>
  19. <Typography.Text type="secondary" className="block mb-3">
  20. 共 {perms.length} 条权限(由产品服务端同步,只读)
  21. </Typography.Text>
  22. <div className="bg-(--ant-color-fill-quaternary) rounded p-4">
  23. <PermTree mode="view" allPerms={perms} checkedPermIds={perms.map((p) => p.id)} />
  24. </div>
  25. </Spin>
  26. );
  27. };