MessageRobotRich.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { View, Image } from "@tarojs/components";
  2. import ThinkAnimation from "../think-animation/index";
  3. import style from "./index.module.less";
  4. interface Props {
  5. loading?: boolean;
  6. analyzeStatus?: "idle" | "doing" | "done";
  7. content?: string;
  8. data?: {
  9. avatar: string;
  10. name: string;
  11. fileLen?: number;
  12. };
  13. children?: JSX.Element | JSX.Element[];
  14. }
  15. export default ({
  16. data,
  17. loading,
  18. content = '',
  19. analyzeStatus = "idle",
  20. children,
  21. }: Props) => {
  22. return (
  23. <View className="flex gap-8 items-start">
  24. <View className={style.avatarContainer}>
  25. {data && <Image className={style.avatar} src={data?.avatar}></Image>}
  26. </View>
  27. <View className="flex flex-1 flex-col gap-8">
  28. <View className="font-medium text-14 leading-22">
  29. {data && data.name}
  30. </View>
  31. <View className="flex justify-start">
  32. <View className={`${style.message} ${style.messageRobotRich}`}>
  33. <View className={style.messageContent}>
  34. {loading && <ThinkAnimation></ThinkAnimation>}
  35. {analyzeStatus !== "idle" && (
  36. <View className="flex items-center gap-6">
  37. <View className="text-14 leading-28">
  38. {analyzeStatus === "doing"
  39. ? "正在为您解析"
  40. : content}
  41. </View>
  42. {analyzeStatus === "doing" && (
  43. <ThinkAnimation></ThinkAnimation>
  44. )}
  45. </View>
  46. )}
  47. {children}
  48. </View>
  49. </View>
  50. </View>
  51. </View>
  52. </View>
  53. );
  54. };