zoukankan      html  css  js  c++  java
  • #7431 一对N小组滚动事件的优化

        //添加滚动事件
            studentGrid.on('scroll',function(){
                var sT = $(this)[0].scrollTop,
                    sH = $(this)[0].scrollHeight,
                    h =$(this).height();
    
                //滚动到底部了 加载下一页
                if((sT+h)>=sH){
                    pageCurGroupMember(pageCache,curScrollPage+1);
                }
            })
    数组filter方法对数组元素进行过滤
    2018年03月19日 10:12:46
    阅读数:448
    Array.prototype.filter
    对数组中元素进行过滤
    
    /**
     * @method reduce
     * @param {number}   item   当前迭代的数组元素
     * @param {number}   index  当前迭代的数组元素下下标
     * @param {array}    array  原数组
     */
      let arr = [1,2,6,3,4,5];
      let res = arr.filter(function(item,index,array){
          //元素值,元素的索引,原数组。
          return (item>3);
      });
      console.log(res);//[6, 4, 5]
    filter 方法可以将数组中不符合的元素去掉,返回一个新数组。
    
    
    
     
    (function(){
        var hrefSrc = "function/modals/oneOnNGroupStudentModal.html",
            curGroupId = Util.getModalParameter(hrefSrc, 'groupId'),
            blCampusId = Util.getModalParameter(hrefSrc, 'blCampusId'),
            modal = $('#oneOnNGroupStudentModal'),
            studentGrid = modal.find('#studentGrid'),
            chosenStudent = modal.find('#chosenStudent'),
            groupName = modal.find('#groupName'),
            title = modal.find('#title'),
            frm = modal.find('#frm'),
            noChosenStudentTips = modal.find('#noChosenStudentTips').clone(),
            groupInfoForm = modal.find('#groupInfoForm'),
            studyManagerPost = modal.find('#studyManagerPost'),
            saveGroupBlCampusId = modal.find('#blCampusId'),//保存小组的校区
            searchBtn = modal.find('#searchBtn');
        var curChooseListData = [],//已选学员列表
            modGroupName = true,//默认选完学员小组名也变
            userId = Index.currentLoginUser.userId,
            students = Util.getModalParameter(hrefSrc, "data"),
            pageCache = {},
            curScrollPage = 0;
           
        initEvent();
        initData();
    
        //刷新已选学员列表
        function refreshChosenList() {
            chosenStudent.html(template('template-chosenStudent', { items: curChooseListData }));
            if (curChooseListData.length === 0) {
                chosenStudent.html(noChosenStudentTips);
            }
            if (modGroupName) {
                groupName.val(curChooseListData.map(function (item) {
                    return item.name
                }).join('').substring(0,20));
            }
            Util.datepicker(chosenStudent.find('.firstCourseDateInput'),{buttonPaneClass:'noCloseBtn'}); //统一初始化时间选择框
            pageSetUp(chosenStudent);
        }
        //modal列表数据分页处理
        function pageCurGroupMember(pageCache,page){
            var showData = [];
            pageCache = pageCache || [];
            page = page || 1;
            curScrollPage = page ;
            showData = pageCache.filter(function(item,i){
                return (i>=(page-1)*20 && i<page*20)
            });
            var noItemTips = '<div id="noMemberItems" class="normal-gray">暂无数据,请重新查询!</div>';
            if(pageCache.length === 0 &&  page===1){
              studentGrid.html($(noItemTips));
              return;
            }
            var dom = showData.length>0 ?  $(template('template-studentGrid',{ items:showData})):'';
            page===1? studentGrid.html(dom):studentGrid.append(dom);
            if(showData.length === 0) return;
            dom.filter('.item').each(function (i) {
                $(this).data('data', showData[i]);
            })
            //修改的时候选中已改数据
            $(curChooseListData).each(function (i, item) {
                studentGrid.find('div.item[data-id="' + item.id + '"] i.check-ico').addClass('fa-check-circle').removeClass('fa-circle-thin');
            })
            pageSetUp(studentGrid);
        }
        function initEvent() {
    
            //查询学员
            searchBtn.click(function () {
                var params = Util.tranFormVarToJson(frm);
                params.blCampusId = blCampusId;//查询带上参数
                $.get(Api.listStudentsForChoose, params, function (res) {
                    pageCache = res.rows;
                    pageCurGroupMember(pageCache);
                })
            })
    
            //左侧列表选中/取消
            studentGrid.on('click', 'div.item', function () {
                var item = $(this),
                    ico = item.find('i.check-ico'),
                    id = item.attr('data-id'),
                    data = item.data('data');
                if (!data.firstCourseDate) {
                    data.firstCourseDate = DateUtil.getCurrentDate();
                }
                //选中
                if (ico.hasClass('fa-circle-thin')) {
                    ico.addClass('fa-check-circle').removeClass('fa-circle-thin');
                    curChooseListData.push(data);
                    refreshChosenList();
                } else {
                    chosenStudent.find('div.item[data-id="' + id + '"] i').click();
                }
            })
            //添加滚动事件
            studentGrid.on('scroll',function(){
                var sT = $(this)[0].scrollTop,
                    sH = $(this)[0].scrollHeight,
                    h =$(this).height();
    
                //滚动到底部了 加载下一页
                if((sT+h)>=sH){
                    pageCurGroupMember(pageCache,curScrollPage+1);
                }
            })
            //右侧列表删除
            chosenStudent.on('click', 'i', function () {
                if ($(this).hasClass('disabled')) return;
    
                var item = $(this).parents('.item:eq(0)'),
                    id = item.attr('data-id');
    
                //处理数据
                $(curChooseListData).each(function (i, item) {
                    if (item.id == id) {
                        curChooseListData.splice(i, 1);
                    }
                });
                refreshChosenList();
                studentGrid.find('div.item[data-id="' + id + '"] i.check-ico').removeClass('fa-check-circle').addClass('fa-circle-thin');
            })
    
            //小组名接受输入后,modGroupName关闭
            groupName.one('input', function () {
                modGroupName = false;
            })
    
            //保存
            modal.on('click', '.submit', function () {
                //alert(blCampusId);
                var params = {};
    
                if (curGroupId) {
                    params.id = curGroupId;
                } else {
                    params = Util.tranFormVarToJson(groupInfoForm);
                    if (!params) return;
                }
                //过滤之前学员
                var tmpArr = curChooseListData.filter(function (item) {
                    return !item.oriFlag;
                });
                //拼学员id
                params.studentIds = tmpArr.map(function (item) {
                    return item.id;
                }).join(',');
                if (!params.studentIds) {
                    Util.showAlert('请选择学员',true);
                    return false;
                }
                // 首课日期
                var firstCourseDateArray = [];
                $.each(chosenStudent.find('.firstCourseDateInput'), function () {
                   var that = $(this),
                       studentId = that.attr('data-studentId'),
                       firstCourseDate = that.val();
                        firstCourseDateArray.push({
                            studentId: studentId,
                            firstCourseDate: firstCourseDate
                        });
                });
    
                params.firstCourseDate = JSON.stringify(firstCourseDateArray);
                params.blCampusId=blCampusId;
    
                $.post(Api.quickSaveOneOnNGroup, params, function (res) {
                    if (res.resultCode === 0) {
                        Util.showAlert('保存成功');
                        Util.closeModal(hrefSrc);
                    }
                })
            })
        }
    
        function initData() {
            
            studyManagerPost.attr('data-value', userId);
            //初始化学管师
            InitUtil.initCampusStudy(modal.find('#studyManagerEl').add(studyManagerPost));
            //修改和新增不同
            if (curGroupId) {
                //小组信息
                $.get(Api.findOneOnNGroupById, { id: curGroupId }, function (res) {
                    Util.fillElmentValueByTag(res.data, 'data-from', null, groupInfoForm);
                    groupInfoForm.find('select,input').prop('disabled',true).change();
                    modGroupName = false;
                });
    
                //组员信息
                $.get(Api.listStudentsInGroup, { groupId: curGroupId }, function (res) {
                    curChooseListData = res.data;
                    //旧数据不能删
                    $(curChooseListData).each(function (i, item) {
                        item.oriFlag = true;
                        if (!item.firstCourseDate) item.firstCourseDate = '-';
                    })
                    searchBtn.click();
                    refreshChosenList();
                });
    
                title.text('添加组员');
            } else {
                saveGroupBlCampusId.val(blCampusId).change();
                searchBtn.click();
            }
            // 默认选中 从一对N学员列表跳转到新建小组的学员
            if (students) {
                curChooseListData = students.slice() ;
                $(curChooseListData).each(function (i, item) {
                    if (!item.firstCourseDate) item.firstCourseDate = DateUtil.getCurrentDate();
                });
                refreshChosenList();
            }
        }
    })();
  • 相关阅读:
    乐动力APP案例
    四则运算题目自动生成
    第0次作业
    CMDB整体项目梳理(1)
    cmdb项目准备
    DjangoAgain CBV与FBV
    Django ORM不完全操作
    Django 查漏补缺记录
    DjangoAgain_用小程序理解web框架
    DjangoAgain_url路由系统
  • 原文地址:https://www.cnblogs.com/susan-home/p/9210858.html
Copyright © 2011-2022 走看看