1.安装
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.html
<div class="card_update_quill">
<el-upload
class="avatar"
ref="quillUpload"
action="/qiniu/upload/img"
name="img"
:show-file-list="false"
:on-success="uploadSuccess"
:on-error="uploadError"
:on-change="quillChange"
:before-upload="beforeUpload"
:data="param"
style="height: 0">
</el-upload>
<!--富文本编辑器组件-->
<el-row>
<quill-editor
v-model="ruleForm.cardDetail.remark"
ref="myQuillEditor"
:options="editorOption"
@change="onEditorChange($event)"
style="height: 300px">
</quill-editor>
</el-row>
</div>
4.js
<script>
const toolbarOptions = [
['bold', 'italic', 'underline', 'strike'], // 切换按钮
['blockquote', 'code-block'],
[{ 'header': 1 }, { 'header': 2 }], // 用户自定义按钮值
[{ 'list': 'ordered'}, { 'list': 'bullet' }],
[{ 'script': 'sub'}, { 'script': 'super' }], // 上标/下标
[{ 'indent': '-1'}, { 'indent': '+1' }], // 减少缩进/缩进
[{ 'direction': 'rtl' }], // 文本下划线
[{ 'size': ['small', false, 'large', 'huge'] }], // 用户自定义下拉
[{ 'header': [1, 2, 3, 4, 5, 6, false] }],
[{ 'color': [] }, { 'background': [] }], // 主题默认下拉,使用主题提供的值
[{ 'font': [] }],
[{ 'align': [] }],
['link', 'image', 'video'],
['clean'] // remove formatting button
];
export default {
data() {
return {
editorOption: {
placeholder: '',
theme: 'snow', // or 'bubble'
modules: {
toolbar: {
container: toolbarOptions, // 工具栏
handlers: {
'image': function (value) {
if (value) {
// 触发input框选择图片文件
document.querySelector('.avatar input').click();
} else {
this.quill.format('image', false);
}
}
},
}
}
},
header: {
// token: sessionStorage.token
}, // 有的图片服务器要求请求头需要有token
param:{
imgFile:"",
},
}
},
methods: {
//编辑器
quillChange(file){
this.param.imgFile = file.raw;
},
// 富文本图片上传前
uploadSuccess(res, file) {
// res为图片服务器返回的数据
// 获取富文本组件实例
let quill = this.$refs.myQuillEditor.quill;
// 如果上传成功
if (res.meta.res === '200') {
// 获取光标所在位置
let length = quill.getSelection().index;
// 插入图片 res.info为服务器返回的图片地址
quill.insertEmbed(length, 'image', res.data.qnUrl);
// 调整光标到最后
quill.setSelection(length + 1)
} else {
this.$message.error('图片插入失败')
}
},
// 富文本图片上传失败
uploadError() {
this.$message.error('图片插入失败')
}
}
}
网友评论