index.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <view
  3. class="login-container"
  4. :style="{
  5. background: `url(${getImageUrl(ICON_CFG.login_bg)}) no-repeat `,
  6. backgroundSize: '100%',
  7. }"
  8. >
  9. <view class="login-tel">
  10. <u--input
  11. prefixIcon="phone"
  12. placeholder="输入手机号"
  13. border="none"
  14. type="number"
  15. maxlength="11"
  16. v-model="tel"
  17. ></u--input>
  18. </view>
  19. <button class="login-btn" open-type="getUserInfo" @getuserinfo="getUserInfo">
  20. <u-icon name="weixin-fill" color="#fefefe" size="28"></u-icon>
  21. 一键微信登录
  22. </button>
  23. </view>
  24. </template>
  25. <script>
  26. import { ICON_CFG } from '@/common/EnumConst';
  27. import { getImageUrl, setStorageObj, syncWxlogin } from '@/util';
  28. export default {
  29. name: 'login',
  30. props: {},
  31. data() {
  32. return {
  33. ICON_CFG,
  34. tel: '',
  35. };
  36. },
  37. created() {
  38. },
  39. onLoad() {
  40. },
  41. methods: {
  42. getImageUrl,
  43. // 获取用户信息
  44. async getUserInfo(e) {
  45. if (e.mp.detail.userInfo) {
  46. this.userInfo = e.mp.detail.userInfo;
  47. this.hasUserInfo = true;
  48. if (!uni.$u.test.mobile(this.tel)) {
  49. uni.showToast({
  50. title: '请输入正确的手机号',
  51. icon: 'none',
  52. });
  53. return;
  54. }
  55. const {
  56. success,
  57. data,
  58. } = await syncWxlogin({
  59. tel: this.tel,
  60. });
  61. if (success) {
  62. // 将用户信息和session存储到本地
  63. setStorageObj('userInfo', data.user);
  64. setStorageObj('token', data.token);
  65. this.realoadPage();
  66. }
  67. } else {
  68. uni.showModal({
  69. title: '警告',
  70. content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入!',
  71. showCancel: false,
  72. confirmText: '返回授权',
  73. success: function (res) {
  74. if (res.confirm) {
  75. console.log('用户点击了“返回授权”');
  76. }
  77. },
  78. });
  79. }
  80. },
  81. realoadPage() {
  82. let pages = getCurrentPages(); //获取当前页面
  83. let beforePage = pages[pages.length - 2]; //获取上一个页面的实例
  84. //1、调用上一个页面onLoad
  85. beforePage.onLoad();
  86. uni.navigateBack({
  87. delta: 1,
  88. });
  89. },
  90. },
  91. };
  92. </script>
  93. <style lang="scss" src="./index.scss" />;