diff --git a/src/views/createapp/components/workFlowConfig/BranchNode.vue b/src/views/createapp/components/workFlowConfig/BranchNode.vue index 73f66b60ec374a937f4f3a3baa252990df9a9c70..e7d38f746fe0a19cba5e61d263e096760e5e8a57 100644 --- a/src/views/createapp/components/workFlowConfig/BranchNode.vue +++ b/src/views/createapp/components/workFlowConfig/BranchNode.vue @@ -43,13 +43,12 @@ watch( { deep: true, immediate: true }, ); - const delNode = id => { emits('delNode', id); }; // 编辑yaml -const editYaml = (nodeName, yamlCode)=> { +const editYaml = (nodeName, yamlCode) => { emits('editYamlDrawer', nodeName, yamlCode); }; @@ -66,15 +65,29 @@ const editYaml = (nodeName, yamlCode)=> {
- 编辑 + 编辑 删除
{{ props.data.description }}
- - + +
@@ -84,337 +97,13 @@ const editYaml = (nodeName, yamlCode)=> { diff --git a/src/views/createapp/components/workFlowConfig/CustomNode.vue b/src/views/createapp/components/workFlowConfig/CustomNode.vue index 52aa8466dda19bcfa905ff33bfe81b813a62617a..062099c28ba49b399ea8a18abe05611237030b30 100644 --- a/src/views/createapp/components/workFlowConfig/CustomNode.vue +++ b/src/views/createapp/components/workFlowConfig/CustomNode.vue @@ -47,8 +47,8 @@ const delNode = id => { }; // 编辑yaml -const editYaml = (nodeName ,yamlCode)=> { - emits('editYamlDrawer', nodeName,yamlCode); +const editYaml = (nodeName, yamlCode) => { + emits('editYamlDrawer', nodeName, yamlCode); }; @@ -64,7 +64,9 @@ const editYaml = (nodeName ,yamlCode)=> {
- 编辑 + 编辑 删除
@@ -79,316 +81,3 @@ const editYaml = (nodeName ,yamlCode)=> {
- - diff --git a/src/views/styles/workFlowArrange.scss b/src/views/styles/workFlowArrange.scss index aea28d69759f371b3aad64d345e9e25343563ac4..a6897eafdfb7df188373f0965ef936843d43deef 100644 --- a/src/views/styles/workFlowArrange.scss +++ b/src/views/styles/workFlowArrange.scss @@ -101,6 +101,9 @@ border-color: var(--o-border-color-lighter); border-radius: 4px; } + .el-input__suffix::after { + margin-top: 7px; + } } } @@ -199,3 +202,314 @@ left: 0; } } + +// 各节点的状态样式提取 +.vue-flow__node { + min-width: 200px; + padding: 0px; + margin-top: -4px; + .customNodeStyle { + width: 328px; + height: fit-content; + border-radius: 4px; + border: 4px solid transparent; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.1); + background-color: var(--o-bg-color-base); + position: relative; + .nodeBox { + min-height: 78px; + padding: 16px 18px; + display: flex; + flex-direction: column; + gap: 8px; + .title { + display: flex; + height: 24px; + font-size: 16px; + color: var(--o-text-color-primary); + gap: 8px; + .iconStyle { + width: 24px; + height: 24px; + background: linear-gradient(120deg, rgba(109, 117, 250, 0.15), rgba(90, 179, 255, 0.15)); + } + .label { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .moreTip { + margin-left: auto; + width: 24px; + &:hover { + color: #6395fd; + } + } + } + .desc { + font-size: 12px; + color: var(--o-text-color-tertiary); + } + } + .vue-flow__handle-right { + top: 50%; + right: 0px; + width: 16px; + height: 16px; + border-radius: 50%; + background: var(--o-bg-color-base); + display: flex; + align-items: center; + justify-content: center; + border: none; + z-index: 2; + } + .vue-flow__handle-right::after { + content: ''; + width: 12px; + height: 12px; + border: 4px solid rgb(223, 229, 239); + border-radius: 50%; + background: rgb(141, 152, 170); + } + .vue-flow__handle-left { + top: 50%; + left: 0px; + width: 16px; + height: 16px; + border-radius: 50%; + background: var(--o-bg-color-base); + display: flex; + align-items: center; + justify-content: center; + border: none; + z-index: 2; + } + + .vue-flow__handle-left::after { + content: ''; + width: 12px; + height: 12px; + border: 4px solid rgb(223, 229, 239); + border-radius: 50%; + background: rgb(141, 152, 170); + } + .outHandleRing { + position: absolute; + display: block; + width: 24px; + height: 24px; + background: #fff; + border-radius: 50%; + top: 50%; + z-index: -1; + } + .outRingLeft { + display: none; + left: -12px; + margin-top: -12px; + } + .outRingRight { + display: none; + right: -12px; + margin-top: -12px; + } + .delOverShadow { + width: 8px; + height: 40px; + position: absolute; + background-color: transparent; + top: 20px; + z-index: 1; + } + .leftBox { + left: -12px; + } + .rightBox { + right: -12px; + } + &:hover { + border: 4px solid rgba(99, 149, 253, 0.3); + box-shadow: 0px 0px 0px 8px rgba(99, 149, 253, 0.1); + .vue-flow__handle-left { + width: 24px; + height: 24px; + left: -12px; + margin-top: -12px; + transform: rotate(-45deg); + border: 4px solid rgba(99, 149, 253, 0.3); + border-right: 4px solid transparent; + border-bottom: 4px solid transparent; + &::after { + border: 4px solid rgba(99, 149, 253, 0.3); + background: rgba(99, 149, 253); + background-clip: content-box; + } + } + .vue-flow__handle-right { + width: 24px; + height: 24px; + right: -12px; + margin-top: -12px; + transform: rotate(45deg); + border: 4px solid rgba(99, 149, 253, 0.3); + border-left: 4px solid transparent; + border-bottom: 4px solid transparent; + &::after { + border: 4px solid rgba(99, 149, 253, 0.3); + background: rgba(99, 149, 253); + background-clip: content-box; + } + } + .outRingLeft { + display: block; + box-shadow: 0px 0px 0px 8px rgba(99, 149, 253, 0.1); + background-clip: content-box; + } + .outRingRight { + display: block; + box-shadow: 0px 0px 0px 8px rgba(99, 149, 253, 0.1); + background-clip: content-box; + } + .leftBox { + background-color: var(--flow-node-default-over-color); + } + .rightBox { + background-color: var(--flow-node-default-over-color); + } + } + } + + .customNodeStyle.success { + border: 4px solid rgba(36, 171, 54, 0.3); + .vue-flow__handle-left { + transform: rotate(-45deg); + width: 24px; + height: 24px; + left: -12px; + margin-top: -12px; + border: 4px solid rgba(36, 171, 54, 0.3); + border-right: 4px solid transparent; + border-bottom: 4px solid transparent; + &::after { + border: 4px solid rgba(36, 171, 54, 0.3); + background: rgb(36, 171, 54); + background-clip: content-box; + } + } + .vue-flow__handle-right { + width: 24px; + height: 24px; + right: -12px; + margin-top: -12px; + transform: rotate(45deg); + border: 4px solid rgba(36, 171, 54, 0.3); + border-left: 4px solid transparent; + border-bottom: 4px solid transparent; + &::after { + border: 4px solid rgba(36, 171, 54, 0.3); + background: rgb(36, 171, 54); + background-clip: content-box; + } + } + &:hover { + box-shadow: 0px 0px 0px 8px rgba(36, 171, 54, 0.1); + .outRingLeft { + box-shadow: 0px 0px 0px 8px rgba(36, 171, 54, 0.1); + } + .outRingRight { + box-shadow: 0px 0px 0px 8px rgba(36, 171, 54, 0.1); + } + .leftBox { + background-color: var(--flow-node-success-over-color); + } + .rightBox { + background-color: var(--flow-node-success-over-color); + } + } + } + + .customNodeStyle.error { + border: 4px solid rgba(227, 32, 32, 0.3); + .vue-flow__handle-left { + transform: rotate(-45deg); + width: 24px; + height: 24px; + left: -12px; + margin-top: -12px; + border: 4px solid rgba(227, 32, 32, 0.3); + border-right: 4px solid transparent; + border-bottom: 4px solid transparent; + &::after { + border: 4px solid rgba(227, 32, 32, 0.3); + background: rgb(227, 32, 32); + background-clip: content-box; + } + } + .vue-flow__handle-right { + width: 24px; + height: 24px; + right: -12px; + margin-top: -12px; + transform: rotate(45deg); + border: 4px solid rgba(227, 32, 32, 0.3); + border-left: 4px solid transparent; + border-bottom: 4px solid transparent; + &::after { + border: 4px solid rgba(227, 32, 32, 0.3); + background: rgb(227, 32, 32); + background-clip: content-box; + } + } + .leftBox { + background-color: transparent; + } + .rightBox { + background-color: transparent; + } + &:hover { + box-shadow: 0px 0px 0px 8px rgba(227, 32, 32, 0.1); + .outRingLeft { + box-shadow: 0px 0px 0px 8px rgba(227, 32, 32, 0.1); + } + .outRingRight { + box-shadow: 0px 0px 0px 8px rgba(227, 32, 32, 0.1); + } + .leftBox { + background-color: var(--flow-node-error-over-color); + } + .rightBox { + background-color: var(--flow-node-error-over-color); + } + } + } +} +.vue-flow__node:has(.default) { + margin-top: 0px; +} +.nodeDealPopper { + width: 64px !important; + min-width: 64px !important; + height: 72px; + padding: 4px 0px !important; + border-radius: 4px; + .dealItem { + display: block; + width: 100%; + height: 32px; + line-height: 32px; + text-align: center; + margin-left: 0px; + color: var(--o-text-color-secondary); + &:hover { + span { + color: var(--o-color-white) !important; + } + background-color: var(--o-color-primary-secondary) !important; + } + } + &:hover { + border: 1px solid var(--o-color-primary-secondary) !important; + } +}