| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <style type="text/css">
- .ztree * {
- font-size: 13px;
- }
- </style>
- <!-- 正文开始 -->
- <div class="layui-fluid">
- <div class="layui-card">
- <div class="layui-card-body">
- <div class="layui-form toolbar">
- <div class="layui-form-item">
- <div class="layui-inline">
- <label class="layui-form-label w-auto">角色名:</label>
- <div class="layui-input-inline mr0">
- <input name="name" class="layui-input" type="text" placeholder="输入角色名"/>
- </div>
- </div>
- <div class="layui-inline">
- <button class="layui-btn icon-btn" lay-filter="formSubSearch" lay-submit>
- <i class="layui-icon"></i>搜索
- </button>
- <button id="btnAddRole" class="layui-btn icon-btn"><i class="layui-icon"></i>添加</button>
- </div>
- </div>
- </div>
- <table id="dataTable" lay-filter="dataTable"></table>
- </div>
- </div>
- </div>
- <!-- 表格操作列 -->
- <script type="text/html" id="tableBarRole">
- <a class="layui-btn layui-btn-xs" lay-event="edit">修改</a>
- <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
- <a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="auth">权限分配</a>
- </script>
- <!-- 表单弹窗 -->
- <script type="text/html" id="modelRole">
- <form id="modelRoleForm" lay-filter="modelRoleForm" class="layui-form model-form">
- <input name="id" type="hidden"/>
- <div class="layui-form-item">
- <label class="layui-form-label layui-form-required">角色名</label>
- <div class="layui-input-block">
- <input name="name" placeholder="请输入角色名" type="text" class="layui-input" maxlength="20"
- lay-verType="tips" lay-verify="required" required/>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">备注</label>
- <div class="layui-input-block">
- <textarea name="description" placeholder="请输入内容" class="layui-textarea" maxlength="200"></textarea>
- </div>
- </div>
- <div class="layui-form-item text-right">
- <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
- <button class="layui-btn" lay-filter="modelSubmitRole" perm-show="delete:/permission/roles/<id>" lay-submit>保存</button>
- </div>
- </form>
- </script>
- <script type="text/html" id="modelAuthTree">
- <form id="modelAuthTreeForm" lay-filter="modelAuthTreeForm" class="layui-form">
- <input name="ptId" type="hidden"/>
- <div class="model-form-body" style="max-height: 310px;">
- <div id="selAuthTree" class="ztree"></div>
- </div>
- </form>
- </script>
- <!-- js部分 -->
- <script>
- layui.use(['layer', 'form', 'table', 'util', 'admin', 'zTree', 'setter', 'notice'], function () {
- var $ = layui.jquery;
- var layer = layui.layer;
- var form = layui.form;
- var table = layui.table;
- var util = layui.util;
- var admin = layui.admin;
- var setter = layui.setter;
- var notice = layui.notice;
- // 渲染表格
- var insTb = table.render({
- elem: '#dataTable',
- url: setter.baseServer + 'permission/roles',
- page: true,
- cellMinWidth: 100,
- cols: [[
- {type: 'numbers'},
- {field: 'name', title: '角色名'},
- {field: 'description', title: '备注'},
- {
- field: 'created_at', sort: true, templet: function (d) {
- return util.toDateString(d.created_at * 1e3);
- }, title: '创建时间', width: 180
- },
- {fixed:'right',align: 'center', toolbar: '#tableBarRole', title: '操作', minWidth: 200}
- ]]
- });
- // 添加
- $('#btnAddRole').click(function () {
- showEditModel();
- });
- // 搜索
- form.on('submit(formSubSearch)', function (data) {
- insTb.reload({where: data.field}, 'data');
- });
- // 工具条点击事件
- table.on('tool(dataTable)', function (obj) {
- var data = obj.data;
- var layEvent = obj.event;
- if (layEvent === 'edit') { // 修改
- showEditModel(data);
- } else if (layEvent === 'del') { // 删除
- doDel(data);
- } else if (layEvent === 'auth') { // 权限管理
- showPermModel(data);
- }
- });
- // 删除
- function doDel(data) {
- layer.confirm('确定要删除“' + data.name + '(' + data.description + ')”角色吗?', {
- skin: 'layui-layer-admin',
- shade: .1
- }, function (i) {
- layer.close(i);
- layer.load(2);
- admin.req('permission/roles/' + data.id, (res) => {
- layer.closeAll('loading');
- if (res.code === 10000) {
- notice.msg(res.message, {icon: 1});
- insTb.reload({}, 'data');
- } else {
- notice.msg(res.message, {icon: 2});
- }
- }, 'DELETE');
- });
- }
- // 显示编辑弹窗
- function showEditModel(mRole) {
- admin.open({
- type: 1,
- title: (mRole ? '修改' : '添加') + '角色',
- content: $('#modelRole').html(),
- success: function (layero, dIndex) {
- form.val('modelRoleForm', mRole); // 回显数据
- // 表单提交事件
- form.on('submit(modelSubmitRole)', function (data) {
- layer.load(2);
- admin.req('permission/roles' + (mRole ? '/' + data.field.id : ''), data.field, function (res) {
- layer.closeAll('loading');
- if (res.code === 10000) {
- // 更新菜单权限
- setter.updateUser();
- layer.close(dIndex);
- notice.msg(res.message, {icon: 1});
- insTb.reload({}, 'data');
- } else {
- notice.msg(res.message, {icon: 2});
- }
- }, mRole ? 'PUT' : 'POST');
- return false;
- });
- }
- });
- }
- // 权限管理
- function showPermModel(data) {
- admin.open({
- title: '角色权限分配',
- btn: ['保存', '取消'],
- area: ['400px','450px'],
- content: $("#modelAuthTree").html(),
- success: function (layero, index) {
- $(layero).children('.layui-layer-content').css({'max-height': '300px', 'overflow': 'auto'});
- layer.load(2);
- admin.req('permission/roles/perm/' + data.id, (r) => {
- // 转换
- let treeAuth = [];
- $.each(r.data, (k, item) => {
- treeAuth.push({
- checked: item.checked || false,
- id: item.id,
- //name: item.name + '(' + item.policy + ':' + item.url +')',
- name: item.name,
- open: true,
- pId: item.parent_id
- });
- });
- var setting = {
- check: {enable: true},
- view: {showLine: true},
- data: {simpleData: {enable: true}}
- };
- $.fn.zTree.init($('#selAuthTree'), setting, treeAuth);
- layer.closeAll('loading');
- });
- },
- yes: function (index) {
- layer.load(2);
- var treeObj = $.fn.zTree.getZTreeObj('selAuthTree');
- var nodes = treeObj.getCheckedNodes(true);
- var ids = [];
- for (var i = 0; i < nodes.length; i++) {
- ids[i] = nodes[i].id;
- }
- admin.req('permission/roles/auth/' + data.id, {authIds: ids.join(',')}, function (res) {
- layer.closeAll('loading');
- if (10000 === res.code) {
- setter.updateUser();
- notice.msg(res.message, {icon: 1});
- layer.close(index);
- } else {
- notice.msg(res.message, {icon: 2});
- }
- }, 'PUT');
- }
- });
- }
- });
- </script>
|