Skip to content

QilinKaitify组件

QilinKaitify组件,基于kaitify-vue封装的富文本编辑器组件。

注意:

1、因为本人项目的原因,涉及到的富文本编辑器功能比较浅,因为针对该编辑器只是封装了对应图片的粘贴和上传图片的功能,若有需求亦可留言作者,后续会研究加上定制化功能。

2、更多功能各位大佬亦可直接去参考官方文档(https://www.so-better.cn/docs/kaitify-vue/guide/introduction)。

基本使用

1、自定义粘贴图片&自定义上传图片

vue
<template>
    <QilinKaitify :kaitifyConfig="kaitifyConfig" v-model="content"></QilinKaitify>
</template>

<script setup>
    import {reactive,ref,onMounted} from "vue";
    let content = ref("");
    const kaitifyConfig = reactive({
        placeholder:"请输入内容...",
        allowPasteHtml:true,
        formatRules:[
            ({ node }) => {
                if (node.hasStyles()) {
                    const styles = {}
                    Object.keys(node.styles).forEach(item => {
                        //消除wps粘贴的pt样式带来的影响
                        if (!node.styles[item].toString().endsWith('pt')) {
                            styles[item] = node.styles[item]
                        }
                    })
                    node.styles = styles
                }
            }
        ],
        menuPopoverProps:{
            zIndex:5000
        },
        menuImageProps:{
            customUpload:(ref,file)=>{
                console.log(file,111);
                let formData = new FormData();
                formData.append("file",file);
                fetch("http://36.134.22.190:8061/common/upload",{
                    headers:{
                        Authorization:"***"},
                    method:"post",
                    body:formData
                }).then((response)=>{
                    // console.log(response);
                    return response.json();
                }).then((res)=>{
                    // console.log(res);
                    ref.state.editor.commands.setImage({
                        src:res.data.url,
                        width:"300px",
                        alt:"图片加载失败"
                    });
                });
            }
        },
        onPasteImage:(ref,file)=>{
            console.log(file,111);
            let formData = new FormData();
            formData.append("file",file);
            fetch("http://36.134.22.190:8061/common/upload",{
                headers:{
                    Authorization:"***"},
                method:"post",
                body:formData
            }).then((response)=>{
                // console.log(response);
                return response.json();
            }).then((res)=>{
                // console.log(res);
                ref.state.editor.commands.setImage({
                    src:res.data.url,
                    width:"300px",
                    alt:"图片加载失败"
                });
            });
        }
    });
</script>

Props参数

kaitifyConfig object

核心配置项,支持以下参数。

属性名类型
说明
可选值默认值
disabledboolean是否禁用-false
localestring语言zh-CN/en-USzh-CN
hideBubbleOnMousedownboolean鼠标在编辑器内按下时是否隐藏气泡栏,默认false,若设为true,则即使bubblePropsvisible为true,也不显示气泡栏-false
autofocusboolean编辑器渲染后是否自动聚焦-true
placeholderstring占位符-请输入内容...
darkboolean是否使用暗黑模式-false
styleobject/string自定义样式--
allowCopyboolean是否允许复制-true
allowPasteboolean是否允许粘贴-true
allowCutboolean是否允许剪切-true
allowPasteHtmlboolean是否允许粘贴html,即粘贴内容是否携带样式-true
bubblePropsobject编辑器气泡栏相关属性配置,详见bubbleProps--
menuPopoverPropsobject菜单组件的浮层属性配置,详见menuPopoverProps--
menuImagePropsobject菜单组件图片属性配置,详见menuImageProps--
onPasteImagefunction编辑器粘贴图片时触发,返回true表示使用默认逻辑,返回false表示进行自定义处理(editor,file)=>{}-
onPasteVideofunction编辑器粘贴视频时触发,返回true表示使用默认逻辑,返回false表示进行自定义处理,这边默认封装的是自定义处理(editor,file)=>{}-
onPasteFilefunction编辑器粘贴除了图片和视频以外的文件时触发,需要自定义处理(editor,file)=>{}-

bubbleProps object

编辑器气泡栏相关属性配置。

属性名类型
说明
可选值默认值
visibleboolean是否显示气泡栏-false
zIndexnumber气泡栏的层级-5

菜单组件的浮层属性配置。

属性名类型
说明
可选值默认值
arrowboolean浮层是否显示三角形-true
zIndexnumber浮层层级-10

菜单组件图片属性配置。

属性名类型
说明
可选值默认值
customUploadfunction自定义本地图片上传的方法,该方法返回一个字符串值,表示上传后的图片文件地址,回调参数为 File 文件,如果不设置该方法,图片默认以 base64 字符串的形式插入编辑器中(file) => {}-

Events

组件的暴露事件。

事件名类型参数
说明
successfunctionvalue富文本编辑器失去焦点后触发的事件,得到编辑器内容

Exposes

组件的暴露方法。

方法名类型参数
说明
handleBlurfunction-富文本编辑器失去焦点后触发