index.tsx 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import { View } from "@tarojs/components";
  2. import EmptyData from "@/components/EmptyData";
  3. import { useEffect, useState } from "react";
  4. import PickerSingleColumn from "@/components/Picker/PickerSingleColumn";
  5. import IconArrowDownRounded from "@/components/icon/IconArrowDownRounded";
  6. import { useUserStore } from "@/store/userStore";
  7. import Taro, { useDidShow } from "@tarojs/taro";
  8. import { TEntItem } from "@/types/user";
  9. // extraEnt 可额外传递预测的企业比如 自已构造一个 “个人知识库” 伪装成企业请求
  10. // const extraEnt = [{
  11. // entName: '个人知识库',
  12. // entId: -1,
  13. // expireTime: '0',
  14. // isExpired: false,
  15. // knowledgeCnt: 0
  16. // }]
  17. interface IProps {
  18. extraEnt?: TEntItem[]
  19. currentEnt: TEntItem | null
  20. setCurrentEnt: (ent:TEntItem) => void
  21. }
  22. const Index = ({currentEnt, setCurrentEnt, extraEnt = []}: IProps) => {
  23. const {entList, fetchMyEntList } = useUserStore();
  24. const allEnt = [...entList, ...extraEnt]
  25. // 当前选中的值
  26. const options = allEnt.map((item) => item.entName);
  27. // 是否显示选择器
  28. const [showPicker, setShowPicker] = useState(false);
  29. // 当前选中的值
  30. const [selected, setSelected] = useState(options[0]);
  31. const handleChange = (value: string) => {
  32. setSelected(value);
  33. const ent = allEnt.find((item) => item.entName === value);
  34. if (ent) {
  35. setCurrentEnt(ent);
  36. }
  37. };
  38. useEffect(() => {
  39. // 如果没有设置过当前企业,且有企业列表,则设置一个默认的为当前企业
  40. console.log(currentEnt, allEnt, entList)
  41. if (!currentEnt && allEnt.length) {
  42. setSelected(allEnt[0].entName);
  43. setCurrentEnt(allEnt[0]);
  44. }
  45. }, [allEnt, entList, currentEnt]);
  46. useDidShow(() => {
  47. fetchMyEntList();
  48. });
  49. // 如果没有公司
  50. if (!allEnt.length) {
  51. return (
  52. <View className="flex-center pt-22 w-full">
  53. <EmptyData type={'box'}>
  54. <View className="text-center text-14 leading-28 text-gray-45 mb-44 w-full">
  55. <View className="text-center text-16 leading-24 font-medium text-black">
  56. 开通企业知识库
  57. </View>
  58. <View>让员工智能体高效运转,全公司知识自动同步</View>
  59. <View>客户咨询准确率提升80%+</View>
  60. <View
  61. className="button-rounded button-primary-light button-border-primary button-inline-flex mt-24"
  62. onClick={() =>
  63. Taro.navigateTo({ url: "/pages/contact-us/index" })
  64. }
  65. >
  66. 联系我们
  67. </View>
  68. </View>
  69. </EmptyData>
  70. </View>
  71. );
  72. }
  73. // 渲染公司选择器
  74. return (
  75. <PickerSingleColumn
  76. options={options}
  77. selected={selected}
  78. onPicked={handleChange}
  79. showPicker={showPicker}
  80. setShowPicker={setShowPicker}
  81. >
  82. <View
  83. className="flex items-center gap-2 bg-gray-3 rounded-12 p-12 mb-16"
  84. onClick={() => setShowPicker(true)}
  85. >
  86. <View className="flex-1 text-14 leading-22 text-gray-45">
  87. {selected}
  88. </View>
  89. <View className="flex-center">
  90. <IconArrowDownRounded />
  91. </View>
  92. </View>
  93. </PickerSingleColumn>
  94. );
  95. };
  96. export default Index;