vue实现支持文本声音视频图片文档等多节点拖拽新增ai智能画布笔记代码
代码语言:html
所属分类:其他
代码描述:vue实现支持文本声音视频图片文档等多节点拖拽新增ai智能画布笔记代码,支持多节点,支持缩放,支持画布拖拽、支持节点的多选ai处理生成新的结果节点,支持节点上下文参考,支持文生图、文生视频、视频编辑、图片编辑、文本总结、文本润色、声音转文字、文字转声音等ai场景的全聚合超级智能画布功能。
代码标签: vue 支持 文本 声音 视频 图片 文档 多 节点 拖拽 新增 ai 智能 画布 笔记 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>AI 智能画布 - v8 (企业级 UI & 交互增强)</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script> <script src="https://cdn.jsdelivr.net/npm/leader-line-new@1.1.9/leader-line.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> :root { --primary-color: #0d6efd; --primary-color-light: #e7f1ff; --background-color: #f8f9fa; --node-background-color: #FFFFFF; --text-color: #212529; --text-color-light: #6c757d; --border-color: #dee2e6; --border-color-soft: #e9ecef; --shadow-color: rgba(0, 0, 0, 0.05); --shadow-color-strong: rgba(0, 0, 0, 0.1); --connector-color: #adb5bd; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } body, html { margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background-color: var(--background-color); color: var(--text-color); overflow: hidden; height: 100vh; width: 100vw; } #app { display: flex; flex-direction: column; height: 100%; animation: fadeIn 0.5s ease-in-out; } .header { display: flex; align-items: center; padding: 10px 20px; background-color: var(--node-background-color); border-bottom: 1px solid var(--border-color); box-shadow: 0 2px 4px var(--shadow-color); z-index: 100; flex-shrink: 0; } .header h1 { font-size: 1.4em; margin: 0; color: var(--text-color); font-weight: 600; } .header h1 .fa-brain { margin-right: 12px; color: var(--primary-color); } .canvas-tabs { margin-left: 30px; display: flex; align-items: center; } .canvas-tabs button { padding: 8px 16px; margin-right: 5px; border-radius: 6px; border: 1px solid transparent; background-color: transparent; cursor: pointer; transition: all 0.2s ease-in-out; color: var(--text-color-light); font-weight: 500; } .canvas-tabs button.active { color: var(--primary-color); background-color: var(--primary-color-light); } .canvas-tabs button:hover:not(.active) { color: var(--text-color); background-color: var(--background-color); } .toolbar { position: absolute; top: 75px; left: 15px; display: flex; flex-direction: column; background-color: var(--node-background-color); padding: 8px; border-radius: 8px; box-shadow: 0 4px 12px var(--shadow-color-strong); z-index: 50; border: 1px solid var(--border-color-soft); } .toolbar button { background: none; border: none; font-size: 1.4em; padding: 10px; width: 44px; height: 44px; margin: 4px 0; cursor: pointer; border-radius: 6px; color: var(--text-color-light); transition: all 0.2s ease-in-out; } .toolbar button:hover { background-color: var(--primary-color-light); color: var(--primary-color); } .canvas-container { flex-grow: 1; position: relative; overflow: hidden; background-image: radial-gradient(var(--border-color) 1px, transparent 1px); background-size: 20px 20px; cursor: default; transition: box-shadow 0.3s; } .canvas-container.is-pannable { box-shadow: 0 0 0 3px var(--primary-color) inset; cursor: grab; } .canvas-container.panning { cursor: grabbing; } #canvas { position: absolute; width: 1px; height: 1px; transform-origin: 0 0; } .node { position: absolute; background-color: var(--node-background-color); border: 1px solid var(--border-color); border-radius: 10px; box-shadow: 0 2px 5px var(--shadow-color), 0 5px 15px var(--shadow-color); min-width: 230px; display: flex; flex-direction: column; z-index: 10; transition: all 0.2s ease-out; } .node:hover { box-shadow: 0 4px 8px var(--shadow-color-strong), 0 10px 25px var(--shadow-color); transform: translateY(-2px); } .node.selected { border-color: var(--primary-color); box-shadow: 0 0 0 2px var(--primary-color), 0 10px 25px var(--shadow-color-strong); } .node-header { padding: 8px 12px; font-weight: 600; border-bottom: 1px solid var(--border-color-soft); cursor: move; display: flex; justify-content: space-between; align-items: center; background-color: #fafbfd; border-top-left-radius: 10px; border-top-right-radius: 10px; color: var(--text-color); font-size: 0.9em; } .node-header .fa { margin-right: 8px; color: var(--text-color-light); } .node-header .delete-btn { cursor: pointer; color: #aaa; transition: color 0.2s; } .node-header .delete-btn:hover { color: #d9534f; } .node-content { padding: 15px; flex-grow: 1; transition: border 0.2s ease; } .node.drag-over .node-content { border: 2px dashed var(--primary-color); } .node-content textarea { width: 100%; border: none; outline: none; resize: vertical; min-height: 60px; background: transparent; font-size: 1em; } .node-content img, .node-content video, .node-content audio { max-width: 100%; border-radius: 6px; } .node-content audio { width: 100%; } .node-content a { color: var(--primary-color); text-decoration: none; word-break: break-all; font-weight: 500; } .node-content a:hover { text-decoration: underline; } .empty-placeholder { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 20px 10px; cursor: pointer; border-radius: 6px; transition: background-color 0.2s; } .empty-placeholder:hover { background-color: var(--primary-color-light); } .empty-placeholder .placeholder-icon { font-size: 2.5em; color: var(--text-color-light); margin-bottom: 15px; } .empty-placeholder span { font-weight: 500; color: var(--text-color-light); } .ai-handle { width: 22px; height: 22px; background-color: var(--node-background-color); border: 1px solid #ccc; color: #888; border-radius: 50%; position: absolute; cursor: pointer; z-index: 15; transition: all 0.2s ease-out; display: flex; justify-content: center; align-items: center; font-size: 12px; opacity: 0; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .node:hover .ai-handle, .node.selected .ai-handle { opacity: 1; } .ai-handle:hover { transform: scale(1.2) !important; background-colo.........完整代码请登录后点击上方下载按钮下载查看
网友评论0