123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <template>
- <view class="graceActionSheet" @tap.stop="closeByShade" @touchmove.stop.prevent="stopFun"
- :style="{backgroundColor:background, zIndex:zIndex, width:realShow ? '750rpx' : '0rpx'}">
- <view :class="['graceActionSheetBody', isIpx ? 'grace-ipx-bottom' : '']"
- :style="{
- width:realShow?width:'0rpx',left:left,
- borderTopLeftRadius:borderRadius,
- borderTopRightRadius:borderRadius,
- zIndex:zIndex+1}"
- @tap.stop="stopFun">
- <view class="graceActionSheetTitle" :style="{color:titleColor}">{{title}}</view>
- <scroll-view scroll-y :style="{height:height}">
- <view class="graceActionSheetList"
- v-for="(item, index) in items" :key="index"
- @tap.stop="selected" :data-index="index"
- :style="{
- color:listColor,
- lineHeight:listLineHeight,
- fontSize:listFontSize}">{{item}}</view>
- </scroll-view>
- <view class="graceActionSheetList" :style="{border:'none', color:cancelBtnColor}" v-if="isCancelBtn" @tap.stop="cancel">{{cancelBtnName}}</view>
- </view>
- </view>
- </template>
- <script>
- export default {
- props: {
- width:{type:String,default:'720rpx'},
- height:{type:String,default:'500rpx'},
- left:{type:String,default:'15rpx'},
- background:{type : String,default : 'rgba(0, 0, 0, 0.3)'},
- borderRadius : {type : String,default : '10rpx'},
- zIndex:{type : Number,default : 99},
- title:{type:String,default:''},
- titleColor:{type:String, default:'#323232'},
- items:{type:Array, default:function(){return [];}},
- listColor:{type:String, default:'#3688FF'},
- listLineHeight:{type:String, default:'100rpx'},
- listFontSize:{type:String, default:'30rpx'},
- isCancelBtn:{type:Boolean, default:true},
- cancelBtnName:{type:String,default:'取消'},
- cancelBtnColor:{type:String, default:'#999999'}
- },
- data() {
- return {
- realShow : false,
- isIpx:false
- }
- },
- created : function(){
- // #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:{
- cancel:function(){
- this.realShow = false;
- this.$emit('cancel')
- },
- closeByShade: function(){this.cancel();},
- stopFun : function(){},
- selected:function (e) {
- this.$emit('selected', e.currentTarget.dataset.index);
- this.close();
- },
- close:function(){this.realShow = false;},
- show:function(){this.realShow = true;}
- }
- }
- </script>
- <style scoped>
- .graceActionSheet{position:fixed; width:100%; height:100%; left:0; top:0;}
- .graceActionSheetBody{background:#FFFFFF; position:absolute; bottom:0; left:0; overflow:hidden;}
- .graceActionSheetTitle{text-align:center; font-size:26rpx; line-height:120rpx; height:120rpx; font-weight:bold; border-bottom:1px solid #F8F8F8;}
- .grace-ipx-bottom{padding-bottom:50rpx !important;}
- .graceActionSheetList{line-height:120rpx; font-weight:600; overflow:hidden; text-align:center; margin:0 30rpx; border-bottom:1px solid #F8F8F8;}
- </style>
|