项目介绍

LicenseLicenseLayui VersionMysql VersionPhp Version

  • 基于ThinkPHP8.X + Layui开发的权限后台管理系统
  • 已实现后台管理系统中通用的功能以及插件化开发
  • zeAdmin是一款ThinkPHP + Layui的极速后台开发框架。
  • 实现了后台系统常见的RBAC权限管理,并且内置了诸多好用的工具。

提示

程序后台支持两种菜单模式,分别是 『树型的菜单』和 『呼出型菜单』

注意: 两种菜单不能随意切换,由安装时决定使用那种类型的菜单。

原因: 不能随意切换是为了不用维护两套代码,减少不必要的工作。

快速上手

演示站点

在线体验的账号和密码都是 test 123456

注意:体验环境部分数据不能保存,需自行安装再测试! 💯

主要特性

  • 基于RBAC的权限管理系统
  • 强大的代码构建功能 (包含控制器、模型、视图、菜单等)
  • 支持多主题颜色的自由切换和菜单标签记忆等。
  • 对常用JS插件进行二次封装,使JS代码变得更简洁,更加易维护。
  • 支持国际化多语言的支持 (需要自定去翻译)。
  • 完善的日志记录系统无需您额外编写代码自动记录。
  • 支持插件化的开发,解耦您的代码,更易于维护和扩展。
  • 支持自定义后台访问路径,防止别人找到对应后台地址。
  • 内置文件附件管理系统,静态资源管理一目了然。
  • 内置了很多常用的组件和工具 (后面介绍)

内置功能

  • 用户管理:该功能主要完成系统用户配置。
  • 部门管理:配置系统组织机构(公司、部门、小组)
  • 岗位管理:配置系统户所属担任职务。
  • 菜单管理:配置系统菜单操作权限访问路径等。
  • 角色管理:配置角色菜单权限分配
  • 水印配置:配置上传图片增加水印
  • 邮件配置:配置电子邮件发送功能
  • 操作日志:系统操作日志记录和查询
  • 定时任务:管理定时任务的(新增、修改、删除)
  • 系统缓存:管理系统产生的缓存(可自行清理)
  • 附件管理:管理用户上传的图片和视频
  • 文章管理:管理文章的(新增、修改、删除)
  • 插件管理:管理额外的代码包
  • 文件存储:管理文件的存储(本地存储、阿里云OSS、腾讯云OSS、七牛云OSS)
  • Excel操作: 导入导出的方法封装
  • Uniapp端: 提供uniapp端(小程序,H5)的基础代码
  • 在线更新:框架定时更新,后台一键更新,保障最新框架

目录结构

目前主库存放在 Gitee 为镜像仓库!

├─📂 server
│  ├─📂 addons       // 插件目录
│  │  ├─📂 curd      // CURD插件
│  │  ├─📂 ...       // 其它插件
│  │
│  ├─📂 app               // 应用目录
│  │  ├─📂 api            // 接口应用
│  │  │  ├─📂 controller  // 控制器
│  │  │  ├─📂 service     // 服务层
│  │  │  ├─📂 validate    // 验证层
│  │  │  ├─📂 view        // 视图层
│  │  ├─📂 backend        // 后台应用
│  │  ├─📂 common         // 公共应用
│  │  ├─📂 frontend       // 前端应用
│  │
│  ├─📂 public            // WEB入口
│  │  ├─📂 install        // 安装程序目录
│  │  ├─📂 locals         // 本地存储目录
│  │  ├─📂 static         // 静态文件目录
│  │  ├─📂 storage        // 资源存储目录
│  │  ├─📄 index.php      // PHP入口文件
│  │
│  ├─📂 extend            // 扩展目录
│  ├─📂 route             // 路由目录
│  ├─📂 runtime           // 运行目录
│  ├─📂 vendor            // 第三方依赖
│  ├─📄 .env              // 项目环境配置文件
│  ├─📄 .example.env      // 环境配置模板文件

按钮权限

提示

1、1.3.1版本后,后台端支持了按钮级别的权限控制.

2、可以控制没有权限的按钮 是否隐藏 或者 禁用不可点击。

3、用于控制权限的函数如下: {:check_perms('edit', false)}


方法说明:

  • check_perms(string $url, bool $hide = true)
  • $url:
    • 该参数传入一个权限标识,【比如: add 或 **edit**等操作标识】
    • 如果权限标识与本页面路径不是一致的,那你应该传完整的标识,比如: upload/permanent
    • 因为这里的判断原理是,与 auth_menu菜单表 的 perms 字段的内容进行比较的
  • $hide:
    • 是否要隐藏没有权限的元素,默认是隐藏的, 如果为**false**则返回禁用
    • 为true时返回: layui-hide no-permission
    • 为false时返回: layui-btn-forbid layui-btn-disabled

使用示例:

<!-- 因为是通过 css 的 class进行控制的, 所以方法你要写在元素的class上面, 如下: -->
<!-- 拿我们后台的 【内容->文章管理】来做示例, {:check_perms('add')}   -->
<!-- 这里只传了一个 add 的权限标识, 实际上会自动补全成 content.article/add -->
<!-- 那问题来了: content.article 是哪里来的呢? 答案是: 当前访问的url解析出来的 -->
<!-- 所以我上面说如果 不是当前页面的权限 就要输入完成的权限路径 -->
<div class="layui-btn-container">
    <a class="layui-btn {:check_perms('add')}" lay-event="add">
        <i class="layui-icon icon-add"></i>
        <span>新增</span>
    </a>
    <a class="layui-btn {:check_perms('del')}" lay-event="leave">
        <i class="layui-icon icon-del"></i>
        <span>删除</span>
    </a>
</div>

<!-- 示例2: 无权限显示按钮, 但是按钮不可操作 -->
<!-- 其实就是多传一个参数, 值为false即可 如 {:check_perms('save', false)} -->
<button class="layui-btn {:check_perms('save', false)}">保存配置</button>