rw941123 2023-03-28 19:52 采纳率: 80%
浏览 13
已结题

不同用户看见加载不同菜单

我的菜单有两个数据库表,主菜单和子菜单关联了,我想让对应的用户登录之后加载对应的主菜单,请问应该在哪里修改呢,要怎么修改呢,谢谢各位
主菜单如下:

img

前端取菜单的代码如下:

<el-submenu :index="item.id+''" v-for="item in menuList" :key="item.id">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>{{item.title}}</span>
            </template>
            
            <el-menu-item :index="it.path" v-for="it in item.sList" :key="it.id" @click="savePath(it.path)">
              <template slot="title">
                <i class="el-icon-location"></i>
                <span>{{it.title}}</span>
              </template>
            </el-menu-item>
          </el-submenu>
 

后端菜单相关代码如下:

 
public class MainMenu {
    private int id;
    private String title;
    private String path;
    private List<SubMenu> sList;
}
 
public class SubMenu {
    private int id;
    private String  title;
    private String path;
}
 
public List<MainMenu> getMenus();
 
 <resultMap id="menuMap" type="com.bishe.springboot.bean.MainMenu">
        <id column="id" property="id"/>
        <result column="title" property="title"/>
        <result column="path" property="path"/>
        <collection  property="sList" ofType="com.bishe.springboot.bean.SubMenu" javaType="java.util.List">
            <result column="sid" property="id"/>
            <result column="stitle" property="title"/>
            <result column="spath" property="path"/>
        </collection>
    </resultMap>
 
    <select id="getMenus" resultMap="menuMap">
        SELECT mm.*,sm.id as sid ,sm.title as stitle,sm.path as spath FROM
        mainmenu mm ,submenu sm WHERE mm.id = sm.mid;
    </select>
 
@RequestMapping("/menus")
    public String getAllMenus(){
        HashMap<String,Object> data = new HashMap<>();
        List<MainMenu> menus = menuDao.getMenus();
        if (menus!=null){
            data.put("menus",menus);
            data.put("flag",200);
        }else {
            data.put("flag",404);
        }
        String s = JSON.toJSONString(data);
        return s;
    }
 

前端router index.js代码如下:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import login from '../views/login.vue'
import welcome from '../views/welcome.vue'
import user_manage from '../views/admin/user_manage.vue'
import worker_manage from "../views/admin/worker_manage.vue"
import info_manage from "../views/admin/info_manage.vue"
import apply_manage from "../views/admin/apply_manage.vue"
import donate_manage from "../views/admin/donate_manage.vue"
import in_manage from "../views/admin/in_manage.vue"
import out_manage from "../views/admin/out_manage.vue";
import stock_manage from "../views/admin/stock_manage.vue";
import instock from "../views/employee/instock.vue"
import outstock from "../views/employee/outstock.vue";
import stockflow from "../views/employee/stockflow.vue";
import iteminfo from "../views/user/iteminfo.vue";
import apply from "../views/user/apply.vue";
import donate from "../views/user/donate.vue"
import message from "../views/user/message.vue";
import message_worker from "../views/employee/message_worker.vue";
import message_admin from "../views/admin/message_admin.vue";
 
Vue.use(VueRouter)
 
const routes = [
  {
    path:"/",
    redirect:"/login"
  },
  {
    path: "/login",
    component: login
  },
  {
    path: '/Home',
    component: Home,
    redirect: "/welcome",
    children:[
      {path:'/welcome',component: welcome,},
      {path:'/userhome',component: welcome,},
      {path:'/workerhome',component: welcome,},
      {path:'/usermanage',component: user_manage,},
      {path:'/workermanage',component: worker_manage,},
      {path:'/infomanage',component: info_manage,},
      {path:'/applymanage',component: apply_manage,},
      {path:'/donatemanage',component: donate_manage,},
      {path:'/inmanage',component: in_manage,},
      {path:'/outmanage',component: out_manage,},
      {path:'/stockmanage',component: stock_manage,},
      {path:'/instock',component: instock,},
      {path:'/outstock',component: outstock,},
      {path:'/itemflow',component: stockflow,},
      {path:'/stock',component: stock_manage,},
      {path:'/iteminfo',component: iteminfo,},
      {path:'/apply',component: apply,},
      {path:'/donate',component: donate,},
      {path:'/message',component: message,},
      {path:'/messagemanage',component: message_admin,},
      {path:'/comment',component: message_worker,},
    ]
  },
 
]
 
const router = new VueRouter({
  routes
})
 
//路由导航守卫
router.beforeEach((to,from,next)=>{
  //to 将要访问
  //from 从哪访问
  //next 接着做
  if(to.path=='/login')return next();
  //获取user
  const userFlag = window.sessionStorage.getItem("user");
  if (!userFlag)return  next('/login');
  next();
})
 
export default router
 
 

  • 写回答

2条回答 默认 最新

  • sshdsjidlsan 2023-03-29 13:49
    关注

    1.登录之后,获取user的信息 (权限信息)
    2.在进入主页面的时候,在mount()的时候 向后端请求菜单列表 传用户的权限参数到后台

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-29 07:50
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:华为18级大牛倾情奉送:分布式服务框架和微服务设计原理实战文档,啃完发现涨薪如此简单
    • 除此之外, 这篇博客: 【数据类型存储原理】数据的存储 - 深度剖析数据在内存中的存储中的 🍦IEEE标准形式 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数V可以表示为下面的形式:

      • (-1)S ✖ M ✖ 2E
      • (-1)s表示符号位,当s = 0时,V为正数;当s = 1时,V为负数。
      • M表示有效数字,M必须大于等于1,且小于2。
      • 2E表示指数位。

      举两个例子:

      1. 十进制数3.75,先将其转化为二进制数011.11

      二进制数011就是十进制数3,小数点后面的第一个1表示1.0 / 21,第二个1表示1.0 / 22
      转换为IEEE标准形式为(-1)0 ✖ 1.111 ✖ 21
      此时S = 0,M = 1.111,E = 1

      1. 十进制数-0.5,现将其转化为二进制数-0.1

      二进制数0就是十进制数0,小数点后面的1表示1.0 / 21
      转换为IEEE标准形式为(-1)1 ✖ 1.0 ✖2-1
      此时S = 1,M = 1.0,E = -1

      ==注意:==小数点后面的数都是按照1.0 / 2n的形式相加得到的,所以很多数其实是得不到准确值的。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月28日

悬赏问题

  • ¥15 关于网上一个easyx制作的见缝插针小游戏(c++)
  • ¥15 开地址法双散列函数处理碰撞
  • ¥15 想问一下这个是什么情况 虚拟机Linux打不开了
  • ¥15 联通光猫掉注册了怎么重新注册上去
  • ¥15 关于unity开发steamvr程序遇到的问题
  • ¥60 求tc downloader的下载方式
  • ¥15 华为 快捷方式 手电筒 接口
  • ¥15 Qt6.5支不支持Android13开发啊
  • ¥20 网络只能跑一半,应该如何设置
  • ¥20 Python调用百度开发者平台人脸识别接口