wxJsApi.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  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. if(process.env.NODE_ENV === "development" && process.car.SIMPLE_RUN){
  102. let promise =new Promise((resolve, reject) => {
  103. var obj= {
  104. longitude:112.28541,
  105. latitude:30.308354,
  106. errMsg:"getLocation:ok"
  107. }
  108. resolve(obj);
  109. })
  110. return promise
  111. }
  112. let promise = new Promise((resolve, reject) => {
  113. wx.ready(function() {
  114. wx.getLocation({
  115. type: 'gcj02', // 默认为wgs84的gps坐标,可传入'gcj02'
  116. success: function(res) {
  117. resolve(res);
  118. },
  119. faile: function(res) {
  120. reject(res);
  121. },
  122. fail: function(res) {
  123. if (res.errMsg == 'getLocation:timeout') {
  124. res="定位超时,请检查是否开启'定位'"
  125. } else if (res.errMsg == 'getLocation:ERROR_NETWORK') {
  126. //mui.alert("网络异常");
  127. res="定位超时,请检查是否开启'定位'"
  128. } else if (res.errMsg == 'getLocation:ERROR_NOCELL&WIFI_LOCATIONSWITCHOFF') {
  129. res="没开启系统定位"
  130. //mui.alert("没开启系统定位");
  131. } else if (res.errMsg == 'getLocation:system permission denied') {
  132. res="未给微信位置授权"
  133. //mui.alert("未给微信位置授权");
  134. } else if (res.errMsg == 'getLocation:location permission') {
  135. res="未给微信位置授权"
  136. //mui.alert("未给微信位置授权");
  137. } else if (res.errMsg == 'getLocation:auth denied') {
  138. res="用户在小程序中未授权"
  139. //mui.alert("用户在小程序中未授权");
  140. } else if (res.errMsg == 'getLocation:fail authorize no response') {
  141. res="用户在小程序中未授权"
  142. //mui.alert("用户在小程序中未授权");
  143. } else if (res.errMsg == 'getLocation:gps closed') {
  144. res="用户已取消定位"
  145. //mui.alert("用户已取消定位");
  146. }
  147. reject(res);
  148. },
  149. complete() {}
  150. })
  151. })
  152. })
  153. return promise;
  154. }
  155. //扫描二维码
  156. export function scanQRCode(needResult,obj) {
  157. var needResult = needResult || 1;
  158. let promise = new Promise((resolve, reject) => {
  159. wx.scanQRCode({
  160. needResult: needResult,
  161. scanType: ["qrCode"],
  162. success: function(res) {
  163. var url = res.resultStr;
  164. resolve(url);
  165. },
  166. faile: function(res) {
  167. reject(res);
  168. },
  169. fail: function(res) {
  170. reject(res);
  171. },
  172. complete() {
  173. if(obj){
  174. obj.showLoading(false)
  175. }
  176. }
  177. })
  178. });
  179. return promise;
  180. }
  181. export function requestSubscribeMessage(sz) {
  182. let promise = new Promise((resolve, reject) => {
  183. wx.ready(function() {
  184. wx.requestSubscribeMessage({
  185. tmplIds: sz,
  186. success(res) {
  187. resolve(res);
  188. }
  189. })
  190. })
  191. });
  192. return promise;
  193. }
  194. //扫描二维码
  195. export function openLocation(obj) {
  196. let promise = new Promise((resolve, reject) => {
  197. wx.openLocation(obj)
  198. });
  199. return promise;
  200. }