Bladeren bron

Merge branch 'master' of http://192.168.1.41:3000/outaozhen/cldV2react

outaozhen 5 jaren geleden
bovenliggende
commit
9d0a3f37c7

+ 1 - 1
src/basic/consts.js

@@ -4,7 +4,7 @@ export default {
   NAME: '', // 应用名称
   TOKEN_HEADER: 'Authorization', // token的键值
   TOKEN_API: '/api/login/token', // 获取token令牌
-  LOGIN_PATH: '/login', //
+  LOGIN_PATH: '/user/login', //
   TOKEN_INVALID_CODE: [2, 3], // 接口返回码如果是2, 3 则表明token过期或无效 需要自动刷新token
   TOKEN_WHITE_LIST: ['/api/login'], // 不需要设置token的白名单
   RET_CODE: { SUCCESS: 0, FAIL: 1, TOKEN_UNDEFINED: 19, TOKEN_EXPIRED: 2 } // 返回RET状态码解析

+ 100 - 114
src/basic/utils/common.js

@@ -1,114 +1,100 @@
-import { message } from "antd"
-import { history  } from "umi"
-import consts from '../consts'
-
-const USER_INFO = 'USER_INFO' // 用户个人信息
-const USER_ACCOUNT = 'USER_ACCOUNT' // 用户账号
-const TOKEN_ID = 'TOKEN_ID' // TOKEN令牌ID
-
-// 本地存储封装
-const storage = {
-  get(key) {
-    const val = localStorage.getItem(key)
-    if (val) {
-      return JSON.parse(val)
-    }
-    return null
-  },
-  set(key, value) {
-    localStorage.setItem(key, JSON.stringify(value))
-  },
-  del(key) {
-    localStorage.removeItem(key)
-  },
-  clear() {
-    localStorage.clear()
-  }
-}
-
-/**
- * 保存用户信息到本地存储中
- * @param {*} user 用户信息
- */
-export const saveUserInfo = user => {
-  storage.set(USER_INFO, user)
-}
-
-/**
- * 获取用户信息
- */
-export const getUserInfo = () => {
-  const user = storage.get(USER_INFO)
-  return user
-}
-
-/**
- * 移除用户信息
- */
-export const removeUserInfo = () => {
-  return storage.del(USER_INFO)
-}
-
-/**
- * 保存用户账号信息
- * @param {*} account 账号
- */
-export const saveUserAccount = account => {
-  storage.set(USER_ACCOUNT, account)
-}
-
-/**
- * 获取用户账号信息
- */
-export const getUserAccount = () => {
-  return storage.get(USER_ACCOUNT)
-}
-
-/**
- * 移除用户账号信息
- */
-export const removeUserAccount = () => {
-  return storage.del(USER_ACCOUNT)
-}
-/**
- * 保存令牌ID到本地存储中
- * @param {*} id token令牌id
- */
-export const saveTokenId = id => {
-  return storage.set(TOKEN_ID, id)
-}
-
-/**
- * 移除令牌ID
- */
-export const removeTokenId = () => {
-  return storage.del(TOKEN_ID)
-}
-
-/**
- * 从本地存储中获取令牌ID
- */
-export const getTokenid = () => {
-  return storage.get(TOKEN_ID) || ''
-}
-
-/**
- * 重定向到登录页
- */
-export const redirectToLogin = url => {
-  // 重定向登录页面
-  history.replace(url || consts.LOGIN_PATH)
-}
-
-
-/**
- * 用户注销
- * @param {String} url 注销后重定向登录的地址
- */
-export const logout = () => {
-  // message.success('退出登录')
-  removeTokenId()
-  removeUserInfo()
-  removeUserAccount()
-  // redirectToLogin(url || consts.LOGIN_PATH)
-}
+import { history } from 'umi'
+import consts from '../consts'
+
+const USER_INFO = 'USER_INFO' // 用户个人信息
+const USER_ACCOUNT = 'USER_ACCOUNT' // 用户账号
+const TOKEN_ID = 'TOKEN_ID' // TOKEN令牌ID
+
+// 本地存储封装
+const storage = {
+  get(key) {
+    const val = localStorage.getItem(key)
+    if (val) {
+      return JSON.parse(val)
+    }
+    return null
+  },
+  set(key, value) {
+    localStorage.setItem(key, JSON.stringify(value))
+  },
+  del(key) {
+    localStorage.removeItem(key)
+  },
+  clear() {
+    localStorage.clear()
+  }
+}
+
+/**
+ * 保存用户信息到本地存储中
+ * @param {*} user 用户信息
+ */
+export const saveUserInfo = user => {
+  storage.set(USER_INFO, user)
+}
+
+/**
+ * 获取用户信息
+ */
+export const getUserInfo = () => {
+  const user = storage.get(USER_INFO)
+  return user
+}
+
+/**
+ * 移除用户信息
+ */
+export const removeUserInfo = () => {
+  return storage.del(USER_INFO)
+}
+
+/**
+ * 保存用户账号信息
+ * @param {*} account 账号
+ */
+export const saveUserAccount = account => {
+  storage.set(USER_ACCOUNT, account)
+}
+
+/**
+ * 获取用户账号信息
+ */
+export const getUserAccount = () => {
+  return storage.get(USER_ACCOUNT)
+}
+
+/**
+ * 移除用户账号信息
+ */
+export const removeUserAccount = () => {
+  return storage.del(USER_ACCOUNT)
+}
+/**
+ * 保存令牌ID到本地存储中
+ * @param {*} id token令牌id
+ */
+export const saveTokenId = id => {
+  return storage.set(TOKEN_ID, id)
+}
+
+/**
+ * 移除令牌ID
+ */
+export const removeTokenId = () => {
+  return storage.del(TOKEN_ID)
+}
+
+/**
+ * 从本地存储中获取令牌ID
+ */
+export const getTokenid = () => {
+  return storage.get(TOKEN_ID) || ''
+}
+
+/**
+ * 重定向到登录页
+ */
+export const redirectToLogin = url => {
+  // 重定向登录页面
+  history.replace(url || consts.LOGIN_PATH)
+}

+ 1 - 1
src/basic/utils/request.js

@@ -81,7 +81,7 @@ const refreshTokenIfNeed = async (response, config) => {
     res &&
     res.code !== consts.RET_CODE.SUCCESS &&
     !consts.TOKEN_INVALID_CODE.includes(res.code) &&
-    config.url !== '/login'
+    config.url !== '/api/login'
   ) {
     message.error((res && res.msg) || '请求错误')
     // return Promise.reject(response)

+ 6 - 1
src/layouts/BasicLayout.jsx

@@ -5,7 +5,7 @@
  */
 import ProLayout from '@ant-design/pro-layout'
 import zhCN from 'antd/lib/locale/zh_CN'
-import React, { useMemo, useRef } from 'react'
+import React, { useMemo, useRef, useEffect } from 'react'
 import { Link, useIntl, connect, history } from 'umi'
 import { Result, ConfigProvider } from 'antd'
 import Authorized from '@/utils/auth/Authorized'
@@ -65,6 +65,11 @@ const BasicLayout = props => {
   //   )
   // }, [location.pathname])
 
+  useEffect(() => {
+    dispatch({
+      type: 'global/fetchPermData'
+    })
+  }, [])
   const authorized = useMemo(() => {
     const path = location.pathname
     // 必然匹配了

+ 10 - 0
src/models/global.js

@@ -2,6 +2,8 @@
 
 import consts from '@/basic/consts'
 import { getDataPerm } from '@/services/user'
+import { history } from 'umi'
+import { getToken } from '@/utils/auth'
 
 const GlobalModel = {
   namespace: 'global',
@@ -12,6 +14,14 @@ const GlobalModel = {
   },
   effects: {
     *fetchPermData(_, { put }) {
+      if (window.location.pathname === '/user/login') {
+        return
+      }
+      const token = getToken()
+      if (!token) {
+        history.replace('/user/login')
+        return
+      }
       const response = yield getDataPerm()
       if (response?.code === consts.RET_CODE.SUCCESS) {
         yield put({

+ 2 - 1
src/pages/Customer/Client/index.jsx

@@ -571,7 +571,8 @@ const Client = props => {
                 style={{ width: '300px' }}
                 allowClear={true}
                 placeholder={`在${
-                  permData?.customer.find(item => item.value === state.params.dataPermission)?.label
+                  permData?.customer?.find(item => item.value === state.params.dataPermission)
+                    ?.label
                 }下搜索`}
                 onSearch={handleSearch}
               />

+ 2 - 1
src/pages/Customer/Company/index.jsx

@@ -454,7 +454,8 @@ const Company = props => {
                 style={{ width: '300px' }}
                 allowClear={true}
                 placeholder={`在${
-                  permData?.customer.find(item => item.value === state.params.dataPermission)?.label
+                  permData?.customer?.find(item => item.value === state.params.dataPermission)
+                    ?.label
                 }下搜索`}
                 onSearch={handleSearch}
               />

+ 4 - 0
src/utils/is.ts

@@ -19,3 +19,7 @@ export function isNull(val: unknown): val is null {
 export function isNullOrUnDef(val: unknown): val is null | undefined {
   return isUnDef(val) || isNull(val)
 }
+
+export function isBoolean(val: unknown): val is boolean {
+  return is(val, 'Boolean')
+}