ViewStyleList.tsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { ScrollView, View, Image } from "@tarojs/components";
  2. import FigureList from "@/components/list/figure-list";
  3. import FigureListItem from "@/components/list/figure-list-item";
  4. import { useDidShow } from "@tarojs/taro";
  5. import { useEffect } from "react";
  6. import RotateLoading from "@/components/rotate-loading";
  7. import Taro from "@tarojs/taro";
  8. import { useKnowledgeStore } from "@/store/knowledge";
  9. import type { TKnowledgeItem } from "@/types/knowledge";
  10. import { EKnowlegeTypes } from "@/consts/enum";
  11. import KnowledgeIcon from "@/components/KnowledgeIcon";
  12. import EmptyData from "@/components/empty-data";
  13. export interface IProps {
  14. types?: EKnowlegeTypes[]
  15. }
  16. const Index = ({types}: IProps) => {
  17. const { listItems, listScrollTop, loadMoreList, initLoadList, setListTypes } = useKnowledgeStore();
  18. const onScrollToUpper = async () => {
  19. console.log('toUpper')
  20. loadMoreList()
  21. }
  22. useDidShow(()=> {
  23. loadMoreList(true)
  24. })
  25. useEffect(()=> {
  26. if(types){
  27. setListTypes(types)
  28. }
  29. initLoadList()
  30. }, [])
  31. const handleEdit = (item: TKnowledgeItem)=> {
  32. if(item.parseStatus !== 'parsed'){
  33. return ;
  34. }
  35. Taro.navigateTo({
  36. url: `/pages/knowledge-item/index?knowledgeId=${item.knowledgeId}`
  37. })
  38. }
  39. const rightRenderer = (item: TKnowledgeItem) => {
  40. if(item.parseStatus !== 'parsed'){
  41. return <></>
  42. }
  43. return (
  44. <View className="flex items-center gap-4">
  45. <RotateLoading />
  46. <View className="text-primary text-12">解析中</View>
  47. </View>
  48. );
  49. };
  50. return (
  51. <ScrollView
  52. scrollY
  53. onScrollToUpper={onScrollToUpper}
  54. scrollTop={listScrollTop}
  55. style={{
  56. flex: 1,
  57. height: "100%", // 高度自适应
  58. }}
  59. >
  60. {listItems.length<=0 ? <EmptyData type={2}/> : <></>}
  61. <FigureList>
  62. {listItems.map(item => {
  63. return <FigureListItem
  64. figure={()=> <KnowledgeIcon data={item}/>}
  65. underline
  66. arrow={item.parseStatus === 'parsed'}
  67. onClick={()=> handleEdit(item)}
  68. rightRenderer={()=> rightRenderer(item)}
  69. >
  70. <View className="flex flex-col flex-1 gap-2 w-full">
  71. <View className="text-14 leading-22">{item.title}</View>
  72. <View className="text-12 leading-20 text-gray-45">
  73. {item.createTime} | {item.fileSize}
  74. </View>
  75. </View>
  76. </FigureListItem>
  77. })}
  78. </FigureList>
  79. </ScrollView>
  80. );
  81. };
  82. export default Index;