全面实现模块中按钮动态生成,为下一步使用权限控制按钮做准备;

请使用全新的脚本初始化数据库!
This commit is contained in:
yubaolee
2015-12-06 00:05:32 +08:00
parent 0e98a6e3c8
commit 4a0a606a19
13 changed files with 154 additions and 970 deletions

View File

@@ -34,5 +34,16 @@ namespace OpenAuth.Mvc.Controllers
{
return View();
}
/// <summary>
/// 所有页面按钮控制分部视图
/// </summary>
/// <returns>ActionResult.</returns>
[ChildActionOnly]
public ActionResult MenuHeader()
{
return View();
}
}
}

View File

@@ -10,7 +10,6 @@ namespace OpenAuth.Mvc.Controllers
public class OrgManagerController : BaseController
{
private OrgManagerApp _orgApp;
public OrgManagerController()
{
@@ -77,7 +76,7 @@ namespace OpenAuth.Mvc.Controllers
public string LoadOrg()
{
var orgs = _orgApp.GetAll();
//添加根节点
//添加根节点
orgs.Add(new Org
{
Id = 0,
@@ -98,14 +97,11 @@ namespace OpenAuth.Mvc.Controllers
/// <para>Id为逗号分开的字符串</para>
/// </summary>
/// <returns>System.String.</returns>
public string DelOrg(string Id)
public string DelOrg(int Id)
{
try
{
foreach (var obj in Id.Split(','))
{
_orgApp.DelOrg(int.Parse(obj));
}
_orgApp.DelOrg(Id);
}
catch (Exception e)
{

View File

@@ -623,6 +623,7 @@
<Content Include="Views\ModuleManager\Add.cshtml" />
<Content Include="Views\ModuleManager\LookupMultiForUser.cshtml" />
<Content Include="Views\ModuleManager\LookupMultiForRole.cshtml" />
<None Include="Views\Home\MenuHeader.cshtml" />
<None Include="Views\ModuleElementManager\Index.cshtml" />
<None Include="Views\OrgManager\AddOrg.cshtml" />
<Content Include="Views\OrgManager\LookupParent.cshtml" />

View File

@@ -0,0 +1,51 @@
@using System.Text
<div class="bjui-pageHeader">
<div class="bjui-searchBar">
<div class="bjui-searchBar">
@*<label>名称:</label><input type="text" value="" name="code" size="10">&nbsp;
<button type="submit" class="btn-default" data-icon="search">查询</button>&nbsp;
<a class="btn btn-orange" href="javascript:;" data-toggle="reloadsearch" data-clear-query="true" data-icon="undo">
清空查询
</a></li>*@
<div class="pull-right">
@{
var sb = new StringBuilder();
foreach (var element in ViewBag.Module.Elements)
{
sb.Append("<" + element.Type
+ " data-icon='" + element.Icon + "' "
+ " class='" + element.Class + "' "
+ " onclick='" + element.Script + "' " + element.Attr
+ ">" + element.Name + "</" + element.Type + ">");
}
@Html.Raw(sb.ToString())
}
</div>
</div>
</div>
</div>
<script type="text/javascript">
//获取勾选的值
//column:为从0开始的列标识
function getSelected(gridid, column) {
var selected = $(gridid).data('selectedTrs');
if (selected == null || selected.length == 0) {
$(this).alertmsg('warn', '至少选择一个对象', {
displayMode: 'slide',
title: '重要提示'
});
return null;
}
//todo下面这段只能chrome有效
var records = new Array();
selected.each(function () {
records[records.length] = this.children[column].innerText;
});
return records[0];
}
</script>

View File

@@ -20,19 +20,23 @@ $('#tableButtons').on('afterdelete.bjui.tabledit', function(e) {
<div class="bjui-pageContent tableContent">
<form id="j_custom_form" class="pageForm" data-toggle="validate" method="post">
<table id="tableButtons" class="table table-bordered table-hover table-striped table-top"
data-toggle="tabledit" data-initnum="0" data-action="/ModuleElementManager/AddOrEditButton" data-single-noindex="true">
data-toggle="tabledit" data-initnum="0" data-action="/ModuleElementManager/AddOrEditButton"
data-single-noindex="true">
<thead>
<tr data-idname="Id">
<th width="80" title="元素类型"><input type="text" name="Type" data-rule="required" value="button" size="5"></th>
<th width="80" title="按钮标识"><input type="text" name="DomId" data-rule="required" value="" size="5"></th>
<th width="80" title="按钮显示"><input type="text" name="Name" data-rule="required" value="" size="5"></th>
<th width="120" title="按钮样式"><input type="text" name="Class" data-rule="required" value="btn-green btn-nm" size="5"></th>
<th width="80" title="按钮图标"><input type="text" name="Icon" data-rule="required" value="pencil" size="5"></th>
<th width="120" title="按钮脚本"><textarea name="Script" data-toggle="autoheight" value="javascript:;"></textarea></th>
<th width="120" title="附加属性"><textarea name="Attr" data-toggle="autoheight"></textarea></th>
<th width="80" title="所属模块ID"><input readonly="readonly" type="text" value="@ViewBag.ModuleId"
name="ModuleId"/></th>
<th title="操作" width="100">
<th width="8%" title="元素类型"><input type="text" name="Type" data-rule="required" value="button" size="5"></th>
<th width="10%" title="按钮标识"><input type="text" name="DomId" data-rule="required" value="" size="5"></th>
<th width="10%" title="按钮显示"><input type="text" name="Name" data-rule="required" value="" size="5"></th>
<th width="10%" title="按钮样式"><input type="text" name="Class" data-rule="required" value="btn-green" size="5"></th>
<th width="8%" title="按钮图标"><input type="text" name="Icon" data-rule="required" value="pencil" size="5"></th>
<th width="10%" title="按钮脚本">
<input type="text" name="Script" data-rule="required" value="javascript:;" size="5">
</th>
<th width="24%" title="附加属性"><textarea name="Attr" data-toggle="autoheight"></textarea></th>
<th width="10%" title="所属模块ID">
<input readonly="readonly" type="text" value="@ViewBag.ModuleId" name="ModuleId"/>
</th>
<th title="操作" width="10%">
<a href="javascript:;" class="btn btn-green" data-toggle="dosave">增加</a>
<a href="javascript:;" class="btn btn-red row-del">取消</a>
</th>

View File

@@ -4,7 +4,9 @@
var _gridId = _prefix + "Grid";
var _treeDetail = _prefix + "Detail";
}
<div class="bjui-pageContent">
@{ Html.RenderAction("MenuHeader", "Home");}
<div class="bjui-pageContent tableContent">
<div class="clearfix">
<div style="float: left; width: 220px; overflow: auto;" class="table table-bordered">
<ul id="@_treeId" class="ztree"></ul>
@@ -27,17 +29,11 @@
function loadDataGrid() {
//b-jui的datagrid需要重新处理HTML
$('#@_treeDetail').empty()
.append('<table id="@_gridId" class="table table-bordered"></table>');
.append('<table id="@_gridId" class="table table-bordered table-hover table-striped table-top"></table>');
$(gridid).datagrid({
gridTitle: '列表',
showToolbar: true,
showToolbar: false,
filterThead: false,
toolbarItem: 'refresh, |, del',
toolbarCustom: '<a href="/ModuleManager/Add" class="btn btn-green" data-icon ="plus" ' +
'data-toggle="dialog" data-id="dialog-mask" data-mask="true" data-on-close="refreshGrid">添加</a>' +
'<button class=" btn-green" onclick="editModule()" data-icon="pencil" type="button">编辑</button>' +
'<button class=" btn-green" onclick="assignButton()" data-icon="pencil" type="button">为模块分配按钮</button>',
columns: [
{
name: 'Id',
@@ -93,22 +89,13 @@
},
],
dataUrl: 'ModuleManager/Load?orgId=' + selectedId,
delUrl: 'ModuleManager/Delete',
delPK: "Id",
fullGrid: true,
showLinenumber: true,
showCheckboxcol: true,
paging: true,
filterMult: false,
showTfoot: true,
height: '700',
delCallback: function (delResult) {
if (delResult.statusCode == "200")
loadDataGrid();
else {
$(this).alertmsg('warn', delResult.message);
}
}
height: '700'
});
}
@@ -140,30 +127,9 @@
});
}
//获取勾选的值
//column:为从0开始的列标识
function getSelected(column) {
var selected = $(gridid).data('selectedTrs');
if (selected == null || selected.length == 0) {
$(this).alertmsg('warn', '至少选择一个对象', {
displayMode: 'slide',
title: '重要提示'
});
return null;
}
//todo下面这段只能chrome有效
var records = new Array();
selected.each(function () {
records[records.length] = this.children[column].innerText;
});
return records[0];
}
//删除
function del() {
var selected = getSelected(2);
var selected = getSelected(gridid,2);
if (selected == null) return;
$.get('ModuleManager/Delete?Id=' + selected, function (data) {
@@ -177,7 +143,7 @@
//自定义的编辑按钮
function editModule() {
var selected = getSelected(2);
var selected = getSelected(gridid,2);
if (selected == null) return;
$(this).dialog({
@@ -193,13 +159,13 @@
//为模块分配按钮
function assignButton() {
var selected = getSelected(2);
var selected = getSelected(gridid,2);
if (selected == null) return;
$(this).dialog({
id: 'editDialog',
width: 820,
height: 500,
width: 1000,
height: 700,
mask:true,
url: '/ModuleElementManager/Index?id=' + selected,
title: '为模块分配按钮'

View File

@@ -4,35 +4,35 @@
var _gridId = _prefix + "Grid";
var _treeDetail = _prefix + "Detail";
}
<div class="bjui-pageContent">
@{ Html.RenderAction("MenuHeader", "Home");}
<div class="bjui-pageContent tableContent">
<div class="clearfix">
<div style="float: left; width: 220px; overflow: auto;" class="table table-bordered">
<ul id="@_treeId" class="ztree"></ul>
</div>
<div id="@_treeDetail" style="margin-left: 225px; width: auto;height: auto">
<table id="@_gridId" data-width="100%" data-height="100%" class="table table-bordered"></table>
<div id="@_treeDetail" style="margin-left: 225px; ">
</div>
</div>
</div>
<script type="text/javascript">
var gridid = '#@_gridId';
var selectedId = 0;
var grid;
$(document).ready(function () {
Init(0);
initZtree();
LoadOrg();
});
//加载数据到datagrid
function LoadOrg(data) {
function LoadOrg() {
//b-jui的datagrid需要重新处理HTML
$('#@_treeDetail').empty()
.append('<table id="@_gridId" data-width="100%" data-height="100%" class="table table-bordered"></table>');
$('#@_gridId').datagrid({
gridTitle: '机构列表显示',
showToolbar: true,
.append('<table id="@_gridId" class="table table-bordered table-hover table-striped table-top"></table>');
grid = $('#@_gridId').datagrid({
showToolbar: false,
filterThead: false,
toolbarItem: 'refresh, |, del,edit',
toolbarCustom: '<a href="/OrgManager/AddOrg" class="btn btn-green" data-icon ="plus" ' +
'data-toggle="dialog" data-id="dialog-mask" data-mask="true">添加</a>' ,
columns: [
{
name: 'Id',
@@ -75,9 +75,7 @@
pattern: 'yyyy-MM-dd HH:mm:ss'
}
],
data: data,
delUrl: 'OrgManager/DelOrg',
delPK: "Id",
dataUrl: 'OrgManager/LoadChildren?Id=' + selectedId,
editUrl: 'OrgManager/EditOrg',
editMode: 'dialog',
fullGrid: true,
@@ -86,13 +84,7 @@
paging: false,
filterMult: false,
showTfoot: true,
delCallback: function (delResult) {
if (delResult.statusCode == "200")
Init(selectedId);
else {
$(this).alertmsg('warn', delResult.message);
}
},
height:700,
editCallback: function (delResult) {
if (delResult.statusCode == "200")
Init(selectedId);
@@ -104,14 +96,10 @@
}
function zTreeOnClick(event, treeId, treeNode) {
selectedId = treeNode.Id;
$.getJSON('OrgManager/LoadChildren', {
id: treeNode.Id
}, function (json) {
LoadOrg(json);
});
LoadOrg();
}
function Init(selectedId) {
function initZtree() {
var setting = {
view: {
selectedMulti: false
@@ -135,18 +123,26 @@
$.getJSON('OrgManager/LoadOrg', function (json) {
var zTreeObj = $.fn.zTree.init($('#@_treeId'), setting, json);
zTreeObj.expandAll(true);
$.getJSON('OrgManager/LoadChildren', {
id: selectedId
}, function (data) {
LoadOrg(data);
});
//TODO设置ztree选中不过没看到效果..
var selectedNod = zTreeObj.getNodesByParam('Id', selectedId, null);
zTreeObj.selectNode(selectedNod, false);
});
}
function refreshGrid() {
$('#@_gridId').datagrid('refresh');
}
//删除
function del() {
var selected = getSelected('#@_gridId',2);
if (selected == null) return;
$.getJSON('OrgManager/DelOrg?Id=' + selected, function (data) {
if (data.statusCode == "200")
refreshGrid();
else {
$(this).alertmsg('warn', data.message);
}
});
}
//@@ sourceURL=orgIndex.js
</script>

View File

@@ -4,7 +4,9 @@
var _gridId = _prefix + "Grid";
var _treeDetail = _prefix + "Detail";
}
<div class="bjui-pageContent">
@{ Html.RenderAction("MenuHeader", "Home");}
<div class="bjui-pageContent tableContent">
<div class="clearfix">
<div style="float: left; width: 220px; overflow: auto;" class="table table-bordered">
<ul id="@_treeId" class="ztree"></ul>
@@ -27,17 +29,11 @@
function loadDataGrid() {
//b-jui的datagrid需要重新处理HTML
$('#@_treeDetail').empty()
.append('<table id="@_gridId" class="table table-bordered"></table>');
.append('<table id="@_gridId" class="table table-bordered table-hover table-striped table-top"></table>');
$(gridid).datagrid({
gridTitle: '列表',
showToolbar: true,
showToolbar:false,
filterThead: false,
toolbarItem: 'refresh, |, del',
toolbarCustom: '<a href="/RoleManager/Add" class="btn btn-green" data-icon ="plus" ' +
'data-toggle="dialog" data-id="dialog-mask" data-mask="true" data-on-close="refreshGrid">添加</a>' +
'<button class=" btn-green" onclick="editRole()" data-icon="pencil" type="button">编辑</button>'+
'<button type="button" class="btn btn-green" onclick="openModuleAccess(this)">为角色分配模块</button>',
columns: [
{
name: 'Id',
@@ -85,22 +81,14 @@
}
],
dataUrl: 'RoleManager/Load?orgId=' + selectedId,
delUrl: 'RoleManager/Delete',
delPK: "Id",
fullGrid: true,
showLinenumber: true,
showCheckboxcol: true,
paging: true,
filterMult: false,
showTfoot: true,
height: '700',
delCallback: function (delResult) {
if (delResult.statusCode == "200")
loadDataGrid();
else {
$(this).alertmsg('warn', delResult.message);
}
}
height: '700'
});
}
@@ -132,32 +120,23 @@
});
}
//获取勾选的值
//column:为从0开始的列标识
function getSelected(column) {
var selected = $(gridid).data('selectedTrs');
if (selected == null || selected.length == 0) {
$(this).alertmsg('warn', '至少选择一个对象', {
displayMode: 'slide',
title: '重要提示'
});
return null;
}
//删除
function del() {
var selected = getSelected(gridid, 2);
if (selected == null) return;
//todo下面这段只能chrome有效
var records = new Array();
selected.each(function () {
records[records.length] = this.children[column].innerText;
$.getJSON('RoleManager/Delete?Id=' + selected, function (data) {
if (data.statusCode == "200")
refreshGrid();
else {
$(this).alertmsg('warn', data.message);
}
});
return records[0];
}
//自定义的编辑按钮
function editRole() {
var selected = getSelected(2);
var selected = getSelected(gridid,2);
if (selected == null) return;
$(this).dialog({
@@ -168,7 +147,6 @@
refreshGrid();
}
});
}
function refreshGrid() {
@@ -176,10 +154,10 @@
// loadDataGrid();
}
//用户模块授权按钮
//角色模块授权按钮
function openModuleAccess(obj) {
var selected = getSelected(2);
var selected = getSelected(gridid,2);
if (selected == null) return;
$(obj).dialog({

View File

@@ -1,37 +1,11 @@
@using System.Text
@{
@{
string _prefix = "user";
var _treeId = _prefix + "Tree";
var _gridId = _prefix + "Grid";
var _treeDetail = _prefix + "Detail";
}
<div class="bjui-pageHeader">
<div class="bjui-searchBar">
<div class="bjui-searchBar">
@*<label>名称:</label><input type="text" value="" name="code" size="10">&nbsp;
<button type="submit" class="btn-default" data-icon="search">查询</button>&nbsp;
<a class="btn btn-orange" href="javascript:;" data-toggle="reloadsearch" data-clear-query="true" data-icon="undo">
清空查询
</a></li>*@
<div class="pull-right">
@{
var sb = new StringBuilder();
foreach (var element in ViewBag.Module.Elements)
{
sb.Append("<" + element.Type
+ " data-icon='" + element.Icon + "' "
+ " class='" + element.Class + "' "
+ " onclick='" + element.Script + "' " + element.Attr
+ ">" + element.Name + "</" + element.Type + ">");
}
@Html.Raw(sb.ToString())
}
</div>
</div>
</div>
</div>
@{ Html.RenderAction("MenuHeader", "Home");}
<div class="bjui-pageContent tableContent">
<div class="clearfix">
@@ -148,30 +122,11 @@
});
}
//获取勾选的值
//column:为从0开始的列标识
function getSelected(column) {
var selected = $(gridid).data('selectedTrs');
if (selected == null || selected.length == 0) {
$(this).alertmsg('warn', '至少选择一个对象', {
displayMode: 'slide',
title: '重要提示'
});
return null;
}
//todo下面这段只能chrome有效
var records = new Array();
selected.each(function () {
records[records.length] = this.children[column].innerText;
});
return records[0];
}
//删除
function del() {
var selected = getSelected(2);
var selected = getSelected(gridid,2);
if (selected == null) return;
$.getJSON('UserManager/Delete?Id=' + selected, function (data) {
@@ -185,7 +140,7 @@
//自定义的编辑按钮
function editOrg() {
var selected = getSelected(2);
var selected = getSelected(gridid,2);
if (selected == null) return;
$(this).dialog({
@@ -206,7 +161,7 @@
//用户模块授权按钮
function openModuleAccess(obj) {
var selected = getSelected(2);
var selected = getSelected(gridid,2);
if (selected == null) return;
$(obj).dialog({
@@ -221,7 +176,7 @@
//用户角色授权
function openRoleAccess(obj) {
var selected = getSelected(2);
var selected = getSelected(gridid,2);
if (selected == null) return;
$(obj).dialog({