Files
faceFamilySource/src/components/PrizeList.vue
2025-09-23 17:16:53 +08:00

203 lines
5.1 KiB
Vue

<template>
<div>
<ModalTransition :show="show">
<div class="prizelist">
<div class="prizelist-wrapper" v-show="prizelist.length > 0">
<div class="prizelist-wrapper-scroll">
<div class="prizelist-item" v-for="item in prizelist" :key="item.id">
<div class="prizelist-cover" :class="'USER_' + item.prize_code"></div>
<div class="prizelist-title">{{ item.prize_name }}</div>
<div class="prizelist-btngroup">
<template v-if="item.coupon_type === 'scene'">
<div class="btn-goto" :class="{ noaddress: item.pushed !== 1 }" v-html="sceneBtnHtml"
@click="handleItemBtn(item.id, $event)">
</div>
</template>
<template v-else="item.coupon_type === 'coupon'">
<div class="btn-goto" v-html="couponBtnHtml"></div>
</template>
</div>
</div>
</div>
</div>
<div class="prizelist-close" @click="$emit('close')"></div>
</div>
</ModalTransition>
</div>
</template>
<script setup>
import { ref, watch } from "vue"
import { isWeixinPlatform, miniJumpToScene, getMiniPageBtnHack } from "../libs/utils"
import ModalTransition from "./ModalTransition.vue";
const props = defineProps({
show: false,
prizelist: {
type: Array,
default: () => []
}
})
const emit = defineEmits(['address', 'close'])
const sceneBtnHtml = ref('')
const couponBtnHtml = ref('')
sceneBtnHtml.value = getMiniPageBtnHack("/pages/unify/unify?orgId=200282401019674482&targetUrl=%2Fpages%2Fretail%2Forder%2Forder-list%3Ftab%3DAll%26topTab%3D1")
couponBtnHtml.value = getMiniPageBtnHack("/pages/unify/unify?orgId=200282401019674482&targetUrl=%2Fpages%2Fcoupon%2Fcoupons-list")
const handleItemBtn = (id, event) => {
const target = event.currentTarget
if (target.classList.contains("noaddress")) {
emit("address", id)
} else {
if (isWeixinPlatform()) {
miniJumpToScene()
} else {
weui.alert("请前往「泸州老窖会员中心」小程序进行查询")
}
}
}
</script>
<style>
.prizelist {
position: relative;
width: 100vw;
height: 131.759259vw;
background-image: url("../assets/images/prizelist-bg.webp");
background-repeat: no-repeat;
background-size: 100%;
display: flex;
align-items: flex-end;
}
.prizelist-wrapper {
width: 100%;
height: 84vw;
overflow: auto;
}
.prizelist-wrapper-scroll {
display: flex;
flex-direction: column;
}
.prizelist-item {
display: flex;
margin-bottom: 4vw;
margin-left: 2.5vw;
padding-left: 3vw;
width: 95.833333vw;
height: 20.648148vw;
flex-direction: row;
justify-content: space-between;
align-items: center;
background-image: url("../assets/images/prizelist-item-bg.webp");
background-repeat: no-repeat;
background-size: 100% 100%;
}
.prizelist-cover {
width: 15vw;
margin-right: 3vw;
height: 15vw;
background-size: 100% 100%;
background-repeat: no-repeat;
}
.prizelist-title {
font-size: 4.444444vw;
flex: 1;
display: flex;
font-weight: 700;
color: #48260a;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 2;
display: -webkit-box;
-webkit-box-orient: vertical;
}
.prizelist-close {
position: absolute;
width: 8.148148vw;
height: 8.148148vw;
right: 5vw;
top: 15vw;
background-image: url("../assets/images/close-btn.webp");
background-repeat: no-repeat;
background-size: 100%;
}
.btn-goto {
margin-right: 4vw;
width: 23.981481vw;
height: 9.074074vw;
background-size: 100% 100%;
background-image: url("../assets/images/btn-goto.webp");
background-repeat: no-repeat;
background-size: 100%;
}
wx-open-launch-weapp{
width: 100%;
height: 100%;
}
.btn-goto wx-open-launch-weapp {
display: block;
}
wx-open-launch-weapp,
.btn-goto.noaddress wx-open-launch-weapp {
display: none;
}
.btn-goto.noaddress {
background-image: url("../assets/images/btn-address.webp");
}
.prizelist-cover.USER_LZ_ZQ_DZJ {
background-image: url("../assets/images/generate/USER_LZ_ZQ_DZJ.webp");
}
.prizelist-cover.USER_HG_42_GPJ_500ML {
background-image: url("../assets/images/USER_HG_42_GPJ_500ML.webp");
}
.prizelist-cover.USER_QLL_MH {
background-image: url("../assets/images/USER_QLL_MH.webp");
}
.prizelist-cover.USER_DZSKSJ {
background-image: url("../assets/images/generate/USER_DZSKSJ.webp");
}
.prizelist-cover.USER_LZ_ZQ_DZJ_LJW {
background-image: url("../assets/images/USER_LZ_ZQ_DZJ_LJW.webp");
}
.prizelist-cover.USER_LZ_XS_SPZ_30ML {
background-image: url("../assets/images/generate/USER_LZ_XS_SPZ_30ML.webp");
}
.prizelist-cover.USER_LZ_DZ_JBGJ {
background-image: url("../assets/images/USER_LZ_DZ_JBGJ.webp");
}
.prizelist-cover.USER_LZ_DZ_JBGJ_LZ_ZQ_DZJ {
background-image: url("../assets/images/generate/USER_LZ_DZ_JBGJ_LZ_ZQ_DZJ.webp");
}
.prizelist-cover.USER_DZCZ {
background-image: url("../assets/images/USER_DZCZ.webp");
}
.prizelist-cover.USER_DZSCZ {
background-image: url("../assets/images/USER_DZSCZ.webp");
}
.prizelist-cover.USER_66_POINTS {
background-image: url("../assets/images/USER_66_POINTS.webp");
}
</style>