showModal.vue 1.77 KB
<template>
    <div class="show-modal" v-if="isShow && options">
		<div class="layer-box" @click="hideLayer" @touchmove.stop.prevent>
			<div class="box" @click.stop.prevent>
				<div class="title" v-if="options.title">{{options.title}}</div>
				<div class="content" v-if="options.content">
					<div v-html="options.content"></div>
				</div>
				<div class="buttons-box">
					<div class="btn btn-cancel" @click="hideLayer">取消</div>
					<div class="btn btn-okay" @click="success(options)">允许</div>
				</div>
			</div>
		</div>
    </div>
</template>

<script>
    export default {
        data: function () {
            return {
				isShow: false
            }
        },
        props: ["options"],
		methods: {
			
			/**
			 * 显示提示用户升级层
			 */
			showLayer() {
				
				// 设置浮层显示
				this.$set(this.options, "isShow", true);
			},
			
			/**
			 * 隐藏提示用户升级层
			 */
			hideLayer() {
				
				// 设置浮层隐藏
				this.$set(this.options, "isShow", false);
			},
			
			/**
			 * 点击"确定"回调
			 * @param {object} options [回调参数]
			 */
			success(options) {
				
				// 隐藏层
				this.hideLayer();
				
				if (typeof this.options === "object" && typeof this.options.cb === "function") {
					this.options.cb(options);
				}
			}
		},
		watch: {
			"options.isShow"(newValue, oldValue) {
				if (newValue !== oldValue) {
					this.isShow = newValue;
				}
			}
		},
		mounted() {
			
			this.$nextTick(function() {
				if (this.options !== null && typeof this.options === "object" && this.options.isShow) {
					this.isShow = this.options.isShow;
				}
			});
		}
    }
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style rel="stylesheet/less" lang="less">
    @import './show_modal';
</style>