vue模块组件

 

var childVue = devices({
       parentVue : this,
       templateId:'#templateDevice',
       reqUrl : '/device/list',
});

 

 

define([
    'vue',
    'request',
    'static/js/base/text!view/components/devices.html',
], function(vue, req, review) {
    return function(options){
        $(options.templateId).html(review);
        var childVue = new vue({
            el : options.templateId,
            data:{
                searchParams : {
                    keyword:'',
                    tagId:'',
                    size:5,
                    page:1
                },
                tagList:'',
                reqList:'',
                reqData:'',
                publishStatus:req.publishStatus,
                checkModels:[],
                checkAll:false,
                checkTotal:false,
                checkLength:0
            },
            methods:{
                //点击
                toggleCheck:function(item){
                    var findIndex = this.checkModels.indexOf(item.id);
                    if(findIndex != -1){
                        this.checkModels.splice(findIndex,1);
                    }else{
                        this.checkModels.push(item.id);
                    }
                },
                checkAllFuc:function(){
                    var _this = this;
                    this.checkAll = !this.checkAll;
                    if(this.checkAll==true){
                        this.checkModels = [];
                        this.reqList.forEach(function(item,index){
                            _this.checkModels.push(item.id);
                        })
                    }else{
                        this.checkModels = [];
                    }
                },
                getReqList:function(page){
                    var _this = this;
                    _this.searchParams.page = page || 1;
                    req.ajaxPost(options.reqUrl,_this.searchParams,function(data){
                        if(data.code == 200){
                            _this.reqList = data.data.pageInfo.list;
                            _this.reqData = data.data.pageInfo;
                            _this.tagList = data.data.tagList;
                            _this.reqList.forEach(function(item,index){
                                item.tagNamesArr = item.tagNames.split(',');
                            })

                            if(_this.checkTotal){
                                _this.checkLength = _this.reqData.total;
                                _this.checkAll = false;
                                _this.checkAllFuc();
                            }else{
                                _this.checkLength = 0;
                            }

                        }else{
                           alert(data.message)
                        }
                    })
                },
                checkTotalFuc:function () {
                    //跨页全选
                    var _this = this;
                    _this.checkTotal = !_this.checkTotal;
                    if(_this.checkTotal){//全部选中
                        _this.checkLength =  _this.reqData.total;
                        _this.checkAll = false;
                    }else{//取消全选
                        _this.checkAll = true;
                        _this.checkLength = _this.checkModels.length;
                    }
                    _this.checkAllFuc();
                },
                //跳转页面
                goToPage:function(page){
                    
                    if(page==0 || page > this.reqData.pages){
                        this.reqData.jumpPage = '';
                        return false;
                    }                                                       
                    this.getReqList(page);
                },
            },
            watch:{
                checkModels:function(){
                    //页内全选
                    if(this.checkModels.length == this.reqList.length ){
                        this.checkAll = true;
                    }else{
                        this.checkAll = false;
                        this.checkTotal = false;
                    }
                    if(!this.checkTotal){
                        this.checkLength = this.checkModels.length;
                    }

                }
            },
            ready:function(){
                this.getReqList();              
            }
        })
        return childVue;
    } 
});

 

posted on 2018-09-21 08:23  vsmart  阅读(275)  评论(0编辑  收藏  举报