index.tsx 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import { View, ScrollView } from "@tarojs/components";
  2. import Taro, { useDidShow, useRouter } from "@tarojs/taro";
  3. import NavBarNormal from "@/components/nav-bar-normal/index";
  4. import PageCustom from "@/components/page-custom/index";
  5. import IconArrowDownRounded from "@/components/icon/IconArrowDownRounded";
  6. import { useEffect, useState } from "react";
  7. import { useAgentStore } from "@/store/agentStore";
  8. import { isSuccess } from "@/utils";
  9. import ChatMessage from "@/components/chat-message";
  10. import { getVisitorInfo } from "@/service/visitor";
  11. import { TVisitorAgent, TVisitorMessage } from "@/types/visitor";
  12. import type { TMessage, TRobotMessage } from "@/store/textChat";
  13. import VisitorSummary from "./components/VisitorSummary";
  14. import { useVisitorMessages } from "./visitedDetail";
  15. import style from "./index.module.less";
  16. export default () => {
  17. const router = useRouter();
  18. const { visitorId } = router.params;
  19. if (!visitorId) {
  20. return <View>...</View>;
  21. }
  22. const [visitor, setVisitor] = useState<TVisitorAgent>();
  23. const [list, setList] = useState<
  24. (TMessage & TRobotMessage & TVisitorMessage)[]
  25. >([]);
  26. const fetchData = async () => {
  27. if (visitorId) {
  28. const response = await getVisitorInfo(visitorId);
  29. if (isSuccess(response.status)) {
  30. setVisitor(response.data);
  31. }
  32. }
  33. };
  34. const { data, loadMore } = useVisitorMessages(visitorId);
  35. const onScrollToLower = () => {
  36. loadMore();
  37. };
  38. useEffect(() => {
  39. fetchData();
  40. }, []);
  41. useEffect(() => {
  42. if (data?.data) {
  43. //@ts-ignore
  44. setList([...list, ...data.data]);
  45. }
  46. }, [data]);
  47. return (
  48. <PageCustom fullPage style={{ overflow: "hidden" }}>
  49. <NavBarNormal backText="访问详情"></NavBarNormal>
  50. {visitor ? <VisitorSummary data={visitor} /> : <></>}
  51. <View className="rounded-container-header"></View>
  52. <View className="flex-1 overflow-hidden">
  53. <ScrollView
  54. scrollY
  55. onScrollToLower={onScrollToLower}
  56. style={{
  57. flex: 1,
  58. height: "100%", // 高度自适应
  59. }}
  60. >
  61. <View>
  62. <View className="flex flex-col gap-16 px-16">
  63. {list.map((message) => {
  64. return (
  65. <>
  66. <View className="text-12 text-gray-45 leading-20 text-center">
  67. {message?.msgTime}
  68. </View>
  69. <ChatMessage
  70. key={message.msgUk}
  71. role={message.role}
  72. text={message.content}
  73. ></ChatMessage>
  74. </>
  75. );
  76. })}
  77. </View>
  78. </View>
  79. </ScrollView>
  80. </View>
  81. </PageCustom>
  82. );
  83. };