FoodTimeline.tsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import { View } from '@tarojs/components'
  2. import './FoodTimeline.scss'
  3. import FoodTimelineItem from './FoodTimelineItem'
  4. import { useEffect, useState } from 'react'
  5. import { delFoodJournal } from '@/services/foodJournal'
  6. import Taro from '@tarojs/taro'
  7. export default function Component(props: { array: any, refresh: Function, forceRefresh: Function,removeIndex:Function }) {
  8. const [list, setList] = useState(props.array)
  9. useEffect(() => {
  10. setList(props.array)
  11. }, [props.array, props.array.length])
  12. function del(index) {
  13. delFoodJournal(list[index].id).then(res => {
  14. props.removeIndex(index)
  15. // var temps = list.splice(index, 1)
  16. // setList(temps)
  17. // props.refresh()
  18. }).catch(e => {
  19. })
  20. }
  21. // function preview(index){
  22. // var urls:any = []
  23. // list.map(item=>{
  24. // urls.push(item.cover)
  25. // })
  26. // Taro.previewImage({
  27. // current: list[index].cover,
  28. // urls: urls
  29. // })
  30. // }
  31. function preview(index) {
  32. var urls: any = []
  33. //微信限制 最多50张
  34. if (list.length <= 50) {
  35. list.map(item => {
  36. urls.push({
  37. url: item.media[0].url,
  38. type: item.media[0].url.indexOf('mp4') != -1 ? 'video' : 'image'
  39. })
  40. })
  41. }
  42. else {
  43. var begin = index - 20 < 0 ? 0 : index - 20
  44. var end = index + 20 > list.length - 1 ? list.length - 1 : index + 20
  45. for (var i = begin; i <= end; i++) {
  46. var item = list[i]
  47. urls.push({
  48. url: item.media[0].url,
  49. type: item.media[0].url.indexOf('mp4') != -1 ? 'video' : 'image'
  50. })
  51. }
  52. }
  53. var currentUrl = list[index].media[0].url
  54. var page = 0;
  55. for (var i = 0; i < urls.length; i++) {
  56. if (currentUrl == urls[i].url) {
  57. page = i
  58. }
  59. }
  60. if (process.env.TARO_ENV=='rn'){
  61. Taro.previewImage({
  62. current: currentUrl,
  63. urls: [currentUrl]
  64. })
  65. }
  66. else {
  67. Taro.previewMedia({
  68. current: page,
  69. sources: urls
  70. })
  71. }
  72. }
  73. function updateItem(index, data) {
  74. list[index] = data
  75. setList(list)
  76. }
  77. return <View style={{ flexDirection: 'column', display: 'flex' }}>
  78. {
  79. list.map((item, index) => {
  80. return <FoodTimelineItem data={item} index={index} key={index}
  81. delete={() => del(index)}
  82. preview={() => preview(index)}
  83. update={(data) => updateItem(index, data)}
  84. forceRefresh={() => props.forceRefresh()}
  85. refresh={() => { props.refresh(); }}
  86. isLast={index == list.length - 1}
  87. />
  88. })
  89. }
  90. </View>
  91. }