|
@@ -206,7 +206,7 @@
|
|
|
:score="myScore"
|
|
|
@open-cert="openCertImg"
|
|
|
@close="redeemPrizeData = {}, isShowRedeem = false"
|
|
|
- @success="handlePrizeSuccess"
|
|
|
+ @submit-over="handlePrizeSubmitOver"
|
|
|
/>
|
|
|
|
|
|
<div
|
|
@@ -219,6 +219,13 @@
|
|
|
alt=""
|
|
|
draggable="false"
|
|
|
>
|
|
|
+ <a
|
|
|
+ class="btn-download"
|
|
|
+ :href="certImgUrl"
|
|
|
+ download
|
|
|
+ >
|
|
|
+ 下载证书
|
|
|
+ </a>
|
|
|
<button
|
|
|
class="close"
|
|
|
@click="isShowCertImg = false"
|
|
@@ -286,7 +293,7 @@ getShopContact().then((res) => {
|
|
|
redeemRecordContact.value = res.rtf
|
|
|
})
|
|
|
|
|
|
-const handlePrizeSuccess = async() => {
|
|
|
+const handlePrizeSubmitOver = async() => {
|
|
|
try {
|
|
|
pageLoading.value = true
|
|
|
await checkRedeem()
|
|
@@ -342,6 +349,11 @@ function onClickPrizeItem(prizeItem) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ if (prizeItem.stock < 1) {
|
|
|
+ ElMessage.warning('库存不足,无法兑换')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
redeemPrizeData.value = prizeItem
|
|
|
isShowRedeem.value = true
|
|
|
}
|
|
@@ -383,14 +395,9 @@ const certCanvas = ref()
|
|
|
// const $isSafari = inject('$isSafari')
|
|
|
const isShowCertImg = ref(false)
|
|
|
const certImgUrl = ref('')
|
|
|
-
|
|
|
const openCertImg = async(certName) => {
|
|
|
try {
|
|
|
pageLoading.value = true
|
|
|
- // let winRef
|
|
|
- // if ($isSafari) {
|
|
|
- // winRef = window.open('', '_blank')
|
|
|
- // }
|
|
|
if (isRedeemed.value) {
|
|
|
await getRedeem()
|
|
|
} else {
|
|
@@ -402,19 +409,23 @@ const openCertImg = async(certName) => {
|
|
|
await nextTick(async() => {
|
|
|
const canvas = await html2canvas(certCanvas.value, {
|
|
|
width: certCanvas.value.offsetWidth,
|
|
|
- scale: 1
|
|
|
- })
|
|
|
- canvas.toBlob((blob) => {
|
|
|
- if (blob) {
|
|
|
- certImgUrl.value = URL.createObjectURL(blob)
|
|
|
- isShowCertImg.value = true
|
|
|
- // if ($isSafari && winRef) {
|
|
|
- // winRef.location.href = URL.createObjectURL(blob)
|
|
|
- // } else {
|
|
|
- // window.open(URL.createObjectURL(blob))
|
|
|
- // }
|
|
|
- }
|
|
|
+ scale: 1,
|
|
|
+ allowTaint: true,
|
|
|
+ useCORS: true,
|
|
|
})
|
|
|
+ canvas.toBlob(
|
|
|
+ (blob) => {
|
|
|
+ if (blob) {
|
|
|
+ certImgUrl.value = URL.createObjectURL(blob)
|
|
|
+ isShowCertImg.value = true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ 'image/jpeg',
|
|
|
+ 0.95,
|
|
|
+ )
|
|
|
+ // const dataUrl = canvas.toDataURL()
|
|
|
+ // certImgUrl.value = dataUrl
|
|
|
+ // isShowCertImg.value = true
|
|
|
})
|
|
|
} finally {
|
|
|
pageLoading.value = false
|
|
@@ -804,6 +815,16 @@ const getRedeem = async() => {
|
|
|
height: 80%;
|
|
|
object-fit: contain;
|
|
|
}
|
|
|
+ >a.btn-download{
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ bottom: 40px;
|
|
|
+ font-family: Source Han Sans CN, Source Han Sans CN;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 20px;
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
>button.close{
|
|
|
position: absolute;
|
|
|
top: 20px;
|