diff --git a/frontend/src/pages/KnowledgeBase/KnowledgeBase.jsx b/frontend/src/pages/KnowledgeBase/KnowledgeBase.jsx
index 6c45e1e..b74c2f6 100644
--- a/frontend/src/pages/KnowledgeBase/KnowledgeBase.jsx
+++ b/frontend/src/pages/KnowledgeBase/KnowledgeBase.jsx
@@ -29,6 +29,7 @@ export default function KnowledgeBase() {
const [treeData, setTreeData] = useState([])
const [loading, setLoading] = useState(false)
const [uploading, setUploading] = useState(false)
+ const [sources, setSources] = useState([]) // 出处下拉选项
const [sourceTypeFilter, setSourceTypeFilter] = useState('')
const [sourceDetailFilter, setSourceDetailFilter] = useState('')
const [selectedTreeNode, setSelectedTreeNode] = useState(null) // { type, detail }
@@ -54,9 +55,20 @@ export default function KnowledgeBase() {
}
}
+ const fetchSources = async () => {
+ try {
+ const data = await knowledgeService.listSources()
+ // 接口返回 [{source: "航空知识 2026年第1期"}, ...],提取 source 字段
+ setSources(data.map(s => s.source).filter(Boolean))
+ } catch {
+ // ignore
+ }
+ }
+
useEffect(() => {
fetchItems()
fetchTree()
+ fetchSources()
}, [sourceTypeFilter])
// 上传
@@ -127,32 +139,37 @@ export default function KnowledgeBase() {
title: '标题',
dataIndex: 'title',
key: 'title',
- render: (text, record) => (
- {text}
+ width: 240,
+ render: (text) => (
+ {text}
),
},
{
title: '作者',
dataIndex: 'author',
key: 'author',
- render: (val) => val || null,
+ width: 80,
+ render: (val) => val || '-',
},
{
title: '播出/发表时间',
dataIndex: 'publish_date',
key: 'publish_date',
- render: (val) => val || null,
+ width: 156,
+ render: (val) => val || '-',
},
{
title: '出处',
dataIndex: 'source_detail',
key: 'source_detail',
+ width: 170,
render: (val) => val || '-',
},
{
title: '类型',
dataIndex: 'source_type',
key: 'source_type',
+ width: 88,
render: (val) => (
{SOURCE_TYPE_LABEL[val] || val}
@@ -163,11 +180,13 @@ export default function KnowledgeBase() {
title: '入库时间',
dataIndex: 'created_at',
key: 'created_at',
- render: (val) => val ? new Date(val).toLocaleString('zh-CN') : '-',
+ width: 140,
+ render: (val) => val ? new Date(val).toLocaleString('zh-CN', { hour12: false }).replace(' ', ' ') : '-',
},
{
title: '操作',
key: 'action',
+ width: 86,
render: (_, record) => (