forked from angelo/web-retail-h5
265 lines
5.9 KiB
Vue
265 lines
5.9 KiB
Vue
<!--
|
||
* @Descripttion:
|
||
* @version:
|
||
* @Author: 王三华
|
||
* @Date: 2023-05-18 14:42:53
|
||
-->
|
||
<template>
|
||
<view class="main">
|
||
<div id="myImage">
|
||
<view class="bg-card">
|
||
<image class="img" src="../../static/images/card-bg.png"></image>
|
||
<view class="content">
|
||
<view class="logo">
|
||
<image src="../../static/images/logo.png"></image>
|
||
</view>
|
||
|
||
|
||
</view>
|
||
<view class="user-bottom">
|
||
<!-- <view class="user-atatar">
|
||
<image :src="userInfo.headPath"></image>
|
||
</view> -->
|
||
|
||
</view>
|
||
<div class="user-infos">
|
||
<view class="user" style="color: #ffff00;"> {{'会员编号'}}:{{ userInfo.memberCode }}</view>
|
||
<div class="user">{{'姓名'}}:{{ userInfo.memberName }}</div>
|
||
<div class="user">{{'等级'}}:{{ userInfo.pkGradeVal }}</div>
|
||
<div class="user">{{'国家'}}:{{ userInfo.pkCountryVal }}</div>
|
||
</div>
|
||
<div class="code">
|
||
{{'国家编码'}}:{{ userInfo.countryCode }}
|
||
</div>
|
||
|
||
<div class="logo-img" v-if="userInfo.headPath">
|
||
<img :src="userInfo.headPath" />
|
||
|
||
</div>
|
||
</view>
|
||
<view class="bg-card">
|
||
<image class="img" src="../../static/images/card-bg.png"></image>
|
||
<view class="content">
|
||
<view class="logo bh">
|
||
<!-- <image src="../../static/images/logo.png"></image> -->
|
||
{{'全球编号'}}:{{ userInfo.globalCode }}
|
||
</view>
|
||
|
||
|
||
</view>
|
||
<view class="logos">
|
||
<img v-if="userInfos.awardsIcon"
|
||
:src="userInfos.awardsIcon" />
|
||
<view class="award">{{ userInfo.pkAwardsVal }}</view>
|
||
</view>
|
||
<div class="code">
|
||
{{'注册时间'}}:{{ datatime(userInfo.registerTime) }}
|
||
</div>
|
||
<!-- <div class="time">
|
||
{{'注册时间'}}:{{ datatime(userInfo.registerTime) }}
|
||
</div> -->
|
||
</view>
|
||
</div>
|
||
<u-button type="success"
|
||
shape="circle"
|
||
class="btn"
|
||
@click="saveImage"
|
||
>{{'下载图片'}}</u-button>
|
||
<a id="link"></a>
|
||
<view style="height: 20rpx;"></view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import * as api from '@/config/login.js'
|
||
import { setToken } from '@/config/auth.js'
|
||
import store from '@/store'
|
||
import html2canvas from 'html2canvas'
|
||
export default {
|
||
data() {
|
||
return {
|
||
userInfo:'',
|
||
userInfos:'',
|
||
}
|
||
},
|
||
onLoad() {
|
||
this.getInfo()
|
||
this.getCardInfo()
|
||
},
|
||
methods: {
|
||
getCardInfo() {
|
||
api.getCard().then((res)=>{
|
||
this.userInfos = res.data;
|
||
if(res.data.gradeIconStr){
|
||
this.userInfos.gradeIconStr = 'data:image/png;base64,'+res.data.gradeIconStr
|
||
this.userInfos.gradeIconStr.replace(/[\r\n]/g, "")
|
||
}
|
||
if(res.data.awardsIconStr){
|
||
this.userInfos.awardsIconStr = 'data:image/png;base64,' +res.data.awardsIconStr
|
||
this.userInfos.awardsIconStr.replace(/[\r\n]/g, "")
|
||
}
|
||
|
||
})
|
||
},
|
||
datatime(value) {
|
||
var data = new Date(value)
|
||
const month =
|
||
data.getMonth() < 9 ? '0' + (data.getMonth() + 1) : data.getMonth() + 1
|
||
var date = data.getDate() <= 9 ? '0' + data.getDate() : data.getDate()
|
||
let dates = data.getFullYear() + '-' + month + '-' + date
|
||
return dates
|
||
},
|
||
getInfo(){
|
||
api.getInfo().then(res => {
|
||
if (res) {
|
||
this.userInfo = res.data
|
||
}
|
||
}).catch(error => {
|
||
reject(error)
|
||
})
|
||
},
|
||
saveImage() {
|
||
const options = {
|
||
backgroundColor: null, // null或transparent可将canvas背景设置为透明
|
||
}
|
||
html2canvas(document.querySelector('#myImage'), options).then(
|
||
(canvas) => {
|
||
const image = canvas
|
||
.toDataURL('image/png')
|
||
.replace('image/png', 'image/octet-stream')
|
||
const link = document.getElementById('link')
|
||
link.setAttribute('download', '电子会员卡.png')
|
||
link.setAttribute(
|
||
'href',
|
||
canvas
|
||
.toDataURL('image/png')
|
||
.replace('image/png', 'image/octet-stream')
|
||
)
|
||
link.click()
|
||
}
|
||
)
|
||
},
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.user{
|
||
color: #fff;
|
||
font-size: 24rpx;
|
||
margin-bottom: 20rpx;
|
||
}
|
||
.user-infos{
|
||
position: absolute;
|
||
top: 80rpx;
|
||
left: 20rpx;
|
||
}
|
||
.logo-img{
|
||
position: absolute;
|
||
z-index: 1;
|
||
right: 50rpx;
|
||
top: 30rpx;
|
||
img{
|
||
width: 216rpx;
|
||
// height: 276rpx;
|
||
}
|
||
}
|
||
.logos{
|
||
right: 20%;
|
||
top: 10%;
|
||
position: absolute;
|
||
img{
|
||
// margin-top: -95rpx;
|
||
width: 200rpx;
|
||
height: 200rpx;
|
||
}
|
||
.award{
|
||
color: #fff;
|
||
font-size: 24rpx;
|
||
text-align: center;
|
||
}
|
||
}
|
||
.time{
|
||
color: #fff;
|
||
font-size: 20rpx;
|
||
position: absolute;
|
||
bottom: 20rpx;
|
||
right: 20rpx;
|
||
}
|
||
.code{
|
||
color: #fff;
|
||
font-size: 20rpx;
|
||
position: absolute;
|
||
bottom: 20rpx;
|
||
left: 20rpx;
|
||
}
|
||
page{
|
||
background-color: #f2f2f2;
|
||
}
|
||
.user-info{
|
||
margin-left: 20rpx;
|
||
color: #fff;
|
||
font-size: 24rpx;
|
||
}
|
||
.user-bottom{
|
||
position: absolute;
|
||
bottom: 30rpx;
|
||
display: flex;
|
||
left: 30rpx;
|
||
width: 100%;
|
||
}
|
||
.cardNum{
|
||
position: absolute;
|
||
right: 20rpx;
|
||
top: 20rpx;
|
||
font-size: 24rpx;
|
||
color: #fff;
|
||
}
|
||
.logo{
|
||
image{
|
||
width:50rpx;
|
||
height: 35rpx;
|
||
margin:20rpx 0 0 20rpx;
|
||
}
|
||
|
||
}
|
||
.bh{
|
||
color: #fff;
|
||
font-size: 28rpx;
|
||
padding: 20rpx;
|
||
}
|
||
.content{
|
||
position: relative;
|
||
z-index: 1;
|
||
}
|
||
.logo{
|
||
position: absolute;
|
||
}
|
||
.bg-card{
|
||
position: relative;
|
||
width: 690rpx;
|
||
height: 410rpx;
|
||
margin: 30rpx auto;
|
||
.img{
|
||
position: absolute;
|
||
width: 690rpx;
|
||
height: 410rpx;
|
||
}
|
||
}
|
||
.btn{
|
||
background-color: #FB3024;
|
||
border: none;
|
||
height: 92rpx;
|
||
line-height: 92rpx;
|
||
font-size:30rpx;
|
||
margin: 40rpx auto;
|
||
width: 690rpx;
|
||
}
|
||
.user-atatar{
|
||
image{
|
||
width: 80rpx;
|
||
height: 80rpx;
|
||
border-radius: 50%;
|
||
}
|
||
}
|
||
</style> |