123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <template>
- <view style="border-radius: 16upx">
- <view class="modal-box" style="padding-right: 16px;padding-left: 16px"
- :class="[isVisibility?'show':'', buttom?'bottom-modal':'' ]" @tap="ClickMaskClose"
- @touchmove.stop.prevent="moveHandleStop">
- <!-- 默认弹窗 -->
- <view class="dialog" v-if="!buttom" @tap.stop="contentClick">
- <view :class="contentClass">
- <slot></slot>
- </view>
- <view class="simple-bar has-bordert" v-if="showConfirmButton == true || showCancelButton == true">
- <view class='action has-mg-0 flex-sub text-green' v-if="showCancelButton == true"
- @tap.stop='handleClose'>{{cancelButtonText}}
- </view>
- <view class='action has-mg-0 flex-sub has-borderl' v-if="showConfirmButton == true"
- @tap.stop='handleConfirm'>{{confirmButtonText}}
- </view>
- </view>
- </view>
- <!-- 底部弹窗 -->
- <view class="dialog" v-if="buttom" @tap.stop="contentClick">
- <view class="simple-bar has-bordert" v-if="showConfirmButton == true || showCancelButton == true">
- <view class='action is-black' v-if="showCancelButton == true" @tap.stop='handleClose'>
- {{cancelButtonText}}
- </view>
- <view class='action is-blue' v-if="showConfirmButton == true" @tap.stop='handleConfirm'>
- {{confirmButtonText}}
- </view>
- </view>
- <view :class="contentClass">
- <slot></slot>
- </view>
- </view>
- </view>
- </view>
- </template>
- <script>
- /**
- * 自定义弹窗内容组件
- * 使用方法:
- * 1.引入组件:import simpleModal from '@/components/simple-pro/customModal.vue';
- * 2.定义:components ,simpleModal
- * 3.页面使用:<simpleModal ref="simpleModal">这里面可以写你的自定义内容哟~</simpleModal>
- * 4.指定方法 this.$refs.simpleModal.func();
- *
- * 自定义方法:
- * 1. alert() ; 支持在方法中传入 object 更改内容 该方法仅弹出一个按钮 (如果传入了object参数 其中的参数值优先级最高)
- * 2. hide();
- */
- export default {
- props: {
- buttom: {
- // 是否底部弹出
- type: Boolean,
- default: false
- },
- contentClass: {
- // 弹窗默认样式
- type: String,
- default: "has-bg-white"
- }
- },
- data() {
- return {
- showConfirmButton: true, // 确认按钮
- showCancelButton: false, // 取消按钮
- confirmButtonText: "确定",// 确定按钮文字
- cancelButtonText: "取消",//取消按钮文字
- isVisibility: false, //是否显示
- };
- },
- methods: {
- __setconfig: function (options) {
- if (options != undefined && (typeof options == "object")) {
- if (options['showConfirmButton'] != undefined) this.showConfirmButton = options['showConfirmButton'];
- if (options['showCancelButton'] != undefined) this.showCancelButton = options['showCancelButton'];
- if (options['confirmButtonText'] != undefined) this.confirmButtonText = options['confirmButtonText'];
- if (options['cancelButtonText'] != undefined) this.cancelButtonText = options['cancelButtonText'];
- if (options['isVisibility'] != undefined) this.isVisibility = options['isVisibility'];
- if (options['contentClass'] != undefined) this.contentClass = options['contentClass'];
- }
- },
- show: function (options) {
- // 传入 object 参数 动态修改
- this.__setconfig(options);
- this.isVisibility = true;
- },
- hide: function () {
- this.isVisibility = false;
- },
- handleClose: function () {
- this.isVisibility = false;
- this.$emit('cancelButton');
- },
- handleConfirm: function () {
- this.$emit('confirmButton');
- },
- ClickMaskClose: function () {
- // 点击背景 or 内容时执行关闭 有坑 点击内容的时候也会关闭,
- this.$emit('maskClose');
- },
- contentClick: function (e) {
- this.$emit('contentClick');
- },
- moveHandleStop: function () {
- }
- }
- }
- </script>
- <style>
- </style>
|