style(DataBaseInfoView): 为文件名添加文件类型图标和颜色

This commit is contained in:
Wenjie Zhang 2025-07-26 11:18:54 +08:00
parent 7d4722b62c
commit b50d555e37

View File

@ -371,7 +371,10 @@
emptyText: emptyText
}">
<template #bodyCell="{ column, text, record }">
<a-button v-if="column.key === 'filename'" class="main-btn" type="link" @click="openFileDetail(record)">{{ text }}</a-button>
<a-button v-if="column.key === 'filename'" class="main-btn" type="link" @click="openFileDetail(record)">
<component :is="getFileIcon(text)" :style="{ marginRight: '6px', color: getFileIconColor(text) }" />
{{ text }}
</a-button>
<span v-else-if="column.key === 'type'" :class="['span-type', text]">{{ text?.toUpperCase() }}</span>
<CheckCircleFilled v-else-if="column.key === 'status' && text === 'done'" style="color: #41A317;"/>
<CloseCircleFilled v-else-if="column.key === 'status' && text === 'failed'" style="color: #FF4D4F ;"/>
@ -601,6 +604,13 @@ import {
DownOutlined,
ExpandOutlined,
CompressOutlined,
FileTextFilled,
FileImageFilled,
FileMarkdownFilled,
FilePdfFilled,
FileWordFilled,
FileExcelFilled,
FileUnknownFilled,
} from '@ant-design/icons-vue'
import HeaderComponent from '@/components/HeaderComponent.vue';
import KnowledgeGraphViewer from '@/components/KnowledgeGraphViewer.vue';
@ -1660,6 +1670,88 @@ const getKbTypeColor = (type) => {
return colors[type] || 'blue'
}
//
const getFileIcon = (filename) => {
if (!filename) return FileUnknownFilled
const extension = filename.toLowerCase().split('.').pop()
const iconMap = {
//
'txt': FileTextFilled,
'text': FileTextFilled,
'log': FileTextFilled,
// Markdown
'md': FileMarkdownFilled,
'markdown': FileMarkdownFilled,
// PDF
'pdf': FilePdfFilled,
// Word
'doc': FileWordFilled,
'docx': FileWordFilled,
// Excel
'xls': FileExcelFilled,
'xlsx': FileExcelFilled,
'csv': FileExcelFilled,
//
'jpg': FileImageFilled,
'jpeg': FileImageFilled,
'png': FileImageFilled,
'gif': FileImageFilled,
'bmp': FileImageFilled,
'svg': FileImageFilled,
'webp': FileImageFilled,
}
return iconMap[extension] || FileUnknownFilled
}
//
const getFileIconColor = (filename) => {
if (!filename) return '#8c8c8c'
const extension = filename.toLowerCase().split('.').pop()
const colorMap = {
// -
'txt': '#1890ff',
'text': '#1890ff',
'log': '#1890ff',
// Markdown -
'md': '#0050b3',
'markdown': '#0050b3',
// PDF -
'pdf': '#ff4d4f',
// Word -
'doc': '#2f54eb',
'docx': '#2f54eb',
// Excel - 绿
'xls': '#52c41a',
'xlsx': '#52c41a',
'csv': '#52c41a',
// -
'jpg': '#722ed1',
'jpeg': '#722ed1',
'png': '#722ed1',
'gif': '#722ed1',
'bmp': '#722ed1',
'svg': '#722ed1',
'webp': '#722ed1',
}
return colorMap[extension] || '#8c8c8c'
}
</script>