弹出遮罩底部不再滑动 店小二我的团队遮罩

Posted suanmei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了弹出遮罩底部不再滑动 店小二我的团队遮罩相关的知识,希望对你有一定的参考价值。

<template>
    <div class="box agent-home-wrapper">
        <!-- <div class="back" @click="back()"> <span class="backbtn"><img src="../../assets/images/index/backbtn.png"  srcset=""></span> 返回</div> -->
        <div class="search">
            <div class="tab" v-show="searchFlag">
                <ul ref="tabul">
                    <li v-for="(item,index) in fansTitle" v-bind:key="index" @click="change(item,index)" :class="number == index ? ‘active‘ : ‘‘">{{item}}</li>
                </ul>
            </div>
            <div class="top">
                <input type="text" maxlength="15" @focus="goto" v-model="formData.nickNameOrPhone" class="iconfont sousuo" name="" :placeholder="icon">
                <input type="button" class="go" @click="grayShowHide()" value="筛选查找">
            </div>
            <!-- <div class="btm" v-show="gray">
                <ul>
                    <li v-for="(item,index) in typeList" v-bind:key="index"><a @click="typeChange(index)" href="javascript:">{{item}}</a></li>
                </ul>
            </div> -->
        </div>
        <div class="topHeight"></div>
        <!-- <div class="banner" v-show="searchFlag">
            <p>粉丝数</p>
            <div>
                <h1>{{fansCount}}</h1>人
            </div>
        </div> -->
        <div class="number">
            <span>总人数 <b>{{selectNum}}</b> <i></i> </span>
            {{titleStr}} 
        </div>
        <div class="cont">
            <ul>
                <template v-for=‘(item,index) in myTeanList‘>
                    <div v-if="item.roleName !== ‘会员‘">
                        <my-team-item :item="item"></my-team-item>
                    </div>
                    <div v-else>
                        <my-team-item-small :item="item"></my-team-item-small>
                    </div>
                </template>
                
            </ul>
        </div>
        <div class="gray" ref="scroll" @click="hide" v-show="gray">
        </div>
        <div class="form" v-show="gray">
            <div v-show="currTitle == 15">
                <p class="title">
                    粉丝状态
                </p>
                <ul class="status">
                    <li v-for="(item,index) in fansStatus" :class="index == formData.active ? ‘selected‘ : ‘‘" @click="staChange(index)" v-bind:key="index">{{item.val}}</li>
                    <!-- <li class="selected">全部</li>
                    <li>潜力</li>
                    <li>有效</li>
                    <li>活跃</li> -->
                </ul>
            </div>
            <p class="title">
                粉丝来源
            </p>
            <ul class="source">
                <li v-for="(item,index) in fansSource" :class="index == formData.generation ? ‘selected‘ : ‘‘" @click="souChange(index)" v-bind:key="index">{{item.val}}</li>
                <!-- <li>团队</li>
                <li>直属</li> -->
            </ul>
            <div v-show="currTitle > 14">
                <p class="title">
                    实际销售佣金
                </p>
                <div class="inputList">
                    <input type="text" v-model="formData.salePrizeTotalStart">
                    <span></span>
                    <input type="text" v-model="formData.salePrizeTotalEnd">
                </div>
                <p class="title">
                    累计预估销售佣金
                </p>
                <div class="inputList">
                    <input type="text" v-model="formData.expectSalePrizeTotalStart">
                    <span></span>
                    <input type="text" v-model="formData.expectSalePrizeTotalEnd">
                </div>
                <p class="title">
                    直属金牌店主
                </p>
                <div class="inputList">
                    <input type="text" v-model="formData.zhishujinpaiStart">
                    <span></span>
                    <input type="text" v-model="formData.zhishujinpaiEnd">
                </div>
                <p class="title">
                    直属有效金牌店主
                </p>
                <div class="inputList">
                    <input type="text" v-model="formData.zhishuyouxiaojinpaiStart">
                    <span></span>
                    <input type="text" v-model="formData.zhishuyouxiaojinpaiEnd">
                </div>
                <p class="title">
                    团队金牌店主
                </p>
                <div class="inputList">
                    <input type="text" v-model="formData.tuanduijinpaiStart">
                    <span></span>
                    <input type="text" v-model="formData.tuanduijinpaiEnd">
                </div>
                <p class="title">
                    团队有效金牌店主
                </p>
                <div class="inputList">
                    <input type="text" v-model="formData.tuanduiyouxiaojinpaiStart">
                    <span></span>
                    <input type="text" v-model="formData.tuanduiyouxiaojinpaiEnd">
                </div>
            </div>

            <div class="btm">
                <ul>
                    <li><img src="../../assets/images/team/reset.png" @click="reset()" alt="" srcset=""></li>
                    <li><img src="../../assets/images/team/confirm.png" @click="confirm()" alt="" srcset=""></li>
                </ul>
            </div>
        </div>
    </div>
</template>
<script>
import { md5 } from vux
import { HttpClient } from ./../../utils/http-client
import api from ./../../utils/api
import util from ./../../utils/util
import MyTeamItem from ../../components/MyTeanItem.vue
import MyTeamItemSmall from ../../components/MyTeanItemSmall.vue
export default {
    data() {
        return {
            icon: "ue72c 输入要搜索的用户昵称",
            gray: false,
            myTeanList: [],
            fansCount: ‘‘,
            pageSize: 10,
            pageOffset: 1,
            totalPage: 0,
            incId: 0,
            sign: 0,
            memberId: 0,
            nickname: ‘‘,
            fansTitle: [],
            currTitle: 17,
            number: 0,
            tmpArr: [],
            roleType: 0,
            // typeList: [
            //     ‘全部‘,
            //     ‘会员‘,
            //     ‘金牌店主‘,
            //     ‘钻石店主‘,
            //     ‘皇冠店主‘
            // ],
            searchFlag: true,
            fansStatus: [
                {
                    key: 0,
                    val: 全部
                },
                {
                    key: 1,
                    val: 活跃
                },
                {
                    key: 2,
                    val: 潜力
                },
                {
                    key: 3,
                    val: 有效
                }
            ],
            fansSource: [
                {
                    key: 0,
                    val: 团队
                },
                {
                    key: 1,
                    val: 直属
                },
            ],
            formData: {
                nickNameOrPhone: ‘‘,
                active: 0,
                generation: 0,
                salePrizeTotalStart: ‘‘,
                salePrizeTotalEnd: ‘‘,
                expectSalePrizeTotalStart: ‘‘,
                expectSalePrizeTotalEnd: ‘‘,
                zhishujinpaiStart: ‘‘,
                zhishujinpaiEnd: ‘‘,
                zhishuyouxiaojinpaiStart: ‘‘,
                zhishuyouxiaojinpaiEnd: ‘‘,
                tuanduijinpaiStart: ‘‘,
                tuanduijinpaiEnd: ‘‘,
                tuanduiyouxiaojinpaiStart: ‘‘,
                tuanduiyouxiaojinpaiEnd: ‘‘
            },
            defaultFormData: {},
            obj: {},
            selectNum: 0,
            titleStr: ‘‘
        }
    },
    components: {
        MyTeamItem,
        MyTeamItemSmall
    },
    watch: {
        currTitle:function(v,oldv) {
            if(v == 17) {
                this.titleStr = "皇冠店主"
            }
            if(v == 16) {
                this.titleStr = "钻石店主"
            }
            if(v == 15) {
                this.titleStr = "金牌店主"
            }
            if(v == 0) {
                this.titleStr = "会员"
            }
        }
    },
    created() {
        this.defaultFormData = JSON.parse(JSON.stringify(this.formData))
        window.addEventListener(scroll,this.scroll,true)
    },
    destroyed () {
        window.removeEventListener(scroll, this.scroll, true)
    },
    mounted() {
        this.currTitle = this.$route.query.roleId
        if(this.currTitle == 17) {
            this.titleStr = "皇冠店主"
        }
        if(this.currTitle == 16) {
            this.titleStr = "钻石店主"
        }
        if(this.currTitle == 15) {
            this.titleStr = "金牌店主"
        }
        if(this.currTitle == 0) {
            this.titleStr = "会员"
        }
        this.formData.generation = this.$route.query.generation


        this.incId = this.$route.query.incId
        this.sign  = this.$route.query.sign
        this.memberId  = this.$route.query.memberId
        this.getTeamNum(this.memberId,this.incId,this.sign)
        // this.getFansDRM(this.currTitle + 1,this.incId,this.pageSize,this.pageOffset,this.sign,this.roleType,this.nickname)
    },
    methods: {
        getTeamNum(memberId,incId,sign) {
            var that = this
            HttpClient.get(api.getTeamNum(memberId,incId,sign)).then((res) => {
                if(res.data.code===0){
                    that.fansTitle = res.data.data
                    // console.log(that.fansTitle,1)
                    // for(var i in that.fansTitle){
                    //     console.log(i)
                    //     that.tmpArr.push(i)
                    // }

                    // that.currTitle = that.currTitle
                    if(that.fansTitle.length == 2){
                        if(this.currTitle == 0) {
                            this.number = 1
                        }
                        if(this.currTitle == 15) {
                            this.number = 0
                        }
                    }
                    if(that.fansTitle.length == 3){
                        if(this.currTitle == 0) {
                            this.number = 2
                        }
                        if(this.currTitle == 15) {
                            this.number = 1
                        }
                        if(this.currTitle == 16) {
                            this.number = 0
                        }
                    }
                    if(that.fansTitle.length == 4){
                        if(this.currTitle == 0) {
                            this.number = 3
                        }
                        if(this.currTitle == 15) {
                            this.number = 2
                        }
                        if(this.currTitle == 16) {
                            this.number = 1
                        }
                        if(this.currTitle == 17) {
                            this.number = 0
                        }
                    }
                    
                    this.getFansDRM()
                }
            })
        },
        //我的团队
        getFansDRM() {
            
            if(this.currTitle == 0) {
                this.obj = {
                    page: this.pageOffset,
                    size: this.pageSize,
                    roleId: this.currTitle,
                    incId: this.incId,
                    teamMemberQuery: this.formData
                }
            }
            if(this.currTitle == 15) {
                this.obj = {
                    page: this.pageOffset,
                    size: this.pageSize,
                    roleId: this.currTitle,
                    incId: this.incId,
                    teamGoldQuery: this.formData
                }
            }
            if(this.currTitle == 16 || this.currTitle == 17) {
                this.obj = {
                    page: this.pageOffset,
                    size: this.pageSize,
                    roleId: this.currTitle,
                    incId: this.incId,
                    teamDiamondsAndCrownQuery: this.formData
                }
            }
            // return new Promise(function(resolve,reject) {
                
            // })
            HttpClient.post(api.queryTeamDetailInfoApplet(),JSON.stringify(this.obj)).then((res) => {
                console.log(res,12)
                if(res.data.code===0){
                    if(res.data.data.pageOffset == 1) {
                        this.myTeanList = res.data.data.datas
                    }else{
                        for (var i = 0; i < res.data.data.datas.length; i++) {
                            this.myTeanList.push(res.data.data.datas[i]);
                        }
                    }
                    
                    // this.myTeanList = res.data.data.datas
                    // this.fansCount = res.data.data.ex.fansCount
                    this.pageOffset = res.data.data.pageOffset + 1  
                    this.totalPage = res.data.data.totalPage
                    this.selectNum = res.data.data.totalRecord
                }
            })
        },
        change: function(item,index) {
            window.scrollTo(0,0)
            this.number = index
            if(item.indexOf(皇冠店主) > -1 ) {
                
                this.currTitle = 17
            }
            if(item.indexOf(钻石店主) > -1 ) {
                this.currTitle = 16
            }
            if(item.indexOf(金牌店主) > -1) {
                this.currTitle = 15
            }
            if(item.indexOf(会员) > -1) {
                this.currTitle = 0
            }
            this.pageOffset = 1
            // this.currTitle = index
            this.myTeanList = []
            this.reset()
            var that = this
            HttpClient.get(api.getTeamNum(that.memberId,that.incId,that.sign)).then((res) => {
                if(res.data.code===0){
                    that.fansTitle = res.data.data
                }
            })
            this.getFansDRM()
        },
        goto: function() {
            // this.searchFlag = false
            // this.pageOffset = 1
            // this.myTeanList = []
            // this.getFansDRM(this.currTitle + 1,this.incId,this.pageSize,this.pageOffset,this.sign,this.roleType,this.nickname)
            this.$router.push({path:/teamlist,query:{currTitle:this.currTitle,sign:this.sign,incId:this.incId}})
        },
        // typeChange: function(index) {
        //     // this.$router.push({path:‘/teamlist‘,query:{roleType:index}})
        //     // this.searchFlag = false
        //     this.gray = false
        //     this.roleType = index
        //     this.pageOffset = 1
        //     this.myTeanList = []
        //     //this.getFansDRM(this.currTitle + 1,this.incId,this.pageSize,this.pageOffset,this.sign,this.roleType,this.nickname)
        // },
        scroll() {
            var that = this;
            var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
            var windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
            var scrollHeight = document.body.scrollHeight;
            console.log(scrollTop+windowHeight,scrollHeight)
            if(scrollTop+windowHeight==scrollHeight){
                if(that.pageOffset <= that.totalPage) {
                    that.getFansDRM();
                }
            }
        },
        staChange(index) {
            this.formData.active = index
        },
        souChange(index) {
            this.formData.generation = index
        },
        back() {
            this.$router.go(-1)
        },
        grayShowHide() {
            this.reset()
            if(this.gray == true) {
                document.body.style.height = unset
                document.body.style[overflow] = auto
                this.gray = false
            }else {
                document.body.style.height = 100vh
                document.body.style[overflow] = hidden
                this.gray = true
            }
        },
        hide() {
            document.body.style.height = unset
            document.body.style[overflow] = auto
            this.gray = false
            // this.formData = JSON.parse(JSON.stringify(this.defaultFormData))
        },
        reset() {
            this.formData = JSON.parse(JSON.stringify(this.defaultFormData))
        },
        confirm() {
            this.pageOffset = 1
            this.hide()
            this.myTeanList = []
            this.formData.salePrizeTotalStart = this.formData.salePrizeTotalStart * 100
            this.formData.salePrizeTotalEnd = this.formData.salePrizeTotalEnd * 100
            this.formData.expectSalePrizeTotalStart = this.formData.expectSalePrizeTotalStart * 100
            this.formData.expectSalePrizeTotalEnd = this.formData.expectSalePrizeTotalEnd * 100
            this.formData.zhishujinpaiStart = this.formData.zhishujinpaiStart * 100
            this.formData.zhishujinpaiEnd = this.formData.zhishujinpaiEnd * 100
            this.formData.zhishuyouxiaojinpaiStart = this.formData.zhishuyouxiaojinpaiStart * 100
            this.formData.zhishuyouxiaojinpaiEnd = this.formData.zhishuyouxiaojinpaiEnd * 100
            this.formData.tuanduijinpaiStart = this.formData.tuanduijinpaiStart * 100
            this.formData.tuanduijinpaiEnd = this.formData.tuanduijinpaiEnd * 100
            this.formData.tuanduiyouxiaojinpaiStart = this.formData.tuanduiyouxiaojinpaiStart * 100
            this.formData.tuanduiyouxiaojinpaiEnd = this.formData.tuanduiyouxiaojinpaiEnd * 100
            if(this.currTitle == 0) {
                this.obj = {
                    page: this.pageOffset,
                    size: this.pageSize,
                    roleId: this.currTitle,
                    incId: this.incId,
                    teamMemberQuery: this.formData
                }
            }
            if(this.currTitle == 15) {
                this.obj = {
                    page: this.pageOffset,
                    size: this.pageSize,
                    roleId: this.currTitle,
                    incId: this.incId,
                    teamGoldQuery: this.formData
                }
            }
            if(this.currTitle == 16 || this.currTitle == 17) {
                this.obj = {
                    page: this.pageOffset,
                    size: this.pageSize,
                    roleId: this.currTitle,
                    incId: this.incId,
                    teamDiamondsAndCrownQuery: this.formData
                }
            }
            // return new Promise(function(resolve,reject) {
                
            // })
            var _this = this
            HttpClient.post(api.queryTeamDetailInfoApplet(),JSON.stringify(this.obj)).then((res) => {
                console.log(res,12)
                if(res.data.code===0){
                    _this.selectNum = res.data.data.totalRecord

                    HttpClient.get(api.getTeamNum(_this.memberId,_this.incId,_this.sign)).then((res) => {
                        
                        if(res.data.code===0){
                            
                            _this.fansTitle = res.data.data
                            if(_this.fansTitle.length == 2){
                                if(_this.currTitle == 0) {
                                    
                                    _this.fansTitle[1] = 会员[+_this.selectNum +]
                                }
                                if(_this.currTitle == 15) {
                                    _this.fansTitle[0] = 金牌店主[+_this.selectNum +]
                                }
                            }
                            if(_this.fansTitle.length == 3){
                                if(_this.currTitle == 0) {
                                    _this.fansTitle[2] = 会员[+_this.selectNum +]
                                }
                                if(_this.currTitle == 15) {
                                    _this.fansTitle[1] = 金牌店主[+_this.selectNum +]
                                }
                                if(_this.currTitle == 16) {
                                    _this.fansTitle[0] = 钻石店主[+_this.selectNum +]
                                }
                            }
                            if(_this.fansTitle.length == 4){
                                if(_this.currTitle == 0) {
                                    _this.fansTitle[3] = 会员[+_this.selectNum +]
                                }
                                if(_this.currTitle == 15) {
                                    console.log(_this.fansTitle,22)
                                    _this.fansTitle[2] = 金牌店主[+_this.selectNum +]
                                }
                                if(_this.currTitle == 16) {
                                    _this.fansTitle[1] = 钻石店主[+_this.selectNum +]
                                }
                                if(_this.currTitle == 17) {
                                    _this.fansTitle[0] = 皇冠店主[+_this.selectNum +]
                                }
                            }
                        }
                    })
                    if(res.data.data.pageOffset == 1) {
                        this.myTeanList = res.data.data.datas
                    }else{
                        for (var i = 0; i < res.data.data.datas.length; i++) {
                            this.myTeanList.push(res.data.data.datas[i]);
                        }
                    }
                    
                    // this.myTeanList = res.data.data.datas
                    // this.fansCount = res.data.data.ex.fansCount
                    this.pageOffset = res.data.data.pageOffset + 1  
                    this.totalPage = res.data.data.totalPage
                }
            })
        }
    }
}
</script>
<style scoped>
.number {
    padding: 0 0.36rem 0.36rem;
    line-height: 1rem;
    font-size: 0.36rem;
}
.number span{
    float: right;
    display: block;
}
.number span i{
    color: #ff4646;
    font-style: normal;
}
.number span b{
    font-weight: normal;
    font-size: .48rem;
    color: #ff4646;
}
.box{
    will-change:auto;
    width: auto;
    -webkit-perspective:none;
    perspective: none;
}
.search{
    /* height: 1.5rem; */
    padding: 0 0.36rem 0.3rem;
    width: auto;
    background: #fff;
    position: fixed;
    left: 0;
    top: 0;
    right: 0;
    z-index: 12;
}
.search .top{
    padding-top: 0.3rem;
}
.search .top::after{
    clear: both;
    content: ‘‘;
    display: block;
}
.search input.sousuo{
    float: left;
    padding: 0 0.6rem;
    width: 7.9rem;
    height: 0.9rem;
    background: #f6f6f6;
    outline: none;
    border: none;
    border-radius: 0.5rem;
}
.search .go{
    background: none;
    outline: none;
    border: none;
    font-size: 0.36rem;
    height: 0.9rem;
    line-height: 0.9rem;
    color: #999;
    float:left;
    padding-left: 0.6rem;
}
.search .btm ul::after{
    clear: both;
    content: ‘‘;
    display: block;
}
.search .btm ul li{
    float: left;
    padding: 0.2rem;
}
.search .btm ul li a{
    font-size: 0.36rem;
    display: block;
    padding: 0.2rem 0.5rem;
    background: #f4f4f4;
    color: #3e3e3e;
}
.topHeight{
    height: 3.3rem;
}
.banner{
    width: 10.53rem;
    height: 3rem;
    text-align: center;
    background: url(‘../../assets/images/team/teambg.png‘) left center no-repeat;
    background-size: cover;
    margin: 0 0.36rem;
}
.banner p{
    padding-top: .4rem;
    font-size: 0.5rem;
}
.banner h1{
    font-size: .8rem;
    display: inline-block;
    padding-right: .2rem;
}
.tab{
    width: 100%;
    height: 1.43rem;
    line-height: 1.43rem;
}
.tab ul{
    margin: 0px;
    display: flex;
    justify-content: space-between;
    flex-wrap: nowrap;
    align-items: center;
}
.tab ul li{
    width: 50%;
    position: relative;
    text-align: center;
    font-size: 0.42rem;
}
.tab ul::after{
    content: ‘‘;
    display: block;
    clear: both;
}
.tab ul li.active::after{
    content: ‘‘;
    display: block;
    width: 100%;
    height: 2px;
    border-radius: 2px;
    background: #ff4646;
    position: absolute;
    left: 0;
    bottom: 0;
}
.tab ul li.active{
    color: #ff4646;
}
.cont{
    padding: 0 0.36rem;
}
.cont .list{
    width: auto;
    padding: 0 0.36rem;
    height: 6.42rem;
    border-radius: 0.2rem;
    margin-bottom: 0.3rem;
}
.cont .list .top{
    height: 2.3rem;
    border-bottom: 1px solid #ececec;
}
.cont .list .btm{
    height: auto;
}

.gray{
    background: rgba(0, 0, 0, 0.7);
    position:fixed;
    height: 100%;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 13;
    overflow-y: scroll;
}
.form{
    position: fixed;
    padding: 0.46rem 0.36rem;
    height: 100%;
    overflow-y:scroll;
    z-index: 14;
    width: 8.8rem;
    top: 0;
    right: 0;
    background: #fff;
}
.form .title{
    height: 1rem;
    line-height: 1rem;
}
.form ul.status {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    align-items: center;
}
.form ul.status li{
    width: 2.55rem;
    height: 1.32rem;
    line-height: 1.32rem;
    margin-bottom: 0.26rem;
    text-align: center;
    border-radius: 0.09rem;
    border: 1px solid #f4f4f4;
    background: #f4f4f4;
    float: left;
}

.form ul.source {
    display: flex;
    justify-content: flex-start;
    flex-wrap: wrap;
    align-items: center;
}
.form ul.source li{
    width: 2.55rem;
    height: 1.32rem;
    line-height: 1.32rem;
    margin-bottom: 0.26rem;
    margin-right: 0.25rem;
    text-align: center;
    border-radius: 0.09rem;
    border: 1px solid #f4f4f4;
    background: #f4f4f4;
    float: left;
}
.form .inputList{
   position: relative; 
}
.form .inputList::after{
    display: block;
    content: ‘‘;
    height: 0;
    clear: both;
}
.form .inputList input{
    display: block;
    float: left;
    width: 3.4rem;
    height: 0.8rem;
    border-radius: 0.4rem;
    background: #f4f4f4;
    color: #ff4646;
    text-align: center;
    border: none;
    outline: none;
}
.form .inputList span{
    display: block;
    float: left;
    width: 0.54rem;
    margin: 0 0.35rem;
    padding-top: 0.4rem;
    border-bottom: 1px #cacaca solid;
}
.form .btm{
    padding-top: 0.4rem;
    width: 5.34rem;
    float: right;
    height: 1.08rem;
}
.form .btm ul li{
    float: left;
}
.form .btm ul li img{
    width: 2.67rem;
    height: 1.08rem;
}
.form .selected{
    position: relative;
    background: #fee7e7 !important;
    color: #ff4646;
    border-color: #ff4646 !important;
}
.form .selected::after{
    display: block;
    content: ‘2713‘;
    line-height: 0.22rem;
    font-size: 0.12rem;
    color: #fff;
    position: absolute;
    right: 0;
    bottom: 0;
    width: 0.33rem;
    height: 0.22rem;
    border-radius: 5px 0 0 0;
    background: #ff4646 !important;
}
</style>
<style lang="less">
@import ‘../../assets/css/index/index.less‘;
</style>

 

 

技术图片

 

以上是关于弹出遮罩底部不再滑动 店小二我的团队遮罩的主要内容,如果未能解决你的问题,请参考以下文章

弹出遮罩层后禁止滚动效果

弹出遮罩层水平垂直居中

JS弹出遮罩层

小程序实现弹出遮罩层模态框

微信扫一扫打开网址弹出遮罩提示用户在外部浏览器中打开

jquery+ajax,与后台交互的过程中,弹出遮罩层,并且加载动画。怎么实现?