feat: Web端401队列拦截器 + 消息/任务/个人中心重写 + TabBar红点 + Admin页面完善

This commit is contained in:
2026-08-07 11:44:12 +08:00
parent b71c5a2d07
commit 721cfe1504
25 changed files with 1730 additions and 435 deletions

View File

@ -0,0 +1,71 @@
/**
* 任务状态 → 颜色/标签映射(全局唯一数据源)
*
* 供 TaskTreeViewer / TaskListCard / ProductCard 等组件共用,
* 避免在多处重复维护相同的映射逻辑。
*/
import { TASK_STATUS } from "../types/api";
export interface StatusStyle {
bg: string;
text: string;
ring: string;
label: string;
}
export const STATUS_CONFIG: Record<string, StatusStyle> = {
[TASK_STATUS.PENDING]: {
bg: "bg-yellow-50",
text: "text-yellow-700",
ring: "ring-yellow-400",
label: "待接收",
},
[TASK_STATUS.WIP]: {
bg: "bg-blue-50",
text: "text-blue-700",
ring: "ring-blue-400",
label: "进行中",
},
[TASK_STATUS.COMPLETED]: {
bg: "bg-green-50",
text: "text-green-700",
ring: "ring-green-400",
label: "已完成",
},
[TASK_STATUS.REJECTED]: {
bg: "bg-red-50",
text: "text-red-700",
ring: "ring-red-400",
label: "待接收",
},
[TASK_STATUS.ARCHIVED]: {
bg: "bg-gray-50",
text: "text-gray-600",
ring: "ring-gray-300",
label: "已完成",
},
};
const FALLBACK: StatusStyle = {
bg: "bg-gray-50",
text: "text-gray-600",
ring: "ring-gray-300",
label: "",
};
/** 获取状态的完整样式配置(bg / text / ring / label)— 大小写不敏感 */
export function getStatusConfig(status: string): StatusStyle {
const key = status?.toUpperCase?.() ?? status;
return STATUS_CONFIG[key] ?? { ...FALLBACK, label: status };
}
/** 仅获取 bg + text 类名,用于简单的状态标签着色 */
export function statusColor(status: string): string {
const cfg = getStatusConfig(status);
return `${cfg.bg} ${cfg.text}`;
}
/** 仅获取中文标签 */
export function statusLabel(status: string): string {
return getStatusConfig(status).label;
}