npm install tinymce
npm install @tinymce/tinymce-vue
@tinymce/tinymce-vue^3.0.1
tinymce^5.1.0
<template>
<editor id='tinymce'
v-model='tinymceHtml'
:init='init'></editor>
</template>
<script>
import { uploadImg } from '@/api/system/config'
import tinymce from 'tinymce/tinymce'
import 'tinymce/themes/silver/theme'
import Editor from '@tinymce/tinymce-vue'
import "tinymce/plugins/image"; // 插入上传图片插件
import "tinymce/plugins/link"; //超链接插件
import "tinymce/plugins/code"; //代码块插件
import "tinymce/plugins/table"; // 插入表格插件
import "tinymce/plugins/lists"; // 列表插件
import 'tinymce/plugins/contextmenu' //右键菜单插件
import 'tinymce/plugins/wordcount' // 字数统计插件
import 'tinymce/plugins/colorpicker' //选择颜色插件
import 'tinymce/plugins/textcolor' //文本颜色插件
import 'tinymce/plugins/fullscreen' //全屏
import 'tinymce/plugins/paste'
export default {
name: 'tinymce',
data () {
return {
tinymceHtml: this.value,
init: {
language_url: '/tinymce/langs/zh_CN.js',
language: 'zh_CN',
skin_url: '/tinymce/skins/ui/oxide',
height: 500,
toolbar: false,
plugins: 'link lists image code table colorpicker textcolor wordcount contextmenu',
//toolbar: 'imagetools bold italic underline strikethrough blockquote | forecolor backcolor | formatselect | fontsizeselect | fontselect | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists link unlink image media table | removeformat | undo redo | fullscreen',
branding: false,
paste_data_images: true,
images_upload_handler: (blobInfo, success, failure) => {
if (blobInfo.blob().size / 1024 / 1024 > 2) {
failure("上传失败,图片大小请控制在 2M 以内");
} else {
let params = new FormData();
params.append("file", blobInfo.blob())
//自己后台的上传接口
uploadImg(params).then(res => {
success(res.url);
})
}
}
},
}
},
props: ['value'],
mounted () {
tinymce.init({})
},
watch: {
value (newValue) {
this.tinymceHtml = newValue
},
tinymceHtml (newValue) {
this.$emit('input', newValue)
}
},
components: { Editor }
}
</script>