曹え 5811 发布于:2022-04-17 06:08:55
安装 html2canvas
<template> <div class="page"> <!-- <div class="g-libbtns only" :class="{over:state.timeover}" v-show="state.star != 0" @click="state.showhbtype = true"> --> <div class="g-libbtns only" v-show="state.btnTpye == 1" @click="state.showhbtype = true"> <div class="btn" @click="downloadCodeImg()">加速生成海报</div> </div> <!-- 生成海报 --> <div class="m-popup-poster-mzw-m1" v-show="state.showhbtype"> <div class="black" @click="state.showhbtype = false"></div> <div class="box pic"> <img :src="state.posterImgUrl" > </div> </div> <div class="m-popup-poster-mzw-m2" v-show="state.poster1"> 海报生成中... </div> <div class="m-popup-poster-m5"> <div class="pic2 poster-aside"> <img src="../assets/images/mzwpic/poster-mzw-m3.jpg" > <div class="pic"> <qrcode-vue :value="state.ewmvalue" :size="state.size" level="H" /> </div> </div> </div> </div> </template> <script setup> import {authData} from '../server/index' import {getMyGroup,getGroupData} from '../server/user' import { reactive,onMounted,createApp } from 'vue' import { useRouter } from 'vue-router' import QrcodeVue from 'qrcode.vue' import html2canvas from "html2canvas" // import pic from "src/assets/images/group/icon1.jpg" const state = reactive({ showhbtype:false, adminfo:[ { nickname:'', head_img_url:'../assets/images/group/icon1.jpg', },{ nickname:'', // head_img_url:requrie('@/assets/images/group/icon1.jpg'), head_img_url:'../assets/images/group/icon1.jpg', },{ nickname:'' , head_img_url:'../assets/images/group/icon1.jpg', } ], // 状态 拼团是0,开团是1 star:0, btnTpye:0, // 0 显示2个按钮,1是生存海报 // 结束弹框 true是现实弹框 false隐藏 isover:false, //结束后不可点击按钮 true活动结束 timeover:false, // 生成二维码 ewmvalue:'', peoplenum:3, pid:'', pidq:'', // url获取 posterImgUrl:'', token:'', user:'', poster1:false }) const router = useRouter(); // 路由信息 const urlVal = router.currentRoute.value; let pidq = urlVal.query.pid; state.ewmvalue = 'https://dbpt.shyouhan.com/dp2204/poster/index.html?pid='+state.pid+'&stort=0' // 生成海报图 function downloadCodeImg(){ console.log('aaaa') state.poster1 = true; const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //获取滚动轴滚动的长度 var Mdom = document.querySelector('.poster-aside'); const width = Mdom.offsetWidth; const height = Mdom.offsetHeight; //包裹容器的高度 html2canvas(Mdom,{ width:width, height:height, scrollY: -scrollTop, dpi: window.devicePixelRatio*2, // dpi: 350, scale:1, useCORS:true, }).then(canvas =>{ let imgurl = canvas.toDataURL('image/png'); state.posterImgUrl = imgurl; state.poster1 = false; state.showhbtype = true; // console.log(imgurl); }) } </script> <style scoped> .g-hbpopup{ position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: -999; opacity: 0; } .g-hbpopup .black{ width: 100%; height: 100%; background-color: rgba(0,0,0,.75); } .g-hbpopup .box{ width: 85%; /* width: 70%; */ box-sizing: border-box; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); background-color: #fff; padding: .4rem 0; } .g-hbpopup .box .pics{ padding: 0 .2rem; margin-bottom: .2rem; } .g-hbpopup .box .pic{ width: 100%; /* height: 2.8rem; */ height: 3.8rem; overflow: hidden; margin-bottom: .2rem; } .g-hbpopup .box .pic img{ width: 100%; min-height: 100%; } .g-hbpopup .box .pics .tit{ text-align: center; font-size: .3rem; /* font-size: .6rem; */ font-weight: bold; } .g-hbpopup .box .txts{ padding: .3rem .6rem; background-color: #e8e8e8; overflow: hidden; } .g-hbpopup .box .txts .ewm{ float: right; /* width: 1.36rem; height: 1.36rem; */ width: 2.36rem; height: 2.36rem; margin-left: .25rem; } .g-hbpopup .box .txts .ewm canvas{ width: 100% !important; height: auto !important; } .g-hbpopup .box .txts .ewm img{ width: 100%; height: 100%; } .g-hbpopup .box .txts .txt{ overflow: hidden; font-size: .22rem; } .m-popup-poster-mzw-m1{ position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 999; } .m-popup-poster-mzw-m1 .black{ width: 100%; height: 100%; background-color: rgba(0,0,0,.75); } .m-popup-poster-mzw-m1 .box{ /* width: 5.17rem; height: 6.25rem; */ width: 85%; height: auto; box-sizing: border-box; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); background-color: #fff; } .m-popup-poster-mzw-m1 .pic img{ width: 100%; height: 100%; display: block; } .m-popup-poster-mzw-m2{ width: 100%; height: 100vh; position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 9999; background-color: #000; color: #fff; text-align: center; line-height: 100vh; font-size: 0.3rem; } .m-popup-poster-m5{ position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: -999; opacity: 0; background-color: rgba(0,0,0,.75); } .m-popup-poster-m5 .pic2{ /* width: 5.17rem; height: 6.25rem; */ width: 10.34rem; height: 12.5rem; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); } .m-popup-poster-m5 .pic2 img{ width: 100%; height: 100%; display: block; } .m-popup-poster-m5 .pic{ /* width: 1.36rem; height: 1.36rem; */ width: 2.72rem; height: 2.72rem; position: absolute; /* right: 0.42rem; bottom: 0.66rem; */ right: 0.84rem; bottom: 1.32rem; overflow: hidden; } .m-popup-poster-m5 .pic canvas{ width: 100% !important; height: auto !important; } .m-popup-poster-m5 .pic img{ width: 100%; height: 100%; } </style>
登录后可以留言提问!
微信扫码登录