diff --git a/Infrastructure/Const/FlowInstanceStatus.cs b/Infrastructure/Const/FlowInstanceStatus.cs
index 3e3c86a3..67d3ca47 100644
--- a/Infrastructure/Const/FlowInstanceStatus.cs
+++ b/Infrastructure/Const/FlowInstanceStatus.cs
@@ -6,7 +6,7 @@
public struct FlowInstanceStatus
{
///
- /// 撤销、召回
+ /// 召回
///
public const int Draft = -1;
///
diff --git a/OpenAuth.App/Flow/FlowRuntime.cs b/OpenAuth.App/Flow/FlowRuntime.cs
index bea0fa52..24e5e7c5 100644
--- a/OpenAuth.App/Flow/FlowRuntime.cs
+++ b/OpenAuth.App/Flow/FlowRuntime.cs
@@ -400,7 +400,7 @@ namespace OpenAuth.App.Flow
}
///
- /// 撤销流程,清空所有节点
+ /// 召回流程,清空所有节点,返回开始节点并修改为草稿状态
///
public void ReCall(RecallFlowInstanceReq request)
{
@@ -428,13 +428,13 @@ namespace OpenAuth.App.Flow
var sugarClient = AutofacContainerModule.GetService();
sugarClient.Updateable(flowInstance).ExecuteCommand();
- SaveOperationHis($"【撤回】备注:{request.Description}");
+ SaveOperationHis($"【召回】备注:{request.Description}");
sugarClient.Ado.CommitTran();
}
///
- /// 标记节点1通过,-1不通过,0驳回
+ /// 标记节点1通过,2不通过,3驳回
///
///
public void MakeTagNode(string nodeId, Tag tag)
diff --git a/OpenAuth.App/FlowInstance/FlowInstanceApp.cs b/OpenAuth.App/FlowInstance/FlowInstanceApp.cs
index affbbed0..7361b003 100644
--- a/OpenAuth.App/FlowInstance/FlowInstanceApp.cs
+++ b/OpenAuth.App/FlowInstance/FlowInstanceApp.cs
@@ -2,7 +2,7 @@
* @Author: yubaolee | ahfu~ <954478625@qq.com>
* @Date: 2024-12-13 16:55:17
* @Description: 工作流实例表操作
- * @LastEditTime: 2025-10-18 14:35:01
+ * @LastEditTime: 2026-06-11 22:35:03
* Copyright (c) 2024 by yubaolee | ahfu~ , All Rights Reserved.
*/
@@ -521,7 +521,7 @@ namespace OpenAuth.App
$"结果:{(tag.Taged == 1 ? "同意" : "不同意")},备注:{tag.Description}";
wfruntime.SaveOperationHis(tag.UserId, tag.UserName, content);
- if (flowInstance.IsFinish == 1)
+ if (flowInstance.IsFinish == FlowInstanceStatus.Finished)
{
//给知会人员发送通知信息
var userids = _userManagerApp.GetNoticeUsers(flowInstance.Id);
@@ -593,20 +593,20 @@ namespace OpenAuth.App
///
public void Verification(VerificationReq request)
{
+ TagState tagState = (TagState)Int32.Parse(request.VerificationFinally);
//如果是同意,需要判断是否为运行时选定下一步执行角色/执行人
- if (request.VerificationFinally == "1")
+ if (tagState == TagState.Ok)
{
CheckNodeDesignate(request);
}
-
- bool isReject = TagState.Reject.Equals((TagState)Int32.Parse(request.VerificationFinally));
- if (isReject) //驳回
+
+ if (tagState == TagState.Reject)
{
- RejectNode(request);
+ RejectNode(request); // 驳回
}
else
{
- NodeVerification(request);
+ NodeVerification(request); // 审核(同意/不同意)
}
}
@@ -661,10 +661,12 @@ namespace OpenAuth.App
ActivityId = flowinstance.ActivityId
});
- if (flowinstance.IsFinish != FlowInstanceStatus.Running)
+ //流程已终止(完成/不同意/撤销等),不允许继续审批
+ if (flowinstance.IsFinish != FlowInstanceStatus.Running && flowinstance.IsFinish != FlowInstanceStatus.Rejected)
{
- resp.CanVerify = false; //流程已终止(完成/不同意/撤销等),不允许继续审批
+ resp.CanVerify = false;
}
+ //当前用户不是当前节点的审批人,不允许继续审批
else if (flowinstance.MakerList != "1" && !flowinstance.MakerList.Contains(user.User.Id) &&
!approvers.Contains(user.User.Id))
{
diff --git a/newdocs/docs/notes/core/flowinstance.md b/newdocs/docs/notes/core/flowinstance.md
index 6459dd94..c7f2bbc4 100644
--- a/newdocs/docs/notes/core/flowinstance.md
+++ b/newdocs/docs/notes/core/flowinstance.md
@@ -122,9 +122,13 @@ OpenAuth.Net工作流分为两个大类:
* 同意:流程审批通过,流程结束;
-* 不同意:流程审批不通过,流程结束;
+* **不同意(拒绝 / 反对)**:审批人明确不批准本次申请,属于终结性意见。
-* 驳回:可以驳回到指定的步骤,该步骤的人可以重新审批提交;
+ * 结果:本次申请失败,流程结束,如果重新发起新流程。
+
+* **驳回(退回 / 打回)**:审批人认为资料不全 / 有误,需要修改后重提,属于回退 + 重走动作。
+
+ * 结果:流程未终结,可修复后继续。
diff --git a/newdocs/docs/notes/pro/start.md b/newdocs/docs/notes/pro/start.md
index cbaae9dd..ab261c5a 100644
--- a/newdocs/docs/notes/pro/start.md
+++ b/newdocs/docs/notes/pro/start.md
@@ -4,27 +4,47 @@ createTime: 2025/04/23 23:43:26
permalink: /pro/start/
---
## 工具准备
+
#### NodeJs
+
前端环境为NodeJs,下载地址:[http://nodejs.cn/download/current/](http://nodejs.cn/download/current/)
+
#### visual studio code
+
下载最新版的vs code,或Cursor、Windsurf、Trae等工具用来作为OpenAuth.Net Vue3版的开发工具。
+
## 源码下载
+
根据授权文件的下载指示,下载Vue3源码。注意:一定要使用下图中的数据库脚本:

+
## 创建数据库
-* 新建一个空数据库:OpenAuthPro。使用上一步下载的【sql脚本】文件夹,根据你的数据库类型,选择运行你需要的脚本:`Sql Server脚本.sql`或`mysql脚本.sql`
+
+* 新建一个空数据库:OpenAuthPro。使用上一步下载的【sql脚本】文件夹,根据你的数据库类型,选择运行你需要的脚本:`Sql Server脚本.sql`或 `mysql脚本.sql`
+
## 启动后端
+
启动后端请参考:[快速开始](/core/start/)
+
## 启动前端
-使用Vs Code(或个人喜欢的工具)打开openauthvue3文件夹,修改配置文件`.env.dev`对应的后端接口地址,调整为自己的接口地址:
+
+使用Vs Code(或个人喜欢的工具)打开openauthvue3文件夹,修改配置文件 `.env.dev`对应的后端接口地址,调整为自己的接口地址:
+
```javascript
VITE_BASE_API = http://localhost:52789/api
VITE_BASE_IMG_URL = http://localhost:52789
```
+
::: warning 注意
-如果是发布打包,调整的文件为`.env.production`
+如果是发布打包,调整的文件为 `.env.production`
:::
-使用`npm install`命令安装程序运行所需的第三方包。再用`npm run dev`命令运行。如下图:
-
-启动成功后,使用浏览器访问[http://localhost:1803/](http://localhost:1803/) 即可打开vue3版界面:
+使用 `npm install`命令安装程序运行所需的第三方包。在安装的过程中如果遇到卡住的情况,可能是ssl证书问题,可以使用以下命令进行配置:
+
+```
+npm config set strict-ssl false; npm config set registry https://registry.npmmirror.com
+```
+
+再用 `npm run dev`命令运行。如下图:
+启动成功后,使用浏览器访问[http://localhost:1803/](http://localhost:1803/) 即可打开vue3版界面:
+

diff --git a/newdocs/docs/notes/pro/startflow.md b/newdocs/docs/notes/pro/startflow.md
index 9a972f2f..87045cff 100644
--- a/newdocs/docs/notes/pro/startflow.md
+++ b/newdocs/docs/notes/pro/startflow.md
@@ -145,9 +145,13 @@ OpenAuth.Net工作流分为两个大类:
* 同意:流程审批通过,流程结束;
-* 不同意:流程审批不通过,流程结束;
+* **不同意(拒绝 / 反对)**:审批人明确不批准本次申请,属于终结性意见。
-* 驳回:可以驳回到指定的步骤,该步骤的人可以重新审批提交;
+ * 结果:本次申请失败,流程结束,如果重新发起新流程。
+
+* **驳回(退回 / 打回)**:审批人认为资料不全 / 有误,需要修改后重提,属于回退 + 重走动作。
+
+ * 结果:流程未终结,可修复后继续。
* 加签:在已有审批流程上临时添加审批人,协助自己审批;