97 lines
3.1 KiB
JavaScript
97 lines
3.1 KiB
JavaScript
|
|
import fs from 'fs';
|
||
|
|
|
||
|
|
// 读取财经商贸项目案例数据
|
||
|
|
const caseData = JSON.parse(fs.readFileSync('网页未导入数据/财经商贸产业/财经商贸项目案例.json', 'utf8'));
|
||
|
|
|
||
|
|
// 读取当前的项目库Mock数据
|
||
|
|
const mockFilePath = 'src/mocks/projectLibraryMock.js';
|
||
|
|
let mockContent = fs.readFileSync(mockFilePath, 'utf8');
|
||
|
|
|
||
|
|
// 构建项目详情对象
|
||
|
|
const projectDetails = {};
|
||
|
|
|
||
|
|
caseData.slice(0, 20).forEach((item, index) => {
|
||
|
|
const id = index + 1;
|
||
|
|
|
||
|
|
// 获取岗位列表并分配等级
|
||
|
|
const positions = item['对应个人简历名称'] ? item['对应个人简历名称'].split(',').map(pos => {
|
||
|
|
const position = pos.trim();
|
||
|
|
// 根据岗位名称分配等级
|
||
|
|
let level = '基础岗';
|
||
|
|
if (position.includes('主管') || position.includes('经理')) {
|
||
|
|
level = '技术骨干岗';
|
||
|
|
} else if (position.includes('助理') || position.includes('储备')) {
|
||
|
|
level = '储备干部岗';
|
||
|
|
}
|
||
|
|
return { level, position };
|
||
|
|
}) : [];
|
||
|
|
|
||
|
|
projectDetails[id] = {
|
||
|
|
id: id,
|
||
|
|
title: item['案例名称'],
|
||
|
|
overview: item['项目案例内容'] ?
|
||
|
|
item['项目案例内容'].split('\\n')[0].replace(/^#\s*/, '').replace(/项目概述\s*/, '').trim() :
|
||
|
|
'项目概述内容',
|
||
|
|
applicablePositions: positions,
|
||
|
|
units: [item['对应单元名称(垂直能力课)'] || item['对应单元名称(复合能力课)'] || ''].filter(u => u),
|
||
|
|
process: extractProcess(item['项目案例内容']),
|
||
|
|
keyPoints: extractKeyPoints(item['项目案例内容']),
|
||
|
|
attachments: [
|
||
|
|
{ name: `${item['案例名称']}.docx`, size: '1.2MB', type: 'doc' },
|
||
|
|
{ name: '项目执行手册.pdf', size: '1.8MB', type: 'pdf' }
|
||
|
|
]
|
||
|
|
};
|
||
|
|
});
|
||
|
|
|
||
|
|
// 提取项目流程部分
|
||
|
|
function extractProcess(content) {
|
||
|
|
if (!content) return '';
|
||
|
|
const processMatch = content.match(/项目整体流程介绍([\s\S]*?)(?=项目案例关键技术点|$)/);
|
||
|
|
if (processMatch) {
|
||
|
|
return processMatch[1].trim();
|
||
|
|
}
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
|
||
|
|
// 提取关键技术点部分
|
||
|
|
function extractKeyPoints(content) {
|
||
|
|
if (!content) return '';
|
||
|
|
const keyPointsMatch = content.match(/项目案例关键技术点([\s\S]*?)$/);
|
||
|
|
if (keyPointsMatch) {
|
||
|
|
return keyPointsMatch[1].trim();
|
||
|
|
}
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
|
||
|
|
// 构建getMockProjectDetail函数
|
||
|
|
const detailFunction = `
|
||
|
|
// 项目详情Mock数据 - 财经商贸
|
||
|
|
export const getMockProjectDetail = (id) => {
|
||
|
|
const projectDetails = ${JSON.stringify(projectDetails, null, 2)};
|
||
|
|
|
||
|
|
const detail = projectDetails[id];
|
||
|
|
|
||
|
|
if (!detail) {
|
||
|
|
return {
|
||
|
|
success: false,
|
||
|
|
message: '项目不存在'
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
return {
|
||
|
|
success: true,
|
||
|
|
data: detail
|
||
|
|
};
|
||
|
|
};`;
|
||
|
|
|
||
|
|
// 替换getMockProjectDetail函数
|
||
|
|
mockContent = mockContent.replace(
|
||
|
|
/\/\/ 项目详情Mock数据[\s\S]*?export const getMockProjectDetail[\s\S]*?};[\s]*};/,
|
||
|
|
detailFunction
|
||
|
|
);
|
||
|
|
|
||
|
|
// 写回文件
|
||
|
|
fs.writeFileSync(mockFilePath, mockContent, 'utf8');
|
||
|
|
|
||
|
|
console.log('项目详情已更新完成!');
|
||
|
|
console.log(`共更新了 ${Object.keys(projectDetails).length} 个项目详情`);
|