vue富文本使用editor

import { quillEditor, Quill } from "vue-quill-editor"; import { container, ImageExtend } from "quill-image-extend-module" import ImageResize from 'quill-image-resize-module' import { ImageDrop } from 'quill-image-drop-module'; import "quill/dist/quill.core.css"; import "quill/dist/quill.snow.css"; import "quill/dist/quill.bubble.css"; Quill.register("modules/ImageExtend", ImageExtend) Quill.register("modules/ImageResize", ImageResize) Quill.register('modules/imageDrop', ImageDrop); export default { components: { quillEditor, }, data() { return { editorOption: { placeholder: "编辑文章内容", theme: 'snow', modules: { clipboard: { // 粘贴板,处理粘贴图片 *** 主要是这里 matchers: [[Node.ELEMENT_NODE, this.desMatcher]], }, imageDrop: true, imageResize: { //添加 displayStyles: { backgroundColor: 'black', border: 'none', color: 'white' }, modules: ['Resize', 'DisplaySize', 'Toolbar'] }, ImageExtend: { loading: true, name: "pictureFile", }, toolbar: { // container: container, container: [ ['bold', 'italic', 'underline', 'strike'], // 加粗 斜体 下划线 删除线 ['blockquote', 'code-block'], // 引用 代码块 [{ header: 1 }, { header: 2 }], // 1、2 级标题 [{ list: 'ordered' }, { list: 'bullet' }], // 有序、无序列表 [{ script: 'sub' }, { script: 'super' }], // 上标/下标 [{ indent: '-1' }, { indent: '+1' }], // 缩进 // [{ direction: 'rtl' }], // 文本方向 [{ size: ['12', '14', '16', '18', '20', '22', '24', '28', '32', '36'] }], // 字体大小 [{ header: [1, 2, 3, 4, 5, 6] }], // 标题 [{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色 // [{ font: ['songti'] }], // 字体种类 [{ align: [] }], // 对齐方式 ['clean'], // 清除文本格式 ['image'] // 链接、图片,需要视频的可以加上video ], // 拦截 handlers: { image: function (value) { if (value) { document.querySelector('#upload').click() } } } } } }, isDisable: false, wordNumber: '' }; }, methods: { changeUpload(e) { let file = e.target.files[0] const formData = new FormData() formData.append('file', file) this.$axios({ method: "post", url: "/sys/fileOps/uploadFile", data: formData, headers: { 'Content-Type': 'multipart/form-data' } }) .then((res) => { let quill = this.$refs.myQuillEditor.quill if (res.data.code === 200) { //光标位置 let length = quill.getSelection().index // 插入图 quill.insertEmbed(length, "image", res.data.data) // 调整光标 quill.setSelection(length + 1) } else { this.$message.error(res.data.message); } }) .catch((err) => { console.log(err, '==='); this.$message.error('系统错误'); }); }, //内容改变事件 onEditorChange({ quill, html, text }) { this.wordNumber = text }, // 复制图片判断 desMatcher(node, Delta) { console.log(Delta, '===') let ops = [] Delta.ops.forEach(op => { if (op.insert && typeof op.insert === 'string') {// 如果粘贴了图片,这里会是一个对象,所以可以这样处理 ops.push({ insert: op.insert, }) } else { if (op.insert.image.includes('file://') || op.insert.image.includes('data:image')) { //本地图片会使文件file开头 this.$message.warning('不允许粘贴图片,请手动上传') } else { ops.push({ insert: op.insert, }) } } }) Delta.ops = ops return Delta } }, created() { }, mounted() { }, };
上一篇:Windows下安装并使用 NVM(Node Version Manager)


下一篇:(Golang)初识Go语言!!为什么选择Go?如何配置Go的开发环境?VS Code如何配置Go环境?