mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2026-07-31 19:16:49 +08:00
Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
65f1d3d761 | ||
|
|
9cddee643a | ||
|
|
37da0bcb00 | ||
|
|
8a1491eec7 | ||
|
|
627e5b0d2c | ||
|
|
96a0b89ceb | ||
|
|
1034a772c0 | ||
|
|
985e637659 | ||
|
|
68274bb7f8 | ||
|
|
3915e435d7 | ||
|
|
90c6ebe893 | ||
|
|
c7c4e1eb30 | ||
|
|
bdaba9984b | ||
|
|
22655eb163 | ||
|
|
2348a7d92a | ||
|
|
e4da666457 | ||
|
|
875af85927 | ||
|
|
804a759d46 | ||
|
|
552506d45e | ||
|
|
cd808b8ffa | ||
|
|
e66678bdf1 | ||
|
|
fda898fff6 | ||
|
|
3f496f1cca | ||
|
|
b604f68aa6 | ||
|
|
989f8cd2bc | ||
|
|
cd81340814 | ||
|
|
00718929e7 |
12
CHANGELOG.md
12
CHANGELOG.md
@@ -1,11 +1,15 @@
|
||||
## v5.2 (未发布版本)
|
||||
## v6.1
|
||||
|
||||
- **新特性**
|
||||
|
||||
- [新增] 增加流程实例可以选择用户,而不是通过流程设计的方式[#I1W8AV](https://gitee.com/dotnetchina/OpenAuth.Net/issues/I1W8AV)
|
||||
- [新增] 全网最好用的打印解决方案。详情:[智能打印](http://doc.openauth.net.cn/pro/printerplan.html);
|
||||
- [新增] 全面支持SqlSugar Orm。详情:[sqlsugar访问数据库](http://doc.openauth.net.cn/core/sqlsugar.html);
|
||||
- [新增] 全面更新mvc版本,升级layui版本至最新v2.8.11;
|
||||
- [新增] 升级.Net版本6.0,所有三方组件全面更新;
|
||||
|
||||
- **突破性变化**
|
||||
|
||||
- [新增] 流程可以选择直接上级和部门负责人;
|
||||
|
||||
- **问题修复**
|
||||
|
||||
@@ -17,7 +21,7 @@
|
||||
|
||||
---
|
||||
|
||||
## v5.1 (当前版本)
|
||||
## v5.1
|
||||
|
||||
- **新特性**
|
||||
|
||||
@@ -44,7 +48,7 @@
|
||||
|
||||
---
|
||||
|
||||
## v5.0.1 (当前版本)
|
||||
## v5.0.1
|
||||
|
||||
- **新特性**
|
||||
|
||||
|
||||
@@ -35,6 +35,10 @@ namespace OpenAuth.App
|
||||
|
||||
public T Get(string id)
|
||||
{
|
||||
if (SugarClient.CurrentConnectionConfig.DbType == DbType.PostgreSQL)
|
||||
{
|
||||
return SugarClient.Queryable<T>().Where("\"Id\"=@id", new {id = id}).First();
|
||||
}
|
||||
return SugarClient.Queryable<T>().Where("Id=@id", new {id = id}).First();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,486 +1,486 @@
|
||||
// ***********************************************************************
|
||||
// Assembly : OpenAuth.App
|
||||
// Author : 李玉宝
|
||||
// Created : 07-19-2018
|
||||
//
|
||||
// Last Modified By : 李玉宝
|
||||
// Last Modified On : 07-19-2018
|
||||
// ***********************************************************************
|
||||
// <copyright file="FlowRuntime.cs" company="OpenAuth.App">
|
||||
// Copyright (c) http://www.openauth.net.cn. All rights reserved.
|
||||
// </copyright>
|
||||
// <summary>
|
||||
// 一个正在运行中的流程实例
|
||||
//</summary>
|
||||
// ***********************************************************************
|
||||
|
||||
using Infrastructure;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OpenAuth.Repository.Domain;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using Castle.Core.Internal;
|
||||
|
||||
namespace OpenAuth.App.Flow
|
||||
{
|
||||
public class FlowRuntime
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
public FlowRuntime(FlowInstance instance)
|
||||
{
|
||||
dynamic schemeContentJson = instance.SchemeContent.ToJson();//获取工作流模板内容的json对象;
|
||||
|
||||
InitLines(schemeContentJson);
|
||||
InitNodes(schemeContentJson);
|
||||
|
||||
currentNodeId = (instance.ActivityId == "" ? startNodeId : instance.ActivityId);
|
||||
currentNodeType = GetNodeType(currentNodeId);
|
||||
FrmData = instance.FrmData;
|
||||
title = schemeContentJson.title;
|
||||
initNum = schemeContentJson.initNum?? 0;
|
||||
previousId = instance.PreviousId;
|
||||
flowInstanceId = instance.Id;
|
||||
|
||||
//会签开始节点和流程结束节点没有下一步
|
||||
if (currentNodeType == 0 || currentNodeType == 4)
|
||||
{
|
||||
nextNodeId = "-1";
|
||||
nextNodeType = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
nextNodeId = GetNextNodeId();//下一个节点
|
||||
nextNodeType = GetNodeType(nextNodeId);
|
||||
}
|
||||
}
|
||||
|
||||
#region 私有方法
|
||||
|
||||
/// <summary>
|
||||
/// 获取工作流节点的字典列表:key节点id
|
||||
/// </summary>
|
||||
/// <param name="schemeContentJson"></param>
|
||||
/// <returns></returns>
|
||||
private void InitNodes(dynamic schemeContentJson)
|
||||
{
|
||||
Nodes = new Dictionary<string, FlowNode>();
|
||||
foreach (JObject item in schemeContentJson.nodes)
|
||||
{
|
||||
var node = item.ToObject<FlowNode>();
|
||||
if (!Nodes.ContainsKey(node.id))
|
||||
{
|
||||
Nodes.Add(node.id, node);
|
||||
}
|
||||
if (node.type == FlowNode.START)
|
||||
{
|
||||
this.startNodeId = node.id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void InitLines(dynamic schemeContentJson)
|
||||
{
|
||||
Lines = new List<FlowLine>();
|
||||
FromNodeLines = new Dictionary<string, List<FlowLine>>();
|
||||
ToNodeLines = new Dictionary<string, List<FlowLine>>();
|
||||
foreach (JObject item in schemeContentJson.lines)
|
||||
{
|
||||
var line = item.ToObject<FlowLine>();
|
||||
Lines.Add(line);
|
||||
|
||||
if (!FromNodeLines.ContainsKey(line.from))
|
||||
{
|
||||
List<FlowLine> d = new List<FlowLine> { line };
|
||||
FromNodeLines.Add(line.from, d);
|
||||
}
|
||||
else
|
||||
{
|
||||
FromNodeLines[line.from].Add(line);
|
||||
}
|
||||
|
||||
if (!ToNodeLines.ContainsKey(line.to))
|
||||
{
|
||||
List<FlowLine> d = new List<FlowLine> { line };
|
||||
ToNodeLines.Add(line.to, d);
|
||||
}
|
||||
else
|
||||
{
|
||||
ToNodeLines[line.to].Add(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取下一个节点
|
||||
/// </summary>
|
||||
private string GetNextNodeId(string nodeId = null)
|
||||
{
|
||||
var lines = nodeId == null ? FromNodeLines[currentNodeId] : FromNodeLines[nodeId];
|
||||
if (lines.Count == 0)
|
||||
{
|
||||
throw new Exception("无法寻找到下一个节点");
|
||||
}
|
||||
|
||||
if (FrmData == "") return lines[0].to;
|
||||
|
||||
FrmData = FrmData.ToLower();//统一转小写
|
||||
var frmDataJson = FrmData.ToJObject();//获取数据内容
|
||||
|
||||
foreach (var l in lines)
|
||||
{
|
||||
if (!(l.Compares.IsNullOrEmpty()) &&l.Compare(frmDataJson))
|
||||
{
|
||||
return l.to;
|
||||
}
|
||||
}
|
||||
|
||||
return lines[0].to;
|
||||
}
|
||||
|
||||
#endregion 私有方法
|
||||
|
||||
#region 共有方法
|
||||
|
||||
//获取下一个节点
|
||||
public FlowNode GetNextNode(string nodeId = null)
|
||||
{
|
||||
return Nodes[GetNextNodeId(nodeId)];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取实例接下来运行的状态
|
||||
/// </summary>
|
||||
/// <returns>-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束</returns>
|
||||
public int GetNextNodeType()
|
||||
{
|
||||
if (nextNodeId != "-1")
|
||||
{
|
||||
return GetNodeType(nextNodeId);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取节点类型 0会签开始,1会签结束,2一般节点,开始节点,4流程运行结束
|
||||
/// </summary>
|
||||
/// <param name="nodeId"></param>
|
||||
/// <returns></returns>
|
||||
public int GetNodeType(string nodeId)
|
||||
{
|
||||
switch (Nodes[nodeId].type)
|
||||
{
|
||||
//会签开始节点
|
||||
case FlowNode.FORK:
|
||||
return 0;
|
||||
//会签结束节点
|
||||
case FlowNode.JOIN:
|
||||
return 1;
|
||||
//结束节点
|
||||
case FlowNode.END:
|
||||
return 4;
|
||||
//开始节点
|
||||
case FlowNode.START:
|
||||
return 3;
|
||||
|
||||
default:
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 节点会签审核
|
||||
/// </summary>
|
||||
/// <param name="nodeId">会签时,currentNodeId是会签开始节点。这个表示当前正在处理的节点</param>
|
||||
/// <param name="tag"></param>
|
||||
/// <returns>-1不通过,1等待,其它通过</returns>
|
||||
public string NodeConfluence(string nodeId, Tag tag)
|
||||
{
|
||||
var forkNode = Nodes[currentNodeId]; //会签开始节点
|
||||
FlowNode nextNode = GetNextNode(nodeId); //获取当前处理的下一个节点
|
||||
|
||||
int forkNumber = FromNodeLines[currentNodeId].Count; //直接与会签节点连接的点,即会签分支数目
|
||||
string res =string.Empty; //记录会签的结果,默认正在会签
|
||||
if (forkNode.setInfo.NodeConfluenceType == "one") //有一个步骤通过即可
|
||||
{
|
||||
if (tag.Taged == (int) TagState.Ok)
|
||||
{
|
||||
if (nextNode.type == FlowNode.JOIN) //下一个节点是会签结束,则该线路结束
|
||||
{
|
||||
res = GetNextNodeId(nextNode.id);
|
||||
}
|
||||
}
|
||||
else if(tag.Taged ==(int) TagState.No)
|
||||
{
|
||||
if (forkNode.setInfo.ConfluenceNo == null)
|
||||
{
|
||||
forkNode.setInfo.ConfluenceNo = 1;
|
||||
}
|
||||
else if (forkNode.setInfo.ConfluenceNo == (forkNumber - 1))
|
||||
{
|
||||
res = TagState.No.ToString("D");
|
||||
}
|
||||
else
|
||||
{
|
||||
bool isFirst = true; //是不是从会签开始到现在第一个
|
||||
var preNode = GetPreNode(nodeId);
|
||||
while (preNode.id != forkNode.id) //反向一直到会签开始节点
|
||||
{
|
||||
if (preNode.setInfo != null && preNode.setInfo.Taged == (int) TagState.No)
|
||||
{
|
||||
isFirst = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (isFirst)
|
||||
{
|
||||
forkNode.setInfo.ConfluenceNo++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else //默认所有步骤通过
|
||||
{
|
||||
if (tag.Taged == (int) TagState.No) //只要有一个不同意,那么流程就结束
|
||||
{
|
||||
res = TagState.No.ToString("D");
|
||||
}
|
||||
else if(tag.Taged == (int)TagState.Ok)
|
||||
{
|
||||
if (nextNode.type == FlowNode.JOIN) //这种模式下只有坚持到【会签结束】节点之前才有意义,是否需要判定这条线所有的节点都通过,不然直接执行这个节点??
|
||||
{
|
||||
if (forkNode.setInfo.ConfluenceOk == null)
|
||||
{
|
||||
forkNode.setInfo.ConfluenceOk = 1;
|
||||
}
|
||||
else if (forkNode.setInfo.ConfluenceOk == (forkNumber - 1)) //会签成功
|
||||
{
|
||||
res = GetNextNodeId(nextNode.id);
|
||||
}
|
||||
else
|
||||
{
|
||||
forkNode.setInfo.ConfluenceOk++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (res == TagState.No.ToString("D"))
|
||||
{
|
||||
tag.Taged = (int) TagState.No;
|
||||
MakeTagNode(nextNode.id, tag);
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(res)) //会签结束,标记合流节点
|
||||
{
|
||||
tag.Taged = (int) TagState.Ok;
|
||||
MakeTagNode(nextNode.id, tag);
|
||||
nextNodeId = res;
|
||||
nextNodeType = GetNodeType(res);
|
||||
}
|
||||
else
|
||||
{
|
||||
nextNodeId = nextNode.id;
|
||||
nextNodeType = GetNodeType(nextNode.id);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
//获取上一个节点
|
||||
private FlowNode GetPreNode(string nodeId = null)
|
||||
{
|
||||
var lines = nodeId == null ? ToNodeLines[currentNodeId] : ToNodeLines[nodeId];
|
||||
if (lines.Count == 0)
|
||||
{
|
||||
throw new Exception("无法找到上一个点");
|
||||
}
|
||||
return Nodes[lines[0].from];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 驳回
|
||||
/// </summary>
|
||||
/// <param name="rejectType">驳回类型。null:使用节点配置的驳回类型/0:前一步/1:第一步/2:指定节点,使用NodeRejectStep</param>
|
||||
/// <returns></returns>
|
||||
public string RejectNode(string rejectType)
|
||||
{
|
||||
dynamic node = Nodes[currentNodeId];
|
||||
if (node.setInfo != null && string.IsNullOrEmpty(rejectType))
|
||||
{
|
||||
rejectType = node.setInfo.NodeRejectType;
|
||||
}
|
||||
|
||||
if (rejectType == "0")
|
||||
{
|
||||
return previousId;
|
||||
}
|
||||
if (rejectType == "1")
|
||||
{
|
||||
return GetNextNodeId(startNodeId);
|
||||
}
|
||||
return previousId;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 撤销流程,清空所有节点
|
||||
/// </summary>
|
||||
public void ReCall()
|
||||
{
|
||||
foreach (var item in Nodes)
|
||||
{
|
||||
item.Value.setInfo = null;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 标记节点1通过,-1不通过,0驳回
|
||||
/// </summary>
|
||||
/// <param name="nodeId"></param>
|
||||
public void MakeTagNode(string nodeId, Tag tag)
|
||||
{
|
||||
foreach (var item in Nodes)
|
||||
{
|
||||
if (item.Key == nodeId)
|
||||
{
|
||||
if (item.Value.setInfo == null)
|
||||
{
|
||||
item.Value.setInfo = new Setinfo();
|
||||
}
|
||||
item.Value.setInfo.Taged = tag.Taged;
|
||||
item.Value.setInfo.UserId = tag.UserId;
|
||||
item.Value.setInfo.UserName = tag.UserName;
|
||||
item.Value.setInfo.Description = tag.Description;
|
||||
item.Value.setInfo.TagedTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public object ToSchemeObj()
|
||||
{
|
||||
return new
|
||||
{
|
||||
title = this.title,
|
||||
initNum = this.initNum,
|
||||
lines = Lines,
|
||||
nodes = Nodes.Select(u => u.Value),
|
||||
areas = new string[0]
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通知三方系统,节点执行情况
|
||||
/// </summary>
|
||||
public void NotifyThirdParty(HttpClient client, Tag tag)
|
||||
{
|
||||
if (currentNode.setInfo == null || string.IsNullOrEmpty(currentNode.setInfo.ThirdPartyUrl))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var postData = new
|
||||
{
|
||||
flowInstanceId,
|
||||
nodeName=currentNode.name,
|
||||
nodeId = currentNodeId,
|
||||
userId = tag.UserId,
|
||||
userName = tag.UserName,
|
||||
result=tag.Taged, //1:通过;2:不通过;3驳回
|
||||
description = tag.Description,
|
||||
execTime = tag.TagedTime,
|
||||
isFinish = currentNodeType == 4
|
||||
};
|
||||
|
||||
using (HttpContent httpContent = new StringContent(JsonHelper.Instance.Serialize(postData), Encoding.UTF8))
|
||||
{
|
||||
httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
|
||||
client.PostAsync(currentNode.setInfo.ThirdPartyUrl, httpContent);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion 共有方法
|
||||
|
||||
#region 属性
|
||||
|
||||
public string title { get; set; }
|
||||
|
||||
public int initNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 运行实例的Id
|
||||
/// </summary>
|
||||
public string flowInstanceId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开始节点的ID
|
||||
/// </summary>
|
||||
public string startNodeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前节点的ID
|
||||
/// </summary>
|
||||
public string currentNodeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前节点类型 0会签开始,1会签结束,2一般节点,开始节点,4流程运行结束
|
||||
/// </summary>
|
||||
public int currentNodeType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前节点的对象
|
||||
/// </summary>
|
||||
public FlowNode currentNode => Nodes[currentNodeId];
|
||||
|
||||
/// <summary>
|
||||
/// 下一个节点
|
||||
/// </summary>
|
||||
public string nextNodeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 下一个节点类型 -1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束
|
||||
/// </summary>
|
||||
/// <value>The type of the next node.</value>
|
||||
public int nextNodeType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 下一个节点对象
|
||||
/// </summary>
|
||||
public FlowNode nextNode => nextNodeId != "-1"? Nodes[nextNodeId] : null;
|
||||
|
||||
/// <summary>
|
||||
/// 上一个节点
|
||||
/// </summary>
|
||||
public string previousId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 实例节点集合
|
||||
/// </summary>
|
||||
public Dictionary<string, FlowNode> Nodes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程实例中所有的线段
|
||||
/// </summary>
|
||||
public List<FlowLine> Lines { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 从节点发出的线段集合
|
||||
/// </summary>
|
||||
public Dictionary<string, List<FlowLine>> FromNodeLines { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 到达节点的线段集合
|
||||
/// </summary>
|
||||
public Dictionary<string, List<FlowLine>> ToNodeLines { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 表单数据
|
||||
/// </summary>
|
||||
public string FrmData { get; set; }
|
||||
|
||||
#endregion 属性
|
||||
}
|
||||
// ***********************************************************************
|
||||
// Assembly : OpenAuth.App
|
||||
// Author : 李玉宝
|
||||
// Created : 07-19-2018
|
||||
//
|
||||
// Last Modified By : 李玉宝
|
||||
// Last Modified On : 07-19-2018
|
||||
// ***********************************************************************
|
||||
// <copyright file="FlowRuntime.cs" company="OpenAuth.App">
|
||||
// Copyright (c) http://www.openauth.net.cn. All rights reserved.
|
||||
// </copyright>
|
||||
// <summary>
|
||||
// 一个正在运行中的流程实例
|
||||
//</summary>
|
||||
// ***********************************************************************
|
||||
|
||||
using Infrastructure;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OpenAuth.Repository.Domain;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using Castle.Core.Internal;
|
||||
|
||||
namespace OpenAuth.App.Flow
|
||||
{
|
||||
public class FlowRuntime
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
public FlowRuntime(FlowInstance instance)
|
||||
{
|
||||
dynamic schemeContentJson = instance.SchemeContent.ToJson();//获取工作流模板内容的json对象;
|
||||
|
||||
InitLines(schemeContentJson);
|
||||
InitNodes(schemeContentJson);
|
||||
|
||||
currentNodeId = (instance.ActivityId == "" ? startNodeId : instance.ActivityId);
|
||||
currentNodeType = GetNodeType(currentNodeId);
|
||||
FrmData = instance.FrmData;
|
||||
title = schemeContentJson.title;
|
||||
initNum = schemeContentJson.initNum?? 0;
|
||||
previousId = instance.PreviousId;
|
||||
flowInstanceId = instance.Id;
|
||||
|
||||
//会签开始节点和流程结束节点没有下一步
|
||||
if (currentNodeType == 0 || currentNodeType == 4)
|
||||
{
|
||||
nextNodeId = "-1";
|
||||
nextNodeType = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
nextNodeId = GetNextNodeId();//下一个节点
|
||||
nextNodeType = GetNodeType(nextNodeId);
|
||||
}
|
||||
}
|
||||
|
||||
#region 私有方法
|
||||
|
||||
/// <summary>
|
||||
/// 获取工作流节点的字典列表:key节点id
|
||||
/// </summary>
|
||||
/// <param name="schemeContentJson"></param>
|
||||
/// <returns></returns>
|
||||
private void InitNodes(dynamic schemeContentJson)
|
||||
{
|
||||
Nodes = new Dictionary<string, FlowNode>();
|
||||
foreach (JObject item in schemeContentJson.nodes)
|
||||
{
|
||||
var node = item.ToObject<FlowNode>();
|
||||
if (!Nodes.ContainsKey(node.id))
|
||||
{
|
||||
Nodes.Add(node.id, node);
|
||||
}
|
||||
if (node.type == FlowNode.START)
|
||||
{
|
||||
this.startNodeId = node.id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void InitLines(dynamic schemeContentJson)
|
||||
{
|
||||
Lines = new List<FlowLine>();
|
||||
FromNodeLines = new Dictionary<string, List<FlowLine>>();
|
||||
ToNodeLines = new Dictionary<string, List<FlowLine>>();
|
||||
foreach (JObject item in schemeContentJson.lines)
|
||||
{
|
||||
var line = item.ToObject<FlowLine>();
|
||||
Lines.Add(line);
|
||||
|
||||
if (!FromNodeLines.ContainsKey(line.from))
|
||||
{
|
||||
List<FlowLine> d = new List<FlowLine> { line };
|
||||
FromNodeLines.Add(line.from, d);
|
||||
}
|
||||
else
|
||||
{
|
||||
FromNodeLines[line.from].Add(line);
|
||||
}
|
||||
|
||||
if (!ToNodeLines.ContainsKey(line.to))
|
||||
{
|
||||
List<FlowLine> d = new List<FlowLine> { line };
|
||||
ToNodeLines.Add(line.to, d);
|
||||
}
|
||||
else
|
||||
{
|
||||
ToNodeLines[line.to].Add(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取下一个节点
|
||||
/// </summary>
|
||||
private string GetNextNodeId(string nodeId = null)
|
||||
{
|
||||
var lines = nodeId == null ? FromNodeLines[currentNodeId] : FromNodeLines[nodeId];
|
||||
if (lines.Count == 0)
|
||||
{
|
||||
throw new Exception("无法寻找到下一个节点");
|
||||
}
|
||||
|
||||
if (FrmData == "" || FrmData == "{}") return lines[0].to;
|
||||
|
||||
FrmData = FrmData.ToLower();//统一转小写
|
||||
var frmDataJson = FrmData.ToJObject();//获取数据内容
|
||||
|
||||
foreach (var l in lines)
|
||||
{
|
||||
if (!(l.Compares.IsNullOrEmpty()) &&l.Compare(frmDataJson))
|
||||
{
|
||||
return l.to;
|
||||
}
|
||||
}
|
||||
|
||||
return lines[0].to;
|
||||
}
|
||||
|
||||
#endregion 私有方法
|
||||
|
||||
#region 共有方法
|
||||
|
||||
//获取下一个节点
|
||||
public FlowNode GetNextNode(string nodeId = null)
|
||||
{
|
||||
return Nodes[GetNextNodeId(nodeId)];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取实例接下来运行的状态
|
||||
/// </summary>
|
||||
/// <returns>-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束</returns>
|
||||
public int GetNextNodeType()
|
||||
{
|
||||
if (nextNodeId != "-1")
|
||||
{
|
||||
return GetNodeType(nextNodeId);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取节点类型 0会签开始,1会签结束,2一般节点,开始节点,4流程运行结束
|
||||
/// </summary>
|
||||
/// <param name="nodeId"></param>
|
||||
/// <returns></returns>
|
||||
public int GetNodeType(string nodeId)
|
||||
{
|
||||
switch (Nodes[nodeId].type)
|
||||
{
|
||||
//会签开始节点
|
||||
case FlowNode.FORK:
|
||||
return 0;
|
||||
//会签结束节点
|
||||
case FlowNode.JOIN:
|
||||
return 1;
|
||||
//结束节点
|
||||
case FlowNode.END:
|
||||
return 4;
|
||||
//开始节点
|
||||
case FlowNode.START:
|
||||
return 3;
|
||||
|
||||
default:
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 节点会签审核
|
||||
/// </summary>
|
||||
/// <param name="nodeId">会签时,currentNodeId是会签开始节点。这个表示当前正在处理的节点</param>
|
||||
/// <param name="tag"></param>
|
||||
/// <returns>-1不通过,1等待,其它通过</returns>
|
||||
public string NodeConfluence(string nodeId, Tag tag)
|
||||
{
|
||||
var forkNode = Nodes[currentNodeId]; //会签开始节点
|
||||
FlowNode nextNode = GetNextNode(nodeId); //获取当前处理的下一个节点
|
||||
|
||||
int forkNumber = FromNodeLines[currentNodeId].Count; //直接与会签节点连接的点,即会签分支数目
|
||||
string res =string.Empty; //记录会签的结果,默认正在会签
|
||||
if (forkNode.setInfo.NodeConfluenceType == "one") //有一个步骤通过即可
|
||||
{
|
||||
if (tag.Taged == (int) TagState.Ok)
|
||||
{
|
||||
if (nextNode.type == FlowNode.JOIN) //下一个节点是会签结束,则该线路结束
|
||||
{
|
||||
res = GetNextNodeId(nextNode.id);
|
||||
}
|
||||
}
|
||||
else if(tag.Taged ==(int) TagState.No)
|
||||
{
|
||||
if (forkNode.setInfo.ConfluenceNo == null)
|
||||
{
|
||||
forkNode.setInfo.ConfluenceNo = 1;
|
||||
}
|
||||
else if (forkNode.setInfo.ConfluenceNo == (forkNumber - 1))
|
||||
{
|
||||
res = TagState.No.ToString("D");
|
||||
}
|
||||
else
|
||||
{
|
||||
bool isFirst = true; //是不是从会签开始到现在第一个
|
||||
var preNode = GetPreNode(nodeId);
|
||||
while (preNode.id != forkNode.id) //反向一直到会签开始节点
|
||||
{
|
||||
if (preNode.setInfo != null && preNode.setInfo.Taged == (int) TagState.No)
|
||||
{
|
||||
isFirst = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (isFirst)
|
||||
{
|
||||
forkNode.setInfo.ConfluenceNo++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else //默认所有步骤通过
|
||||
{
|
||||
if (tag.Taged == (int) TagState.No) //只要有一个不同意,那么流程就结束
|
||||
{
|
||||
res = TagState.No.ToString("D");
|
||||
}
|
||||
else if(tag.Taged == (int)TagState.Ok)
|
||||
{
|
||||
if (nextNode.type == FlowNode.JOIN) //这种模式下只有坚持到【会签结束】节点之前才有意义,是否需要判定这条线所有的节点都通过,不然直接执行这个节点??
|
||||
{
|
||||
if (forkNode.setInfo.ConfluenceOk == null)
|
||||
{
|
||||
forkNode.setInfo.ConfluenceOk = 1;
|
||||
}
|
||||
else if (forkNode.setInfo.ConfluenceOk == (forkNumber - 1)) //会签成功
|
||||
{
|
||||
res = GetNextNodeId(nextNode.id);
|
||||
}
|
||||
else
|
||||
{
|
||||
forkNode.setInfo.ConfluenceOk++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (res == TagState.No.ToString("D"))
|
||||
{
|
||||
tag.Taged = (int) TagState.No;
|
||||
MakeTagNode(nextNode.id, tag);
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(res)) //会签结束,标记合流节点
|
||||
{
|
||||
tag.Taged = (int) TagState.Ok;
|
||||
MakeTagNode(nextNode.id, tag);
|
||||
nextNodeId = res;
|
||||
nextNodeType = GetNodeType(res);
|
||||
}
|
||||
else
|
||||
{
|
||||
nextNodeId = nextNode.id;
|
||||
nextNodeType = GetNodeType(nextNode.id);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
//获取上一个节点
|
||||
private FlowNode GetPreNode(string nodeId = null)
|
||||
{
|
||||
var lines = nodeId == null ? ToNodeLines[currentNodeId] : ToNodeLines[nodeId];
|
||||
if (lines.Count == 0)
|
||||
{
|
||||
throw new Exception("无法找到上一个点");
|
||||
}
|
||||
return Nodes[lines[0].from];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 驳回
|
||||
/// </summary>
|
||||
/// <param name="rejectType">驳回类型。null:使用节点配置的驳回类型/0:前一步/1:第一步/2:指定节点,使用NodeRejectStep</param>
|
||||
/// <returns></returns>
|
||||
public string RejectNode(string rejectType)
|
||||
{
|
||||
dynamic node = Nodes[currentNodeId];
|
||||
if (node.setInfo != null && string.IsNullOrEmpty(rejectType))
|
||||
{
|
||||
rejectType = node.setInfo.NodeRejectType;
|
||||
}
|
||||
|
||||
if (rejectType == "0")
|
||||
{
|
||||
return previousId;
|
||||
}
|
||||
if (rejectType == "1")
|
||||
{
|
||||
return GetNextNodeId(startNodeId);
|
||||
}
|
||||
return previousId;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 撤销流程,清空所有节点
|
||||
/// </summary>
|
||||
public void ReCall()
|
||||
{
|
||||
foreach (var item in Nodes)
|
||||
{
|
||||
item.Value.setInfo = null;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 标记节点1通过,-1不通过,0驳回
|
||||
/// </summary>
|
||||
/// <param name="nodeId"></param>
|
||||
public void MakeTagNode(string nodeId, Tag tag)
|
||||
{
|
||||
foreach (var item in Nodes)
|
||||
{
|
||||
if (item.Key == nodeId)
|
||||
{
|
||||
if (item.Value.setInfo == null)
|
||||
{
|
||||
item.Value.setInfo = new Setinfo();
|
||||
}
|
||||
item.Value.setInfo.Taged = tag.Taged;
|
||||
item.Value.setInfo.UserId = tag.UserId;
|
||||
item.Value.setInfo.UserName = tag.UserName;
|
||||
item.Value.setInfo.Description = tag.Description;
|
||||
item.Value.setInfo.TagedTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public object ToSchemeObj()
|
||||
{
|
||||
return new
|
||||
{
|
||||
title = this.title,
|
||||
initNum = this.initNum,
|
||||
lines = Lines,
|
||||
nodes = Nodes.Select(u => u.Value),
|
||||
areas = new string[0]
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通知三方系统,节点执行情况
|
||||
/// </summary>
|
||||
public void NotifyThirdParty(HttpClient client, Tag tag)
|
||||
{
|
||||
if (currentNode.setInfo == null || string.IsNullOrEmpty(currentNode.setInfo.ThirdPartyUrl))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var postData = new
|
||||
{
|
||||
flowInstanceId,
|
||||
nodeName=currentNode.name,
|
||||
nodeId = currentNodeId,
|
||||
userId = tag.UserId,
|
||||
userName = tag.UserName,
|
||||
result=tag.Taged, //1:通过;2:不通过;3驳回
|
||||
description = tag.Description,
|
||||
execTime = tag.TagedTime,
|
||||
isFinish = currentNodeType == 4
|
||||
};
|
||||
|
||||
using (HttpContent httpContent = new StringContent(JsonHelper.Instance.Serialize(postData), Encoding.UTF8))
|
||||
{
|
||||
httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
|
||||
client.PostAsync(currentNode.setInfo.ThirdPartyUrl, httpContent);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion 共有方法
|
||||
|
||||
#region 属性
|
||||
|
||||
public string title { get; set; }
|
||||
|
||||
public int initNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 运行实例的Id
|
||||
/// </summary>
|
||||
public string flowInstanceId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开始节点的ID
|
||||
/// </summary>
|
||||
public string startNodeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前节点的ID
|
||||
/// </summary>
|
||||
public string currentNodeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前节点类型 0会签开始,1会签结束,2一般节点,开始节点,4流程运行结束
|
||||
/// </summary>
|
||||
public int currentNodeType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前节点的对象
|
||||
/// </summary>
|
||||
public FlowNode currentNode => Nodes[currentNodeId];
|
||||
|
||||
/// <summary>
|
||||
/// 下一个节点
|
||||
/// </summary>
|
||||
public string nextNodeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 下一个节点类型 -1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束
|
||||
/// </summary>
|
||||
/// <value>The type of the next node.</value>
|
||||
public int nextNodeType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 下一个节点对象
|
||||
/// </summary>
|
||||
public FlowNode nextNode => nextNodeId != "-1"? Nodes[nextNodeId] : null;
|
||||
|
||||
/// <summary>
|
||||
/// 上一个节点
|
||||
/// </summary>
|
||||
public string previousId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 实例节点集合
|
||||
/// </summary>
|
||||
public Dictionary<string, FlowNode> Nodes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程实例中所有的线段
|
||||
/// </summary>
|
||||
public List<FlowLine> Lines { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 从节点发出的线段集合
|
||||
/// </summary>
|
||||
public Dictionary<string, List<FlowLine>> FromNodeLines { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 到达节点的线段集合
|
||||
/// </summary>
|
||||
public Dictionary<string, List<FlowLine>> ToNodeLines { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 表单数据
|
||||
/// </summary>
|
||||
public string FrmData { get; set; }
|
||||
|
||||
#endregion 属性
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Infrastructure;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using OpenAuth.Repository.Domain;
|
||||
using Quartz;
|
||||
|
||||
|
||||
@@ -102,7 +102,9 @@ namespace OpenAuth.App
|
||||
.SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces()
|
||||
.Contains(typeof(IJob))))
|
||||
.ToArray();
|
||||
return types.Select(u => u.FullName).ToList();
|
||||
//过滤掉httppost的定时任务
|
||||
var noHttpPostType = types.Where(u =>u.UnderlyingSystemType!=typeof(OpenAuth.App.Jobs.HttpPostJob));
|
||||
return noHttpPostType.Select(u => u.FullName).ToList();
|
||||
}
|
||||
|
||||
public void ChangeJobStatus(ChangeJobStatusReq req)
|
||||
|
||||
@@ -63,6 +63,11 @@ namespace OpenAuth.App.Response
|
||||
public string Code { get; set; }
|
||||
|
||||
public bool IsSys { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 前端界面是否缓存
|
||||
/// </summary>
|
||||
public bool KeepAlive { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模块中的元素
|
||||
|
||||
@@ -84,7 +84,12 @@ namespace OpenAuth.App
|
||||
resources = resources.Where(u => u.AppId == request.appId);
|
||||
}
|
||||
|
||||
var propertyStr = string.Join(',', columnFields.Select(u => u.ColumnName));
|
||||
var columnnames = columnFields.Select(u => u.ColumnName);
|
||||
if (SugarClient.CurrentConnectionConfig.DbType == DbType.PostgreSQL)
|
||||
{
|
||||
columnnames = columnFields.Select(u => "\"" + u.ColumnName +"\"");
|
||||
}
|
||||
var propertyStr = string.Join(',', columnnames);
|
||||
result.columnFields = columnFields;
|
||||
result.data = resources.OrderBy(u => u.TypeId)
|
||||
.Skip((request.page - 1) * request.limit)
|
||||
|
||||
@@ -40,7 +40,12 @@ namespace OpenAuth.App
|
||||
objs = objs.Where(u => u.Name.Contains(request.key));
|
||||
}
|
||||
|
||||
var propertyStr = string.Join(',', columnFields.Select(u => u.ColumnName));
|
||||
var columnnames = columnFields.Select(u => u.ColumnName);
|
||||
if (SugarClient.CurrentConnectionConfig.DbType == DbType.PostgreSQL)
|
||||
{
|
||||
columnnames = columnFields.Select(u => "\"" + u.ColumnName +"\"");
|
||||
}
|
||||
var propertyStr = string.Join(',', columnnames);
|
||||
result.columnFields = columnFields;
|
||||
result.data = objs.OrderByDescending(u => u.CreateTime)
|
||||
.Skip((request.page - 1) * request.limit)
|
||||
|
||||
@@ -78,6 +78,11 @@ namespace OpenAuth.App.Test
|
||||
DbType = dbType.Value,
|
||||
ConnectionString = connectionString,
|
||||
IsAutoCloseConnection = true,
|
||||
MoreSettings=new ConnMoreSettings() {
|
||||
PgSqlIsAutoToLower = false,//增删查改支持驼峰表
|
||||
PgSqlIsAutoToLowerCodeFirst = false, // 建表建驼峰表。5.1.3.30
|
||||
IsAutoToUpper=false //禁用自动转成大写表
|
||||
}
|
||||
});
|
||||
return sqlSugar;
|
||||
});
|
||||
|
||||
@@ -105,6 +105,11 @@ namespace OpenAuth.IdentityServer
|
||||
DbType = sugarDbtype.Value,
|
||||
ConnectionString = connectionString,
|
||||
IsAutoCloseConnection = true,
|
||||
MoreSettings=new ConnMoreSettings() {
|
||||
PgSqlIsAutoToLower = false,//增删查改支持驼峰表
|
||||
PgSqlIsAutoToLowerCodeFirst = false, // 建表建驼峰表。5.1.3.30
|
||||
IsAutoToUpper=false //禁用自动转成大写表
|
||||
}
|
||||
});
|
||||
return sqlSugar;
|
||||
});
|
||||
|
||||
@@ -22,8 +22,7 @@ namespace OpenAuth.Mvc
|
||||
|_|
|
||||
-------------------------------------------------------------------
|
||||
Author : yubaolee
|
||||
.Net 5 Repository: https://gitee.com/dotnetchina/OpenAuth.Net
|
||||
.Net core 3.1 Rep: https://gitee.com/yubaolee/OpenAuth.Core
|
||||
Repository : https://gitee.com/dotnetchina/OpenAuth.Net
|
||||
-------------------------------------------------------------------
|
||||
");
|
||||
CreateHostBuilder(args).Build().Run();
|
||||
|
||||
@@ -112,6 +112,11 @@ namespace OpenAuth.Mvc
|
||||
DbType = dbType.Value,
|
||||
ConnectionString = connectionString,
|
||||
IsAutoCloseConnection = true,
|
||||
MoreSettings=new ConnMoreSettings() {
|
||||
PgSqlIsAutoToLower = false,//增删查改支持驼峰表
|
||||
PgSqlIsAutoToLowerCodeFirst = false, // 建表建驼峰表。5.1.3.30
|
||||
IsAutoToUpper=false //禁用自动转成大写表
|
||||
}
|
||||
}, db => { db.Aop.OnLogExecuting = (sql, pars) => { logger.LogInformation(sql); }; });
|
||||
return sqlSugar;
|
||||
});
|
||||
|
||||
@@ -122,7 +122,7 @@ tpwidget("init", {
|
||||
</div>
|
||||
<!-- 底部 -->
|
||||
<div class="layui-footer footer">
|
||||
<p>copyright @@2023 yubaolee <a onclick="donation()" class="layui-btn layui-btn-danger l·ayui-btn-small">捐赠作者</a></p>
|
||||
<p>copyright @@2024 yubaolee <a onclick="donation()" class="layui-btn layui-btn-danger l·ayui-btn-small">捐赠作者</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,203 +1,203 @@
|
||||
@section header
|
||||
{
|
||||
<link rel="stylesheet" href="/css/main.css" media="all"/>
|
||||
}
|
||||
|
||||
<div class="panel_box row">
|
||||
<div class="panel col">
|
||||
<a href="javascript:;" data-url="/orgmanager/index">
|
||||
<div class="panel_icon">
|
||||
<i class="layui-icon layui-icon-group" ></i>
|
||||
</div>
|
||||
<div class="panel_word orgs">
|
||||
<span></span>
|
||||
<cite>机构总数</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel col">
|
||||
<a href="javascript:;" data-url="/Rolemanager/index">
|
||||
<div class="panel_icon" style="background-color:#FF5722;">
|
||||
<i class="layui-icon layui-icon-vercode" ></i>
|
||||
</div>
|
||||
<div class="panel_word roles">
|
||||
<span></span>
|
||||
<cite>角色总数</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel col">
|
||||
<a href="javascript:;" data-url="/UserManager/Index">
|
||||
<div class="panel_icon" style="background-color:#009688;">
|
||||
<i class="layui-icon layui-icon-username" ></i>
|
||||
</div>
|
||||
<div class="panel_word userAll">
|
||||
<span></span>
|
||||
<cite>用户总数</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel col">
|
||||
<a href="javascript:;" data-url="/forms/index">
|
||||
<div class="panel_icon" style="background-color:#5FB878;">
|
||||
<i class="layui-icon layui-icon-form" ></i>
|
||||
</div>
|
||||
<div class="panel_word forms">
|
||||
<span></span>
|
||||
<cite>表单总数</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel col">
|
||||
<a href="javascript:;" data-url="/flowinstances/index">
|
||||
<div class="panel_icon" style="background-color:#F7B824;">
|
||||
<i class="layui-icon layui-icon-share" ></i>
|
||||
</div>
|
||||
<div class="panel_word flows">
|
||||
<span></span>
|
||||
<cite>我的流程</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel col max_panel">
|
||||
<a href="javascript:;" data-url="/flowschemes/index">
|
||||
<div class="panel_icon" style="background-color:#2F4056;">
|
||||
<i class="layui-icon layui-icon-transfer" ></i>
|
||||
</div>
|
||||
<div class="panel_word flowschemes">
|
||||
<span></span>
|
||||
<cite>流程模板</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<blockquote class="layui-elem-quote explain">
|
||||
<p>官方博客:<a href="http://www.cnblogs.com/yubaolee/">http://www.cnblogs.com/yubaolee/</a> </p>
|
||||
<p>
|
||||
系统默认System账号登录,可以查看所有权限,如果用其他账号(如:admin/test)可以查看相应的授权/可见字段情况。
|
||||
数据库密码明文存储,不要问为什么不加密,因为你要问这些账号的密码我也记不住啊O(∩_∩)O
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://gitee.com/yubaolee/OpenAuth.Core" target="_blank" class="layui-btn layui-btn-xs layui-btn-danger">项目地址</a>
|
||||
<a class="layui-btn layui-btn-xs" target="_blank" href="http://doc.openauth.net.cn">在线文档</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" target="_blank" href="http://demo.openauth.net.cn:1803">企业版/高级版入口</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" target="_blank" href="http://demo.openauth.net.cn:1804">企业版H5入口(请使用移动模式或者直接手机查看)</a>
|
||||
<span style="color: #f00;">注:【本框架遵循LGPL开源协议,企业单位如商用请联系作者授权,谢谢】</span>
|
||||
</p>
|
||||
<p>技术交流QQ群:484498493【已满】 626433139【已满】 566344079</p>
|
||||
</blockquote>
|
||||
<div class="row">
|
||||
<div class="sysNotice col">
|
||||
<blockquote class="layui-elem-quote title">更新日志</blockquote>
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 6.0</h3>
|
||||
<p>* 【新增】框架升级至.Net 6.0</p>
|
||||
<p>* 【优化】升级layui至2.8.6</p>
|
||||
<p>
|
||||
* 【新增】全面支持SqlSugar Orm:
|
||||
详见:<a href="http://doc.openauth.net.cn/core/sqlsugar.html" target="_blank" class="layui-btn layui-btn-xs layui-btn-danger">
|
||||
http://doc.openauth.net.cn/core/sqlsugar.html
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 3.2</h3>
|
||||
<p>* 【新增】增加在swagger界面查看接口调用时间及SQL执行时间</p>
|
||||
<p>
|
||||
* 【新增】支持同时配置多个类型数据库的连接字符串:
|
||||
详见:<a href="http://doc.openauth.net.cn/core/multidbs.html" target="_blank" class="layui-btn layui-btn-xs layui-btn-danger">http://doc.openauth.net.cn/core/multidbs.html</a>
|
||||
</p>
|
||||
<p>* 【新增】增加swagger接口分组</p>
|
||||
<p>* 【新增】增加流程召回功能</p>
|
||||
<p>* 【新增】增加运行时选定执行人、执行角色功能</p>
|
||||
<p>* 【新增】增加Redis缓存支持</p>
|
||||
<p>* 【新增】新增int类型数据库主键,并支持雪花算法自动生成</p>
|
||||
<p>* 【新增】新增附件管理,上传图片支持生成缩略图</p>
|
||||
</div>
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 2.0</h3>
|
||||
<p>* 【新增】框架升级至.net core sdk 3.1.100</p>
|
||||
<p>
|
||||
* 【新增】增加
|
||||
<a href="javascript:;" data-url="/usermanager/profile">
|
||||
<cite>个人中心</cite>
|
||||
</a>页面,可修改个人信息及切换当前默认部门
|
||||
</p>
|
||||
<p>* 【优化】升级layui至2.5.6</p>
|
||||
<p>* 【优化】可以灵活配置用户可访问的机构数据权限</p>
|
||||
</div>
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 1.6</h3>
|
||||
<p>* 【新增】日志及用户消息板块</p>
|
||||
<p>* 【新增】企业版代码生成器,可以快速生成带有头/明细结构的页面</p>
|
||||
<p>* 【新增】数据权限控制,超强的自定义权限控制功能。详见:<a href="https://www.cnblogs.com/yubaolee/p/DataPrivilege.html" target="_blank" class="layui-btn layui-btn-xs layui-btn-danger">https://www.cnblogs.com/yubaolee/p/DataPrivilege.html</a></p>
|
||||
<p>* 【新增】完整的字段权限控制,可以控制字段可见及API是否返回字段值</p>
|
||||
<p>* 【优化】启用数据字典功能</p>
|
||||
<p>* 【优化】优化导航排序、支持多级导航</p>
|
||||
</div>
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 1.5 - 2019.7</h3>
|
||||
<p>* 【优化】升级layui至2.5.4</p>
|
||||
<p>* 【优化】流程处理页面展示</p>
|
||||
<p>* 【优化】流程支持角色审批</p>
|
||||
<p>* 【新增】集成IdentityServer4,实现基于OAuth2的登录体系</p>
|
||||
<p>* 【新增】建立三方对接规范,已有系统可以无缝对接流程引擎,请参考官方<a href="http://doc.openauth.net.cn/thirdparty" target="_top">对接说明</a></p>
|
||||
</div>
|
||||
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 1.4 - 2019.3</h3>
|
||||
<p>* 【优化】升级layui至2.4.5</p>
|
||||
<p>* 【优化】升级vue至2.6.10</p>
|
||||
<p>* 【优化】全面调整icon设计</p>
|
||||
<p>* 【优化】全面优化树形选择控件</p>
|
||||
<p>* 【优化】全面重写界面初始化交互,优化layui与vue数据初始化赋值,读取。</p>
|
||||
<p>* 【优化】全面优化log4net日志输出</p>
|
||||
<p>* 【新增】全面实现数据字段权限控制。针对自定义模块,可以为角色分配可见字段</p>
|
||||
<p>* 【新增】模块可隐藏功能,只授权,但不在导航栏显示</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sysNotice col">
|
||||
<blockquote class="layui-elem-quote title">系统基本参数</blockquote>
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col width="150">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>当前版本</td>
|
||||
<td class="version"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>开发作者</td>
|
||||
<td class="author"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>网站首页</td>
|
||||
<td class="homePage"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>服务器环境</td>
|
||||
<td class="server"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>数据库版本</td>
|
||||
<td class="dataBase"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>最大上传限制</td>
|
||||
<td class="maxUpload"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>当前用户权限</td>
|
||||
<td class="userRights"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/layui/layui.js"></script>
|
||||
@section header
|
||||
{
|
||||
<link rel="stylesheet" href="/css/main.css" media="all"/>
|
||||
}
|
||||
|
||||
<div class="panel_box row">
|
||||
<div class="panel col">
|
||||
<a href="javascript:;" data-url="/orgmanager/index">
|
||||
<div class="panel_icon">
|
||||
<i class="layui-icon layui-icon-group" ></i>
|
||||
</div>
|
||||
<div class="panel_word orgs">
|
||||
<span></span>
|
||||
<cite>机构总数</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel col">
|
||||
<a href="javascript:;" data-url="/Rolemanager/index">
|
||||
<div class="panel_icon" style="background-color:#FF5722;">
|
||||
<i class="layui-icon layui-icon-vercode" ></i>
|
||||
</div>
|
||||
<div class="panel_word roles">
|
||||
<span></span>
|
||||
<cite>角色总数</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel col">
|
||||
<a href="javascript:;" data-url="/UserManager/Index">
|
||||
<div class="panel_icon" style="background-color:#009688;">
|
||||
<i class="layui-icon layui-icon-username" ></i>
|
||||
</div>
|
||||
<div class="panel_word userAll">
|
||||
<span></span>
|
||||
<cite>用户总数</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel col">
|
||||
<a href="javascript:;" data-url="/forms/index">
|
||||
<div class="panel_icon" style="background-color:#5FB878;">
|
||||
<i class="layui-icon layui-icon-form" ></i>
|
||||
</div>
|
||||
<div class="panel_word forms">
|
||||
<span></span>
|
||||
<cite>表单总数</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel col">
|
||||
<a href="javascript:;" data-url="/flowinstances/index">
|
||||
<div class="panel_icon" style="background-color:#F7B824;">
|
||||
<i class="layui-icon layui-icon-share" ></i>
|
||||
</div>
|
||||
<div class="panel_word flows">
|
||||
<span></span>
|
||||
<cite>我的流程</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel col max_panel">
|
||||
<a href="javascript:;" data-url="/flowschemes/index">
|
||||
<div class="panel_icon" style="background-color:#2F4056;">
|
||||
<i class="layui-icon layui-icon-transfer" ></i>
|
||||
</div>
|
||||
<div class="panel_word flowschemes">
|
||||
<span></span>
|
||||
<cite>流程模板</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<blockquote class="layui-elem-quote explain">
|
||||
<p>官方博客:<a href="http://www.cnblogs.com/yubaolee/">http://www.cnblogs.com/yubaolee/</a> </p>
|
||||
<p>
|
||||
系统默认System账号登录,可以查看所有权限,如果用其他账号(如:admin/test)可以查看相应的授权/可见字段情况。
|
||||
数据库密码明文存储,不要问为什么不加密,因为你要问这些账号的密码我也记不住啊O(∩_∩)O
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://gitee.com/dotnetchina/OpenAuth.Net" target="_blank" class="layui-btn layui-btn-xs layui-btn-danger">项目地址</a>
|
||||
<a class="layui-btn layui-btn-xs" target="_blank" href="http://doc.openauth.net.cn">在线文档</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" target="_blank" href="http://demo.openauth.net.cn:1803">企业版/高级版入口</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" target="_blank" href="http://demo.openauth.net.cn:1804">企业版H5入口(请使用移动模式或者直接手机查看)</a>
|
||||
<span style="color: #f00;">注:【本框架遵循LGPL开源协议,企业单位如商用请联系作者授权,谢谢】</span>
|
||||
</p>
|
||||
<p>技术交流QQ群:484498493【已满】 626433139【已满】 566344079</p>
|
||||
</blockquote>
|
||||
<div class="row">
|
||||
<div class="sysNotice col">
|
||||
<blockquote class="layui-elem-quote title">更新日志</blockquote>
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 6.0</h3>
|
||||
<p>* 【新增】框架升级至.Net 6.0</p>
|
||||
<p>* 【优化】升级layui至2.8.6</p>
|
||||
<p>
|
||||
* 【新增】全面支持SqlSugar Orm:
|
||||
详见:<a href="http://doc.openauth.net.cn/core/sqlsugar.html" target="_blank" class="layui-btn layui-btn-xs layui-btn-danger">
|
||||
http://doc.openauth.net.cn/core/sqlsugar.html
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 3.2</h3>
|
||||
<p>* 【新增】增加在swagger界面查看接口调用时间及SQL执行时间</p>
|
||||
<p>
|
||||
* 【新增】支持同时配置多个类型数据库的连接字符串:
|
||||
详见:<a href="http://doc.openauth.net.cn/core/multidbs.html" target="_blank" class="layui-btn layui-btn-xs layui-btn-danger">http://doc.openauth.net.cn/core/multidbs.html</a>
|
||||
</p>
|
||||
<p>* 【新增】增加swagger接口分组</p>
|
||||
<p>* 【新增】增加流程召回功能</p>
|
||||
<p>* 【新增】增加运行时选定执行人、执行角色功能</p>
|
||||
<p>* 【新增】增加Redis缓存支持</p>
|
||||
<p>* 【新增】新增int类型数据库主键,并支持雪花算法自动生成</p>
|
||||
<p>* 【新增】新增附件管理,上传图片支持生成缩略图</p>
|
||||
</div>
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 2.0</h3>
|
||||
<p>* 【新增】框架升级至.net core sdk 3.1.100</p>
|
||||
<p>
|
||||
* 【新增】增加
|
||||
<a href="javascript:;" data-url="/usermanager/profile">
|
||||
<cite>个人中心</cite>
|
||||
</a>页面,可修改个人信息及切换当前默认部门
|
||||
</p>
|
||||
<p>* 【优化】升级layui至2.5.6</p>
|
||||
<p>* 【优化】可以灵活配置用户可访问的机构数据权限</p>
|
||||
</div>
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 1.6</h3>
|
||||
<p>* 【新增】日志及用户消息板块</p>
|
||||
<p>* 【新增】企业版代码生成器,可以快速生成带有头/明细结构的页面</p>
|
||||
<p>* 【新增】数据权限控制,超强的自定义权限控制功能。详见:<a href="https://www.cnblogs.com/yubaolee/p/DataPrivilege.html" target="_blank" class="layui-btn layui-btn-xs layui-btn-danger">https://www.cnblogs.com/yubaolee/p/DataPrivilege.html</a></p>
|
||||
<p>* 【新增】完整的字段权限控制,可以控制字段可见及API是否返回字段值</p>
|
||||
<p>* 【优化】启用数据字典功能</p>
|
||||
<p>* 【优化】优化导航排序、支持多级导航</p>
|
||||
</div>
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 1.5 - 2019.7</h3>
|
||||
<p>* 【优化】升级layui至2.5.4</p>
|
||||
<p>* 【优化】流程处理页面展示</p>
|
||||
<p>* 【优化】流程支持角色审批</p>
|
||||
<p>* 【新增】集成IdentityServer4,实现基于OAuth2的登录体系</p>
|
||||
<p>* 【新增】建立三方对接规范,已有系统可以无缝对接流程引擎,请参考官方<a href="http://doc.openauth.net.cn/thirdparty" target="_top">对接说明</a></p>
|
||||
</div>
|
||||
|
||||
<div class="layui-elem-quote layui-quote-nm">
|
||||
<h3># 1.4 - 2019.3</h3>
|
||||
<p>* 【优化】升级layui至2.4.5</p>
|
||||
<p>* 【优化】升级vue至2.6.10</p>
|
||||
<p>* 【优化】全面调整icon设计</p>
|
||||
<p>* 【优化】全面优化树形选择控件</p>
|
||||
<p>* 【优化】全面重写界面初始化交互,优化layui与vue数据初始化赋值,读取。</p>
|
||||
<p>* 【优化】全面优化log4net日志输出</p>
|
||||
<p>* 【新增】全面实现数据字段权限控制。针对自定义模块,可以为角色分配可见字段</p>
|
||||
<p>* 【新增】模块可隐藏功能,只授权,但不在导航栏显示</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sysNotice col">
|
||||
<blockquote class="layui-elem-quote title">系统基本参数</blockquote>
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col width="150">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>当前版本</td>
|
||||
<td class="version"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>开发作者</td>
|
||||
<td class="author"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>网站首页</td>
|
||||
<td class="homePage"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>服务器环境</td>
|
||||
<td class="server"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>数据库版本</td>
|
||||
<td class="dataBase"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>最大上传限制</td>
|
||||
<td class="maxUpload"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>当前用户权限</td>
|
||||
<td class="userRights"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/layui/layui.js"></script>
|
||||
<script type="text/javascript" src="/userJs/main.js?v=3.2.0"></script>
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
</div>
|
||||
|
||||
<div class="loginbm">版权所有 2023 李玉宝 </div>
|
||||
<div class="loginbm">版权所有 2024 李玉宝 </div>
|
||||
<script type="text/javascript" src="/layui/layui.js"></script>
|
||||
<script type="text/javascript" src="/userJs/login.js?v=2.1"></script>
|
||||
</body>
|
||||
|
||||
@@ -253,7 +253,7 @@ layui.config({
|
||||
btn: ['火速围观'],
|
||||
moveType: 1,
|
||||
content: '<div style="padding:15px 20px; text-align:justify; line-height: 22px; text-indent:2em;border-bottom:1px solid #e2e2e2;">' +
|
||||
'<p>郑重提示:OpenAuth.Net 4.0新版上线,如以前访问过本站点请清空缓存后访问</p>' +
|
||||
'<p>郑重提示:OpenAuth.Net 6.0新版上线,如以前访问过本站点请清空缓存后访问</p>' +
|
||||
'<p>喜欢的,快快star吧!</p></div>',
|
||||
success: function(layero){
|
||||
var btn = layero.find('.layui-layer-btn');
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
||||
/** layui-v2.5.6 MIT License By https://www.layui.com */
|
||||
;layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['<button class="layui-icon '+u+'" lay-type="sub">'+("updown"===n.anim?"":"")+"</button>",'<button class="layui-icon '+u+'" lay-type="add">'+("updown"===n.anim?"":"")+"</button>"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['<div class="'+c+'"><ul>',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("<li"+(n.index===e?' class="layui-this"':"")+"></li>")}),i.join("")}(),"</ul></div>"].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a<n.index&&e.slide("sub",n.index-a)})},m.prototype.slide=function(e,i){var n=this,l=n.elemItem,u=n.config,c=u.index,m=u.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),l.eq(u.index).addClass(d),setTimeout(function(){l.eq(c).addClass(r),l.eq(u.index).addClass(r)},50)):(n.addIndex(i),l.eq(u.index).addClass(s),setTimeout(function(){l.eq(c).addClass(o),l.eq(u.index).addClass(o)},50)),setTimeout(function(){l.removeClass(a+" "+d+" "+s+" "+o+" "+r),l.eq(u.index).addClass(a),n.haveSlide=!1},300),n.elemInd.find("li").eq(u.index).addClass(a).siblings().removeClass(a),n.haveSlide=!0,layui.event.call(this,t,"change("+m+")",{index:u.index,prevIndex:c,item:l.eq(u.index)}))},m.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){clearInterval(e.timer)}).on("mouseleave",function(){e.autoplay()}),i.elem.data("haveEvents",!0))},n.render=function(e){var i=new m(e);return i},e(t,n)});
|
||||
@@ -1,2 +0,0 @@
|
||||
/** layui-v2.5.6 MIT License By https://www.layui.com */
|
||||
;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('<ol class="layui-code-ol"><li>'+o.replace(/[\r\t\n]+/g,"</li><li>")+"</li></ol>"),c.find(">.layui-code-h3")[0]||c.prepend('<h3 class="layui-code-h3">'+(c.attr("lay-title")||e.title||"code")+(e.about?'<a href="'+l+'" target="_blank">layui.code</a>':"")+"</h3>");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss");
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
||||
/** layui-v2.5.6 MIT License By https://www.layui.com */
|
||||
;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon "></i>';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="<cite>加载更多</cite>",h=l('<div class="layui-flow-more"><a href="javascript:;">'+d+"</a></div>");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),!i&&f.width()&&(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;s<t.lazyimg.elem.length;s++){var v=t.lazyimg.elem.eq(s),y=a?function(){return v.offset().top-n.offset().top+m}():v.offset().top;if(c(v,f),i=s,y>u)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
||||
/** layui-v2.5.6 MIT License By https://www.layui.com */
|
||||
;layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?'<a href="javascript:;" class="layui-laypage-prev'+(1==a.curr?" "+r:"")+'" data-page="'+(a.curr-1)+'">'+a.prev+"</a>":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push('<a href="javascript:;" class="layui-laypage-first" data-page="1" title="首页">'+(a.first||1)+"</a>");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r<t-1&&(r=u-t+1),a.first!==!1&&r>2&&e.push('<span class="layui-laypage-spr">…</span>');r<=u;r++)r===a.curr?e.push('<span class="layui-laypage-curr"><em class="layui-laypage-em" '+(/^#/.test(a.theme)?'style="background-color:'+a.theme+';"':"")+"></em><em>"+r+"</em></span>"):e.push('<a href="javascript:;" data-page="'+r+'">'+r+"</a>");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1<a.pages&&e.push('<span class="layui-laypage-spr">…</span>'),0!==t&&e.push('<a href="javascript:;" class="layui-laypage-last" title="尾页" data-page="'+a.pages+'">'+(a.last||a.pages)+"</a>")),e.join("")}(),next:function(){return a.next?'<a href="javascript:;" class="layui-laypage-next'+(a.curr==a.pages?" "+r:"")+'" data-page="'+(a.curr+1)+'">'+a.next+"</a>":""}(),count:'<span class="layui-laypage-count">共 '+a.count+" 条</span>",limit:function(){var e=['<span class="layui-laypage-limits"><select lay-ignore>'];return layui.each(a.limits,function(t,n){e.push('<option value="'+n+'"'+(n===a.limit?"selected":"")+">"+n+" 条/页</option>")}),e.join("")+"</select></span>"}(),refresh:['<a href="javascript:;" data-page="'+a.curr+'" class="layui-laypage-refresh">','<i class="layui-icon layui-icon-refresh"></i>',"</a>"].join(""),skip:function(){return['<span class="layui-laypage-skip">到第','<input type="text" min="1" value="'+a.curr+'" class="layui-input">','页<button type="button" class="layui-laypage-btn">确定</button>',"</span>"].join("")}()};return['<div class="layui-box layui-laypage layui-laypage-'+(a.theme?/^#/.test(a.theme)?"molv":a.theme:"default")+'" id="layui-laypage-'+a.index+'">',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"</div>"].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;o<y;o++)"a"===r[o].nodeName.toLowerCase()&&s.on(r[o],"click",function(){var e=0|this.getAttribute("data-page");e<1||e>i.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});
|
||||
@@ -1,2 +0,0 @@
|
||||
/** layui-v2.5.6 MIT License By https://www.layui.com */
|
||||
;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});
|
||||
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
||||
/** layui-v2.5.6 MIT License By https://www.layui.com */
|
||||
;layui.define("jquery",function(e){"use strict";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n="rate",t="layui-rate",o="layui-icon-rate",s="layui-icon-rate-solid",u="layui-icon-rate-half",r="layui-icon-rate-solid layui-icon-rate-half",c="layui-icon-rate-solid layui-icon-rate",f="layui-icon-rate layui-icon-rate-half",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style="color: '+i.theme+';"':"";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='<ul class="layui-rate" '+(i.readonly?"readonly":"")+">",u=1;u<=i.length;u++){var r='<li class="layui-inline"><i class="layui-icon '+(u>Math.floor(i.value)?o:s)+'" '+l+"></i></li>";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'<li><i class="layui-icon layui-icon-rate-half" '+l+"></i></li>":n+=r}n+="</ul>"+(i.text?'<span class="layui-inline">'+i.value+"星":"")+"</span>";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
||||
/** layui-v2.5.6 MIT License By https://www.layui.com */
|
||||
;layui.define("jquery",function(e){"use strict";var t=layui.$,i={fixbar:function(e){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=t(document),l=t("body");e=t.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var c=[e.bar1,e.bar2,""],u=t(['<ul class="'+a+'">',e.bar1?'<li class="layui-icon" lay-type="bar1" style="'+e.bgcolor+'">'+c[0]+"</li>":"",e.bar2?'<li class="layui-icon" lay-type="bar2" style="'+e.bgcolor+'">'+c[1]+"</li>":"",'<li class="layui-icon '+o+'" lay-type="top" style="'+e.bgcolor+'">'+c[2]+"</li>","</ul>"].join("")),g=u.find("."+o),s=function(){var t=r.scrollTop();t>=e.showHeight?i||(g.show(),i=1):i&&(g.hide(),i=0)};t("."+a)[0]||("object"==typeof e.css&&u.css(e.css),l.append(u),s(),u.find("li").on("click",function(){var i=t(this),n=i.attr("lay-type");"top"===n&&t("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){s()},100)}))},countdown:function(e,t,i){var n=this,a="function"==typeof t,o=new Date(e).getTime(),r=new Date(!t||a?(new Date).getTime():t).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=t);var u=setTimeout(function(){n.countdown(e,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],t,u),l<=0&&clearTimeout(u),u},timeAgo:function(e,t){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(e).getTime();return a>26784e5?(a=new Date(e),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),t||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=18e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(e,t){var i="";e=String(e),t=t||2;for(var n=e.length;n<t;n++)i+="0";return e<Math.pow(10,t)?i+(0|e):e},toDateString:function(e,t){var i=this,n=new Date(e||new Date),a=[i.digit(n.getFullYear(),4),i.digit(n.getMonth()+1),i.digit(n.getDate())],o=[i.digit(n.getHours()),i.digit(n.getMinutes()),i.digit(n.getSeconds())];return t=t||"yyyy-MM-dd HH:mm:ss",t.replace(/yyyy/g,a[0]).replace(/MM/g,a[1]).replace(/dd/g,a[2]).replace(/HH/g,o[0]).replace(/mm/g,o[1]).replace(/ss/g,o[2])},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},event:function(e,n,a){var o=t("body");return a=a||"click",n=i.event[e]=t.extend(!0,i.event[e],n)||{},i.event.UTIL_EVENT_CALLBACK=i.event.UTIL_EVENT_CALLBACK||{},o.off(a,"*["+e+"]",i.event.UTIL_EVENT_CALLBACK[e]),i.event.UTIL_EVENT_CALLBACK[e]=function(){var i=t(this),a=i.attr(e);"function"==typeof n[a]&&n[a].call(this,i)},o.on(a,"*["+e+"]",i.event.UTIL_EVENT_CALLBACK[e]),n}};!function(e,t,i){"$:nomunge";function n(){a=t[l](function(){o.each(function(){var t=e(this),i=t.width(),n=t.height(),a=e.data(this,u);(i!==a.w||n!==a.h)&&t.trigger(c,[a.w=i,a.h=n])}),n()},r[g])}var a,o=e([]),r=e.resize=e.extend(e.resize,{}),l="setTimeout",c="resize",u=c+"-special-event",g="delay",s="throttleWindow";r[g]=250,r[s]=!0,e.event.special[c]={setup:function(){if(!r[s]&&this[l])return!1;var t=e(this);o=o.add(t),e.data(this,u,{w:t.width(),h:t.height()}),1===o.length&&n()},teardown:function(){if(!r[s]&&this[l])return!1;var t=e(this);o=o.not(t),t.removeData(u),o.length||clearTimeout(a)},add:function(t){function n(t,n,o){var r=e(this),l=e.data(this,u)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[s]&&this[l])return!1;var a;return e.isFunction(t)?(a=t,n):(a=t.handler,void(t.handler=n))}}}(t,window),e("util",i)});
|
||||
File diff suppressed because one or more lines are too long
@@ -1,94 +1,100 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <autogenerated>
|
||||
// This code was generated by a CodeSmith Template.
|
||||
//
|
||||
// DO NOT MODIFY contents of this file. Changes to this
|
||||
// file will be lost if the code is regenerated.
|
||||
// Author:Yubao Li
|
||||
// </autogenerated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using OpenAuth.Repository.Core;
|
||||
|
||||
namespace OpenAuth.Repository.Domain
|
||||
{
|
||||
/// <summary>
|
||||
/// 功能模块表
|
||||
/// </summary>
|
||||
[Table("Module")]
|
||||
public partial class Module : TreeEntity
|
||||
{
|
||||
public Module()
|
||||
{
|
||||
this.CascadeId= string.Empty;
|
||||
this.Name= string.Empty;
|
||||
this.Url= string.Empty;
|
||||
this.HotKey= string.Empty;
|
||||
this.IconName= string.Empty;
|
||||
this.Status= 0;
|
||||
this.ParentName= string.Empty;
|
||||
this.Vector= string.Empty;
|
||||
this.SortNo= 0;
|
||||
this.ParentId= string.Empty;
|
||||
this.Code= string.Empty;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 主页面URL
|
||||
/// </summary>
|
||||
[Description("主页面URL")]
|
||||
public string Url { get; set; }
|
||||
/// <summary>
|
||||
/// 热键
|
||||
/// </summary>
|
||||
[Description("热键")]
|
||||
public string HotKey { get; set; }
|
||||
/// <summary>
|
||||
/// 是否叶子节点
|
||||
/// </summary>
|
||||
[Description("是否叶子节点")]
|
||||
public bool IsLeaf { get; set; }
|
||||
/// <summary>
|
||||
/// 是否自动展开
|
||||
/// </summary>
|
||||
[Description("是否自动展开")]
|
||||
public bool IsAutoExpand { get; set; }
|
||||
/// <summary>
|
||||
/// 节点图标文件名称
|
||||
/// </summary>
|
||||
[Description("节点图标文件名称")]
|
||||
public string IconName { get; set; }
|
||||
/// <summary>
|
||||
/// 当前状态,0:正常,-1:隐藏,不在导航列表中显示
|
||||
/// </summary>
|
||||
[Description("当前状态")]
|
||||
public int Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 矢量图标
|
||||
/// </summary>
|
||||
[Description("矢量图标")]
|
||||
public string Vector { get; set; }
|
||||
/// <summary>
|
||||
/// 排序号
|
||||
/// </summary>
|
||||
[Description("排序号")]
|
||||
public int SortNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模块标识
|
||||
/// </summary>
|
||||
[Description("模块标识")]
|
||||
public string Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否系统模块
|
||||
/// </summary>
|
||||
[Description("是否系统模块")]
|
||||
public bool IsSys { get; set; }
|
||||
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
// <autogenerated>
|
||||
// This code was generated by a CodeSmith Template.
|
||||
//
|
||||
// DO NOT MODIFY contents of this file. Changes to this
|
||||
// file will be lost if the code is regenerated.
|
||||
// Author:Yubao Li
|
||||
// </autogenerated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using OpenAuth.Repository.Core;
|
||||
|
||||
namespace OpenAuth.Repository.Domain
|
||||
{
|
||||
/// <summary>
|
||||
/// 功能模块表
|
||||
/// </summary>
|
||||
[Table("Module")]
|
||||
public partial class Module : TreeEntity
|
||||
{
|
||||
public Module()
|
||||
{
|
||||
this.CascadeId= string.Empty;
|
||||
this.Name= string.Empty;
|
||||
this.Url= string.Empty;
|
||||
this.HotKey= string.Empty;
|
||||
this.IconName= string.Empty;
|
||||
this.Status= 0;
|
||||
this.ParentName= string.Empty;
|
||||
this.Vector= string.Empty;
|
||||
this.SortNo= 0;
|
||||
this.ParentId= string.Empty;
|
||||
this.Code= string.Empty;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 主页面URL
|
||||
/// </summary>
|
||||
[Description("主页面URL")]
|
||||
public string Url { get; set; }
|
||||
/// <summary>
|
||||
/// 热键
|
||||
/// </summary>
|
||||
[Description("热键")]
|
||||
public string HotKey { get; set; }
|
||||
/// <summary>
|
||||
/// 是否叶子节点
|
||||
/// </summary>
|
||||
[Description("是否叶子节点")]
|
||||
public bool IsLeaf { get; set; }
|
||||
/// <summary>
|
||||
/// 是否自动展开
|
||||
/// </summary>
|
||||
[Description("是否自动展开")]
|
||||
public bool IsAutoExpand { get; set; }
|
||||
/// <summary>
|
||||
/// 节点图标文件名称
|
||||
/// </summary>
|
||||
[Description("节点图标文件名称")]
|
||||
public string IconName { get; set; }
|
||||
/// <summary>
|
||||
/// 当前状态,0:正常,-1:隐藏,不在导航列表中显示
|
||||
/// </summary>
|
||||
[Description("当前状态")]
|
||||
public int Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 矢量图标
|
||||
/// </summary>
|
||||
[Description("矢量图标")]
|
||||
public string Vector { get; set; }
|
||||
/// <summary>
|
||||
/// 排序号
|
||||
/// </summary>
|
||||
[Description("排序号")]
|
||||
public int SortNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模块标识
|
||||
/// </summary>
|
||||
[Description("模块标识")]
|
||||
public string Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否系统模块
|
||||
/// </summary>
|
||||
[Description("是否系统模块")]
|
||||
public bool IsSys { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 前端界面是否缓存
|
||||
/// </summary>
|
||||
/// [Description("前端界面是否缓存")]
|
||||
public bool KeepAlive { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -12,20 +12,20 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Autofac" Version="5.2.0" />
|
||||
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="5.0.10" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.10" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.27" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.27" />
|
||||
<PackageReference Include="Moq" Version="4.13.1" />
|
||||
<PackageReference Include="MySql.Data" Version="8.0.13" />
|
||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="5.0.10" />
|
||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="6.0.22" />
|
||||
|
||||
<PackageReference Include="NUnit" Version="3.13.1" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="3.17.0" />
|
||||
<PackageReference Include="Oracle.EntityFrameworkCore" Version="5.21.1" />
|
||||
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.110" />
|
||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.1" />
|
||||
<PackageReference Include="Oracle.EntityFrameworkCore" Version="6.21.130" />
|
||||
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.130" />
|
||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="6.0.2" />
|
||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.102" />
|
||||
<PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="5.2.13" />
|
||||
<PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="6.102.1.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -84,6 +84,11 @@ namespace OpenAuth.Repository.Test
|
||||
DbType = dbType.Value,
|
||||
ConnectionString = connectionString,
|
||||
IsAutoCloseConnection = true,
|
||||
MoreSettings=new ConnMoreSettings() {
|
||||
PgSqlIsAutoToLower = false,//增删查改支持驼峰表
|
||||
PgSqlIsAutoToLowerCodeFirst = false, // 建表建驼峰表。5.1.3.30
|
||||
IsAutoToUpper=false //禁用自动转成大写表
|
||||
}
|
||||
});
|
||||
return sqlSugar;
|
||||
});
|
||||
|
||||
@@ -24,8 +24,7 @@ namespace OpenAuth.WebApi
|
||||
|_|
|
||||
-------------------------------------------------------------------
|
||||
Author : yubaolee
|
||||
.Net 5 Repository: https://gitee.com/dotnetchina/OpenAuth.Net
|
||||
.Net core 3.1 : https://gitee.com/yubaolee/OpenAuth.Core
|
||||
Repository : https://gitee.com/dotnetchina/OpenAuth.Net
|
||||
-------------------------------------------------------------------
|
||||
Start Time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
|
||||
CreateHostBuilder(args).Build().Run();
|
||||
|
||||
@@ -185,6 +185,11 @@ namespace OpenAuth.WebApi
|
||||
DbType = dbType.Value,
|
||||
ConnectionString = connectionString,
|
||||
IsAutoCloseConnection = true,
|
||||
MoreSettings=new ConnMoreSettings() {
|
||||
PgSqlIsAutoToLower = false,//增删查改支持驼峰表
|
||||
PgSqlIsAutoToLowerCodeFirst = false, // 建表建驼峰表。5.1.3.30
|
||||
IsAutoToUpper=false //禁用自动转成大写表
|
||||
}
|
||||
}, db => { db.Aop.OnLogExecuting = (sql, pars) => { logger.LogInformation(sql); }; });
|
||||
return sqlSugar;
|
||||
});
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* @Author: yubaolee <yubaolee@163.com> | ahfu~ <954478625@qq.com>
|
||||
* @Date: 2023-08-12 10:48:24
|
||||
* @LastEditTime: 2023-10-05 10:12:16
|
||||
* @LastEditTime: 2023-12-30 21:10:18
|
||||
* @Description:
|
||||
* @
|
||||
* @Copyright (c) 2023 by yubaolee | ahfu~ , All Rights Reserved.
|
||||
@@ -121,7 +121,7 @@ module.exports = {
|
||||
title: '基础开发', // 必要的
|
||||
sidebarDepth: 1, // 可选的, 默认值是 1
|
||||
collapsable: false,
|
||||
children: ['router','openurl'],
|
||||
children: ['router','openurl','keepalive'],
|
||||
},
|
||||
'datapropertyrule',
|
||||
'printerplan',
|
||||
|
||||
@@ -49,7 +49,7 @@ b => b.UseRowNumberForPaging());
|
||||
|
||||
## 使用mysql时,提示无法找到openauthdb.Org
|
||||
|
||||
在linux下面,mysql是区分数据库大小写的,但OpenAuth.Core使用EF映射数据库表是按照首字母大写来处理的。在mysql配置中里面加上:
|
||||
在linux下面,mysql是区分数据库大小写的,但OpenAuth.Net使用EF映射数据库表是按照首字母大写来处理的。在mysql配置中里面加上:
|
||||
|
||||
```shell
|
||||
lower_case_table_names=1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 表单设计
|
||||
|
||||
OpenAuth.Net内置的表单类型有以下三种:
|
||||
OpenAuth.Net集成了表单设计的功能,目前表单仅用于流程审批。后期会集成到代码生成功能中。系统内置的表单类型有以下三种:
|
||||
|
||||
## 动态表单
|
||||
|
||||
|
||||
@@ -1,5 +1,33 @@
|
||||
# 日常提交(针对dev分支)
|
||||
|
||||
* 2024.02.26 fix #I940O7 vue3 前端是否缓存,配置界面未更新
|
||||
|
||||
* 2024.02.24 角色分配模块时,可以级联
|
||||
|
||||
* 2024.02.22 fix #I9302C Vue3表单设计无法展示自定义页面
|
||||
|
||||
* 2024.02.17 vue3模块增加配置是否缓存
|
||||
|
||||
* 2024.02.03 fix #I90F8B 生成的主从表页面, 在从表那里增加全屏, 或者是隐藏列表的按钮
|
||||
|
||||
* 2024.01.15 fix #I8WCQ8 定时任务添加本地任务时,不应该显示HTTPPOST
|
||||
|
||||
* 2024.01.09 修复前端缓存时间
|
||||
|
||||
* 2024.01.06 update layui to 2.9.3
|
||||
|
||||
* 2023.12.30 模块增加配置是否缓存。请参考[界面缓存](http://doc.openauth.net.cn/pro/keepalive.html);
|
||||
|
||||
* 2023.12.27 登录账号旁边实时显示未读消息条数
|
||||
|
||||
* 2023.12.23 完善人员显示直接上级及部门显示负责人
|
||||
|
||||
* 2023.12.19 流程设计可以选择部门负责人
|
||||
|
||||
* 2023.11.25 hiprint自动连接打印客户端失败的报错
|
||||
|
||||
* 2023.11.20 打印导出PDF时,数据为空
|
||||
|
||||
* 2023.10.04 全面完成智能打印板块功能开发。请参考[智能打印](http://doc.openauth.net.cn/pro/printerplan.html);
|
||||
|
||||
* 2023.10.02 fix #I82FO6 完成业务功能配置打印方案
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## 下载代码
|
||||
|
||||
gitee上面两个版本,仅SDK的版本不同,代码完全相同。其中:
|
||||
gitee上面两个版本。其中:
|
||||
|
||||
* [OpenAuth.Net](https://gitee.com/dotnetchina/OpenAuth.Net) 默认SDK版本为.Net 6,推荐使用该版本。如果你使用vs2019作为开发工具,请注意查看:[VS2019打开6.0及以后版本](http://doc.openauth.net.cn/core/faq.html#vs2019%E6%89%93%E5%BC%806-0%E5%8F%8A%E4%BB%A5%E5%90%8E%E7%89%88%E6%9C%AC)
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ namespace OpenAuth.App
|
||||
|
||||
```
|
||||
|
||||
如果在一个事务里面有多次`SaveChanges()`的情况,需要使用OpenAuth.Core提供的`ExecuteWithTransaction`处理。如下:
|
||||
如果在一个事务里面有多次`SaveChanges()`的情况,需要使用OpenAuth.Net提供的`ExecuteWithTransaction`处理。如下:
|
||||
|
||||
```csharp
|
||||
//代码详见TestTransaction.cs/NormalSubmit()
|
||||
|
||||
@@ -12,16 +12,55 @@ OpenAuth.Pro使用的动态表单可以满足日常普通的审批功能,但
|
||||
|
||||

|
||||
|
||||
## 编写后端代码
|
||||
|
||||
## 编写请假条表单代码
|
||||
自定义表单后台数据库读写需要继承`ICustomerForm`接口。并且名称需要和数据库表名+App的形式,如:`FrmLeaveReqApp`。参考代码如下:
|
||||
|
||||
```csharp
|
||||
public class FrmLeaveReqApp : BaseStringApp<FrmLeaveReq,OpenAuthDBContext>, ICustomerForm
|
||||
{
|
||||
//其他逻辑代码略
|
||||
public void Add(FrmLeaveReq obj)
|
||||
{
|
||||
Repository.Add(obj);
|
||||
}
|
||||
|
||||
public FrmLeaveReqApp(IUnitWork<OpenAuthDBContext> unitWork, IRepository<FrmLeaveReq,OpenAuthDBContext> repository,
|
||||
IAuth auth) : base(unitWork, repository, auth)
|
||||
{
|
||||
}
|
||||
|
||||
public void Add(string flowInstanceId, string frmData)
|
||||
{
|
||||
var req = JsonHelper.Instance.Deserialize<FrmLeaveReq>(frmData);
|
||||
req.FlowInstanceId = flowInstanceId;
|
||||
Add(req);
|
||||
}
|
||||
|
||||
public void Update(string flowInstanceId, string frmData)
|
||||
{
|
||||
var req = JsonHelper.Instance.Deserialize<FrmLeaveReq>(frmData);
|
||||
UnitWork.Update<FrmLeaveReq>(u => u.FlowInstanceId == flowInstanceId, u => new FrmLeaveReq
|
||||
{
|
||||
UserName = req.UserName,
|
||||
RequestComment = req.RequestComment,
|
||||
RequestType = req.RequestType
|
||||
//补充其他需要更新的字段
|
||||
});
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## 编写请假条前端表单代码
|
||||
|
||||
系统约定,所有开发人员自己开发的表单,全部放在views/forms文件夹下。并且以下图的文件结构进行放置。
|
||||
|
||||

|
||||

|
||||
|
||||
其中:
|
||||
|
||||
frmLeaveReq:为业务表单的文件夹名称,必须与数据库表名保持一致。
|
||||
FrmLeaveReq:为业务表单的文件夹名称,必须与数据库表名保持一致。
|
||||
|
||||
* add.vue:为业务表单页面,负责编写业务输入逻辑。内部methods必须包含方法:
|
||||
|
||||
@@ -36,7 +75,12 @@ getData() {
|
||||
* detail.vue:为业务表单的展示页面。
|
||||
|
||||
## 注册表单
|
||||
在项目main.js中注入刚刚添加的组件:
|
||||
|
||||
在表单添加的下拉框里添加:
|
||||

|
||||
|
||||
::: warning 注意
|
||||
企业Vue2 5.2或以前版本需要在项目main.js中注入:
|
||||
|
||||
```javascript
|
||||
// 请假条表单和详情
|
||||
@@ -46,8 +90,7 @@ Vue.component('FrmLeaveReqAdd', FrmLeaveReqAdd)
|
||||
Vue.component('FrmLeaveReqDetail', FrmLeaveReqDetail)
|
||||
```
|
||||
|
||||
并在表单添加的下拉框里添加:
|
||||

|
||||
:::
|
||||
|
||||
## 配置表单
|
||||
|
||||
|
||||
16
docs/pro/keepalive.md
Normal file
16
docs/pro/keepalive.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# 界面缓存
|
||||
|
||||
OpenAuth.Pro以前的版本采用vue [keepAlive](https://cn.vuejs.org/guide/built-ins/keep-alive.html)的方式缓存所有前端组件。从v5.2版本开始,可以在【模块管理】中配置前端是否缓存。如图:
|
||||
|
||||

|
||||
|
||||
|
||||
::: tip 提示
|
||||
目前框架除了【消息日志/系统日志】外,其他界面都是默认自动缓存的。
|
||||
:::
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,3 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : localhost
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 50722
|
||||
Source Host : localhost:3306
|
||||
Source Schema : openauthdb
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 50722
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 21/12/2023 20:41:35
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
@@ -593,32 +578,33 @@ CREATE TABLE `module` (
|
||||
`ParentId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父节点流水号',
|
||||
`Code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||
`IsSys` tinyint(4) NOT NULL COMMENT '是否为系统模块',
|
||||
`KeepAlive` tinyint(4) NULL DEFAULT NULL COMMENT '前端是否缓存',
|
||||
PRIMARY KEY (`Id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '功能模块表' ROW_FORMAT = COMPACT;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of module
|
||||
-- ----------------------------
|
||||
INSERT INTO `module` VALUES ('0031262c-689c-4b96-bae2-2c9d67076ade', '.0.1.9.', '流程设计', '/flowSchemes/index', '', 0, 0, 'layui-icon-engine', 0, '基础配置', '', 6, '7580672f-a390-4bb6-982d-9a4570cb5199', 'FlowScheme', 1);
|
||||
INSERT INTO `module` VALUES ('069475e3-c997-487a-9f29-e6a864c5c1d4', '.0.2.', '流程中心', '/', '', 0, 0, 'layui-icon-senior', 0, '根节点', '', 3, NULL, NULL, 1);
|
||||
INSERT INTO `module` VALUES ('15a3a401-e8eb-4d8b-9035-ecd5f53ed0c9', '.0.4.', '仓储中心', '/', '', 0, 0, '', 0, '根节点', '', 2, NULL, '', 0);
|
||||
INSERT INTO `module` VALUES ('37bb9414-19a0-4223-9056-71f8c758a930', '.0.2.5.', '已处理流程', '/flowinstances/disposed', '', 0, 0, 'layui-icon-ok-circle', 0, '流程中心', '', 3, '069475e3-c997-487a-9f29-e6a864c5c1d4', 'FlowInstanceDisposed', 1);
|
||||
INSERT INTO `module` VALUES ('4abafc83-c8f5-452f-9882-e113a86e7a3e', '.0.2.6.', '待处理流程', '/flowinstances/wait', '', 0, 0, 'layui-icon-help', 0, '流程中心', '', 1, '069475e3-c997-487a-9f29-e6a864c5c1d4', 'FlowInstanceWait', 1);
|
||||
INSERT INTO `module` VALUES ('6a9e1346-0c01-44d2-8eb1-f929fdab542a', '.0.1.10.', '部门管理', '/OrgManager/Index', '', 0, 0, 'layui-icon-group', 0, '基础配置', '', 4, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Org', 1);
|
||||
INSERT INTO `module` VALUES ('7580672f-a390-4bb6-982d-9a4570cb5199', '.0.1.', '基础配置', ' /', '', 0, 0, 'layui-icon-set-fill', 0, '根节点', '', 1, NULL, NULL, 1);
|
||||
INSERT INTO `module` VALUES ('7bc7e527-478d-49fd-868d-5f31951586f5', '.0.3.1.', '系统日志', '/SysLogs/Index', '', 0, 0, 'layui-icon-theme', 0, '消息日志', '', 1, 'b19bce90-5508-43b6-93ed-cd9ff9e356a9', 'SysLog', 1);
|
||||
INSERT INTO `module` VALUES ('7bc7e527-478d-49fd-868d-5f31951586f6', '.0.3.2.', '我的消息', '/SysMessages/Index', '', 0, 0, 'layui-icon-theme', 0, '消息日志', '', 2, 'b19bce90-5508-43b6-93ed-cd9ff9e356a9', 'SysMessage', 1);
|
||||
INSERT INTO `module` VALUES ('907a24c6-3c95-4073-8f90-ea7ec42c63f7', '.0.1.19.', '定时任务', '/OpenJobs/Index', '', 0, 0, 'layui-icon-time', 0, '基础配置', '', 2, '7580672f-a390-4bb6-982d-9a4570cb5199', 'OpenJob', 1);
|
||||
INSERT INTO `module` VALUES ('92b00259-2d15-43e7-9321-adffb29e8bf2', '.0.1.11.', '表单设计', '/forms/index', '', 0, 0, 'layui-icon-theme', 0, '基础配置', '', 5, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Form', 1);
|
||||
INSERT INTO `module` VALUES ('9486ff22-b696-4d7f-8093-8a3e53c45453', '.0.2.7.', '我的流程', '/flowInstances/Index', '', 0, 0, 'layui-icon-share', 0, '流程中心', '', 2, '069475e3-c997-487a-9f29-e6a864c5c1d4', 'FlowInstance', 1);
|
||||
INSERT INTO `module` VALUES ('98a949e8-8704-40a7-b9a1-c0e8801e4057', '.0.4.1.', '入库订单', '/wmsinboundordertbls/index', '', 0, 0, '', 0, '仓储中心', '', 1, '15a3a401-e8eb-4d8b-9035-ecd5f53ed0c9', 'WmsInboundOrderTbl', 0);
|
||||
INSERT INTO `module` VALUES ('9a87c0fa-9172-42a1-9505-7492433dcb8e', '.0.1.16.', '数据权限', '/dataprivilegerules/index', '', 0, 0, 'layui-icon-auz', 0, '基础配置', '', 1, '7580672f-a390-4bb6-982d-9a4570cb5199', 'DataPrivilegeRule', 0);
|
||||
INSERT INTO `module` VALUES ('a94d5648-c2a9-405e-ba6f-f1602ec9b807', '.0.1.17.', '字典分类', '/Categories/Index', '', 0, 0, '', 0, '基础配置', '', 7, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Category', 0);
|
||||
INSERT INTO `module` VALUES ('b19bce90-5508-43b6-93ed-cd9ff9e356a9', '.0.3.', '消息日志', ' /', '', 0, 0, 'layui-icon-set-fill', 0, '根节点', '', 4, NULL, NULL, 1);
|
||||
INSERT INTO `module` VALUES ('bc80478d-0547-4437-9cff-be4b40144bdf', '.0.1.13.', '模块管理', '/ModuleManager/Index', '', 0, 0, 'layui-icon-tabs', 0, '基础配置', '', 1, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Module', 1);
|
||||
INSERT INTO `module` VALUES ('bedb41a2-f310-4775-af99-01be08adda93', '.0.1.14.', '角色管理', '/RoleManager/Index', '', 0, 0, 'layui-icon-user', 0, '基础配置', '', 2, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Role', 1);
|
||||
INSERT INTO `module` VALUES ('e8dc5db6-4fc4-4795-a1cc-681cbcceec91', '.0.1.3.', '资源管理', '/Resources/Index', '', 0, 0, 'layui-icon-cellphone', 0, '基础配置', '', 8, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Resource', 0);
|
||||
INSERT INTO `module` VALUES ('ef386d5d-cd58-43c0-a4ab-80afd0dbcd6c', '.0.1.15.', '用户管理', '/UserManager/Index', '', 0, 0, 'layui-icon-friends', 0, '基础配置', '', 3, '7580672f-a390-4bb6-982d-9a4570cb5199', 'User', 1);
|
||||
INSERT INTO `module` VALUES ('0031262c-689c-4b96-bae2-2c9d67076ade', '.0.1.9.', '流程设计', '/flowSchemes/index', '', 0, 0, 'layui-icon-engine', 0, '基础配置', '', 6, '7580672f-a390-4bb6-982d-9a4570cb5199', 'FlowScheme', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('069475e3-c997-487a-9f29-e6a864c5c1d4', '.0.2.', '流程中心', '/', '', 0, 0, 'layui-icon-senior', 0, '根节点', '', 3, NULL, NULL, 1, NULL);
|
||||
INSERT INTO `module` VALUES ('15a3a401-e8eb-4d8b-9035-ecd5f53ed0c9', '.0.4.', '仓储中心', '/', '', 0, 0, '', 0, '根节点', '', 2, NULL, '', 0, NULL);
|
||||
INSERT INTO `module` VALUES ('37bb9414-19a0-4223-9056-71f8c758a930', '.0.2.5.', '已处理流程', '/flowinstances/disposed', '', 0, 0, 'layui-icon-ok-circle', 0, '流程中心', '', 3, '069475e3-c997-487a-9f29-e6a864c5c1d4', 'FlowInstanceDisposed', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('4abafc83-c8f5-452f-9882-e113a86e7a3e', '.0.2.6.', '待处理流程', '/flowinstances/wait', '', 0, 0, 'layui-icon-help', 0, '流程中心', '', 1, '069475e3-c997-487a-9f29-e6a864c5c1d4', 'FlowInstanceWait', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('6a9e1346-0c01-44d2-8eb1-f929fdab542a', '.0.1.10.', '部门管理', '/OrgManager/Index', '', 0, 0, 'layui-icon-group', 0, '基础配置', '', 4, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Org', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('7580672f-a390-4bb6-982d-9a4570cb5199', '.0.1.', '基础配置', ' /', '', 0, 0, 'layui-icon-set-fill', 0, '根节点', '', 1, NULL, NULL, 1, NULL);
|
||||
INSERT INTO `module` VALUES ('7bc7e527-478d-49fd-868d-5f31951586f5', '.0.3.1.', '系统日志', '/SysLogs/Index', '', 0, 0, 'layui-icon-theme', 0, '消息日志', '', 1, 'b19bce90-5508-43b6-93ed-cd9ff9e356a9', 'SysLog', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('7bc7e527-478d-49fd-868d-5f31951586f6', '.0.3.2.', '我的消息', '/SysMessages/Index', '', 0, 0, 'layui-icon-theme', 0, '消息日志', '', 2, 'b19bce90-5508-43b6-93ed-cd9ff9e356a9', 'SysMessage', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('907a24c6-3c95-4073-8f90-ea7ec42c63f7', '.0.1.19.', '定时任务', '/OpenJobs/Index', '', 0, 0, 'layui-icon-time', 0, '基础配置', '', 2, '7580672f-a390-4bb6-982d-9a4570cb5199', 'OpenJob', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('92b00259-2d15-43e7-9321-adffb29e8bf2', '.0.1.11.', '表单设计', '/forms/index', '', 0, 0, 'layui-icon-theme', 0, '基础配置', '', 5, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Form', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('9486ff22-b696-4d7f-8093-8a3e53c45453', '.0.2.7.', '我的流程', '/flowInstances/Index', '', 0, 0, 'layui-icon-share', 0, '流程中心', '', 2, '069475e3-c997-487a-9f29-e6a864c5c1d4', 'FlowInstance', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('98a949e8-8704-40a7-b9a1-c0e8801e4057', '.0.4.1.', '入库订单', '/wmsinboundordertbls/index', '', 0, 0, '', 0, '仓储中心', '', 1, '15a3a401-e8eb-4d8b-9035-ecd5f53ed0c9', 'WmsInboundOrderTbl', 0, NULL);
|
||||
INSERT INTO `module` VALUES ('9a87c0fa-9172-42a1-9505-7492433dcb8e', '.0.1.16.', '数据权限', '/dataprivilegerules/index', '', 0, 0, 'layui-icon-auz', 0, '基础配置', '', 1, '7580672f-a390-4bb6-982d-9a4570cb5199', 'DataPrivilegeRule', 0, NULL);
|
||||
INSERT INTO `module` VALUES ('a94d5648-c2a9-405e-ba6f-f1602ec9b807', '.0.1.17.', '字典分类', '/Categories/Index', '', 0, 0, '', 0, '基础配置', '', 7, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Category', 0, NULL);
|
||||
INSERT INTO `module` VALUES ('b19bce90-5508-43b6-93ed-cd9ff9e356a9', '.0.3.', '消息日志', ' /', '', 0, 0, 'layui-icon-set-fill', 0, '根节点', '', 4, NULL, NULL, 1, NULL);
|
||||
INSERT INTO `module` VALUES ('bc80478d-0547-4437-9cff-be4b40144bdf', '.0.1.13.', '模块管理', '/ModuleManager/Index', '', 0, 0, 'layui-icon-tabs', 0, '基础配置', '', 1, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Module', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('bedb41a2-f310-4775-af99-01be08adda93', '.0.1.14.', '角色管理', '/RoleManager/Index', '', 0, 0, 'layui-icon-user', 0, '基础配置', '', 2, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Role', 1, NULL);
|
||||
INSERT INTO `module` VALUES ('e8dc5db6-4fc4-4795-a1cc-681cbcceec91', '.0.1.3.', '资源管理', '/Resources/Index', '', 0, 0, 'layui-icon-cellphone', 0, '基础配置', '', 8, '7580672f-a390-4bb6-982d-9a4570cb5199', 'Resource', 0, NULL);
|
||||
INSERT INTO `module` VALUES ('ef386d5d-cd58-43c0-a4ab-80afd0dbcd6c', '.0.1.15.', '用户管理', '/UserManager/Index', '', 0, 0, 'layui-icon-friends', 0, '基础配置', '', 3, '7580672f-a390-4bb6-982d-9a4570cb5199', 'User', 1, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for moduleelement
|
||||
File diff suppressed because one or more lines are too long
@@ -3,6 +3,7 @@ use [OpenAuthDB]
|
||||
|
||||
create type [dbo].[PrimaryKey] from varchar(50)
|
||||
go
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for Application
|
||||
-- ----------------------------
|
||||
@@ -2469,7 +2470,8 @@ CREATE TABLE [dbo].[Module] (
|
||||
[SortNo] int DEFAULT 0 NOT NULL,
|
||||
[ParentId] [dbo].[PrimaryKey] NULL,
|
||||
[Code] varchar(50) COLLATE Chinese_PRC_CI_AS NULL,
|
||||
[IsSys] bit DEFAULT 0 NOT NULL
|
||||
[IsSys] bit DEFAULT 0 NOT NULL,
|
||||
[KeepAlive] bit NULL
|
||||
)
|
||||
GO
|
||||
|
||||
@@ -2574,6 +2576,13 @@ EXEC sp_addextendedproperty
|
||||
'COLUMN', N'IsSys'
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
'MS_Description', N'前端是否缓存',
|
||||
'SCHEMA', N'dbo',
|
||||
'TABLE', N'Module',
|
||||
'COLUMN', N'KeepAlive'
|
||||
GO
|
||||
|
||||
EXEC sp_addextendedproperty
|
||||
'MS_Description', N'功能模块表',
|
||||
'SCHEMA', N'dbo',
|
||||
@@ -2584,64 +2593,64 @@ GO
|
||||
-- ----------------------------
|
||||
-- Records of Module
|
||||
-- ----------------------------
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'0031262c-689c-4b96-bae2-2c9d67076ade', N'.0.1.9.', N'流程设计', N'/flowSchemes/index', N'', N'0', N'0', N'layui-icon-engine', N'0', N'基础配置', N'', N'6', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'FlowScheme', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'0031262c-689c-4b96-bae2-2c9d67076ade', N'.0.1.9.', N'流程设计', N'/flowSchemes/index', N'', N'0', N'0', N'layui-icon-engine', N'0', N'基础配置', N'', N'6', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'FlowScheme', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'069475e3-c997-487a-9f29-e6a864c5c1d4', N'.0.2.', N'流程中心', N'/', N'', N'0', N'0', N'layui-icon-senior', N'0', N'根节点', N'', N'3', NULL, NULL, N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'069475e3-c997-487a-9f29-e6a864c5c1d4', N'.0.2.', N'流程中心', N'/', N'', N'0', N'0', N'layui-icon-senior', N'0', N'根节点', N'', N'3', NULL, NULL, N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'15a3a401-e8eb-4d8b-9035-ecd5f53ed0c9', N'.0.4.', N'仓储中心', N'/', N'', N'0', N'0', N'', N'0', N'根节点', N'', N'2', NULL, N'', N'0')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'15a3a401-e8eb-4d8b-9035-ecd5f53ed0c9', N'.0.4.', N'仓储中心', N'/', N'', N'0', N'0', N'', N'0', N'根节点', N'', N'2', NULL, N'', N'0', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'37bb9414-19a0-4223-9056-71f8c758a930', N'.0.2.5.', N'已处理流程', N'/flowinstances/disposed', N'', N'0', N'0', N'layui-icon-ok-circle', N'0', N'流程中心', N'', N'3', N'069475e3-c997-487a-9f29-e6a864c5c1d4', N'FlowInstanceDisposed', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'37bb9414-19a0-4223-9056-71f8c758a930', N'.0.2.5.', N'已处理流程', N'/flowinstances/disposed', N'', N'0', N'0', N'layui-icon-ok-circle', N'0', N'流程中心', N'', N'3', N'069475e3-c997-487a-9f29-e6a864c5c1d4', N'FlowInstanceDisposed', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'4abafc83-c8f5-452f-9882-e113a86e7a3e', N'.0.2.6.', N'待处理流程', N'/flowinstances/wait', N'', N'0', N'0', N'layui-icon-help', N'0', N'流程中心', N'', N'1', N'069475e3-c997-487a-9f29-e6a864c5c1d4', N'FlowInstanceWait', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'4abafc83-c8f5-452f-9882-e113a86e7a3e', N'.0.2.6.', N'待处理流程', N'/flowinstances/wait', N'', N'0', N'0', N'layui-icon-help', N'0', N'流程中心', N'', N'1', N'069475e3-c997-487a-9f29-e6a864c5c1d4', N'FlowInstanceWait', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'6a9e1346-0c01-44d2-8eb1-f929fdab542a', N'.0.1.10.', N'部门管理', N'/OrgManager/Index', N'', N'0', N'0', N'layui-icon-group', N'0', N'基础配置', N'', N'4', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Org', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'6a9e1346-0c01-44d2-8eb1-f929fdab542a', N'.0.1.10.', N'部门管理', N'/OrgManager/Index', N'', N'0', N'0', N'layui-icon-group', N'0', N'基础配置', N'', N'4', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Org', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'7580672f-a390-4bb6-982d-9a4570cb5199', N'.0.1.', N'基础配置', N' /', N'', N'0', N'0', N'layui-icon-set-fill', N'0', N'根节点', N'', N'1', NULL, NULL, N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'7580672f-a390-4bb6-982d-9a4570cb5199', N'.0.1.', N'基础配置', N' /', N'', N'0', N'0', N'layui-icon-set-fill', N'0', N'根节点', N'', N'1', NULL, NULL, N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'7bc7e527-478d-49fd-868d-5f31951586f5', N'.0.3.1.', N'系统日志', N'/SysLogs/Index', N'', N'0', N'0', N'layui-icon-theme', N'0', N'消息日志', N'', N'1', N'b19bce90-5508-43b6-93ed-cd9ff9e356a9', N'SysLog', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'7bc7e527-478d-49fd-868d-5f31951586f5', N'.0.3.1.', N'系统日志', N'/SysLogs/Index', N'', N'0', N'0', N'layui-icon-theme', N'0', N'消息日志', N'', N'1', N'b19bce90-5508-43b6-93ed-cd9ff9e356a9', N'SysLog', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'7bc7e527-478d-49fd-868d-5f31951586f6', N'.0.3.2.', N'我的消息', N'/SysMessages/Index', N'', N'0', N'0', N'layui-icon-theme', N'0', N'消息日志', N'', N'2', N'b19bce90-5508-43b6-93ed-cd9ff9e356a9', N'SysMessage', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'7bc7e527-478d-49fd-868d-5f31951586f6', N'.0.3.2.', N'我的消息', N'/SysMessages/Index', N'', N'0', N'0', N'layui-icon-theme', N'0', N'消息日志', N'', N'2', N'b19bce90-5508-43b6-93ed-cd9ff9e356a9', N'SysMessage', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'907a24c6-3c95-4073-8f90-ea7ec42c63f7', N'.0.1.19.', N'定时任务', N'/OpenJobs/Index', N'', N'0', N'0', N'layui-icon-time', N'0', N'基础配置', N'', N'2', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'OpenJob', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'907a24c6-3c95-4073-8f90-ea7ec42c63f7', N'.0.1.19.', N'定时任务', N'/OpenJobs/Index', N'', N'0', N'0', N'layui-icon-time', N'0', N'基础配置', N'', N'2', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'OpenJob', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'92b00259-2d15-43e7-9321-adffb29e8bf2', N'.0.1.11.', N'表单设计', N'/forms/index', N'', N'0', N'0', N'layui-icon-theme', N'0', N'基础配置', N'', N'5', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Form', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'92b00259-2d15-43e7-9321-adffb29e8bf2', N'.0.1.11.', N'表单设计', N'/forms/index', N'', N'0', N'0', N'layui-icon-theme', N'0', N'基础配置', N'', N'5', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Form', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'9486ff22-b696-4d7f-8093-8a3e53c45453', N'.0.2.7.', N'我的流程', N'/flowInstances/Index', N'', N'0', N'0', N'layui-icon-share', N'0', N'流程中心', N'', N'2', N'069475e3-c997-487a-9f29-e6a864c5c1d4', N'FlowInstance', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'9486ff22-b696-4d7f-8093-8a3e53c45453', N'.0.2.7.', N'我的流程', N'/flowInstances/Index', N'', N'0', N'0', N'layui-icon-share', N'0', N'流程中心', N'', N'2', N'069475e3-c997-487a-9f29-e6a864c5c1d4', N'FlowInstance', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'98a949e8-8704-40a7-b9a1-c0e8801e4057', N'.0.4.1.', N'入库订单', N'/wmsinboundordertbls/index', N'', N'0', N'0', N'', N'0', N'仓储中心', N'', N'1', N'15a3a401-e8eb-4d8b-9035-ecd5f53ed0c9', N'WmsInboundOrderTbl', N'0')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'98a949e8-8704-40a7-b9a1-c0e8801e4057', N'.0.4.1.', N'入库订单', N'/wmsinboundordertbls/index', N'', N'0', N'0', N'', N'0', N'仓储中心', N'', N'1', N'15a3a401-e8eb-4d8b-9035-ecd5f53ed0c9', N'WmsInboundOrderTbl', N'0', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'9a87c0fa-9172-42a1-9505-7492433dcb8e', N'.0.1.16.', N'数据权限', N'/dataprivilegerules/index', N'', N'0', N'0', N'layui-icon-auz', N'0', N'基础配置', N'', N'1', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'DataPrivilegeRule', N'0')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'9a87c0fa-9172-42a1-9505-7492433dcb8e', N'.0.1.16.', N'数据权限', N'/dataprivilegerules/index', N'', N'0', N'0', N'layui-icon-auz', N'0', N'基础配置', N'', N'1', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'DataPrivilegeRule', N'0', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'a94d5648-c2a9-405e-ba6f-f1602ec9b807', N'.0.1.17.', N'字典分类', N'/Categories/Index', N'', N'0', N'0', N'', N'0', N'基础配置', N'', N'7', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Category', N'0')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'a94d5648-c2a9-405e-ba6f-f1602ec9b807', N'.0.1.17.', N'字典分类', N'/Categories/Index', N'', N'0', N'0', N'', N'0', N'基础配置', N'', N'7', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Category', N'0', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'b19bce90-5508-43b6-93ed-cd9ff9e356a9', N'.0.3.', N'消息日志', N' /', N'', N'0', N'0', N'layui-icon-set-fill', N'0', N'根节点', N'', N'4', NULL, NULL, N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'b19bce90-5508-43b6-93ed-cd9ff9e356a9', N'.0.3.', N'消息日志', N' /', N'', N'0', N'0', N'layui-icon-set-fill', N'0', N'根节点', N'', N'4', NULL, NULL, N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'bc80478d-0547-4437-9cff-be4b40144bdf', N'.0.1.13.', N'模块管理', N'/ModuleManager/Index', N'', N'0', N'0', N'layui-icon-tabs', N'0', N'基础配置', N'', N'1', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Module', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'bc80478d-0547-4437-9cff-be4b40144bdf', N'.0.1.13.', N'模块管理', N'/ModuleManager/Index', N'', N'0', N'0', N'layui-icon-tabs', N'0', N'基础配置', N'', N'1', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Module', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'bedb41a2-f310-4775-af99-01be08adda93', N'.0.1.14.', N'角色管理', N'/RoleManager/Index', N'', N'0', N'0', N'layui-icon-user', N'0', N'基础配置', N'', N'2', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Role', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'bedb41a2-f310-4775-af99-01be08adda93', N'.0.1.14.', N'角色管理', N'/RoleManager/Index', N'', N'0', N'0', N'layui-icon-user', N'0', N'基础配置', N'', N'2', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Role', N'1', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'e8dc5db6-4fc4-4795-a1cc-681cbcceec91', N'.0.1.3.', N'资源管理', N'/Resources/Index', N'', N'0', N'0', N'layui-icon-cellphone', N'0', N'基础配置', N'', N'8', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Resource', N'0')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'e8dc5db6-4fc4-4795-a1cc-681cbcceec91', N'.0.1.3.', N'资源管理', N'/Resources/Index', N'', N'0', N'0', N'layui-icon-cellphone', N'0', N'基础配置', N'', N'8', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'Resource', N'0', NULL)
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys]) VALUES (N'ef386d5d-cd58-43c0-a4ab-80afd0dbcd6c', N'.0.1.15.', N'用户管理', N'/UserManager/Index', N'', N'0', N'0', N'layui-icon-friends', N'0', N'基础配置', N'', N'3', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'User', N'1')
|
||||
INSERT INTO [dbo].[Module] ([Id], [CascadeId], [Name], [Url], [HotKey], [IsLeaf], [IsAutoExpand], [IconName], [Status], [ParentName], [Vector], [SortNo], [ParentId], [Code], [IsSys], [KeepAlive]) VALUES (N'ef386d5d-cd58-43c0-a4ab-80afd0dbcd6c', N'.0.1.15.', N'用户管理', N'/UserManager/Index', N'', N'0', N'0', N'layui-icon-friends', N'0', N'基础配置', N'', N'3', N'7580672f-a390-4bb6-982d-9a4570cb5199', N'User', N'1', NULL)
|
||||
GO
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user