login.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <template>
  2. <view v-if="mpWechatLogin">
  3. <!-- 背景 -->
  4. <view class="login-ball small"></view>
  5. <view class="logo-cell">
  6. <image class="logo" src="/static/logo.png" mode="aspectFit"></image>
  7. </view>
  8. <view class="title">南粤商城</view>
  9. <!-- 验证码登录 -->
  10. <codeLogin @open="open" :status="value" v-if="login && loginData.code" />
  11. <!-- 账号密码登录 -->
  12. <onClickLogin @open="open" :status="value" v-if="login && loginData.click" />
  13. <view class="form"> </view>
  14. <!-- 隐私政策 -->
  15. <div class="privacy">
  16. <u-checkbox-group :icon-size="24" width="45rpx">
  17. <u-checkbox v-model="value" active-color="rgb(255, 107, 53)"></u-checkbox>
  18. </u-checkbox-group>
  19. 同意<span @click="handleClick('user')">《用户协议》</span>和<span @click="handleClick('privacy')">《隐私政策》</span>
  20. </div>
  21. </view>
  22. </template>
  23. <script>
  24. import codeLogin from "./codeLogin";
  25. import onClickLogin from "./onClickLogin";
  26. import { getUserInfo } from "@/api/members";
  27. import storage from "@/utils/storage.js";
  28. import { loginCallback } from "@/api/connect.js";
  29. import { webConnect } from "@/api/connect.js";
  30. export default {
  31. onShow() {
  32. // #ifdef MP-WEIXIN
  33. this.mpWechatLogin = false;
  34. if (this.$options.filters.isLogin("auth")) {
  35. getCurrentPages().length > 1
  36. ? uni.navigateBack({
  37. delta: getCurrentPages().length - 2,
  38. })
  39. : uni.switchTab({
  40. url: "/pages/tabbar/home/index",
  41. });
  42. } else {
  43. uni.navigateTo({
  44. url: "/pages/passport/wechatMPLogin",
  45. });
  46. }
  47. // #endif
  48. //#ifdef H5
  49. let isWXBrowser = /micromessenger/i.test(navigator.userAgent);
  50. if (isWXBrowser) {
  51. webConnect("WECHAT").then((res) => {
  52. let data = res.data;
  53. if (data.success) {
  54. window.location = data.result;
  55. }
  56. });
  57. }
  58. //#endif
  59. },
  60. data() {
  61. return {
  62. mpWechatLogin: true, //是否加载微信登录
  63. value: true, //隐私政策
  64. loginData: {
  65. code: true, //验证码登录
  66. click: false,
  67. },
  68. login: true, //登录
  69. };
  70. },
  71. watch: {},
  72. components: {
  73. codeLogin,
  74. onClickLogin,
  75. },
  76. onLoad(options) {
  77. if (options && options.state) {
  78. this.stateLogin(options.state);
  79. }
  80. },
  81. methods: {
  82. handleClick(val) {
  83. uni.navigateTo({
  84. url: "/pages/mine/help/tips?type=" + val,
  85. });
  86. },
  87. // open 开启另一个模板
  88. open(val) {
  89. Object.keys(this.loginData).forEach((item) => {
  90. this.$set(this.loginData, item, false);
  91. });
  92. this.$set(this.loginData, val, true);
  93. },
  94. //联合信息返回登录
  95. stateLogin(state) {
  96. loginCallback(state).then((res) => {
  97. let data = res.data;
  98. if (data.success) {
  99. storage.setAccessToken(data.result.accessToken);
  100. storage.setRefreshToken(data.result.refreshToken);
  101. // 登录成功
  102. uni.showToast({
  103. title: "登录成功!",
  104. icon: "none",
  105. });
  106. getUserInfo().then((user) => {
  107. storage.setUserInfo(user.data.result);
  108. storage.setHasLogin(true);
  109. });
  110. getCurrentPages().length > 1
  111. ? uni.navigateBack({
  112. delta: getCurrentPages().length - 2,
  113. })
  114. : uni.switchTab({
  115. url: "/pages/tabbar/home/index",
  116. });
  117. }
  118. });
  119. },
  120. },
  121. };
  122. </script>
  123. <style lang="scss" scoped>
  124. @import url("./login.scss");
  125. </style>