美文网首页
富文本输入框,上传图片url地址

富文本输入框,上传图片url地址

作者: 艾希_可可 | 来源:发表于2021-08-12 10:09 被阅读0次

    1、npm安装编辑器组件

    npm install vue-quill-editor –save
    

    2、完成以后在main.js引入

    import  VueQuillEditor from 'vue-quill-editor'
    import 'quill/dist/quill.core.css'
    import 'quill/dist/quill.snow.css'
    import 'quill/dist/quill.bubble.css'
    Vue.use(VueQuillEditor)
    

    3、 然后新建Editor.vue文件 ,代码粘贴上去就行

    <template>
        <quill-editor class="editor"
                v-model="content" 
                ref="myQuillEditor" 
                :options="editorOption" 
                @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"
                @change="onEditorChange($event)">
            </quill-editor>
    </template>
    <script>
    import { quillEditor } from 'vue-quill-editor'
     export default {
        name: "Editor",
        data() {
          return {
            content:null,
            editorOption:{}
            };
        },
        methods:{
            onEditorBlur(){
            },
            onEditorFocus(){//获得焦点事件
            },
            onEditorChange(){//内容改变事件
            }
        }
    </script>
     
    <style>
     
    这里可以自定义样式以及安放的位置
     
    </style>
    

    4、在你的vue文件中使用详细代码

    1、dom代码

     <el-form
              ref="markDownFrom"
              class="data-form"
              :model="searchFrom"
              label-position="left"
              label-width="110px"
              :rules="rules"
            >
              <div>
                <!-- 图片上传组件辅助-->
                <el-upload
                  class="avatar-uploader"
                  :action="serverUrl"
                  :show-file-list="false"
                  :on-success="uploadSuccess"
                  :on-error="uploadError"
                  :before-upload="beforeUpload"
                />
                <el-row v-loading="quillUpdateImg">
                  <el-form-item label="具体要求" prop="requirement">
                    <quillEditor
                      ref="detailQuillEditor"
                      v-model="searchFrom.requirement"
                      :options="editorOption"
                      class="editor"
                      :disabled="allDisabled"
                    />
                  </el-form-item>
                </el-row>
              </div>
            </el-form>
    

    2、在data里面初始化变量和配置

    quillUpdateImg: false, // 根据图片上传状态来确定是否显示loading动画,刚开始是false,不显示
          serverUrl: 'http://10.13.100.19:1987/upload', // 这里写你要上传的图片服务器地址
          editorOption: {
            placeholder: '请输入',
            theme: 'snow', // or 'bubble'
            modules: {
              toolbar: {
                container: toolbarOptions, // 工具栏
                handlers: {
                  'image': function(value) {
                    if (value) {
                      document.querySelector('.avatar-uploader input').click()
                    } else {
                      this.quill.format('image', false)
                    }
                  }
                }
              }
            }
          }, // 富文本编辑器配置
    

    3、js实现

    
    const toolbarOptions = [
      ['bold', 'italic', 'underline', 'strike'], // toggled buttons
      ['blockquote', 'code-block'],
    
      [{ 'header': 1 }, { 'header': 2 }], // custom button values
      [{ 'list': 'ordered' }, { 'list': 'bullet' }],
      [{ 'script': 'sub' }, { 'script': 'super' }], // superscript/subscript
      [{ 'indent': '-1' }, { 'indent': '+1' }], // outdent/indent
      [{ 'direction': 'rtl' }], // text direction
    
      [{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown
      [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
    
      [{ 'color': [] }, { 'background': [] }], // dropdown with defaults from theme
      [{ 'font': [] }],
      [{ 'align': [] }],
      ['link', 'image'],
      ['clean'] // remove formatting button
    ]
    export default toolbarOptions
    
    
    
    import { quillEditor } from 'vue-quill-editor'
      components: { quillEditor },
    上传图片的处理方法
     beforeUpload() {
          this.quillUpdateImg = true
        },
        // 上传图片成功
        uploadSuccess(res, file) {
          // res为图片服务器返回的数据
          // 获取富文本组件实例
          const quill = this.$refs.detailQuillEditor.quill
          // 如果上传成功
          // 获取光标所在位置
          const length = quill.getSelection().index
          // 插入图片  res.info为服务器返回的图片地址
          quill.insertEmbed(length, 'image', res.content.url)
          // 调整光标到最后
          quill.setSelection(length + 1)
    
          // loading动画消失
          this.quillUpdateImg = false
        },
        // 上传图片失败
        uploadError(res, file) {
          // loading动画消失
          this.quillUpdateImg = false
          this.quillRecoredUpdateImg = false
          this.$message.error('图片插入失败')
        },
    

    参考文档
    https://blog.csdn.net/qq_39530754/article/details/105603227
    https://www.jianshu.com/p/bd2915058a11

    相关文章

      网友评论

          本文标题:富文本输入框,上传图片url地址

          本文链接:https://www.haomeiwen.com/subject/julzvltx.html