wxJsApi.js 5.6 KB

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