.node-container { color: white; min-width: 150px; font-size: 14px; border: 2px solid transparent; &.selected { border-color: #1890ff; box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); } .node-header { border-bottom: 1px solid rgba(255, 255, 255, 0.2); color: #000000; text-align: center; position: relative; } .node-api-box, .node-data-box { //box-shadow: 3px 3px 5px #cccccc; } .node-data-box { margin-top: -1px; } .node-split-line { z-index: 230; position: relative; width: 90%; background-color: #ffffff; margin: -1px auto; // -1是为了遮住上面盒子的部分边框 color: #000000; text-align: center; height: 20px; line-height: 20px; font-size: 12px; border: 1px solid #cccccc; border-bottom-color: #ffffff; border-top-color: #ffffff; } .node-content, .node-content-api { display: flex; background-color: #ffffff; color: #000000; padding: 0 5px; border: 1px solid #cccccc; border-radius: 3px; justify-content: space-between; .node-inputs { padding-right: 10px; } .node-outputs { padding-left: 10px; } .node-inputs-api, .node-outputs-api { flex: 1; } .node-inputs { margin-bottom: 5px; .node-input-label { font-size: 12px; padding: 1px 0; height: 20px; line-height: 20px; .node-data-type { color: #adadad; } } } .node-outputs, .node-outputs-api { text-align: right; } .node-output-label { font-size: 12px; padding: 1px 0; height: 20px; line-height: 20px; .node-data-type { color: #adadad; } } } .node-content-api { min-height: 30px; } .node-content { min-height: 10px; } .node-content-box { padding: 10px; margin: -1px auto; background-color: #fff; border-top: 1px solid #ffffff; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; } .node-footer { background-color: #ffffff; color: #000000; padding: 5px 20px; border: 1px solid #cccccc; border-top: none; min-height: 20px; text-align: center; } } // 节点状态指示器样式 .node-status-indicator { position: absolute; top: -10px; right: -10px; width: 20px; height: 20px; z-index: 10; } .status-waiting { width: 16px; height: 16px; border-radius: 50%; background-color: #cccccc; border: 2px solid #ffffff; box-shadow: 0 0 4px rgba(0, 0, 0, 0.2); } .status-running { width: 16px; height: 16px; border-radius: 50%; background-color: #1890ff; border: 2px solid #ffffff; box-shadow: 0 0 4px rgba(0, 0, 0, 0.2); animation: pulse 1.5s infinite; } .status-success { width: 16px; height: 16px; border-radius: 50%; background-color: #52c41a; border: 2px solid #ffffff; box-shadow: 0 0 4px rgba(0, 0, 0, 0.2); } .status-failed { width: 16px; height: 16px; border-radius: 50%; background-color: #ff4d4f; border: 2px solid #ffffff; box-shadow: 0 0 4px rgba(0, 0, 0, 0.2); } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(24, 144, 255, 0.7); } 70% { box-shadow: 0 0 0 6px rgba(24, 144, 255, 0); } 100% { box-shadow: 0 0 0 0 rgba(24, 144, 255, 0); } }