| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 | define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'], function ($, undefined, Backend, Table, Form, undefined) {    //读取选中的条目    $.jstree.core.prototype.get_all_checked = function (full) {        var obj = this.get_selected(), i, j;        for (i = 0, j = obj.length; i < j; i++) {            obj = obj.concat(this.get_node(obj[i]).parents);        }        obj = $.grep(obj, function (v, i, a) {            return v != '#';        });        obj = obj.filter(function (itm, i, a) {            return i == a.indexOf(itm);        });        return full ? $.map(obj, $.proxy(function (i) {            return this.get_node(i);        }, this)) : obj;    };    var Controller = {        index: function () {            // 初始化表格参数配置            Table.api.init({                extend: {                    "index_url": "auth/group/index",                    "add_url": "auth/group/add",                    "edit_url": "auth/group/edit",                    "del_url": "auth/group/del",                    "multi_url": "auth/group/multi",                }            });            var table = $("#table");            //在表格内容渲染完成后回调的事件            table.on('post-body.bs.table', function (e, json) {                $("tbody tr[data-index]", this).each(function () {                    if (Config.admin.group_ids.indexOf(parseInt(parseInt($("td:eq(1)", this).text()))) > -1) {                        $("input[type=checkbox]", this).prop("disabled", true);                    }                });            });            // 初始化表格            table.bootstrapTable({                url: $.fn.bootstrapTable.defaults.extend.index_url,                columns: [                    [                        {field: 'state', checkbox: true,},                        {field: 'id', title: 'ID'},                        {field: 'pid', title: __('Parent')},                        {field: 'name', title: __('Name'), align: 'left', formatter:function (value, row, index) {                                return value.toString().replace(/(&|&)nbsp;/g, ' ');                            }                        },                        {field: 'status', title: __('Status'), formatter: Table.api.formatter.status},                        {                            field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: function (value, row, index) {                                if (Config.admin.group_ids.indexOf(parseInt(row.id)) > -1) {                                    return '';                                }                                return Table.api.formatter.operate.call(this, value, row, index);                            }                        }                    ]                ],                pagination: false,                search: false,                commonSearch: false,            });            // 为表格绑定事件            Table.api.bindevent(table);//当内容渲染完成后        },        add: function () {            Controller.api.bindevent();        },        edit: function () {            Controller.api.bindevent();        },        api: {            bindevent: function () {                Form.api.bindevent($("form[role=form]"), null, null, function () {                    if ($("#treeview").size() > 0) {                        var r = $("#treeview").jstree("get_all_checked");                        $("input[name='row[rules]']").val(r.join(','));                    }                    return true;                });                //渲染权限节点树                //变更级别后需要重建节点树                $(document).on("change", "select[name='row[pid]']", function () {                    var pid = $(this).data("pid");                    var id = $(this).data("id");                    if ($(this).val() == id) {                        $("option[value='" + pid + "']", this).prop("selected", true).change();                        Backend.api.toastr.error(__('Can not change the parent to self'));                        return false;                    }                    $.ajax({                        url: "auth/group/roletree",                        type: 'post',                        dataType: 'json',                        data: {id: id, pid: $(this).val()},                        success: function (ret) {                            if (ret.hasOwnProperty("code")) {                                var data = ret.hasOwnProperty("data") && ret.data != "" ? ret.data : "";                                if (ret.code === 1) {                                    //销毁已有的节点树                                    $("#treeview").jstree("destroy");                                    Controller.api.rendertree(data);                                } else {                                    Backend.api.toastr.error(ret.msg);                                }                            }                        }, error: function (e) {                            Backend.api.toastr.error(e.message);                        }                    });                });                //全选和展开                $(document).on("click", "#checkall", function () {                    $("#treeview").jstree($(this).prop("checked") ? "check_all" : "uncheck_all");                });                $(document).on("click", "#expandall", function () {                    $("#treeview").jstree($(this).prop("checked") ? "open_all" : "close_all");                });                $("select[name='row[pid]']").trigger("change");            },            rendertree: function (content) {                $("#treeview")                    .on('redraw.jstree', function (e) {                        $(".layer-footer").attr("domrefresh", Math.random());                    })                    .jstree({                        "themes": {"stripes": true},                        "checkbox": {                            "keep_selected_style": false,                        },                        "types": {                            "root": {                                "icon": "fa fa-folder-open",                            },                            "menu": {                                "icon": "fa fa-folder-open",                            },                            "file": {                                "icon": "fa fa-file-o",                            }                        },                        "plugins": ["checkbox", "types"],                        "core": {                            'check_callback': true,                            "data": content                        }                    });            }        }    };    return Controller;});
 |