基于 muse-ui 封装一个微信公众号上传插件 实现多图上传
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 封装一个微信公众号上传插件 实现多图上传的更多相关文章
- 在微信框架模块中,基于Vue&Element前端的微信公众号和企业微信的用户绑定
在一个和微信相关的业务管理系统,我们有时候需要和用户的微信账号信息进行绑定,如对公众号.企业微信等账号绑定特定的系统用户,可以进行扫码登录.微信信息发送等操作,用户的绑定主要就是记录公众号用户的ope ...
- 从Python爬虫到SAE云和微信公众号:二、新浪SAE上搭建微信服务
目的:用PHP在SAE上搭建一个微信公众号的服务器. 1.申请一个SAE云账号 SAE申请地址:http://sae.sina.com.cn/ 可以使用微博账号登陆,SAE是新浪的云服务,时间也比较 ...
- 基于IdentityServer的系统对接微信公众号
业务需求 公司有两个业务系统,A和B,AB用户之间属于多对一的关系,数据库里面也就是两张表,A表有个外键指向B.现在需要实现以下几个功能. A用户扫描B的二维码,填写相关的注册信息,注册完成之后自动属 ...
- 用iframe嵌入了一个微信公众号平台文章的URL
JS: $.ajaxPrefilter( function (options) { if (options.crossDomain && jQuery.support.cors) { ...
- 用laravel搭一个微信公众号后台
我使用的是laravel5.2, 早期版本可能不适合下面的方法. 在routes.php写下接收微信服务器post请求的路径: Route::post('wechatmp', 'WechatContr ...
- PHP 微信公众号真正正确的客服头像上传
首先我们来看官方文档 这TM的搞笑呢 什么破玩意儿! 需要条件 1 需要有一个客服的账号 (废话) 2 一致jpg格式的图片(扯蛋) 完整流程 1 获取access_token 2获取账号 3 $ur ...
- 5-网页,网站,微信公众号基础入门(配置网站--PHP配置上数据库)
https://www.cnblogs.com/yangfengwu/p/11037653.html php和数据库打交道,这样整个网页就完美了,有了数据存储,交互,动态网页才完美 首先修改下php. ...
- 使用NW.js封装微信公众号菜单编辑器为桌面应用
开发微信公众号的朋友都会遇到一个常见的需求就是修改自定义菜单,如果每个人都去开发这个不经常使用的功能确实有点浪费时间.前段时间在github上找到一个仿企业号的菜单编辑界面,结合微信的C# SDK开发 ...
- ABP入门系列(15)——创建微信公众号模块
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 现在的互联网已不在仅仅局限于网页应用,IOS.Android.平板.智能家居等平台正如 ...
随机推荐
- eclipse对于虚拟内存的溢出处理
第一个配置:-Xms1024m -Xmx2048m 第二个配置: 第二个配置:-XX:MaxPermSize=1024m 第三个配置就是eclipse安装包中的eclipse.ini文件 -Xms51 ...
- oracle数据库的导入导出命令
说明:将以下命令复制到cmd命令行中运行即可,file代表文件名数据导入imp zzbweb/zzbweb@orcl file=e:\zzbweb.dmp fromuser=zzbweb touser ...
- RandomAccesssFileTest
package com.yd.wmsc.util; import java.io.IOException; import java.io.RandomAccessFile; public class ...
- Docker从入门到实战(三)
Docker从入门到实战(三) 一:安装Docker 1. linux系统脚本安装 Docker基于linux容器技术,面向服务器端,Docker只能安装运行在64位计算机上(社区有对32位的支持), ...
- 简单的dp(dp专题)
题目链接:https://vjudge.net/contest/216347#problem/C Alice gets two sequences A and B. A easy problem ...
- scau 8616 汽车拉力比赛
上次我们过了二分图的最佳匹配,现在我们看一道题目,经典的二分图的最佳匹配题目 8616 汽车拉力比赛 时间限制:500MS 内存限制:1000K提交次数:71 通过次数:24 题型: 编 ...
- Washing Plates 贪心
https://www.hackerrank.com/contests/101hack41/challenges/washing-plates 给定n个物品,选这个物品,贡献 + p, 不选的话,贡献 ...
- JAVA多线程面试题目
1,java中有几种方法可以实现一个线程? 答:在Java中实现一个线程有两种方法,第一是实现Runnable接口实现它的run()方法,第二种是继承Thread类,覆盖它的run()方法.这两种方法 ...
- 1.- Netty设计理念-异步和事件驱动
0. 关键点 a). 非阻塞网络调用,异步方法立即返回 b). 选择器(Selector)使得单一线程就可监控很多连接上的事件. <dependency> <groupId>i ...
- Mybatis-Plus使用全解
前言 之前写了<SpringBoot | 第九章:Mybatis-plus的集成和使用>一文,只是简单的使用条件构造器列举了一些通用的CURD操作.本人也想写一篇通用的关于mybatis- ...