VUE tinymce editor 配置手册-封装组件

1、vue 配置:

 init: {
                language_url: "./tinymce/zh_CN.js", //public目录下
                language: "zh_CN",
                height: 500,
                menubar: false,
                plugins: "lists image media table paste link searchreplace anchor code preview pagebreak importcss",
                toolbar: "undo redo searchreplace |  formatselect pagebreak | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists link anchor image media table | removeformat code preview", //工具栏展示项
                toolbar_drawer: false,
                image_advtab: true,
                object_resizing: false,
                paste_data_images: true,
                content_css: "./tinymce/article.css",
                images_upload_handler: (blobInfo, success, failure) => {
                    this.uploadFile(blobInfo.blob()).then(fileUrl => success(fileUrl)).catch(err => failure(err))
                }
            },

toolbar 配置项说明:

配置项所属插件描述
newdocument核心创建新文档
bold核心加粗
italic核心斜体
underline核心下划线
strikethrough核心删除线
alignleft核心居左
aligncenter核心居中
alignright核心居右
alignjustify核心两端对齐
alignnone核心清除
styleselect核心格式选择下拉框(缩进、行高)
formatselect核心段落选择下拉框(段落、标题)
fontselect核心字体选择下拉框
fontsizeselect核心字号选择下拉框
cut核心剪切
copy核心复制
paste核心粘贴
outdent核心减少缩进
indent核心增加缩进
blockquote核心引用
undo核心撤消
redo核心恢复
removeformat核心清除格式
subscript核心下标
superscript核心上标
visualaid核心网格线
insert核心插入的集合按钮
hrhr水平线
bullistlists无序列表
numlistlists有序列表
linklink添加和修改链接
unlinklink去除链接格式
openlinklink打开选中链接
imageimage添加和修改图片
charmapcharmap特殊符号
pastetextpaste粘贴纯文本
printprint打印
previewpreview预览
anchoranchor作者
pagebreakpagebreak分页符
spellcheckerspellchecker拼写检查
searchreplacesearchreplace搜索
visualblocksvisualblocks隐藏块级区域开关
visualcharsvisualchars隐藏字符串开关.
codecode代码
helphelp帮助
fullscreenfullscreen全屏
insertdatetimeinsertdatetime插入时间
mediamedia插入/编辑媒体文件
nonbreakingnonbreaking不间断空格
savesave保存(ajax)
cancelsave取消保存
tabletable插入/编辑表格
tabledeletetable删除表格
tablecellpropstable单元格属性
tablemergecellstable合并单元格
tablesplitcellstable拆分单元格
tableinsertrowbeforetable在当前行之前插入一个新行
tableinsertrowaftertable在当前行之后插入一个新行
tabledeleterowtable删除当前行
tablerowpropstable行属性
tablecutrowtable剪切选定行
tablecopyrowtable复制选定行
tablepasterowbeforetable在当前行之前粘贴行
tablepasterowaftertable在当前行之后粘贴行
tableinsertcolbeforetable在当前列之前插入一个列
tableinsertcolaftertable在当前列之后插入一个列.
tabledeletecoltable删除当前列
rotateleftimagetools逆时针旋转当前图像
rotaterightimagetools顺时针旋转当前图像
flipvimagetools垂直翻转当前图像
fliphimagetools水平翻转当前图像
editimageimagetools打开图像编辑对话框
imageoptionsimagetools打开图像配置对话框
fullpagefullpage完整页面的文档属性
ltrdirectionality设置编写方向从左到右
rtldirectionality设置编写方向从右到左
emoticonsemoticons表情
templatetemplate插入模板
forecolortextcolor文本颜色
backcolortextcolor背景颜色
restoredraftrestoredraft恢复到最新的自动保存草稿
insertfilemoxiemanager引入文件
a11ychecka11ychecker检查访问性
toctoc插入目录
quickimageinlite插入本地图像
quicktableinlite插入2X2的表格
quicklinkinlite插入连接

封装的完整组件代码:tinymce-editor.vue

<template>
    <div class="tinymce-editor">
        <editor v-model="myValue" :init="init" @onExecCommand="onExecCommand"></editor>
    </div>
</template>
<script>
import Editor from "@tinymce/tinymce-vue";

var cos;
export default {
    name: "tinymce-editor",
    components: {
        Editor
    },
    props: {
        value: {
            type: String,
            default: ""
        }
    },
    data() {
        return {
            init: {
                language_url: "./tinymce/zh_CN.js", //public目录下
                language: "zh_CN",
                height: 500,
                menubar: false,
                plugins: "lists image media table paste link searchreplace anchor code preview pagebreak importcss",
                toolbar: "undo redo searchreplace |  formatselect pagebreak | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists link anchor image media table | removeformat code preview fullscreen", //工具栏展示项
                toolbar_drawer: false,
                image_advtab: true,
                object_resizing: false,
                paste_data_images: true,
                content_css: "./tinymce/article.css",
                images_upload_handler: (blobInfo, success, failure) => {
                    this.uploadFile(blobInfo.blob()).then(fileUrl => success(fileUrl)).catch(err => failure(err))
                }
            },
            myValue: this.value,
            uploading: false,
            cosConfig: []
        };
    },
    mounted() {
        // console.log('tinymce-editor mounted:',this.value)
        tinymce.init({});
        this.cosInit();
    },
    methods: {
        cosInit() {
            this.$http({
                url: this.$http.adornUrl("/sys/oss/config"),
                method: "get",
                params: this.$http.adornParams()
            }).then(({ data }) => {
                if (data && data.code === 200) {
                    this.cosConfig = data.config;
                } else {
                    this.$message.error("请先配置云存储相关信息!");
                }
            });
        },
        onExecCommand(e) {
            //console.log(e)
        },
        uploadFile(file) {
            this.uploading = true;
            return new Promise((resolve, reject) => {
                let formData = new FormData();
                formData.append("file", file);
                this.$http({
                    url: this.$http.adornUrl('/sys/oss/upload'),
                    method: 'post',
                    data: formData,
                    headers: { 'Content-Type': 'multipart/form-data' }
                }).then(({ data }) => {
                    console.log(data)
                    if (data && data.code === 200) {
                        this.$emit('uploaded', data.url)
                        resolve(data.url)
                    } else {
                        this.$message.error("文件上传失败:" + data.msg)
                        reject(data.msg)
                    }
                    this.uploading = false;
                }).catch(err=>reject(err))
            });
            
            
        }
    },
    watch: {
        value(newValue) {
            this.myValue = newValue;
        },
        myValue(newValue) {
            this.$emit("input", newValue);
        }
    }
};
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值