index.vue 2.4 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. ...this.userInfo,
  61. });
  62. if (success) {
  63. // 将用户信息和session存储到本地
  64. setStorageObj('userInfo', data.user);
  65. setStorageObj('token', data.token);
  66. this.realoadPage();
  67. }
  68. } else {
  69. uni.showModal({
  70. title: '警告',
  71. content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入!',
  72. showCancel: false,
  73. confirmText: '返回授权',
  74. success: function (res) {
  75. if (res.confirm) {
  76. console.log('用户点击了“返回授权”');
  77. }
  78. },
  79. });
  80. }
  81. },
  82. realoadPage() {
  83. let pages = getCurrentPages(); //获取当前页面
  84. let beforePage = pages[pages.length - 2]; //获取上一个页面的实例
  85. //1、调用上一个页面onLoad
  86. beforePage.onLoad();
  87. uni.navigateBack({
  88. delta: 1,
  89. });
  90. },
  91. },
  92. };
  93. </script>
  94. <style lang="scss" src="./index.scss" />;