Bladeren bron

feat: 增加账号禁用缺省页

lanjianrong 3 jaren geleden
bovenliggende
commit
a1351151a8
3 gewijzigde bestanden met toevoegingen van 30 en 21 verwijderingen
  1. 20 12
      src/pages/PreAuth/index.tsx
  2. 9 8
      src/utils/common/request.ts
  3. 1 1
      src/utils/consts.ts

+ 20 - 12
src/pages/PreAuth/index.tsx

@@ -9,24 +9,31 @@ import './index.less'
 
 enum authStatus {
   success = 0,
-  fail = 1,
-  wait = 2
+  fail = -1,
+  wait = 2,
+  disable = 3
 }
+
 const PreAuth = () => {
-  const [ status, setStatus ] = useState(authStatus.wait)
+  const [ state, setState ] = useState({
+    status: authStatus.wait,
+    redirect: ''
+  })
   useEffect(() => {
     const token = window.location.search.split('=')[1]
     async function authLogin() {
       const { code = -1, data } = await apiExternalAuthLogin(token)
       if (code === consts.RET_CODE.SUCCESS) {
-        setStatus(authStatus.success)
+        setState({ ...state, status: authStatus.success })
         userStore.updateUserInfo(data)
         userStore.getProjectInfo()
         setTimeout(() => {
           history.replace('/console/dashboard')
         }, 250)
+      } else if( code === authStatus.fail) {
+        setState({ ...state, status: code, redirect: data.redirect })
       } else {
-        setStatus(authStatus.fail)
+        setState({ ...state, status: code })
       }
     }
     authLogin()
@@ -34,25 +41,26 @@ const PreAuth = () => {
 
   return (
     <div className='pre-auth-container'>
-      <img src={status === authStatus.fail ? wrong : cycling} alt="" />
+      <img src={state.status === authStatus.fail ? wrong : cycling} alt="" />
       {
-        status === authStatus.wait ? <div className='pre-auth-progress'>
+        state.status === authStatus.wait ? <div className='pre-auth-progress'>
           <div className='pre-auth-loading' />
         </div> : null
       }
 
       <div className='pre-auth-status'>
         {
-          status === authStatus.wait ? <span>
+          state.status === authStatus.wait ? <span>
             正在进入...
           </span> : null
         }
         {
-          status === authStatus.fail ? <><span>请返回计量支付并</span>
-            <span className='link' onClick={() => window.location.href= 'http://127.0.0.1:7002/dashboard'}>重新进入</span></> : null
+          state.status === authStatus.fail ? <><span>请返回计量支付并</span>
+            <span className='link' onClick={() => window.location.href = state.redirect}>重新进入</span></> : null
+        }
+        {
+          state.status === authStatus.disable ? <span>请联系「项目管理系统」管理员,开启账号后再进入</span> : null
         }
-
-
       </div>
     </div>
   )

+ 9 - 8
src/utils/common/request.ts

@@ -72,17 +72,18 @@ service.interceptors.response.use(
     removePending(response.config)
     const data: ResponseData = response.data
     // 对Code不等于Success进行message提示
-    if (data && data.code !== consts.RET_CODE.SUCCESS) {
+    if (data && data.code === consts.RET_CODE.FAIL) {
       message.error(data.msg)
-      if (consts.TOKEN_INVALID_CODE.includes(data.code)) {
-        userStore.logout()
-      }
+    }
+    if (consts.TOKEN_INVALID_CODE.includes(data.code)) {
+      userStore.logout()
+    }
 
-      if (data.code === consts.RET_CODE.UN_PERMISSION) {
-        // 防止无权访问
-        history.goBack()
-      }
+    if (data.code === consts.RET_CODE.UN_PERMISSION) {
+      // 防止无权访问
+      history.goBack()
     }
+    
     if (response.config.method?.toLocaleUpperCase() === 'GET') {
       const token = response?.headers['x-csrf-token']
       storage.set('csrf_token', token)

+ 1 - 1
src/utils/consts.ts

@@ -9,7 +9,7 @@ export default {
   TOKEN_API: '', // 获取token
   TOKEN_INVALID_CODE: [ 1 ], // 接口返回码如果是1 则表明token过期或无效 需要重新登录
   TOKEN_WHITE_LIST: [ '/api/login' ], // 不需要设置token的白名单
-  RET_CODE: { SUCCESS: 0, FAIL: 1, UN_PERMISSION: 2 }, // 接口返回状态码
+  RET_CODE: { SUCCESS: 0, FAIL: -1, UN_PERMISSION: 2 }, // 接口返回状态码
   RETRY: { COUNT: 2, DELAY: 1000 }, // 请求重试次数/间隙
   RULE: { SAFE: 'safeRule', QUALITY: 'qualityRule', CONTRACT_RETURN: 'contractReturnRule', CONTRACT_PAID: 'contractPaidRule' }, // 编号规则弹窗常量
   UPLOAD_WHITE: "(.json|.txt|.xls|.xlsx|.doc|.docx|.pdf|.ppt|.pptx|.png|.jpg|.jpeg|.gif|.bmp|.cad|.dwg|.zip|.rar|.7z)$"  , // 上传类型-白名单