mpi.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. let mpi = {}
  2. // 微信登陆
  3. mpi.wxLogin = () => {
  4. return new Promise((resolve, reject) => {
  5. uni.login({
  6. success: function(res) {
  7. resolve(res)
  8. },
  9. fail: function(err) {
  10. console.warn(err)
  11. reject(err)
  12. }
  13. })
  14. })
  15. }
  16. mpi.chooseLocation = () => {
  17. return new Promise((resolve, reject) => {
  18. uni.chooseLocation({
  19. success: function(res) {
  20. resolve(res)
  21. },
  22. fail: function(err) {
  23. reject(err)
  24. }
  25. });
  26. })
  27. }
  28. mpi.photoToBase64 = () => {
  29. uni.chooseImage({
  30. count: 9,
  31. success: res => {
  32. uni.request({
  33. url: res.tempFilePaths[0],
  34. method: 'GET',
  35. responseType: 'arraybuffer',
  36. success: resp => {
  37. let base64 = uni.arrayBufferToBase64(resp.data); //把arraybuffer转成base64
  38. base64 = 'data:image/jpeg;base64,' + base64; //不加上这串字符,在页面无法显示
  39. console.log(base64);
  40. }
  41. });
  42. }
  43. });
  44. }
  45. /**
  46. * 选择图片
  47. * size -1 大小无限制
  48. */
  49. mpi.chooseImage = (count = 1, size = -1) => {
  50. return new Promise((resolve, reject) => {
  51. uni.chooseImage({
  52. count,
  53. //最多可以选择的图片张数,默认9
  54. sourceType: ['album', 'camera'],
  55. sizeType: ['compressed'],
  56. //可选择原图或压缩后的图片
  57. success: res => {
  58. if (size!=-1&&res.tempFiles[0].size > size * 1024 * 1024) {
  59. uni.showToast({
  60. title: `上传的照片不能超过${size}m`,
  61. icon: "none"
  62. })
  63. return
  64. }
  65. resolve(res.tempFilePaths)
  66. },
  67. fail(err) {
  68. reject(err)
  69. }
  70. });
  71. })
  72. }
  73. mpi.downloadFile = (url) => {
  74. return new Promise((resolve, reject) => {
  75. uni.downloadFile({
  76. url, //仅为示例,并非真实的资源
  77. success: (res) => {
  78. if (res.statusCode === 200) {
  79. resolve(res.tempFilePath)
  80. } else {
  81. reject(res)
  82. }
  83. },
  84. fail: function(err) {
  85. reject(err)
  86. }
  87. });
  88. })
  89. }
  90. mpi.saveImg = (filePath) => {
  91. return new Promise((resolve, reject) => {
  92. uni.saveImageToPhotosAlbum({
  93. filePath,
  94. success: function(res) {
  95. uni.showToast({
  96. title: "保存成功",
  97. icon: "none"
  98. });
  99. resolve(res)
  100. },
  101. fail: function(err) {
  102. uni.showToast({
  103. title: "保存失败,请稍后重试",
  104. icon: "none"
  105. });
  106. reject(err)
  107. }
  108. });
  109. })
  110. }
  111. mpi.getLocation = () => {
  112. return new Promise((resolve, reject) => {
  113. uni.getLocation({
  114. type: 'gcj02',
  115. success: function(res) {
  116. resolve(res)
  117. },
  118. fail: function(err) {
  119. reject(err)
  120. }
  121. });
  122. })
  123. }
  124. mpi.getConnectedWifi = () => {
  125. return new Promise((resolve, reject) => {
  126. uni.startWifi({
  127. success: function(res) {
  128. wx.getConnectedWifi({
  129. success: res => {
  130. resolve(res)
  131. },
  132. fail: err => {
  133. reject(err)
  134. }
  135. })
  136. },
  137. fail: function(err) {
  138. reject(err)
  139. }
  140. });
  141. })
  142. }
  143. /**
  144. * 订阅认证信息
  145. */
  146. mpi.subscribe = (tmplIds) => {
  147. return new Promise((resolve, reject) => {
  148. uni.requestSubscribeMessage({
  149. tmplIds,
  150. success(res) {
  151. resolve(res)
  152. },
  153. fail(err) {
  154. reject(err)
  155. }
  156. })
  157. })
  158. },
  159. // 获取用户信息
  160. mpi.wxGetUserInfo = () => {
  161. return new Promise((resolve, reject) => {
  162. uni.getUserInfo({
  163. withCredentials: true,
  164. success: function(res) {
  165. resolve(res)
  166. },
  167. fail: function(err) {
  168. reject(err)
  169. },
  170. })
  171. })
  172. }
  173. //新版本的获取用户信息
  174. mpi.getUserProfile = () => {
  175. return new Promise((resolve, reject) => {
  176. uni.getUserProfile({
  177. desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
  178. success: (res) => {
  179. resolve(res)
  180. },
  181. fail: (err) => {
  182. reject(err)
  183. }
  184. })
  185. })
  186. }
  187. let compareVersion = (v1, v2) => {
  188. v1 = v1.split('.')
  189. v2 = v2.split('.')
  190. const len = Math.max(v1.length, v2.length)
  191. while (v1.length < len) {
  192. v1.push('0')
  193. }
  194. while (v2.length < len) {
  195. v2.push('0')
  196. }
  197. for (let i = 0; i < len; i++) {
  198. const num1 = parseInt(v1[i])
  199. const num2 = parseInt(v2[i])
  200. if (num1 > num2) {
  201. return 1
  202. } else if (num1 < num2) {
  203. return -1
  204. }
  205. }
  206. return 0
  207. }
  208. mpi.versioning = (minVersion) => {
  209. const version = wx.getSystemInfoSync().SDKVersion
  210. return new Promise((resolve, reject) => {
  211. if (compareVersion(version, minVersion) >= 0) {
  212. resolve()
  213. } else {
  214. uni.showModal({
  215. content: "当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。"
  216. })
  217. }
  218. })
  219. }
  220. export default mpi