diff --git a/OpenAuth.Mvc/BllScripts/categoryManager.js b/OpenAuth.Mvc/BllScripts/categoryManager.js
new file mode 100644
index 00000000..a9806fc0
--- /dev/null
+++ b/OpenAuth.Mvc/BllScripts/categoryManager.js
@@ -0,0 +1,261 @@
+// ***********************************************************************
+// Assembly : OpenAuth.Mvc
+// Author : yubaolee
+// Created : 04-13-2016
+//
+// Last Modified By : yubaolee
+// Last Modified On : 04-14-2016
+// Contact me : www.cnblogs.com/yubaolee
+// ***********************************************************************
+// File: categoryManager.js
+// 分类管理
+// ***********************************************************************
+
+//grid列表模块
+function MainGrid() {
+ var url = '/CategoryManager/Load?parentId=';
+ var selectedId = 0; //ztree选中的模块
+ this.maingrid = $('#maingrid').datagrid({
+ showToolbar: false,
+ filterThead: false,
+ target: $(this),
+ columns: [
+ {name: 'Id',label: '资源表ID',hide: true},
+ {
+ name: 'CascadeId',
+ label: '节点语义ID',
+ width: 100
+ },
+ {
+ name: 'Name',
+ label: '名称',
+ width: 100
+ },
+ {
+ name: 'ParentId',
+ label: '父节点流水号',
+ width: 100
+ },
+ {
+ name: 'Status',
+ label: '当前状态',
+ width: 100,
+ align: 'center',
+ items: [{ '0': '默认' }, { '1': '删除' }]
+ },
+ {
+ name: 'SortNo',
+ label: '排序号',
+ width: 100,
+ align: 'center',
+ },
+ {
+ name: 'RootKey',
+ label: '从属行业标识',
+ width: 100
+ },
+ {
+ name: 'RootName',
+ label: '从属行业名称',
+ width: 100
+ },
+ ],
+ dataUrl: url + selectedId,
+ fullGrid: true,
+ showLinenumber: true,
+ showCheckboxcol: true,
+ paging: true,
+ filterMult: false,
+ showTfoot: false,
+ height: '100%'
+ });
+ this.reload = function (id) {
+ if (id != undefined) selectedId = id;
+ this.maingrid.datagrid('reload', { dataUrl: url+ selectedId });
+ };
+};
+MainGrid.prototype = new Grid();
+var list = new MainGrid();
+
+//左边分类导航树
+var ztree = function () {
+ var url = '/CategoryManager/LoadForTree';
+ var setting = {
+ view: { selectedMulti: false },
+ data: {
+ key: {
+ name: 'Name',
+ title: 'Name'
+ },
+ simpleData: {
+ enable: true,
+ idKey: 'Id',
+ pIdKey: 'ParentId',
+ rootPId: 'null'
+ }
+ },
+ callback: { onClick: zTreeOnClick }
+ };
+ $.getJSON(url, function (json) {
+ $.fn.zTree.init($("#tree"), setting, json).expandAll(true);
+ });
+ function zTreeOnClick(event, treeId, treeNode) {
+ list.reload(treeNode.Id);
+ }
+
+ return {
+ reload:function() {
+ $.getJSON(url, function (json) {
+ $.fn.zTree.init($("#tree"), setting, json).expandAll(true);
+ });
+ }
+ }
+}();
+
+
+//编辑时,选择上级弹出的树
+var parentTree = function () {
+ var nameDom = "#ParentName";
+ var idDom = "#ParentId";
+ var zTreeObj;
+ var setting = {
+ view: {
+ selectedMulti: false
+ },
+ check: {
+ enable: true,
+ chkStyle: "radio", //单选
+ radioType: "all"
+ },
+ data: {
+ key: {
+ name: 'Name',
+ title: 'Name'
+ },
+ simpleData: {
+ enable: true,
+ idKey: 'Id',
+ pIdKey: 'ParentId',
+ rootPId: 'null'
+ }
+ },
+ callback: {
+ onClick: zTreeOnClick,
+ onCheck: zTreeCheck
+ }
+ };
+
+ function zTreeCheck(event, treeId, treeNode) {
+ var nodes = zTreeObj.getCheckedNodes(true);
+ var ids = nodes.map(function (e) { return e.Id; }).join(",");
+ var names = nodes.map(function (e) { return e.Name; }).join(",");
+
+ $(nameDom).val(names);
+ $(idDom).val(ids);
+ }
+ function zTreeOnClick(event, treeId, treeNode) {
+ zTreeObj.checkNode(treeNode, !treeNode.checked, true, true);
+ event.preventDefault();
+ }
+
+ return {
+ show:function() {
+ $.getJSON('/CategoryManager/LoadForTree', function (json) {
+ zTreeObj = $.fn.zTree.init($('#j_select_tree1'), setting, json);
+ var orgstr = $(idDom).val();
+ var name = '';
+ if (orgstr != '') {
+ var nodeIds = orgstr.split(',');
+ $.each(nodeIds, function () {
+ var node = zTreeObj.getNodeByParam("Id", this, null);
+ name += ',' + node.Name;
+ zTreeObj.checkNode(node, true, true);
+ });
+ $(nameDom).val(name.substr(1)); //显示名称
+ }
+ zTreeObj.expandAll(true);
+ });
+ }
+ };
+}();
+
+//添加(编辑)对话框
+var editDlg = function () {
+ var update = false;
+ var show = function () {
+ BJUI.dialog({ id: 'editDlg', title: '分类管理', target: '#editDlg' });
+ $("#btnSave").on("click", function() {
+ editDlg.save();
+ });
+ }
+ return {
+ add: function () { //弹出添加
+ update = false;
+ show();
+ $.CurrentDialog.find("form")[0].reset(); //reset方法只能通过dom调用
+ $("#Id").val(0);
+ $("#SortNo").val(0);
+ parentTree.show();
+ },
+ update: function (ret) { //弹出编辑框
+ update = true;
+ show();
+ $("#Id").val(ret.Id);
+ $("#Name").val(ret.Name);
+ $("#ParentId").val(ret.ParentId);
+ $('#Status').selectpicker('val', ret.Status);
+ $("#SortNo").val(ret.SortNo);
+ $("#RootKey").val(ret.RootKey);
+ $("#RootName").val(ret.RootName);
+ parentTree.show();
+ },
+ save: function() { //编辑-->保存
+ $('#editForm').isValid(function (v) {
+ if (!v) return; //验证没通过
+ $("#editForm").bjuiajax('ajaxForm', {
+ reload: false,
+ callback:function(json) {
+ list.reload();
+ ztree.reload();
+ }
+ });
+ });
+ }
+ };
+}();
+
+
+//删除
+function del() {
+ var selected = list.getSelectedObj();
+ if (selected == null) return;
+
+ $.getJSON('/CategoryManager/Delete?Id=' + selected.Id, function (data) {
+ if (data.statusCode == "200") {
+ list.reload();
+ ztree.reload();
+ }
+ else {
+ $(this).alertmsg('warn', data.message);
+ }
+ });
+}
+
+//自定义的编辑按钮
+function edit() {
+ var selected = list.getSelectedObj();
+ if (selected == null) {
+ return;
+ }
+ editDlg.update(selected);
+}
+
+function add() {
+ editDlg.add();
+}
+
+function refresh() {
+ list.reload();
+}
+
+//@@ sourceURL=categoryManager.js
\ No newline at end of file
diff --git a/OpenAuth.Mvc/BllScripts/roleModuleElement.js b/OpenAuth.Mvc/BllScripts/roleModuleElement.js
new file mode 100644
index 00000000..e7a0ad1e
--- /dev/null
+++ b/OpenAuth.Mvc/BllScripts/roleModuleElement.js
@@ -0,0 +1,116 @@
+// ***********************************************************************
+// Assembly : OpenAuth.Mvc
+// Author : yubaolee
+// Created : 04-13-2016
+//
+// Last Modified By : yubaolee
+// Last Modified On : 04-13-2016
+// ***********************************************************************
+//
+// 版权所有(C) 2015
+//
+// 为角色分配模块菜单
+// ***********************************************************************
+
+
+$(document).ready(function () {
+ $.CurrentDialog.find("#btnAccess").on("click", function () {
+ var ids = list.getSelectedProperties('Id');
+ if (ids == null) return;
+
+ $.post("/ModuleElementManager/AssignForRole",
+ {
+ RoleId: $('#roleId').val(),
+ menuIds: ids,
+ }, function (json) {
+ list.reload();
+ });
+ });
+ $.CurrentDialog.find("#btnDelAccess").on("click", function () {
+ var ids = list.getSelectedProperties('Id');
+ if (ids == null) return;
+
+ $.post("/ModuleElementManager/CancelForRole",{
+ RoleId: $('#roleId').val(),
+ menuIds: ids,
+ }, function (json) {
+ list.reload();
+ });
+ });
+});
+
+//grid列表模块
+function RoleMEGrid() {
+ var selectedId = 0; //ztree选中的模块
+ this.maingrid = $.CurrentDialog.find('#maingrid').datagrid({
+ showToolbar: false,
+ filterThead: false,
+ target: $(this),
+ columns: [
+ {
+ name: 'Id',
+ label: '元素名称',
+ hide: true
+ },
+ {
+ name: 'Name',
+ label: '元素名称',
+ width: 80
+ },
+ {
+ name: 'ModuleName',
+ label: '所属模块',
+ width: 80
+ },
+ {
+ name: 'Accessed',
+ label: '是否已经授权',
+ type: 'select',
+ align: 'center',
+ items: [{ 'false': '未授权', 'true': '已授权' }],
+ width: 80
+ }
+ ],
+ dataUrl: '/ModuleElementManager/LoadForRole?moduleId=' + selectedId + '&RoleId=' + $('#roleId').val(),
+ fullGrid: true,
+ showLinenumber: true,
+ showCheckboxcol: true,
+ paging: true,
+ filterMult: false,
+ showTfoot: false,
+ height: '100%'
+ });
+ this.reload = function(id) {
+ if (id != undefined) selectedId = id;
+ this.maingrid.datagrid('reload', { dataUrl: '/ModuleElementManager/LoadForRole?moduleId=' + selectedId + '&RoleId=' + $('#roleId').val() });
+ };
+};
+RoleMEGrid.prototype = new Grid();
+var list = new RoleMEGrid();
+
+var ztree = function () {
+ var setting = {
+ view: { selectedMulti: false },
+ data: {
+ key: {
+ name: 'Name',
+ title: 'Name'
+ },
+ simpleData: {
+ enable: true,
+ idKey: 'Id',
+ pIdKey: 'ParentId',
+ rootPId: 'null'
+ }
+ },
+ callback: { onClick: zTreeOnClick }
+ };
+ $.getJSON('/ModuleManager/LoadForRole?RoleId=' + $('#roleId').val(), function (json) {
+ var zTreeObj = $.fn.zTree.init($.CurrentDialog.find("#tree"), setting, json);
+ zTreeObj.expandAll(true);
+ });
+}();
+function zTreeOnClick(event, treeId, treeNode) {
+ list.reload(treeNode.Id);
+}
+//@@ sourceURL=RoleModuleElement.js