123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <template>
- <view class="">
- <view class="pc-container">
- <image :src="imgurl" mode="aspectFill" @longpress="saveImage"></image>
- <canvas canvas-id="mycanvas" style="width: 590rpx;height: 998rpx;backgroundColor: #FFFFFF" v-show="canvasShow"></canvas>
- </view>
- <view class="basecolor sharetext">长按二维码发送给客户即可邀请加入</view>
- <view class="qrimg">
- <tki-qrcode
- ref="qrcode"
- :val="val"
- :icon="icon"
- :size="size"
- :background="background"
- :foreground="foreground"
- :pdground="pdground"
- :lv="lv"
- @result="qrR"
- :onval="onval"
- :loadMake="loadMake"/>
- </view>
- </view>
- </template>
- <script>
- import { mapState } from 'vuex'
- import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue"//tkiQrcode二维码生成插件可在插件市场自行下载
- import { _API_GzhWebInit } from '@/apis/verify.js'
- export default {
- components: {tkiQrcode},
- data() {
- return {
- bgc:'../../static/white.png',
- imgurl:'',
- Path:'',
- canvasShow:true,
- src: '',
- // imp:'../../static/index.html',
- platform:'',
- val: '', // 要生成的二维值 可以跳转一个新界面
- size: 450, // 二维码大小
- background: '#fff', // 背景色
- foreground: '#000000', // 前景色
- pdground: '#000000', // 角标色
- lv: 3, // 二维码容错级别 , 一般不用设置,默认就行
- onval: true, // val值变化时自动重新生成二维码 (一定要注意这个值的设置 刷新二维码使用的)
- loadMake: true, // 组件加载完成后自动生成二维码
- icon:'../../static/avatar.jpg'
- }
- },
- onHide() {
- uni.removeStorageSync('person-card');
- },
- mounted() {
- //如果本地有图片了,直接取,解决一些页面切换canvas没有重画
- // if(uni.getStorageSync('person-card')){
- // // this.canvasShow = false;
- // this.imgurl = uni.getStorageSync('person-card');
- // }else{
- // // this.canvasImage();
- // }
- },
- onLoad() {
- console.log("show")
- _API_GzhWebInit().then(res => {
- this.val=res.url
- })
- },
- methods: {
- qrR(path){
- //获取到的二维码path是base64格式
- uni.showLoading({
- title:'加载中',
- mask:true
- })
- let { nickname, id } = this.userinfo
- let myCanvas = uni.createCanvasContext('mycanvas', this);
- myCanvas.drawImage('../../static/white.png', 0, 0, 375, uni.upx2px(1020));//设置一个纯白色背景图,否则生成的图片背景是透明的
- myCanvas.drawImage('../../static/avatar.jpg',uni.upx2px(250),50, 60,60);
- let fontSizea = 18;
- myCanvas.fillStyle="#333333";
- myCanvas.font = `bold ${fontSizea}px Arial`;//绘制文字
- myCanvas.textAlign ='center'
- myCanvas.fillText(`“${nickname.length > 18 ? nickname.slice(0, 18) + '...' : nickname }”`, uni.upx2px(300), 130)
- myCanvas.fillText('邀请你加入大卫博士',uni.upx2px(300),155);
- //drawImage只能绘制本地图片和base64图片,无法绘制网络图片以及服务端返回的图片
- myCanvas.drawImage(path,uni.upx2px(74),165,uni.upx2px(460), uni.upx2px(460));
- myCanvas.fillStyle="#F76454";
- myCanvas.fillText('长按-识别二维码-填写信息',uni.upx2px(300),uni.upx2px(870));
- //开始绘画,必须调用这一步,才会把之前的一些操作实施
- myCanvas.draw(true,()=>{
- uni.canvasToTempFilePath({
- canvasId: 'mycanvas',
- success: (res) => {
- // 在H5平台下,tempFilePath 为 base64
- this.imgurl = res.tempFilePath;
- // this.canvasShow = false;
- uni.hideLoading();
- uni.setStorageSync('person-card',this.imgurl);
- },
- fail: () => {
- uni.showToast({
- title: '名片加载失败',
- duration: 2000
- });
- }
- });
- });
- },
- },
- computed: {
- ...mapState([
- 'userinfo'
- ])
- }
- }
- </script>
- <style lang="scss">
- image{
- width: 680rpx;
- height: 1000rpx;
- border-radius: 14rpx;
- background-color: #fff;
- }
- .pc-container{
- width: 680rpx;
- height: 1000rpx;
- // height: 1000rpx;
- margin: 0 auto;
- overflow: hidden;
- background-color: #FFFFFF;
- margin-top: 20rpx;
- }
- .sharetext {
- font-size: 80rpx;
- text-align: center;
- margin: 8rpx 0;
- box-sizing: border-box;
- padding: 30rpx 24rpx;
- }
- .qrimg{
- position: fixed;
- top: 50;
- left: 50;
- z-index: -1;
- }
- </style>
|