diff --git a/server/api/v1/wk_process.go b/server/api/v1/wk_process.go
index 8ba9e1a2..fd53f7c0 100644
--- a/server/api/v1/wk_process.go
+++ b/server/api/v1/wk_process.go
@@ -228,12 +228,12 @@ func GetMyNeed(c *gin.Context) {
func GetWorkflowMoveByID(c *gin.Context) {
var req request.GetById
_ = c.ShouldBindQuery(&req)
- err, move, moves := service.GetWorkflowMoveByID(req.Id)
+ err, move, moves, business := service.GetWorkflowMoveByID(req.Id)
if err != nil {
errStr := err.Error()
global.GVA_LOG.Error(errStr)
response.FailWithMessage(errStr, c)
return
}
- response.OkWithData(gin.H{"move": move, "moves": moves}, c)
+ response.OkWithData(gin.H{"move": move, "moves": moves, "business": business}, c)
}
diff --git a/server/initialize/workflow.go b/server/initialize/workflow.go
index d31751c9..899864ea 100644
--- a/server/initialize/workflow.go
+++ b/server/initialize/workflow.go
@@ -10,13 +10,13 @@ func initWkModel() {
}
func initWkTable() {
-
- model.WorkflowBusinessTable = make(map[string]string)
- model.WorkflowBusinessTable["leave"] = "exa_wf_leaves"
+ model.WorkflowBusinessTable = make(map[string]func() interface{})
+ model.WorkflowBusinessTable["leave"] = func() interface{} {
+ return new(model.ExaWfLeave)
+ }
}
func InitWkMode() {
initWkModel()
initWkTable()
-
}
diff --git a/server/model/exa_wf_leave.go b/server/model/exa_wf_leave.go
index cb6fe65a..56b96ac7 100644
--- a/server/model/exa_wf_leave.go
+++ b/server/model/exa_wf_leave.go
@@ -19,3 +19,7 @@ type ExaWfLeaveWorkflow struct {
WorkflowBase `json:"wf"`
ExaWfLeave `json:"business"`
}
+
+func (e ExaWfLeave) TableName() string {
+ return "exa_wf_leaves"
+}
diff --git a/server/model/wf_process.go b/server/model/wf_process.go
index 35417aaa..60edaa6e 100644
--- a/server/model/wf_process.go
+++ b/server/model/wf_process.go
@@ -7,10 +7,9 @@ import (
)
var WorkflowBusinessStruct map[string]func() GVA_Workflow
-var WorkflowBusinessTable map[string]string
+var WorkflowBusinessTable map[string]func() interface{}
type GVA_Workflow interface {
- GetTableName() string
CreateWorkflowMove() *WorkflowMove
GetBusinessType() string
GetWorkflowBase() WorkflowBase
@@ -47,10 +46,6 @@ func (w WorkflowBase) GetWorkflowBase() (workflowBase WorkflowBase) {
return w
}
-func (w WorkflowBase) GetTableName() string {
- return WorkflowBusinessTable[w.BusinessType]
-}
-
//定义clazz常量
const (
diff --git a/server/service/wk_process.go b/server/service/wk_process.go
index 58909250..5d1bcb4e 100644
--- a/server/service/wk_process.go
+++ b/server/service/wk_process.go
@@ -7,9 +7,14 @@ import (
"gin-vue-admin/model"
"gin-vue-admin/model/request"
"gorm.io/gorm"
+ "gorm.io/gorm/schema"
"strconv"
)
+func getTable(businessType string) interface{} {
+ return model.WorkflowBusinessTable[businessType]()
+}
+
//@author: [piexlmax](https://github.com/piexlmax)
//@function: CreateWorkflowProcess
//@description: 创建工作流相关信息
@@ -166,7 +171,8 @@ func GetWorkflowProcessInfoList(info request.WorkflowProcessSearch) (err error,
func StartWorkflow(wfInterface model.GVA_Workflow) (err error) {
err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
var txErr error
- txErr = tx.Table(wfInterface.GetTableName()).Create(wfInterface).Error
+ tableName := getTable(wfInterface.GetBusinessType()).(schema.Tabler).TableName()
+ txErr = tx.Table(tableName).Create(wfInterface).Error
if txErr != nil {
return txErr
}
@@ -288,7 +294,8 @@ func GetMyNeed(userID uint, AuthorityID string) (err error, wfms []model.Workflo
return err, wfms
}
-func GetWorkflowMoveByID(id float64) (err error, move model.WorkflowMove, moves []model.WorkflowMove) {
+func GetWorkflowMoveByID(id float64) (err error, move model.WorkflowMove, moves []model.WorkflowMove, business interface{}) {
+ var result interface{}
err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
var txErr error
txErr = tx.Preload("Promoter").Preload("Operator").Preload("WorkflowNode").Preload("WorkflowProcess").First(&move, "id = ?", id).Error
@@ -296,11 +303,16 @@ func GetWorkflowMoveByID(id float64) (err error, move model.WorkflowMove, moves
return txErr
}
txErr = tx.Preload("Promoter").Preload("Operator").Preload("WorkflowNode").Preload("WorkflowProcess").Find(&moves, "business_id = ? AND business_type = ?", move.BusinessID, move.BusinessType).Error
- fmt.Println(moves)
+ if txErr != nil {
+ return txErr
+ }
+ result = getTable(move.BusinessType)
+ fmt.Println(result)
+ txErr = tx.First(result, "id = ?", move.BusinessID).Error
if txErr != nil {
return txErr
}
return nil
})
- return err, move, moves
+ return err, move, moves, result
}
diff --git a/web/src/api/workflowProcess.js b/web/src/api/workflowProcess.js
index 43c883db..0b86b6d8 100644
--- a/web/src/api/workflowProcess.js
+++ b/web/src/api/workflowProcess.js
@@ -161,4 +161,20 @@ export const getMyNeed = () => {
url: "/workflowProcess/getMyNeed",
method: 'get',
})
+}
+
+// @Tags WorkflowProcess
+// @Summary 根据id获取当前节点详情和历史
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body request.GetById true "根据id获取当前节点详情和过往"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
+// @Router /workflowProcess/getWorkflowMoveByID [get]
+export const getWorkflowMoveByID = (params) => {
+ return service({
+ url: "/workflowProcess/getWorkflowMoveByID",
+ method: 'get',
+ params
+ })
}
\ No newline at end of file
diff --git a/web/src/view/exa_wf_leave/exa_wf_leaveFrom.vue b/web/src/view/exa_wf_leave/exa_wf_leaveFrom.vue
index db7ee58e..c0e5a638 100644
--- a/web/src/view/exa_wf_leave/exa_wf_leaveFrom.vue
+++ b/web/src/view/exa_wf_leave/exa_wf_leaveFrom.vue
@@ -44,6 +44,10 @@ export default {
name: "ExaWfLeave",
mixins: [infoList],
props:{
+ business:{
+ type:Object,
+ default:function(){return null}
+ },
wf:{
type:Object,
default:function(){return{}}
@@ -51,7 +55,8 @@ export default {
},
data() {
return {
- type: "",formData: {
+ type: "",
+ formData: {
cause:"",
startTime:new Date(),
endTime:new Date(),
@@ -72,6 +77,7 @@ export default {
workflowProcessID:this.wf.workflowProcessID,
workflowNodeID:this.wf.id,
promoterID:this.userInfo.ID,
+ operatorID:this.userInfo.ID,
action:"create",
param:""
}
@@ -89,7 +95,9 @@ export default {
},
async created() {
// 建议通过url传参获取目标数据ID 调用 find方法进行查询数据操作 从而决定本页面是create还是update 以下为id作为url参数示例
-
+ if(this.business){
+ this.formData = this.business
+ }
}
};
diff --git a/web/src/view/workflow/workflowProcess/workflowProcess.vue b/web/src/view/workflow/workflowProcess/workflowProcess.vue
index e3ffa4b7..9cdacc0e 100644
--- a/web/src/view/workflow/workflowProcess/workflowProcess.vue
+++ b/web/src/view/workflow/workflowProcess/workflowProcess.vue
@@ -164,8 +164,7 @@ export default {
this.$router.push({
name: "workflowUse",
query: {
- workflowId: row.id,
- activeId:0,
+ workflowId: row.id
}
});
},
diff --git a/web/src/view/workflow/workflowUse/workflowUse.vue b/web/src/view/workflow/workflowUse/workflowUse.vue
index cc2077e7..5e41ce37 100644
--- a/web/src/view/workflow/workflowUse/workflowUse.vue
+++ b/web/src/view/workflow/workflowUse/workflowUse.vue
@@ -1,22 +1,22 @@
-
-
+