2023-7-20

@Select注解

在这里插入图片描述
在这里插入图片描述

获取菜单并区分一级和二级

应用getPermissionByUsername获取全部信息

在这里插入图片描述

区分一级菜单和二级菜单

  • permission类中增加属性childPermission并增加其set和get方法
    在这里插入图片描述

  • 在UserServiceImpl中的getPermissionByUsername方法,对查到的全部数据进行处理

 @Override
    public List<Permission> getPermissionByUsername(String username) {
        //查询到的所有数据放一个集合
        List<Permission> permissionList=userMapper.getPermissionByUsername(username);
        //声明存储二级菜单集合
        List<Permission> childPermissionList=new ArrayList<>();
        //ParentPermissionId=0说明是一级菜单
        for (Permission permission:permissionList){
            if(permission.getParentPermissionId()!=0){
                childPermissionList.add(permission);
            }
        }
        //去掉二级菜单,则只剩一级菜单
        permissionList.removeAll(childPermissionList);
        /**
        permissionList.forEach(p->{
            System.out.println("111"+p.getPermissionName());
        });
        childPermissionList.forEach(c->{
            System.out.println("222" + c.getPermissionName());
        });
         */
        //关联一级菜单和二级菜单
        for (Permission p:permissionList){
            for (Permission c:childPermissionList){
                if (c.getParentPermissionId().equals(p.getPermissionId())){
                   p.getChildPermission().add(c);
                }
            }
        }
        //返回区分好的数据
        return permissionList;
    }

效果如下:
在这里插入图片描述

利用elementUI动态渲染菜单栏

前端获取数据

  • 导入axios
import axios from "axios";
  • 发送请求,这里先把条件写死
mounted() {
    axios.get("http://localhost:9000/getPermissionByUsername?username=guet")
    .then(res=>{
      this.menus=res.data.data;
      console.log(this.menus)
    })
  }
  • 效果
    在这里插入图片描述

动态渲染

  • 声明一个数组,用于存储数据
  data(){
    return{
      menus:[],
    }
  },

在这里插入图片描述

  • 渲染数据
<div class="sideBar">
  <el-menu
      v-for="(menu,index) in menus" :keys=menu.id
      class="el-menu-vertical-demo"
      @open="handleOpen"
      @close="handleClose">

    <!--  childPermission数组的长度不为0,说明有二级菜单  -->
    <el-submenu :index="index.toString()" v-if="menu.childPermission.length!=0">
      <!-- 先加一级菜单     -->
      <template slot="title">
        <i class="el-icon-location"></i>
        <span>{{menu.permissionName}}</span>
      </template>
      <!-- 循环放入二级菜单     -->
      <el-menu-item :index="idx.toString()" v-for="(childPermission,idx) in menu.childPermission" :key="idx">
        <i class="el-icon-document"></i>
        <span slot="title">{{childPermission.permissionName}}</span>
      </el-menu-item>
    </el-submenu>
    <!--显示首页 childPermission数据长度为零说明是首页-->
    <el-menu-item v-else-if="menu.childPermission.length==0" :index="index.toString()">
      <i class="el-icon-menu"></i>
      <span slot="title">{{ menu.permissionName }}</span>
    </el-menu-item>

  </el-menu>
</div>
  • 效果
    用户为guet
    在这里插入图片描述
    用户为admin
    在这里插入图片描述

用vue+HTML动态生成菜单栏

HTML内容

<ul class="menu">
    <li>
      <a href="#"><i class="fa fa-home"></i>&nbsp;&nbsp;首页</a>
    </li>
    <li>
      <a href="#"><i class="fa fa-user"></i>&nbsp;&nbsp;用户管理</a>
      <ul class="submenu">
        <li>
          <a href="#">用户列表</a>
        </li>
      </ul>
    </li>
    <li>
      <a href="#"><i class="fa fa-user-o"></i>&nbsp;&nbsp;角色管理</a>
      <ul class="submenu">
        <li>
          <a href="#">角色列表</a>
        </li>
      </ul>
    </li>
    <li>
      <a href="#"><i class="fa fa-bus"></i>&nbsp;&nbsp;权限管理</a>
      <ul class="submenu">
        <li>
          <a href="#">权限列表</a>
        </li>
      </ul>
    </li>
    <li>
      <a href="#"><i class="fa fa-book"></i>&nbsp;&nbsp;文章管理</a>
      <ul class="submenu">
        <li>
          <a href="#">文章列表</a>
        </li>
        <li>
          <a href="#">文章分类</a>
        </li>
      </ul>
    </li>
    <li>
      <a href="#"><i class="fa fa-user-o"></i>&nbsp;&nbsp;轮播图管理</a>
      <ul class="submenu">
        <li>
          <a href="#">轮播图列表</a>
        </li>
      </ul>
    </li>
    <li>
      <a href="#"><i class="fa fa-file-zip-o"></i>&nbsp;&nbsp;新闻管理</a>
      <ul class="submenu">
        <li>
          <a href="publishNews.html" target="content">发布新闻</a>
        </li>
        <li>
          <a href="Page.html" target="content">查看新闻</a>
        </li>
      </ul>
    </li>
  </ul>
/* clear screen */
*{
  margin: 0;
  padding: 0;
}
li{
  list-style: none;
  position: relative;
  border-style: solid;
  border-width: 1px 0 0;
  border-color: #E5E5E5;
}
.submenu>li{
  position: relative;
  padding-left: 40px;
}
a{
  display: block;
  width: 189px;
  height: 36px;
  color: #5d5d5d;
  text-decoration: none;
  line-height: 36px;
}
.fa{
  display: inline-block;
  margin-left: 14px;
  margin-right: 14px;
  font-family: 'FontAwesome';
  font-weight: normal;
  font-style: normal;
}
.submenu{
  position: relative;
}
.submenu:before {
  content: "";
  display: block;
  position: absolute;
  z-index: 1;
  left: 18px;
  top: 0;
  bottom: 0;
  border: 1px dotted;
  border-width: 0 0 0 1px;/* 上 右 下 左 */
}
.submenu > li:before {
  content: "";
  display: block;
  width: 10px;
  position: absolute;
  z-index: 1;
  left: 20px;
  top: 17px;
  border: 1px dotted;
  border-width: 1px 0 0;/* 上 右 下*/
}

加入vue中

  • 复制HTML内容
    在这里插入图片描述
  • vue中引用图标
npm install font-awesome --save
import 'font-awesome/css/font-awesome.min.css'

在这里插入图片描述

效果如下:
在这里插入图片描述

动态生成

  • data中增加一个属性isExpand
      //显示二级菜单
      isExpand:false,
<div class="sideBar">
  <ul class="menu" v-for="menu in menus">
    <!-- 拥有二级菜单的循环   -->
    <li v-if="menu.childPermission.length!=0">
      <a href="#"  @click.prevent="isExpand=!isExpand"><i :class="menu.icon"></i>&nbsp;&nbsp;{{menu.permissionName}}</a>
      <ul class="submenu" v-show="isExpand" v-for="childPermission in menu.childPermission">
        <li>
          <a href="#">{{childPermission.permissionName}}</a>
        </li>
      </ul>
    </li>
    <!-- “首页”设置   -->
    <li  v-else-if="menu.childPermission.length==0" >
      <a href="menu.url"><i class="fa fa-home"></i>&nbsp;&nbsp;{{ menu.permissionName }}</a>
    </li>

  </ul>
</div>
  • 效果如下:
    用户为adim
    在这里插入图片描述
    用户为guet
    在这里插入图片描述
data = ['2023-05-10 20:37:49', '2023-05-10 20:37:50', '2023-05-10 20:37:51', '2023-05-10 20:37:52', '2023-05-10 20:37:53', '2023-05-10 20:37:54', '2023-05-10 20:37:55', '2023-05-10 20:37:56', '2023-05-10 20:37:57', '2023-05-10 20:37:58', '2023-05-10 20:37:59', '2023-05-10 20:38:00', '2023-05-10 20:38:01', '2023-05-10 20:38:02', '2023-05-10 20:38:03', '2023-05-10 20:38:04', '2023-05-10 20:38:05', '2023-05-10 20:38:06', '2023-05-10 20:38:07', '2023-05-10 20:38:08', '2023-05-10 20:38:09', '2023-05-10 20:38:10', '2023-05-10 20:38:11', '2023-05-10 20:38:12', '2023-05-10 20:38:13', '2023-05-10 20:38:14', '2023-05-10 20:38:15', '2023-05-10 20:38:16', '2023-05-10 20:38:17', '2023-05-10 20:38:18', '2023-05-10 20:38:19', '2023-05-10 20:38:20', '2023-05-10 20:38:21', '2023-05-10 20:38:22', '2023-05-10 20:38:23', '2023-05-10 20:38:24', '2023-05-10 20:38:25', '2023-05-10 20:38:26', '2023-05-10 20:38:27', '2023-05-10 20:38:28', '2023-05-10 20:59:25', '2023-05-10 20:59:26', '2023-05-10 20:59:27', '2023-05-10 20:59:28', '2023-05-10 20:59:29', '2023-05-10 20:59:30', '2023-05-10 20:59:31', '2023-05-10 20:59:32', '2023-05-10 20:59:33', '2023-05-10 20:59:34', '2023-05-10 20:59:35', '2023-05-10 20:59:36', '2023-05-10 20:59:37', '2023-05-10 20:59:38', '2023-05-10 20:59:39', '2023-05-10 20:59:40', '2023-05-10 20:59:41', '2023-05-10 20:59:42', '2023-05-10 20:59:43', '2023-05-10 20:59:44', '2023-05-10 20:59:45', '2023-05-10 20:59:46', '2023-05-10 20:59:47', '2023-05-10 20:59:48', '2023-05-10 20:59:49', '2023-05-10 20:59:50', '2023-05-10 20:59:51', '2023-05-10 20:59:52', '2023-05-10 20:59:53', '2023-05-10 20:59:54', '2023-05-10 20:59:55', '2023-05-10 20:59:56', '2023-05-10 20:59:57', '2023-05-10 20:59:58', '2023-05-10 20:59:59', '2023-05-10 21:00:00'] 在data里面我想筛选出2023-05-09 18:04:13到2023-05-09 23:47:24之前的数据也包括2023-05-09 18:04:13和2023-05-09 23:47:24该怎么做
05-25
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值