| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | <template>	<view class="grace-btdialog-shade" v-if="realShow" @tap.stop="closeDialog" @touchmove.stop.prevent="stopFun" 	:style="{backgroundColor:background, zIndex:zIndex}">		<view :class="['dialog', 'gdIn', isIpx ? 'grace-ipx-bottom' : '', isOut ? 'gdOut' : '']" 		:style="{width:width,left:left,borderTopLeftRadius:borderRadius,borderTopRightRadius:borderRadius}" 		@tap.stop="stopFun">			<view><slot name="btns"></slot></view>			<view @tap.stop="stopFun"><slot name="content"></slot></view>		</view>	</view></template><script>export default {	props: {		width:{type:String,default:'750rpx'},		left:{type:String,default:'0rpx'},		show : {type : Boolean,default : false},		background:{type : String,default : 'rgba(0, 0, 0, 0.5)'},		borderRadius : {type : String,default : '0rpx'},		zIndex:{type : Number,default : 99}	},	data() {		return {			realShow:false,			isIpx:false,			isOut : false		}	},	watch:{		show : function (vn, vo) {			if(vn){				this.realShow = vn;			}else{				this.isOut = true;				setTimeout(()=>{this.realShow = false;}, 120);				setTimeout(()=>{this.isOut = false;}, 150);			}		}	},	created : function(){		this.realShow = this.show;		// #ifndef APP-PLUS		try {		    var res = uni.getSystemInfoSync();			res.model = res.model.replace(' ', '');			res.model = res.model.toLowerCase();			if(res.model.indexOf('iphonex') != -1 || res.model.indexOf('iphone11') != -1){				this.isIpx = true;			}		} catch (e){return null;}		// #endif	},	methods:{		closeDialog : function(){			this.$emit('closeDialog');		},		stopFun : function(){}	}}</script><style scoped>@keyframes gdIn{ from {bottom:-1000px; } 100% { bottom: 0px; }}.gdIn {animation:gdIn 200ms ease-in forwards;}@keyframes gdOut{ from {bottom:0px;} 100% { bottom:-1000px; }}.gdOut {animation:gdOut 200ms ease-out forwards;}.grace-btdialog-shade{position:fixed; width:100%; height:100%; left:0; top:0; z-index:9; background:rgba(0, 0, 0, 0.5);}.grace-btdialog-shade .dialog{width:100%; height:auto; background:#FFFFFF; position:absolute; bottom:0; left:0;}.grace-ipx-bottom{padding-bottom:50rpx !important;}</style>
 |