微信小程序的api的一些封装

14 篇文章 0 订阅
12 篇文章 0 订阅
let api = require('../config/api.js');

// 时间戳格式化yyyy-MM-dd HH:mm:ss
 
function fmtDate(obj) {
  let date = new Date(obj);
  let y = date.getFullYear();
  let m = date.getMonth() + 1;
  m = m < 10 ? ('0' + m) : m;
  let d = date.getDate();
  d = d < 10 ? ('0' + d) : d;
  let h = date.getHours();
  h = h < 10 ? ('0' + h) : h;
  let minute = date.getMinutes();
  let second = date.getSeconds();
  minute = minute < 10 ? ('0' + minute) : minute;
  second = second < 10 ? ('0' + second) : second;
  return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
}

// 时间戳格式化yyyy-MM-dd

function fmtDateStr(obj) {
  let date = new Date(obj);
  let y = date.getFullYear();
  let m = date.getMonth() + 1;
  m = m < 10 ? ('0' + m) : m;
  let d = date.getDate();
  d = d < 10 ? ('0' + d) : d;
  return y + '-' + m + '-' + d;
}

function diffDate(startTime, endTime) {
  let start_date = new Date(startTime.replace(/-/g, "/"));
  let end_date   = new Date(endTime.replace(/-/g, "/"));
  let days = end_date.getTime() - start_date.getTime();
  let day  = parseInt(days / (1000 * 60 * 60 * 24));
  
  return day;
}

// ArrayBuffer转16进度字符串示例
function ab2hex(buffer) {
  let hexArr = Array.prototype.map.call(
    new Uint8Array(buffer),
    function (bit) {
      return ('00' + bit.toString(16)).slice(-2)
    }
  )
  return hexArr.join('');
}

function formatTime(date) {
  let year = date.getFullYear()
  let month = date.getMonth() + 1
  let day = date.getDate()

  let hour = date.getHours()
  let minute = date.getMinutes()
  let second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}


function hideLoadingMsg() {
  wx.hideLoading()
}

function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}

// 封装微信的的request

function request(url, data = {}, method = "GET") {
  return new Promise( (resolve, reject)=> {
    wx.request({
      url: url,
      data: data,
      method: method,
      header: {
        'Content-Type': 'application/json',
        'X-Nideshop-Token': wx.getStorageSync('token')
      },
      success:  res=>{
        if (res.statusCode == 200) {
          if (res.data.errno == 401) {
            // showWarnToast1("请先登录")
            resolve(res);
          }
          // console.log(res.data)
          resolve(res.data);
        }
      },
      fail: err => {
        reject(err)
      }
    })
  });
}
// 调用微信登录

function loginByWeixin() {
  let code = null;
  return new Promise( (resolve, reject)=> {
    return login().then(res => {
      code = res.code;
      return getUserInfo();
    }).then(userInfo => {
      // console.log(userInfo);
      //登录远程服务器
      request(api.AuthLoginByWeixin, { code: code, userInfo: userInfo }, 'POST')
      .then(res => {
        if (res.errno === 0) {
          //存储用户信息
          wx.setStorageSync('userInfo', userInfo);
          wx.setStorageSync('token', res.data.token);
          wx.setStorageSync('userId', res.data.userId);

          resolve(res);
        } else {
          reject(res);
        }
      }).catch(err => {
        reject(err);
      });
    }).catch(err => {
      reject(err);
    })
  });
}
/**
 * 检查微信会话是否过期
 */
function checkSession() {
  return new Promise( (resolve, reject)=> {
    wx.checkSession({
      success:  ()=> {
        resolve(true);
      },
      fail:  ()=> {
        reject(false);
      }
    })
  });
}

/**
 * 调用微信登录
 */
function login() {
  return new Promise((resolve, reject) => {
    wx.login({
      success: res =>{
        if (res.code) {
          //登录远程服务器
          console.log(res)
          resolve(res);
        } else {
          reject(res);
        }
      },
      fail: err=> {
        reject(err);
      }
    });
  });
}

function getUserInfo() {
  return new Promise( (resolve, reject)=> {
    wx.getUserInfo({
      withCredentials: true,
      success:  (res)=> {
        // console.log("4");
        resolve(res);
      },
      
      fail:  (err)=> {
        // console.log("5");
        reject(err);
        // wx.navigateTo({
        //   url: '/pages/auth/auth/authSet',
        // })
      }
      /*fail: function () {
        //获取用户信息失败后。请跳转授权页面
        wx.showModal({
          title: '警告',
          content: '尚未进行授权,请点击确定跳转到授权页面进行授权。',
          success: function (res) {
            if (res.confirm) {
              console.log('用户点击确定')
              wx.navigateTo({
                url: '../tologin/tologin',
              })
            }
          }
        })
      }*/
    })
  });
}

function redirect(url) {
  //判断页面是否需要登录
  if (false) { //??????这里有问题??
    wx.redirectTo({
      url: '/pages/auth/login/login'
    });
    return false;
  } else {
    wx.redirectTo({
      url: url
    });
  }
}

function toast(msg){
  wx.showToast({
    title: msg,
    icon: 'none',
  });
    
}

function showToasMsg(msg) {
  wx.showLoading({
    title: msg,
  })
}

//失败提示
function showErrorToast(msg) {
  wx.showToast({
    title: msg,
    image: '/images/icon_fail.png'
  })
}

//警告提示
function showWarnToast(msg) {
  wx.showToast({
    title: msg,
    image: '/images/icon_warn.png'
  })
}

// 页面跳转提示
function showWarnToast1(msg) {
  wx.showToast({
    title: msg,
    image: '/images/icon_warn.png',
    success:  ()=> {
      setTimeout( ()=> {
        wx.navigateTo({
          url: '/pages/login/login',
        })
      }, 2000);
    }
  })
  return false;
}


module.exports = {
  formatTime,
  request,
  redirect,
  showErrorToast,
  showWarnToast,
  checkSession,
  login,
  getUserInfo,
  toast,
  showToasMsg,
  hideLoadingMsg,
  fmtDate,
  loginByWeixin,
  ab2hex,
  diffDate,
  fmtDateStr,
  showWarnToast1
}

微信小程序API封装是指将微信小程序官方提供的各种功能接口进行封装,以方便开发者调用和使用。随着微信小程序的不断发展,其API封装也不断更新,以满足开发者对功能需求的更多期待。 目前,微信小程序API封装已经非常齐全,涵盖了各个方面的功能需求。一方面,它包括了基础功能的封装,如页面路由、数据缓存、事件处理等,使开发者能够更加方便地进行页面跳转、本地数据存储和事件绑定等操作。 另一方面,微信小程序API封装也包括了丰富的界面组件和交互能力的封装,如模态框、滑动视图、下拉刷新等,使开发者能够快速构建各类交互丰富的小程序界面。 此外,微信小程序API封装还包括了网络请求、位置信息、支付功能等重要能力的封装,开发者可以通过调用相应接口,实现网络数据的获取、用户位置的获取和支付功能的实现等。 随着微信小程序的不断升级和功能增加,其API封装也会持续更新。为了更好地支持开发者的需求,微信团队也会提供最新的API文档和示例代码,使开发者能够更好地了解和使用微信小程序的各项功能。 总之,微信小程序API封装非常齐全,能够满足绝大部分开发者的需求,并且会随着新功能的增加而不断更新。开发者只需要熟悉官方提供的API文档,就可以开发出功能丰富、交互流畅的微信小程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值