微信小程序常用API封装

主要是为了在项目中使用时   不需要每次都通过wx. 获取   使得同样代码冗余

主要是为了在项目中使用时   不需要每次都通过wx. 获取   使得同样代码冗余

主要是为了在项目中使用时   不需要每次都通过wx. 获取   使得同样代码冗余

主要是为了在项目中使用时   不需要每次都通过wx. 获取   使得同样代码冗余

/**
 * @return {Object}  获取系统信息
 */
export let systemInfo = function () {
  return new Promise((resolve, reject) => {
    wx.getSystemInfo({
      success: (res) => {
        resolve(res);
      },
      fail: (res) => {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};
/**
 * @return {Object} 获取小程序登录code
 */
export let wxLogin = function () {
  return new Promise((resolve, reject) => {
    wx.login({
      success: (res) => {
        resolve(res);
      },
      fail: (res) => {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @return {Object} 校验小程序登录态
 */
export let checkSession = function () {
  return new Promise((resolve, reject) => {
    wx.checkSession({
      success() {
        //session_key 未过期,并且在本生命周期一直有效
        resolve({
          success: true,
        });
      },
      fail() {
        // session_key 已经失效,需要重新执行登录流程
        resolve({
          success: false,
        });
      },
    });
  });
};

/**
 * @param {Obj} opt 参数
 * @return {Object}  获取用户的当前设置权限。
 */
export let getUserSetting = function () {
  return new Promise((resolve, reject) => {
    wx.getSetting({
      success: (res) => {
        resolve(res);
      },
      fail: (res) => {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {Obj} opt 参数
 * @return {Object}  打开用户权限列表
 */
export let openSetting = function () {
  return new Promise((resolve, reject) => {
    wx.openSetting({
      success: (res) => {
        resolve(res);
      },
      fail: (res) => {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {Obj} opt 参数
 * @return {Object}  判断用户的具体的权限 是否授权
 * @description 进行取值
 * let AllAuth=await getAllAuth()
 * AllAuth.get('userInfo').value 具体的权限
 * AllAuth.get('userInfo').type 代表是否是第一次 true
 */
export let getUserAllAuth = function () {
  return new Promise((resolve, reject) => {
    wx.getSetting({
      success: (res) => {
        let _res = new Map();
        //用户信息
        if (res.authSetting && "scope.userInfo" in res.authSetting) {
          _res.set("userInfo", { value: res.authSetting["scope.userInfo"] });
        } else {
          _res.set("userInfo", { value: false, type: true });
        }

        //定位信息
        if (res.authSetting && "scope.userLocation" in res.authSetting) {
          _res.set("userLocation", {
            value: res.authSetting["scope.userLocation"],
          });
        } else {
          _res.set("userLocation", { value: false, type: true });
        }

        //开启相册权限
        if (res.authSetting && "scope.writePhotosAlbum" in res.authSetting) {
          _res.set("writePhotosAlbum", {
            value: res.authSetting["scope.writePhotosAlbum"],
          });
        } else {
          _res.set("writePhotosAlbum", { value: false, type: true });
        }

        resolve(_res);
      },
      fail: () => {
        let _resvs = new Map();
        _resvs.set("userInfo", { value: false });
        _resvs.set("userLocation", { value: false });
        _resvs.set("writePhotosAlbum", { value: false });
        resolve(_resvs);
      },
    });
  });
};

/**
 * @param {Obj} opt 参数
 * @return {Object}  获取用户基本信息
 */
export let getUserInfo = function () {
  return new Promise((resolve, reject) => {
    wx.getUserInfo({
      success: (res) => {
        resolve(res);
      },
      fail: (res) => {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {Obj} opt 参数
 * @return {Object}  获取用户位置信息
 */
export let getLocation = function (type) {
  return new Promise((resolve, reject) => {
    wx.getLocation({
      type,
      success: function (res) {
        resolve(res);
      },
      fail: function (res) {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {Obj} opt 参数
 * @return {Object}  打开微信地图
 */
export let openLocation = function (latitude, longitude) {
  return new Promise((resolve, reject) => {
    wx.openLocation({
      latitude,
      longitude,
      scale: 18,
      success: function (res) {
        resolve(res);
      },
      fail: function (res) {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {Obj} opt 参数
 * @return {Object}  弹框
 */
export let showModal = function (opt) {
  opt = Object.assign(
    {
      title: "",
      content: "",
      showCancel: true,
      cancelText: "取消",
      cancelColor: "#000000",
      confirmText: "确认",
      confirmColor: "#0370c8",
    },
    opt
  );
  return new Promise((resolve, reject) => {
    wx.showModal({
      ...opt,
      success: function (res) {
        resolve(res);
      },
      fail: (res) => {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {String} txt 提示文本
 * @param {String} time 显示时长
 * @return {Object}  提示信息
 */
export let showToast = function (txt, time) {
  return wx.showToast({
    title: txt || "",
    icon: "none",
    duration: 2000 || time,
  });
};

/**
 * @param {String} txt 提示文本
 * @return {Object}  loading
 */
export let showLoading = function (txt) {
  return wx.showLoading({
    title: txt || "",
    mask: true,
  });
};

/**
 * @param {String} txt 提示文本
 * @return {Object}  隐藏loading
 */
export let hideLoading = function (txt) {
  return wx.hideLoading();
};

/*
 * 图片上传
 */
export let uploadFile = function (opt, tempFilePaths) {
  return new Promise((resolve, reject) => {
    wx.uploadFile({
      url: (opt && opt.url) || "",
      filePath: tempFilePaths,
      header: {
        "Content-Type": "multipart/form-data",
      },
      name: "Filedata",
      formData: opt.data || {},
      success: function (res) {
        resolve(res);
      },
      fail(res) {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {String} url 图片地址
 * @return {Object}  选择图片
 */
export let chooseImage = function (url) {
  return new Promise((resolve, reject) => {
    wx.chooseImage({
      count: 1, // 默认9
      sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有
      sourceType: ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有
      success(res) {
        // res.tempFilePaths [] 多个
        resolve(res);
      },
      fail(res) {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {String} url 图片地址
 * @return {Object}  下载图片
 */
export let downloadFile = function (url) {
  return new Promise((resolve, reject) => {
    wx.downloadFile({
      url: url,
      success(res) {
        // res.tempFilePath
        if (res.statusCode === 200) {
          resolve(res);
        }else{
          res.failMsg = "0000";
          resolve(res);
        }
      },
      fail(res) {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {String} url 文件地址
 * @return {Object}  保存文件
 */
export let saveFile = function (url) {
  return new Promise((resolve, reject) => {
    wx.saveFile({
      tempFilePath: url,
      success(res) {
        // res.savedFilePath
        resolve(res);
      },
      fail(res) {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {String} url 预览pdf
 * @return {Object}  预览
 */
export let openDocument = function (url) {
  return new Promise((resolve, reject) => {
    wx.openDocument({
      filePath: url,
      showMenu:true,
      success(res) {
        resolve(res);
      },
      fail(res) {
        res.failMsg = "0000";
        resolve(res);
      },
    })
  });
};

/**
 * @param {Object}  res 图片信息
 * @return {Object}  保存图片
 */
export let saveImage = function (tempFilePath) {
  return new Promise((resolve, reject) => {
    wx.saveImageToPhotosAlbum({
      filePath: tempFilePath,
      success(res) {
        resolve(res);
      },
      fail(res) {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @param {Object} opt 支付需要的参数
 * @param {String} timeStamp 支付需要的参数
 * @param {String} nonceStr 支付需要的参数
 * @param {String} package 支付需要的参数
 * @param {String} signType 支付需要的参数
 * @param {String} paySign 支付需要的参数
 * @return {Object}  支付
 */
export let requestPayment = function (opt) {
  console.log(opt);
  return new Promise((resolve, reject) => {
    wx.requestPayment({
      ...opt,
      success: function (res) {
        resolve(res);
      },
      fail: function (res) {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @return {Object} 获取小程序网络类型
 */
export let getNetworkType = function () {
  return new Promise((resolve, reject) => {
    wx.getNetworkType({
      success: (res) => {
        resolve(res.networkType);
      },
      fail: (res) => {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * @return {Object} 监听网络状态变化事件
 */
export let onNetworkStatusChange = function () {
  return new Promise((resolve, reject) => {
    wx.onNetworkStatusChange((res) => {
      resolve(res);
    });
  });
};

/**
 * @return {Object} 拨打电话
 */
export let makePhoneCall = function (phoneNumber) {
  return new Promise((resolve, reject) => {
    wx.makePhoneCall({
      phoneNumber,
      success: (res) => {
        resolve(res);
      },
      fail: (res) => {
        res.failMsg = "0000";
        resolve(res);
      },
    });
  });
};

/**
 * 微信的跳转
 * @param {String} type 跳转方式
 * @param {String} url 跳转地址
 */
export let JumpRoute = function (type, url) {
  switch (type) {
    case "nav":
      wx.navigateTo({ url });
      break;
    case "tab":
      wx.switchTab({ url });
      break;
    case "reL":
      wx.reLaunch({ url });
      break;
    case "reD":
      wx.redirectTo({ url });
      break;
    case "back":
      wx.navigateBack({ delta: url || 1 });
      break;
  }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值