File size: 3,828 Bytes
6b8fc2c
fad2ec7
6b8fc2c
 
 
 
fad2ec7
 
 
 
 
 
6b8fc2c
 
fad2ec7
 
 
6b8fc2c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fad2ec7
 
6b8fc2c
 
 
 
 
 
 
 
 
 
 
 
fad2ec7
6b8fc2c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import React, { useEffect, useState, } from 'react';
import { useNavigate, connect, Dispatch } from 'umi'
import { Card, List, Popconfirm, message, FloatButton, Row, Col } from 'antd';
import { MinusSquareOutlined, DeleteOutlined, PlusOutlined } from '@ant-design/icons';
import styles from './index.less'
import { formatDate } from '@/utils/date'
import type { knowledgeModelState } from './model'
interface KnowledgeProps {
  dispatch: Dispatch;
  knowledgeModel: knowledgeModelState
}
const Index: React.FC<KnowledgeProps> = ({ knowledgeModel, dispatch }) => {
  const navigate = useNavigate()
  // const [datas, setDatas] = useState(data)
  const { data = [] } = knowledgeModel
  console.log(knowledgeModel)
  const confirm = (id: string) => {
    dispatch({
      type: 'knowledgeModel/rmKb',
      payload: {
        kb_id: id
      },
      callback: () => {
        dispatch({
          type: 'knowledgeModel/getList',
          payload: {

          }
        });
      }
    });
  };
  const handleAddKnowledge = () => {
    navigate(`add/setting?activeKey=setting`);
  }
  const handleEditKnowledge = (id: string) => {
    navigate(`add/setting?activeKey=file&id=${id}`);
  }
  useEffect(() => {
    dispatch({
      type: 'knowledgeModel/getList',
      payload: {

      }
    });
  }, [])
  return (<>

    <div className={styles.knowledge}>

      <FloatButton onClick={handleAddKnowledge} icon={<PlusOutlined />} type="primary" style={{ right: 24, top: 100 }} />

      <Row gutter={{ xs: 8, sm: 16, md: 24, lg: 32 }}>

        {

          data.map((item: any) => {

            return (<Col className="gutter-row" key={item.name} xs={24} sm={12} md={8} lg={6}>

              <Card className={styles.card}

                onClick={() => { handleEditKnowledge(item.id) }}

              >

                <div className={styles.container}>

                  <div className={styles.content}>

                    <span className={styles.context}>

                      {item.name}

                    </span>

                    <span className={styles.delete}>

                      <Popconfirm

                        title="Delete the task"

                        description="Are you sure to delete this task?"

                        onConfirm={(e: any) => {

                          e.stopPropagation();

                          e.nativeEvent.stopImmediatePropagation()

                          confirm(item.id)



                        }}

                        okText="Yes"

                        cancelText="No"

                      >

                        <DeleteOutlined onClick={(e) => {

                          e.stopPropagation();

                          e.nativeEvent.stopImmediatePropagation()

                        }} />

                      </Popconfirm>



                    </span>

                  </div>

                  <div className={styles.footer}>

                    <span className={styles.text}>

                      <MinusSquareOutlined />{item.doc_num}文档

                    </span>

                    <span className={styles.text}>

                      <MinusSquareOutlined />{item.chunk_num}个

                    </span>

                    <span className={styles.text}>

                      <MinusSquareOutlined />{item.token_num}千字符

                    </span>

                    <span style={{ float: 'right' }}>

                      {formatDate(item.update_date)}

                    </span>

                  </div>



                </div>

              </Card>

            </Col>)

          })

        }

      </Row>

    </div>

  </>
  )
};

export default connect(({ knowledgeModel, loading }) => ({ knowledgeModel, loading }))(Index);