You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
3.8 KiB
183 lines
3.8 KiB
|
4 years ago
|
<template>
|
||
|
|
<view>
|
||
|
|
<u-navbar
|
||
|
|
title="弹窗"
|
||
|
|
@leftClick="navigateBack"
|
||
|
|
safeAreaInsetTop
|
||
|
|
fixed
|
||
|
|
placeholder
|
||
|
|
></u-navbar>
|
||
|
|
<u-gap
|
||
|
|
height="20"
|
||
|
|
bgColor="#fff"
|
||
|
|
></u-gap>
|
||
|
|
<u-cell-group>
|
||
|
|
<u-cell
|
||
|
|
:titleStyle="{fontWeight: 500}"
|
||
|
|
@click="openPopup(item.popupData)"
|
||
|
|
:title="item.title"
|
||
|
|
v-for="(item, index) in list"
|
||
|
|
:key="index"
|
||
|
|
isLink
|
||
|
|
>
|
||
|
|
<image
|
||
|
|
slot="icon"
|
||
|
|
class="u-cell-icon"
|
||
|
|
:src="item.iconUrl"
|
||
|
|
mode="widthFix"
|
||
|
|
></image>
|
||
|
|
</u-cell>
|
||
|
|
</u-cell-group>
|
||
|
|
<u-popup
|
||
|
|
:safeAreaInsetBottom="true"
|
||
|
|
:safeAreaInsetTop="true"
|
||
|
|
:mode="popupData.mode"
|
||
|
|
:show="show"
|
||
|
|
:round="popupData.round"
|
||
|
|
:overlay="popupData.overlay"
|
||
|
|
:borderRadius="popupData.borderRadius"
|
||
|
|
:closeable="popupData.closeable"
|
||
|
|
:closeOnClickOverlay="popupData.closeOnClickOverlay"
|
||
|
|
@close="close"
|
||
|
|
@open="open"
|
||
|
|
>
|
||
|
|
<view
|
||
|
|
class="u-popup-slot"
|
||
|
|
:style="{
|
||
|
|
width: ['bottom', 'top'].includes(popupData.mode) ? '750rpx' : '200px',
|
||
|
|
marginTop: ['left', 'right'].includes(popupData.mode) ? '480rpx' : '0',
|
||
|
|
}"
|
||
|
|
>
|
||
|
|
<u-button
|
||
|
|
type="success"
|
||
|
|
text="点我关闭"
|
||
|
|
customStyle="width: 200rpx"
|
||
|
|
@click="show = !show"
|
||
|
|
></u-button>
|
||
|
|
</view>
|
||
|
|
</u-popup>
|
||
|
|
</view>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script>
|
||
|
|
export default {
|
||
|
|
data() {
|
||
|
|
return {
|
||
|
|
show: false,
|
||
|
|
popupData: {
|
||
|
|
overlay: true,
|
||
|
|
mode: 'bottom',
|
||
|
|
borderRadius: '',
|
||
|
|
closeable: true,
|
||
|
|
closeOnClickOverlay: true
|
||
|
|
},
|
||
|
|
list: [{
|
||
|
|
popupData: {
|
||
|
|
overlay: true,
|
||
|
|
mode: 'top',
|
||
|
|
closeOnClickOverlay: true
|
||
|
|
},
|
||
|
|
title: '顶部弹出',
|
||
|
|
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/modeTop.png'
|
||
|
|
},
|
||
|
|
{
|
||
|
|
popupData: {
|
||
|
|
overlay: true,
|
||
|
|
mode: 'right',
|
||
|
|
closeOnClickOverlay: true
|
||
|
|
},
|
||
|
|
title: '右侧弹出',
|
||
|
|
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/modeRight.png'
|
||
|
|
},
|
||
|
|
{
|
||
|
|
popupData: {
|
||
|
|
overlay: true,
|
||
|
|
mode: 'bottom',
|
||
|
|
closeOnClickOverlay: true
|
||
|
|
},
|
||
|
|
title: '底部弹出',
|
||
|
|
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/modeBottom.png'
|
||
|
|
},
|
||
|
|
{
|
||
|
|
popupData: {
|
||
|
|
overlay: true,
|
||
|
|
mode: 'left',
|
||
|
|
closeOnClickOverlay: true
|
||
|
|
},
|
||
|
|
title: '左侧弹出',
|
||
|
|
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/modeLeft.png'
|
||
|
|
},
|
||
|
|
{
|
||
|
|
popupData: {
|
||
|
|
overlay: true,
|
||
|
|
mode: 'center',
|
||
|
|
round: 10,
|
||
|
|
closeOnClickOverlay: true
|
||
|
|
},
|
||
|
|
title: '居中弹出',
|
||
|
|
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/modeCenter.png'
|
||
|
|
},
|
||
|
|
{
|
||
|
|
popupData: {
|
||
|
|
overlay: true,
|
||
|
|
mode: 'bottom',
|
||
|
|
round: 10,
|
||
|
|
closeOnClickOverlay: true
|
||
|
|
},
|
||
|
|
title: '显示圆角',
|
||
|
|
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/showRadis.png'
|
||
|
|
},
|
||
|
|
{
|
||
|
|
popupData: {
|
||
|
|
overlay: true,
|
||
|
|
mode: 'bottom',
|
||
|
|
closeable: false,
|
||
|
|
closeOnClickOverlay: false
|
||
|
|
},
|
||
|
|
title: '禁止点击遮罩关闭',
|
||
|
|
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/noClose.png'
|
||
|
|
},
|
||
|
|
{
|
||
|
|
popupData: {
|
||
|
|
overlay: true,
|
||
|
|
mode: 'bottom',
|
||
|
|
closeable: true,
|
||
|
|
closeOnClickOverlay: true
|
||
|
|
},
|
||
|
|
title: '显示关闭按钮',
|
||
|
|
iconUrl: 'https://cdn.uviewui.com/uview/demo/popup/showCloseBtn.png'
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
methods: {
|
||
|
|
openPopup(popupData) {
|
||
|
|
this.popupData = popupData
|
||
|
|
uni.$u.sleep().then(() => {
|
||
|
|
this.show = !this.show
|
||
|
|
})
|
||
|
|
},
|
||
|
|
navigateBack() {
|
||
|
|
uni.navigateBack()
|
||
|
|
},
|
||
|
|
open() {
|
||
|
|
// console.log('open');
|
||
|
|
},
|
||
|
|
close() {
|
||
|
|
this.show = false
|
||
|
|
// console.log('close');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<style lang="scss">
|
||
|
|
.u-popup-slot {
|
||
|
|
width: 200px;
|
||
|
|
height: 150px;
|
||
|
|
@include flex;
|
||
|
|
justify-content: center;
|
||
|
|
align-items: center;
|
||
|
|
}
|
||
|
|
</style>
|