diff --git a/server/cmd/datas/init.go b/server/cmd/datas/init.go index d37bc0137ffde00f23026c5643e1bf6838367d95..b1841ea7d86059120e0fb5f5e6bf97fa96b63f41 100644 --- a/server/cmd/datas/init.go +++ b/server/cmd/datas/init.go @@ -22,6 +22,7 @@ func InitMysqlData(db *gorm.DB) { err = InitSysDataAuthorityId(db) err = InitSysDictionaryDetail(db) err = InitExaFileUploadAndDownload(db) + err = InitWkProcess(db) if err != nil { color.Warn.Printf("[Mysql]-->初始化数据失败,err: %v\n", err) os.Exit(0) diff --git a/server/cmd/datas/wf_process.go b/server/cmd/datas/wf_process.go new file mode 100644 index 0000000000000000000000000000000000000000..f78b0c33413f87672561aa48c9f97baa7cd50e18 --- /dev/null +++ b/server/cmd/datas/wf_process.go @@ -0,0 +1,56 @@ +package datas + +import ( + "gin-vue-admin/global" + "gin-vue-admin/model" + "gorm.io/gorm" + "time" +) + +var WorkflowProcess = []model.WorkflowProcess{ + {ID: "leaveFlow", CreatedAt: time.Now(), UpdatedAt: time.Now(), Name: "leaveFlow", Clazz: "process", Label: "请假流程(演示)", HideIcon: false, Description: "请假流程演示", View: "view/iconList/index.vue"}, +} +var WorkflowNodes = []model.WorkflowNode{ + {ID: "end1603681358043", CreatedAt: time.Now(), UpdatedAt: time.Now(), WorkflowProcessID: "leaveFlow", Clazz: "end", Label: "请假失败", Type: "end-node", Shape: "end-node", Description: "", View: "view/exa_wf_leave/exa_wf_leaveFrom.vue", X: 302, Y: 545.5, HideIcon: false, AssignType: "", AssignValue: "", Success: false}, + {ID: "end1603681360882", CreatedAt: time.Now(), UpdatedAt: time.Now(), WorkflowProcessID: "leaveFlow", Clazz: "end", Label: "请假成功", Type: "end-node", Shape: "end-node", Description: "请假完成,具体结果等待提交", View: "view/exa_wf_leave/exa_wf_leaveFrom.vue", X: 83.5, Y: 546, HideIcon: true, AssignType: "", AssignValue: "", Success: false}, + {ID: "start1603681292875", CreatedAt: time.Now(), UpdatedAt: time.Now(), WorkflowProcessID: "leaveFlow", Clazz: "start", Label: "发起请假", Type: "start-node", Shape: "start-node", Description: "发起一个请假流程", View: "view/exa_wf_leave/exa_wf_leaveFrom.vue", X: 201, Y: 109, HideIcon: false, AssignType: "", AssignValue: "", Success: false}, + {ID: "userTask1603681299962", CreatedAt: time.Now(), UpdatedAt: time.Now(), WorkflowProcessID: "leaveFlow", Clazz: "userTask", Label: "审批", Type: "user-task-node", Shape: "user-task-node", Description: "审批会签", DueDate: time.Date(2020, 11, 20, 0, 0, 0, 0, nil), View: "view/exa_wf_leave/exa_wf_leaveFrom.vue", X: 202, Y: 320.5, HideIcon: false, AssignType: "user", AssignValue: ",1,2,", Success: false}, +} +var WorkflowEdge = []model.WorkflowEdge{ + {ID: "flow1604985849039", CreatedAt: time.Now(), UpdatedAt: time.Now(), WorkflowProcessID: "leaveFlow", Clazz: "flow", Source: "start1603681292875", Target: "userTask1603681299962", SourceAnchor: 1, TargetAnchor: 3, Shape: "flow-polyline-round", Label: "", HideIcon: false, ConditionExpression: "", Reverse: false}, + {ID: "flow1604985879574", CreatedAt: time.Now(), UpdatedAt: time.Now(), WorkflowProcessID: "leaveFlow", Clazz: "flow", Source: "userTask1603681299962", Target: "end1603681360882", SourceAnchor: 0, TargetAnchor: 2, Shape: "flow-polyline-round", Label: "同意", HideIcon: false, ConditionExpression: "yes", Reverse: false}, + {ID: "flow1604985881207", CreatedAt: time.Now(), UpdatedAt: time.Now(), WorkflowProcessID: "leaveFlow", Clazz: "flow", Source: "userTask1603681299962", Target: "end1603681358043", SourceAnchor: 2, TargetAnchor: 2, Shape: "flow-polyline-round", Label: "不同意", HideIcon: false, ConditionExpression: "no", Reverse: false}, +} +var WorkflowStartPoint = []model.WorkflowStartPoint{ + {WorkflowEdgeID: "flow1604985849039", GVA_MODEL: global.GVA_MODEL{ID: 31, CreatedAt: time.Now(), UpdatedAt: time.Now()}, X: 137, Y: 201, Index: 1}, + {WorkflowEdgeID: "flow1604985879574", GVA_MODEL: global.GVA_MODEL{ID: 32, CreatedAt: time.Now(), UpdatedAt: time.Now()}, X: 320.5, Y: 174, Index: 0}, + {WorkflowEdgeID: "flow1604985881207", GVA_MODEL: global.GVA_MODEL{ID: 33, CreatedAt: time.Now(), UpdatedAt: time.Now()}, X: 320.5, Y: 230, Index: 2}, +} + +var WorkflowEndPoint = []model.WorkflowEndPoint{ + {WorkflowEdgeID: "flow1604985849039", GVA_MODEL: global.GVA_MODEL{ID: 31, CreatedAt: time.Now(), UpdatedAt: time.Now()}, X: 270, Y: 202, Index: 3}, + {WorkflowEdgeID: "flow1604985879574", GVA_MODEL: global.GVA_MODEL{ID: 32, CreatedAt: time.Now(), UpdatedAt: time.Now()}, X: 518, Y: 83.5, Index: 2}, + {WorkflowEdgeID: "flow1604985881207", GVA_MODEL: global.GVA_MODEL{ID: 33, CreatedAt: time.Now(), UpdatedAt: time.Now()}, X: 517.5, Y: 302, Index: 2}, +} + +func InitWkProcess(db *gorm.DB) (err error) { + return db.Transaction(func(tx *gorm.DB) error { + if err := tx.Create(&WorkflowProcess).Error; err != nil { // 遇到错误时回滚事务 + return err + } + if err := tx.Create(&WorkflowNodes).Error; err != nil { // 遇到错误时回滚事务 + return err + } + if err := tx.Create(&WorkflowEdge).Error; err != nil { // 遇到错误时回滚事务 + return err + } + if err := tx.Create(&WorkflowStartPoint).Error; err != nil { // 遇到错误时回滚事务 + return err + } + if err := tx.Create(&WorkflowEndPoint).Error; err != nil { // 遇到错误时回滚事务 + return err + } + + return nil + }) +} diff --git a/server/initialize/router.go b/server/initialize/router.go index f4b9397c22b4a677c7d7a8397bccedfd6dc5db3f..bd9079638ab8de9ffeec43396584bb8c0206eb07 100644 --- a/server/initialize/router.go +++ b/server/initialize/router.go @@ -42,7 +42,6 @@ func Routers() *gin.Engine { router.InitSysOperationRecordRouter(ApiGroup) // 操作记录 router.InitEmailRouter(ApiGroup) // 邮件相关路由 router.InitWorkflowProcessRouter(ApiGroup) // 工作流创建相关接口 - router.InitExaWfLeaveRouter(ApiGroup) // 工作流创建相关接口 global.GVA_LOG.Info("router register success") return Router diff --git a/server/model/wf_process.go b/server/model/wf_process.go index 6acf4a535e13f964181f9809ed5b03aab6201af5..a53a6df7e7b940cab0e7b6dfcf2a2e2f1eb70a17 100644 --- a/server/model/wf_process.go +++ b/server/model/wf_process.go @@ -145,16 +145,14 @@ type WorkflowEdge struct { type WorkflowStartPoint struct { WorkflowEdgeID string - WorkflowPoint + global.GVA_MODEL + X float64 `json:"x"` + Y float64 `json:"y"` + Index int `json:"index"` } type WorkflowEndPoint struct { WorkflowEdgeID string - WorkflowPoint -} - -// -type WorkflowPoint struct { global.GVA_MODEL X float64 `json:"x"` Y float64 `json:"y"` diff --git a/web/src/api/workflowProcess.js b/web/src/api/workflowProcess.js index 157251fcfaa610777f7aa1e1b2a56d4871e427b4..43c883db130e9f6e23e226fa9bbb8bc4855e4450 100644 --- a/web/src/api/workflowProcess.js +++ b/web/src/api/workflowProcess.js @@ -113,4 +113,52 @@ export const findWorkflowStep = (params) => { method: 'get', params }) +} + + +// @Tags ExaWfLeave +// @Summary 创建ExaWfLeave +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /workflowProcess/startWorkflow [post] +export const startWorkflow = (data, params = { businessType: data.wf.businessType }) => { + return service({ + url: "/workflowProcess/startWorkflow", + method: 'post', + data, + params + }) +} + + +// @Tags WorkflowProcess +// @Summary 我发起的工作流 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /workflowProcess/getMyStated [get] +export const getMyStated = () => { + return service({ + url: "/workflowProcess/getMyStated", + method: 'get', + }) +} + + + +// @Tags WorkflowProcess +// @Summary 我发起的工作流 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /workflowProcess/getMyNeed [get] +export const getMyNeed = () => { + return service({ + url: "/workflowProcess/getMyNeed", + method: 'get', + }) } \ No newline at end of file diff --git a/web/src/components/gva-wfd/locales/zh-CN.js b/web/src/components/gva-wfd/locales/zh-CN.js index 69753b78dbfac209dba6ebaa023f8a5e7296395c..89d17a2d3c58e231fef8335b92449bba7f67727d 100644 --- a/web/src/components/gva-wfd/locales/zh-CN.js +++ b/web/src/components/gva-wfd/locales/zh-CN.js @@ -36,7 +36,7 @@ export default { 'signalEvent': '信号节点', 'signalEvent.signal': '信号名', 'sequenceFlow': '连接线', - 'sequenceFlow.expression': '条件表达式', + 'sequenceFlow.expression': '条件参数', 'sequenceFlow.seq': '序号', 'sequenceFlow.reverse': '反向', 'startEvent': '开始节点', diff --git a/web/src/view/workflow/userList/need.vue b/web/src/view/workflow/userList/need.vue new file mode 100644 index 0000000000000000000000000000000000000000..4a344b3babef20dab19c5d19a5a485de94d0d74f --- /dev/null +++ b/web/src/view/workflow/userList/need.vue @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/web/src/view/workflow/userList/started.vue b/web/src/view/workflow/userList/started.vue new file mode 100644 index 0000000000000000000000000000000000000000..f0f4075582ffdf42851be77eb0e5d7fc93220a39 --- /dev/null +++ b/web/src/view/workflow/userList/started.vue @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/web/src/view/workflow/workflowCreate/workflowCreate.vue b/web/src/view/workflow/workflowCreate/workflowCreate.vue index dcb3f3af5ca9e7d87ccc563a8fbc86c1b9aa0023..7fcb2be64c115a45a81604b8b6a84405268f02e5 100644 --- a/web/src/view/workflow/workflowCreate/workflowCreate.vue +++ b/web/src/view/workflow/workflowCreate/workflowCreate.vue @@ -68,174 +68,8 @@ export default { lang: "zh", done:false, demoData: { - nodes: [ - { - clazz: "start", - label: "发起请假", - type: "start-node", - shape: "start-node", - x: 110, - y: 195, - id: "start1603681292875", - style: {} - }, - { - clazz: "parallelGateway", - label: "会签", - type: "parallel-gateway-node", - shape: "parallel-gateway-node", - x: 228, - y: 195, - id: "parallelGateway1603681296419", - style: {} - }, - { - clazz: "userTask", - label: "审批人1", - type: "user-task-node", - shape: "user-task-node", - x: 372, - y: 84, - id: "userTask1603681299962", - style: {}, - assignValue: [1], - assignType: "user" - }, - { - clazz: "userTask", - label: "审批人2", - type: "user-task-node", - shape: "user-task-node", - x: 370, - y: 321, - id: "userTask1603681302372", - style: {}, - assignValue: [2], - assignType: "user" - }, - { - clazz: "parallelGateway", - label: "会签结果检测", - type: "parallel-gateway-node", - shape: "parallel-gateway-node", - x: 519, - y: 195, - id: "parallelGateway1603681338222", - style: {} - }, - { - clazz: "end", - label: "请假失败", - type: "end-node", - shape: "end-node", - x: 704, - y: 317, - id: "end1603681358043", - style: {} - }, - { - clazz: "end", - label: "请假成功", - type: "end-node", - shape: "end-node", - x: 706.5, - y: 55.5, - id: "end1603681360882", - style: {} - } - ], - edges: [ - { - id: "flow1603681320738", - clazz: "flow", - source: "parallelGateway1603681296419", - target: "userTask1603681299962", - sourceAnchor: 0, - targetAnchor: 3, - shape: "flow-polyline-round", - style: {}, - startPoint: { x: 228, y: 169, index: 0 }, - endPoint: { x: 321.5, y: 84, index: 3 } - }, - { - id: "flow1603681321969", - clazz: "flow", - source: "parallelGateway1603681296419", - target: "userTask1603681302372", - sourceAnchor: 2, - targetAnchor: 3, - shape: "flow-polyline-round", - style: {}, - startPoint: { x: 228, y: 221, index: 2 }, - endPoint: { x: 319.5, y: 321, index: 3 } - }, - { - id: "flow1603681323274", - clazz: "flow", - source: "start1603681292875", - target: "parallelGateway1603681296419", - sourceAnchor: 1, - targetAnchor: 3, - shape: "flow-polyline-round", - style: {}, - startPoint: { x: 138, y: 195, index: 1 }, - endPoint: { x: 202, y: 195, index: 3 }, - label: "发起", - conditionExpression: "complete" - }, - { - id: "flow1603681341777", - clazz: "flow", - source: "userTask1603681299962", - target: "parallelGateway1603681338222", - sourceAnchor: 1, - targetAnchor: 3, - shape: "flow-polyline-round", - style: {}, - startPoint: { x: 422.5, y: 84, index: 1 }, - endPoint: { x: 493, y: 195, index: 3 } - }, - { - id: "flow1603681343425", - clazz: "flow", - source: "userTask1603681302372", - target: "parallelGateway1603681338222", - sourceAnchor: 1, - targetAnchor: 3, - shape: "flow-polyline-round", - style: {}, - startPoint: { x: 420.5, y: 321, index: 1 }, - endPoint: { x: 493, y: 195, index: 3 } - }, - { - id: "flow1603681362913", - clazz: "flow", - source: "parallelGateway1603681338222", - target: "end1603681360882", - sourceAnchor: 0, - targetAnchor: 2, - shape: "flow-polyline-round", - style: {}, - startPoint: { x: 519, y: 169, index: 0 }, - endPoint: { x: 678.5, y: 55.5, index: 2 }, - conditionExpression: "complete", - label: "所有人同意" - }, - { - id: "flow1603681392729", - clazz: "flow", - source: "parallelGateway1603681338222", - target: "end1603681358043", - sourceAnchor: 2, - targetAnchor: 2, - shape: "flow-polyline-round", - style: {}, - startPoint: { x: 519, y: 221, index: 2 }, - endPoint: { x: 676, y: 317, index: 2 }, - conditionExpression: "reject", - label: "任何一人拒绝" - } - ], + nodes: [], + edges: [] }, wkType:"create", users: [], @@ -249,17 +83,8 @@ export default { signalDefs: [], messageDefs: [], }, - groups: [ - { id: "1", name: "组1" }, - { id: "2", name: "组2" }, - { id: "3", name: "组3" } - ], - categorys: [ - { id: "1", name: "分类1" }, - { id: "2", name: "分类2" }, - { id: "3", name: "分类3" }, - { id: "4", 分组: "分组4" } - ] + groups: [], + categorys: [] }; }, methods: { @@ -271,7 +96,7 @@ export default { processModel.nodes = JSON.parse(JSON.stringify(obj.nodes)) processModel.nodes.map(item=>{ if(item.assignValue){ - item.assignValue = String(item.assignValue) + item.assignValue = ","+String(item.assignValue)+"," } }) if(!processModel.id){ @@ -328,7 +153,7 @@ export default { if(res.code == 0){ res.data.reworkflowProcess.nodes.map(item=>{ if(item.assignValue){ - const watiUseArr = item.assignValue.split(",") + const watiUseArr =item.assignValue.substr(1,item.assignValue.length-2).split(",") if(item.assignType == 'user'){ item.assignValue = [] watiUseArr.map(i => {