150 lines
4.9 KiB
JavaScript
150 lines
4.9 KiB
JavaScript
|
|
import fs from 'fs';
|
|||
|
|
import path from 'path';
|
|||
|
|
import { fileURLToPath } from 'url';
|
|||
|
|
|
|||
|
|
const __filename = fileURLToPath(import.meta.url);
|
|||
|
|
const __dirname = path.dirname(__filename);
|
|||
|
|
|
|||
|
|
// 读取财经商贸个人档案数据
|
|||
|
|
const financeProfileData = JSON.parse(
|
|||
|
|
fs.readFileSync(path.join(__dirname, '网页未导入数据/财经商贸产业/财经商贸个人档案.json'), 'utf-8')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// 读取头像列表
|
|||
|
|
const avatarList = JSON.parse(
|
|||
|
|
fs.readFileSync(path.join(__dirname, '网页未导入数据/头像列表.json'), 'utf-8')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// 找到罗浩宇的数据
|
|||
|
|
const luoHaoyu = financeProfileData.find(s => s["学员名称"] === "罗浩宇");
|
|||
|
|
|
|||
|
|
if (!luoHaoyu) {
|
|||
|
|
console.error("未找到罗浩宇的数据");
|
|||
|
|
process.exit(1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 为罗浩宇选择一个专业的头像(选择第25个)
|
|||
|
|
const luoHaoyuAvatar = avatarList[24].url;
|
|||
|
|
|
|||
|
|
console.log("罗浩宇的数据:");
|
|||
|
|
console.log("- 学号:", luoHaoyu["学号"]);
|
|||
|
|
console.log("- 学校:", luoHaoyu["学校名称"]);
|
|||
|
|
console.log("- 专业:", luoHaoyu["专业名称"]);
|
|||
|
|
console.log("- 学分:", luoHaoyu["学分"]);
|
|||
|
|
console.log("- 排名:", luoHaoyu["班级排名"]);
|
|||
|
|
console.log("- MBTI:", luoHaoyu["MBTI"]);
|
|||
|
|
console.log("- 垂直方向:", luoHaoyu["垂直方向"]);
|
|||
|
|
console.log("- 新头像:", luoHaoyuAvatar);
|
|||
|
|
|
|||
|
|
// 读取mockData.js文件
|
|||
|
|
const mockDataPath = path.join(__dirname, 'src/data/mockData.js');
|
|||
|
|
let mockDataContent = fs.readFileSync(mockDataPath, 'utf-8');
|
|||
|
|
|
|||
|
|
// 备份原文件
|
|||
|
|
const backupPath = path.join(__dirname, 'src/data', `mockData.js.backup_${new Date().toISOString().replace(/[:.]/g, '-')}`);
|
|||
|
|
fs.copyFileSync(mockDataPath, backupPath);
|
|||
|
|
console.log(`\n备份已创建: ${backupPath}`);
|
|||
|
|
|
|||
|
|
// 1. 更新user对象(侧边栏显示)
|
|||
|
|
const userObjectStr = ` user: {
|
|||
|
|
name: "罗浩宇",
|
|||
|
|
avatar: "${luoHaoyuAvatar}",
|
|||
|
|
role: "学生",
|
|||
|
|
studentId: "${luoHaoyu["学号"]}",
|
|||
|
|
school: "${luoHaoyu["学校名称"]}",
|
|||
|
|
major: "${luoHaoyu["专业名称"]}",
|
|||
|
|
credits: ${luoHaoyu["学分"]},
|
|||
|
|
classRank: ${luoHaoyu["班级排名"]},
|
|||
|
|
mbti: "${luoHaoyu["MBTI"]}",
|
|||
|
|
verticalDirection: "${luoHaoyu["垂直方向"]}",
|
|||
|
|
industry: "财经商贸"
|
|||
|
|
},`;
|
|||
|
|
|
|||
|
|
// 替换user对象
|
|||
|
|
mockDataContent = mockDataContent.replace(
|
|||
|
|
/user:\s*\{[^}]*\},/s,
|
|||
|
|
userObjectStr
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// 2. 更新profile对象(个人基本信息)
|
|||
|
|
const profileObjectStr = ` profile: {
|
|||
|
|
name: "罗浩宇",
|
|||
|
|
gender: "男",
|
|||
|
|
studentId: "${luoHaoyu["学号"]}",
|
|||
|
|
avatar: "${luoHaoyuAvatar}",
|
|||
|
|
school: "${luoHaoyu["学校名称"]}",
|
|||
|
|
major: "${luoHaoyu["专业名称"]}",
|
|||
|
|
courses: ["复合能力培养", "财经商贸方向", "电子商务", "数字营销"],
|
|||
|
|
className: "财经商贸",
|
|||
|
|
studyPhase: "复合能力培养",
|
|||
|
|
badges: {
|
|||
|
|
credits: ${luoHaoyu["学分"]},
|
|||
|
|
classRank: ${luoHaoyu["班级排名"]},
|
|||
|
|
mbti: "${luoHaoyu["MBTI"]}",
|
|||
|
|
},`;
|
|||
|
|
|
|||
|
|
// 替换profile对象的开头部分
|
|||
|
|
mockDataContent = mockDataContent.replace(
|
|||
|
|
/profile:\s*\{[^}]*badges:\s*\{[^}]*\},/s,
|
|||
|
|
profileObjectStr
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// 3. 更新profileOverview中的studentInfo
|
|||
|
|
const studentInfoPattern = /studentInfo:\s*\{[^}]*myRank:\s*\{[^}]*\},[^}]*\},/gs;
|
|||
|
|
|
|||
|
|
// 查找所有的studentInfo并替换
|
|||
|
|
const studentInfoStr = ` studentInfo: {
|
|||
|
|
name: "罗浩宇",
|
|||
|
|
realName: "罗浩宇",
|
|||
|
|
studentId: "${luoHaoyu["学号"]}",
|
|||
|
|
studentNo: "${luoHaoyu["学号"]}",
|
|||
|
|
avatar: "${luoHaoyuAvatar}",
|
|||
|
|
school: "${luoHaoyu["学校名称"]}",
|
|||
|
|
major: "${luoHaoyu["专业名称"]}",
|
|||
|
|
className: "财经商贸班",
|
|||
|
|
grade: "2023级",
|
|||
|
|
studyPhase: "复合能力培养",
|
|||
|
|
stageName: "${luoHaoyu["垂直方向"]}",
|
|||
|
|
mbti: "${luoHaoyu["MBTI"]}",
|
|||
|
|
mbtiType: "${luoHaoyu["MBTI"]}",
|
|||
|
|
enrollmentDate: "2023-09-01",
|
|||
|
|
expectedGraduation: "2026-06-30",
|
|||
|
|
credits: ${luoHaoyu["学分"]},
|
|||
|
|
gpa: 4.2,
|
|||
|
|
classRank: ${luoHaoyu["班级排名"]},
|
|||
|
|
totalStudents: 10,
|
|||
|
|
myRank: {
|
|||
|
|
rank: ${luoHaoyu["班级排名"]},
|
|||
|
|
score: ${luoHaoyu["学分"]},
|
|||
|
|
},
|
|||
|
|
},`;
|
|||
|
|
|
|||
|
|
// 替换所有的studentInfo
|
|||
|
|
mockDataContent = mockDataContent.replace(studentInfoPattern, studentInfoStr);
|
|||
|
|
|
|||
|
|
// 4. 更新排名数据中罗浩宇的头像
|
|||
|
|
// 查找罗浩宇在topStudents和rankings中的记录并更新头像
|
|||
|
|
const luoHaoyuPattern = new RegExp(
|
|||
|
|
`("name":\\s*"罗浩宇"[^}]*?"avatar":\\s*)"[^"]*"`,
|
|||
|
|
'g'
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
mockDataContent = mockDataContent.replace(luoHaoyuPattern, `$1"${luoHaoyuAvatar}"`);
|
|||
|
|
|
|||
|
|
// 同时处理studentName的情况
|
|||
|
|
const luoHaoyuPattern2 = new RegExp(
|
|||
|
|
`("studentName":\\s*"罗浩宇"[^}]*?"avatar":\\s*)"[^"]*"`,
|
|||
|
|
'g'
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
mockDataContent = mockDataContent.replace(luoHaoyuPattern2, `$1"${luoHaoyuAvatar}"`);
|
|||
|
|
|
|||
|
|
// 写入更新后的文件
|
|||
|
|
fs.writeFileSync(mockDataPath, mockDataContent, 'utf-8');
|
|||
|
|
|
|||
|
|
console.log('\n✅ 成功更新罗浩宇的个人信息');
|
|||
|
|
console.log('更新了以下位置:');
|
|||
|
|
console.log('- user对象(侧边栏)');
|
|||
|
|
console.log('- profile对象(个人基本信息)');
|
|||
|
|
console.log('- profileOverview.studentInfo(个人档案)');
|
|||
|
|
console.log('- 班级排名中的头像');
|