mobile.js 10.6 KB
// var baseURL = 'http://dsc-b.vchangyi.com/party/phpapi';
// var baseURL = 'https://yq.vchangyi.com/party/phpapi';
var baseURL = 'http://party.vchangyi.com/phpapi';

// 页面数据绑定操作
var action = {
    // 是否开始签到
    isRun : 0,
    init : function() {
        this.initBarrage();
        // var WECHAT_JS_SIGN_URL = '/api.WechatJsSign.php';
        // var USER_DETAIL_URL = '/api.UserDetail.php';
        // // 获取微信jsapi签名
        // baseRquest.get(WECHAT_JS_SIGN_URL, {'url' : location.href}, action.sign);
        // // 用户信息
        // baseRquest.get(USER_DETAIL_URL, {}, action.userDetail);
    },
    // 签到
    signIn: function() {
        var realname = $('.sign-input').val().replace( /^\s*/, '')
        if (!realname) {
            return;
        }
        var url = baseURL + '/apicp.SignIn.php';
        var data = { realname: realname };
        var callback = function() {
            $('.sign-input').val('');
            this.goPic();
        };
        // baseRquest.post(url, data, callback);
        this.goPic();
    },
    // 配置微信jsapi config,回调触发
    sign: function(data) {
        wx.config({
            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: data.appId, // 必填,公众号的唯一标识
            timestamp: data.timestamp, // 必填,生成签名的时间戳
            nonceStr: data.nonceStr, // 必填,生成签名的随机串
            signature: data.signature,// 必填,签名
            jsApiList: ['chooseImage','uploadImage','getLocalImgData','downloadImage','getLocation'] // 必填,需要使用的JS接口列表
        });
    },
    // 回调触发,获取用户信息
    userDetail : function(data) {
        // openid不存在
        if (!data) {
            alert('数据异常,不要搞事情');
            return;
        }
        // 如果数据中有isLogin,有登录流程
        if (data.isLogin !== undefined) {
            location.href = baseURL + '/api.WechatAuth.php';
        }
        action.isRun = 1;
        // 未提交过资料,展示开场
        if (data.realname === undefined || data.realname == '') {
            $('#show').show();
            $('#index').hide();
            $('#detail').hide();
        } else {
            // 提交过资料,展示个人信息
            $('.detail-realname').html(data.realname);
            $('.detail-lottery-num').html('NO.' + data.id);
            $('.detail-head-img').attr('src', data.headimg);
            $('#show').hide();
            $('#index').hide();
            $('#detail').show();
        }
    },
    // 进入拍照页
    goPic: function() {
        $('.sign-in').hide();
        $('.pic').show();
    },
    goHome: function() {
        $('.home').show();
        $('.pic').hide();
        $('.seat').hide();
    },
    goSeat: function() {
        $('.seat').show();
        $('.home').hide();
    },
    goVote: function() {
        $('.vote').show();
        $('.home').hide();
    },
    submitVote: function() {
        $('.home').show();
        $('.vote').hide();
    },
    // 打开摄像头
    openCamera: function() {
        // if (action.isRun == 0) {
        //     alert('尚未开启,请稍后尝试');
        //     return;
        // }
        wx.chooseImage({
            count: 1, // 默认9
            sizeType: ['compressed'], // 'original', 'compressed'指定是原图还是压缩图,默认都有
            sourceType: ['camera', 'album'], // 'album', 'camera'指定来源是相册还是相机,默认都有
            success: function(res) {
                var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
                wx.uploadImage({
                    localId: localIds.toString(), // 需要上传的图片的ID,由chooseImage接口获得
                    isShowProgressTips: 1, // 进度提示
                    success: function (res) {
                        var serverId = res.serverId; // 返回图片的服务器端ID,即mediaId
                        $(".data-img").val(serverId);
                        console.log(serverId);
                        wx.downloadImage({
                            serverId: serverId, // 需要下载的图片的服务器端ID,由uploadImage接口获得
                            isShowProgressTips: 1, // 默认为1,显示进度提示
                            success: function (res) {
                                var localId = res.localId; // 返回图片下载后的本地ID
                                $('#show').hide();
                                $('#index').show();
                                $('#detail').hide();
                                action.wxgetLocalImgData(localId, 1);
                            }
                        });
                    },
                    fail: function (res) {
                        alert('图片上传失败,请重试');
                    }
                }); 
            }
        });
    },
    // 展示选中的图片
    wxgetLocalImgData : function(e,num){
        var headimg = $(".head-img-show");   
        if(window.__wxjs_is_wkwebview){
            wx.getLocalImgData({
                localId: e, // 图片的localID
                success: function (res) {
                    var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
                    localData = localData.replace('jgp', 'jpeg'); //iOS 系统里面得到的数据,类型为 image/jgp,因此需要替换一下                                            
                    $(headimg).attr("src", localData);
                },
                fail:function(res){
                    alert("显示失败");
                }
            });
        }else{
            $(headimg).attr("src", e);
        }
    },

    // 提交签到申请
    submit : function(){
        var mediaId = $(".data-img").val();
        var realname = $(".data-realname").val().replace( /^\s*/, '');
        if (realname == '' || mediaId == '' || realname == '姓名:陈独秀') {
            alert('提交的资料数据不完整');
            return;
        }
        wx.getLocation({
            type: 'gcj02',
            success: (res) => {
                console.log(res);
                let latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
                let longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
                let data = {
                    mediaId : mediaId,
                    realname : realname,
                    latitude : latitude,
                    longitude : longitude
                }
                // 提交签到
                let ADD_USER_URL = '/api.AddUser.php';
                baseRquest.post(ADD_USER_URL, data, this.addUserResult);
            }
        });
    },
    // 增加成功,重新加载页面,进入用户详情页
    addUserResult : function(data) {
        console.log(data);
        let url = window.location.href; //获取当前url
        let key = '?t=';
        if (url.indexOf("?") > 0) {
            key = '&t=';
        }
       
        location.href = url + key + (new Date()).valueOf();
    },
    // 投票
    vote : function(){
        let VOTE_URL = '/api.Vote.php';
        baseRquest.get(VOTE_URL, {a:'a'}, (data)=>{
            console.log(data);
            location.href = data.url;
        });
    },
    // 发送弹幕
    initBarrage: function() {
        var socket = io('//192.168.10.158:3000');
        
        $('.send-btn').on('click', function() {
            if ($('.barrage-input').val() != '') {
                socket.emit('barrage', $('.barrage-input').val());
                $('.barrage-input').val('');
            }
        });
    },
    resetPosition: function () {
        var currentPosition, timer;
        var speed = 1; // 页面滚动距离
        timer = setTimeout(function() {
            currentPosition = document.documentElement.scrollTop || document.body.scrollTop;
            currentPosition -= speed;
            window.scrollTo(0, currentPosition); // 页面向上滚动
            currentPosition += speed;
            window.scrollTo(0, currentPosition); // 页面向下滚动
            clearTimeout(timer);
        }, 1);
    },
    // 改变发送按钮状态
    toggleBtnState: function() {
        if ($('.barrage-input').val()) {
            $('.send-btn').addClass('active');
        } else {
            $('.send-btn').removeClass('active');
        }
    },
    switchDialog: function(isShow) {
        if (isShow) {
            $('.dialog-wrap').show()
        } else {
            $('.dialog-wrap').hide()
        }
    }
}

// api接口数据请求,数据交互引用的axios
let baseRquest = {
    // get请求
    get: function(url, params, callback) {
        axios.defaults.baseURL = baseURL;
        axios.get(url, {
            params : params
        }).then(function (response) {
            if (response.status == 200)
            {
                data = response.data;
                if (!!data) {
                    // 过滤错误信息,统一抛出
                    if (data.errcode != 0 && data.errcode != 200) {
                        alert(data.errmsg);
                    } else {
                        callback(data.result);
                    }
                }
            }else {
                alert('get无法访问接口');
            }
        })
        .catch(function (error) {
        });
    },

     // post请求
     post: function(url, params, callback) {
        axios.defaults.baseURL = baseURL;
        let data = new URLSearchParams();
        Object.keys(params).forEach(function(key){
            data.append(key, params[key]);
        });
        axios.post(url, data,{headers: { 'Content-Type': 'application/x-www-form-urlencoded','Authorization':'123'}})
            .then(function (response) {
            if (response.status == 200)
            {
                data = response.data;
                if (!!data) {
                    // 过滤错误信息,统一抛出
                    if (data.errcode != 0 && data.errcode != 200) {
                        alert(data.errmsg);
                    } else {
                        callback(data.result);
                    }   
                }
            }else {
                alert('post无法访问接口');
            }
        })
        .catch(function (error) {
            console.log(error);
        });
    }
}