index.js 12.9 KB
//index.js
//获取应用实例
const app = getApp();

import mock from './mock.js'//拿到的数据

Page({
    data: {
        items: [],
        slide: [{image: 'http://pk86rwhci.bkt.clouddn.com/banner.png'}, {image: 'http://pk86rwhci.bkt.clouddn.com/banner.png'}],
        cate: [{pic: '../../images/duantu@2x.png', name: '短途郊游'},
            {pic: '../../images/changtu@2x.png', name: '长途旅游'},
            {pic: '../../images/finecanting@2x.png', name: 'Fine Dining 餐厅'},
            {pic: '../../images/huwai@2x.png', name: '户外运动'},
            {pic: '../../images/juhui@2x.png', name: '聚会'},
            {pic: '../../images/yinyuejie@2x.png', name: '音乐节'},
            {pic: '../../images/dianying@2x.png', name: '电影'},
            {pic: '../../images/qingshe@2x.png', name: '轻奢餐厅'},
            {pic: '../../images/zhanlan@2x.png', name: '展览'},
            {pic: '../../images/wutaiju@2x.png', name: '舞台剧'},
        ],
        meal_banner: [
            {pic: 'http://pk86rwhci.bkt.clouddn.com/banner.png', address: 'Opera Bombana', time: '2018.4.28'},
            {pic: 'http://pk86rwhci.bkt.clouddn.com/b1@2x%20%281%29.png', address: 'Opera Bombana', time: '2018.4.28'},
            {pic: 'http://pk86rwhci.bkt.clouddn.com/b1@2x%20%281%29.png', address: 'Opera Bombana', time: '2018.4.28'},
            {pic: 'http://pk86rwhci.bkt.clouddn.com/banner.png', address: 'Opera Bombana', time: '2018.4.28'}],
        currentBannerIndex: 0,
        tabcurrent: {tab: 0, bubble: ''},
        noticeList: [],
        is_showAnswer: false,
        is_showUserInfo: false,
        is_showRelease: false,
        is_write: 2,//1:已填写,2:未填写
        is_answer: false,
        current_swiper: 0,
        page_number: 1,
        cityList: [],
        addr:'', //切换地址

        motto: 'Hello World',
        userInfo: {},
        hasUserInfo: false,
        canIUse: wx.canIUse('button.open-type.getUserInfo')
    },
    //获取城市列表
    getCityList() {
        const self = this;
        let url = '/portal/Index/cityList';
        app.post(url, {}, {}).then((res) => {
            console.log('获取城市列表', res);
            if (+res.code === 1) {
                const arr = [];
                res.data.list.forEach((item) => {
                   arr.push(item.title)
                });
                self.setData({
                    city_picker_list: arr,
                    cityList:res.data.list,
                });
            }
        })
    },
    //切换城市
    cityPickerChange(e) {
        this.setData({
            current_city: e.detail.value,
            // is_sex_change: true
        });
        const lat = this.data.cityList[e.detail.value].latng.split(',')[1];
        const lng = this.data.cityList[e.detail.value].latng.split(',')[0];
        this.setData({lat: lat, lng: lng,addr:this.data.cityList[e.detail.value].title});
        // console.log('lat', 'lng',lat,lng);
        this.getIndex();
    },
    swiperChange(e) {
        this.setData({current_swiper: e.detail.current})
    },
    //发布拼活动
    releaseActivity() {
        this.setData({is_showRelease: false,});
        wx.navigateTo({
            url: '/pages/activity/activity',
        });
    },
    //发布拼餐
    releaseMeal() {
        this.setData({is_showRelease: false,});
        wx.navigateTo({
            url: '/pages/meal/meal',
        })
    },
    //完善个人信息
    goUserInfo() {
        this.setData({is_showUserInfo: false});
        wx.navigateTo({
            url: '/pages/my/edit-info/edit-info',
        })
    },
    //去答题
    goAnswer() {
        this.setData({is_showAnswer: false});
        wx.navigateTo({
            url: '/pages/index/answer-question/answer-question',
        })
    },
    disableScroll() {
    },
    handleBackground() {
        console.log('dianji');
        this.setData({is_showAnswer: false, is_showUserInfo: false, is_showRelease: false,})
    },
    //进入分类详情
    goTypeDetail(e) {
        const id = +e.currentTarget.dataset.id;
        const name = e.currentTarget.dataset.name;
        wx.navigateTo({
            url: '/pages/index/type-detail/type-detail?id=' + id + '&name=' + name,
        })
    },
    //进入号外公告详情
    goNotice(e) {
        const id = e.currentTarget.dataset.id;
        wx.navigateTo({
            url: '/pages/index/notice-detail/notice-detail?id=' + id,
        })
    },
    //查看更多
    goMore() {
        wx.navigateTo({
            url: '/pages/index/tandian-list/tandian-list',
        })
    },
    //进入拼餐详情
    goMealDetail(e) {
        console.log('拼餐详情e', e);
        const id = e.currentTarget.dataset.id;
        wx.navigateTo({
            url: '/pages/meal/detail/detail?id=' + id,
        })
    },
    //进入拼活动详情
    goActivityDetail(e) {
        console.log('活动详情e', e);
        const id = e.detail.activity_id;
        wx.navigateTo({
            url: '/pages/activity/detail/detail?id=' + id,
        })
    },
    //搜索
    search() {
        wx.navigateTo({
            url: '/pages/search/search',
        })
    },
    bannerChange(e) {
        // console.log(e,'current', current);
        const current = e.detail.current;
        this.setData({currentBannerIndex: current})
    },

    //事件处理函数
    bindViewTap: function () {
        wx.navigateTo({
            url: '../logs/logs'
        })
    },
    onLoad: function () {
        this.getCityList();
        this._doRefreshMasonry(this.data.items)
    },

    onReachBottom: function () {
        // this._doAppendMasonry(this.data.items)
    },

    _doRefreshMasonry(items) {
        this.masonryListComponent = this.selectComponent('#masonry');
        this.masonryListComponent.start(items).then(() => {
            console.log('refresh completed')
        })
    },

    _doAppendMasonry(items) {
        this.masonryListComponent = this.selectComponent('#masonry');
        // 获取接口数据后使用瀑布流组件append方法,当append完成后调用then,是否可触底价在的标志位可以在这里处理
        this.masonryListComponent.append(items).then(() => {
            console.log('refresh completed,加载更多')
        })
    },
    //首页-导航
    service(e) {
        var tindex = e.currentTarget.dataset.tindex;
        var tabcurrent = this.data.tabcurrent;
        if (tabcurrent == tindex) {
            return false
        } else {
            this.setData({
                tabcurrent: tindex
            })
            wx.redirectTo({
                url: '/pages/index/index',
            })
        }
    },
    //拼单-导航
    consult(e) {
        var tindex = e.currentTarget.dataset.tindex
        var tabcurrent = this.data.tabcurrent
        if (tabcurrent == tindex) {
            return false
        } else {
            this.setData({
                tabcurrent: tindex
            })
            // wx.showToast({
            //     title: '该功能正在开发中',
            //     icon: 'none'
            // })
            wx.redirectTo({
                url: '/pages/spell-list/spell-list',
            })
        }
    },
    //发布按钮
    release(e) {
        console.log('发布');
        const self = this;
        if (+self.data.is_write === 2 && wx.getStorageSync('is_canSend') === 2) { //没填写个人信息并且不可以发布 =>去填写
            self.setData({
                is_showUserInfo: true //弹出 去填写个人信息弹框
            });

        } else if (+self.data.is_write === 1 && wx.getStorageSync('is_canSend') === 2 && wx.getStorageSync('is_answer') === 2) { //已填写且不能发布=>去答题
            self.setData({
                is_showAnswer: true //弹出 去答题弹框
            });
        } else if (+self.data.is_write === 1 && wx.getStorageSync('is_canSend') === 1 && wx.getStorageSync('is_answer') === 1) { //已填写且可以发布 =>去发布
            self.setData({
                is_showRelease: true //弹出 去答题弹框
            });
        } else if (+self.data.is_write === 1 && wx.getStorageSync('is_canSend') === 2 && wx.getStorageSync('is_answer') === 1) {
            wx.showToast({title: '等级不够,无法使用发布功能', icon: 'none'})
        }
    },
    //订单-导航
    wish(e) {
        var tindex = e.currentTarget.dataset.tindex
        var tabcurrent = this.data.tabcurrent
        if (tabcurrent == tindex) {
            return false
        } else {
            this.setData({
                tabcurrent: tindex
            })
            // wx.showToast({
            //     title: '该功能正在开发中',
            //     icon: 'none'
            // })
            wx.redirectTo({
                url: '/pages/order/order',
            })
        }
    },
    //我的-导航
    my(e) {
        var tindex = e.currentTarget.dataset.tindex
        var tabcurrent = this.data.tabcurrent
        if (tabcurrent == tindex) {
            return false
        } else {
            this.setData({
                tabcurrent: tindex
            })
            wx.redirectTo({
                url: '/pages/my/my',
            })
        }
    },
    //获取经纬度
    getLat() {
        const self = this;
        wx.getLocation({  //获取当前经纬度
            type: 'wgs84', //返回可以用于wx.openLocation的经纬度,官方提示bug: iOS 6.3.30 type 参数不生效,只会返回 wgs84 类型的坐标信息
            success: function (res) {
                console.log('获取当前经纬度', res);
                self.setData({lat: res.latitude, lng: res.longitude});
                // app.loginCallback();
                // app.loginCallback = res => {
                //     console.log('show-callback-res', res);
                app.getLogin().then(function (res) {
                    console.log('res', res);
                    self.getIndex(res.token);//获取首页
                    self.getIsWrite(); //判断是否已填写个人信息
                });
                // };
            }
        })
    },
    //获取首页内容
    getIndex(res) {
        console.log('token', res, wx.getStorageSync('token'));
        const self = this;
        let url = '/portal/Index/index';
        let params = {
            lat: self.data.lat,
            lng: self.data.lng,
            token: wx.getStorageSync('token'),
            page: self.data.page_number,
            addr: self.data.addr,
        };
        let header = {
            "token": wx.getStorageSync('token')
        };
        app.post(url, params, {}).then((res) => {
            console.log('获取首页', res);
            if (+res.code === 1) {
                self.setData({
                    slide: res.data.banner,
                    cate: res.data.cate,
                    china_city: res.data.city.city,
                    noticeList: res.data.extra,
                    meal_banner: res.data.meal,
                    items: res.data.active,
                    is_canSend: res.data.is_canSend,
                });
                wx.setStorageSync('is_canSend', res.data.is_canSend);//1:可以发布2:不可以发布
                wx.setStorageSync('is_answer', res.data.is_answer);//1:已答题2:未答题
                // is_answer
                self._doRefreshMasonry(res.data.active);
                // console.log(this.data.this_week_test_info);
            }
        })
    },
    //是否填写个人信息
    getIsWrite() {
        const self = this;
        let url = '/portal/Send/isWrite';
        let params = {
            token: wx.getStorageSync('token'),
        };
        let header = {
            "token": wx.getStorageSync('token')
        };
        app.post(url, params, {}).then((res) => {
            console.log('是否填写个人信息', res);
            if (+res.code === 1) {
                self.setData({
                    is_write: res.data.is_write,//1:已填写2:未填写
                });
                wx.setStorageSync('is_write', res.data.is_write);//1:已填写2:未填写
                // console.log(this.data.this_week_test_info);
            }
        })
    },
    onShow() {
        this.getLat();//获取经纬度
        // wx.chooseLocation({
        //     success(res) {
        //         console.log(res);
        //         self.setData({address_position: res.address,lat:res.latitude,lng:res.longitude})
        //     },
        // })
        // wx.openLocation({//​使用微信内置地图查看位置。
        //     latitude: 39.02934,//要去的纬度-地址
        //     longitude: 117.0212,//要去的经度-地址
        //     name: "",
        //     address: ""
        // })
        console.log('index-show');
        console.log(app.globalData.userInfo);
    },
    onPageScroll(e) {
        // console.log('页面滚动', e);
        if (e.scrollTop > 140) {
            this.setData({hidden_top: true})
        } else if (e.scrollTop <= 140) {
            this.setData({hidden_top: false})
        }
    },
});