mpi.js 4.3 KB

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