upload project source code

This commit is contained in:
2026-04-30 18:49:43 +08:00
commit 9b394ba682
2277 changed files with 660945 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
/**
* 五行(金木水火土)枚举及颜色定义
*/
export enum WuxingElement {
/** 金 */
METAL = '金',
/** 木 */
WOOD = '木',
/** 水 */
WATER = '水',
/** 火 */
FIRE = '火',
/** 土 */
EARTH = '土'
}
/**
* 五行颜色配置
*/
export interface WuxingColorConfig {
/** 元素名称 */
label: WuxingElement;
/** 主色调(用于背景、填充等) */
color: string;
/** 浅色版本(用于浅色背景) */
lightColor?: string;
/** 深色版本(用于深色背景) */
darkColor?: string;
/** RGB 值(用于计算) */
rgb?: { r: number; g: number; b: number };
}
/**
* 五行颜色映射表
*/
export const WUXING_COLORS: Record<WuxingElement, WuxingColorConfig> = {
[WuxingElement.METAL]: {
label: WuxingElement.METAL,
color: '#E0E0E0', // 浅灰色/银色
lightColor: '#F5F5F5',
darkColor: '#BDBDBD',
rgb: { r: 224, g: 224, b: 224 }
},
[WuxingElement.WOOD]: {
label: WuxingElement.WOOD,
color: '#4CAF50', // 绿色
lightColor: '#81C784',
darkColor: '#388E3C',
rgb: { r: 76, g: 175, b: 80 }
},
[WuxingElement.WATER]: {
label: WuxingElement.WATER,
color: '#2196F3', // 蓝色
lightColor: '#64B5F6',
darkColor: '#1976D2',
rgb: { r: 33, g: 150, b: 243 }
},
[WuxingElement.FIRE]: {
label: WuxingElement.FIRE,
color: '#F44336', // 红色
lightColor: '#E57373',
darkColor: '#D32F2F',
rgb: { r: 244, g: 67, b: 54 }
},
[WuxingElement.EARTH]: {
label: WuxingElement.EARTH,
color: '#795548', // 棕色
lightColor: '#A1887F',
darkColor: '#5D4037',
rgb: { r: 121, g: 85, b: 72 }
}
};
/**
* 获取五行元素的颜色
* @param element 五行元素
* @param variant 颜色变体(默认使用主色调)
* @returns 颜色值hex 格式)
*/
export function getWuxingColor(
element: WuxingElement,
variant: 'color' | 'lightColor' | 'darkColor' = 'color'
): string {
const config = WUXING_COLORS[element];
return config[variant] || config.color;
}
/**
* 获取五行元素的 RGB 值
* @param element 五行元素
* @returns RGB 对象
*/
export function getWuxingRgb(element: WuxingElement): { r: number; g: number; b: number } {
return WUXING_COLORS[element].rgb || { r: 0, g: 0, b: 0 };
}
/**
* 五行数组(按顺序:金木水火土)
*/
export const WUXING_ARRAY: WuxingElement[] = [
WuxingElement.METAL,
WuxingElement.WOOD,
WuxingElement.WATER,
WuxingElement.FIRE,
WuxingElement.EARTH
];
/**
* 五行数据格式(用于图表、列表等)
*/
export interface WuxingData {
/** 元素名称 */
label: WuxingElement;
/** 数值0-100 */
value: number;
/** 颜色 */
color: string;
}
/**
* 创建五行数据数组
* @param values 五行数值数组,顺序为 [金, 木, 水, 火, 土]
* @returns 五行数据数组
*/
export function createWuxingData(values: number[]): WuxingData[] {
if (values.length !== 5) {
throw new Error('五行数值数组必须包含5个元素');
}
return WUXING_ARRAY.map((element, index) => ({
label: element,
value: Math.max(0, Math.min(100, values[index] || 0)), // 限制在 0-100 范围
color: WUXING_COLORS[element].color
}));
}