chore: 基本服务器版本完成

This commit is contained in:
2025-11-12 08:23:41 +08:00
parent 22016ac339
commit 58ad47d124
9 changed files with 2084 additions and 490 deletions

View File

@@ -1,450 +1,155 @@
// 模拟数据 - 个人排名
export const individualRankings = [
{
id: 1,
name: '张三',
score: 985,
level: 'SSS',
avatar: '👑',
department: '销售部',
completedTasks: 48,
bonus: 5000
},
{
id: 2,
name: '李四',
score: 972,
level: 'SSS',
avatar: '🥇',
department: '技术部',
completedTasks: 45,
bonus: 3000
},
{
id: 3,
name: '王五',
score: 958,
level: 'SS',
avatar: '🥈',
department: '市场部',
completedTasks: 42,
bonus: 2000
},
{
id: 4,
name: '赵六',
score: 923,
level: 'SS',
avatar: '🥉',
department: '财务部',
completedTasks: 40,
bonus: 1500
},
{
id: 5,
name: '钱七',
score: 897,
level: 'S',
avatar: '⭐',
department: '人力资源部',
completedTasks: 38,
bonus: 1000
},
{
id: 6,
name: '孙八',
score: 876,
level: 'S',
avatar: '⭐',
department: '销售部',
completedTasks: 36,
bonus: 1000
},
{
id: 7,
name: '周九',
score: 854,
level: 'A',
avatar: '🔥',
department: '技术部',
completedTasks: 34,
bonus: 800
},
{
id: 8,
name: '吴十',
score: 832,
level: 'A',
avatar: '🔥',
department: '市场部',
completedTasks: 32,
bonus: 800
},
{
id: 9,
name: '郑十一',
score: 810,
level: 'B',
avatar: '⚡',
department: '财务部',
completedTasks: 30,
bonus: 500
},
{
id: 10,
name: '王十二',
score: 795,
level: 'B',
avatar: '⚡',
department: '人力资源部',
completedTasks: 28,
bonus: 500
},
{
id: 11,
name: '李十三',
score: 782,
level: 'B',
avatar: '⚡',
department: '销售部',
completedTasks: 26,
bonus: 500
},
{
id: 12,
name: '张十四',
score: 765,
level: 'B',
avatar: '⚡',
department: '技术部',
completedTasks: 24,
bonus: 500
},
{
id: 13,
name: '王十五',
score: 748,
level: 'B',
avatar: '⚡',
department: '市场部',
completedTasks: 22,
bonus: 500
},
{
id: 14,
name: '赵十六',
score: 732,
level: 'C',
avatar: '🎯',
department: '财务部',
completedTasks: 20,
bonus: 300
},
{
id: 15,
name: '钱十七',
score: 715,
level: 'C',
avatar: '🎯',
department: '人力资源部',
completedTasks: 18,
bonus: 300
}
import {
getIndividualRankings,
saveIndividualRankings as saveIndividualRankingsToConfig,
getTeamRankings,
saveTeamRankings as saveTeamRankingsToConfig,
getSystemUsers,
saveSystemUsers as saveSystemUsersToConfig,
addSystemUser as addSystemUserToConfig,
deleteSystemUser as deleteSystemUserToConfig,
updateSystemUser as updateSystemUserToConfig,
getDisplayConfig,
saveDisplayConfig as saveDisplayConfigToConfig,
getBattleEndTime,
saveBattleEndTime as saveBattleEndTimeToConfig,
getDrumConfig,
saveDrumConfig as saveDrumConfigToConfig,
getBonusRules,
saveBonusRules as saveBonusRulesToConfig
} from '../services/configService';
// 初始化数据
export let individualRankings = getIndividualRankings();
export let teamRankings = getTeamRankings();
export let bonusRules = getBonusRules() || [
{ rank: '1-3', description: '前三名', individualBonus: '¥10000, ¥8000, ¥5000', teamBonus: '¥50000, ¥30000, ¥20000' },
{ rank: '4-10', description: '四至十名', individualBonus: '¥3000/人', teamBonus: '¥10000/队' },
{ rank: '11-20', description: '十一至二十名', individualBonus: '¥1000/人', teamBonus: '¥5000/队' }
];
// 模拟数据 - 战队排名
export const teamRankings = [
{
id: 1,
name: '王者之师',
totalScore: 4850,
memberCount: 5,
level: 'SSS',
leader: '张三',
completedTasks: 210,
bonus: 15000
},
{
id: 2,
name: '战无不胜',
totalScore: 4680,
memberCount: 5,
level: 'SS',
leader: '李四',
completedTasks: 198,
bonus: 10000
},
{
id: 3,
name: '超越极限',
totalScore: 4520,
memberCount: 5,
level: 'SS',
leader: '王五',
completedTasks: 185,
bonus: 8000
},
{
id: 4,
name: '精英战队',
totalScore: 4280,
memberCount: 5,
level: 'S',
leader: '赵六',
completedTasks: 172,
bonus: 6000
},
{
id: 5,
name: '梦想之巅',
totalScore: 4150,
memberCount: 5,
level: 'S',
leader: '钱七',
completedTasks: 165,
bonus: 6000
},
{
id: 6,
name: '无敌战队',
totalScore: 3980,
memberCount: 5,
level: 'A',
leader: '孙八',
completedTasks: 155,
bonus: 4000
},
{
id: 7,
name: '冲锋陷阵',
totalScore: 3850,
memberCount: 5,
level: 'A',
leader: '周九',
completedTasks: 148,
bonus: 4000
},
{
id: 8,
name: '锐不可当',
totalScore: 3720,
memberCount: 5,
level: 'A',
leader: '吴十',
completedTasks: 142,
bonus: 4000
},
{
id: 9,
name: '同心协力',
totalScore: 3600,
memberCount: 5,
level: 'B',
leader: '郑十一',
completedTasks: 135,
bonus: 2000
},
{
id: 10,
name: '众志成城',
totalScore: 3480,
memberCount: 5,
level: 'B',
leader: '王十二',
completedTasks: 128,
bonus: 2000
},
{
id: 11,
name: '气势如虹',
totalScore: 3350,
memberCount: 5,
level: 'B',
leader: '李十三',
completedTasks: 122,
bonus: 2000
},
{
id: 12,
name: '披荆斩棘',
totalScore: 3220,
memberCount: 5,
level: 'B',
leader: '张十四',
completedTasks: 115,
bonus: 2000
},
{
id: 13,
name: '勇攀高峰',
totalScore: 3100,
memberCount: 5,
level: 'C',
leader: '王十五',
completedTasks: 108,
bonus: 1000
},
{
id: 14,
name: '力争上游',
totalScore: 2980,
memberCount: 5,
level: 'C',
leader: '赵十六',
completedTasks: 102,
bonus: 1000
},
{
id: 15,
name: '蓄势待发',
totalScore: 2850,
memberCount: 5,
level: 'C',
leader: '钱十七',
completedTasks: 95,
bonus: 1000
}
];
// 奖金设置说明
export const bonusRules = [
{
rank: '1-3',
individualBonus: '5000元, 3000元, 2000元',
teamBonus: '15000元, 10000元, 8000元',
description: '顶尖表现,高额奖励'
},
{
rank: '4-6',
individualBonus: '1500元, 1000元, 1000元',
teamBonus: '6000元, 6000元',
description: '优秀表现,丰厚激励'
},
{
rank: '7-10',
individualBonus: '800元, 800元, 500元, 500元',
teamBonus: '无',
description: '良好表现,基础奖励'
}
];
// 系统用户(用于后台登录)
export const systemUsers = [
{
username: 'admin',
password: 'admin123',
role: 'admin'
},
{
username: 'manager',
password: 'manager123',
role: 'manager'
}
];
// 显示配置
export const displayConfig = {
// 个人排名显示配置
individual: {
showLevel: false, // 显示等级列
showDepartment: false, // 显示部门列
scoreColumn: {
displayName: '签单金额', // 列显示名称
displayStyle: 'amount' // 显示样式: 'amount'(金额) 或 'number'(普通数字)
},
columnWidths: {
rank: 60, // 排名列宽度
avatar: 60, // 头像列宽度
name: 1, // 姓名列宽度1表示自动填充
score: 80, // 分数列宽度
level: 80, // 等级列宽度
department: 1, // 部门列宽度1表示自动填充
bonus: 80 // 奖金列宽度
}
},
// 战队排名显示配置
team: {
showMemberCount: false, // 显示人数列
showLeader: false, // 显示队长列
totalScoreColumn: {
displayName: '签单金额', // 列显示名称
displayStyle: 'amount' // 显示样式: 'amount'(金额) 或 'number'(普通数字)
},
columnWidths: {
rank: 60, // 排名列宽度
name: 1, // 战队名列宽度1表示自动填充
score: 80, // 分数列宽度
memberCount: 60, // 人数列宽度
leader: 1, // 队长列宽度1表示自动填充
bonus: 80 // 奖金列宽度
}
}
};
// 结束时间配置(精确到秒)
export let battleEndTime = {
date: '2026-02-01',
time: '23:59:59'
};
// 战鼓参数配置
export let drumConfig = {
// 音效参数
sound: {
volume: 1.0, // 音量 0-1
frequency1: 150, // 第一个音调频率
frequency2: 100, // 第二个音调频率
attackTime: 0.01, // 起音时间
decayTime: 0.3, // 衰减时间
type1: 'sine', // 第一个振荡器类型
type2: 'triangle' // 第二个振荡器类型
},
// 动画参数
animation: {
beatInterval: 200, // 节拍间隔(毫秒)
beatScale: 1.3, // 跳动缩放比例
beatTranslateY: -15, // 跳动上下位移
beatRotate: 5, // 跳动旋转角度
idlePulseDuration: 2, // 闲置脉动持续时间
beatDuration: 100 // 单次跳动持续时间
},
// 节拍模式
pattern: {
strongBeats: [1, 4], // 强拍位置1-4拍
totalBeats: 4 // 每小节总拍数
}
};
export let systemUsers = getSystemUsers();
export let displayConfig = getDisplayConfig();
export let battleEndTime = getBattleEndTime();
export let drumConfig = getDrumConfig();
// 保存结束时间
export const saveBattleEndTime = (endTime) => {
battleEndTime = endTime;
export const saveBattleEndTime = async (endTime) => {
battleEndTime = { ...endTime };
console.log('保存结束时间:', battleEndTime);
return await saveBattleEndTimeToConfig(endTime);
};
// 保存数据的方法(模拟本地存储)
export const saveIndividualRankings = (data) => {
// 这里只是模拟实际项目中可以考虑使用localStorage或后端API
// 保存个人排名数据
export const saveIndividualRankings = async (data) => {
individualRankings = [...data];
console.log('保存个人排名数据:', data);
// 在真实环境中可以调用API保存数据
return await saveIndividualRankingsToConfig(data);
};
export const saveTeamRankings = (data) => {
// 这里只是模拟实际项目中可以考虑使用localStorage或后端API
// 保存战队排名数据
export const saveTeamRankings = async (data) => {
teamRankings = [...data];
console.log('保存战队排名数据:', data);
// 在真实环境中可以调用API保存数据
return await saveTeamRankingsToConfig(data);
};
// 保存显示配置
export const saveDisplayConfig = (config) => {
// 这里只是模拟实际项目中可以考虑使用localStorage或后端API
export const saveDisplayConfig = async (config) => {
displayConfig = { ...config };
console.log('保存显示配置:', config);
// 在真实环境中可以调用API保存数据
return await saveDisplayConfigToConfig(config);
};
// 保存战鼓配置
export const saveDrumConfig = (config) => {
// 这里只是模拟实际项目中可以考虑使用localStorage或后端API
export const saveDrumConfig = async (config) => {
console.log('保存战鼓配置:', config);
drumConfig = { ...drumConfig, ...config };
// 在真实环境中可以调用API保存数据
return await saveDrumConfigToConfig(drumConfig);
};
// 保存奖金规则
export const saveBonusRules = async (rules) => {
bonusRules = [...rules];
console.log('保存奖金规则:', rules);
return await saveBonusRulesToConfig(rules);
};
// 验证用户登录
export const validateUser = (username, password) => {
return systemUsers.find(user => user.username === username && user.password === password);
};
// 初始化数据(异步版本,用于应用启动时加载数据)
export const initializeData = async () => {
try {
await refreshData();
console.log('数据初始化成功');
} catch (error) {
console.error('数据初始化失败:', error);
}
};
// 刷新数据
export const refreshData = async () => {
try {
individualRankings = await getIndividualRankings();
teamRankings = await getTeamRankings();
bonusRules = await getBonusRules() || [
{ rank: '1-3', description: '前三名', individualBonus: '¥10000, ¥8000, ¥5000', teamBonus: '¥50000, ¥30000, ¥20000' },
{ rank: '4-10', description: '四至十名', individualBonus: '¥3000/人', teamBonus: '¥10000/队' },
{ rank: '11-20', description: '十一至二十名', individualBonus: '¥1000/人', teamBonus: '¥5000/队' }
];
systemUsers = await getSystemUsers();
displayConfig = await getDisplayConfig();
battleEndTime = await getBattleEndTime();
drumConfig = await getDrumConfig();
return true;
} catch (error) {
console.error('刷新数据失败:', error);
return false;
}
};
// 添加系统用户
export const addSystemUser = async (user) => {
try {
const result = await addSystemUserToConfig(user);
if (result) {
// 刷新用户列表
systemUsers = await getSystemUsers();
}
return result;
} catch (error) {
console.error('添加用户失败:', error);
throw error;
}
};
// 删除系统用户
export const deleteSystemUser = async (userId) => {
try {
const result = await deleteSystemUserToConfig(userId);
if (result) {
// 刷新用户列表
systemUsers = await getSystemUsers();
}
return result;
} catch (error) {
console.error('删除用户失败:', error);
throw error;
}
};
// 更新系统用户
export const updateSystemUser = async (userId, updatedData) => {
try {
const result = await updateSystemUserToConfig(userId, updatedData);
if (result) {
// 刷新用户列表
systemUsers = await getSystemUsers();
}
return result;
} catch (error) {
console.error('更新用户失败:', error);
throw error;
}
};