Skip to content
home.ts 14.3 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, ElementRef, ViewChild, NgZone, Renderer2, Input, ViewChildren, QueryList} from '@angular/core';
wangqinghua's avatar
wangqinghua committed
import {
    NavController,
    IonicPage,
    Slides,
    Content,
    InfiniteScrollContent,
    FabList,
    FabContainer,
    ModalController
} from 'ionic-angular';
wangqinghua's avatar
wangqinghua committed
import {Http, Response} from '@angular/http';
import {AppService, AppGlobal} from '../../../service/http.service';
import {Storage} from '@ionic/storage';
import {Badge} from '@ionic-native/badge';
import {TabsService} from "../tabs.service";
import {CommonService} from "../../../provide/common.service";
wangqinghua's avatar
wangqinghua committed
import {StuffDetailPage} from "../../home-pages/stuff-detail/stuff-detail";
wangqinghua's avatar
wangqinghua committed
import {EmitService} from "../../../provide/emit.service";
wangqinghua's avatar
wangqinghua committed
import {DatePipe} from "@angular/common";
wangqinghua's avatar
wangqinghua committed
import {SwiperComponent} from "../../../components/swiper/swiper";
wangqinghua's avatar
wangqinghua committed
import {FilterComponent} from "../../../components/filter/filter";
wangqinghua's avatar
wangqinghua committed
import {AppMainService} from "../../../app/app.service";
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
declare let Swiper: any;

wangqinghua's avatar
wangqinghua committed
@IonicPage()
@Component({
    selector: 'page-home',
    templateUrl: 'home.html'
})

export class HomePage {
wangqinghua's avatar
wangqinghua committed
    @ViewChild(Content) content: Content;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('tips') tips: ElementRef;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('tips1') tips1: ElementRef;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('verticaLamp') verticaLamp: ElementRef;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('tabsParent') tabsParent: ElementRef;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('topHeight') topHeight: ElementRef;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('headerTag') headerTag: ElementRef;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('homeMiddleTips') homeMiddleTips: ElementRef;
    @ViewChild('infiniteScrollContentEle') infiniteScrollContentEle: ElementRef;
wangqinghua's avatar
wangqinghua committed
    @ViewChild(InfiniteScrollContent) InfiniteScrollContent: InfiniteScrollContent;

    swiperImg;
    swiperArticle;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    picture: string = AppGlobal.domain + '/wisdomgroup';
wangqinghua's avatar
wangqinghua committed
    slideTitle;
wangqinghua's avatar
wangqinghua committed
    slideIndex = 1;
wangqinghua's avatar
wangqinghua committed
    slidersItems = [];
wangqinghua's avatar
wangqinghua committed
    //所属板块类型:
    //1党章党规,2系列讲话,3中央精神,4本市部署,5通知公告,6党建动态,7工作提示,8党务参考
wangqinghua's avatar
wangqinghua committed
    //9廉政格言,10纪检提示,11风险排查,12警示教育,13支部活动,14结对支部,15结对帮扶
wangqinghua's avatar
wangqinghua committed
    tabsList = [
wangqinghua's avatar
wangqinghua committed
        {name: "系列讲话", type: 2, index: 0},
        {name: "党章党规", type: 1, index: 1},
        {name: "中央精神", type: 3, index: 2},
wangqinghua's avatar
wangqinghua committed
        {name: "本市部署", type: 4, index: 3},
        {name: "评论解读", type: 17, index: 4},
wangqinghua's avatar
wangqinghua committed
    ];
wangqinghua's avatar
wangqinghua committed
    isSign = false;   //签到弹窗
    isBir = false;  //政治生日弹窗
wangqinghua's avatar
wangqinghua committed
    isScroll = false;   //tabs置顶
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    noReadNum;
    initSlide = 0;
wangqinghua's avatar
wangqinghua committed

    signObj = {
wangqinghua's avatar
wangqinghua committed
        'text': '',
        'isSign': ''
wangqinghua's avatar
wangqinghua committed
    };   //签到参数
    disabledClick = true;
wangqinghua's avatar
wangqinghua committed
    signText;   //签到倒计时
    partyObj;  //政治生日
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    plateType;
    index = 0;
    slideList = [];

wangqinghua's avatar
wangqinghua committed
    itemWidth;
    spanWidth;   //文字宽度
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed

    pageNum = 1;
wangqinghua's avatar
wangqinghua committed
    pageSize = AppGlobal.pageCount;
wangqinghua's avatar
wangqinghua committed
    total;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    mineInfo;
    username;

wangqinghua's avatar
wangqinghua committed
    toRight = true;

wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    constructor(public navCtrl: NavController, public datePipe: DatePipe,
wangqinghua's avatar
wangqinghua committed
                public commonSer: CommonService, public emitSer: EmitService,
wangqinghua's avatar
wangqinghua committed
                public zone: NgZone, public tabSer: TabsService, private appMainSer: AppMainService,
wangqinghua's avatar
wangqinghua committed
                public renderer: Renderer2, private modalCtrl: ModalController,
wangqinghua's avatar
wangqinghua committed
                public appService: AppService, public http: Http, public storage: Storage,
wangqinghua's avatar
wangqinghua committed
                public badge: Badge, public tabsSer: TabsService) {
wangqinghua's avatar
wangqinghua committed
        // 接收发射过来的数据
wangqinghua's avatar
wangqinghua committed
        this.appMainSer.readInfo.subscribe(value => {
            this.noReadNum = value;
        })
wangqinghua's avatar
wangqinghua committed
        this.slideList.length = 5;
wangqinghua's avatar
wangqinghua committed
    ionViewDidEnter() {
wangqinghua's avatar
wangqinghua committed
        this.getInter();
wangqinghua's avatar
wangqinghua committed
        this.tabsSer.signNow().subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                this.signObj = res.data;
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    public dragTo(e) {
wangqinghua's avatar
wangqinghua committed
        if (e.target.scrollLeft > window.screen.width / 4 - 4) {
wangqinghua's avatar
wangqinghua committed
            this.toRight = false;
        } else {
            this.toRight = true;
        }
    }

wangqinghua's avatar
wangqinghua committed
    //获取个人信息
wangqinghua's avatar
wangqinghua committed
    getInter() {
wangqinghua's avatar
wangqinghua committed
        this.tabSer.getUserIntegral().subscribe(
            (res) => {
                this.mineInfo = res.data;
                this.username = this.mineInfo.username.slice(-2);
wangqinghua's avatar
wangqinghua committed
                this.appMainSer.setInfo(res.data);
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    ionViewDidLoad() {
wangqinghua's avatar
wangqinghua committed
        this.getBanner();
wangqinghua's avatar
wangqinghua committed
        const htmlFontSize = getComputedStyle(window.document.documentElement)['font-size'];
        this.itemWidth = htmlFontSize.split("px")[0] * 8;
wangqinghua's avatar
wangqinghua committed
        this.spanWidth = this.tabsParent.nativeElement.children[0].children[0].offsetWidth;   //文字宽度
        this.tips.nativeElement.style.width = this.spanWidth + 'px';
        this.tips1.nativeElement.style.width = this.spanWidth + 'px';
wangqinghua's avatar
wangqinghua committed
        this.getInfo();
wangqinghua's avatar
wangqinghua committed
        this.scrollHeight();
wangqinghua's avatar
wangqinghua committed
        this.change(this.tabsList[0]);
wangqinghua's avatar
wangqinghua committed
        this.initSwiper();
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //初始化swiper
    initSwiper() {
        let that = this;
        that.swiperImg = new Swiper('#swiper-container', {
            speed: 1000,
wangqinghua's avatar
wangqinghua committed
            autoplay: {
wangqinghua's avatar
wangqinghua committed
                delay: 3000,
                disableOnInteraction: false,
            },//可选选项,自动滑动
            observer: true,
wangqinghua's avatar
wangqinghua committed
            observeParents: false,
wangqinghua's avatar
wangqinghua committed
            observeSlideChildren: true,
wangqinghua's avatar
wangqinghua committed
            loop: false,
wangqinghua's avatar
wangqinghua committed
            on: {
wangqinghua's avatar
wangqinghua committed
                init: function () {
                },
wangqinghua's avatar
wangqinghua committed
                slideChangeTransitionEnd: function () {
wangqinghua's avatar
wangqinghua committed
                    if (that.swiperImg) {
                        that.slideIndex = this.activeIndex + 1;
                        that.slideTitle = that.slidersItems[this.activeIndex].title;
                        that.swiperImg.update();
                    }
wangqinghua's avatar
wangqinghua committed
                },
wangqinghua's avatar
wangqinghua committed
                click: function () {
                    const item = that.slidersItems[this.activeIndex];
                    if (item.plateType == 20) return false;
                    that.navCtrl.push(StuffDetailPage, {
                        id: item.id
                    })
                },
wangqinghua's avatar
wangqinghua committed
            }
        });
        this.swiperArticle = new Swiper('#swiper-article', {
            slidesPerView: 1,
            speed: 1000,
            autoplay: false,//可选选项,自动滑动
            observer: true,
            observeParents: true,
wangqinghua's avatar
wangqinghua committed
            observeSlideChildren: true,
wangqinghua's avatar
wangqinghua committed
            loop: false,
            on: {
                slideChangeTransitionEnd: function () {
                    that.swiperArticle.update();
                    that.change(that.tabsList[this.activeIndex]);
                },
            }
        })
    }

wangqinghua's avatar
wangqinghua committed
    scrollHeight() {
wangqinghua's avatar
wangqinghua committed
        const height = this.topHeight.nativeElement.offsetHeight;
wangqinghua's avatar
wangqinghua committed
        this.content.ionScroll.subscribe(($event) => {
            this.zone.run(() => {
                if (this.content.scrollTop > height) {
wangqinghua's avatar
wangqinghua committed
                    this.isScroll = true;
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.isScroll = false;
wangqinghua's avatar
wangqinghua committed
    change(item) {
        this.pageNum = 1;
        this.index = item.index;
wangqinghua's avatar
wangqinghua committed
        // 自身div的一半 - 滑块的一半
        this.tips.nativeElement.style.left = this.itemWidth * (this.index) + (this.itemWidth - this.spanWidth) / 2 + 'px';
        this.tips1.nativeElement.style.left = this.itemWidth * (this.index) + (this.itemWidth - this.spanWidth) / 2 + 'px';

wangqinghua's avatar
wangqinghua committed
        this.plateType = item.type;
        const data = {
            pageNum: this.pageNum,
wangqinghua's avatar
wangqinghua committed
            pageSize: this.pageSize,
wangqinghua's avatar
wangqinghua committed
            obj: {
                'plateType': this.plateType,
                'resourceType': 1
            }
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
        this.tabsSer.stuffPage(data).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                let arr = res.data.list;
                if (arr.length > 0) {
wangqinghua's avatar
wangqinghua committed
                    arr.forEach(e => {
                        if (e.attachments.length > 0) {
                            e.imgUrl = e.attachments[0].path;
                        }
                    });
                    this.slideList[this.index] = arr;
wangqinghua's avatar
wangqinghua committed
                }
wangqinghua's avatar
wangqinghua committed
                if (this.swiperArticle) this.swiperArticle.slideTo(this.index, 500);
wangqinghua's avatar
wangqinghua committed
                this.getMore(res);
            }
        )
    }

    //加载更多
    getMore(res) {
        const totalNum: number = res.data.total;
wangqinghua's avatar
wangqinghua committed
        if (totalNum < this.pageSize) return false;
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            pageNum: 1,
            pageCount: totalNum,
wangqinghua's avatar
wangqinghua committed
            obj: {
                'plateType': this.plateType,
                'resourceType': 1
            }
        };
        this.tabsSer.stuffPage(data).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                res.data.list.splice(0, 10);
                res.data.list.forEach(e => {
                    if (e.attachments.length > 0) {
                        e.imgUrl = e.attachments[0].path;
                    }
                    this.slideList[this.index].push(e);
                });
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //列表
wangqinghua's avatar
wangqinghua committed
    slideChange() {
        if (this.initSlide == 0) {   //防止初始化加载
            this.initSlide = 1;
            return false;
        }
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //获取党员生日
    getInfo() {
        this.storage.get("userLoginInfo").then((value) => {
            let userid = value.userid;
            this.tabsSer.getInfo(userid).subscribe(
                (res) => {
wangqinghua's avatar
wangqinghua committed
                    if (res.apiResult.data) {  //党员展示政治生日
                        this.partyObj = res.apiResult.data;
                        //获取是否展示过政治生日
                        const nowDay = this.datePipe.transform(new Date(), 'yyyy-MM-dd');
                        const partyBir = localStorage.getItem('partyBir');
wangqinghua's avatar
wangqinghua committed
                        if (nowDay == partyBir) {
wangqinghua's avatar
wangqinghua committed
                            setTimeout(() => {
                                this.start();
                                this.isBir = false;
                            }, 500)
                        } else {
                            this.isBir = true;
                        }
                    } else {   //非党员不展示政治生日
                        this.isBir = false;
wangqinghua's avatar
wangqinghua committed
                    }
wangqinghua's avatar
wangqinghua committed
                }
            );
        })
    }

wangqinghua's avatar
wangqinghua committed
    //获取轮播图
    getBanner() {
        const data = {
wangqinghua's avatar
wangqinghua committed
            isRecent: 0,   //是否最新
wangqinghua's avatar
wangqinghua committed
            obj: {
wangqinghua's avatar
wangqinghua committed
                "resourceType": 2,   //1标题图片,2推荐轮播图,3视频
                "isRecommend": 1,   //推荐(1是0否)
wangqinghua's avatar
wangqinghua committed
                "plateType": 2,  //只取系列讲话
wangqinghua's avatar
wangqinghua committed
            }
        };
        this.tabsSer.stuffPage(data).subscribe(
            (res) => {
                if (res.data.list.length > 0) {
                    res.data.list.forEach(e => {
                        if (e.attachments.length > 0) {
                            e.imgUrl = e.attachments[0].path;
                        }
                    })
                }
                this.slidersItems = res.data.list;
wangqinghua's avatar
wangqinghua committed
                this.slideTitle = this.slidersItems[this.slidersItems.length - 1].title;
wangqinghua's avatar
wangqinghua committed
                this.swiperImg.update();
wangqinghua's avatar
wangqinghua committed
    //关闭弹窗 开启跑马灯
wangqinghua's avatar
wangqinghua committed
    start() {
wangqinghua's avatar
wangqinghua committed
        const nowDay = this.datePipe.transform(new Date(), 'yyyy-MM-dd');
        localStorage.setItem('partyBir', nowDay);
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
        this.isBir = false;
        this.homeMiddleTips.nativeElement.style.height = "50px";
wangqinghua's avatar
wangqinghua committed
        this.homeMiddleTips.nativeElement.style.padding = ".5rem";
wangqinghua's avatar
wangqinghua committed
        let child_div = this.verticaLamp.nativeElement.children;
        const scrollWidth = this.verticaLamp.nativeElement.offsetWidth;
        const textWidth = child_div[0].offsetWidth;

        let i = scrollWidth;
wangqinghua's avatar
wangqinghua committed
        setInterval(() => {
wangqinghua's avatar
wangqinghua committed
            i--;
wangqinghua's avatar
wangqinghua committed
            if (i < -textWidth) {
wangqinghua's avatar
wangqinghua committed
                i = scrollWidth;
            }
            child_div[0].style.left = i + 'px';
wangqinghua's avatar
wangqinghua committed
        }, 20)
wangqinghua's avatar
wangqinghua committed
    //签到接口
wangqinghua's avatar
wangqinghua committed
    signUp() {
wangqinghua's avatar
wangqinghua committed
        this.tabsSer.sign().subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                this.isSign = false;
wangqinghua's avatar
wangqinghua committed
                if (res.errcode == '1000') {
wangqinghua's avatar
wangqinghua committed
                    this.commonSer.toast('签到成功');
wangqinghua's avatar
wangqinghua committed
                    this.signObj.isSign = 'yes';
wangqinghua's avatar
wangqinghua committed
                    this.getInter();
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.commonSer.toast(res.errmsg);
wangqinghua's avatar
wangqinghua committed
                }
            }
        )
    }

wangqinghua's avatar
wangqinghua committed
    //签到倒计时
wangqinghua's avatar
wangqinghua committed
    signNow() {
wangqinghua's avatar
wangqinghua committed
        if (this.signObj.isSign == 'no') this.disabledClick = true;
wangqinghua's avatar
wangqinghua committed
        this.isSign = true;
        let totalTime = 5;
wangqinghua's avatar
wangqinghua committed
        this.signText = '(倒计时' + totalTime + 's)';
wangqinghua's avatar
wangqinghua committed
        let clock = window.setInterval(() => {
            totalTime--;
wangqinghua's avatar
wangqinghua committed
            this.signText = '(倒计时' + totalTime + 's)';
wangqinghua's avatar
wangqinghua committed
            if (totalTime < 0) {
                this.signText = '';
                window.clearInterval(clock);
                this.disabledClick = false;
            }
        }, 1000)
    }

wangqinghua's avatar
wangqinghua committed
    //查看文章详情
    goToDetail(item) {
        this.navCtrl.push(StuffDetailPage, {
            id: item.id
        })
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //前往
    goTo(page) {
        this.navCtrl.push(page);
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //下拉刷新
wangqinghua's avatar
wangqinghua committed
    doRefresh(e) {
wangqinghua's avatar
wangqinghua committed
        this.getBanner();
wangqinghua's avatar
wangqinghua committed
        const data = {
            pageNum: 1,
wangqinghua's avatar
wangqinghua committed
            pageSize: this.pageSize,
wangqinghua's avatar
wangqinghua committed
            obj: {
                'plateType': this.plateType,
                'resourceType': 1
            }
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
        this.tabsSer.stuffPage(data).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                let arr = res.data.list;
                if (arr.length > 0) {
wangqinghua's avatar
wangqinghua committed
                    arr.forEach(e => {
                        if (e.attachments.length > 0) {
                            e.imgUrl = e.attachments[0].path;
                        }
                    });
                }
wangqinghua's avatar
wangqinghua committed
                this.slideList[this.index] = arr;
                setTimeout(() => {
wangqinghua's avatar
wangqinghua committed
                    this.commonSer.toastTime('刷新成功!', 800);
wangqinghua's avatar
wangqinghua committed
                    this.getMore(res);
wangqinghua's avatar
wangqinghua committed
                    e.complete();
wangqinghua's avatar
wangqinghua committed
            }
        )
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //关闭弹窗
wangqinghua's avatar
wangqinghua committed
    closeBir() {
wangqinghua's avatar
wangqinghua committed
        this.isBir = false;
wangqinghua's avatar
wangqinghua committed
        this.start();
    }

wangqinghua's avatar
wangqinghua committed
    closeSign() {
wangqinghua's avatar
wangqinghua committed
        this.isSign = false;
    }

    stop(e) {
        e.stopPropagation();
    }

wangqinghua's avatar
wangqinghua committed
    //多模块
    moreTab() {
wangqinghua's avatar
wangqinghua committed
        let modal = this.modalCtrl.create(FilterComponent, {
            list: this.tabsList,
            type: this.plateType,
            title: '我的频道',
            desc:'点击进入我的频道'
        }, {
wangqinghua's avatar
wangqinghua committed
            enterAnimation: 'modal-from-right-enter',
            leaveAnimation: 'modal-from-right-leave'
        });
        modal.onDidDismiss(data => {
            if (data) {
                this.change(data)
            }
        });
        modal.present();
    }
wangqinghua's avatar
wangqinghua committed
}