org manager

This commit is contained in:
yubao 2017-10-27 00:26:06 +08:00
parent b751d8cce8
commit 45a08aaf41
6 changed files with 245 additions and 85 deletions

View File

@ -40,7 +40,7 @@ namespace OpenAuth.Mvc.Controllers
//添加组织提交 //添加组织提交
[HttpPost] [HttpPost]
public string AddOrg(Org org) public string AddOrUpdate(Org org)
{ {
try try
{ {
@ -65,7 +65,7 @@ namespace OpenAuth.Mvc.Controllers
/// </summary> /// </summary>
/// <returns>System.String.</returns> /// <returns>System.String.</returns>
[HttpPost] [HttpPost]
public string DelOrg(string[] ids) public string Delete(string[] ids)
{ {
try try
{ {

View File

@ -216,6 +216,7 @@
<Content Include="images\userface5.jpg" /> <Content Include="images\userface5.jpg" />
<Content Include="images\wechat.jpg" /> <Content Include="images\wechat.jpg" />
<Content Include="js\queryString.js" /> <Content Include="js\queryString.js" />
<Content Include="js\orgs.js" />
<Content Include="js\users.js" /> <Content Include="js\users.js" />
<Content Include="js\bodyTab.js" /> <Content Include="js\bodyTab.js" />
<Content Include="js\index.js" /> <Content Include="js\index.js" />

View File

@ -1,86 +1,82 @@
@{ @section header
Layout = "~/Views/Shared/_Layout.cshtml"; {
<link rel="stylesheet" href="/css/treetable.css" />
} }
<blockquote class="layui-elem-quote news_search toolList">
<div class="layui-inline">
<div class="layui-input-inline">
<input class="layui-input" placeholder="请输入关键字"
name="key" id="key" autocomplete="off">
</div>
<button class="layui-btn" data-type="search">搜索</button>
</div>
@Html.Action("MenuHeader", "Home")
</blockquote>
<!-- #section:basics/content.breadcrumbs --> <div style="display: flex;">
<div class="breadcrumbs" id="breadcrumbs"> <ul id="tree" class="ztree" style="display: inline-block; width: 180px; padding: 10px; border: 1px solid #ddd; overflow: auto;"></ul>
<ul class="breadcrumb"> <table class="layui-table"
<li> lay-data="{height: 'full-80', page:true, id:'mainList'}"
<i class="ace-icon fa fa-home home-icon"></i> lay-filter="list">
<a href="#">机构管理</a> <thead>
</li> <tr>
<li class="active">列表</li> <th lay-data="{checkbox:true, fixed: true}"></th>
</ul><!-- /.breadcrumb --> <th lay-data="{field:'Name', width:150, sort: true, fixed: true}">组织名称</th>
<th lay-data="{field:'CascadeId', width:150}">层级ID</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 class="layui-form-item">
<div id="editDlg" style="display: none"> <div class="layui-input-block">
<div class="col-xs-12"> <button class="layui-btn" lay-submit lay-filter="formSubmit">立即提交</button>
<form class="form-horizontal" id="editForm"> <button type="reset" class="layui-btn layui-btn-primary">重置</button>
<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="Name" v-model="Name" />
</div>
</div> </div>
</div>
<div class="form-group"> </form>
<label class="col-sm-3 control-label no-padding-right" for=""> 排序号 </label>
<div class="col-sm-9">
<input type="text" id="SortNo" 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/orgs.js"></script>
<script src="~/BllScripts/OrgManager.js"></script>
<script src="~/BllScripts/jqEvent.js"></script>

View File

@ -80,16 +80,17 @@ layui.define(['jquery', 'layer'], function (exports) {
Class.prototype.config = { Class.prototype.config = {
text: 'Name', text: 'Name',
key: 'Id', key: 'Id',
parentKey: 'ParentId' parentKey: 'ParentId',
selectedMulti: true //默认是多选
}; };
//加载数据 //加载数据
Class.prototype.render = function () { Class.prototype.render = function () {
var that = this; var that = this;
var setting = { var setting = {
view: { selectedMulti: true }, view: { selectedMulti: that.config.selectedMulti },
check: { check: {
enable: true, enable: that.config.selectedMulti,
chkStyle: "checkbox", chkStyle: "checkbox",
chkboxType: { "Y": "", "N": "" } //去掉勾选时级联 chkboxType: { "Y": "", "N": "" } //去掉勾选时级联
}, },
@ -145,11 +146,12 @@ layui.define(['jquery', 'layer'], function (exports) {
}); });
} }
exports('droptree', function (url, name, id) { exports('droptree', function (url, name, id, selectedMulti) {
var options = { var options = {
nameDOM: name, //显示的文本框ID"#catetoryName" nameDOM: name, //显示的文本框ID"#catetoryName"
idDOM: id, //隐藏的文本框,如:"#categoryId" idDOM: id, //隐藏的文本框,如:"#categoryId"
url: url url: url,
selectedMulti: selectedMulti //是否为多选
} }
inst = new Class(options); inst = new Class(options);
return inst; return inst;

163
OpenAuth.Mvc/js/orgs.js Normal file
View 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("/UserSession/GetOrgs", "#ParentName", "#ParentId", false);
//主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id
var mainList = function (options) {
if (options != undefined) {
$.extend(config, options);
}
table.reload('mainList', {
url: '/OrgManager/LoadChildren',
where: config
});
}
//左边树状机构列表
var ztree = function () {
var url = '/UserSession/GetOrgs';
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({ orgId: treeNode.Id });
}
}
};
var load = function () {
$.getJSON(url, function (json) {
zTreeObj = $.fn.zTree.init($("#tree"), setting, json);
mainList({ orgId: json[0].Id });
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 = "/OrgManager/AddOrUpdate";
if (update) {
url = "/OrgManager/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("/OrgManager/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
})

View File

@ -1,8 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenAuth.Domain; using OpenAuth.Domain;
using OpenAuth.Domain.Interface; using OpenAuth.Domain.Interface;
@ -44,7 +42,7 @@ namespace OpenAuth.Repository
public IEnumerable<Org> GetSubOrgs(string orgId) public IEnumerable<Org> GetSubOrgs(string orgId)
{ {
string cascadeId = "0."; string cascadeId = "0.";
if (orgId != string.Empty) if (!string.IsNullOrEmpty(orgId))
{ {
var org = FindSingle(u => u.Id == orgId); var org = FindSingle(u => u.Id == orgId);
if (org == null) if (org == null)