<!-- 自定义卡片红包封面 --> <!-- todo:目前只有自定义奖品类型,货币类型待添加 --> <template> <!-- 改版之后的卡片 --> <div class="not-open-custom-card custom-card"> <img class="customImg" v-if="posterType === 2 && !!customPosterInstalled" :src="customPosterInstalled" /> <div class="common-top" v-else> <img class="cover" v-if="isLottaryCpd" :src="require('../static/svg/img-custom-lottary-bg.svg')" /> <img class="cover" v-else :src="require('../static/svg/img-custom-common-bg.svg')" /> <img class="gift" :src="require('../static/svg/icon-gift.gif')" /> <div class="prize"> <font-zoom width="340"> <img class="icon" :src="require('../static/svg/icon-gift-inline.svg')" /> <span class="name" id="custom-name"> {{ customizedReward }} <span class="total">X{{ totalCount }}</span> </span> </font-zoom> </div> </div> <!-- 底部公共模块 --> <div class="common-bottom" v-if="showBottomInfo"> <div class="theme"> <img v-if="isLottaryCpd" class="theme-icon" :src="require('../static/svg/icon-last-time.svg')" /> <span v-if="isLottaryCpd" class="theme-time">{{ validity || '00:00:00' }}</span> <span class="theme-info">{{ isLottaryCpd ? 'Left' : 'Instant Giveaway' }}</span> </div> <div class="winner-info"> <font-zoom width="340"> <span class="count">{{ totalCount }}Winners</span> <span>to Share </span> <span class="prize-name">{{ isMoneyRewardCpd ? amountValue + ' ' + tokenSymbol : customizedReward }}</span> </font-zoom> </div> </div> </div> </template> <script> import FontZoom from './FontZoom.vue'; import { RewardType, PlayType } from '../types'; export default { name: 'CustomCardCover', props: { totalCount: { type: Number, default: 0, }, amountValue: { type: Number, default: 0, }, tokenSymbol: { type: String, default: '', }, playType: { type: Number, default: 1, }, validityDuration: { type: String, default: '', }, userInfo: { type: Object, default: () => {}, }, rewardType: { type: Number, default: 1, }, customizedReward: { type: String, default: '', }, validity: { type: String, default: '', }, showBottomInfo: { type: Boolean, default: true, }, customPosterInstalled: { type: String, default: '', }, posterType: { type: Number, default: 1, }, }, data() { return { amount_font_size: 22, }; }, computed: { isMoneyRewardCpd() { return this.rewardType === RewardType.money; }, isLottaryCpd() { return this.playType === PlayType.lottery; }, }, mounted() { this.setFontSize(); }, methods: { setFontSize() { let lendom = document.querySelector('#custom-name'); if (lendom) { let lenstr = lendom.innerText.length; let num = parseInt(450 / lenstr); this.amount_font_size = num < 22 ? num : 22; } }, }, components: { FontZoom }, }; </script> <style scoped lang="scss"> .not-open-custom-card { width: 100%; height: 100%; position: relative; border-radius: 16px; filter: drop-shadow(0px 2px 20px rgba(0, 0, 0, 0.1)); .customImg { width: 100%; min-height: 373px; } .common-top { position: relative; } .money-area { width: 100%; position: absolute; top: 65px; .txt { font-weight: 800; font-size: 16px; text-align: center; letter-spacing: 0.3px; color: #ffffff; } .coin { text-align: center; width: 100%; padding: 6px 0; margin: 0 auto; display: flex; align-items: center; justify-content: center; img { width: 46px; height: 46px; border-radius: 50%; border: 3px solid #ffffff; } span { margin-left: 15px; font-weight: 800; font-size: 60px; line-height: 76px; color: #ffffff; } } .people { font-weight: 800; font-size: 13px; line-height: 16px; letter-spacing: 0.05em; color: #ffffff; display: flex; align-items: center; justify-content: center; } .time-area { display: flex; justify-content: center; align-items: center; width: 100%; height: 46px; background: rgba(0, 0, 0, 0.15); color: #ffcc4d; font-weight: 900; font-size: 26px; margin-top: -10px; .icon-clock { width: 26px; height: 26px; margin-right: 10px; } } } .title { position: absolute; top: 15px; left: 15px; z-index: 3; width: 100%; display: flex; align-items: center; img { width: 24px; height: 24px; border: 2px solid #fff; border-radius: 50%; } span { margin-left: 10px; font-weight: 600; font-size: 16px; letter-spacing: 0.3px; color: #fff; } } // .txt { // width: 100%; // position: absolute; // font-style: normal; // font-weight: 700; // font-size: 42px; // line-height: 50px; // text-align: center; // color: #FFF2D3; // top: 90px; // z-index: 3; // } img { width: 100%; } .cover { border-radius: 16px; } .up { position: absolute; top: 0; // box-shadow: 0px 4px 44px rgba(0, 0, 0, 0.1); z-index: 1; } .down { position: absolute; top: 253px; } .open { width: 335px; height: 50px; cursor: pointer; position: absolute; bottom: 28px; left: 50%; margin-left: -167.5px; z-index: 2; } .open-gif { width: 200px; height: 200px; text-align: center; position: absolute; bottom: 90px; left: 50%; margin-left: -100px; z-index: 3; } } .custom-card { position: relative; background: #111214; width: 100%; position: relative; border-radius: 10px; filter: drop-shadow(0px 2px 20px rgba(0, 0, 0, 0.1)); .cover { width: 100%; border-radius: 10px 10px 0 0; } .gift { width: 210px; position: absolute; left: 50%; top: 83px; transform: translateX(-50%); } .prize { width: 100%; position: absolute; top: 76%; left: 0; height: 47px; display: flex; flex-direction: row; justify-content: center; font-style: normal; font-weight: 800; font-size: 22px; line-height: 47px; letter-spacing: 0.3px; .icon { width: 24px; } .name { padding: 0 7px; color: #fff; } .total { color: #f5c03f; } } .common-bottom { width: 100%; height: 62px; background: #111214; border-radius: 0 0 10px 10px; padding: 10px 16px; font-weight: 500; font-size: 12px; line-height: 14px; letter-spacing: 0.3px; color: #838383; line-height: 20px; .theme { display: flex; height: 20px; align-items: center; justify-content: flex-start; &-icon { width: 12px; } &-time { margin: 0 4px; color: #1d9bf0; } } .winner-info { display: flex; height: 20px; align-items: center; justify-content: flex-start; margin-bottom: 13px; .count { color: #1d9bf0; margin-right: 4px; } .prize-name { color: #1d9bf0; margin-left: 4px; } } .open-btn { width: 100%; height: 45px; background: linear-gradient(180deg, #4ab6ff 0%, #1d9bf0 100%, #1d9bf0 100%); border: 1.5px solid rgba(255, 255, 255, 0.15); border-radius: 52px; line-height: 45px; text-align: center; cursor: pointer; font-weight: 800; font-size: 16px; color: #ffffff; } } } </style>