forked from angelo/web-retail-h5
185 lines
4.8 KiB
Vue
185 lines
4.8 KiB
Vue
|
|
<template>
|
|
<view>
|
|
<backIcon></backIcon>
|
|
<view class="shareImg" @click="show = true">
|
|
<u-icon name="more-dot-fill" size="24" color="#fff">
|
|
</u-icon>
|
|
</view>
|
|
<view class="contain" v-if="specialArea == 7" id="myImage">
|
|
<img class="bgPic" src="@/static/images/shareBg.jpg" alt="">
|
|
<img class="qrImg" :src="shareImg" alt="">
|
|
<view class="mem">{{ memberCode }}</view>
|
|
<img class="btImg2" src="@/static/images/btnShare.png" @click="show = true" alt="">
|
|
</view>
|
|
<view class="contain1" v-if="specialArea == 21" id="myImage">
|
|
<img class="bgPic" src="@/static/images/hai.jpeg" alt="">
|
|
<img class="qrImg" :src="shareImg" alt="">
|
|
<view class="mem">{{ memberCode }}</view>
|
|
<img class="btImg" src="@/static/images/btnShare.png" @click="show = true" alt="">
|
|
</view>
|
|
<u-action-sheet :actions="list" @select='checkList' :safeAreaInsetBottom="true" @close='closeList' :closeOnClickOverlay="true" :show="show"></u-action-sheet>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import * as api from '@/config/goods'
|
|
import html2canvas from 'html2canvas'
|
|
import backIcon from '@/components/backIcon.vue'
|
|
export default {
|
|
components: {
|
|
backIcon,
|
|
},
|
|
data() {
|
|
return {
|
|
specialArea: '',
|
|
shareImg: '',
|
|
list: [{
|
|
name: '保存图片',
|
|
id: 0,
|
|
},
|
|
{
|
|
name: '取消',
|
|
id: 1,
|
|
},
|
|
],
|
|
memberCode:'',
|
|
show: false,
|
|
}
|
|
},
|
|
onLoad(options) {
|
|
this.specialArea = options.specialArea
|
|
this.memberCode = uni.getStorageSync('User').memberCode
|
|
this.getQr()
|
|
let titLabel = ''
|
|
if (this.specialArea == 7) {
|
|
titLabel = '海粉分享'
|
|
} else {
|
|
titLabel = '免费注册'
|
|
}
|
|
uni.setNavigationBarTitle({
|
|
title: titLabel,
|
|
success: () => {},
|
|
})
|
|
},
|
|
methods: {
|
|
closeList() {
|
|
this.show = false
|
|
},
|
|
checkList(e) {
|
|
if (e.id == 1) {
|
|
this.closeList()
|
|
} else {
|
|
this.saveImage()
|
|
this.closeList()
|
|
}
|
|
},
|
|
getQr() {
|
|
let url
|
|
if (this.specialArea == 7) {
|
|
url = api.fansCode
|
|
} else {
|
|
url = api.shareCode
|
|
}
|
|
url().then((res) => {
|
|
this.shareImg = 'data:image/png;base64,' + res.data.dataStr
|
|
})
|
|
},
|
|
saveImage() {
|
|
const options = {
|
|
backgroundColor: null,
|
|
scale: window.devicePixelRatio,
|
|
dpi: 300
|
|
}
|
|
html2canvas(document.querySelector('#myImage'), options).then(
|
|
(canvas) => {
|
|
let url = canvas.toDataURL('image/png')
|
|
let a = document.createElement('a')
|
|
a.href = url
|
|
a.setAttribute('download', 'sharePost')
|
|
a.click()
|
|
}
|
|
)
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.contain {
|
|
// background: url('@/static/images/shareBg.png') no-repeat;
|
|
// background-size: 100% 100%;
|
|
// background-position: 50% 50%;
|
|
height: 100vh;
|
|
// width: 100%;
|
|
.qrImg {
|
|
width: 320rpx;
|
|
height: 320rpx;
|
|
position: absolute;
|
|
bottom: 18%;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
}
|
|
.mem{
|
|
position: absolute;
|
|
bottom: 15%;
|
|
left: 50%;
|
|
font-size: 18px;
|
|
font-weight: 500;
|
|
transform: translateX(-50%);
|
|
}
|
|
.btImg2{
|
|
width: 300rpx;
|
|
height: 100rpx;
|
|
position: absolute;
|
|
bottom: 9%;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
}
|
|
}
|
|
|
|
.contain1 {
|
|
// background: url('@/static/images/hai.jpeg') no-repeat;
|
|
// background-size: 100% 100%;
|
|
// background-position: 50% 50%;
|
|
height: 100vh;
|
|
// width: 100%;
|
|
.qrImg {
|
|
width: 320rpx;
|
|
height: 320rpx;
|
|
position: absolute;
|
|
bottom: 35%;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
}
|
|
.mem{
|
|
position: absolute;
|
|
bottom: 31%;
|
|
left: 50%;
|
|
font-size: 18px;
|
|
font-weight: 500;
|
|
transform: translateX(-50%);
|
|
}
|
|
.btImg{
|
|
width: 300rpx;
|
|
height: 100rpx;
|
|
position: absolute;
|
|
bottom: 24%;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
}
|
|
}
|
|
|
|
.bgPic {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.shareImg {
|
|
position: fixed;
|
|
margin: 14rpx 24rpx;
|
|
z-index: 9999;
|
|
right: 20rpx;
|
|
top: 5rpx;
|
|
}
|
|
</style> |