# UEditor 富文本编辑器组件 ## 概述 UEditor 是一个基于 `vue-ueditor-wrap` 的富文本编辑器组件,专门为文章管理、内容编辑等场景设计。该组件已经集成到文章管理系统中,支持富文本编辑、图片上传、表格插入等功能。 ## 功能特性 ### 🎯 核心功能 - **富文本编辑**:支持文本格式化、段落样式、列表等 - **图片管理**:支持图片上传、插入、编辑 - **表格功能**:支持表格插入、编辑、合并单元格 - **媒体支持**:支持视频、附件插入 - **代码插入**:支持代码块插入和语法高亮 - **内容导入**:支持Word、Markdown文档导入 ### 🚀 增强功能 - **自动保存**:60秒自动保存,防止内容丢失 - **全屏编辑**:支持全屏模式,提升编辑体验 - **响应式设计**:自适应不同屏幕尺寸 - **右键菜单**:支持右键快捷操作 - **工具栏定制**:丰富的工具栏配置 ## 快速开始 ### 1. 基本用法 ```vue ``` ### 2. 表单集成 ```vue ``` ### 3. 条件显示 ```vue ``` ## 配置说明 ### 编辑器配置 ```javascript const editorConfig = { // 文件上传接口 serverUrl: '/admin/api/admin/system/editor', // 请求头配置 serverHeaders: { 'Authorization': 'Bearer ' + localStorage.getItem('token') }, // 编辑器尺寸 initialFrameHeight: 500, initialFrameWidth: '100%', // 自动保存 enableAutoSave: true, autoSaveInterval: 60000, // 其他配置 loadConfigFromServer: true, enableContextMenu: true, catchRemoteImageEnable: false }; ``` ### 工具栏配置 工具栏包含以下功能组: #### 基础编辑 - `undo` - 撤销 - `redo` - 重做 - `formatmatch` - 格式刷 - `autotypeset` - 自动排版 #### 文本格式 - `bold` - 加粗 - `italic` - 斜体 - `underline` - 下划线 - `forecolor` - 字体颜色 - `backcolor` - 背景色 - `fontfamily` - 字体 - `fontsize` - 字号 #### 段落格式 - `justifyleft` - 左对齐 - `justifycenter` - 居中对齐 - `justifyright` - 右对齐 - `justifyjustify` - 两端对齐 - `indent` - 首行缩进 - `lineheight` - 行间距 #### 插入功能 - `simpleupload` - 单图上传 - `insertimage` - 多图上传 - `insertvideo` - 视频插入 - `attachment` - 附件插入 - `inserttable` - 表格插入 - `link` - 超链接 - `insertcode` - 代码插入 #### 高级功能 - `contentimport` - 内容导入 - `template` - 模板 - `formula` - 公式 - `print` - 打印 - `preview` - 预览 ## 在文章管理中的应用 ### 文章编辑表单 文章管理系统中已经集成了UEditor组件,用于编辑文章内容: ```vue 请在此处编辑文章内容,支持富文本格式、图片上传、表格等功能 ``` ### 表单验证 ```javascript const rules = { articleContent: [{ required: !isLinkChecked.value, message: '内容 必填', validator: (rule, value) => { if (isLinkChecked.value) { return Promise.resolve(); } if (!value || value.trim() === '') { return Promise.reject('内容 必填'); } return Promise.resolve(); } }] }; ``` ### 内容处理 ```javascript // 获取纯文本内容 if (form.articleContent) { form.articleContentText = form.articleContent.replace(/<[^>]*>/g, ''); } ``` ## 样式定制 ### 编辑器容器样式 ```css .editor-container { position: relative; border: 1px solid #d9d9d9; border-radius: 4px; padding: 10px; background-color: #fafafa; min-height: 200px; } .editor-tip { position: absolute; top: 10px; left: 10px; background-color: #fff; padding: 5px 10px; border-radius: 4px; font-size: 12px; color: #8c8c8c; z-index: 1; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } ``` ### 组件样式优化 UEditor组件本身已经包含了样式优化: ```css .uebox { width: 100%; border-radius: 6px; overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } .uebox :deep(.edui-editor-toolbarbox) { background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); border-bottom: 1px solid #e8e8e8; } ``` ## 注意事项 ### 1. ID唯一性 每个UEditor实例必须有唯一的ID,避免冲突: ```vue ``` ### 2. 数据绑定 使用v-model进行双向数据绑定: ```vue ``` ### 3. 表单验证 在表单验证规则中正确处理富文本内容: ```javascript // 检查内容是否为空 if (!form.content || form.content.trim() === '') { return Promise.reject('内容不能为空'); } ``` ### 4. 内容安全 提交时注意HTML内容的处理和安全过滤: ```javascript // 简单的HTML标签移除 const plainText = htmlContent.replace(/<[^>]*>/g, ''); // 或者使用专门的HTML清理库 import DOMPurify from 'dompurify'; const cleanHtml = DOMPurify.sanitize(htmlContent); ``` ### 5. 性能优化 避免在同一个页面中使用过多编辑器实例,合理控制数量。 ## 测试页面 项目包含了一个测试页面用于验证UEditor组件功能: **文件位置**: `src/views/business/ueditor-test.vue` 测试页面包含: - 基本功能测试 - 表单集成测试 - 内容预览 - 操作按钮测试 ## 文件结构 ``` src/ ├── components/ │ └── business/ │ └── ueditor.vue # UEditor组件 ├── views/ │ └── business/ │ └── case-clinical-article/ │ ├── case-clinical-article-form.vue # 文章编辑表单 │ └── case-clinical-article-list.vue # 文章列表 └── public/ └── UEditorPlus/ # UEditor资源文件 ├── ueditor.all.js ├── ueditor.config.js ├── ueditor.parse.js └── ... ``` ## 依赖说明 - **vue-ueditor-wrap**: Vue3的UEditor包装器 - **UEditorPlus**: 富文本编辑器核心库 - **Ant Design Vue**: UI组件库(用于表单和样式) ## 更新日志 ### v1.0.0 (当前版本) - ✅ 基础富文本编辑功能 - ✅ 图片上传和管理 - ✅ 表格插入和编辑 - ✅ 自动保存功能 - ✅ 响应式设计 - ✅ 文章管理集成 - ✅ 样式优化 ## 技术支持 如有问题,请检查: 1. 控制台错误信息 2. 网络请求状态 3. 组件导入路径 4. ID唯一性 5. 数据绑定正确性 ## 相关链接 - [UEditorPlus 官方文档](https://doc.ueditorplus.com/) - [vue-ueditor-wrap 文档](https://github.com/HaoChuan9421/vue-ueditor-wrap) - [Ant Design Vue 文档](https://antdv.com/)