mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-07-15 23:13:40 +08:00
ru
This commit is contained in:
parent
45a08aaf41
commit
9c37623d7f
@ -1,9 +1,5 @@
|
|||||||
using System;
|
using OpenAuth.Domain;
|
||||||
using Infrastructure;
|
|
||||||
using OpenAuth.Domain;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Web;
|
|
||||||
using OpenAuth.App.SSO;
|
|
||||||
using OpenAuth.Domain.Service;
|
using OpenAuth.Domain.Service;
|
||||||
|
|
||||||
namespace OpenAuth.App
|
namespace OpenAuth.App
|
||||||
@ -17,14 +13,6 @@ namespace OpenAuth.App
|
|||||||
_moduleManService = moduleManService;
|
_moduleManService = moduleManService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 加载一个节点下面的所有
|
|
||||||
/// </summary>
|
|
||||||
public dynamic Load(string parentId, int pageindex, int pagesize)
|
|
||||||
{
|
|
||||||
return _moduleManService.Load(AuthUtil.GetUserName(), parentId, pageindex, pagesize);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Delete(string id)
|
public void Delete(string id)
|
||||||
{
|
{
|
||||||
_moduleManService.Delete(id);
|
_moduleManService.Delete(id);
|
||||||
@ -32,9 +20,7 @@ namespace OpenAuth.App
|
|||||||
|
|
||||||
public void AddOrUpdate(Module vm)
|
public void AddOrUpdate(Module vm)
|
||||||
{
|
{
|
||||||
Module model = new Module();
|
_moduleManService.AddOrUpdate(vm);
|
||||||
vm.CopyTo(model); //copy一次,防止成员为null的情况
|
|
||||||
_moduleManService.AddOrUpdate(model);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 用户/角色分配模块
|
#region 用户/角色分配模块
|
||||||
|
@ -34,37 +34,6 @@ namespace OpenAuth.Domain.Service
|
|||||||
_factory = authoriseService;
|
_factory = authoriseService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 加载一个节点下面的所有
|
|
||||||
/// </summary>
|
|
||||||
public dynamic Load(string loginuser, string parentId, int pageindex, int pagesize)
|
|
||||||
{
|
|
||||||
|
|
||||||
var service= _factory.Create(loginuser);
|
|
||||||
if (!service.GetModulesQuery().Any()) //用户不能访问任何模块
|
|
||||||
{
|
|
||||||
return new
|
|
||||||
{
|
|
||||||
total = 0,
|
|
||||||
records = 0,
|
|
||||||
page = pageindex
|
|
||||||
};
|
|
||||||
}
|
|
||||||
var ids = GetSubIds(parentId);
|
|
||||||
var query = service.GetModulesQuery().Where(u => parentId == string.Empty || (u.ParentId != null&&ids.Contains(u.ParentId)));
|
|
||||||
|
|
||||||
int total = query.Count();
|
|
||||||
var modules = query.OrderBy(u=>u.CascadeId).Skip((pageindex - 1)*pagesize).Take(pagesize);
|
|
||||||
|
|
||||||
return new
|
|
||||||
{
|
|
||||||
records = total,
|
|
||||||
total = Math.Ceiling((double)total/pagesize),
|
|
||||||
rows = modules,
|
|
||||||
page = pageindex
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Delete(string id)
|
public void Delete(string id)
|
||||||
{
|
{
|
||||||
var del = _repository.FindSingle(u => u.Id == id);
|
var del = _repository.FindSingle(u => u.Id == id);
|
||||||
@ -76,7 +45,7 @@ namespace OpenAuth.Domain.Service
|
|||||||
public void AddOrUpdate(Module model)
|
public void AddOrUpdate(Module model)
|
||||||
{
|
{
|
||||||
ChangeModuleCascade(model);
|
ChangeModuleCascade(model);
|
||||||
if (model.Id == string.Empty)
|
if (string.IsNullOrEmpty(model.Id))
|
||||||
{
|
{
|
||||||
_repository.Add(model);
|
_repository.Add(model);
|
||||||
}
|
}
|
||||||
|
@ -1,78 +0,0 @@
|
|||||||
// ***********************************************************************
|
|
||||||
// Assembly : OpenAuth.Mvc
|
|
||||||
// Author : yubaolee
|
|
||||||
// Created : 04-12-2016
|
|
||||||
//
|
|
||||||
// Last Modified By : yubaolee
|
|
||||||
// Last Modified On : 04-12-2016
|
|
||||||
// ***********************************************************************
|
|
||||||
// <copyright file="maingrid.js" company="www.cnblogs.com/yubaolee">
|
|
||||||
// 版权所有(C) 2015
|
|
||||||
// </copyright>
|
|
||||||
// <summary>maingrid基类</summary>
|
|
||||||
// ***********************************************************************
|
|
||||||
|
|
||||||
function Grid() {}
|
|
||||||
|
|
||||||
Grid.prototype.selectObjs = function() {
|
|
||||||
var ids = this.maingrid.jqGrid("getGridParam", "selarrrow");
|
|
||||||
if (ids.length == 0) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
var ret = new Array();
|
|
||||||
var maingrid = this.maingrid;
|
|
||||||
$(ids)
|
|
||||||
.each(function() {
|
|
||||||
var obj = maingrid.jqGrid("getRowData", this);
|
|
||||||
ret.push(obj);
|
|
||||||
});
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
|
|
||||||
//选择多行对象
|
|
||||||
Grid.prototype.getSelectedMany = function() {
|
|
||||||
return this.selectObjs();
|
|
||||||
};
|
|
||||||
|
|
||||||
//选择单行对象
|
|
||||||
Grid.prototype.getSelectedObj = function() {
|
|
||||||
var row = this.maingrid.jqGrid("getGridParam", "selrow");
|
|
||||||
if (row) {
|
|
||||||
var ret = this.maingrid.jqGrid("getRowData", row);
|
|
||||||
return ret;
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//返回选择多行的属性JSON,默认选择id属性,如果选择其他属性,可重写
|
|
||||||
Grid.prototype.getSelectedProperties = function(propName) {
|
|
||||||
var selected = this.selectObjs();
|
|
||||||
var result = new Array();
|
|
||||||
if (selected != null) {
|
|
||||||
result = selected.map(function(elem) { return elem[propName]; });
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
|
|
||||||
//删除操作,服务端的接收必须是post且参数为string[] ids
|
|
||||||
Grid.prototype.del = function(idname, url, callback) {
|
|
||||||
var selected = this.getSelectedProperties(idname);
|
|
||||||
if (selected == null) return;
|
|
||||||
|
|
||||||
var lid = layer.confirm("确定要删除所选?",
|
|
||||||
null,
|
|
||||||
function() {
|
|
||||||
layer.close(lid);
|
|
||||||
$.post(url,
|
|
||||||
{ ids: selected },
|
|
||||||
function(data) {
|
|
||||||
if (data.Status) {
|
|
||||||
callback();
|
|
||||||
} else {
|
|
||||||
layer.msg(data.Message);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"json");
|
|
||||||
});
|
|
||||||
};
|
|
@ -1,208 +0,0 @@
|
|||||||
$(function () {
|
|
||||||
$("#ParentName").on("click", function () {
|
|
||||||
parent.reload();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
//左边导航
|
|
||||||
var ztree = function () {
|
|
||||||
var url = '/ModuleManager/LoadModule';
|
|
||||||
var setting = {
|
|
||||||
view: { selectedMulti: false },
|
|
||||||
data: {
|
|
||||||
key: {
|
|
||||||
name: 'Name',
|
|
||||||
title: 'Name'
|
|
||||||
},
|
|
||||||
simpleData: {
|
|
||||||
enable: true,
|
|
||||||
idKey: 'Id',
|
|
||||||
pIdKey: 'ParentId',
|
|
||||||
rootPId: 'null'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
callback: {
|
|
||||||
onClick: function (event, treeId, treeNode) {
|
|
||||||
list.reload(treeNode.Id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var load = function () {
|
|
||||||
$.getJSON(url, function (json) {
|
|
||||||
var zTreeObj = $.fn.zTree.init($("#orgtree"), setting, json);
|
|
||||||
list.reload();
|
|
||||||
zTreeObj.expandAll(true);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
load();
|
|
||||||
|
|
||||||
return {
|
|
||||||
reload: load
|
|
||||||
}
|
|
||||||
}();
|
|
||||||
|
|
||||||
//grid列表模块
|
|
||||||
function MainGrid() {
|
|
||||||
var url = '/ModuleManager/Load?orgId=';
|
|
||||||
var selectedId = '00000000-0000-0000-0000-000000000000'; //ztree选中的模块
|
|
||||||
this.maingrid = $('#maingrid')
|
|
||||||
.jqGrid({
|
|
||||||
colModel: [
|
|
||||||
{
|
|
||||||
name: 'Id',
|
|
||||||
index: 'Id',
|
|
||||||
hidden: true
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
index: 'Name',
|
|
||||||
name: 'Name',
|
|
||||||
label: '模块名称'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
index: 'Url',
|
|
||||||
name: 'Url',
|
|
||||||
label: '模块地址'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
index: 'IconName',
|
|
||||||
name: 'IconName',
|
|
||||||
label: '图标'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
index: 'ParentName',
|
|
||||||
name: 'ParentName',
|
|
||||||
label: '所属模块'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
index: 'ParentId',
|
|
||||||
name: 'ParentId',
|
|
||||||
hidden: true
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
index: 'SortNo',
|
|
||||||
name: 'SortNo',
|
|
||||||
label: '排序号'
|
|
||||||
|
|
||||||
}
|
|
||||||
],
|
|
||||||
url: url + selectedId,
|
|
||||||
datatype: "json",
|
|
||||||
|
|
||||||
viewrecords: true,
|
|
||||||
rowNum: 18,
|
|
||||||
pager: "#grid-pager",
|
|
||||||
altRows: true,
|
|
||||||
height: 'auto',
|
|
||||||
multiselect: true,
|
|
||||||
multiboxonly: true,
|
|
||||||
|
|
||||||
loadComplete: function () {
|
|
||||||
var table = this;
|
|
||||||
setTimeout(function () {
|
|
||||||
updatePagerIcons(table);
|
|
||||||
},
|
|
||||||
0);
|
|
||||||
}
|
|
||||||
}).jqGrid('navGrid', "#grid-pager", {
|
|
||||||
edit: false, add: false, del: false, refresh: false, search: false
|
|
||||||
});
|
|
||||||
|
|
||||||
this.reload = function (id) {
|
|
||||||
if (id != undefined) selectedId = id;
|
|
||||||
this.maingrid.jqGrid("setGridParam", { url: url + selectedId })
|
|
||||||
.trigger("reloadGrid", [{ page: 1 }]); //重载JQGrid
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
MainGrid.prototype = new Grid();
|
|
||||||
var list = new MainGrid();
|
|
||||||
var vm = new Vue({
|
|
||||||
el: '#editDlg'
|
|
||||||
});
|
|
||||||
|
|
||||||
//上级机构选择框
|
|
||||||
var parent = new ParentTree("/moduleManager/LoadModule", "ParentName", "ParentId");
|
|
||||||
|
|
||||||
//添加(编辑)对话框
|
|
||||||
var editDlg = function () {
|
|
||||||
var update = false;
|
|
||||||
var show = function () {
|
|
||||||
layer.open({
|
|
||||||
type: 1,
|
|
||||||
skin: 'layui-layer-rim', //加上边框
|
|
||||||
title: "模块管理", //不显示标题
|
|
||||||
area: ['450px', '400px'], //宽高
|
|
||||||
content: $('#editDlg'), //捕获的元素
|
|
||||||
btn: ['保存', '关闭'],
|
|
||||||
yes: function (index, layero) {
|
|
||||||
$.post("/moduleManager/Add", vm.$data, function (data) {
|
|
||||||
layer.msg(data.Message);
|
|
||||||
if (data.Status) {
|
|
||||||
list.reload();
|
|
||||||
ztree.reload();
|
|
||||||
}
|
|
||||||
}, "json");
|
|
||||||
},
|
|
||||||
cancel: function (index) {
|
|
||||||
layer.close(index);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
add: function () { //弹出添加
|
|
||||||
update = false;
|
|
||||||
show();
|
|
||||||
vm.$set('$data', {
|
|
||||||
Id: '00000000-0000-0000-0000-000000000000',
|
|
||||||
SortNo: 0
|
|
||||||
});
|
|
||||||
},
|
|
||||||
update: function (ret) { //弹出编辑框
|
|
||||||
update = true;
|
|
||||||
show();
|
|
||||||
vm.$set('$data', ret);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}();
|
|
||||||
|
|
||||||
//删除
|
|
||||||
function del() {
|
|
||||||
list.del("Id", "/moduleManager/Delete", function () {
|
|
||||||
list.reload();
|
|
||||||
ztree.reload();
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//自定义的编辑按钮
|
|
||||||
function edit() {
|
|
||||||
var selected = list.getSelectedObj();
|
|
||||||
if (selected == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
editDlg.update(selected);
|
|
||||||
}
|
|
||||||
|
|
||||||
function add() {
|
|
||||||
editDlg.add();
|
|
||||||
}
|
|
||||||
|
|
||||||
function refresh() {
|
|
||||||
list.reload();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//为模块分配按钮
|
|
||||||
function assignButton() {
|
|
||||||
var selected = list.getSelectedObj();
|
|
||||||
if (selected == null) return;
|
|
||||||
|
|
||||||
layer.open({
|
|
||||||
type: 2,
|
|
||||||
skin: 'layui-layer-rim', //加上边框
|
|
||||||
area: ['600px', '500px'], //宽高
|
|
||||||
content: '/ModuleElementManager/Index?id=' + selected.Id
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,189 +0,0 @@
|
|||||||
$(function () {
|
|
||||||
$("#ParentName").on("click", function () {
|
|
||||||
parent.reload();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
//左边导航
|
|
||||||
var ztree = function () {
|
|
||||||
var url = '/UserSession/GetOrgs';
|
|
||||||
var setting = {
|
|
||||||
view: { selectedMulti: false },
|
|
||||||
data: {
|
|
||||||
key: {
|
|
||||||
name: 'Name',
|
|
||||||
title: 'Name'
|
|
||||||
},
|
|
||||||
simpleData: {
|
|
||||||
enable: true,
|
|
||||||
idKey: 'Id',
|
|
||||||
pIdKey: 'ParentId',
|
|
||||||
rootPId: 'null'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
callback: {
|
|
||||||
onClick: function (event, treeId, treeNode) {
|
|
||||||
list.reload(treeNode.Id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var load = function () {
|
|
||||||
$.getJSON(url, function (json) {
|
|
||||||
var zTreeObj = $.fn.zTree.init($("#orgtree"), setting, json);
|
|
||||||
list.reload();
|
|
||||||
zTreeObj.expandAll(true);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
load();
|
|
||||||
|
|
||||||
return {
|
|
||||||
reload: load
|
|
||||||
}
|
|
||||||
}();
|
|
||||||
|
|
||||||
//grid列表模块
|
|
||||||
function MainGrid() {
|
|
||||||
var url = '/OrgManager/LoadChildren?Id=';
|
|
||||||
var selectedId = '00000000-0000-0000-0000-000000000000'; //ztree选中的模块
|
|
||||||
this.maingrid = $('#maingrid')
|
|
||||||
.jqGrid({
|
|
||||||
colModel: [
|
|
||||||
{
|
|
||||||
name: 'Id',
|
|
||||||
index: 'Id',
|
|
||||||
label: '流水号',
|
|
||||||
hidden: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
index: 'CascadeId',
|
|
||||||
name: 'CascadeId',
|
|
||||||
label: '节点语义ID'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
index: 'Name',
|
|
||||||
name: 'Name',
|
|
||||||
label: '组织名称'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
index: 'ParentName',
|
|
||||||
name: 'ParentName',
|
|
||||||
label: '父节点名称'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
index: 'ParentId',
|
|
||||||
name: 'ParentId',
|
|
||||||
hidden: true
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
index: 'SortNo',
|
|
||||||
name: 'SortNo',
|
|
||||||
label: '排序号'
|
|
||||||
|
|
||||||
}
|
|
||||||
],
|
|
||||||
url: url + selectedId,
|
|
||||||
datatype: "json",
|
|
||||||
|
|
||||||
viewrecords: true,
|
|
||||||
rowNum: 18,
|
|
||||||
pager: "#grid-pager",
|
|
||||||
altRows: true,
|
|
||||||
height: 'auto',
|
|
||||||
multiselect: true,
|
|
||||||
multiboxonly: true,
|
|
||||||
|
|
||||||
loadComplete: function () {
|
|
||||||
var table = this;
|
|
||||||
setTimeout(function () {
|
|
||||||
updatePagerIcons(table);
|
|
||||||
},
|
|
||||||
0);
|
|
||||||
}
|
|
||||||
}).jqGrid('navGrid', "#grid-pager", {
|
|
||||||
edit: false, add: false, del: false, refresh: false, search: false
|
|
||||||
});
|
|
||||||
|
|
||||||
this.reload = function (id) {
|
|
||||||
if (id != undefined) selectedId = id;
|
|
||||||
this.maingrid.jqGrid("setGridParam", { url: url + selectedId })
|
|
||||||
.trigger("reloadGrid", [{ page: 1 }]); //重载JQGrid
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
MainGrid.prototype = new Grid();
|
|
||||||
var list = new MainGrid();
|
|
||||||
var vm = new Vue({
|
|
||||||
el: '#editDlg'
|
|
||||||
});
|
|
||||||
|
|
||||||
//上级机构选择框
|
|
||||||
var parent = new ParentTree("/UserSession/GetOrgs","ParentName", "ParentId");
|
|
||||||
|
|
||||||
//添加(编辑)对话框
|
|
||||||
var editDlg = function () {
|
|
||||||
var update = false;
|
|
||||||
var show = function () {
|
|
||||||
layer.open({
|
|
||||||
type: 1,
|
|
||||||
skin: 'layui-layer-rim', //加上边框
|
|
||||||
title: "部门管理", //不显示标题
|
|
||||||
area: ['400px', '300px'], //宽高
|
|
||||||
content: $('#editDlg'), //捕获的元素
|
|
||||||
btn: ['保存', '关闭'],
|
|
||||||
yes: function (index, layero) {
|
|
||||||
$.post("/OrgManager/AddOrg", vm.$data, function (data) {
|
|
||||||
layer.msg(data.Message);
|
|
||||||
if (data.Status) {
|
|
||||||
list.reload();
|
|
||||||
ztree.reload();
|
|
||||||
}
|
|
||||||
}, "json");
|
|
||||||
},
|
|
||||||
cancel: function (index) {
|
|
||||||
layer.close(index);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
add: function () { //弹出添加
|
|
||||||
update = false;
|
|
||||||
show();
|
|
||||||
vm.$set('$data',
|
|
||||||
{
|
|
||||||
Id: '00000000-0000-0000-0000-000000000000',
|
|
||||||
SortNo: 0
|
|
||||||
});
|
|
||||||
},
|
|
||||||
update: function (ret) { //弹出编辑框
|
|
||||||
update = true;
|
|
||||||
show();
|
|
||||||
vm.$set('$data', ret);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}();
|
|
||||||
|
|
||||||
//删除
|
|
||||||
function del() {
|
|
||||||
list.del("Id", "/OrgManager/DelOrg", function () {
|
|
||||||
list.reload();
|
|
||||||
ztree.reload();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//自定义的编辑按钮
|
|
||||||
function edit() {
|
|
||||||
var selected = list.getSelectedObj();
|
|
||||||
if (selected == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
editDlg.update(selected);
|
|
||||||
}
|
|
||||||
|
|
||||||
function add() {
|
|
||||||
editDlg.add();
|
|
||||||
}
|
|
||||||
|
|
||||||
function refresh() {
|
|
||||||
list.reload();
|
|
||||||
}
|
|
@ -1,94 +0,0 @@
|
|||||||
// ***********************************************************************
|
|
||||||
// Assembly : OpenAuth.Mvc
|
|
||||||
// Author : yubaolee
|
|
||||||
// Created : 10-16-2016
|
|
||||||
//
|
|
||||||
// Last Modified By : yubaolee
|
|
||||||
// Last Modified On : 10-16-2016
|
|
||||||
// ***********************************************************************
|
|
||||||
// <copyright file="parentTree.js" company="www.cnblogs.com/yubaolee">
|
|
||||||
// 版权所有(C) 2015
|
|
||||||
// </copyright>
|
|
||||||
// <summary>单击文本框弹出的选择列表</summary>
|
|
||||||
// ***********************************************************************
|
|
||||||
|
|
||||||
function ParentTree(url, name, id) {
|
|
||||||
var zTreeObj;
|
|
||||||
var options = {
|
|
||||||
text: 'Name',
|
|
||||||
key: 'Id',
|
|
||||||
parentKey: 'ParentId',
|
|
||||||
nameDOM: name, //显示的文本框ID,如:"#catetoryName"
|
|
||||||
idDOM: id //隐藏的文本框,如:"#categoryId"
|
|
||||||
}
|
|
||||||
var setting = {
|
|
||||||
view: { selectedMulti: false },
|
|
||||||
data: {
|
|
||||||
key: {
|
|
||||||
name: options.text,
|
|
||||||
title: options.text
|
|
||||||
},
|
|
||||||
simpleData: {
|
|
||||||
enable: true,
|
|
||||||
idKey: options.key,
|
|
||||||
pIdKey: options.parentKey,
|
|
||||||
rootPId: 'null'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
callback: {
|
|
||||||
onClick: onClick
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var showMenu = function () {
|
|
||||||
$("#menuContent").css({ left: "10px", top: $("#" + options.nameDOM).outerHeight() + "px" }).slideDown("fast");
|
|
||||||
$("body").bind("mousedown", onBodyDown);
|
|
||||||
};
|
|
||||||
|
|
||||||
var setCheck = function() { //设置初始选中的值
|
|
||||||
var value = vm.$get(options.idDOM);
|
|
||||||
var node = zTreeObj.getNodeByParam("Id", value, null);
|
|
||||||
if (node != null) {
|
|
||||||
zTreeObj.selectNode(node, false, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function onClick(e, treeId, treeNode) {
|
|
||||||
var nodes = zTreeObj.getSelectedNodes();
|
|
||||||
|
|
||||||
for (var i = 0, l = nodes.length; i < l; i++) {
|
|
||||||
vm.$set(options.nameDOM, nodes[i].Name);
|
|
||||||
vm.$set(options.idDOM, nodes[i].Id);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
hideMenu();
|
|
||||||
}
|
|
||||||
function onBodyDown(event) {
|
|
||||||
if (!(event.target.id == "menuContent" || $(event.target).parents("#menuContent").length > 0)) {
|
|
||||||
hideMenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function hideMenu() {
|
|
||||||
$("#menuContent").fadeOut("fast");
|
|
||||||
$("body").unbind("mousedown", onBodyDown);
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
reload: function () {
|
|
||||||
var index = layer.load();
|
|
||||||
$.getJSON(url,
|
|
||||||
{
|
|
||||||
page: 1, rows: 10000
|
|
||||||
},
|
|
||||||
function (json) {
|
|
||||||
layer.close(index);
|
|
||||||
if (json.length == 0) {
|
|
||||||
vm.$set(options.nameDOM, '');
|
|
||||||
vm.$set(options.idDOM, '');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
zTreeObj = $.fn.zTree.init($("#org"), setting, json);
|
|
||||||
setCheck();
|
|
||||||
zTreeObj.expandAll(true);
|
|
||||||
showMenu();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -97,14 +97,6 @@ namespace OpenAuth.Mvc.Controllers
|
|||||||
sb.Append(">\r\n");
|
sb.Append(">\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 加载模块下面的所有模块
|
|
||||||
/// </summary>
|
|
||||||
public string Load(string orgId, int page = 1, int rows = 30)
|
|
||||||
{
|
|
||||||
return JsonHelper.Instance.Serialize(App.Load(orgId, page, rows));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 加载用户模块
|
/// 加载用户模块
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -137,7 +129,7 @@ namespace OpenAuth.Mvc.Controllers
|
|||||||
|
|
||||||
//添加或修改模块
|
//添加或修改模块
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public string Add(Module model)
|
public string AddOrUpdate(Module model)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -21,6 +21,23 @@ namespace OpenAuth.Mvc.Controllers
|
|||||||
return JsonHelper.Instance.Serialize(moduleTree);
|
return JsonHelper.Instance.Serialize(moduleTree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetModules(string pId)
|
||||||
|
{
|
||||||
|
var query = user.Modules;
|
||||||
|
if (!string.IsNullOrEmpty(pId))
|
||||||
|
{
|
||||||
|
query = query.Where(u => u.ParentId == pId).ToList();
|
||||||
|
}
|
||||||
|
var data = new GridData
|
||||||
|
{
|
||||||
|
page = 1,
|
||||||
|
data = query,
|
||||||
|
count = query.Count(),
|
||||||
|
total = 1
|
||||||
|
};
|
||||||
|
return JsonHelper.Instance.Serialize(data);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取登录用户可访问的所有部门
|
/// 获取登录用户可访问的所有部门
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -177,12 +177,8 @@
|
|||||||
<Content Include="BllScripts\login.js" />
|
<Content Include="BllScripts\login.js" />
|
||||||
<Content Include="js\openauth.js" />
|
<Content Include="js\openauth.js" />
|
||||||
<Content Include="js\droptree.js" />
|
<Content Include="js\droptree.js" />
|
||||||
<Content Include="BllScripts\parentTree.js" />
|
|
||||||
<Content Include="BllScripts\processDetail.js" />
|
<Content Include="BllScripts\processDetail.js" />
|
||||||
<Content Include="BllScripts\grid.js" />
|
|
||||||
<Content Include="BllScripts\moduleElementMan.js" />
|
<Content Include="BllScripts\moduleElementMan.js" />
|
||||||
<Content Include="BllScripts\modulemanager.js" />
|
|
||||||
<Content Include="BllScripts\orgManager.js" />
|
|
||||||
<Content Include="BllScripts\queryString.js" />
|
<Content Include="BllScripts\queryString.js" />
|
||||||
<Content Include="BllScripts\resourceManager.js" />
|
<Content Include="BllScripts\resourceManager.js" />
|
||||||
<Content Include="BllScripts\roleManager.js" />
|
<Content Include="BllScripts\roleManager.js" />
|
||||||
@ -215,6 +211,7 @@
|
|||||||
<Content Include="images\userface4.jpg" />
|
<Content Include="images\userface4.jpg" />
|
||||||
<Content Include="images\userface5.jpg" />
|
<Content Include="images\userface5.jpg" />
|
||||||
<Content Include="images\wechat.jpg" />
|
<Content Include="images\wechat.jpg" />
|
||||||
|
<Content Include="js\modules.js" />
|
||||||
<Content Include="js\queryString.js" />
|
<Content Include="js\queryString.js" />
|
||||||
<Content Include="js\orgs.js" />
|
<Content Include="js\orgs.js" />
|
||||||
<Content Include="js\users.js" />
|
<Content Include="js\users.js" />
|
||||||
|
@ -1,99 +1,83 @@
|
|||||||
@{
|
@section header
|
||||||
Layout = "~/Views/Shared/_Layout.cshtml";
|
{
|
||||||
|
<link rel="stylesheet" href="/css/treetable.css" />
|
||||||
}
|
}
|
||||||
<!-- #section:basics/content.breadcrumbs -->
|
<blockquote class="layui-elem-quote news_search toolList">
|
||||||
<div class="breadcrumbs" id="breadcrumbs">
|
<div class="layui-inline">
|
||||||
<ul class="breadcrumb">
|
<div class="layui-input-inline">
|
||||||
<li>
|
<input class="layui-input" placeholder="请输入关键字"
|
||||||
<i class="ace-icon fa fa-home home-icon"></i>
|
name="key" id="key" autocomplete="off">
|
||||||
<a href="#">模块管理</a>
|
</div>
|
||||||
</li>
|
<button class="layui-btn" data-type="search">搜索</button>
|
||||||
<li class="active">列表</li>
|
</div>
|
||||||
</ul><!-- /.breadcrumb -->
|
@Html.Action("MenuHeader", "Home")
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<div style="display: flex;">
|
||||||
|
<ul id="tree" class="ztree" style="display: inline-block; width: 180px; padding: 10px; border: 1px solid #ddd; overflow: auto;"></ul>
|
||||||
|
<table class="layui-table"
|
||||||
|
lay-data="{height: 'full-80', page:true, id:'mainList'}"
|
||||||
|
lay-filter="list">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th lay-data="{checkbox:true, fixed: true}"></th>
|
||||||
|
<th lay-data="{field:'Name', width:150, sort: true, fixed: true}">模块名称</th>
|
||||||
|
<th lay-data="{field:'Url', width:150}">Url</th>
|
||||||
|
<th lay-data="{field:'IconName', width:150}">IconName</th>
|
||||||
|
<th lay-data="{field:'ParentName', width:135}">父节点名称</th>
|
||||||
|
<th lay-data="{field:'SortNo', width:180}">排序号</th>
|
||||||
|
<th lay-data="{field:'Id', width:180}">ID</th>
|
||||||
|
<th lay-data="{fixed: 'right', width:160, align:'center', toolbar: '#barList'}"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- /section:basics/content.breadcrumbs -->
|
<!--列表右边的按钮-->
|
||||||
<div class="page-content">
|
<script type="text/html" id="barList">
|
||||||
<div class="row">
|
<a class="layui-btn layui-btn-primary layui-btn-mini" lay-event="detail">查看</a>
|
||||||
<div class="col-md-12">
|
</script>
|
||||||
<div class="col-md-3">
|
|
||||||
<div class="widget-box widget-color-blue">
|
<!--用户添加/编辑窗口-->
|
||||||
<div class="widget-header">
|
<div id="divEdit" style="display: none">
|
||||||
</div>
|
<form class="layui-form" action="" id="formEdit">
|
||||||
<div class="widget-body">
|
|
||||||
<div class="widget-main">
|
<input type="hidden" name="Id" v-model="Id" />
|
||||||
<ul id="orgtree" class="ztree" style="width: 100%"></ul>
|
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
</div>
|
<label class="layui-form-label">模块名称</label>
|
||||||
</div>
|
<div class="layui-input-block">
|
||||||
|
<input type="text" name="Name" v-model="Name" required lay-verify="required"
|
||||||
|
placeholder="请输入部门名称" autocomplete="off" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-9">
|
</div>
|
||||||
<div class="widget-box widget-color-blue">
|
<div class="layui-form-item">
|
||||||
<div class="widget-header">
|
<label class="layui-form-label">排序号</label>
|
||||||
@Html.Action("MenuHeader", "Home")
|
<div class="layui-input-block">
|
||||||
</div>
|
<input type="text" name="SortNo" v-model="SortNo" required lay-verify="required"
|
||||||
<div class="widget-body gridwidth">
|
placeholder="请输入排序号" autocomplete="off" class="layui-input">
|
||||||
<div class="widget-main">
|
</div>
|
||||||
<div class="row">
|
</div>
|
||||||
<div class="col-md-12 ">
|
|
||||||
<table id="maingrid"></table>
|
<div class="layui-form-item">
|
||||||
<div id="grid-pager"></div>
|
<label class="layui-form-label">所属模块</label>
|
||||||
</div>
|
<div class="layui-input-block">
|
||||||
</div>
|
<input id="ParentName" name="ParentName" v-model="ParentName" required lay-verify="required" class="layui-input" />
|
||||||
</div>
|
<input id="ParentId" name="ParentId" v-model="ParentId" required lay-verify="required" type="hidden" />
|
||||||
</div>
|
<div id="menuContent" class="menuContent" style="display: none;">
|
||||||
|
<ul id="org" class="ztree"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div><!-- /.page-content -->
|
|
||||||
<!--编辑对话框-->
|
|
||||||
<div id="editDlg" style="display: none">
|
|
||||||
<div class="col-xs-12">
|
|
||||||
<form class="form-horizontal" id="editForm">
|
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="layui-form-item">
|
||||||
<label class="col-sm-3 control-label no-padding-right" for=""> 功能模块名称 </label>
|
<div class="layui-input-block">
|
||||||
<div class="col-sm-9">
|
<button class="layui-btn" lay-submit lay-filter="formSubmit">立即提交</button>
|
||||||
<input type="text" id="Name" check-type="required" v-model="Name" />
|
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
</div>
|
||||||
<label class="col-sm-3 control-label no-padding-right" for=""> 主页面URL </label>
|
</form>
|
||||||
<div class="col-sm-9">
|
|
||||||
<input type="text" id="Url" check-type="required" v-model="Url" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label no-padding-right" for=""> 图标 </label>
|
|
||||||
<div class="col-sm-9">
|
|
||||||
<input type="text" id="IconName" check-type="required" v-model="IconName" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label no-padding-right" for=""> 排序号 </label>
|
|
||||||
<div class="col-sm-9">
|
|
||||||
<input type="text" id="SortNo" check-type="required" v-model="SortNo" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label no-padding-right" for=""> 上级模块</label>
|
|
||||||
<div class="col-sm-9">
|
|
||||||
<input id="ParentName" type="text" v-model="ParentName" />
|
|
||||||
<input id="ParentId" type="hidden" v-model="ParentId" />
|
|
||||||
<div id="menuContent" class="menuContent" style="display: none;">
|
|
||||||
<ul id="org" class="ztree"></ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="~/BllScripts/grid.js"></script>
|
<script type="text/javascript" src="/layui/layui.js"></script>
|
||||||
<script src="~/BllScripts/parentTree.js"></script>
|
<script type="text/javascript" src="/js/modules.js"></script>
|
||||||
<script src="~/BllScripts/ModuleManager.js"></script>
|
|
||||||
<script src="~/BllScripts/jqEvent.js"></script>
|
|
163
OpenAuth.Mvc/js/modules.js
Normal file
163
OpenAuth.Mvc/js/modules.js
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
layui.config({
|
||||||
|
base: "/js/"
|
||||||
|
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth'], function () {
|
||||||
|
var form = layui.form,
|
||||||
|
//layer = (parent == undefined || parent.layer === undefined )? layui.layer : parent.layer,
|
||||||
|
layer = layui.layer,
|
||||||
|
$ = layui.jquery;
|
||||||
|
var table = layui.table;
|
||||||
|
var openauth = layui.openauth;
|
||||||
|
layui.droptree("/moduleManager/LoadModule", "#ParentName", "#ParentId", false);
|
||||||
|
|
||||||
|
//主列表加载,可反复调用进行刷新
|
||||||
|
var config= {}; //table的参数,如搜索key,点击tree的id
|
||||||
|
var mainList = function (options) {
|
||||||
|
if (options != undefined) {
|
||||||
|
$.extend(config, options);
|
||||||
|
}
|
||||||
|
table.reload('mainList', {
|
||||||
|
url: '/UserSession/GetModules',
|
||||||
|
where: config
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//左边树状机构列表
|
||||||
|
var ztree = function () {
|
||||||
|
var url = '/ModuleManager/LoadModule';
|
||||||
|
var zTreeObj;
|
||||||
|
var setting = {
|
||||||
|
view: { selectedMulti: false },
|
||||||
|
data: {
|
||||||
|
key: {
|
||||||
|
name: 'Name',
|
||||||
|
title: 'Name'
|
||||||
|
},
|
||||||
|
simpleData: {
|
||||||
|
enable: true,
|
||||||
|
idKey: 'Id',
|
||||||
|
pIdKey: 'ParentId',
|
||||||
|
rootPId: 'null'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
callback: {
|
||||||
|
onClick: function (event, treeId, treeNode) {
|
||||||
|
mainList({ pId: treeNode.Id });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var load = function () {
|
||||||
|
$.getJSON(url, function (json) {
|
||||||
|
zTreeObj = $.fn.zTree.init($("#tree"), setting, json);
|
||||||
|
mainList({ pId: "" });
|
||||||
|
zTreeObj.expandAll(true);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
load();
|
||||||
|
return {
|
||||||
|
reload: load
|
||||||
|
}
|
||||||
|
}();
|
||||||
|
|
||||||
|
//添加(编辑)对话框
|
||||||
|
var editDlg = function() {
|
||||||
|
var vm = new Vue({
|
||||||
|
el: "#formEdit"
|
||||||
|
});
|
||||||
|
var update = false; //是否为更新
|
||||||
|
var show = function (data) {
|
||||||
|
var title = update ? "编辑信息" : "添加";
|
||||||
|
layer.open({
|
||||||
|
title: title,
|
||||||
|
area: ["500px", "400px"],
|
||||||
|
type: 1,
|
||||||
|
content: $('#divEdit'),
|
||||||
|
success: function() {
|
||||||
|
vm.$set('$data', data);
|
||||||
|
},
|
||||||
|
end: mainList
|
||||||
|
});
|
||||||
|
var url = "/moduleManager/AddOrUpdate";
|
||||||
|
if (update) {
|
||||||
|
url = "/moduleManager/AddOrUpdate"; //暂时和添加一个地址
|
||||||
|
}
|
||||||
|
//提交数据
|
||||||
|
form.on('submit(formSubmit)',
|
||||||
|
function(data) {
|
||||||
|
$.post(url,
|
||||||
|
data.field,
|
||||||
|
function(data) {
|
||||||
|
layer.msg(data.Message);
|
||||||
|
},
|
||||||
|
"json");
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
add: function() { //弹出添加
|
||||||
|
update = false;
|
||||||
|
show({
|
||||||
|
Id: ''
|
||||||
|
});
|
||||||
|
},
|
||||||
|
update: function(data) { //弹出编辑框
|
||||||
|
update = true;
|
||||||
|
show(data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}();
|
||||||
|
|
||||||
|
//监听表格内部按钮
|
||||||
|
table.on('tool(list)', function (obj) {
|
||||||
|
var data = obj.data;
|
||||||
|
if (obj.event === 'detail') { //查看
|
||||||
|
layer.msg('ID:' + data.Id + ' 的查看操作');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//监听页面主按钮操作
|
||||||
|
var active = {
|
||||||
|
btnDel: function () { //批量删除
|
||||||
|
var checkStatus = table.checkStatus('mainList')
|
||||||
|
, data = checkStatus.data;
|
||||||
|
openauth.del("/moduleManager/Delete",
|
||||||
|
data.map(function (e) { return e.Id; }),
|
||||||
|
mainList);
|
||||||
|
}
|
||||||
|
, btnAdd: function () { //添加
|
||||||
|
editDlg.add();
|
||||||
|
}
|
||||||
|
, btnEdit: function () { //编辑
|
||||||
|
var checkStatus = table.checkStatus('mainList')
|
||||||
|
, data = checkStatus.data;
|
||||||
|
if (data.length != 1) {
|
||||||
|
layer.msg("请选择编辑的行,且同时只能编辑一行");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editDlg.update(data[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
, search: function () { //搜索
|
||||||
|
mainList({ key: $('#key').val() });
|
||||||
|
}
|
||||||
|
, btnRefresh: function() {
|
||||||
|
mainList();
|
||||||
|
}
|
||||||
|
, btnAccessModule: function () {
|
||||||
|
var index = layer.open({
|
||||||
|
title: "为用户分配模块",
|
||||||
|
type: 2,
|
||||||
|
content: "newsAdd.html",
|
||||||
|
success: function(layero, index) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$('.toolList .layui-btn').on('click', function () {
|
||||||
|
var type = $(this).data('type');
|
||||||
|
active[type] ? active[type].call(this) : '';
|
||||||
|
});
|
||||||
|
|
||||||
|
//监听页面主按钮操作 end
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user