index.tsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import React , { useState } from 'react'
  2. import Taro, { useDidShow } from '@tarojs/taro'
  3. import { View, Image, Button } from '@tarojs/components'
  4. import "taro-ui/dist/style/components/button.scss" // 按需引入
  5. import './index.scss'
  6. import { getUserPhoneNumber } from '../../api/user'
  7. import Tip from '../../utils/tip'
  8. console.log(Taro, 'Taro.getStorageSync');
  9. const Index: React.FC = () => {
  10. const [token, setToken] = useState<string>('')
  11. useDidShow(() => {
  12. setToken(Taro.getStorageSync('token'))
  13. })
  14. // 获取用户手机号
  15. const Getphonenumber = async (item: number ,e: any): Promise<void> => {
  16. Tip.loading('正在登录...')
  17. const { code } = await Taro.login()
  18. const data = await getUserPhoneNumber({code, ...e.detail})
  19. Tip.loaded()
  20. Taro.setStorageSync('token', data)
  21. goPage(item)
  22. }
  23. // 跳转页面
  24. const goPage = ( index: number ): void => {
  25. console.log(index, 'indexindexindexindexindexindex');
  26. if (!Taro.getStorageSync('token')) {
  27. Tip.toast('登录错误')
  28. return
  29. }
  30. switch (index) {
  31. case 0:
  32. Taro.navigateTo({
  33. url: '/pages/ScanQrcode/index'
  34. });
  35. break
  36. case 1:
  37. Taro.navigateTo({
  38. url: '/pages/AuthQuery/index'
  39. });
  40. }
  41. }
  42. const RenderItem = (item: number) => {
  43. const noHasPhoneEle = (
  44. <Button
  45. className='button'
  46. open-type='getPhoneNumber'
  47. onGetPhoneNumber={(e) => Getphonenumber(item, e)}
  48. >
  49. <Image
  50. className='item-img'
  51. src={require(`../../assets/home/home${item}.png`)}
  52. />
  53. </Button>
  54. )
  55. const hasPhoneELe = (
  56. <Image
  57. className='item-img'
  58. src={require(`../../assets/home/home${item}.png`)}
  59. onClick={() => goPage(item)}
  60. />
  61. )
  62. return (
  63. <React.Fragment>
  64. {
  65. token ? hasPhoneELe : noHasPhoneEle
  66. }
  67. </React.Fragment>
  68. )
  69. }
  70. return (
  71. <View className='index'>
  72. <Image className='index-bg' src={require('../../assets/home/bg.png')} />
  73. {
  74. [0, 1].map( item => (
  75. <React.Fragment key={item}>
  76. {
  77. RenderItem(item)
  78. }
  79. </React.Fragment>
  80. ))
  81. }
  82. </View>
  83. )
  84. }
  85. export default Index