Vue.component('my-wx-upload', {
template: `
<mu-grid-list :cols="3" :cellHeight="90">
<mu-grid-tile titleBarClass v-for="img, index in readyUploadImages" :key="index">
<img :src="img" @click="preview(img)"/>
<div slot="action">
<i @click="remove(index)" class="iconfont icondelete" style="color: white;font-size: 2em;"></i>
</div>
</mu-grid-tile>
<mu-grid-tile v-show="uploadIsFull" hideTitleBarClass>
<img @click="add" imgAdd
src="/assets/public/wx/cms/img/add.jpg"/>
</mu-grid-tile>
</mu-grid-list>
`,
props: {
imgList: {type: Array},
chooseImage: {type: Number, default: 9},
},
data() {
return {
readyUploadImages: []
}
},
mounted() {
this.readyUploadImages = this.imgList
},
methods: {
remove(index) {
this.readyUploadImages.splice(index, 1)
},
add() {
wx.chooseImage({
count: this.oddchooseImageCount, // 最多可以选择的图片张数,默认9
sizeType: ['original'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: res => {
this.readyUploadImages = this.readyUploadImages.concat(res.localIds);
// myUpImageBlock
},
fail: function () {
// fail
},
complete: function () {
// complete
}
})
},
preview(img) {
wx.previewImage({
current: img, // 当前显示图片的http链接
urls: this.readyUploadImages // 需要预览的图片http链接列表
});
}
},
computed: {
oddchooseImageCount() {
return this.chooseImage - this.readyUploadImages.length;
},
uploadIsFull() {
return this.readyUploadImages.length !== this.chooseImage
}
},
watch: {
readyUploadImages(val) {
this.$emit('update:imgList', val)
}
}
});

调用方法

<my-wx-upload :img-list.sync="传入一个数组"></my-wx-upload>

上传方法

WxUploadImage(imgList) {
return new Promise((resolve, reject) => {
if (imgList && imgList instanceof Array && imgList.length > 0) {
let promiseList = [];
for (let i = 0; i < imgList.length; i++) {
promiseList[i] = new Promise((resolve, reject) => {
wx.uploadImage({
localId: imgList[i],
success: res => {
resolve(res.serverId);
},
fail: error => {
reject(error);
}
})
});
}
Promise.all(promiseList)
.then(result => {
resolve(result);
})
.then(error => {
reject(error);
})
} else {
reject('传参有误,请传数组格式');
}
})
}

  调用方法

 this.WxUploadImage(this.imageList).then(res => {

                });

基于 muse-ui 封装一个微信公众号上传插件 实现多图上传的更多相关文章

  1. 在微信框架模块中,基于Vue&Element前端的微信公众号和企业微信的用户绑定

    在一个和微信相关的业务管理系统,我们有时候需要和用户的微信账号信息进行绑定,如对公众号.企业微信等账号绑定特定的系统用户,可以进行扫码登录.微信信息发送等操作,用户的绑定主要就是记录公众号用户的ope ...

  2. 从Python爬虫到SAE云和微信公众号:二、新浪SAE上搭建微信服务

    目的:用PHP在SAE上搭建一个微信公众号的服务器. 1.申请一个SAE云账号 SAE申请地址:http://sae.sina.com.cn/  可以使用微博账号登陆,SAE是新浪的云服务,时间也比较 ...

  3. 基于IdentityServer的系统对接微信公众号

    业务需求 公司有两个业务系统,A和B,AB用户之间属于多对一的关系,数据库里面也就是两张表,A表有个外键指向B.现在需要实现以下几个功能. A用户扫描B的二维码,填写相关的注册信息,注册完成之后自动属 ...

  4. 用iframe嵌入了一个微信公众号平台文章的URL

    JS: $.ajaxPrefilter( function (options) { if (options.crossDomain && jQuery.support.cors) { ...

  5. 用laravel搭一个微信公众号后台

    我使用的是laravel5.2, 早期版本可能不适合下面的方法. 在routes.php写下接收微信服务器post请求的路径: Route::post('wechatmp', 'WechatContr ...

  6. PHP 微信公众号真正正确的客服头像上传

    首先我们来看官方文档 这TM的搞笑呢 什么破玩意儿! 需要条件 1 需要有一个客服的账号 (废话) 2 一致jpg格式的图片(扯蛋) 完整流程 1 获取access_token 2获取账号 3 $ur ...

  7. 5-网页,网站,微信公众号基础入门(配置网站--PHP配置上数据库)

    https://www.cnblogs.com/yangfengwu/p/11037653.html php和数据库打交道,这样整个网页就完美了,有了数据存储,交互,动态网页才完美 首先修改下php. ...

  8. 使用NW.js封装微信公众号菜单编辑器为桌面应用

    开发微信公众号的朋友都会遇到一个常见的需求就是修改自定义菜单,如果每个人都去开发这个不经常使用的功能确实有点浪费时间.前段时间在github上找到一个仿企业号的菜单编辑界面,结合微信的C# SDK开发 ...

  9. ABP入门系列(15)——创建微信公众号模块

    ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 现在的互联网已不在仅仅局限于网页应用,IOS.Android.平板.智能家居等平台正如 ...

随机推荐

  1. AngularJs页面跳转

    同一页面之间的跳转: $state.go('station.booking'); 打开新页面的跳转方式: var url = $state.href("knowledge.questiond ...

  2. linux shell 脚本 历史文件清理脚本,按天,按月,清理前N天的历史文件,删除指定大小历史文件,历史文件归档清理

    不知道大家那有没有要清理的这个事情.需要清理目录历史文件.可能后续也会有很多其他地方需要清理历史文件,可能会用到. 我这两天空闲写了个脚本,清理比较方便,有要进行清理的大量历史文件的话可以用. 脚本用 ...

  3. 3 - EventLoop和线程模型-事件循环

    a). EventLoopGroup为每个新创建的channel分配一个EventLoop,多个channel对应一个EventLoop. b). 一个EventLoop由一个不变的thread驱动, ...

  4. 修改response,报错Cannot call getWriter(), getOutputStream() already called

    往response里面改数据,然后系统报这个错 此时直接return null即可解决 但是,要想返回相应的页面呢? 可以直接在response里设置返回的页面

  5. <ganglia+nagios>rhel6.5

    由于linux下的office和win下有所区别,我只能把linux下的.dot文件打包成pdf,粘贴发送标出来,但有些图片还是没办法发表,要是有朋友感兴趣的话,可加我qq 215687833具体的文 ...

  6. js 和C# ashx之间数组参数传递问题

    js在进行ajax提交时,如果提交的参数是数组,js无法直接进行提交,及时提交上去,解析也是比较麻烦 ajax在提交数组时,需要设置参数:  traditional: true,  //参数作为数组传 ...

  7. PIC IDE编译器变量问题

    1.用const关键字是不能把变量定义到ROM区域的,在IDE编译器里要在变量的定义前面加入rom关键字.例如: rom char tmp[257]={0};const rom char tmp[25 ...

  8. WPF学习二:TextBlock和Label的区别

    TextBlock和Label都是用来显示少量数据的.好多文章对Label存在的描述都是它允许使用"快速获取"."快速获取"就是允许你用Alt加上其它的按键快速 ...

  9. 卸载VS2013 2015

    我有两个VS,特别讨厌,每当使用window程序删除时候,就出现 停止工作! 然后从知乎上发现了这个 https://github.com/Microsoft/VisualStudioUninstal ...

  10. Openfire+spark在linux上搭建内部聊天系统

    一.    实验环境 Ubuntu server14.04 openfire:http://www.igniterealtime.org/downloads/index.jsp spark:http: ...