浏览代码

抽取 getQueryPath 方法封装路径和查询参数拼接

yoyo837 7 年之前
父节点
当前提交
c9d71c9102
共有 4 个文件被更改,包括 23 次插入10 次删除
  1. 4 6
      src/layouts/UserLayout.js
  2. 6 2
      src/models/login.js
  3. 4 1
      src/router.js
  4. 9 1
      src/utils/utils.js

+ 4 - 6
src/layouts/UserLayout.js

@@ -5,7 +5,7 @@ import { Icon } from 'antd';
 import GlobalFooter from '../components/GlobalFooter';
 import styles from './UserLayout.less';
 import logo from '../assets/logo.svg';
-import { getRoutes, getPageQuery } from '../utils/utils';
+import { getRoutes, getPageQuery, getQueryPath } from '../utils/utils';
 
 const links = [
   {
@@ -32,13 +32,11 @@ const copyright = (
 );
 
 function getLoginPathWithRedirectPath() {
-  const routePath = '/user/login';
   const params = getPageQuery();
   const { redirect } = params;
-  if (redirect) {
-    return `${routePath}?redirect=${encodeURIComponent(redirect)}`;
-  }
-  return routePath;
+  return getQueryPath('/user/login', {
+    redirect,
+  });
 }
 
 class UserLayout extends React.PureComponent {

+ 6 - 2
src/models/login.js

@@ -2,7 +2,7 @@ import { routerRedux } from 'dva/router';
 import { fakeAccountLogin } from '../services/api';
 import { setAuthority } from '../utils/authority';
 import { reloadAuthorized } from '../utils/Authorized';
-import { getPageQuery } from '../utils/utils';
+import { getPageQuery, getQueryPath } from '../utils/utils';
 
 export default {
   namespace: 'login',
@@ -49,7 +49,11 @@ export default {
       });
       reloadAuthorized();
       yield put(
-        routerRedux.push(`/user/login?redirect=${encodeURIComponent(window.location.href)}`)
+        routerRedux.push(
+          getQueryPath('/user/login', {
+            redirect: window.location.href,
+          })
+        )
       );
     },
   },

+ 4 - 1
src/router.js

@@ -5,6 +5,7 @@ import zhCN from 'antd/lib/locale-provider/zh_CN';
 import dynamic from 'dva/dynamic';
 import { getRouterData } from './common/router';
 import Authorized from './utils/Authorized';
+import { getQueryPath } from './utils/utils';
 import styles from './index.less';
 
 const { ConnectedRouter } = routerRedux;
@@ -26,7 +27,9 @@ function RouterConfig({ history, app }) {
             path="/"
             render={props => <BasicLayout {...props} />}
             authority={['admin', 'user']}
-            redirectPath={`/user/login?redirect=${encodeURIComponent(window.location.href)}`}
+            redirectPath={getQueryPath('/user/login', {
+              redirect: window.location.href,
+            })}
           />
         </Switch>
       </ConnectedRouter>

+ 9 - 1
src/utils/utils.js

@@ -1,5 +1,5 @@
 import moment from 'moment';
-import { parse } from 'qs';
+import { parse, stringify } from 'qs';
 
 export function fixedZero(val) {
   return val * 1 < 10 ? `0${val}` : val;
@@ -166,6 +166,14 @@ export function getPageQuery() {
   return parse(window.location.href.split('?')[1]);
 }
 
+export function getQueryPath(path = '', query = {}) {
+  const search = stringify(query);
+  if (search.length) {
+    return `${path}?${search}`;
+  }
+  return path;
+}
+
 /* eslint no-useless-escape:0 */
 const reg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;