Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import React, { useEffect, useState, } from 'react';
  2. import { useNavigate, connect, Dispatch } from 'umi'
  3. import { Card, List, Popconfirm, message, FloatButton, Row, Col } from 'antd';
  4. import { MinusSquareOutlined, DeleteOutlined, PlusOutlined } from '@ant-design/icons';
  5. import styles from './index.less'
  6. import { formatDate } from '@/utils/date'
  7. import type { knowledgeModelState } from './model'
  8. interface KnowledgeProps {
  9. dispatch: Dispatch;
  10. knowledgeModel: knowledgeModelState
  11. }
  12. const Index: React.FC<KnowledgeProps> = ({ knowledgeModel, dispatch }) => {
  13. const navigate = useNavigate()
  14. // const [datas, setDatas] = useState(data)
  15. const { data = [] } = knowledgeModel
  16. console.log(knowledgeModel)
  17. const confirm = (id: string) => {
  18. dispatch({
  19. type: 'knowledgeModel/rmKb',
  20. payload: {
  21. kb_id: id
  22. },
  23. callback: () => {
  24. dispatch({
  25. type: 'knowledgeModel/getList',
  26. payload: {
  27. }
  28. });
  29. }
  30. });
  31. };
  32. const handleAddKnowledge = () => {
  33. navigate(`add/setting?activeKey=setting`);
  34. }
  35. const handleEditKnowledge = (id: string) => {
  36. navigate(`add/setting?activeKey=file&id=${id}`);
  37. }
  38. useEffect(() => {
  39. dispatch({
  40. type: 'knowledgeModel/getList',
  41. payload: {
  42. }
  43. });
  44. }, [])
  45. return (<>
  46. <div className={styles.knowledge}>
  47. <FloatButton onClick={handleAddKnowledge} icon={<PlusOutlined />} type="primary" style={{ right: 24, top: 100 }} />
  48. <Row gutter={{ xs: 8, sm: 16, md: 24, lg: 32 }}>
  49. {
  50. data.map((item: any) => {
  51. return (<Col className="gutter-row" key={item.name} xs={24} sm={12} md={8} lg={6}>
  52. <Card className={styles.card}
  53. onClick={() => { handleEditKnowledge(item.id) }}
  54. >
  55. <div className={styles.container}>
  56. <div className={styles.content}>
  57. <span className={styles.context}>
  58. {item.name}
  59. </span>
  60. <span className={styles.delete}>
  61. <Popconfirm
  62. title="Delete the task"
  63. description="Are you sure to delete this task?"
  64. onConfirm={(e: any) => {
  65. e.stopPropagation();
  66. e.nativeEvent.stopImmediatePropagation()
  67. confirm(item.id)
  68. }}
  69. okText="Yes"
  70. cancelText="No"
  71. >
  72. <DeleteOutlined onClick={(e) => {
  73. e.stopPropagation();
  74. e.nativeEvent.stopImmediatePropagation()
  75. }} />
  76. </Popconfirm>
  77. </span>
  78. </div>
  79. <div className={styles.footer}>
  80. <span className={styles.text}>
  81. <MinusSquareOutlined />{item.doc_num}文档
  82. </span>
  83. <span className={styles.text}>
  84. <MinusSquareOutlined />{item.chunk_num}个
  85. </span>
  86. <span className={styles.text}>
  87. <MinusSquareOutlined />{item.token_num}千字符
  88. </span>
  89. <span style={{ float: 'right' }}>
  90. {formatDate(item.update_date)}
  91. </span>
  92. </div>
  93. </div>
  94. </Card>
  95. </Col>)
  96. })
  97. }
  98. </Row>
  99. </div>
  100. </>
  101. )
  102. };
  103. export default connect(({ knowledgeModel, loading }) => ({ knowledgeModel, loading }))(Index);