wxAuthorized.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. import {
  2. wechatConfig,
  3. share,
  4. getWxconfig
  5. } from '@/api/wx';
  6. import {
  7. getCompany
  8. } from '@/api/index.js'
  9. import store from '../store';
  10. // 保存wx对象
  11. let weixinObj = require('jweixin-module');
  12. // 保存分享数据
  13. let shareData = '';
  14. // 保存注册返回appId数据
  15. let appId = '';
  16. //微信登录
  17. /**
  18. * @param {string} 当前页面地址信息
  19. */
  20. export function loginWinxin() {
  21. let pages, page, path;
  22. try {
  23. pages = getCurrentPages();
  24. // 获取跳转前页面
  25. page = pages[pages.length - 1];
  26. // 获取跳转前路由地址
  27. path = page.route;
  28. } catch (e) {
  29. console.log(e);
  30. }
  31. // 判断是否在登录页
  32. if (path != 'pages/redirect/redirect') {
  33. setTimeout((e) => {
  34. weixinObj.ready(() => {
  35. console.log('weixinObj.ready');
  36. // 调用
  37. try {
  38. console.log(shareData);
  39. console.log(path);
  40. weixinSq(shareData, path);
  41. } catch (e) {
  42. console.log(e);
  43. //TODO handle the exception
  44. }
  45. });
  46. weixinObj.error((e) => {
  47. console.log(e);
  48. })
  49. }, 10)
  50. }
  51. };
  52. // 微信授权登录
  53. function weixinSq(data, path) {
  54. // 微信授权后跳转页面
  55. try {
  56. let ul = encodeURIComponent(store.state.baseURL + store.state.urlFile + '/#/pages/redirect/redirect');
  57. console.log(ul, "ul")
  58. // 打开微信授权页面
  59. let url =
  60. 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' +
  61. appId +
  62. '&redirect_uri=' +
  63. ul +
  64. '&response_type=code&scope=snsapi_userinfo&state=' +
  65. new Date().getTime() +
  66. '#wechat_redirect';
  67. console.log(url, "url")
  68. window.location.href = url;
  69. } catch (e) {
  70. console.log(e);
  71. }
  72. };
  73. // 微信注册
  74. export function weixindata(config) {
  75. // console.log(config);
  76. //注册微信信息
  77. let weixinObj = require('jweixin-module');
  78. // 保存微信对象到全局仓库
  79. store.commit('setWeiChatObj', weixinObj)
  80. console.log(window.location.href);
  81. console.log('当前注册url地址', window.location.href);
  82. getWxconfig({
  83. url: store.state.baseURL + store.state.urlFile + '/',
  84. }).then(({
  85. data
  86. }) => {
  87. appId = data.appId;
  88. // 微信信息配置
  89. weixinObj.config({
  90. debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  91. appId: data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
  92. timestamp: data.timestamp, // 必填,生成签名的时间戳
  93. nonceStr: data.nonceStr, // 必填,生成签名的随机串
  94. signature: data.signature, // 必填,签名,见附录1
  95. jsApiList: data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  96. });
  97. weixinObj.ready((e) => {
  98. console.log('分享数据', shareData);
  99. if (shareData == '') {
  100. getCompany().then(({
  101. data
  102. }) => {
  103. // 保存appId
  104. shareData = {
  105. title: data.company_name,
  106. imgUrl: data.wechat_share_image,
  107. desc: data.share_info,
  108. }
  109. shareLoad(config)
  110. })
  111. } else {
  112. shareLoad(config)
  113. }
  114. })
  115. })
  116. // wechatConfig({
  117. // // url: 'pages/applic/location',
  118. // url: store.state.baseURL+ store.state.urlFile+'/',
  119. // })
  120. // .then(({
  121. // data
  122. // }) => {
  123. // // uni.showModal({
  124. // // // url: 'http://yyred.igxys.com/index/',
  125. // // title:'地址',
  126. // // content: window.location.href
  127. // // })
  128. // // 保存appId
  129. // store.commit('setWeiChatInfo', data)
  130. // appId = data.appId;
  131. // // 微信信息配置
  132. // weixinObj.config({
  133. // debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  134. // appId: data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
  135. // timestamp: data.timestamp, // 必填,生成签名的时间戳
  136. // nonceStr: data.nonceStr, // 必填,生成签名的随机串
  137. // signature: data.signature, // 必填,签名,见附录1
  138. // jsApiList: data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  139. // });
  140. // weixinObj.ready((e) => {
  141. // console.log('分享数据',shareData);
  142. // if (shareData == '') {
  143. // share({}).then(({
  144. // data
  145. // }) => {
  146. // shareData = data.data
  147. // shareLoad(config)
  148. // });
  149. // } else {
  150. // shareLoad(config)
  151. // }
  152. // })
  153. // })
  154. // .catch(e => {
  155. // console.log(e);
  156. // });
  157. }
  158. // 加载分享数据
  159. function shareLoad(config) {
  160. let mess;
  161. if (config) {
  162. mess = {
  163. link: config.link, // 分享链接
  164. imgUrl: config.imgUrl,
  165. desc: config.desc,
  166. title: config.title,
  167. success: config.success,
  168. fail: config.fail || function(e) {
  169. console.log(e);
  170. }
  171. }
  172. } else {
  173. // console.log(window.location.href, 55)
  174. // let url = window.location.href + '?spread=' + store.state.userInfo.uid;
  175. let url = window.location.href;
  176. url = url.replace(/[\?,&]{0,1}from=singlemessage/g, '');
  177. mess = {
  178. title: store.state.baseName,
  179. link: url, // 分享链接
  180. imgUrl: store.state.baseURL + '/index/static/img/002.png', // 分享图标
  181. desc: store.state.shareDesc,
  182. success: function() {},
  183. fail: function(e) {
  184. console.log(e);
  185. }
  186. }
  187. }
  188. // 获取仓库数据
  189. // 分享好友
  190. // weixinObj.updateAppMessageShareData(mess);
  191. weixinObj.onMenuShareAppMessage(mess); // 即将废弃
  192. // 分享朋友圈
  193. // weixinObj.updateTimelineShareData(mess)
  194. weixinObj.onMenuShareTimeline(mess); // 即将废弃
  195. }
  196. // 隐藏功能按钮
  197. export function weixinhideMenu(config) {
  198. console.log(config)
  199. weixinObj.ready((e) => {
  200. weixinObj.hideMenuItems({
  201. menuList: config, // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3
  202. });
  203. })
  204. }
  205. // export function getLoca(config) {
  206. // console.log(config)
  207. // weixinObj.ready((e) => {
  208. // weixinObj.getLocation({
  209. // type: 'wgs84',
  210. // success: function (res) {
  211. // config.longitude = res.longitude;
  212. // config.latitude = res.latitude;
  213. // uni.showModal({
  214. // title: '提示',
  215. // content: res.longitude
  216. // })
  217. // console.log('当前位置的经度:' + res.longitude);
  218. // console.log('当前位置的纬度:' + res.latitude);
  219. // }
  220. // });
  221. // })
  222. // }
  223. export default {
  224. weixinObj,
  225. shareData,
  226. appId
  227. }