index.tsx 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import UserApi from '@/apis/userApi';
  2. import Button from '@/component/button';
  3. import Flex from '@/component/flex';
  4. import Label from '@/component/label';
  5. import Layout from '@/component/layout';
  6. import Padding, { EdgeInsets } from '@/component/padding';
  7. import { useParams } from '@/component/routes/hooks/useParams';
  8. import SizeBox from '@/component/sizeBox';
  9. import UserHelper from '@/helper/userHelper';
  10. import { IRoutesUrls } from '@/routes/route.h5';
  11. import RouteUtil from '@/utils/routeUtil';
  12. import { Image } from '@tarojs/components';
  13. import { useRequest } from 'ahooks';
  14. import { PropsWithChildren, useEffect } from 'react';
  15. import './index.scss'
  16. interface ILoginProps {
  17. }
  18. export interface ILoginParms<T = any> {
  19. callback?: () => Promise<any>,
  20. page?: IRoutesUrls,
  21. params?: T;
  22. /**回调函数是否先于路由动作之前执行 */
  23. callbackBeforeRoute?: number;
  24. pop?: number;
  25. }
  26. export class LoginCallback {
  27. }
  28. const Login = (props: PropsWithChildren<ILoginProps>) => {
  29. const params = useParams<ILoginParms>();
  30. const aggrement = useRequest(() => {
  31. return UserApi.agreementsUsingPost({ data: { "pageView": "register_privacy" } }).toData();
  32. })
  33. useEffect(() => {
  34. () => {
  35. UserHelper.callback = undefined;
  36. }
  37. })
  38. const { pop = 1 } = params;
  39. return (
  40. <Layout className='login' >
  41. <Flex className='login-back' >
  42. <Flex flex={2} />
  43. <Flex alignItem="center" className='login-back-logo-wrap' >
  44. <Image className='login-logo' src={require("@/assets/logo.png")} />
  45. </Flex>
  46. <Flex flex={2} />
  47. <Padding padding={EdgeInsets.symmetric({ horizontal: 80 })} >
  48. <Flex alignItem='center' rowGap={12} >
  49. <Button openType="getPhoneNumber" onGetPhoneNumber={async (e) => {
  50. console.log(5555,pop);
  51. if (e.detail.code && await UserHelper.userWxLogin(e.detail.code) === true) {
  52. if (params.callbackBeforeRoute?.toString() === "1") {
  53. if (params.page) {
  54. RouteUtil.replace(params.page, { params: params.params });
  55. }
  56. else {
  57. +pop && RouteUtil.pop();
  58. }
  59. }
  60. if (UserHelper.callback) {
  61. await UserHelper.callback();
  62. }
  63. if (params.callbackBeforeRoute?.toString() !== "1") {
  64. if (params.page) {
  65. RouteUtil.replace(params.page, { params: params.params });
  66. }
  67. else {
  68. +pop && RouteUtil.pop();
  69. }
  70. }
  71. }
  72. }} fill >微信登录</Button>
  73. <SizeBox height={16} />
  74. {
  75. aggrement.data &&
  76. <>
  77. <Label size="sm" >点击微信登录则代表阅读并同意</Label>
  78. <Flex direction="row" >
  79. {
  80. aggrement.data?.map((p, index) => {
  81. return (
  82. <Label key={index}
  83. onClick={() => {
  84. RouteUtil.toWebViewPage({ url: p.url })
  85. }}
  86. className='login-aggrement' size="sm" >《{p.name}》</Label>
  87. )
  88. })
  89. }
  90. </Flex>
  91. </>
  92. }
  93. </Flex>
  94. </Padding>
  95. <Flex flex={1} />
  96. </Flex>
  97. </Layout>
  98. )
  99. }
  100. export default Login;