index.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <template>
  2. <view>
  3. <view v-if="showLogin">
  4. <login :ocode="ocode" :appkey="appkey" scope="snsapi_userinfo" :visible="visible" @success="loginSuccess"
  5. @fail="loginFail" @cancel="loginCancel" />
  6. </view>
  7. </view>
  8. </template>
  9. <script>
  10. export default {
  11. data() {
  12. return {
  13. // 获取用户信息
  14. ocode: '1015730314',
  15. // 商户appkey
  16. appkey: '9D6ACFE8CF9AFD07',
  17. // 是否授权可见
  18. visible: false,
  19. // 是否启动授权
  20. showLogin: false,
  21. // 获取用户信息
  22. appid: 'wxd6f090391d410534',
  23. }
  24. },
  25. onLoad() {
  26. this.hasUserInfo()
  27. },
  28. methods: {
  29. // 检查是否存在用户信息
  30. hasUserInfo() {
  31. let userInfo = uni.getStorageSync('userInfo');
  32. console.log(userInfo);
  33. if (userInfo) {
  34. // this.showLogin = false
  35. uni.navigateTo({
  36. url: "/pages/home/home"
  37. })
  38. } else {
  39. console.log("重新授权");
  40. this.showLogin = true
  41. this.visible = true
  42. }
  43. },
  44. // 授权成功回调
  45. loginSuccess(res) {
  46. console.log("成功");
  47. let wxcode = res.detail.wxcode
  48. // 获取wxcode后请求登录
  49. this.login(wxcode)
  50. },
  51. // 授权失败回调
  52. loginFail() {
  53. console.log("授权失败");
  54. uni.showModal({
  55. title: '提示',
  56. content: '授权:请先领取校园卡、并激活!',
  57. confirmText: '领取',
  58. success: (res) => {
  59. if (res.confirm) {
  60. uni.navigateTo({
  61. url: "/pages/qr_code/qr_code"
  62. });
  63. } else if (res.cancel) {
  64. uni.reLaunch({
  65. url: "/pages/404/404"
  66. })
  67. }
  68. }
  69. });
  70. },
  71. // 授权取消回调
  72. loginCancel() {
  73. console.log("取消");
  74. uni.showModal({
  75. title: '提示',
  76. content: '请先授权,否则无法使用该功能',
  77. confirmText: '授权',
  78. success: (res) => {
  79. if (res.confirm) {
  80. uni.reLaunch({
  81. url: "/pages/index/index"
  82. })
  83. } else if (res.cancel) {
  84. uni.reLaunch({
  85. url: "/pages/404/404"
  86. })
  87. }
  88. }
  89. });
  90. },
  91. async login(wxcode) {
  92. let res = await this.$myRequest({
  93. url: "/attendance/api/system/user/login/app",
  94. method: "post",
  95. data: {
  96. redirect_uri: `mnp://${this.appid}`,
  97. wxcode,
  98. }
  99. })
  100. // console.log(res);
  101. if (res.code == 200) {
  102. uni.setStorageSync("userInfo", res.data)
  103. uni.setStorageSync("token", res.data.token)
  104. // uni.setStorageSync("userId", res.data.id)
  105. uni.navigateTo({
  106. url: "/pages/home/home"
  107. })
  108. } else {
  109. uni.showToast({
  110. title: res.message,
  111. icon: 'none'
  112. })
  113. }
  114. }
  115. }
  116. }
  117. </script>
  118. <style lang="scss" scoped>
  119. </style>