115 lines
4.8 KiB
JavaScript
115 lines
4.8 KiB
JavaScript
|
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: 'user/group/index',
|
||
|
add_url: 'user/group/add',
|
||
|
edit_url: 'user/group/edit',
|
||
|
del_url: 'user/group/del',
|
||
|
multi_url: 'user/group/multi',
|
||
|
table: 'user_group',
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var table = $("#table");
|
||
|
|
||
|
// 初始化表格
|
||
|
table.bootstrapTable({
|
||
|
url: $.fn.bootstrapTable.defaults.extend.index_url,
|
||
|
pk: 'id',
|
||
|
sortName: 'id',
|
||
|
columns: [
|
||
|
[
|
||
|
{checkbox: true},
|
||
|
{field: 'id', title: __('Id')},
|
||
|
{field: 'name', title: __('Name')},
|
||
|
{field: 'createtime', title: __('Createtime'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
|
||
|
{field: 'updatetime', title: __('Updatetime'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
|
||
|
{field: 'status', title: __('Status'), formatter: Table.api.formatter.status},
|
||
|
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
|
||
|
]
|
||
|
]
|
||
|
});
|
||
|
|
||
|
// 为表格绑定事件
|
||
|
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").length > 0) {
|
||
|
var r = $("#treeview").jstree("get_all_checked");
|
||
|
$("input[name='row[rules]']").val(r.join(','));
|
||
|
}
|
||
|
return true;
|
||
|
});
|
||
|
//渲染权限节点树
|
||
|
//销毁已有的节点树
|
||
|
$("#treeview").jstree("destroy");
|
||
|
Controller.api.rendertree(nodeData);
|
||
|
//全选和展开
|
||
|
$(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;
|
||
|
});
|