12 changed files with 385 additions and 155 deletions
After Width: | Height: | Size: 390 KiB |
@ -0,0 +1,3 @@
|
||||
import AppNoviceBenefit from './index.vue' |
||||
|
||||
export { AppNoviceBenefit } |
@ -0,0 +1,103 @@
|
||||
<script lang="ts" setup> |
||||
import { onMounted, ref } from 'vue' |
||||
import { Button } from 'ant-design-vue' |
||||
import { CloseOutlined } from '@ant-design/icons-vue' |
||||
|
||||
// import { useUserStore } from '@/store/moules/userStore/index' |
||||
|
||||
const a = ref(false) |
||||
onMounted(() => { |
||||
|
||||
}) |
||||
// 关闭弹窗 |
||||
function handleClose() { |
||||
a.value = false |
||||
} |
||||
</script> |
||||
|
||||
<template> |
||||
<transition name="modal"> |
||||
<div v-if="a" class="modal-mask"> |
||||
<div class="modal-wrapper"> |
||||
<div class="modal-container"> |
||||
<div class="modal-body"> |
||||
<Button class="btn"> |
||||
领取并前往使用 |
||||
</Button> |
||||
</div> |
||||
</div> |
||||
<div class="close" @click="handleClose"> |
||||
<CloseOutlined /> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</transition> |
||||
</template> |
||||
|
||||
<style scoped lang="scss"> |
||||
.modal-mask { |
||||
position: fixed; |
||||
z-index: 1000; |
||||
top: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
height: 100%; |
||||
background-color: rgba(0, 0, 0, 0.1); |
||||
.close { |
||||
position: absolute; |
||||
top: 40px; |
||||
right: 40px; |
||||
width: 27px; |
||||
height: 27px; |
||||
background-color: rgba(0, 0, 0, 0.2); |
||||
border-radius: 50%; |
||||
line-height: 27px; |
||||
text-align: center; |
||||
color: #fff; |
||||
cursor: pointer; |
||||
} |
||||
.modal-wrapper { |
||||
width: 40vw; |
||||
height: 60vh; |
||||
position: absolute; |
||||
top: 10%; |
||||
left: 50%; |
||||
transform: translateX(-50%); |
||||
background-image: url(@/assets/images/benefit.png); |
||||
background-repeat: no-repeat; |
||||
background-position: center center; |
||||
background-size: contain; |
||||
border-radius: 22px; |
||||
.modal-body { |
||||
.btn { |
||||
height: 38px; |
||||
background: linear-gradient(180deg, #ffa733 0%, #df5413 100%); |
||||
border-radius: 40px; |
||||
font-size: 14px; |
||||
font-family: PingFang-SC, PingFang-SC; |
||||
font-weight: bold; |
||||
color: #ffffff; |
||||
letter-spacing: 2px; |
||||
position: absolute; |
||||
bottom: 60px; |
||||
left: 50%; |
||||
transform: translateX(-50%); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.modal-enter-active, |
||||
.modal-leave-active { |
||||
transition: opacity 0.3s; |
||||
} |
||||
|
||||
.modal-enter-from, |
||||
.modal-leave-to { |
||||
opacity: 0; |
||||
} |
||||
|
||||
.modal-enter-to, |
||||
.modal-leave-from { |
||||
opacity: 1; |
||||
} |
||||
</style> |
Loading…
Reference in new issue