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