wxJsApi.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  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: ({
  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 chooseImage2() {
  77. let promise = new Promise((resolve, reject) => {
  78. wx.chooseImage({
  79. count: 1,
  80. sizeType: ['compressed'],
  81. sourceType: ['album', 'camera'],
  82. success: function(res) {
  83. resolve(res);
  84. }
  85. });
  86. });
  87. return promise;
  88. }
  89. //获取图片,用于多图上传时的递归处理
  90. export function getLocalImgData(localId, fun) {
  91. wx.getLocalImgData({
  92. localId: localId,
  93. success: function(res) {
  94. fun(res);
  95. }
  96. });
  97. }
  98. //上传图片
  99. export function uploadPic(imgBase64) {
  100. let promise = new Promise((resolve, reject) => {
  101. var formData = new FormData();
  102. formData.append('photoName', '1.jpg');
  103. formData.append('photoBase64Data', imgBase64);
  104. API_Common.uploadBase64(formData).then(response => {
  105. resolve(response);
  106. }).catch(error => {
  107. //mui.toast(error);
  108. reject(error);
  109. })
  110. });
  111. return promise;
  112. }
  113. //获取坐标
  114. export function getLocation() {
  115. if(process.env.NODE_ENV === "development" && process.car.SIMPLE_RUN){
  116. let promise =new Promise((resolve, reject) => {
  117. var obj= {
  118. longitude:112.284192,
  119. latitude:30.299891,
  120. errMsg:"getLocation:ok"
  121. }
  122. resolve(obj);
  123. })
  124. return promise
  125. }
  126. let promise = new Promise((resolve, reject) => {
  127. wx.ready(function() {
  128. wx.getLocation({
  129. type: 'gcj02', // 默认为wgs84的gps坐标,可传入'gcj02'
  130. success: function(res) {
  131. resolve(res);
  132. },
  133. faile: function(res) {
  134. reject(res);
  135. },
  136. fail: function(res) {
  137. if (res.errMsg == 'getLocation:timeout') {
  138. res="定位超时,请检查是否开启'定位'"
  139. } else if (res.errMsg == 'getLocation:ERROR_NETWORK') {
  140. //mui.alert("网络异常");
  141. res="定位超时,请检查是否开启'定位'"
  142. } else if (res.errMsg == 'getLocation:ERROR_NOCELL&WIFI_LOCATIONSWITCHOFF') {
  143. res="没开启系统定位"
  144. //mui.alert("没开启系统定位");
  145. } else if (res.errMsg == 'getLocation:system permission denied') {
  146. res="未给微信位置授权"
  147. //mui.alert("未给微信位置授权");
  148. } else if (res.errMsg == 'getLocation:location permission') {
  149. res="未给微信位置授权"
  150. //mui.alert("未给微信位置授权");
  151. } else if (res.errMsg == 'getLocation:auth denied') {
  152. res="用户在小程序中未授权"
  153. //mui.alert("用户在小程序中未授权");
  154. } else if (res.errMsg == 'getLocation:fail authorize no response') {
  155. res="用户在小程序中未授权"
  156. //mui.alert("用户在小程序中未授权");
  157. } else if (res.errMsg == 'getLocation:gps closed') {
  158. res="用户已取消定位"
  159. //mui.alert("用户已取消定位");
  160. }
  161. reject(res);
  162. },
  163. complete() {}
  164. })
  165. })
  166. })
  167. return promise;
  168. }
  169. //扫描二维码
  170. export function scanQRCode(needResult,obj) {
  171. var needResult = needResult || 1;
  172. let promise = new Promise((resolve, reject) => {
  173. wx.scanQRCode({
  174. needResult: needResult,
  175. scanType: ["qrCode"],
  176. success: function(res) {
  177. var url = res.resultStr;
  178. resolve(url);
  179. },
  180. faile: function(res) {
  181. reject(res);
  182. },
  183. fail: function(res) {
  184. reject(res);
  185. },
  186. complete() {
  187. if(obj){
  188. obj.showLoading(false)
  189. }
  190. }
  191. })
  192. });
  193. return promise;
  194. }
  195. export function requestSubscribeMessage(sz) {
  196. let promise = new Promise((resolve, reject) => {
  197. wx.ready(function() {
  198. wx.requestSubscribeMessage({
  199. tmplIds: sz,
  200. success(res) {
  201. resolve(res);
  202. }
  203. })
  204. })
  205. });
  206. return promise;
  207. }
  208. //扫描二维码
  209. export function openLocation(obj) {
  210. let promise = new Promise((resolve, reject) => {
  211. wx.openLocation(obj)
  212. });
  213. return promise;
  214. }