vue-qriously 生成二维码并下载、cliploard复制粘贴
xxx.vue
<template>
<a-modal
class="dialogRecharge"
title="活动链接及二维码"
v-model="visible"
width="520px"
:destroyOnClose="true"
:footer="null"
@cancel="$emit('close')"
>
<a-tabs type="card" v-model="tabKey" @change="getUrl">
<a-tab-pane tab="H5页面" key=""></a-tab-pane>
<a-tab-pane tab="微信小程序" key=""></a-tab-pane>
<a-tab-pane tab="抽奖大屏" key=""></a-tab-pane>
</a-tabs> <div class="codeBox">
<div class="img">
<qriously :id="'mycanvas' + tabKey" :value="dataObj.url" :size="" />
</div>
<a-button class="download" @click="downqriousl('mycanvas' + tabKey)">下载二维码</a-button>
<div class="copyLink">
<a-input-search v-model="dataObj.url" placeholder="51hejia.com....">
<a-button slot="enterButton">复制链接</a-button>
</a-input-search>
<div class="btn" @click="Clip($event, dataObj.url)"></div>
</div>
</div> </a-modal>
</template> <script>
import serviceMarketing from "@/service/marketing.js";
import Clipboard from 'clipboard';
export default {
data() {
return {
// visible: true,
visible: false,
itemData: {},
tabKey: '',
dataObj: {
url: ''
},
};
},
created() {
},
methods: {
Clip (event, text) {
let self = this
const clipboard = new Clipboard(event.target, {
text: () => text
});
clipboard.on('success', () => {
self.$message.success('复制成功')
clipboard.off('error');
clipboard.off('success');
clipboard.destroy();
});
clipboard.on('error', () => {
self.$message.error('复制失败,请刷新试试')
clipboard.off('error')
clipboard.off('success')
clipboard.destroy()
});
clipboard.onClick(event);
},
downqriousl(id){
console.log(id)
const type = 'png'
let canvas = document.getElementById(id).querySelector('canvas');
let imgdata=canvas.toDataURL(type);
//将mime-type改为image/octet-stream,强制让浏览器下载
let fixtype=function(type){
type=type.toLocaleLowerCase().replace(/jpg/i,'jpeg');
let r=type.match(/png|jpeg|bmp|gif/)[];
return 'image/'+r;
};
imgdata=imgdata.replace(fixtype(type),'image/octet-stream');
//将图片保存到本地
let savaFile=function(data,filename)
{
let save_link=document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href=data;
save_link.download=filename;
let event=document.createEvent('MouseEvents');
event.initMouseEvent('click',true,false,window,,,,,,false,false,false,false,,null);
save_link.dispatchEvent(event);
};
let filename=''+new Date().getSeconds()+'.'+type;
//用当前秒是解决重名的问题 不行就换成毫秒
savaFile(imgdata,filename);
},
getUrl () {
let self = this
self.$get(serviceMarketing.lotteryUrl.apiUrl, {
id: this.itemData.id,
type: this.tabKey
},(res => {
if(res.statusCode && res.statusCode == ""){
this.dataObj = res.data
} else {
self.$message.error(res.reason,);
}
}),serviceMarketing.lotteryUrl.domain);
},
modalOpen(itemData) {
console.log(itemData)
this.visible = true;
this.itemData = itemData
this.getUrl()
}
}
};
</script> <style lang="less" scoped>
.codeBox {
text-align: center;
.img{
width: 180px;
height: 180px;
margin: 35px auto 15px;
// border:1px solid red;
background: #f4f4f4;
border-radius: 5px;
canvas {
width: %;
height: %;
}
}
.download {
width: 180px;
margin-bottom: 10px;
}
.copyLink {
margin:35px 20px 15px;
position: relative;
.btn{
width: 90px;
position: absolute;
top: ;
right: ;
bottom: ;
z-index: ;
cursor: pointer;
}
}
}
</style>
https://www.cnblogs.com/ruthless/p/9970133.html
https://segmentfault.com/a/1190000014875645
.
vue-qriously 生成二维码并下载、cliploard复制粘贴的更多相关文章
- vue 中生成二维码之爬坑之路
最近在做vue中项目,有个需求是在你提交信息后把后台返给你的链接生成二维码. 一共使用了两种生成二维码的方法 1.vue-qr 这个是在一进入页面直接生成二维码,具体介绍见文档:https://www ...
- Springboot生成二维码并下载图片png支持打包成zip
pom.xml <!--二维码--> <dependency> <groupId>com.google.zxing</groupId> <arti ...
- 详细QRCode生成二维码和下载实现案例
using System; using System.Collections.Generic; using System.Linq; using System.Web; using ThoughtWo ...
- Vue——前端生成二维码
与后端生成二维码相比,前端生成二维码更具有灵活性,下面就介绍两种前端生成二维码的方式,两种方式相比之下,vue-qr比qrcode多了一个再中间添加logo的功能. 方式一:qrcode npm np ...
- vue中生成二维码
<template> <div id="qrcode" ></div> </template> <script> imp ...
- iOS开发——高级技术&生成二维码
生成二维码 因为项目里需要新增个功能,该功能用到了二维码技术.于是我便查阅了资料,先学习了二维码的生成. 我们使用libqrencode库来生成二维码.下载地址http://download.cs ...
- 链接生成二维码-PHP
原文:http://www.upwqy.com/details/20.html 链接生成二维码 首先下载phpqrcode phpqrcode.zip 我这里使用的是TP5,把下载好的类库 放入到ex ...
- phporjquery生成二维码
一.php生成二维码 下载文章末尾链接中phpcode文件 include "./phpqrcode/qrlib.php"; //QRcode::png('http://www.b ...
- vue2.0生成二维码图片并且下载图片到本地兼容写法
vue生成二维码图片,这里使用的是qrcode.js 这个插件(亲测写法,兼容没有问题) 第一步,下载插件 需要注意,这里下载的是qrcodejs2 cnpm install --save qrcod ...
随机推荐
- Linux crontab命令参数和时间格式说明
crontab 是用来让使用者在固定时间或固定间隔执行程序之用 参数说明 选项 功能 -e 编辑crontab定时任务 -l 查询crontab任务 -r 删除当前用户所有的crontab任务 时间格 ...
- Linux命令——screen
参考:linux 技巧:使用 screen 管理你的远程会话 How to use GNU screen - the terminal multiplexer - linux
- keepalived+nginx+lnmp 网站架构
<网站架构演变技术研究> 项目实施手册 2019年8月2日 第一章: 实验环境确认 4 1.1-1.系统版本 4 1.1-2.内核参数 4 1.1-3.主机网络参数设置 4 1-1-4 ...
- PySpark 的背后原理--在Driver端,通过Py4j实现在Python中调用Java的方法.pyspark.executor 端一个Executor上同时运行多少个Task,就会有多少个对应的pyspark.worker进程。
PySpark 的背后原理 Spark主要是由Scala语言开发,为了方便和其他系统集成而不引入scala相关依赖,部分实现使用Java语言开发,例如External Shuffle Service等 ...
- 我感觉这个书上的微信小程序登陆写得不好
基本功能是OK,但是感觉传的数据太多,不安全,需要改写. App({ d: { hostUrl: 'http://www.test.com/index.php', //请填写您自己的小程序主机URL ...
- 多个线程分别顺序交替打印一种不同字符abcdefg(已实现随便多少个线程打印多少个字符,利用线程池实现多线程)
下面实现多线程顺序打印字符"abcdefg": 实现Runnable接口: /** * @author: rhyme * @date: 2019-08-17 14:39 * @to ...
- 2019年牛客多校第一场 I题Points Division 线段树+DP
题目链接 传送门 题意 给你\(n\)个点,每个点的坐标为\((x_i,y_i)\),有两个权值\(a_i,b_i\). 现在要你将它分成\(\mathbb{A},\mathbb{B}\)两部分,使得 ...
- 微信小程序-数组操作
Page({ data: { list:[{ id:, name:'芒果', count: },{ id:, name:'香蕉', count: }, }] } }) 向前插入数据 //要增加的数组 ...
- 使用js对社会信用代码进行正则验证
注:参考了该博客(https://blog.csdn.net/qq_37142340/article/details/80695187)进行了一些修改,本文验证使用在微信小程序上. 直接贴代码: va ...
- LeetCode 988. Smallest String Starting From Leaf
原题链接在这里:https://leetcode.com/problems/smallest-string-starting-from-leaf/ 题目: Given the root of a bi ...