vue+css实现一个oa审批流程图工作流编辑效果代码
代码语言:html
所属分类:图表
代码描述:vue+css实现一个oa审批流程图工作流编辑效果代码,实现了编辑、新增、删除节点效果。
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" />
<title>BFW NEW PAGE</title>
<style>
body{
background: rgb(247,247,247);
}
.flowChartContainer {
width: 100%;
height: 100%
}
.nodeEditBox {
padding: 20px
}
.nodeEditBox .nodeEditTitle {
margin-bottom: 20px
}
.nodeEditBox .nodeEditTitle .showTitle {
display: flex;
align-items: center
}
.nodeEditBox .nodeEditTitle .showTitle .title {
color: rgba(0,0,0,.85);
font-size: 20px;
font-weight: 700;
margin-right: 5px
}
.nodeEditBox .nodeEditTitle .showTitle .icon {
cursor: pointer
}
#app,body,html {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
margin: 0
}
.sfcActionBar {
position: absolute;
right: 30px;
top: 12px;
z-index: 3;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none
}
.sfcActionBar .sfcActionScale {
display: flex;
align-items: center
}
.sfcActionBar .sfcActionScale .sfcActionScaleBtn {
width: 30px;
height: 30px;
background-color: #fff;
box-shadow: 0 1px 5px 0 rgba(10,30,65,.08);
border-radius: 6px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer
}
.sfcActionBar .sfcActionScale .sfcActionScaleBtn svg {
width: 20px;
height: 20px;
fill: rgba(0,0,0,.85)
}
.sfcActionBar .sfcActionScale .sfcActionScaleNum {
width: 50px;
color: rgba(0,0,0,.85);
font-size: 14px;
text-align: center
}
.sfcContainer {
width: 100%;
height: 100%;
overflow: auto;
box-sizing: border-box
}
.sfcContainer * {
box-sizing: border-box;
margin: 0;
padding: 0
}
.sfcContainer .sfcContent {
display: flex;
align-items: center;
padding: 20px;
min-width: 100%;
min-height: 100%;
width: -moz-max-content;
width: max-content;
height: -moz-max-content;
height: max-content;
transform-origin: left top
}
.sfcContainer .sfcContent.transformOriginCenter {
transform-origin: center center
}
.sfcContainer .sfcContent.vertical {
flex-direction: column;
justify-content: center
}
.sfcArrowLine {
position: relative;
width: 65px;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none
}
.sfcArrowLine.vertical {
width: auto;
height: 65px
}
.sfcArrowLine.vertical:before {
width: 2px;
height: 100%;
transform: translateX(-50%)
}
.sfcArrowLine.vertical.showArrow:after {
right: auto;
bottom: 0;
top: auto;
border-top: 10px solid #dedede;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: none;
transform: translateX(-50%)
}
.sfcArrowLine:before {
position: absolute;
z-index: 0;
top: 0;
left: 0;
transform: translateY(-50%);
height: 2px;
width: 100%;
background-color: #dedede;
content: ""
}
.sfcArrowLine.showArrow:after {
position: absolute;
width: 0;
height: 0;
border-left: 10px solid #dedede;
border-top: 6px solid transparent;
border-bottom: 6px solid transparent;
content: "";
right: 0;
top: 0;
transform: translateY(-50%)
}
.sfcAddNode {
position: absolute;
right: 0;
top: 0;
width: 65px;
height: 100%;
display: flex;
justify-content: center;
align-items: center
}
.sfcAddNode.vertical {
right: auto;
top: auto;
left: 0;
bottom: 0;
width: 100%;
height: 65px
}
.sfcAddNode .sfcAddNodeBtn {
position: relative;
background: #0089ff;
color: white;
width: 30px;
height: 30px;
border-radius: 50%;
box-shadow: 0 2px 4px 0 rgba(0,0,0,.1);
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
transform: scale(0);
transition: all .3s;
z-index: 2;
font-size: 20px;
line-height: 20px;
}
.sfcAddNode .sfcAddNodeBtn:hover {
z-index: 3
}
.sfcAddNode .sfcAddNodeBtn.dot {
transform: scale(.3)
}
.sfcAddNode .sfcAddNodeBtn.dot svg {
transform: scale(0)
}
.sfcAddNode .sfcAddNodeBtn.normal,.sfcAddNode .sfcAddNodeBtn.normal svg {
transform: scale(1)
}
.sfcAddNode .sfcAddNodeBtn svg {
fill: #fff;
width: 24px;
height: 24px;
transform: scale(0)
}
.sfcAddNode .sfcNodeTypePopover {
position: absolute;
visibility: hidden;
transform: scale(0);
transition: all .3s
}
.sfcAddNode .sfcNodeTypePopover:after,.sfcAddNode .sfcNodeTypePopover:before {
content: "";
position: absolute;
top: 0;
width: 20px;
height: 100%
}
.sfcAddNode .sfcNodeTypePopover:before {
left: -20px
}
.sfcAddNode .sfcNodeTypePopover:after {
right: -20px
}
.sfcAddNode .sfcNodeTypePopover.show {
visibility: visible;
transform: scale(1)
}
.sfcConditionNodeContainer {
position: relative;
display: flex;
align-items: center
}
.sfcConditionNodeContainer.vertical {
flex-direction: column
}
.sfcConditionNodeContainer.vertical .sfcConditionAddBtn {
left: 50%;
top: -18px;
transform: translateX(-50%);
width: auto;
height: 36px;
padding-top: 0;
padding-bottom: 0;
line-height: 32px
}
.sfcConditionNodeContainer.vertical .sfcConditionNodeItemList {
display: flex
}
.sfcConditionNodeContainer.vertical .sfcConditionNodeItemList .sfcConditionNodeItem {
padding-right: 30px;
padding-bottom: 0
}
.sfcConditionNodeContainer.vertical .sfcConditionNodeItemList .sfcConditionNodeItem .sfcConditionNodeItemLine {
height: 2px;
width: 100%;
top: 0;
left: 0
}
.sfcConditionNodeContainer.vertical .sfcConditionNodeItemList .sfcConditionNodeItem .sfcConditionNodeItemLine.sfcConditionNodeItemLastLine {
left: 0;
top: 100%
}
.sfcConditionNodeContainer.vertical .sfcConditionNodeItemList .sfcConditionNodeItem:first-of-type>.sfcConditionNodeItemLine {
left: 50%;
width: 50%;
height: 2px;
top: 0
}
.sfcConditionNodeContainer.vertical .sfcConditionNodeItemList .sfcConditionNodeItem:first-of-type>.sfcConditionNodeItemLine.sfcConditionNodeItemLastL.........完整代码请登录后点击上方下载按钮下载查看
网友评论0