115 lines
2.6 KiB
JavaScript
115 lines
2.6 KiB
JavaScript
// 文件相关工具函数
|
|
import { FileTextFilled, FileMarkdownFilled, FilePdfFilled, FileWordFilled, FileExcelFilled, FileImageFilled, FileUnknownFilled } from '@ant-design/icons-vue';
|
|
import { formatRelative, parseToShanghai } from '@/utils/time';
|
|
|
|
// 根据文件扩展名获取文件图标
|
|
export 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,
|
|
|
|
// HTML文件
|
|
'html': FileTextFilled,
|
|
'htm': FileTextFilled,
|
|
}
|
|
|
|
return iconMap[extension] || FileUnknownFilled
|
|
}
|
|
|
|
// 根据文件扩展名获取文件图标颜色
|
|
export 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',
|
|
|
|
// HTML文件 - 橙色
|
|
'html': '#fa8c16',
|
|
'htm': '#fa8c16',
|
|
}
|
|
|
|
return colorMap[extension] || '#8c8c8c'
|
|
}
|
|
|
|
// Format relative time with CST baseline
|
|
export const formatRelativeTime = (value) => formatRelative(value)
|
|
|
|
// 格式化标准时间
|
|
export const formatStandardTime = (value) => {
|
|
const parsed = parseToShanghai(value)
|
|
if (!parsed) return '-'
|
|
return parsed.format('YYYY年MM月DD日 HH:mm:ss')
|
|
}
|
|
|
|
// 获取状态文本
|
|
export const getStatusText = (status) => {
|
|
const statusMap = {
|
|
'done': '处理完成',
|
|
'failed': '处理失败',
|
|
'processing': '处理中',
|
|
'waiting': '等待处理'
|
|
}
|
|
return statusMap[status] || status
|
|
}
|