/** * tabBar页面路径列表 (用于链接跳转时判断) * tabBarLinks为常量, 无需修改 */ const tabBarLinks = [ 'pages/index/index', 'pages/category/index', 'pages/flow/index', 'pages/user/index' ]; // 站点信息 import siteInfo from 'siteinfo.js'; App({ /** * 全局变量 */ globalData: { user_id: null, }, api_root: '', // api地址 /** * 生命周期函数--监听小程序初始化 */ onLaunch() { let App = this; // 设置api地址 App.setApiRoot(); wx.getSystemInfo({ success: e => { // 设计稿一般是 750 rpx, 但是 canvas 是 px; // 1rpx 转换成 px 的时候 this.globalData.rpx2px = 1 / 750 * e.windowWidth; } }); }, /** * 当小程序启动,或从后台进入前台显示,会触发 onShow */ onShow(options) { }, /** * 设置api地址 */ setApiRoot() { let App = this; App.api_root = `${siteInfo.siteroot}index.php?s=/api/`; }, /** * 获取小程序基础信息 */ getWxappBase(callback) { let App = this; App._get('wxapp/base', {}, result => { // 记录小程序基础信息 wx.setStorageSync('wxapp', result.data.wxapp); callback && callback(result.data.wxapp); }, false, false); }, /** * 执行用户登录 */ doLogin() { // 保存当前页面 let pages = getCurrentPages(); if (pages.length) { let currentPage = pages[pages.length - 1]; "pages/login/login" != currentPage.route && wx.setStorageSync("currentPage", currentPage); } // 跳转授权页面 wx.navigateTo({ url: "/pages/login/login" }); }, /** * 当前用户id */ getUserId() { return wx.getStorageSync('user_id') || 0; }, /** * 显示成功提示框 */ showSuccess(msg, callback) { wx.showToast({ title: msg, icon: 'success', success() { callback && (setTimeout(() => { callback(); }, 1500)); } }); }, /** * 显示失败提示框 */ showError(msg, callback) { wx.showModal({ title: '友情提示', content: msg, showCancel: false, success(res) { // callback && (setTimeout(() => { // callback(); // }, 1500)); callback && callback(); } }); }, /** * get请求 */ _get(url, data, success, fail, complete, check_login) { let App = this; wx.showNavigationBarLoading(); // 构造请求参数 data = Object.assign({ wxapp_id: 10001, token: wx.getStorageSync('token') }, data); // if (typeof check_login === 'undefined') // check_login = true; // 构造get请求 let request = () => { data.token = wx.getStorageSync('token'); wx.request({ url: App.api_root + url, header: { 'content-type': 'application/json' }, data, success(res) { if (res.statusCode !== 200 || typeof res.data !== 'object') { console.log(res); App.showError('网络请求出错'); return false; } if (res.data.code === -1) { // 登录态失效, 重新登录 wx.hideNavigationBarLoading(); App.doLogin(); } else if (res.data.code === 0) { App.showError(res.data.msg); return false; } else { success && success(res.data); } }, fail(res) { // console.log(res); App.showError(res.errMsg, () => { fail && fail(res); }); }, complete(res) { wx.hideNavigationBarLoading(); complete && complete(res); }, }); }; // 判断是否需要验证登录 check_login ? App.doLogin(request) : request(); }, /** * post提交 */ _post_form(url, data, success, fail, complete) { wx.showNavigationBarLoading(); let App = this; // 构造请求参数 data = Object.assign({ wxapp_id: 10001, token: wx.getStorageSync('token') }, data); wx.request({ url: App.api_root + url, header: { 'content-type': 'application/x-www-form-urlencoded', }, method: 'POST', data, success(res) { if (res.statusCode !== 200 || typeof res.data !== 'object') { App.showError('网络请求出错'); return false; } if (res.data.code === -1) { // 登录态失效, 重新登录 App.doLogin(() => { App._post_form(url, data, success, fail); }); return false; } else if (res.data.code === 0) { App.showError(res.data.msg, () => { fail && fail(res); }); return false; } success && success(res.data); }, fail(res) { // console.log(res); App.showError(res.errMsg, () => { fail && fail(res); }); }, complete(res) { wx.hideLoading(); wx.hideNavigationBarLoading(); complete && complete(res); } }); }, /** * 验证是否存在user_info */ validateUserInfo() { let user_info = wx.getStorageSync('user_info'); return !!wx.getStorageSync('user_info'); }, /** * 对象转URL */ urlEncode(data) { var _result = []; for (var key in data) { var value = data[key]; if (value.constructor == Array) { value.forEach(_value => { _result.push(key + "=" + _value); }); } else { _result.push(key + '=' + value); } } return _result.join('&'); }, /** * 设置当前页面标题 */ setTitle() { let App = this, wxapp; if (wxapp = wx.getStorageSync('wxapp')) { wx.setNavigationBarTitle({ title: wxapp.navbar.wxapp_title }); } else { App.getWxappBase(() => { App.setTitle(); }); } }, /** * 设置navbar标题、颜色 */ setNavigationBar() { let App = this; // 获取小程序基础信息 App.getWxappBase(wxapp => { // 设置navbar标题、颜色 wx.setNavigationBarColor({ frontColor: wxapp.navbar.top_text_color.text, backgroundColor: wxapp.navbar.top_background_color }) }); }, /** * 获取tabBar页面路径列表 */ getTabBarLinks() { return tabBarLinks; }, /** * 验证登录 */ checkIsLogin() { return wx.getStorageSync('user_id') != ''; }, /** * 授权登录 */ getUserInfo(userInfo,user_id, callback) { let App = this; wx.showLoading({ title: "正在授权", mask: true }); // 执行微信登录 wx.login({ success(res) { // 发送用户信息 App._post_form('user/login', { code: res.code, user_id: user_id, user_info: JSON.stringify(userInfo) }, result => { // 记录token user_id wx.setStorageSync('token', result.data.token); // 执行回调函数 callback && callback(); }, false, () => { wx.hideLoading(); }); } }); }, /** * 绑定用户身份证号 */ getUserInfoByIdCard(idCard, callback) { let App = this; wx.showLoading({ title: "正在验证身份证号", mask: true }); App._post_form('user/checkIdCard',{ idCard:idCard }, result => { //记录user_id if(!result.data.user_id){ wx.showToast({ title: '身份证号不存在', icon: 'error', duration: 2000 }) }else{ wx.setStorageSync('user_id', result.data.user_id); // 执行回调函数 callback(result.data.user_id); } }, false, () => { wx.hideLoading(); }); }, });