关于uniapp移动端兼容性强的编辑器插件bgyxedit

uniAPP  去插件市场搜了一下这个编辑器比较简单但是兼容性强,所以就选定了它,感觉怎么说呢我需要的功能不多,只要图文混排



这个编辑器支持文字,图片,视频混排。所以就决定用它了,毕竟用户发东西时候手机排版本来就很鸡肋,所以就选定用它了,感觉功能简单,能看得懂,可以自己去改一下就可以用,上传视频功能我给注释掉了,暂时不用。

调用方法:

<bgyxedit @bgyxchange="getbgyxinfo" :showdone="false" placeholder="添加正文与标签" filename="img"></bgyxedit>

组件给的方法(因为图片上传我自己封装的统一的上传,所以不用他的uploadurl参数了,我需要token才能上传):

<!-- getbgyxinfo(e) 用于接收html数据和原始数据,

showdone控制完成按钮是否显示,

uploadurl设置图片和视频上传地址,

filename设置上传字段名

所有元素支持长按菜单

-->

<bgyxedit @bgyxchange="getbgyxinfo" :showdone="false" placeholder="添加正文与标签" :uploadurl="UPLOAD_IMAGE_URL" filename="img"></bgyxedit>


下面是正文里的代码:

<template>

<view style="align-items: center; width:100%;display: flex;flex-direction: column;border-radius: 8rpx;">

<view style="width: 100%;" v-for="(u,i) in htmlinfo">

<view @longpress="delthisel(i)" v-if="u.type=='text'" style="width: 100%;">

<textarea @confirm="returnthisinfo()" @input="returnthisinfo()" @blur="returnthisinfo()" style="width: 100%; height: 200upx;" :placeholder="placeholder" placeholder-style="color:#686868;" :focus="u.f" :clearable="false" v-model="taskinfodtv[i].value" maxlength="-1"/>

</view>

<view v-if="u.type=='img'" style="width: 100%;">

<image @longpress="delthisel(i)" :src="htmlinfo[i]['value']" style="width:100%;margin: auto;" mode="widthFix"></image>

</view>

<!-- <view v-if="u.type=='video'" style="width: 100%;">

<video @longpress="delthisel(i)" src="/static/55.mp4" style="width: 680rpx;margin: auto;" controls></video>

</view> -->

</view>

<view style="width: 100%;display: flex;justify-content: space-between;align-items: center;margin-top: 30rpx;">

<view style="margin:8rpx 24rpx 0rpx 10rpx;">

<image v-if="showdone" @click="returnthisinfo()" src="https://yunxing.ydyx720.com/statics/wx/static/editor/done.png" style="width: 50rpx;height: 50rpx;" mode="widthFix"></image>

</view>

<view style="display: flex;align-items: center;">

<view style="margin:8rpx 24rpx 0rpx 3rpx;">

<image @click="addvuetype(0)" src="https://yunxing.ydyx720.com/statics/wx/static/editor/wenben.png" style="width: 42rpx;height: 42rpx;" mode="widthFix"></image>

</view>

<view style="margin:8rpx 24rpx 0rpx 3rpx;">

<image @click="addvuetype(1)" src="https://yunxing.ydyx720.com/statics/wx/static/editor/tupian.png" style="width: 50rpx;height: 50rpx;" mode="widthFix"></image>

</view>

<!-- <view style="margin:8rpx 6rpx 0rpx 3rpx;">

<image @click="addvuetype(2)" src="https://yunxing.ydyx720.com/statics/wx/static/editor/shipin.png" style="width: 50rpx;height: 50rpx;" mode="widthFix"></image>

</view> -->

</view>

</view>

</view>

</template>

<script>

import { UploadImg } from '@/utils/index'

export default {

name:'bgyxedit',

props: {

taskinfodtv: {

type: Array,

default() {

return [{type:'text',value:'',f:false}];

}

},

mtype: {

type: Array,

default() {

return ['text','img','video'];

}

},

uploadurl: {

type: String,

default: ''

},

showdone: {

type: Boolean,

default: false

},

filename: {

type: String,

default: 'uploadfile'

},

placeholder:{

type: String,

default: '请输入...'

}

},

data() {

return {

htmlinfo:[{type:'text',value:'',f:false}],

};

},

methods: {

returnthisinfo:function(){

//console.log(this.taskinfodtv)

this.$emit('bgyxchange', this.returninfo());

},

returninfo:function(){

var that = this

var infoarr = that.taskinfodtv

var info = '';

for(var o in infoarr){

var arr = infoarr[o]

if(arr.value){

if(arr.type == 'text'){

info = info + '<p style="margin:5px auto;">'+arr.value+'</p>';

}

if(arr.type == 'img'){

info = info + '<p style="text-align:center;margin:5px auto;"><img style="width:100%;margin:auto;" src="'+arr.value+'"></p>';

}

// if(arr.type == 'video'){

// info = info + '<p style="text-align:center;margin:5px auto;"><video controls="controls" style="width:300px;margin:auto;" src="'+arr.value+'"></video></p>';

// }

}

}

if(info){

info = '<p style="text-align:center;margin:5px auto;">' + info + '</p>'

return {'html':info,'data':infoarr};

}else{

return {'html':'','data':infoarr};

}

},

addvuetype:function(e){

var that = this

if(e == 0){

this.taskinfodtv.push({type:'text',value:'',f:true})

//that.htmlinfo.push({type:'text',value:'',f:true})

}

if(e == 1){

uni.chooseImage({

count:1,

    success: (chooseImageRes) => {

        const tempFilePaths = chooseImageRes.tempFilePaths;

uni.showLoading({

title:'上传中...'

})

new UploadImg(tempFilePaths, {

  complete: function(res) {

//console.log(res);

var upimg = res[0].url;

that.taskinfodtv.push({type:'img',value:upimg});

console.log(that.taskinfodtv);

that.htmlinfo=that.taskinfodtv;

that.$emit('bgyxchange', that.returninfo());

uni.hideLoading();

  }

})


    }

});

}

// if(e == 2){

// uni.chooseVideo({

// count: 1,

// sourceType: ['camera', 'album'],

// success: function (res) {

// var vd = res.tempFilePath;

// uni.showLoading({

// title:'上传中...'

// })

// uni.uploadFile({

//     url: that.uploadurl, //上传后返回文件保存的路径即可

// header: {

//   'X-Access-Token': global.token

// },

//     filePath: vd,

//     name: 'video',

//     success: (uploadFileRes) => {

//         console.log(uploadFileRes.data);

// var video = uploadFileRes.data

// that.taskinfodtv.push({type:'video',value:video})

// that.$emit('bgyxchange', that.returninfo());

// uni.hideLoading()

//     }

// });

// }

// });

// }

},

delthisel:function(i){

var that = this

var arr = this.taskinfodtv

// if(i == 0){

// var list = ['↓下移↓', '删除']

// }

// if(i == arr.length-1){

// var list = ['↑上移↑', '删除']

// }

uni.showActionSheet({

    itemList: ['↑上移↑','↓下移↓', '删除'],

    success: function (res) {

        var k = res.tapIndex

console.log(k)

if(k == 0){

if(i>0){

var ls = arr[i]

arr[i] = arr[i-1]

arr[i-1] = ls

that.taskinfodtv = []

for(var o in arr){

that.taskinfodtv.push(arr[o])

}

that.$emit('bgyxchange', that.returninfo());

console.log(that.taskinfodtv)

}

}

if(k==1){

if(i<(arr.length-1)){

var ls = arr[i]

arr[i] = arr[i+1]

arr[i+1] = ls

that.taskinfodtv = []

for(var o in arr){

that.taskinfodtv.push(arr[o])

}

that.$emit('bgyxchange', that.returninfo());

console.log(that.taskinfodtv)

}

}

if(k==2){

that.taskinfodtv.splice(i,1)

that.$emit('bgyxchange', that.returninfo());

console.log(that.taskinfodtv)

}

    },

    fail: function (res) {

        console.log(res.errMsg);

    }

});

}

}

};

</script>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,755评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,305评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,138评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,791评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,794评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,631评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,362评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,264评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,724评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,900评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,040评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,742评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,364评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,944评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,060评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,247评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,979评论 2 355

推荐阅读更多精彩内容