index.jsx 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. import { Component } from "react";
  2. import { View, Image, Button, getCurrentInstance } from "@tarojs/components";
  3. import Taro from "@tarojs/taro";
  4. import { AtCheckbox } from "taro-ui";
  5. import { login, getUserInfo, bindShareJump } from "../../service";
  6. import { objToParam } from "../../common/toParams";
  7. import "./index.less";
  8. import logo1 from "../../images/logo1.png";
  9. export default class Index extends Component {
  10. state = {
  11. isChecked: false,
  12. };
  13. // 页面卸载
  14. componentWillUnmount() {
  15. Taro.removeStorageSync("currentPage");
  16. global.globalData.optionsData = {};
  17. }
  18. // 同意协议
  19. handleCheckboxChange = (value) => {
  20. this.setState({
  21. isChecked: value.length > 0,
  22. });
  23. };
  24. // 同意协议
  25. handleAgree = () => {
  26. Taro.navigateTo({
  27. url: "/pages/mineSub/userSpecification/index",
  28. });
  29. };
  30. // handleGetPhoneNumber = (e) => {
  31. // if (e.detail.errMsg === "getPhoneNumber:ok") {
  32. // // 处理获取到的手机号信息
  33. // console.log("用户手机号信息:", e);
  34. // // 你可以在这里调用后端接口,将手机号信息发送到服务器
  35. // } else {
  36. // console.log("用户拒绝授权获取手机号");
  37. // }
  38. // };
  39. login = () => {
  40. Taro.showLoading({
  41. title: "正在登录",
  42. });
  43. if (!this.state.isChecked) {
  44. Taro.showToast({
  45. title: "请先同意协议",
  46. icon: "none",
  47. });
  48. return;
  49. }
  50. Taro.getUserProfile({
  51. desc: "获取用户信息",
  52. success: async (userInfo) => {
  53. const loginRes = await Taro.login();
  54. const res = await login({
  55. code: loginRes.code,
  56. head_img: userInfo.avatarUrl,
  57. name: userInfo.nickName,
  58. });
  59. Taro.setStorageSync("session_key", res.session_key);
  60. Taro.setStorageSync("loginInfo", res);
  61. Taro.hideLoading();
  62. Taro.showToast({
  63. title: "登录成功",
  64. icon: "none",
  65. });
  66. // 获取用户信息
  67. getUserInfo().then(userInfoRes => {
  68. Taro.setStorageSync("userInfo", userInfoRes);
  69. });
  70. try {
  71. // 先处理分享跳转
  72. let shareJump = Taro.getStorageSync("shareJump");
  73. let shareType = Taro.getStorageSync("shareType");
  74. if (shareJump) {
  75. await bindShareJump({
  76. share_unique_value: shareJump,
  77. share_type: shareType || 2,
  78. });
  79. Taro.removeStorageSync("shareJump");
  80. Taro.removeStorageSync("shareType");
  81. if (global.globalData.optionsData) {
  82. delete global.globalData.optionsData.shareJump;
  83. }
  84. }
  85. } finally {
  86. // 最后处理页面跳转
  87. let lastPage = Taro.getStorageSync("currentPage");
  88. if (!lastPage || lastPage === "pages/mineSub/login/index") {
  89. lastPage = "pages/index/index";
  90. }
  91. await Taro.reLaunch({
  92. url: `/${lastPage}?${objToParam(global.globalData.optionsData)}`,
  93. });
  94. Taro.removeStorageSync("currentPage");
  95. global.globalData.optionsData = {};
  96. }
  97. },
  98. });
  99. };
  100. render() {
  101. const checkboxOption = [
  102. {
  103. value: "agree",
  104. label: "",
  105. },
  106. ];
  107. return (
  108. <View className="index">
  109. <View className="login-content">
  110. <Image src={logo1} className="logo" />
  111. <View className="title">鱼市</View>
  112. <View className="desc">
  113. 您暂时未获取微信授权,将无法正常使用小程序的功能。请先阅读且同意《鱼市平台用户协议》后再授权登录。
  114. </View>
  115. {/* <Button open-type="getPhoneNumber" onGetPhoneNumber={this.handleGetPhoneNumber} className="login-button">授权登录</Button> */}
  116. <View className="checkbox-login-container">
  117. <AtCheckbox
  118. options={checkboxOption}
  119. selectedList={this.state.isChecked ? ["agree"] : []}
  120. onChange={this.handleCheckboxChange}
  121. />
  122. <View onClick={this.handleAgree} className="checkbox-text">
  123. 同意《鱼市平台用户协议》
  124. </View>
  125. </View>
  126. <Button
  127. className="login-button"
  128. // openType={this.state.isChecked ? "getPhoneNumber" : null}
  129. onClick={this.login}
  130. >
  131. 授权登录
  132. </Button>
  133. </View>
  134. <Image src='https://yushi.tos-cn-beijing.volces.com/login/loginBg.png' className="login-bg" />
  135. </View>
  136. );
  137. }
  138. }