Browse Source

1. token失效时缓存url,登录成功后跳转至缓存下来的url
2. 禁止移动端使用

xjj 2 năm trước cách đây
mục cha
commit
d6abc820b3
4 tập tin đã thay đổi với 62 bổ sung7 xóa
  1. 37 2
      src/pages/Index.js
  2. 16 1
      src/pages/Login/Login.js
  3. 5 1
      src/pages/Login/models/login.js
  4. 4 3
      src/utils/request.js

+ 37 - 2
src/pages/Index.js

@@ -8,7 +8,7 @@ import styles from './Index.less';
 const { Header, Content, Footer } = Layout;
 const { SubMenu } = Menu;
 let timer;
-
+const isMobile = isMobileDevice();
 // 布局
 function LayoutDetail(props) {
   const { currentUser, permission, dispatch, authList } = props;
@@ -21,15 +21,22 @@ function LayoutDetail(props) {
     marginRight: 60,
     width: 120,
   };
+
   useEffect(() => {
+    if (isMobile) return;
     // 查询用户信息
-    props.dispatch({
+    dispatch({
       type: 'user/fetchCurrent',
     });
   }, []);
 
   useEffect(() => {
+    if (isMobile) return;
     if (!currentUser.ID) return;
+    dispatch({
+      type: 'authList/queryAuthList',
+      payload: { user_id: currentUser.ID },
+    });
     clearInterval(timer);
     timer = setInterval(() => {
       dispatch({
@@ -41,6 +48,30 @@ function LayoutDetail(props) {
     return () => clearInterval(timer);
   }, [currentUser.ID]);
 
+  // 不支持移动端使用,做判断
+  if (isMobile) {
+    return (
+      <Layout>
+        <Header>
+          <div style={{ display: 'flex', height: '100%', justifyContent: 'space-between' }}>
+            <div style={{ display: 'flex', width: '70%' }}>
+              <div style={logoStyle}>金科环境</div>
+            </div>
+          </div>
+        </Header>
+        <Content
+          style={{
+            padding: '50px 0',
+            minHeight: 'calc(100vh - 64px)',
+            textAlign: 'center',
+            fontSize: 24,
+          }}
+        >
+          请使用PC端进行审批
+        </Content>
+      </Layout>
+    );
+  }
   return (
     <Layout>
       <Header>
@@ -78,6 +109,10 @@ function LayoutDetail(props) {
     </Layout>
   );
 }
+
+function isMobileDevice() {
+  return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
+}
 export default connect(({ user, authList }) => ({
   currentUser: user.currentUser,
   permission: user.currentUser.Permission,

+ 16 - 1
src/pages/Login/Login.js

@@ -79,6 +79,13 @@ class LoginPage extends Component {
   };
   handleSubmit = (err, values) => {
     const { type, depId } = this.state;
+    const {
+      login,
+      submitting,
+      location: {
+        query: { referrer },
+      },
+    } = this.props;
     if (!depId) {
       message.error('请选择部门');
       return;
@@ -91,6 +98,7 @@ class LoginPage extends Component {
           ...values,
           type,
           DepId: depId + '',
+          referrer: referrer && decodeURIComponent(decodeURIComponent(referrer)),
         },
       });
     }
@@ -111,8 +119,15 @@ class LoginPage extends Component {
   );
 
   render() {
-    const { login, submitting } = this.props;
+    const {
+      login,
+      submitting,
+      location: {
+        query: { referrer },
+      },
+    } = this.props;
     const { type, autoLogin, depList, depId, loginType } = this.state;
+    console.log(referrer);
     return (
       <DocumentTitle title={`登录-${loginType == 'bom' ? '采购清单' : '人日'}`}>
         <div className={styles.container}>

+ 5 - 1
src/pages/Login/models/login.js

@@ -25,7 +25,11 @@ export default {
         type: 'changeLoginStatus',
         payload: response,
       });
-      yield put(routerRedux.replace('/home'));
+      if(payload.referrer) {
+        location.href = payload.referrer
+      } else {
+        yield put(routerRedux.replace('/home'));
+      }
     },
     *logout(_, { call, put }) {
       yield call(Logout);

+ 4 - 3
src/utils/request.js

@@ -174,7 +174,7 @@ export default function request(url, option, jwt) {
             message: '错误',
             description: 'token失效,请重新登录',
           });
-          router.push('/login');
+          router.push(`/login?referrer=${encodeURIComponent(encodeURIComponent(location.href))}`);
         } else {
           message.error(response.msg);
         }
@@ -192,9 +192,10 @@ export default function request(url, option, jwt) {
           message: '错误',
           description: 'token失效,请重新登录',
         });
-        router.push('/login');
+        router.push(`/login?referrer=${encodeURIComponent(encodeURIComponent(location.href))}`);
         return;
-      } else if (status == 'AbortError') { // 中止的ajax 不做额外处理
+      } else if (status == 'AbortError') {
+        // 中止的ajax 不做额外处理
         return e;
       }
       // if (status <= 504 && status > 500 && status !== 600) {