Album.tsx 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { jumpPage } from "@/features/trackTimeDuration/hooks/Common";
  2. import { getAlbums, getAlbumsStat } from "@/services/health";
  3. import { View, Text, Image } from "@tarojs/components";
  4. import { useEffect, useState } from "react";
  5. import './Album.scss'
  6. export default function Album() {
  7. const [medias, setMedias] = useState<any>([])
  8. const [window, setWindow] = useState('')
  9. const [stat, setStat] = useState<any>(null)
  10. useEffect(() => {
  11. getAlbumsData('')
  12. }, [])
  13. function getAlbumsData(str) {
  14. getAlbums({
  15. page: 1,
  16. limit: 50,
  17. window: str
  18. }).then(res => {
  19. setMedias((res as any).data)
  20. })
  21. getAlbumsStat().then(res => {
  22. setStat(res)
  23. })
  24. }
  25. return <View style={{ display: 'flex', flexDirection: 'column' }}>
  26. {
  27. stat && <View style={{ flexDirection: 'row', alignItems: 'center', display: 'flex' }}>
  28. <View onClick={() => {
  29. setWindow('')
  30. getAlbumsData('')
  31. }}>全部{stat.total}</View>
  32. {
  33. stat.items.map((item, index) => {
  34. return <View key={index} onClick={() => {
  35. setWindow(item.window)
  36. getAlbumsData(item.window)
  37. }}>{item.window}{item.image_count}</View>
  38. })
  39. }
  40. </View>
  41. }
  42. <View className="photo_wall" onClick={() => {
  43. jumpPage('/pages/account/PhotoWall')
  44. }}>
  45. <View style={{ flex: 1 }} />
  46. <Text className="photo_wall_text">Photo Wall</Text>
  47. <Image className="photo_wall_arrow" src={require('@assets/_health/arrow2.png')} />
  48. <View className="album_line" />
  49. </View>
  50. {
  51. medias.map((item, index) => {
  52. return <View className="album_item" key={index}>
  53. <Text className="album_date">{(item.date + '').substring(6, 9)}</Text>
  54. <View className="album_container">
  55. {
  56. item.images.map((photo, i) => {
  57. return <Image mode="aspectFill" src={photo} key={i * 900} className="album_phone" />
  58. })
  59. }
  60. </View>
  61. <View className="album_line" />
  62. </View>
  63. })
  64. }
  65. </View>
  66. }