layui.define(['http', 'auth'], function (exports) { var $ = layui.$, table = layui.table, form = layui.form, layer = layui.layer , laydate = layui.laydate, laytpl = layui.laytpl, tree = layui.tree, http = layui.http , auth = layui.auth; var _savedPerms = (layui.data('backend').permission) || []; auth.init(_savedPerms); auth.setController('group'); var dataTable = table.render({ elem: '#dataTable' , url: 'index' // 后端数据接口 , page: true , limit: 15 , toolbar: '#tableBarTpl' , cols: [[ { type: 'checkbox', fixed: 'left' } , { field: 'id', title: 'ID', width: 60, align: 'center', sort: true, fixed: 'left' } , { field: 'title', title: '名称', width: 150, align: 'center', fixed: 'left' } , { field: 'name', title: '代码', width: 150, align: 'center', fixed: 'left' } , { field: 'description', title: '描述', minWidth: 200, align: 'left' } , { field: 'status', title: '状态', width: 120, align: 'center', templet: '#statusTpl' } , { field: 'create_time', title: '创建时间', width: 160, align: 'center', sort: true } , { title: '操作', width: 160, align: 'left', toolbar: '#dataBarTpl', fixed: 'right', unresize: true } ]] , done: function (res, curr, count) { var view = $('#dataTable').next('.layui-table-view'); view.find('[data-perm]').each(function () { var perm = $(this).attr('data-perm'); if (perm && !auth.has(perm)) { $(this).remove(); } }); $('.layui-btn[data-perm]').each(function () { var perm = $(this).attr('data-perm'); if (perm && !auth.has(perm)) { $(this).remove(); } }); } }); table.on('toolbar(dataTable)', function (elem) { switch (elem.event) { case 'dataCreate': active.dataCreate({ pid: 0, type: 1 }); break; case 'dataDelete': var checkStatus = table.checkStatus('dataTable'), checkData = checkStatus.data; let ids = checkData.map((item, index, array) => { return item.id; }); active.dataDelete(ids); break; case 'dataRecybin': active.dataRecybin(); break; }; }); table.on('tool(dataTable)', function (elem) { var data = elem.data; switch (elem.event) { case 'update': active.dataEdit(data); break; case 'permission': openPermissionForm(data); break; case 'delete': active.dataDelete([data.id]); break; } }); var dataFromFun = function (data, callback, done) { var title = data ? '编辑数据[' + data.account + ']' : '添加数据'; var formHtml = laytpl($('#dataFormTpl').html()).render(data || {}); layer.open({ title: data.id ? '编辑菜单' : (data.pid ? '添加子菜单' : '添加根菜单'), content: formHtml, anim: "slideLeft", offset: "r", btnAlign: "l", area: ['50% ', '99%'], shade: 0.1, shadeClose: true, btn: ['确定', '取消'], success: function (layero, index) { callback(layero, index); form.render(); }, yes: function (index, layero) { window.layui.form.on('submit(wxapp-form-submit)', function (elem) { done(layero, index, elem); layui.off('submit(wxapp-form)', 'from'); return false; }); layero.contents().find("#wxapp-form-submit").trigger('click'); } }); }; //事件 var active = { dataDelete: function (ids, force = 0) { if (ids.length === 0) { return layer.msg('请选择数据'); } layer.prompt({ formType: 1 , title: '敏感操作,请验证口令' }, function (value, index) { layer.close(index); layer.confirm('确定删除吗?', function (index) { http.delete("delete", { ids: ids.join(','), force: force }) .then((res) => { if (res.code === 0) { layer.close(index); table.reload('dataTable', {}, true); } else { layer.msg(res.msg || '操作失败'); } }); }); }); }, dataCreate: function (data = {}) { dataFromFun(data, function (layero, index) { }, function (layero, index, elem) { var field = elem.field; http.post('save', field) .then((res) => { if (res.code === 0) { layer.close(index); table.reload('dataTable', {}, true); } else { layer.msg(res.msg || '操作失败'); } }); } ); }, dataEdit: function (data = {}) { dataFromFun(data, function (layero, index) { }, function (layero, index, elem) { var field = elem.field; http.put('update', field) .then((res) => { if (res.code === 0) { layer.close(index); table.reload('dataTable', {}, true); } else { layer.msg(res.msg || '操作失败'); } }); } ); }, dataRecybin: function (data = {}) { var formHtml = laytpl($('#dataRecybinTpl').html()).render(data || {}); layer.open({ title: '资源回收站', content: formHtml, anim: "slideLeft", offset: "r", area: ['50%', '99%'], shade: 0.1, shadeClose: true, success: function (layero, index) { table.render({ elem: '#dataRecybinTable', url: "recyclebin", defaultToolbar: [{ title: '批量删除数据', layEvent: 'dataDelete', icon: 'layui-icon-delete', onClick: function (obj) { var checkStatus = table.checkStatus('dataRecybinTable'), checkData = checkStatus.data; let ids = checkData.map((item, index, array) => { return item.id; }); console.log(ids); } }, 'filter', 'exports', 'print'], cols: [[ { type: 'checkbox', fixed: 'left' }, { field: 'id', title: 'ID', width: 80, sort: true, fixed: 'left' }, { field: 'title', title: '名称', width: 180, fixed: 'left' }, { field: 'name', title: '代码', width: 180, fixed: 'left' }, { field: 'description', title: '描述', minWidth: 200, sort: true }, { fixed: "right", title: "操作", width: 120, align: "center", templet: function (d) { return `
`; } } ]], page: true, done: function () { table.on('tool(dataRecybinTable)', function (elem) { var data = elem.data; switch (elem.event) { case 'restore': active.dataRestore([data.id]); break; case 'delete': active.dataDelete([data.id], 1); break; } }); table.on('toolbar(dataRecybinTable)', function (elem) { switch (elem.event) { case 'dataDelete': var checkStatus = table.checkStatus('dataRecybinTable'), checkData = checkStatus.data; let idss = checkData.map((item, index, array) => { return item.id; }); active.dataDelete(idss, 1); break; case 'dataRestore': var checkStatus = table.checkStatus('dataRecybinTable'), checkData = checkStatus.data; let ids = checkData.map((item, index, array) => { return item.id; }); active.dataRestore(ids); break; }; }); } }); } }); }, dataRestore: function (ids) { if (ids.length === 0) { return layer.msg('请选择数据'); } http.put("restore", { ids: ids.join(',') }) .then((res) => { if (res.code === 0) { layer.msg('恢复成功'); table.reload('dataTable', {}, true); } else { layer.msg(res.msg || '恢复失败'); } }); } }; // 打开权限分配表单 function openPermissionForm(data) { var title = '分配权限 [' + data.name + ']'; var formHtml = laytpl($('#permissionFormTpl').html()).render(data); var index = layer.open({ anim: "slideLeft", offset: "r", btnAlign: "l", area: ['50% ', '99%'], shade: 0.1, shadeClose: true, content: formHtml, success: function (layero, index) { http.get("permission", { id: data.id }) .then((res) => { if (res.code === 0) { tree.render({ elem: '#permissionTree', data: res.data, showCheckbox: true, id: 'permissionTree' }); } else { layer.msg(res.msg || '获取权限失败', { icon: 2 }); } }); }, btn: ['保存', '取消'], yes: function (index, layero) { var checkedData = layui.tree.getChecked('permissionTree'); var permissionIds = []; function getIds(data) { data.forEach(function (item) { permissionIds.push(item.id); if (item.children && item.children.length > 0) { getIds(item.children); } }); } getIds(checkedData); http.put("permission", { id: data.id, permissions: permissionIds }).then((res) => { if (res.code === 0) { layer.msg(res.msg || '保存成功', { icon: 1, time: 1000 }, function () { layer.close(index); }); } else { layer.msg(res.msg || '保存失败', { icon: 2 }); } }); } }); } exports('group', {}); });