fix: 修复知识库页面三处问题:出处下拉为空、宽度跳动、表格列宽优化
This commit is contained in:
@@ -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 }}
|
||||
|
||||
Reference in New Issue
Block a user