xjj il y a 2 ans
Parent
commit
bc669b460d

+ 3 - 1
src/components/UserDropdown/index.tsx

@@ -4,6 +4,7 @@ import { Link } from 'umi';
 import { Avatar, Dropdown, Menu, MenuProps } from 'antd';
 import { LogoutOutlined, UserOutlined } from '@ant-design/icons';
 import styles from './index.less';
+import { useModel } from '@umijs/max';
 
 const items: MenuProps['items'] = [
   {
@@ -19,11 +20,12 @@ const items: MenuProps['items'] = [
 ];
 
 export default function UserDropdown(props: any) {
+  const { user } = useModel('userInfo');
   return (
     <Dropdown menu={{ items }}>
       <a className={styles.action} onClick={(e) => e.preventDefault()}>
         <Avatar icon={<UserOutlined />} />
-        <span className={styles.name}>admin</span>
+        <span className={styles.name}>{user?.CName}</span>
       </a>
     </Dropdown>
   );

+ 48 - 0
src/models/userInfo.ts

@@ -0,0 +1,48 @@
+// 全局共享数据示例
+import { useRequest } from '@umijs/max';
+import { queryCurrentV2, queryUserRole } from '@/services/user';
+
+const useUser = () => {
+  const { data: user, loading } = useRequest(queryCurrentV2, {
+    cacheKey: 'queryCurrent',
+  });
+  // const { data: roleData, loading } = useRequest(() => queryUserRole(user.ID), {
+  //   cacheKey: 'queryUserRole',
+  //   ready: !!user?.ID,
+  // });
+  // if (!roleData) return { user: null, loading: loading };
+  if (!user) return { user: null, loading: loading };
+  let permission = {};
+  user.Permissions?.forEach((item: any) => {
+    permission = {
+      ...permission,
+      ...item.Menus,
+    };
+  });
+  // let roleList = getRoleList(roleData.Dep);
+
+  return {
+    user: {
+      ...user,
+      Permission: permission,
+      // roleList: roleList,
+    },
+    loading,
+  };
+};
+
+const getRoleList = (data: any) => {
+  let roleList: any = [];
+  (data || []).forEach((dep: any) => {
+    (dep.Role || []).forEach((role: any) => {
+      roleList.push(role);
+    });
+
+    if (dep.children) {
+      let res = getRoleList(dep.children);
+      roleList = res.concat(res);
+    }
+  });
+  return roleList;
+};
+export default useUser;

+ 6 - 5
src/pages/Flow/Audit.js

@@ -4,6 +4,8 @@ import { connect } from 'umi';
 import Flow from '@/components/Flow';
 import { PageContainer } from '@ant-design/pro-components';
 import AuditForm from '@/components/AuditForm';
+import { useModel } from '@umijs/max';
+
 const { TabPane } = Tabs;
 
 const FLOWID = 2;
@@ -17,12 +19,12 @@ function Audit(props) {
     formData,
     flowDetail,
     simpleFlowDteail,
-    currentUser,
     loading,
   } = props;
-  const [tabActiveKey, setTabActiveKey] = useState("1");
+  const [tabActiveKey, setTabActiveKey] = useState('1');
   const ref = useRef();
-  const permission = currentUser.Permission;
+  const {user} = useModel('userInfo');
+  const permission = user?.Permission || {};
 
   const curItem = useMemo(() => {
     let item = localStorage.getItem('currentAudit');
@@ -35,7 +37,7 @@ function Audit(props) {
       return 1;
     }
     // 判断是否为创建者
-    if (currentUser.IsSuper) {
+    if (user.IsSuper) {
       return 1;
     }
 
@@ -140,6 +142,5 @@ export default connect(({ flow, loading, user, xflow }) => ({
   formItems: xflow.formData,
   flowDetail: flow.flowDetail,
   formData: flow.formData,
-  currentUser: user.currentUser,
   simpleFlowDteail: flow.simpleFlowDteail,
 }))(Audit);

+ 6 - 6
src/services/user.js

@@ -15,16 +15,16 @@ export async function Login(data) {
     data,
   });
 }
+export async function queryCurrentV2() {
+  return request('/api/v2/user/current-user', { method: 'GET' });
+}
+export async function queryUserRole(userId) {
+  return request('/api/v2/user/detail/' + userId, { method: 'GET' });
+}
 // export async function queryCurrent() {
 //   return request('/api/v1/user/current-user', { method: 'GET' });
 // }
 
-// export async function queryCurrentV2() {
-//   return request('/api/v2/user/current-user', { method: 'GET' });
-// }
-// export async function queryUserRole(userId) {
-//   return request('/api/v2/user/detail/' + userId, { method: 'GET' });
-// }
 
 // export async function queryUnreadNotification() {
 //   return request('/notification/unread/', { method: 'GET' });