ソースを参照

将路由改为动态加载。

tomatozq 5 年 前
コミット
9ec661d50f

+ 35 - 13
src/routers/index.js

@@ -7,11 +7,11 @@ import baseRouters from './modules/base'
 import businessRouters from './modules/business'
 import { Message } from 'element-ui'
 import NProgress from 'nprogress' // progress bar
-import 'nprogress/nprogress.css' // progress bar style
+import 'nprogress/nprogress.css'  // progress bar style
 import { getToken } from '@/utils/auth' // get token from cookie
+import store from '../store'
 
 Vue.use(Router)
-
 NProgress.configure({ showSpinner: true }) // NProgress Configuration
 
 var routes = [
@@ -25,10 +25,17 @@ var routes = [
         component: Home
       },
       ...sysRouters,
-      ...baseRouters,
-      ...businessRouters
+      ...baseRouters
     ]
   },
+  // 改为动态添加
+  // {
+  //   path: '/buiness',
+  //   component:Layout,
+  //   children: [
+  //     ...businessRouters
+  //   ]
+  // },
   {
     path:'/',
     redirect: '/home'
@@ -53,15 +60,30 @@ router.beforeEach((to, from, next) => {
   const hasToken = getToken()
 
   if (hasToken != null) {
-    if (to.path === '/login') {
-      // if is logged in, redirect to the home page
-      next({ path: '/home' })
+    console.log(`loaded=${store.state.user.loaded}`);
+
+    if(!store.state.user.loaded){
+      // console.log(businessRouters);
+      router.addRoutes([{
+          path: '/business',
+          component:Layout,
+          children: businessRouters
+      }]);
+
+      store.commit("user/SET_LOADED",true);
+
+      //动态添加路由后
+      next({ ...to, replace: true })
     }
-    else {
-      next();
+    else{
+      if (to.path === '/login') {
+        // if is logged in, redirect to the home page
+        next({ path: '/home' })
+      }
+      else {
+        next();
+      }
     }
-
-    NProgress.done();
   }
   else {
     if (to.path === '/login') {
@@ -70,9 +92,9 @@ router.beforeEach((to, from, next) => {
     else{
       next(`/login?redirect=${to.path}`);
     }
-
-    NProgress.done();
   }
+
+  //NProgress.done();
 });
 
 router.afterEach(() => {

+ 4 - 0
src/store/modules/user.js

@@ -4,11 +4,15 @@ import { Message } from 'element-ui'
 
 const state = {
     token: getToken(),
+    loaded: false
 }
 
 const mutations = {
     SET_TOKEN: (state, token) => {
         state.token = token
+    },
+    SET_LOADED: (state, loaded) =>{
+        state.loaded = loaded
     }
 }
 

+ 1 - 1
src/views/base/company-list.vue

@@ -66,7 +66,7 @@
       <el-table-column prop="promoter" sort-by="promoter_" label="推广员账号" width="180"></el-table-column>
       <el-table-column prop="buyId" sort-by="buy_id" label="云平台买方ID" width="180"></el-table-column> -->
       <el-table-column prop="status" sort-by="status_" label="状态" width="180"></el-table-column>
-      <el-table-column label="操作" width="180">
+      <el-table-column label="操作" fixed="right" width="150">
         <template slot-scope="{row}">
           <el-button size="mini" type="success" @click="handleOpen(row)">查看详细</el-button>
           <!-- <el-button size="mini" type="warning" @click="handleEdit(row)">编辑</el-button> 

+ 9 - 1
src/views/sys/menu-list.vue

@@ -99,8 +99,9 @@
       <el-table-column prop="menuUrl" label="菜单地址" :sortable="true" width="180"></el-table-column>
       <el-table-column prop="createTime" label="创建时间" :sortable="true" width="180"></el-table-column>
       <el-table-column prop="updateTime" label="更新时间" :sortable="true" width="180"></el-table-column>
-      <el-table-column label="操作" width="200" fixed="right">
+      <el-table-column label="操作" width="250" fixed="right">
         <template slot-scope="{row}">
+          <el-button size="mini" type="success" @click="showSubmenu(row)">下级菜单</el-button>
           <el-button size="mini" type="warning" @click="handleEdit(row)">编辑</el-button>
           <el-button size="mini" type="danger" @click="handleDelete(row)">删除</el-button>
         </template>
@@ -313,6 +314,13 @@ export default {
           this.$message.error(jsonData.message + "");
         }
       });
+    },
+    showSubmenu(row){
+        this.queryMenuResult.length=0; //清空
+        this.queryMenuResult.push(row);
+
+        this.queryModel.parentId = row.id;
+        this.changePage(1);
     }
   },
   mounted: function() {