LiveClassApe.js 6.9 KB
//*
// 互动课堂模块
// */

import Loger from "../Loger";
import Ape from "./Ape";
import $ from "jquery";
import ClassDataProxy from "proxy/ClassDataProxy";
let loger = Loger.getLoger('PC-LiveClassApe');

const classifyList = `<div class="classifyList {_classifyListR}" data="{_id}">
                            <img class="curriculumListImg" src="{_msgImg}" alt="">
                            <p class="curriculumListTit">{_classroomTitle}</p>
                            <p class="curriculumListInfo">
                                <span class="curriculumListTime">{_schoolTime}</span>
                                <span class="curriculumListNum">{_subscribeNum}</span>
                            </p>
                        </div>`;

class LiveClassApe extends Ape {
    constructor() {
        super();
        this.addEvent();
        this.init();
    }

    init() {
        //判断列表在右侧时取消边距
        this._judgeListPlace();
        $('#collectYes').hide();

        $('#livePageBox').on('click','.pageNumBtn',this._pageNumBtnHandler.bind(this));//点击翻页
    }

    addEvent() {

    }
    _judgeListPlace(){
        let i=(i%4);
        $('#liveContent').find('.classifyList').eq(i==3).addClass('classifyListR');
    }
    isLocalStorage(){
        $('#slideshow').hide();

        $('#defaultBox').hide();
        $('#liveContentAllBox').show();
        $('#lanclassAllBox').hide();
        $('#teacherIntroAllBox').hide();

        $('#teacherDetailBox').hide();
        $('#lanclassBox').hide();
        $('#myCenterBox').hide();
        this.detailPage();
    }
    //点击翻页
    _pageNumBtnHandler(evt){
        let _url = ClassDataProxy.locationProtocol + ClassDataProxy.locationProt + '/meeting/getMeeting';
        let _ele = $(evt.target);
        let that = this;
        if(_ele.siblings().length > 0 && _ele.text()!= '...' ){
            _ele.addClass('pageNumBtnCheck').siblings().removeClass('pageNumBtnCheck');
            $.ajax({
                type: "POST",
                url: _url,
                timeout:5000,
                headers: {'page':_ele.text(),
                    siteId:ClassDataProxy.siteId,
                    'token':ClassDataProxy.token
                },
                data:{siteId:ClassDataProxy.siteId},
                success:function(_data){
                    //切换列表内容
                    if(_data && _data.code == 200){
                        that._classDateContent(_data.returnData.data);
                        loger.log(_data,'成功')
                    }
                },
                error:function(error){
                    //alert('直播翻页数据获取失败')
                    loger.log(error,'直播翻页数据获取失败')
                }
            })
        }else{
            return;
        }
    }
    detailPage(){
        let _url = ClassDataProxy.locationProtocol + ClassDataProxy.locationProt + '/meeting/getMeeting';
        let that = this;
        $.ajax({
            type: "POST",
            url: _url,
            timeout:5000,
            data:{siteId:ClassDataProxy.siteId,meetingType:2},
            headers: {siteId:ClassDataProxy.siteId,
                'token':ClassDataProxy.token},
            success:function(_data){
                //获取课堂数据
                if(_data && _data.code ==200){
                    that._gainClassData(_data.returnData.data);
                }

            },
            error:function(error){
                //alert('直播数据获取失败')
                that._gainClassDataErr();
                loger.log(error,'直播数据获取失败')
            }
        })
    }
    _gainClassData(_data){
        if(_data){
            let liveContent = $('#liveContent');
            liveContent.empty();
            //切换列表内容
            this._classDateContent(_data);
            //页码
            this._classDatepageNum(_data);
        }
    }
    _gainClassDataErr(){
        let liveContent = $('#liveContent');
        liveContent.empty();
        let _classifyList = '<div class="dataErrorTitle">数据获取失败~</div>'
        liveContent.append(_classifyList)
    }
    //清楚列表数据
    _clearListContent(){
        let liveContent = $('#liveContent');
        liveContent.empty();
        let livePageBox = $('#livePageBox');
        livePageBox.empty();
    }
    //列表显示loading
    _showLoadingImg(){
        let loadingImg = `<img class="loadingImg" src="images/loading.gif" alt="">`;
        $('#livePageBox').append(loadingImg);
    }
    _classDateContent(_data){
        let liveContent = $('#liveContent');
        liveContent.empty();
        let _dataList = _data.meetingInfo;
        if(_dataList){
            for(let i = 0;i<_dataList.length;i++){
                let j = (i%4)==3;
                let _getTime = ClassDataProxy.getTimeDifference(_dataList[i].beginTime,_dataList[i].endTime);
                let _img = '../images/u373.png';
                let _classImg = _dataList[i].meetingPhoto;
                let _classifyList = this._format(classifyList,{
                    _classifyListR : j?'classifyListR':'',
                    _id : _dataList[i].id,
                    _msgImg :_classImg?_classImg:_img,
                    _classroomTitle : _dataList[i].meetingName,
                    _schoolTime : _getTime,
                    _subscribeNum : _dataList[i].reservationNumber+'人预约'
                })
                liveContent.append(_classifyList);
            }
        }
    }
    _classDatepageNum(_data){ //page
        let _pageContent = _data.count;
        let _pageNum = Math.ceil(_pageContent / _data.pageno);

        this.pagingConstruct(1,_pageNum);
    }
    pagingConstruct(paging,total){
        let livePageBox = $('#livePageBox');
        livePageBox.empty();
        let pagingDivInnerHTML = '<div class="pageNumContent">';
        let isHiddenExist = 0;
        if(total > 1){
            for(let i =1 ;i<=total;i++){
                if(i == paging){
                    pagingDivInnerHTML +='<span class="pageNumBtn pageNumBtnCheck">'+i+'</span>';
                }else{
                    if (i < 4 || i < (paging + 3) && i > (paging - 2) || i > (total / 2 - 2) && i < (total / 2 + 2) || i > (total - 3)) {
                        pagingDivInnerHTML +='<span class="pageNumBtn">'+i+'</span>';
                        isHiddenExist = 0;
                    }else{
                        if(isHiddenExist == 0){
                            pagingDivInnerHTML += '<span class="pageNumBtn">...</span>';
                            isHiddenExist = 1;
                        }
                    }
                }
            }
        }
        pagingDivInnerHTML += '</div>';
        livePageBox.append(pagingDivInnerHTML);
    }
    //工具类
    _format(str, obj) {
        return str.replace(/\{(\w+)\}/g, function (match, group, index) {
            return obj[group];
        });
    };
}
export default LiveClassApe;