拆分流程列表为我的列表、待处理、已处理;

调整模块菜单按模块标识映射;
优化API错误提示;
This commit is contained in:
yubaolee 2018-04-04 17:36:41 +08:00
parent 7989b4e563
commit 238550f415
31 changed files with 1223 additions and 639 deletions

Binary file not shown.

View File

@ -29,6 +29,7 @@
{ {
public const string SPECIAL_USER = "SPECIAL_USER"; //指定用户 public const string SPECIAL_USER = "SPECIAL_USER"; //指定用户
public const string ALL_USER = "ALL_USER"; //所有用户 public const string ALL_USER = "ALL_USER"; //所有用户
public const string SPECIAL_ROLE = "SPECIAL_ROLE";
/// <summary> /// <summary>
/// 节点执行权限类型 /// 节点执行权限类型
/// </summary> /// </summary>

View File

@ -53,6 +53,8 @@ namespace OpenAuth.App
FlowInstanceOperationHistory processOperationHistoryEntity = new FlowInstanceOperationHistory FlowInstanceOperationHistory processOperationHistoryEntity = new FlowInstanceOperationHistory
{ {
InstanceId = flowInstance.Id, InstanceId = flowInstance.Id,
CreateUserId = user.User.Id,
CreateUserName = user.User.Name,
Content = "【创建】" Content = "【创建】"
+ user.User.Name + user.User.Name
+ "创建了一个流程进程【" + "创建了一个流程进程【"
@ -73,9 +75,11 @@ namespace OpenAuth.App
ToNodeId = wfruntime.runtimeModel.nextNodeId, ToNodeId = wfruntime.runtimeModel.nextNodeId,
ToNodeName = wfruntime.runtimeModel.nextNode.name, ToNodeName = wfruntime.runtimeModel.nextNode.name,
ToNodeType = wfruntime.runtimeModel.nextNodeType, ToNodeType = wfruntime.runtimeModel.nextNodeType,
TransitionSate = 0 IsFinish = wfruntime.runtimeModel.nextNodeType == 4?1:0,
TransitionSate = 0,
CreateUserId = user.User.Id,
CreateUserName = user.User.Name
}; };
processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0);
#endregion #endregion
UnitWork.Add(flowInstance); UnitWork.Add(flowInstance);
@ -93,7 +97,10 @@ namespace OpenAuth.App
public bool NodeVerification(string instanceId, bool flag, string description = "") public bool NodeVerification(string instanceId, bool flag, string description = "")
{ {
FlowInstance flowInstance = Get(instanceId); FlowInstance flowInstance = Get(instanceId);
FlowInstanceOperationHistory flowInstanceOperationHistory = new FlowInstanceOperationHistory();//操作记录 FlowInstanceOperationHistory flowInstanceOperationHistory = new FlowInstanceOperationHistory
{
InstanceId = instanceId
};//操作记录
FlowInstanceTransitionHistory processTransitionHistoryEntity = null;//流转记录 FlowInstanceTransitionHistory processTransitionHistoryEntity = null;//流转记录
FlowRuntime wfruntime = new FlowRuntime(flowInstance); FlowRuntime wfruntime = new FlowRuntime(flowInstance);
@ -166,15 +173,18 @@ namespace OpenAuth.App
processTransitionHistoryEntity = new FlowInstanceTransitionHistory processTransitionHistoryEntity = new FlowInstanceTransitionHistory
{ {
InstanceId = flowInstance.Id,
CreateUserId = user.Id,
CreateUserName = user.Name,
FromNodeId = wfruntime.runtimeModel.currentNodeId, FromNodeId = wfruntime.runtimeModel.currentNodeId,
FromNodeName = wfruntime.runtimeModel.currentNode.name, FromNodeName = wfruntime.runtimeModel.currentNode.name,
FromNodeType = wfruntime.runtimeModel.currentNodeType, FromNodeType = wfruntime.runtimeModel.currentNodeType,
ToNodeId = wfruntime.runtimeModel.nextNodeId, ToNodeId = wfruntime.runtimeModel.nextNodeId,
ToNodeName = wfruntime.runtimeModel.nextNode.name, ToNodeName = wfruntime.runtimeModel.nextNode.name,
ToNodeType = wfruntime.runtimeModel.nextNodeType, ToNodeType = wfruntime.runtimeModel.nextNodeType,
IsFinish = wfruntime.runtimeModel.nextNodeType ==4?1:0,
TransitionSate = 0 TransitionSate = 0
}; };
processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0);
#endregion #endregion
break; break;
@ -204,19 +214,23 @@ namespace OpenAuth.App
processTransitionHistoryEntity = new FlowInstanceTransitionHistory processTransitionHistoryEntity = new FlowInstanceTransitionHistory
{ {
InstanceId = flowInstance.Id,
CreateUserId = user.Id,
CreateUserName = user.Name,
FromNodeId = wfruntime.runtimeModel.currentNodeId, FromNodeId = wfruntime.runtimeModel.currentNodeId,
FromNodeName = wfruntime.runtimeModel.currentNode.name, FromNodeName = wfruntime.runtimeModel.currentNode.name,
FromNodeType = wfruntime.runtimeModel.currentNodeType, FromNodeType = wfruntime.runtimeModel.currentNodeType,
ToNodeId = wfruntime.runtimeModel.nextNodeId, ToNodeId = wfruntime.runtimeModel.nextNodeId,
ToNodeName = wfruntime.runtimeModel.nextNode.name, ToNodeName = wfruntime.runtimeModel.nextNode.name,
ToNodeType = wfruntime.runtimeModel.nextNodeType, ToNodeType = wfruntime.runtimeModel.nextNodeType,
IsFinish = wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0,
TransitionSate = 0 TransitionSate = 0
}; };
processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0);
#endregion #endregion
flowInstanceOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】同意,备注:" + description; flowInstanceOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name
+ "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】同意,备注:" + description;
} }
else else
{ {
@ -224,7 +238,9 @@ namespace OpenAuth.App
tag.Taged = -1; tag.Taged = -1;
wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, tag); wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, tag);
flowInstanceOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】不同意,备注:" + description; flowInstanceOperationHistory.Content = "【" + "todo name" + "】【"
+ wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】不同意,备注:"
+ description;
} }
} }
#endregion #endregion
@ -243,9 +259,15 @@ namespace OpenAuth.App
/// <returns></returns> /// <returns></returns>
public bool NodeReject(VerificationReq reqest) public bool NodeReject(VerificationReq reqest)
{ {
var user = AuthUtil.GetCurrentUser().User;
FlowInstance flowInstance = Get(reqest.FlowInstanceId); FlowInstance flowInstance = Get(reqest.FlowInstanceId);
FlowInstanceOperationHistory flowInstanceOperationHistory = new FlowInstanceOperationHistory(); FlowInstanceOperationHistory flowInstanceOperationHistory = new FlowInstanceOperationHistory
FlowInstanceTransitionHistory processTransitionHistoryEntity = null; {
InstanceId = reqest.FlowInstanceId,
CreateUserId = user.Id,
CreateUserName = user.Name
};
FlowRuntime wfruntime = new FlowRuntime(flowInstance); FlowRuntime wfruntime = new FlowRuntime(flowInstance);
@ -260,7 +282,6 @@ namespace OpenAuth.App
resnode = reqest.NodeRejectStep; resnode = reqest.NodeRejectStep;
} }
var user = AuthUtil.GetCurrentUser().User;
var tag = new Tag var tag = new Tag
{ {
Description = reqest.VerificationOpinion, Description = reqest.VerificationOpinion,
@ -280,29 +301,32 @@ namespace OpenAuth.App
flowInstance.MakerList = GetMakerList(wfruntime.runtimeModel.nodes[resnode], flowInstance.PreviousId);//当前节点可执行的人信息 flowInstance.MakerList = GetMakerList(wfruntime.runtimeModel.nodes[resnode], flowInstance.PreviousId);//当前节点可执行的人信息
#region #region
processTransitionHistoryEntity = new FlowInstanceTransitionHistory var processTransitionHistoryEntity = new FlowInstanceTransitionHistory
{ {
InstanceId = flowInstance.Id,
CreateUserId = user.Id,
CreateUserName = user.Name,
FromNodeId = wfruntime.runtimeModel.currentNodeId, FromNodeId = wfruntime.runtimeModel.currentNodeId,
FromNodeName = wfruntime.runtimeModel.currentNode.name, FromNodeName = wfruntime.runtimeModel.currentNode.name,
FromNodeType = wfruntime.runtimeModel.currentNodeType, FromNodeType = wfruntime.runtimeModel.currentNodeType,
ToNodeId = wfruntime.runtimeModel.nextNodeId, ToNodeId = wfruntime.runtimeModel.nextNodeId,
ToNodeName = wfruntime.runtimeModel.nextNode.name, ToNodeName = wfruntime.runtimeModel.nextNode.name,
ToNodeType = wfruntime.runtimeModel.nextNodeType, ToNodeType = wfruntime.runtimeModel.nextNodeType,
IsFinish = wfruntime.runtimeModel.nextNodeType ==4?1:0,
TransitionSate = 1 TransitionSate = 1
}; };
//
processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); UnitWork.Add(processTransitionHistoryEntity);
#endregion #endregion
} }
flowInstanceOperationHistory.Content = "【" + "todo name" + "】【" flowInstanceOperationHistory.Content = "【" + "todo name" + "】【"
+ wfruntime.runtimeModel.currentNode.name + wfruntime.runtimeModel.currentNode.name
+ "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】驳回,备注:" + reqest.VerificationOpinion; + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】驳回,备注:" + reqest.VerificationOpinion;
UnitWork.Update(flowInstance); UnitWork.Update(flowInstance);
UnitWork.Add(flowInstanceOperationHistory); UnitWork.Add(flowInstanceOperationHistory);
UnitWork.Add(processTransitionHistoryEntity);
UnitWork.Save(); UnitWork.Save();
return true; return true;
@ -361,32 +385,38 @@ namespace OpenAuth.App
/// <returns></returns> /// <returns></returns>
private string GetMakerList(FlowNode node, string processId) private string GetMakerList(FlowNode node, string processId)
{ {
string makerlsit = ""; string makerList = "";
if (node.setInfo == null) if (node.setInfo == null)
{ {
makerlsit = "-1"; makerList = "-1";
} }
else else
{ {
if (node.setInfo.NodeDesignate == Setinfo.ALL_USER)//所有成员 if (node.setInfo.NodeDesignate == Setinfo.ALL_USER)//所有成员
{ {
makerlsit = "1"; makerList = "1";
} }
else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_USER)//指定成员 else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_USER)//指定成员
{ {
// makerlsit = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.role, makerlsit); makerList = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.users, makerList);
// makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.post, makerlsit);
// makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.usergroup, makerlsit);
makerlsit = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.users, makerlsit);
if (makerlsit == "") if (makerList == "")
{ {
makerlsit = "-1"; makerList = "-1";
}
}
else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_ROLE)
{
makerList = GenericHelpers.ArrayToString(node.setInfo.NodeDesignateData.role, makerList);
if (makerList == "")
{
makerList = "-1";
} }
} }
} }
return makerlsit; return makerList;
} }
/// <summary> /// <summary>
@ -419,21 +449,25 @@ namespace OpenAuth.App
{ {
//todo:待办/已办/我的 //todo:待办/已办/我的
var result = new TableData(); var result = new TableData();
var user = AuthUtil.GetCurrentUser();
result.count = UnitWork.Find<FlowInstance>(u => u.CreateUserId == request.userid).Count(); if (request.type == "wait") //待办事项
if (request.type == "inbox") //待办事项
{ {
result.data = UnitWork.Find<FlowInstance>(request.page, request.limit, "CreateDate descending", null).ToList(); result.count = UnitWork.Find<FlowInstance>(u => u.MakerList =="1" || u.MakerList.Contains(user.User.Id)).Count();
result.data = UnitWork.Find<FlowInstance>(request.page, request.limit, "CreateDate descending",
u => u.MakerList == "1" || u.MakerList.Contains(user.User.Id)).ToList();
} }
else if (request.type == "outbox") //已办事项 else if (request.type == "disposed") //已办事项
{ {
result.data = UnitWork.Find<FlowInstance>(request.page, request.limit, "CreateDate descending", null).ToList(); result.data = UnitWork.Find<FlowInstance>(request.page, request.limit, "CreateDate descending", null).ToList();
} }
else //我的流程 else //我的流程
{ {
result.data = UnitWork.Find<FlowInstance>(request.page, request.limit, "CreateDate descending", null).ToList(); result.count = UnitWork.Find<FlowInstance>(u => u.CreateUserId == user.User.Id).Count();
result.data = UnitWork.Find<FlowInstance>(request.page, request.limit,
"CreateDate descending", u => u.CreateUserId == user.User.Id).ToList();
} }
return result; return result;

View File

@ -3,6 +3,5 @@
public class QueryFlowInstanceListReq : PageReq public class QueryFlowInstanceListReq : PageReq
{ {
public string type { get; set; } public string type { get; set; }
public string userid { get; set; }
} }
} }

View File

@ -55,6 +55,8 @@ namespace OpenAuth.App.Response
/// </summary> /// </summary>
public int SortNo { get; set; } public int SortNo { get; set; }
public string Code { get; set; }
/// <summary> /// <summary>
/// 模块中的元素 /// 模块中的元素
/// </summary> /// </summary>

View File

@ -43,8 +43,6 @@ namespace OpenAuth.App.SSO
filterContext.Result = LoginResult(""); filterContext.Result = LoginResult("");
return; return;
} }
else
{
//验证 //验证
if (AuthUtil.CheckLogin(token, request.RawUrl) == false) if (AuthUtil.CheckLogin(token, request.RawUrl) == false)
{ {
@ -52,7 +50,6 @@ namespace OpenAuth.App.SSO
filterContext.Result = LoginResult(""); filterContext.Result = LoginResult("");
return; return;
} }
}
base.OnActionExecuting(filterContext); base.OnActionExecuting(filterContext);
} }

View File

@ -22,6 +22,22 @@ namespace OpenAuth.Mvc.Controllers
return View(); return View();
} }
/// <summary>
/// 待处理的流程
/// </summary>
public ActionResult Wait()
{
return View();
}
/// <summary>
/// 已完成的流程
/// </summary>
public ActionResult Disposed()
{
return View();
}
public ActionResult Edit() public ActionResult Edit()
{ {
return View(); return View();

View File

@ -70,10 +70,20 @@ namespace OpenAuth.Mvc.Controllers
return JsonHelper.Instance.Serialize(menus); return JsonHelper.Instance.Serialize(menus);
} }
/// <summary>
public string LoadAuthorizedMenus() /// 获取发起页面的菜单权限
/// </summary>
/// <returns>System.String.</returns>
public string LoadAuthorizedMenus(string modulecode)
{ {
return JsonHelper.Instance.Serialize(CurrentModule.Elements); var user = AuthUtil.GetCurrentUser();
var module = user.Modules.First(u =>u.Code == modulecode);
if (module != null)
{
return JsonHelper.Instance.Serialize(module.Elements);
}
return "";
} }

View File

@ -198,6 +198,8 @@
<Content Include="js\utils.js" /> <Content Include="js\utils.js" />
<Content Include="userJs\flowInstanceOp.js" /> <Content Include="userJs\flowInstanceOp.js" />
<Content Include="userJs\flowInstanceEdit.js" /> <Content Include="userJs\flowInstanceEdit.js" />
<Content Include="userJs\flowInstanceWait.js" />
<Content Include="userJs\flowInstanceDisposed.js" />
<Content Include="userJs\flowSchemes.js" /> <Content Include="userJs\flowSchemes.js" />
<Content Include="userJs\formEdit.js" /> <Content Include="userJs\formEdit.js" />
<Content Include="userJs\nodeInfo.js" /> <Content Include="userJs\nodeInfo.js" />
@ -635,6 +637,8 @@
<Content Include="Views\FlowInstances\Edit.cshtml" /> <Content Include="Views\FlowInstances\Edit.cshtml" />
<Content Include="Views\FlowInstances\Verification.cshtml" /> <Content Include="Views\FlowInstances\Verification.cshtml" />
<Content Include="Views\Forms\Edit.cshtml" /> <Content Include="Views\Forms\Edit.cshtml" />
<Content Include="Views\FlowInstances\Disposed.cshtml" />
<Content Include="Views\FlowInstances\Wait.cshtml" />
</ItemGroup> </ItemGroup>
<ItemGroup /> <ItemGroup />
<ItemGroup> <ItemGroup>

View File

@ -0,0 +1,53 @@
@section header
{
<link rel="stylesheet" href="/css/treetable.css" />
}
<blockquote class="layui-elem-quote news_search toolList" id="menus">
</blockquote>
<div class="layui-row">
<div class="layui-col-xs3">
<ul id="tree" class="ztree"
style="padding: 2px; border: 1px solid #ddd; overflow: auto;">
</ul>
</div>
<div class="layui-col-xs9">
<table class="layui-table"
lay-data="{height: 'full-80', page:true, id:'mainList'}"
lay-filter="list" lay-size="sm">
<thead>
<tr>
<th lay-data="{checkbox:true, fixed: true}"></th>
<th lay-data="{field:'Id', width:150}">主键Id</th>
<th lay-data="{field:'IsFinish', width:150, templet:'#IsFinish'}">是否完成</th>
<th lay-data="{field:'CustomName', width:150}">实例名称</th>
<th lay-data="{field:'Code', width:150}">实例编号</th>
<th lay-data="{field:'ActivityName', width:150}">当前节点名称</th>
<th lay-data="{field:'CreateDate', width:150}">创建时间</th>
<th lay-data="{field:'CreateUserName', width:150}">创建用户</th>
<th lay-data="{field:'Description', width:150}">实例备注</th>
<th lay-data="{fixed: 'right', width:160, align:'center', toolbar: '#barList'}"></th>
</tr>
</thead>
</table>
<script type="text/html" id="IsFinish">
{{# if(d.IsFinish == 0){ }}
<span class="layui-badge layui-bg-blue">正在运行</span>
{{# } else if(d.IsFinish == 4){ }}
<span class="layui-badge">被驳回</span>
{{# } else{}}
<span class="layui-badge layui-bg-green">已完成</span>
{{# } }}
</script>
</div>
</div>
<script type="text/html" id="barList">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
</script>
<script type="text/javascript" src="/layui/layui.js"></script>
<script type="text/javascript" src="/userJs/flowInstanceDisposed.js"></script>

View File

@ -0,0 +1,53 @@
@section header
{
<link rel="stylesheet" href="/css/treetable.css" />
}
<blockquote class="layui-elem-quote news_search toolList" id="menus">
</blockquote>
<div class="layui-row">
<div class="layui-col-xs3">
<ul id="tree" class="ztree"
style="padding: 2px; border: 1px solid #ddd; overflow: auto;">
</ul>
</div>
<div class="layui-col-xs9">
<table class="layui-table"
lay-data="{height: 'full-80', page:true, id:'mainList'}"
lay-filter="list" lay-size="sm">
<thead>
<tr>
<th lay-data="{checkbox:true, fixed: true}"></th>
<th lay-data="{field:'Id', width:150}">主键Id</th>
<th lay-data="{field:'IsFinish', width:150, templet:'#IsFinish'}">是否完成</th>
<th lay-data="{field:'CustomName', width:150}">实例名称</th>
<th lay-data="{field:'Code', width:150}">实例编号</th>
<th lay-data="{field:'ActivityName', width:150}">当前节点名称</th>
<th lay-data="{field:'CreateDate', width:150}">创建时间</th>
<th lay-data="{field:'CreateUserName', width:150}">创建用户</th>
<th lay-data="{field:'Description', width:150}">实例备注</th>
<th lay-data="{fixed: 'right', width:160, align:'center', toolbar: '#barList'}"></th>
</tr>
</thead>
</table>
<script type="text/html" id="IsFinish">
{{# if(d.IsFinish == 0){ }}
<span class="layui-badge layui-bg-blue">正在运行</span>
{{# } else if(d.IsFinish == 4){ }}
<span class="layui-badge">被驳回</span>
{{# } else{}}
<span class="layui-badge layui-bg-green">已完成</span>
{{# } }}
</script>
</div>
</div>
<script type="text/html" id="barList">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
</script>
<script type="text/javascript" src="/layui/layui.js"></script>
<script type="text/javascript" src="/userJs/flowInstanceWait.js"></script>

View File

@ -2,8 +2,7 @@
{ {
<link rel="stylesheet" href="/css/treetable.css" /> <link rel="stylesheet" href="/css/treetable.css" />
} }
<blockquote class="layui-elem-quote news_search toolList"> <blockquote class="layui-elem-quote news_search toolList" id="menus">
@Html.Action("MenuHeader", "Home")
</blockquote> </blockquote>
<div class="layui-row"> <div class="layui-row">

View File

@ -15,6 +15,7 @@
<th lay-data="{checkbox:true, fixed: true}"></th> <th lay-data="{checkbox:true, fixed: true}"></th>
<th lay-data="{field:'Name', width:120, sort: true, fixed: true}">模块名称</th> <th lay-data="{field:'Name', width:120, sort: true, fixed: true}">模块名称</th>
<th lay-data="{field:'CascadeId', width:80}">层级ID</th> <th lay-data="{field:'CascadeId', width:80}">层级ID</th>
<th lay-data="{field:'Code', width:80}">模块标识</th>
<th lay-data="{field:'Url', width:200}">Url</th> <th lay-data="{field:'Url', width:200}">Url</th>
<th lay-data="{field:'IconName', width:60,templet: '#iconTpl'}">图标</th> <th lay-data="{field:'IconName', width:60,templet: '#iconTpl'}">图标</th>
<th lay-data="{field:'ParentName', width:135}">父节点名称</th> <th lay-data="{field:'ParentName', width:135}">父节点名称</th>
@ -79,7 +80,13 @@
placeholder="请输入部门名称" autocomplete="off" class="layui-input"> placeholder="请输入部门名称" autocomplete="off" class="layui-input">
</div> </div>
</div> </div>
<div class="layui-form-item">
<label class="layui-form-label">模块标识</label>
<div class="layui-input-block">
<input type="text" name="Code" v-model="Code"
placeholder="比如Module" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">URL地址</label> <label class="layui-form-label">URL地址</label>
<div class="layui-input-block"> <div class="layui-input-block">

View File

@ -26,9 +26,9 @@ layui.define("jquery", function (exports) {
//加载菜单 //加载菜单
$.fn.extend({ $.fn.extend({
loadMenus: function () { loadMenus: function (modulecode) {
var dom = $(this); var dom = $(this);
$.ajax("/ModuleManager/LoadAuthorizedMenus", $.ajax("/ModuleManager/LoadAuthorizedMenus?modulecode=" + modulecode,
{ {
async: false async: false
, success: function (data) { , success: function (data) {

View File

@ -8,7 +8,7 @@ layui.config({
var openauth = layui.openauth; var openauth = layui.openauth;
layui.droptree("/Categories/AllTypes", "#TypeName", "#TypeId", false); layui.droptree("/Categories/AllTypes", "#TypeName", "#TypeId", false);
$("#menus").loadMenus(); $("#menus").loadMenus("Category");
//主列表加载,可反复调用进行刷新 //主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id var config= {}; //table的参数如搜索key点击tree的id

View File

@ -0,0 +1,184 @@
layui.config({
base: "/js/"
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth','utils'], function () {
var form = layui.form,
layer = (top == undefined || top.layer === undefined )? layui.layer : top.layer,
$ = layui.jquery;
var table = layui.table;
var openauth = layui.openauth;
var thiswin = (top == undefined) ? window : top.window;
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus("FlowInstanceDisposed");
//主列表加载,可反复调用进行刷新
var config= {
type:'disposed'
}; //table的参数如搜索key点击tree的id
var mainList = function (options) {
if (options != undefined) {
$.extend(config, options);
}
table.reload('mainList', {
url: '/FlowInstances/Load',
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);
var newNode = { Name: "根节点", Id: null, ParentId: "" };
json.push(newNode);
zTreeObj.addNodes(null, json);
mainList({ orgId: "" });
zTreeObj.expandAll(true);
});
};
load();
return {
reload: load
}
}();
$("#tree").height($("div.layui-table-view").height());
//添加(编辑)对话框
var editDlg = function () {
var update = false; //是否为更新
var show = function (data) {
var title = update ? "编辑信息" : "添加";
layer.open({
type: 2,
area: ['800px', '700px'], //宽高
maxmin: true, //开启最大化最小化按钮
title: title,
content: '/flowInstances/edit?id=' + data.Id,
btn: ['保存', '关闭'],
yes: function (index, layero) {
var iframeWin = thiswin[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象执行iframe页的方法iframeWin.method();
iframeWin.submit();
},
btn2: function (index) {
layer.close(index);
mainList();
},
cancel: function (index) {
layer.close(index);
mainList();
}
});
}
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("/FlowInstances/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]);
}
, btnVerification: function () { //处理
var checkStatus = table.checkStatus('mainList')
, data = checkStatus.data;
if (data.length != 1) {
layer.msg("请选择要处理的流程,且同时只能选择一条");
return;
}
layer.open({
type: 2,
area: ['750px', '550px'], //宽高
maxmin: true, //开启最大化最小化按钮
title: '处理流程',
content: '/flowInstances/Verification?id=' + data[0].Id,
btn: ['保存', '关闭'],
yes: function (index, layero) {
var iframeWin = thiswin[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象执行iframe页的方法iframeWin.method();
iframeWin.submit();
},
btn2: function (index) {
layer.close(index);
mainList();
},
cancel: function (index) {
layer.close(index);
mainList();
}
});
}
, search: function () { //搜索
mainList({ key: $('#key').val() });
}
, btnRefresh: function() {
mainList();
}
};
$('.toolList .layui-btn').on('click', function () {
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
//监听页面主按钮操作 end
})

View File

@ -0,0 +1,184 @@
layui.config({
base: "/js/"
}).use(['form','vue', 'ztree', 'layer', 'jquery', 'table','droptree','openauth','utils'], function () {
var form = layui.form,
layer = (top == undefined || top.layer === undefined )? layui.layer : top.layer,
$ = layui.jquery;
var table = layui.table;
var openauth = layui.openauth;
var thiswin = (top == undefined) ? window : top.window;
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus("FlowInstanceWait");
//主列表加载,可反复调用进行刷新
var config= {
type:'wait'
}; //table的参数如搜索key点击tree的id
var mainList = function (options) {
if (options != undefined) {
$.extend(config, options);
}
table.reload('mainList', {
url: '/FlowInstances/Load',
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);
var newNode = { Name: "根节点", Id: null, ParentId: "" };
json.push(newNode);
zTreeObj.addNodes(null, json);
mainList({ orgId: "" });
zTreeObj.expandAll(true);
});
};
load();
return {
reload: load
}
}();
$("#tree").height($("div.layui-table-view").height());
//添加(编辑)对话框
var editDlg = function () {
var update = false; //是否为更新
var show = function (data) {
var title = update ? "编辑信息" : "添加";
layer.open({
type: 2,
area: ['800px', '700px'], //宽高
maxmin: true, //开启最大化最小化按钮
title: title,
content: '/flowInstances/edit?id=' + data.Id,
btn: ['保存', '关闭'],
yes: function (index, layero) {
var iframeWin = thiswin[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象执行iframe页的方法iframeWin.method();
iframeWin.submit();
},
btn2: function (index) {
layer.close(index);
mainList();
},
cancel: function (index) {
layer.close(index);
mainList();
}
});
}
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("/FlowInstances/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]);
}
, btnVerification: function () { //处理
var checkStatus = table.checkStatus('mainList')
, data = checkStatus.data;
if (data.length != 1) {
layer.msg("请选择要处理的流程,且同时只能选择一条");
return;
}
layer.open({
type: 2,
area: ['750px', '550px'], //宽高
maxmin: true, //开启最大化最小化按钮
title: '处理流程',
content: '/flowInstances/Verification?id=' + data[0].Id,
btn: ['保存', '关闭'],
yes: function (index, layero) {
var iframeWin = thiswin[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象执行iframe页的方法iframeWin.method();
iframeWin.submit();
},
btn2: function (index) {
layer.close(index);
mainList();
},
cancel: function (index) {
layer.close(index);
mainList();
}
});
}
, search: function () { //搜索
mainList({ key: $('#key').val() });
}
, btnRefresh: function() {
mainList();
}
};
$('.toolList .layui-btn').on('click', function () {
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
//监听页面主按钮操作 end
})

View File

@ -9,7 +9,7 @@
var thiswin = (top == undefined) ? window : top.window; var thiswin = (top == undefined) ? window : top.window;
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds"); layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus(); $("#menus").loadMenus("FlowInstance");
//主列表加载,可反复调用进行刷新 //主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id var config= {}; //table的参数如搜索key点击tree的id
@ -151,7 +151,7 @@
content: '/flowInstances/Verification?id=' + data[0].Id, content: '/flowInstances/Verification?id=' + data[0].Id,
btn: ['保存', '关闭'], btn: ['保存', '关闭'],
yes: function (index, layero) { yes: function (index, layero) {
var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象执行iframe页的方法iframeWin.method(); var iframeWin = thiswin[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象执行iframe页的方法iframeWin.method();
iframeWin.submit(); iframeWin.submit();
}, },
btn2: function (index) { btn2: function (index) {

View File

@ -10,7 +10,7 @@
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds"); layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus(); $("#menus").loadMenus("FlowScheme");
//主列表加载,可反复调用进行刷新 //主列表加载,可反复调用进行刷新
var config = {}; //table的参数如搜索key点击tree的id var config = {}; //table的参数如搜索key点击tree的id

View File

@ -12,7 +12,7 @@
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds"); layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus(); $("#menus").loadMenus("Form");
//主列表加载,可反复调用进行刷新 //主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id var config= {}; //table的参数如搜索key点击tree的id
var mainList = function (options) { var mainList = function (options) {

View File

@ -8,7 +8,7 @@ layui.config({
var openauth = layui.openauth; var openauth = layui.openauth;
layui.droptree("/UserSession/QueryModuleList", "#ParentName", "#ParentId", false); layui.droptree("/UserSession/QueryModuleList", "#ParentName", "#ParentId", false);
$("#menus").loadMenus(); $("#menus").loadMenus("Module");
//主列表加载,可反复调用进行刷新 //主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id var config= {}; //table的参数如搜索key点击tree的id

View File

@ -8,7 +8,7 @@ layui.config({
var openauth = layui.openauth; var openauth = layui.openauth;
layui.droptree("/UserSession/GetOrgs", "#ParentName", "#ParentId", false); layui.droptree("/UserSession/GetOrgs", "#ParentName", "#ParentId", false);
$("#menus").loadMenus(); $("#menus").loadMenus("Org");
//主列表加载,可反复调用进行刷新 //主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id var config= {}; //table的参数如搜索key点击tree的id

View File

@ -8,7 +8,7 @@ layui.config({
var openauth = layui.openauth; var openauth = layui.openauth;
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds"); layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus(); $("#menus").loadMenus("Role");
//主列表加载,可反复调用进行刷新 //主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id var config= {}; //table的参数如搜索key点击tree的id

View File

@ -8,7 +8,7 @@ layui.config({
var openauth = layui.openauth; var openauth = layui.openauth;
layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds"); layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
$("#menus").loadMenus(); $("#menus").loadMenus("User");
//主列表加载,可反复调用进行刷新 //主列表加载,可反复调用进行刷新
var config= {}; //table的参数如搜索key点击tree的id var config= {}; //table的参数如搜索key点击tree的id

View File

@ -27,6 +27,7 @@ namespace OpenAuth.Repository.Domain
this.Status= 0; this.Status= 0;
this.Vector= string.Empty; this.Vector= string.Empty;
this.SortNo= 0; this.SortNo= 0;
this.Code = string.Empty;
} }
/// <summary> /// <summary>
@ -63,5 +64,11 @@ namespace OpenAuth.Repository.Domain
/// </summary> /// </summary>
public int SortNo { get; set; } public int SortNo { get; set; }
/// <summary>
/// 模块标识
/// </summary>
/// <value>The code.</value>
public string Code { get; set; }
} }
} }

View File

@ -72,6 +72,10 @@ namespace OpenAuth.Repository.Mapping
.HasColumnName("ParentId") .HasColumnName("ParentId")
.HasMaxLength(50) .HasMaxLength(50)
.IsOptional(); .IsOptional();
Property(t => t.Code)
.HasColumnName("Code")
.HasMaxLength(50)
.IsOptional();
// Relationships // Relationships
} }

View File

@ -28,7 +28,7 @@ namespace OpenAuth.UnitTest
{ {
_runApp.Verification(new VerificationReq _runApp.Verification(new VerificationReq
{ {
FlowInstanceId = "c4aa73f2-d5ea-43c3-8b7e-903e31ba5828", FlowInstanceId = "132333fe-d8db-4373-b101-b0ac574d3b1a",
VerificationFinally = "3" VerificationFinally = "3"
}); });
} }

View File

@ -14,7 +14,7 @@
1. 484498493【已满】 1. 484498493【已满】
1. 626433139【满】 1. 626433139【满】
1. 566344079 1. 566344079

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff