| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- let mpi = {}
- const tips = (title) => {
- uni.showToast({
- title,
- icon: "none"
- });
- }
- const getScopeDesc = (name) => {
- let title = ''
- switch (name) {
- case 'userInfo':
- title = '用户信息'
- break;
- case 'userLocation':
- title = '地理位置'
- break;
- case 'userLocationBackground':
- title = "后台定位"
- break;
- case 'address':
- title = "通讯地址"
- break;
- case 'record':
- title = "录音功能"
- break;
- case 'writePhotosAlbum':
- title = "添加到相册"
- break;
- case 'camera':
- title = "摄像头"
- break;
- case 'invoice':
- title = "获取发票"
- break;
- case 'invoiceTitle':
- title = "发票抬头"
- break;
- case 'werun':
- title = "微信运动步数"
- break;
- default:
- break;
- }
- return title
- }
- const settingModal = (content) => {
- uni.showModal({
- title: '提示',
- content,
- confirmText: '去设置',
- cancelText: '暂不设置',
- confirmColor: '#EF9944',
- success: data => {
- if (data.confirm) {
- uni.openSetting();
- }
- }
- });
- }
- //打开设置
- const openSetting = (authName) => {
- return new Promise((resolve, reject) => {
- const scopeDesc = getScopeDesc(authName)
- let content = `请先在设置页面打开“${scopeDesc}”使用权限`
- authName = `scope.${authName}`
- uni.getSetting({
- success: (res) => {
- console.log(res.authSetting);
- let status = res.authSetting[authName]
- if (status == undefined) {
- //首次授权
- uni.authorize({
- scope: authName,
- success: (res) => {
- //成功授权
- resolve(res)
- }
- })
- return
- }
- if (status) {
- // 已授权
- resolve(res)
- } else {
- //未授权
- settingModal(content)
- }
- }
- })
- })
- }
- // 微信登陆
- mpi.wxLogin = () => {
- return new Promise((resolve, reject) => {
- uni.login({
- success: function(res) {
- resolve(res)
- },
- fail: function(err) {
- console.warn(err)
- reject(err)
- }
- })
- })
- }
- //选择图片 res.tempFilePaths[0]
- mpi.chooseImage = (count = 1, size = 2) => {
- return new Promise((resolve, reject) => {
- uni.chooseImage({
- count,
- //最多可以选择的图片张数,默认9
- sourceType: ['album', 'camera'],
- sizeType: ['compressed'],
- //可选择原图或压缩后的图片
- success: res => {
- if (res.tempFiles[0].size > size * 1024 * 1024) {
- uni.showToast({
- title: `上传的照片不能超过${size}m`,
- icon: "none"
- })
- return
- }
- resolve(res.tempFilePaths)
- },
- fail(err) {
- reject(err)
- }
- });
- })
- }
- mpi.downloadFile = (url) => {
- return new Promise((resolve, reject) => {
- uni.downloadFile({
- url, //仅为示例,并非真实的资源
- success: (res) => {
- if (res.statusCode === 200) {
- resolve(res.tempFilePath)
- } else {
- reject(res)
- }
- },
- fail: function(err) {
- reject(err)
- }
- });
- })
- }
- mpi.saveImg = (filePath) => {
- return new Promise((resolve, reject) => {
- openSetting('writePhotosAlbum').then(() => {
- uni.saveImageToPhotosAlbum({
- filePath,
- success: function(res) {
- uni.showToast({
- title: "保存成功",
- icon: "none"
- });
- resolve(res)
- },
- fail: function(err) {
- tips('保存失败,请稍后重试')
- reject(err)
- }
- });
- })
- })
- }
- mpi.chooseLocation = () => {
- return new Promise((resolve, reject) => {
- openSetting('userLocation').then(() => {
- uni.chooseLocation({
- success(res) {
- resolve(res)
- },
- fail(err) {
- reject(err)
- }
- })
- })
- })
- }
- mpi.getLocation = () => {
- return new Promise((resolve, reject) => {
- uni.getLocation({
- type: 'gcj02',
- success: function(res) {
- resolve(res)
- },
- fail: function(err) {
- reject(err)
- }
- });
- })
- }
- mpi.getConnectedWifi = () => {
- return new Promise((resolve, reject) => {
- uni.startWifi({
- success: function(res) {
- wx.getConnectedWifi({
- success: res => {
- resolve(res)
- },
- fail: err => {
- reject(err)
- }
- })
- },
- fail: function(err) {
- reject(err)
- }
- });
- })
- }
- /**
- * 订阅认证信息
- */
- mpi.subscribe = (tmplIds) => {
- return new Promise((resolve, reject) => {
- uni.requestSubscribeMessage({
- tmplIds,
- success(res) {
- console.log(res);
- resolve(res)
- },
- fail(err) {
- console.log(err);
- reject(err)
- }
- })
- })
- },
- // 获取用户信息
- mpi.wxGetUserInfo = () => {
- return new Promise((resolve, reject) => {
- uni.getUserInfo({
- withCredentials: true,
- success: function(res) {
- resolve(res)
- },
- fail: function(err) {
- reject(err)
- },
- })
- })
- }
- //新版本的获取用户信息
- mpi.getUserProfile = () => {
- return new Promise((resolve, reject) => {
- uni.getUserProfile({
- desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
- success: (res) => {
- resolve(res)
- },
- fail: (err) => {
- reject(err)
- }
- })
- })
- }
- let compareVersion = (v1, v2) => {
- v1 = v1.split('.')
- v2 = v2.split('.')
- const len = Math.max(v1.length, v2.length)
- while (v1.length < len) {
- v1.push('0')
- }
- while (v2.length < len) {
- v2.push('0')
- }
- for (let i = 0; i < len; i++) {
- const num1 = parseInt(v1[i])
- const num2 = parseInt(v2[i])
- if (num1 > num2) {
- return 1
- } else if (num1 < num2) {
- return -1
- }
- }
- return 0
- }
- mpi.versioning = (minVersion) => {
- const version = wx.getSystemInfoSync().SDKVersion
- return new Promise((resolve, reject) => {
- if (compareVersion(version, minVersion) >= 0) {
- resolve()
- } else {
- uni.showModal({
- content: "当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。"
- })
- }
- })
- }
- export default mpi
|