Initial commit: 教务系统在线平台
- 包含4个产业方向的前端项目:智能开发、智能制造、大健康、财经商贸 - 已清理node_modules、.yoyo等大文件,项目大小从2.6GB优化至631MB - 配置完善的.gitignore文件 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
86
frontend_智能开发/updateAvatarsNew.cjs
Normal file
86
frontend_智能开发/updateAvatarsNew.cjs
Normal file
@@ -0,0 +1,86 @@
|
||||
const fs = require('fs');
|
||||
|
||||
// 读取新的头像列表
|
||||
const avatarList = JSON.parse(fs.readFileSync('./网页未导入数据/头像列表.json', 'utf-8'));
|
||||
|
||||
// 新的头像URL选择(从更新后的头像列表中选择)
|
||||
const newAvatars = {
|
||||
// 袁嘉宇 - 使用列表中索引为20的头像
|
||||
'袁嘉宇': avatarList[20].url, // 70a5030e91c730db9c2edbe8b6ca7bad.jpg
|
||||
// 冯欣怡(第3名) - 使用列表中索引为16的头像
|
||||
'冯欣怡': avatarList[16].url // 568778504a7064376530a9d2a26592b1.jpg
|
||||
};
|
||||
|
||||
console.log('选择的新头像:');
|
||||
console.log('袁嘉宇:', newAvatars['袁嘉宇']);
|
||||
console.log('冯欣怡:', newAvatars['冯欣怡']);
|
||||
|
||||
// 读取mockData.js
|
||||
const mockDataPath = './src/data/mockData.js';
|
||||
let mockDataContent = fs.readFileSync(mockDataPath, 'utf-8');
|
||||
|
||||
// 备份
|
||||
const backupPath = `${mockDataPath}.backup_avatars_new_${new Date().toISOString().replace(/[:.]/g, '-')}`;
|
||||
fs.writeFileSync(backupPath, mockDataContent);
|
||||
console.log(`✅ 已创建备份:${backupPath}`);
|
||||
|
||||
// 1. 更新user中的袁嘉宇头像
|
||||
mockDataContent = mockDataContent.replace(
|
||||
/user:\s*{[\s\S]*?avatar:\s*"[^"]+"/,
|
||||
(match) => {
|
||||
return match.replace(
|
||||
/avatar:\s*"[^"]+"/,
|
||||
`avatar: "${newAvatars['袁嘉宇']}"`
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
// 2. 更新classRanking和其他地方的头像
|
||||
for (const [name, url] of Object.entries(newAvatars)) {
|
||||
// 使用更精确的正则表达式来匹配每个学生的数据块
|
||||
const namePattern = new RegExp(
|
||||
`(name|studentName):\\s*"${name}"[\\s\\S]*?avatar:\\s*"[^"]+"`,
|
||||
'g'
|
||||
);
|
||||
|
||||
mockDataContent = mockDataContent.replace(namePattern, (match) => {
|
||||
return match.replace(/avatar:\s*"[^"]+"/, `avatar: "${url}"`);
|
||||
});
|
||||
}
|
||||
|
||||
// 3. 更新personalProfile中袁嘉宇的头像
|
||||
mockDataContent = mockDataContent.replace(
|
||||
/personalProfile[\s\S]*?basicInfo:\s*{[\s\S]*?avatar:\s*"[^"]+"/,
|
||||
(match) => {
|
||||
return match.replace(/avatar:\s*"[^"]+"/, `avatar: "${newAvatars['袁嘉宇']}"`);
|
||||
}
|
||||
);
|
||||
|
||||
// 更新ClassRankModal组件中的头像映射
|
||||
const modalPath = './src/components/ClassRankModal/index.jsx';
|
||||
let modalContent = fs.readFileSync(modalPath, 'utf-8');
|
||||
|
||||
// 备份ClassRankModal
|
||||
const modalBackup = `${modalPath}.backup_avatars_new_${new Date().toISOString().replace(/[:.]/g, '-')}`;
|
||||
fs.writeFileSync(modalBackup, modalContent);
|
||||
|
||||
// 更新ClassRankModal中的头像映射
|
||||
for (const [name, url] of Object.entries(newAvatars)) {
|
||||
const casePattern = new RegExp(
|
||||
`case\\s*"${name}":[\\s\\S]*?avatarUrl\\s*=\\s*"[^"]+"`,
|
||||
'g'
|
||||
);
|
||||
|
||||
modalContent = modalContent.replace(casePattern, (match) => {
|
||||
return match.replace(/avatarUrl\s*=\s*"[^"]+"/, `avatarUrl = "${url}"`);
|
||||
});
|
||||
}
|
||||
|
||||
// 写回文件
|
||||
fs.writeFileSync(mockDataPath, mockDataContent);
|
||||
fs.writeFileSync(modalPath, modalContent);
|
||||
|
||||
console.log('✅ 头像更新完成!');
|
||||
console.log('更新的头像:');
|
||||
console.log('- 袁嘉宇(个人信息): 使用列表中索引20的头像');
|
||||
console.log('- 冯欣怡(第3名): 使用列表中索引16的头像');
|
||||
Reference in New Issue
Block a user