27 Commits
6.1 ... 6.2

Author SHA1 Message Date
wintel
65f1d3d761 fix #I95QYW 2024-03-09 10:45:39 +08:00
wintel
9cddee643a fix #I95QYW pg数据库,启动时提示表名不存在 2024-03-09 10:33:24 +08:00
yubaolee
37da0bcb00 修复Oracle脚本使用驼峰命名异常的问题 2024-03-08 16:57:05 +08:00
wintel
8a1491eec7 fix issue #I96DAJ 2024-03-06 21:55:21 +08:00
wintel
627e5b0d2c 修复Oracle脚本 2024-02-29 22:07:07 +08:00
wintel
96a0b89ceb fix #I949OU Oracle启动的时候提示视图不存在 2024-02-29 22:03:45 +08:00
yubaolee
1034a772c0 完善文档 2024-02-27 21:49:40 +08:00
wintel
985e637659 更新文档 2024-02-25 11:52:59 +08:00
wintel
68274bb7f8 Merge branch 'main' of https://gitee.com/dotnetchina/OpenAuth.Net into main 2024-02-24 21:35:24 +08:00
wintel
3915e435d7 增加6.1版本说明 2024-02-24 21:35:19 +08:00
yubaolee
90c6ebe893 调整根需要加载自定义表单 2024-02-23 14:35:11 +08:00
wintel
c7c4e1eb30 routine update 2024-02-22 22:15:50 +08:00
wintel
bdaba9984b update doc 2024-02-05 22:06:16 +08:00
yubaolee
22655eb163 routine update 2024-02-05 09:52:57 +08:00
yubaolee
2348a7d92a 完善文档 2024-01-24 12:28:18 +08:00
yubaolee
e4da666457 优化文档 2024-01-23 20:24:13 +08:00
wintel
875af85927 fix ##I8WCQ8 定时任务添加本地任务时,不应该显示HTTPPOST 2024-01-15 21:33:36 +08:00
wintel
804a759d46 routine update 2024-01-06 11:55:13 +08:00
wintel
552506d45e update layui to 2.9.3 2024-01-06 11:54:45 +08:00
wintel
cd808b8ffa routine update 2024-01-06 11:46:19 +08:00
wintel
e66678bdf1 更新文档 2023-12-30 22:13:52 +08:00
wintel
fda898fff6 routine update 2023-12-30 22:07:06 +08:00
wintel
3f496f1cca 调整数据库初始化脚本文件夹 2023-12-30 21:55:37 +08:00
wintel
b604f68aa6 增加界面缓存文档说明 2023-12-30 21:12:05 +08:00
wintel
989f8cd2bc Merge remote-tracking branch 'origin/main' into main
# Conflicts:
#	OpenAuth.App/ModuleManager/Response/ModuleView.cs
#	OpenAuth.Repository/Domain/Module.cs
2023-12-30 20:43:53 +08:00
wintel
cd81340814 fix #I8OB8D 增加可以配置界面是否缓存 2023-12-30 20:43:40 +08:00
wintel
00718929e7 fix #I8OB8D 增加可以配置界面是否缓存 2023-12-30 20:37:38 +08:00
57 changed files with 4254 additions and 4097 deletions

View File

@@ -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
- **新特性**

View File

@@ -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();
}

View File

@@ -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
}
}

View File

@@ -2,7 +2,6 @@
using System.Text;
using System.Threading.Tasks;
using Infrastructure;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using OpenAuth.Repository.Domain;
using Quartz;

View File

@@ -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)

View File

@@ -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>
/// 模块中的元素

View File

@@ -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)

View File

@@ -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)

View File

@@ -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;
});

View File

@@ -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;
});

View File

@@ -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();

View File

@@ -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;
});

View File

@@ -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>

View File

@@ -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【已满】 &nbsp; &nbsp; 626433139【已满】 &nbsp;&nbsp; 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【已满】 &nbsp; &nbsp; 626433139【已满】 &nbsp;&nbsp; 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>

View File

@@ -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>

View File

@@ -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

View File

@@ -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?"&#xe619;":"&#xe603;")+"</button>",'<button class="layui-icon '+u+'" lay-type="add">'+("updown"===n.anim?"&#xe61a;":"&#xe602;")+"</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)});

View File

@@ -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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;")),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

View File

@@ -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 ">&#xe63e;</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

View File

@@ -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:"&#x4E0A;&#x4E00;&#x9875;",a.next="next"in a?a.next:"&#x4E0B;&#x4E00;&#x9875;";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="&#x9996;&#x9875;">'+(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">&#x2026;</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">&#x2026;</span>'),0!==t&&e.push('<a href="javascript:;" class="layui-laypage-last" title="&#x5C3E;&#x9875;" 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">&#x5230;&#x7B2C;','<input type="text" min="1" value="'+a.curr+'" class="layui-input">','&#x9875;<button type="button" class="layui-laypage-btn">&#x786e;&#x5b9a;</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)});

View File

@@ -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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;")},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

View File

@@ -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

View File

@@ -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?"&#xe606;":e.bar1,e.bar2=e.bar2===!0?"&#xe607;":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var c=[e.bar1,e.bar2,"&#xe604;"],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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;")},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

View File

@@ -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; }
}
}

View File

@@ -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>

View File

@@ -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;
});

View File

@@ -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();

View File

@@ -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;
});

View File

@@ -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',

View File

@@ -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

View File

@@ -1,6 +1,6 @@
# 表单设计
OpenAuth.Net内置的表单类型有以下三种
OpenAuth.Net集成了表单设计的功能,目前表单仅用于流程审批。后期会集成到代码生成功能中。系统内置的表单类型有以下三种:
## 动态表单

View File

@@ -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 完成业务功能配置打印方案

View File

@@ -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)

View File

@@ -92,7 +92,7 @@ namespace OpenAuth.App
```
如果在一个事务里面有多次`SaveChanges()`的情况需要使用OpenAuth.Core提供的`ExecuteWithTransaction`处理。如下:
如果在一个事务里面有多次`SaveChanges()`的情况需要使用OpenAuth.Net提供的`ExecuteWithTransaction`处理。如下:
```csharp
//代码详见TestTransaction.cs/NormalSubmit()

View File

@@ -12,16 +12,55 @@ OpenAuth.Pro使用的动态表单可以满足日常普通的审批功能
![20211228212800](http://img.openauth.net.cn/20211228212800.png)
## 编写后端代码
## 编写请假条表单代码
自定义表单后台数据库读写需要继承`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文件夹下。并且以下图的文件结构进行放置。
![20211228212843](http://img.openauth.net.cn/20211228212843.png)
![20240223135542](http://img.openauth.net.cn/20240223135542.png)
其中:
frmLeaveReq为业务表单的文件夹名称必须与数据库表名保持一致。
FrmLeaveReq为业务表单的文件夹名称必须与数据库表名保持一致。
* add.vue为业务表单页面负责编写业务输入逻辑。内部methods必须包含方法
@@ -36,7 +75,12 @@ getData() {
* detail.vue为业务表单的展示页面。
## 注册表单
在项目main.js中注入刚刚添加的组件
在表单添加的下拉框里添加:
![20211228213129](http://img.openauth.net.cn/20211228213129.png)
::: warning 注意
企业Vue2 5.2或以前版本需要在项目main.js中注入
```javascript
// 请假条表单和详情
@@ -46,8 +90,7 @@ Vue.component('FrmLeaveReqAdd', FrmLeaveReqAdd)
Vue.component('FrmLeaveReqDetail', FrmLeaveReqDetail)
```
并在表单添加的下拉框里添加:
![20211228213129](http://img.openauth.net.cn/20211228213129.png)
:::
## 配置表单

16
docs/pro/keepalive.md Normal file
View File

@@ -0,0 +1,16 @@
# 界面缓存
OpenAuth.Pro以前的版本采用vue [keepAlive](https://cn.vuejs.org/guide/built-ins/keep-alive.html)的方式缓存所有前端组件。从v5.2版本开始,可以在【模块管理】中配置前端是否缓存。如图:
![20231230210713](http://img.openauth.net.cn/20231230210713.png)
::: tip 提示
目前框架除了【消息日志/系统日志】外,其他界面都是默认自动缓存的。
:::

View File

@@ -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

View File

@@ -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