diff --git a/admin/src/components/flow/flowEdit/Diagram.vue b/admin/src/components/flow/flowEdit/Diagram.vue index 6a9e528..4650711 100644 --- a/admin/src/components/flow/flowEdit/Diagram.vue +++ b/admin/src/components/flow/flowEdit/Diagram.vue @@ -219,6 +219,7 @@ export default { label: node?.text?.value, type: node.type, fieldAuth: node?.properties?.fieldAuth, + gateway: node?.properties?.gateway, userType: node?.properties?.userType || 0, userId: node?.properties?.userId || 0, diff --git a/admin/src/components/flow/flowEdit/DiagramSidebar.vue b/admin/src/components/flow/flowEdit/DiagramSidebar.vue index 618de59..07d7bef 100644 --- a/admin/src/components/flow/flowEdit/DiagramSidebar.vue +++ b/admin/src/components/flow/flowEdit/DiagramSidebar.vue @@ -29,10 +29,10 @@
-
网关
+
条件
diff --git a/admin/src/components/flow/flowEdit/PropertyPanel.vue b/admin/src/components/flow/flowEdit/PropertyPanel.vue index 9a8ff3d..df0c41e 100644 --- a/admin/src/components/flow/flowEdit/PropertyPanel.vue +++ b/admin/src/components/flow/flowEdit/PropertyPanel.vue @@ -29,43 +29,7 @@
数据入库
- - - -
- - - - 添加条件 -
- - - - - - - - - - +
结束
@@ -75,12 +39,15 @@ + + diff --git a/admin/src/components/flow/flowEdit/node/index.js b/admin/src/components/flow/flowEdit/node/index.js index da43deb..f85d118 100644 --- a/admin/src/components/flow/flowEdit/node/index.js +++ b/admin/src/components/flow/flowEdit/node/index.js @@ -1,10 +1,10 @@ // 基础图形 -import CircleNode from "./basic/CircleNode"; -import RectNode from "./basic/RectNode"; -import RectRadiusNode from "./basic/RectRadiusNode"; -import EllipseNode from "./basic/EllipseNode"; -import TextNode from "./basic/TextNode"; -import DiamondNode from "./basic/DiamondNode"; +// import CircleNode from './basic/CircleNode' +// import RectNode from './basic/RectNode' +// import RectRadiusNode from './basic/RectRadiusNode' +// import EllipseNode from './basic/EllipseNode' +// import TextNode from './basic/TextNode' +// import DiamondNode from './basic/DiamondNode' // // path绘制的个性化图形 // import CylindeNode from './path/CylindeNode' // import TriangleNode from './path/TriangleNode' @@ -31,73 +31,72 @@ import DiamondNode from "./basic/DiamondNode"; // image绘制左上角icon节点 // import IconMessage from './icon/Message' // 注册边 -import Ployline from "./edge/Polyline"; -import Line from "./edge/Line"; -import Bezier from "./edge/Bezier"; +import Ployline from './edge/Polyline' +import Line from './edge/Line' +import Bezier from './edge/Bezier' export const List = [ - // office_network, - // firewall, - // router, - // coreSwitch, -]; -console.log(List); + // office_network, + // firewall, + // router, + // coreSwitch, +] +console.log(List) export const registerCustomElement = (lf) => { - // 注册基础图形 - // lf.register(CircleNode); - // lf.register(RectNode); - // lf.register(RectRadiusNode); - // lf.register(EllipseNode); - // lf.register(DiamondNode); - // lf.register(TextNode); - + // 注册基础图形 + // lf.register(CircleNode); + // lf.register(RectNode); + // lf.register(RectRadiusNode); + // lf.register(EllipseNode); + // lf.register(DiamondNode); + // lf.register(TextNode); - // lf.register(status_error); + // lf.register(status_error); - List.forEach((item) => { - lf.register({ - type: item.type, - view: item.view, - model: item.model, - }); - }); + List.forEach((item) => { + lf.register({ + type: item.type, + view: item.view, + model: item.model + }) + }) - // // 注册path绘制的个性化图形 - // lf.register(CylindeNode) - // lf.register(TriangleNode) - // lf.register(ParallelogramNode) - // lf.register(ActorNode) - // lf.register(StarNode) - // lf.register(PentagonNode) - // lf.register(HexagonNode) - // lf.register(SeptagonNode) - // lf.register(HeptagonNode) - // lf.register(TrapezoidNode) - // lf.register(CrossNode) - // lf.register(MinusNode) - // lf.register(TimesNode) - // lf.register(DivideNode) - // // 注册多边形绘制的箭头 - // lf.register(LeftArrow) - // lf.register(RightArrow) - // lf.register(HorizontalArrow) - // lf.register(UpArrow) - // lf.register(DownArrow) - // lf.register(VerticalArrow) - // // 注册image绘制图片节点 - // lf.register(firewall) - // lf.register(ImageUser) - // lf.register(office_network) + // // 注册path绘制的个性化图形 + // lf.register(CylindeNode) + // lf.register(TriangleNode) + // lf.register(ParallelogramNode) + // lf.register(ActorNode) + // lf.register(StarNode) + // lf.register(PentagonNode) + // lf.register(HexagonNode) + // lf.register(SeptagonNode) + // lf.register(HeptagonNode) + // lf.register(TrapezoidNode) + // lf.register(CrossNode) + // lf.register(MinusNode) + // lf.register(TimesNode) + // lf.register(DivideNode) + // // 注册多边形绘制的箭头 + // lf.register(LeftArrow) + // lf.register(RightArrow) + // lf.register(HorizontalArrow) + // lf.register(UpArrow) + // lf.register(DownArrow) + // lf.register(VerticalArrow) + // // 注册image绘制图片节点 + // lf.register(firewall) + // lf.register(ImageUser) + // lf.register(office_network) - // lf.register(status_success) - // lf.register(status_error) + // lf.register(status_success) + // lf.register(status_error) - // lf.register(router) + // lf.register(router) - // // 注册image绘制左上角icon节点 - // lf.register(IconMessage) - // // 注册边 - lf.register(Ployline); - lf.register(Line); - lf.register(Bezier); -}; + // // 注册image绘制左上角icon节点 + // lf.register(IconMessage) + // // 注册边 + lf.register(Ployline) + lf.register(Line) + lf.register(Bezier) +} diff --git a/admin/src/views/flow/flow_apply/components/apply_submit.vue b/admin/src/views/flow/flow_apply/components/apply_submit.vue index e5848e6..94c3b40 100644 --- a/admin/src/views/flow/flow_apply/components/apply_submit.vue +++ b/admin/src/views/flow/flow_apply/components/apply_submit.vue @@ -48,7 +48,7 @@ @@ -63,7 +63,6 @@ import { } from '@/api/flow/flow_history' const dialogVisible = ref(false) - // const props = defineProps({ // save: { // type: Function, @@ -102,11 +101,6 @@ function open(applyId) { }).then((res) => { console.log('res', res) next_nodes.value = res - - // res.map((item) => { - // if (item.type == 'bpmn:userTask') { - // } - // }) }) flow_history_get_approver({ applyId: applyId }).then((user) => { console.log('user', user) @@ -118,8 +112,8 @@ function BeforeClose() { // formData = {} } -function getData() { - console.log('getData', next_nodes) +function submit() { + console.log('submit', next_nodes) if (userTask.value && !formData.applyUserId) { feedback.msgWarning('请选择审批人') @@ -132,18 +126,8 @@ function getData() { }).then(() => { BeforeClose() }) - // formRef.value.getFormData().then((formData) => { - // console.log('formData', formData) - // props - // .save(formData) - // .then(() => { - // BeforeClose() - // }) - // .catch(() => {}) - // }) } defineExpose({ - getData, open }) diff --git a/server/.vscode/settings.json b/server/.vscode/settings.json index 4a9da6f..95f3264 100644 --- a/server/.vscode/settings.json +++ b/server/.vscode/settings.json @@ -3,8 +3,11 @@ "gocode", "gonic", "gorm", - "x_admin", + "Infof", + "jinzhu", "mapstructure", - "rmvb" + "rmvb", + "Warnf", + "x_admin" ] } \ No newline at end of file diff --git a/server/admin/flow/flow_history/flow_history_schema.go b/server/admin/flow/flow_history/flow_history_schema.go index 1b04584..2e40180 100644 --- a/server/admin/flow/flow_history/flow_history_schema.go +++ b/server/admin/flow/flow_history/flow_history_schema.go @@ -72,6 +72,12 @@ type FlowHistoryResp struct { CreateTime core.TsTime `json:"createTime" structs:"createTime"` // 创建时间 } +type gateway struct { + // 网关节点 + Id string `json:"id"` + Condition string `json:"condition"` + Value string `json:"value"` +} type FlowTree struct { Id string `json:"id"` Pid string `json:"pid"` @@ -85,6 +91,8 @@ type FlowTree struct { FieldAuth map[string]int `json:"fieldAuth"` + Gateway *[]gateway + Children *[]FlowTree `json:"children"` } type NextNodeReq struct { diff --git a/server/admin/flow/flow_history/flow_history_service.go b/server/admin/flow/flow_history/flow_history_service.go index fd1a511..82fb45c 100644 --- a/server/admin/flow/flow_history/flow_history_service.go +++ b/server/admin/flow/flow_history/flow_history_service.go @@ -3,6 +3,8 @@ package flow_history import ( "encoding/json" "errors" + "fmt" + "strconv" "x_admin/admin/flow/flow_apply" "x_admin/admin/system/admin" "x_admin/admin/system/dept" @@ -390,12 +392,66 @@ func DeepNextNode(nextNodes []FlowTree, flowTree *[]FlowTree, formValue map[stri break } else if v.Type == "bpmn:exclusiveGateway" { // 网关 + // v.Gateway + var haveFalse = false + var gateway = *v.Gateway + for i := 0; i < len(gateway); i++ { + var id = gateway[i].Id + var value = gateway[i].Value + var condition = gateway[i].Condition + if condition == "==" { + if formValue[id].(string) == value { // 等与 - // 判断formValue值,决定是不是递归这个网关 - child := DeepNextNode(nextNodes, v.Children, formValue) - nextNodes = append(nextNodes, v) - nextNodes = append(nextNodes, child...) - break + } else { + haveFalse = true + } + } else if condition == "!=" { + if formValue[id].(string) != value { // 不等与 + + } else { + haveFalse = true + } + } else if condition == ">=" { + var val, err = strconv.Atoi(value) + if err != nil { + fmt.Println(err) + continue + } + var formVal = formValue[id].(int64) + if formVal >= int64(val) { // 大于等于 + + } else { + haveFalse = true + } + } else if condition == "<=" { + var val, err = strconv.Atoi(value) + if err != nil { + fmt.Println(err) + continue + } + var formVal = formValue[id].(int64) + + if formVal <= int64(val) { // 小于等于 + + } else { + haveFalse = true + } + } else { + haveFalse = true + fmt.Println("未知的条件") + } + + } + // 不满足条件,继续循环 + if haveFalse { + continue + } else { + // 判断formValue值,决定是不是递归这个网关 + child := DeepNextNode(nextNodes, v.Children, formValue) + nextNodes = append(nextNodes, v) + nextNodes = append(nextNodes, child...) + break + } } else if v.Type == "bpmn:serviceTask" { // 系统服务 child := DeepNextNode(nextNodes, v.Children, formValue)