index.tsx 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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 Radio from '@taroify/core/radio/radio';
  13. import { Image, Radio, View, Icon } from '@tarojs/components';
  14. import Taro from '@tarojs/taro';
  15. import { useRequest } from 'ahooks';
  16. import { PropsWithChildren, useEffect, useState } from 'react';
  17. import './index.scss'
  18. interface ILoginProps {
  19. }
  20. export interface ILoginParms<T = any> {
  21. callback?: () => Promise<any>,
  22. page?: IRoutesUrls,
  23. params?: T;
  24. /**回调函数是否先于路由动作之前执行 */
  25. callbackBeforeRoute?: number;
  26. pop?: number;
  27. }
  28. export class LoginCallback {
  29. }
  30. const Login = (props: PropsWithChildren<ILoginProps>) => {
  31. const [value, setValue] = useState(false);
  32. const params = useParams<ILoginParms>();
  33. const aggrement = useRequest(() => {
  34. return UserApi.agreementsUsingPost({ data: { "pageView": "register_privacy" } }).toData();
  35. })
  36. useEffect(() => {
  37. () => {
  38. UserHelper.callback = undefined;
  39. }
  40. })
  41. const { pop = 1 } = params;
  42. return (
  43. <Layout className='login' >
  44. <Flex className='login-back' >
  45. <Flex flex={1} className='icon-title'>
  46. {/*这里新增返回图标 用户点击返回上一页 */}
  47. <View className='icon-back' onClick={() => {
  48. RouteUtil.pop();
  49. }
  50. }>
  51. </View>
  52. </Flex>
  53. <Flex flex={1} >
  54. </Flex>
  55. <Flex alignItem="center" className='login-back-logo-wrap' >
  56. <Image className='login-logo' src={require("@/assets/logo.png")} />
  57. </Flex>
  58. <Flex flex={2} />
  59. <Padding padding={EdgeInsets.symmetric({ horizontal: 80 })} >
  60. <Flex alignItem='center' rowGap={12} >
  61. <Button openType="getPhoneNumber" onGetPhoneNumber={async (e) => {
  62. if (!value) {
  63. // 提示用户勾选协议
  64. // Message.error('请勾选协议');
  65. Taro.showToast({
  66. title: '请仔细阅读并同意协议!',
  67. icon: 'none',
  68. duration: 2000
  69. })
  70. return false
  71. }
  72. console.log(e, 5555, pop);
  73. if (e.detail.code && await UserHelper.userWxLogin(e.detail.code) === true) {
  74. if (params.callbackBeforeRoute?.toString() === "1") {
  75. console.log('进来了', params)
  76. if (params.page) {
  77. RouteUtil.replace(params.page, { params: params.params });
  78. }
  79. else {
  80. +pop && RouteUtil.pop();
  81. }
  82. }
  83. console.log('进来了----71', params)
  84. if (UserHelper.callback) {
  85. await UserHelper.callback();
  86. }
  87. if (params.callbackBeforeRoute?.toString() !== "1") {
  88. if (params.page) {
  89. RouteUtil.replace(params.page, { params: params.params });
  90. }
  91. else {
  92. +pop && RouteUtil.pop();
  93. }
  94. }
  95. }
  96. }} fill >手机号快捷登录</Button>
  97. <SizeBox height={16} />
  98. {
  99. aggrement.data &&
  100. <>
  101. <Flex direction="row" alignItem='center' style={{ whiteSpace: 'nowrap' }} >
  102. <Radio value={'2'}
  103. className='radio-list__radio'
  104. checked={value}
  105. style={{ transform: 'scale(0.7)', fontSize: '14px' }}
  106. onClick={
  107. () => {
  108. setValue(!value)
  109. }
  110. } color="#4063eb" >
  111. </Radio><View style='font-size:14px'>我已阅读并同意</View>
  112. {
  113. aggrement.data?.map((p, index) => {
  114. return (
  115. <Label key={index}
  116. onClick={() => {
  117. RouteUtil.toWebViewPage({ url: p.url })
  118. }}
  119. className='login-aggrement' size="sm" >《{p.name}》</Label>
  120. )
  121. })
  122. }
  123. </Flex>
  124. </>
  125. }
  126. </Flex>
  127. </Padding>
  128. <Flex flex={1} />
  129. </Flex>
  130. </Layout>
  131. )
  132. }
  133. export default Login;