goDataInspector实现审批流程图工作流拖拽设计效果代码
代码语言:html
所属分类:其他
代码描述:goDataInspector实现审批流程图工作流拖拽设计效果代码
代码标签: go DataInspector 审批 流程图 拖拽 设计
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""/> <meta charset="UTF-8"> <link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/goDataInspector.css"> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/go-1.89.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/goDataInspector.js"></script> <script id="code"> function init() { if (window.goSamples) goSamples(); var $$ = go.GraphObject.make; myDiagram = $$(go.Diagram, "myDiagramDiv", // 创建空的背景图 { initialContentAlignment: go.Spot.Center, allowCopy: false, allowDrop: true, // must be true to accept drops from the Palette 必须接受来自调色板的元素 "LinkDrawn": showLinkLabel, // this DiagramEvent listener is defined below "LinkRelinked": showLinkLabel, scrollsPageOnFocus: false, "undoManager.isEnabled": true, // 启用撤销和恢复 allowRelink : false } ); // helper definitions for node templates function nodeStyle() { return [ // The Node.location comes from the "loc" property of the node data, // converted by the Point.parse static method. // If the Node.location is changed, it updates the "loc" property of the node data, // converting back using the Point.stringify static method. new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify), { // the Node.location is at the center of each node locationSpot: go.Spot.Center } ]; } // Define a function for creating a "port" that is normally transparent. // The "name" is used as the GraphObject.portId, // the "align" is used to determine where to position the port relative to the body of the node, // the "spot" is used to control how links connect with the port and whether the port // stretches along the side of the node, // and the boolean "output" and "input" arguments control whether the user can draw links from or to the port. function makePort(name, align, spot, output, input, maxLinks) { var horizontal = align.equals(go.Spot.Top) || align.equals(go.Spot.Bottom); // the port is basically just a transparent rectangle that stretches along the side of the node, // and becomes colored when the mouse passes over it return $$(go.Shape, { fill: "transparent", // changed to a color in the mouseEnter event handler strokeWidth: 0, // no stroke width: horizontal ? NaN : 8, // if not stretching horizontally, just 8 wide height: !horizontal ? NaN : 8, // if not stretching vertically, just 8 tall alignment: align, // align the port on the main Shape stretch: (horizontal ? go.GraphObject.Horizontal : go.GraphObject.Vertical), portId: name, // declare this object to be a "port" fromSpot: spot, // declare where links may connect at this port fromLinkable: output, // 声明用户是否可以from here fromMaxLinks: maxLinks, toSpot: spot, // declare where links may connect at this port toLinkable: input, // declare whether the user may draw links to here cursor: "pointer", // show a different cursor to indicate potential link point mouseEnter: function (e, port) { // the PORT argument will be this Shape if (!e.diagram.isReadOnly) port.fill = "rgba(255,0,255,0.5)"; }, mouseLeave: function (e, port) { port.fill = "transparent"; } }); } function textStyle() { return { font: "bold 11pt Helvetica, Arial, sans-serif", stroke: "whitesmoke" } } // define the Node templates for regular nodes myDiagram.nodeTemplateMap.add("Default", // the default category 文本节点 $$(go.Node, "Table", nodeStyle(), // the main object is a Panel that surrounds a TextBlock with a rectangular Shape $$(go.Panel, "Auto", $$(go.Shape, "RoundedRectangle", {fill: "#ffc107", strokeWidth: 0}, new go.Binding("figure", "figure")), $$(go.TextBlock, textStyle(), { margin: 8, maxSize: new go.Size(160, NaN), wrap: go.TextBlock.WrapFit, editable: true }, new go.Binding("text").makeTwoWay()) ), // four named ports, one on each side: makePort("T", go.Spot.Top, go.Spot.TopSide, false, true), makePort("L", go.Spot.Left, go.Spot.LeftSide, true, true), makePort("R", go.Spot.Right, go.Spot.RightSide, true, true), makePort("B", go.Spot.Bottom, go.Spot.BottomSide, true, false) ) ); myDiagram.nodeTemplateMap.add("Conditional", //判断节点 $$(go.Node, "Table", nodeStyle(), // the main object is a Panel that surrounds a TextBlock with a rectangular Shape $$(go.Panel, "Auto", $$(go.Shape, "Diamond", {fill: "#00A9C9", strokeWidth: 0}, new go.Binding("figure", "figure")), $$(go.TextBlock, textStyle(), { margin: 8, maxSize: new go.Size(160, NaN), wrap: go.TextBlock.WrapFit, editable: true }, new go.Binding("text").makeTwoWay()) ), // four named ports, one on each side: makePort("T", go.Spot.Top, go.Spot.Top, false, true), makePort("L", go.Spot.Left, go.Spot.Left, true, true), makePort("R", go.Spot.Right, go.Spot.Right, true, true), makePort("B", go.Spot.Bottom, go.Spot.Bottom, true, false) ) ); myDiagram.nodeTemplateMap.add("Start", // 开始节点 $$(go.Node, "Table", nodeStyle(),{ deletable: false }, $$(go.Panel, "Auto", $$(go.Shape, "Circle", {minSize: new go.Size(40, 40), fill: "#937367", strokeWidth: 0}), $$(go.TextBlock, "Start", textStyle(), new go.Binding("text")) ), // three named ports, one on each side except the top, all output only: makePort("B", go.Spot.Bottom, go.Spot.Bottom, true, false, 1) )); myDiagram.nodeTemplateMap.add("End", //结束节点 $$(go.Node, "Table", nodeStyle(),{ deletable: false }, $$(go.Panel, "Auto", $$(go.Shape, "Circle", {minSize: new go.Size(40, 40), fill: "#DC3C00", strokeWidth: 0}), $$(go.TextBlock, "End", textStyle(), new go.Binding("text")) ), // three named ports, one on each side except the bottom, all input only: makePort("T", go.Spot.Top, go.Spot.Top, false, true), makePort("L", go.Spot.Left, go.Spot.Left, false, true), makePort("R", go.Spot.Right, go.Spot.Right, false, true) )); // replace the default Link template in the linkTemplateMap myDiagram.linkTemplate = $$(go.Link, // the whole link panel { routing: go.Link.AvoidsNodes, //避开其他节点 curve: go.Link.JumpOver, //连线的样式 corner: 5, //角 toShortLength: 4, /*****************************************************************/ relinkableFrom: false, relinkableTo: false, reshapable: true, resegmentable: true, // mouse-overs subtly highlight links: 鼠标悬停微妙地突出显示链接 mouseEnter: function (e, link) { link.findObject("HIGHLIGHT").stroke = "rgba(30,144,255,0.2)"; }, mouseLeave: function (e, link) { link.findObject("HIGHLIGHT").stroke = "transpare.........完整代码请登录后点击上方下载按钮下载查看
网友评论0