wxJsApi.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. import wx from 'weixin-js-sdk'
  2. import * as API_WeiXin from '@/apis/weixin.js'
  3. import * as API_Common from '@/apis/common.js'
  4. import Qs from 'qs';
  5. import request from './request.js'
  6. export function addSysLog(message) {
  7. return request({
  8. url: '/mobile/sysLogApi/submit',
  9. data: Qs.stringify({
  10. message: JSON.stringify(message)
  11. }),
  12. method: 'post',
  13. })
  14. }
  15. //获取微信配置
  16. export function getWxConfig(jsApiList) {
  17. var jsApiList = jsApiList || ['chooseImage', 'getLocalImgData', 'scanQRCode','openLocation'];
  18. let promise = (jsApiList => {
  19. return new Promise((resolve, reject) => {
  20. // console.log(jsApiList);
  21. API_WeiXin.getConfig().then(response => {
  22. var wxconfig = response.data.wxConfig;
  23. wx.config({
  24. debug: false, // 开启调试模式,
  25. appId: wxconfig.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
  26. timestamp: wxconfig.timestamp, // 必填,生成签名的时间戳
  27. nonceStr: wxconfig.nonceStr, // 必填,生成签名的随机串
  28. signature: wxconfig.signature, // 必填,签名,见附录1
  29. jsApiList: jsApiList, // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  30. openTagList:['wx-open-subscribe']
  31. });
  32. wx.ready(function() {
  33. resolve(response.data);
  34. })
  35. wx.error(function(res) {
  36. reject('微信api配置出错');
  37. });
  38. }).catch(error => {
  39. //mui.toast(error);
  40. reject(error);
  41. })
  42. })
  43. })(jsApiList)
  44. return promise;
  45. }
  46. //选择图片,多图上传和单图上传的回调处理不一样
  47. export function chooseImage(count,islocalId) {
  48. var count = count || 1;
  49. let promise = new Promise((resolve, reject) => {
  50. wx.chooseImage({
  51. count: count,
  52. sizeType: ['compressed'],
  53. sourceType: ['album', 'camera'],
  54. success: function(res) {
  55. var localIds = res.localIds;
  56. if(islocalId){
  57. resolve(localIds);
  58. }else{
  59. if (count == 1) {
  60. wx.getLocalImgData({
  61. localId: localIds[0],
  62. success: function(res) {
  63. resolve(res);
  64. }
  65. });
  66. } else {
  67. resolve(localIds);
  68. }
  69. }
  70. }
  71. });
  72. });
  73. return promise;
  74. }
  75. //获取图片,用于多图上传时的递归处理
  76. export function getLocalImgData(localId, fun) {
  77. wx.getLocalImgData({
  78. localId: localId,
  79. success: function(res) {
  80. fun(res);
  81. }
  82. });
  83. }
  84. //上传图片
  85. export function uploadPic(imgBase64) {
  86. let promise = new Promise((resolve, reject) => {
  87. var formData = new FormData();
  88. formData.append('photoName', '1.jpg');
  89. formData.append('photoBase64Data', imgBase64);
  90. API_Common.uploadBase64(formData).then(response => {
  91. resolve(response);
  92. }).catch(error => {
  93. //mui.toast(error);
  94. reject(error);
  95. })
  96. });
  97. return promise;
  98. }
  99. //获取坐标
  100. export function getLocation() {
  101. let promise = new Promise((resolve, reject) => {
  102. wx.ready(function() {
  103. wx.getLocation({
  104. type: 'gcj02', // 默认为wgs84的gps坐标,可传入'gcj02'
  105. success: function(res) {
  106. resolve(res);
  107. },
  108. faile: function(res) {
  109. reject(res);
  110. },
  111. fail: function(res) {
  112. if (res.errMsg == 'getLocation:timeout') {
  113. res="定位超时,请检查是否开启'定位'"
  114. } else if (res.errMsg == 'getLocation:ERROR_NETWORK') {
  115. //mui.alert("网络异常");
  116. res="定位超时,请检查是否开启'定位'"
  117. } else if (res.errMsg == 'getLocation:ERROR_NOCELL&WIFI_LOCATIONSWITCHOFF') {
  118. res="没开启系统定位"
  119. //mui.alert("没开启系统定位");
  120. } else if (res.errMsg == 'getLocation:system permission denied') {
  121. res="未给微信位置授权"
  122. //mui.alert("未给微信位置授权");
  123. } else if (res.errMsg == 'getLocation:location permission') {
  124. res="未给微信位置授权"
  125. //mui.alert("未给微信位置授权");
  126. } else if (res.errMsg == 'getLocation:auth denied') {
  127. res="用户在小程序中未授权"
  128. //mui.alert("用户在小程序中未授权");
  129. } else if (res.errMsg == 'getLocation:fail authorize no response') {
  130. res="用户在小程序中未授权"
  131. //mui.alert("用户在小程序中未授权");
  132. } else if (res.errMsg == 'getLocation:gps closed') {
  133. res="用户已取消定位"
  134. //mui.alert("用户已取消定位");
  135. }
  136. reject(res);
  137. },
  138. complete() {}
  139. })
  140. })
  141. })
  142. return promise;
  143. }
  144. //扫描二维码
  145. export function scanQRCode(needResult,obj) {
  146. var needResult = needResult || 1;
  147. let promise = new Promise((resolve, reject) => {
  148. wx.scanQRCode({
  149. needResult: needResult,
  150. scanType: ["qrCode"],
  151. success: function(res) {
  152. var url = res.resultStr;
  153. resolve(url);
  154. },
  155. faile: function(res) {
  156. reject(res);
  157. },
  158. fail: function(res) {
  159. reject(res);
  160. },
  161. complete() {
  162. if(obj){
  163. obj.showLoading(false)
  164. }
  165. }
  166. })
  167. });
  168. return promise;
  169. }
  170. export function requestSubscribeMessage(sz) {
  171. let promise = new Promise((resolve, reject) => {
  172. wx.ready(function() {
  173. wx.requestSubscribeMessage({
  174. tmplIds: sz,
  175. success(res) {
  176. resolve(res);
  177. }
  178. })
  179. })
  180. });
  181. return promise;
  182. }