Kaynağa Gözat

增加用户权限

xjj 2 yıl önce
ebeveyn
işleme
4c42bc2c97

+ 2 - 1
.umirc.ts

@@ -39,11 +39,12 @@ export default defineConfig({
       name: '首页',
       path: '/home',
       component: './Home/index',
-      menuRender: false
+      menuRender: false,
     },
     {
       name: '审批流管理',
       path: '/flow',
+      access: 'isAdmin',
       hideChildrenInMenu: true,
       routes: [
         // {

+ 2 - 7
src/access.ts

@@ -1,11 +1,6 @@
-export default (initialState: API.UserInfo) => {
-  // 在这里按照初始化数据定义项目中的权限,统一管理
-  // 参考文档 https://umijs.org/docs/max/access
-  const canSeeAdmin = !!(
-    initialState && initialState.name !== 'dontHaveAccess'
-  );
+export default (initialState: any) => {
   return {
-    canSeeAdmin,
+    isAdmin: initialState?.user?.IsSuper,
     appMenu: true,
     adminMenu: false,
   };

+ 18 - 2
src/app.tsx

@@ -5,11 +5,27 @@ import UserDropdown from '@/components/UserDropdown';
 import { getToken } from '@/utils/utils';
 import { history } from 'umi';
 import logo from '@/assets/logo.png';
+import { useModel } from '@umijs/max';
+import { queryCurrentV2 } from './services/user';
 
 // 全局初始化数据配置,用于 Layout 用户信息和权限初始化
 // 更多信息见文档:https://umijs.org/docs/api/runtime-config#getinitialstate
-export async function getInitialState(): Promise<{ name: string }> {
-  return { name: 'admin' };
+export async function getInitialState(): Promise<any> {
+  const { data: user } = await queryCurrentV2();
+
+  let permission = {};
+  user.Permissions?.forEach((item: any) => {
+    permission = {
+      ...permission,
+      ...item.Menus,
+    };
+  });
+  return {
+    user: {
+      ...user,
+      Permission: permission,
+    },
+  };
 }
 
 export const layout: RunTimeLayoutConfig = (initialState) => {

+ 1 - 1
src/components/PageContent/index.js

@@ -22,7 +22,7 @@ export default (props) => {
           margin: '20px 0',
         }}
       >
-        Copyright © 金科环境股份有限公司
+        Copyright © 2021-2031 by 金科环境股份有限公司
       </div>
     </div>
   );

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

@@ -15,7 +15,7 @@ const items: MenuProps['items'] = [
 ];
 
 export default function UserDropdown(props: any) {
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   return (
     <Dropdown placement="top" menu={{ items }}>
       <a className={styles.action} onClick={(e) => e.preventDefault()}>

+ 1 - 1
src/pages/ContractManager/component/Modal.jsx

@@ -50,7 +50,7 @@ export const Status = {
 
 const ContractModal = (props) => {
   const [form] = Form.useForm();
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   const { userList, run: userListRun } = useModel('userList');
   const { depList, run: depListRun } = useModel('depList');
   const FORMAT = 'YYYY-MM-DD';

+ 1 - 1
src/pages/ContractManager/index.jsx

@@ -29,7 +29,7 @@ const ConteactManager = (props) => {
     current: 1,
     name: '',
   });
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   const [visible, setVisible] = useState(false);
   const [detail, setDetail] = useState({});
   const [data, setData] = useState([]);

+ 1 - 1
src/pages/FileManagement/index.js

@@ -60,7 +60,7 @@ const { RangePicker } = DatePicker;
 function FileManagement(props) {
   const [form] = Form.useForm();
   const [modal, contextHolder] = Modal.useModal();
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   const { userList, run: userListRun } = useModel('userList');
   const [tableData, setTableData] = useState([]);
   const [visible, setVisible] = useState(false);

+ 1 - 1
src/pages/Flow/Audit.js

@@ -17,7 +17,7 @@ function Audit(props) {
   } = props;
   const [tabActiveKey, setTabActiveKey] = useState('1');
   const ref = useRef();
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   const permission = user?.Permission || {};
 
   const curItem = useMemo(() => {

+ 1 - 1
src/pages/Flow/OaAuditDetail.js

@@ -23,7 +23,7 @@ function OaAuditDetail(props) {
     audit_status,
     AuditorInfo,
   } = data || {};
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   const getDescription = (node) => {
     let str = node?.AuditRoleInfo
       ? `审批人:${node?.AuditRoleInfo.Name || '-'}`

+ 4 - 8
src/pages/Login/index.js

@@ -9,12 +9,8 @@ import { storeToken } from '@/utils/utils';
 const { Option } = Select;
 
 function Login(props) {
-  const {
-    submitting,
-    params,
-    dispatch,
-  } = props;
-  const { run } = useModel('userInfo');
+  const { submitting, params, dispatch } = props;
+  const { refresh } = useModel('@@initialState');
   const [depList, setDepList] = useState([]);
   const [hasName, setHasName] = useState(false);
   const formRef = useRef();
@@ -49,8 +45,8 @@ function Login(props) {
       },
       callback: (token) => {
         storeToken(token);
-        run();
-        navigate("/home");
+        refresh();
+        navigate('/home');
       },
     });
   };

+ 1 - 1
src/pages/ManufacturerMng/ManufacturerList.js

@@ -18,7 +18,7 @@ function ManufacturerList(props) {
     projectId = 1,
     data,
   } = props;
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   const [visible, setVisible] = useState(false);
   const [curItem, setCurItem] = useState(null);
   const [formDisabled, setFormDisabled] = useState(false);

+ 1 - 1
src/pages/Profile/apply.js

@@ -30,7 +30,7 @@ const TYPE = {
   OA: 2,
 };
 function Apply(props) {
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   const [tabActive, setTabActive] = useState('1');
   const [detail, setDetail] = useState({});
   const [conVisible, setConVisible] = useState(false);

+ 1 - 1
src/pages/Profile/approve.js

@@ -34,7 +34,7 @@ const TYPE = {
   OA: 2,
 };
 function Approve(props) {
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   const [tabActive, setTabActive] = useState('1');
   const [detail, setDetail] = useState({});
   const [conVisible, setConVisible] = useState(false);

+ 1 - 1
src/pages/Profile/approved.js

@@ -25,7 +25,7 @@ const TYPE = {
   OA: 2,
 };
 function Approved(props) {
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   // const [tabActive, setTabActive] = useState('1');
   // const [detail, setDetail] = useState({});
   const [conVisible, setConVisible] = useState(false);

+ 1 - 1
src/pages/Profile/index.js

@@ -28,7 +28,7 @@ import PageContent from '@/components/PageContent';
 
 function profile(props) {
   const { submitting, params, dispatch } = props;
-  const { user } = useModel('userInfo');
+  const { initialState: { user }  } = useModel('@@initialState');
   const [tabActive, setTabActive] = useState('1');
   const approveFormRef = useRef();
   const applyFormRef = useRef();