完成左边菜单的展示,以及工作台的开发

lihaobo
luoyijiucheng 6 years ago
parent 762dcd838f
commit fd2b62bdbb

@ -7,9 +7,27 @@ package com.yeqifu.sys.common;
public class Constast {
/**
*
* 200 -1
*/
public static final Integer OK=200;
public static final Integer ERROR=-1;
/**
* 0 1
*/
public static final Object AVAILABLE_TRUE = 1;
public static final Object AVAILABLE_FALSE = 0;
/**
* menu permission
*/
public static final String TYPE_MENU = "menu";
public static final String TYPE_PERMISSION = "permission";
public static final Integer USER_TYPE_SUPER = 0;
/**
* 0 1
*/
public static final Integer OPEN_TRUE = 1;
public static final Integer OPEN_FALSE = 0;
}

@ -0,0 +1,29 @@
package com.yeqifu.sys.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author: -
* @Date: 2019/11/22 15:17
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DataGridView {
private Integer code=0;
private String msg="";
private Long count=0L;
private Object data;
public DataGridView(Long count, Object data) {
this.count = count;
this.data = data;
}
public DataGridView(Object data) {
this.data = data;
}
}

@ -0,0 +1,44 @@
package com.yeqifu.sys.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: -
* @Date: 2019/11/22 15:25
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TreeNode {
private Integer id;
private Integer pid;
private String title;
private String icon;
private String href;
private Boolean spread;
private List<TreeNode> children = new ArrayList<TreeNode>();
/**
*
* @param id
* @param pid
* @param title
* @param icon
* @param href
* @param spread
*/
public TreeNode(Integer id, Integer pid, String title, String icon, String href, Boolean spread) {
this.id = id;
this.pid = pid;
this.title = title;
this.icon = icon;
this.href = href;
this.spread = spread;
}
}

@ -0,0 +1,25 @@
package com.yeqifu.sys.common;
import java.util.ArrayList;
import java.util.List;
/**
*
* @Author: -
* @Date: 2019/11/22 16:31
*/
public class TreeNodeBuilder {
public static List<TreeNode> build(List<TreeNode> treeNodes, Integer topPid) {
List<TreeNode> nodes = new ArrayList<TreeNode>();
for (TreeNode n1 : treeNodes) {
if (n1.getPid().equals(topPid)){
nodes.add(n1);
}
for (TreeNode n2 : treeNodes) {
if (n1.getId().equals(n2.getPid())){
n1.getChildren().add(n2);
}
}
}
return nodes;
}
}

@ -0,0 +1,65 @@
package com.yeqifu.sys.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeqifu.sys.common.*;
import com.yeqifu.sys.entity.Permission;
import com.yeqifu.sys.entity.User;
import com.yeqifu.sys.service.IPermissionService;
import com.yeqifu.sys.vo.PermissionVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: -
* @Date: 2019/11/22 15:35
*/
@RestController
@RequestMapping("/menu")
public class MenuController {
@Autowired
private IPermissionService permissionService;
@RequestMapping("loadIndexLeftMenuJson")
public DataGridView loadIndexLeftMenuJson(PermissionVo permissionVo){
//查询所有菜单
QueryWrapper<Permission> queryWrapper = new QueryWrapper<Permission>();
//设置查询条件
//查询的必须是菜单不能是crud的权限
queryWrapper.eq("type",Constast.TYPE_MENU);
//菜单必须可用
queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
//获得用户 判断用户的类型
User user = (User) WebUtils.getSession().getAttribute("user");
List<Permission> list = null;
if (user.getType().equals(Constast.USER_TYPE_SUPER)){
//用户类型为超级管理员
list = permissionService.list(queryWrapper);
}else {
//用户类型为 管理员和普通用户
list = permissionService.list(queryWrapper);
}
List<TreeNode> treeNodes = new ArrayList<TreeNode>();
for (Permission p : list) {
Integer id =p.getId();
Integer pid = p.getPid();
String title = p.getTitle();
String icon = p.getIcon();
String href = p.getHref();
Boolean spread = p.getOpen().equals(Constast.OPEN_TRUE)?true:false;
treeNodes.add(new TreeNode(id,pid,title,icon,href,spread));
}
//构造层级关系
List<TreeNode> list2 = TreeNodeBuilder.build(treeNodes,1);
return new DataGridView(list2);
}
}

@ -0,0 +1,21 @@
package com.yeqifu.sys.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* InnoDB free: 9216 kB
* </p>
*
* @author luoyi-
* @since 2019-11-22
*/
@RestController
@RequestMapping("/sys/permission")
public class PermissionController {
}

@ -30,4 +30,13 @@ public class SystemController {
return "system/index/index";
}
/**
*
* @return
*/
@RequestMapping("toDeskManager")
public String toDeskManager(){
return "system/index/deskManager";
}
}

@ -0,0 +1,57 @@
package com.yeqifu.sys.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* InnoDB free: 9216 kB
* </p>
*
* @author luoyi-
* @since 2019-11-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_permission")
public class Permission implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private Integer pid;
private String type;
private String title;
/**
* [type=permission user:view]
*/
private String percode;
private String icon;
private String href;
private String target;
private Integer open;
private Integer ordernum;
/**
* [01]
*/
private Integer available;
}

@ -0,0 +1,16 @@
package com.yeqifu.sys.mapper;
import com.yeqifu.sys.entity.Permission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* InnoDB free: 9216 kB Mapper
* </p>
*
* @author luoyi-
* @since 2019-11-22
*/
public interface PermissionMapper extends BaseMapper<Permission> {
}

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeqifu.sys.mapper.PermissionMapper">
</mapper>

@ -0,0 +1,16 @@
package com.yeqifu.sys.service;
import com.yeqifu.sys.entity.Permission;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* InnoDB free: 9216 kB
* </p>
*
* @author luoyi-
* @since 2019-11-22
*/
public interface IPermissionService extends IService<Permission> {
}

@ -0,0 +1,20 @@
package com.yeqifu.sys.service.impl;
import com.yeqifu.sys.entity.Permission;
import com.yeqifu.sys.mapper.PermissionMapper;
import com.yeqifu.sys.service.IPermissionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* InnoDB free: 9216 kB
* </p>
*
* @author luoyi-
* @since 2019-11-22
*/
@Service
public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission> implements IPermissionService {
}

@ -0,0 +1,15 @@
package com.yeqifu.sys.vo;
import com.yeqifu.sys.entity.Permission;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @Author: -
* @Date: 2019/11/22 15:30
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class PermissionVo extends Permission {
}

@ -0,0 +1,95 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>首页--工作台</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="/resources/layui/css/layui.css" media="all" />
<link rel="stylesheet" href="/resources/css/public.css" media="all" />
</head>
<body class="childrenBody">
<blockquote class="layui-elem-quote layui-bg-green">
<div id="nowTime"></div>
</blockquote>
<div class="layui-row layui-col-space10">
<div class="layui-col-lg6 layui-col-md12">
<blockquote class="layui-elem-quote title">最新文章 <i class="layui-icon layui-red">&#xe756;</i></blockquote>
<table class="layui-table mag0" lay-skin="line">
<colgroup>
<col>
<col width="110">
</colgroup>
<tbody class="hot_news"></tbody>
</table>
</div>
</div>
<script type="text/javascript" src="/resources/layui/layui.js"></script>
<script type="text/javascript">
//获取当前登陆人
var currentUserName='[[${session.user.name}]]';
//获取系统时间
var newDate = '';
getLangDate();
//值小于10时在前面补0
function dateFilter(date){
if(date < 10){return "0"+date;}
return date;
}
function getLangDate(){
var dateObj = new Date(); //表示当前系统时间的Date对象
var year = dateObj.getFullYear(); //当前系统时间的完整年份值
var month = dateObj.getMonth()+1; //当前系统时间的月份值
var date = dateObj.getDate(); //当前系统时间的月份中的日
var day = dateObj.getDay(); //当前系统时间中的星期值
var weeks = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
var week = weeks[day]; //根据星期值,从数组中获取对应的星期字符串
var hour = dateObj.getHours(); //当前系统时间的小时值
var minute = dateObj.getMinutes(); //当前系统时间的分钟值
var second = dateObj.getSeconds(); //当前系统时间的秒钟值
var timeValue = "" +((hour >= 12) ? (hour >= 18) ? "晚上" : "下午" : "上午" ); //当前时间属于上午、晚上还是下午
newDate = dateFilter(year)+"年"+dateFilter(month)+"月"+dateFilter(date)+"日 "+" "+dateFilter(hour)+":"+dateFilter(minute)+":"+dateFilter(second);
document.getElementById("nowTime").innerHTML = "亲爱的,"+currentUserName+"."+timeValue+"好! 欢迎使用 仓库管理系统。当前时间为: "+newDate+" "+week;
setTimeout("getLangDate()",1000);
}
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form,
layer = parent.layer === undefined ? layui.layer : top.layer,
element = layui.element;
$ = layui.jquery;
//上次登录时间【此处应该从接口获取,实际使用中请自行更换】
$(".loginTime").html(newDate.split("日")[0]+"日</br>"+newDate.split("日")[1]);
//icon动画
$(".panel a").hover(function(){
$(this).find(".layui-anim").addClass("layui-anim-scaleSpring");
},function(){
$(this).find(".layui-anim").removeClass("layui-anim-scaleSpring");
})
$(".panel a").click(function(){
parent.addTab($(this));
})
//最新文章列表
$.get("/resources/json/newsList.json",function(data){
var hotNewsHtml = '';
for(var i=0;i<5;i++){
hotNewsHtml += '<tr>'
+'<td align="left"><a href="javascript:;"> '+data.data[i].newsName+'</a></td>'
+'<td>'+data.data[i].newsTime.substring(0,10)+'</td>'
+'</tr>';
}
$(".hot_news").html(hotNewsHtml);
$(".userAll span").text(data.length);
})
})
</script>
</body>
</html>

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>仓库管理系统后台首页</title>
@ -31,7 +31,7 @@
<a href="javascript:;"><i class="seraph icon-lock"></i><cite>锁屏</cite></a>
</li>
<li class="layui-nav-item" id="userInfo">
<a href="javascript:;"><img src="/resources/images/face.jpg" class="layui-nav-img userAvatar" width="35" height="35"><cite class="adminName">驊驊龔頾</cite></a>
<a href="javascript:;"><img src="/resources/images/face.jpg" class="layui-nav-img userAvatar" width="35" height="35"><cite class="adminName" th:text="${session.user.name}"></cite></a>
<dl class="layui-nav-child">
<dd><a href="javascript:;" data-url="/resouces/page/user/userInfo.html"><i class="seraph icon-ziliao" data-icon="icon-ziliao"></i><cite>个人资料</cite></a></dd>
<dd><a href="javascript:;" data-url="/resouces/page/user/changePwd.html"><i class="seraph icon-xiugai" data-icon="icon-xiugai"></i><cite>修改密码</cite></a></dd>
@ -45,7 +45,7 @@
<div class="layui-side layui-bg-black">
<div class="user-photo">
<a class="img" title="我的头像" ><img src="/resources/images/face.jpg" class="userAvatar"></a>
<p>你好!<span class="userName">超级管理员</span>, 欢迎登录</p>
<p>你好!<span class="userName" th:text="${session.user.name}"></span>, 欢迎登录</p>
</div>
<!-- 搜索 -->
<div class="layui-form component">
@ -59,7 +59,7 @@
<div class="navBar layui-side-scroll" id="navBar">
<ul class="layui-nav layui-nav-tree">
<li class="layui-nav-item layui-this">
<a href="javascript:;" data-url="page/main.html"><i class="layui-icon" data-icon=""></i><cite>后台首页</cite></a>
<a href="javascript:;" data-url="/sys/toDeskManager"><i class="layui-icon" data-icon=""></i><cite>后台首页</cite></a>
</li>
</ul>
</div>
@ -82,14 +82,14 @@
</ul>
<div class="layui-tab-content clildFrame">
<div class="layui-tab-item layui-show">
<iframe src="/resources/page/main.html"></iframe>
<iframe src="/sys/toDeskManager"></iframe>
</div>
</div>
</div>
</div>
<!-- 底部 -->
<div class="layui-footer footer">
<p><span>copyright @2019 WHSXT</span></p>
<p><span>copyright @2019 Luoyi-</span></p>
</div>
</div>
@ -114,13 +114,13 @@
layer = parent.layer === undefined ? layui.layer : top.layer;
tab = layui.bodyTab({
openTabNum : "50", //最大可打开窗口数量
url : "/resources/json/navs2.json" //获取菜单json地址
url : "/menu/loadIndexLeftMenuJson" //获取菜单json地址
});
//通过顶部菜单获取左侧二三级菜单 注:此处只做演示之用,实际开发中通过接口传参的方式获取导航数据
function getData(json){
$.getJSON(tab.tabConfig.url,function(data){
dataStr = data;
dataStr = data.data;
//重新渲染左侧菜单
tab.render();
})

Loading…
Cancel
Save