wxJsApi.js 5.5 KB

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