我的ueditor的文件放到public下的static下
ueditor我取的是下面链接的项目里的,因为其他的总是少几个文件,真是愁GitHub - haochuan9421/vue-ueditor-wrap: 🚴Vue + 🚄UEditor + v-model双向绑定🚀
对应的这个得配置,UEDITOR_HOME_URL: '/static/ueditor/' ,
下载vue-ueditor-wrap : npm install vue-ueditor-wrap
文件的引入,具体路径看自己的文件夹
<div class="projBox">
<vue-ueditor-wrap
ref="uEditor"
v-model="mainContent"
:config="myConfig"
@ready="ready"
@beforeInit="addCustomButtom"
></vue-ueditor-wrap>
<el-upload
:action="uploadUrl"
:before-upload="handleBeforeUpload"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
name="file"
:show-file-list="false"
:headers="headers"
style="display: none"
ref="upload"
>
</el-upload>
</div>
利用addCustomButtom 方法增加自定义按钮,this.img是我自己引入的项目里的图片文件,使用新增的按钮的点击方法触发上传图片,避免了ueditor原本复杂的上传图片的配置
methods: {
ready(n) {
this.editorInstance=n
},
addCustomButtom (editorId) {
var that = this
window.UE.registerUI('test-button', (editor, uiName) => {
// 注册按钮执行时的 command 命令,使用命令默认就会带有回退操作
// editor.registerCommand(uiName, {
// execCommand: function () {
// editor.execCommand('inserthtml', `<span>这是一段由自定义按钮添加的文字</span>`)
// }
// })
// 创建一个 button
const btn = new window.UE.ui.Button({
// 按钮的名字
name: uiName,
// 提示
title: '上传图片',
// 需要添加的额外样式,可指定 icon 图标,图标路径参考常见问题 2
cssRules: 'background-image: url('+this.img+') !important;background-size: cover',
// 点击时执行的命令
onclick: function () {
console.log('xxx')
console.log(that.$refs.upload)
that.$refs.upload.$children[0].$refs.input.click();
}
})
// 粘贴后的事件
editor.addListener('afterpaste', function (cmd,html) {
})
// 粘贴前的事件
editor.addListener('beforepaste',(cmd, html)=> {
})
// 因为你是添加 button,所以需要返回这个 button
return btn
})
},
// 上传前校检格式和大小
handleBeforeUpload(file) {
// 校检文件大小
if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize;
if (!isLt) {
this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`);
return false;
}
}
return true;
},
handleUploadSuccess(res, file) {
const that = this
// 创建实例对象
var img = new Image()
// 图片地址
img.src = imgURL
//根据图片大小,超过375则使用固定百分比,适配移动端的显示,做到移动和pc展示一致
img.onload = function(){
if(img.width > 375){
that.editorInstance.execCommand('inserthtml', `<img style="width:98%;" src="`+(process.env.VUE_APP_API_URL + res.enclosureId.enclosureRoute) +`" >`);
}else{
that.editorInstance.execCommand('inserthtml', `<img src="`+(process.env.VUE_APP_API_URL + res.enclosureId.enclosureRoute) +`" >`);
}
};
},
handleUploadError() {
this.$message.error("图片插入失败");
},
},
ueditor的配置可以自行去ueditor的ueditor.config.js文件里配置,也可像我这样页面中配置,
data() {
return {
editorInstance: null,
mainContent: '',
uploadUrl: process.env.VUE_APP_BASE_API + "/system/enclosure/upload",
headers: {
Authorization: "Bearer " + getToken()
},
type: 'url',
fileSize: 5,
img: addimage,
myConfig: {
toolbars: [
[
'anchor', //锚点
'undo', //撤销
'redo', //重做
'bold', //加粗
'indent', //首行缩进
// 'snapscreen', //截图
'italic', //斜体
'underline', //下划线
'strikethrough', //删除线
'subscript', //下标
'fontborder', //字符边框
'superscript', //上标
'formatmatch', //格式刷
'source', //源代码
'blockquote', //引用
'pasteplain', //纯文本粘贴模式
'selectall', //全选
// 'print', //打印
// 'preview', //预览
'horizontal', //分隔线
'removeformat', //清除格式
'time', //时间
'date', //日期
'unlink', //取消链接
'insertrow', //前插入行
'insertcol', //前插入列
'mergeright', //右合并单元格
'mergedown', //下合并单元格
'deleterow', //删除行
'deletecol', //删除列
'splittorows', //拆分成行
'splittocols', //拆分成列
'splittocells', //完全拆分单元格
'deletecaption', //删除表格标题
'inserttitle', //插入标题
'mergecells', //合并多个单元格
'deletetable', //删除表格
'cleardoc', //清空文档
'insertparagraphbeforetable', //"表格前插入行"
'insertcode', //代码语言
'fontfamily', //字体
'fontsize', //字号
'paragraph', //段落格式
// 'simpleupload', //单图上传
// 'insertimage', //多图上传
'edittable', //表格属性
'edittd', //单元格属性
'link', //超链接
// 'emotion', //表情
'spechars', //特殊字符
'searchreplace', //查询替换
// 'map', //Baidu地图
// 'gmap', //Google地图
// 'insertvideo', //视频
'help', //帮助
'justifyleft', //居左对齐
'justifyright', //居右对齐
'justifycenter', //居中对齐
'justifyjustify', //两端对齐
'forecolor', //字体颜色
'backcolor', //背景色
'insertorderedlist', //有序列表
'insertunorderedlist', //无序列表
'fullscreen', //全屏
'directionalityltr', //从左向右输入
'directionalityrtl', //从右向左输入
'rowspacingtop', //段前距
'rowspacingbottom', //段后距
// 'pagebreak', //分页
'insertframe', //插入Iframe
'imagenone', //默认
'imageleft', //左浮动
'imageright', //右浮动
// 'attachment', //附件
'imagecenter', //居中
'wordimage', //图片转存
'lineheight', //行间距
'edittip ', //编辑提示
'customstyle', //自定义标题
'autotypeset', //自动排版
// 'webapp', //百度应用
'touppercase', //字母大写
'tolowercase', //字母小写
// 'background', //背景
'template', //模板
// 'scrawl', //涂鸦
// 'music', //音乐
'inserttable', //插入表格
// 'drafts', // 从草稿箱加载
'charts', // 图表
]
],
enableAutoSave: false,
// 编辑器不自动被内容撑高
autoHeightEnabled: false,
// 初始容器高度
initialFrameHeight: 400,
// 初始容器宽度
initialFrameWidth: '100%',
// 上传文件接口(这个地址是我为了方便各位体验文件上传功能搭建的临时接口,请勿在生产环境使用!!!)
serverUrl: process.env.VUE_APP_BASE_API + "/system/enclosure/upload",
// UEditor 资源文件的存放路径,如果你使用的是 vue-cli 生成的项目,通常不需要设置该选项,vue-ueditor-wrap 会自动处理常见的情况,如果需要特殊配置,参考下方的常见问题2
UEDITOR_HOME_URL: '/static/ueditor/',
uploadUrl: process.env.VUE_APP_BASE_API + "/system/enclosure/upload",
token: 'Bearer ' + getToken(),
}
}
}
到这就可以用了,反正我可以了......
参考文章https://blog.csdn.net/weixin_44872995/article/details/121614349