wxLogin.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. <template>
  2. <view class="content">
  3. <!-- #ifndef H5 -->
  4. <!-- <image class="bg-img" :src="baseURL+urlFile+'/img/img09.png'" mode=" scaleToFill"></image> -->
  5. <image class="logo-img-box" src="https://mmz.liuniu946.com/statics/img/img02.png" >
  6. </image>
  7. <image class="logo-img" src="https://mmz.liuniu946.com/statics/img/img48.png" mode=" aspectFit"></image>
  8. <button class="userInfo" type="warn" open-type="getUserInfo" @getuserinfo='userInfoData'>
  9. <text class="iconfont iconweixin"></text>
  10. <text >
  11. 微信授权登录
  12. </text>
  13. </button>
  14. <!-- <button class="userInfo" @click="show = true" v-if="show != true">点击</button> -->
  15. <!-- <view class="login_input flex-start" v-if="show == true" @click="isshow = true">
  16. <view class="login_img"><image src="/static/img/img06.png"></image></view>
  17. <view class="login_name"><input class="uni-input" type="text" v-model="spread" focus placeholder="请重复邀请人的id" /></view>
  18. </view> -->
  19. <!-- #endif -->
  20. </view>
  21. </template>
  22. <script>
  23. import { mapMutations, mapState } from 'vuex';
  24. // #ifdef MP-WEIXIN
  25. import { loginWinxinMp } from '@/utils/wxMinProgram';
  26. import { wechatMpAuth } from '@/api/wx';
  27. // #endif
  28. // #ifdef H5
  29. import { loginWinxin } from '@/utils/wxAuthorized';
  30. // #endif
  31. import { getUserInfo, bangding } from '@/api/login.js';
  32. export default {
  33. data() {
  34. return {
  35. userInfo: {}, //授权用户信息
  36. code: '', //授权code
  37. selected: false,
  38. disabled: false,
  39. MaskShow: false,
  40. address: '',
  41. cache_key: '',
  42. iv: '',
  43. encryptedData: '',
  44. loding:false,//判断是否在点击中
  45. };
  46. },
  47. onShow(option) {
  48. this.loadData();
  49. },
  50. methods: {
  51. ...mapMutations(['login', 'setUserInfo']),
  52. // 获取微信登录信息
  53. loadData() {
  54. // #ifdef H5
  55. loginWinxin();
  56. // #endif
  57. // #ifdef MP-WEIXIN
  58. let obj = this;
  59. wx.login({
  60. success(e) {
  61. obj.code = e.code;
  62. },
  63. fail: function(e) {
  64. }
  65. });
  66. // #endif
  67. },
  68. // 用户确认授权
  69. userInfoData(e) {
  70. this.disabled = true;
  71. console.log(e,55)
  72. let user = e.detail;
  73. user.code = this.code;
  74. if(!this.loding){
  75. this.loadMp(user);
  76. }
  77. },
  78. // #ifdef MP-WEIXIN
  79. // 登录
  80. loadMp(option) {
  81. let obj = this;
  82. obj.loding = true;
  83. // 获取登录授权页数据
  84. // 获取推广人id
  85. let spread_spid = uni.getStorageSync('spread') || '';
  86. let spread_code = uni.getStorageSync('spread_code') || '';
  87. wechatMpAuth({
  88. code: option.code,
  89. iv: option.iv,
  90. encryptedData: option.encryptedData,
  91. spread_spid: spread_spid,
  92. spread_code: spread_code,
  93. login_type:'routine'
  94. }).then(({ data }) => {
  95. obj.loding = false;
  96. obj.wchatAuth(data);
  97. }).catch((e) => {
  98. obj.loding = false;
  99. });
  100. },
  101. // #endif
  102. wchatAuth(data) {
  103. let obj = this;
  104. // 保存token
  105. uni.setStorageSync('token', data.token);
  106. obj.cache_key = data.cache_key;
  107. // 获取用户基础信息
  108. getUserInfo({}).then(e => {
  109. obj.login();
  110. // 保存返回用户数据
  111. obj.setUserInfo(e.data);
  112. obj.ToIndex();
  113. });
  114. },
  115. // 绑定手机号
  116. // PhoneNumber(e) {
  117. // let obj = this;
  118. // obj.MaskShow = false;
  119. // (obj.iv = e.detail.iv), (obj.encryptedData = e.detail.encryptedData);
  120. // bangding({
  121. // flag: 1,
  122. // cache_key: obj.cache_key,
  123. // code: obj.code,
  124. // iv: obj.iv,
  125. // encryptedData: obj.encryptedData
  126. // }).then(function(e) {
  127. // if (e.data.is_bind == 1) {
  128. // console.log('bangding1')
  129. // bangding({
  130. // flag: 1,
  131. // cache_key: obj.cache_key,
  132. // code: obj.code,
  133. // iv: obj.iv,
  134. // encryptedData: obj.encryptedData,
  135. // step: 1
  136. // })
  137. // .then(function(e) {
  138. // // 获取用户基础信息
  139. // obj.GetUser();
  140. // obj.$api.msg(e.msg);
  141. // obj.$nextTick(function() {
  142. // obj.ToIndex();
  143. // });
  144. // })
  145. // .catch(e => {
  146. // console.log(e);
  147. // });
  148. // } else {
  149. // console.log('bangding2')
  150. // obj.$api.msg(e.msg);
  151. // // 获取用户基础信息
  152. // obj.GetUser();
  153. // obj.$api.msg(e.msg);
  154. // obj.$nextTick(function() {
  155. // obj.ToIndex();
  156. // });
  157. // }
  158. // });
  159. // },
  160. // GetUser() {
  161. // // 获取用户基础信息
  162. // getUserInfo({})
  163. // .then(({ data }) => {
  164. // this.setUserInfo(data);
  165. // })
  166. // .catch(e => {
  167. // console.log(e);
  168. // });
  169. // },
  170. ToIndex() {
  171. let obj = this;
  172. let ur = uni.getStorageSync('present') || '/pages/index/index';
  173. // 用于处理缓存bug
  174. if (ur == 'pages/product/product') {
  175. ur = '/pages/index/index';
  176. }
  177. uni.switchTab({
  178. url: ur,
  179. fail(e) {
  180. uni.navigateTo({
  181. url: ur,
  182. fail(e) {
  183. uni.navigateTo({
  184. url: '/pages/index/index'
  185. });
  186. }
  187. });
  188. }
  189. });
  190. }
  191. }
  192. };
  193. </script>
  194. <style lang="scss">
  195. page,
  196. .content {
  197. height: 100%;
  198. }
  199. .login_input {
  200. background:#f2f2f2;
  201. padding: 35rpx 25rpx;
  202. margin-bottom: 45rpx;
  203. border-radius: 15rpx;
  204. .login_img image {
  205. height: 37rpx;
  206. width: 31rpx;
  207. margin-right: 30rpx;
  208. }
  209. .login_name {
  210. color: #333333;
  211. .uni-input {
  212. text-align: left;
  213. width: 380rpx;
  214. font-size: 30rpx !important;
  215. color:#666666;
  216. }
  217. .code {
  218. color: #FC4141;
  219. font-size: 23rpx;
  220. border-left: 1px solid #666666;
  221. width: 180rpx;
  222. flex-shrink: 0;
  223. text-align: center;
  224. }
  225. }
  226. }
  227. .bg-img,
  228. .logo-img-box {
  229. width: 750rpx;
  230. height: 600rpx;
  231. }
  232. .logo-img {
  233. position: absolute;
  234. top:180rpx;
  235. left:255rpx;
  236. width: 240rpx;
  237. height: 240rpx;
  238. }
  239. .userInfo {
  240. margin: 0 50rpx;
  241. margin-top: 100rpx;
  242. color: #FFFFFF;
  243. border-radius: 10rpx;
  244. background-color: $base-color !important;
  245. }
  246. </style>