| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- <!-- 正文开始 -->
- <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 id="edtSearchAuth" class="layui-input" placeholder="输入关键字"/>
- </div>
- </div>
- <div class="layui-inline">
- <button id="btnSearchAuth" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索
- </button>
- <button id="btnAddAuth" class="layui-btn icon-btn"><i class="layui-icon"></i>添加</button>
- </div>
- </div>
- </div>
- <table id="tableAuth"></table>
- </div>
- </div>
- </div>
- <!-- 表格操作列 -->
- <script type="text/html" id="tableBarAuth">
- <a class="layui-btn layui-btn-xs" lay-event="add">新增</a>
- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
- <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
- </script>
- <!-- 表单弹窗 -->
- <script type="text/html" id="modelAuth">
- <form id="modelAuthForm" lay-filter="modelAuthForm" class="layui-form model-form">
- <input name="id" type="hidden"/>
- <div class="layui-row">
- <div class="layui-col-md6">
- <div class="layui-form-item">
- <label class="layui-form-label layui-form-required">上级菜单</label>
- <div class="layui-input-block">
- <div id="selParentIds" class="ew-xmselect-tree"> </div>
- </div>
- </div>
- <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="50"
- lay-verType="tips" lay-verify="required" required/>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label layui-form-required">权限类型</label>
- <div class="layui-input-block">
- <input name="type" type="radio" value="0" title="菜单" checked/>
- <input name="type" type="radio" value="1" title="操作"/>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label layui-form-required">菜单url</label>
- <div class="layui-input-block">
- <input name="url" placeholder="请输入菜单url" type="text" class="layui-input"/>
- </div>
- </div>
- </div>
- <div class="layui-col-md6">
- <div class="layui-form-item">
- <label class="layui-form-label layui-form-required">权限标识</label>
- <div class="layui-input-block">
- <!-- <input name="policy" placeholder="请输入权限标识" type="text" class="layui-input"/>-->
- <select name="policy">
- <option value="view">view</option>
- <option value="get">get</option>
- <option value="post">post</option>
- <option value="put">put</option>
- <option value="delete">delete</option>
- </select>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">菜单图标</label>
- <div class="layui-input-block">
- <input name="icon" placeholder="请输入菜单图标" type="text" class="layui-input"/>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">排序号</label>
- <div class="layui-input-block">
- <input name="sort" placeholder="请输入排序号" type="number" class="layui-input" min="0" max="1000"/>
- </div>
- </div>
- </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="modelSubmitAuth" lay-submit>保存</button>
- </div>
- </form>
- </script>
- <!-- js部分 -->
- <script>
- layui.use(['layer', 'form', 'setter','admin', 'treeTable', 'xmSelect', 'util', 'notice'], function () {
- var $ = layui.jquery;
- var layer = layui.layer;
- var form = layui.form;
- var setter = layui.setter;
- var admin = layui.admin;
- var treeTable = layui.treeTable;
- var xmSelect = layui.xmSelect;
- var util = layui.util;
- var notice = layui.notice;
- // 所有
- var policies = [];
- // 渲染表格
- var insTb = treeTable.render({
- elem: '#tableAuth',
- tree: {
- iconIndex: 1, // 折叠图标显示在第几列
- idName: 'id', // 自定义id字段的名称
- pidName: 'parent_id', // 自定义标识是否还有子节点的字段名称
- isPidData: true // 是否是pid形式数据
- },
- text: {
- none: '获取不到数据'
- },
- toolbar: true,
- cellMinWidth: 100,
- cols: [
- {type: 'numbers'},
- {field: 'name', title: '权限名称', width: 300},
- {field: 'url', title: '路由Url', width: 200},
- {field: 'policy', title: '授权标识',width: 100},
- {field: 'sort', title: '排序号', align: 'center', width: 100},
- {
- title: '类型', templet: function (d) {
- var strs = [
- '<span class="layui-badge layui-badge-green">菜单</span>',
- '<span class="layui-badge layui-badge-blue">操作</span>'
- ];
- return strs[d.type];
- }, align: 'center', width: 100
- },
- {
- field: 'created_at', templet: function (d) {
- return util.toDateString(d.created_at * 1e3);
- }, title: '创建时间', align: 'center'
- },
- {templet: '#tableBarAuth', title: '操作', align: 'center', width: 200}
- ],
- reqData: function (data, callback) {
- admin.req('permission/perm', function (r) {
- if(r.code === 10000){
- callback(policies = r.data);
- }
- callback(policies);
- }, 'GET');
- }
- });
- // 搜索
- $('#btnSearchAuth').click(function () {
- var keyword = $('#edtSearchAuth').val();
- if (keyword) {
- insTb.filterData(keyword);
- } else {
- insTb.clearFilter();
- }
- });
- // 添加按钮点击事件
- $('#btnAddAuth').click(function () {
- showEditModel();
- });
- // 工具条点击事件
- treeTable.on('tool(tableAuth)', function (obj) {
- var data = obj.data;
- var layEvent = obj.event;
- if (layEvent === 'edit') { // 修改
- showEditModel(data);
- } else if (layEvent === 'add') { // add
- showEditModel({parent_id:data.id,pname: data.name});
- }else if (layEvent === 'del') { // 删除
- doDel(data.id, data.name);
- }
- });
- // 显示表单弹窗
- function showEditModel(mAuth) {
- admin.open({
- type: 1,
- title: (mAuth ? '修改' : '添加') + '权限',
- area: '600px', //宽高
- content: $('#modelAuth').html(),
- success: function (layero, dIndex) {
- $(layero).children('.layui-layer-content').css('overflow', 'visible');
- //
- if (mAuth && mAuth.type === '1') {
- $('#modelAuthForm input[name="type"][value="1"]').prop("checked", true);
- }
- let selParentIds = xmSelect.render({
- el: '#selParentIds',
- data: insTb.options.data,
- model: { label: { type: 'text' } },
- radio: true,
- clickClose: true,
- name: 'parent_id',
- prop: {
- name: 'name',
- value: 'id'
- },
- tree: {
- show: true,
- indent: 15,
- strict: false,
- expandedKeys: true
- },
- height: '250px'
- });
- // 数据处理
- var sData = [{id: -1, parent_id: 0, name: '选择上一级菜单',value: 0}];
- $.each(policies, function (index, item) {
- sData.push({
- id: item.id,
- parent_id:item.parent_id,
- name: item.name,
- value: item.id,
- open:item.open
- })
- });
- // 追加数据
- //selParentIds.update({ data: setter.lists2tree(sData,'children') });
- //设置默认值
- selParentIds.setValue([ (mAuth ? sData[mAuth.parent_id] :{ name: (mAuth && mAuth.pname || '选择上一级菜单'), value: 0})], null, true);
- form.render('radio');
- form.render('select');
- form.val('modelAuthForm', mAuth); // 回显数据
- // 表单提交事件
- form.on('submit(modelSubmitAuth)', function (data) {
- if (data.field.parent_id === '') {
- data.field.parent_id = '0';
- }
- layer.load(2);
- admin.req('permission/perm' + (mAuth ? ( mAuth.pname? '':'/' + 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.refresh();
- } else {
- notice.msg(res.message, {icon: 2});
- }
- }, mAuth ? (mAuth.pname ? 'POST': 'PUT' ): 'POST');
- return false;
- });
- }
- });
- }
- // 删除
- function doDel(dataId, title) {
- layer.confirm('确定要删除“' + title + '”吗?', {
- skin: 'layui-layer-admin',
- shade: .1
- }, function (index) {
- layer.close(index);
- layer.load(2);
- admin.req('permission/perm/' + dataId, (res) => {
- layer.closeAll('loading');
- if (res.code === 10000) {
- notice.msg(res.message, {icon: 1});
- insTb.refresh();
- } else {
- notice.msg(res.message, {icon: 2});
- }
- }, 'DELETE');
- });
- }
- });
- </script>
|