fix: 修复知识库页面三处问题:出处下拉为空、宽度跳动、表格列宽优化

This commit is contained in:
simonkoson
2026-05-27 12:56:57 +08:00
parent 74a0508755
commit d849bc1539
@@ -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) => (
<span style={{ fontWeight: 500, color: '#3b4a3b' }}>{text}</span>
width: 240,
render: (text) => (
<span style={{ fontWeight: 500, color: '#3b4a3b', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', display: 'block' }}>{text}</span>
),
},
{
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) => (
<Tag color="default" style={{ borderRadius: 8 }}>
{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) => (
<Popconfirm
title="确认删除"
@@ -244,7 +263,7 @@ export default function KnowledgeBase() {
/>
<Select
placeholder="按出处"
options={[{ label: '全部出处', value: '' }, ...(items.length ? [] : [])]}
options={[{ label: '全部出处', value: '' }, ...sources.map(s => ({ label: s, value: s }))]}
value={sourceDetailFilter}
onChange={val => { setSourceDetailFilter(val); setSelectedTreeNode(null) }}
style={{ width: 200 }}