Files
ALL-teach_sys/frontend_环保/convertEnvProjects.js

148 lines
4.8 KiB
JavaScript
Raw Normal View History

import fs from 'fs';
// 读取环保项目案例数据
const envProjects = JSON.parse(fs.readFileSync('网页未导入数据/环保产业/环保项目案例.json', 'utf8'));
// 转换为班级项目库格式
const projectsList = envProjects.map((project, index) => {
// 解析岗位名称
const positions = project["对应个人简历名称"] ?
project["对应个人简历名称"].split(',').map(p => p.trim()) : [];
// 解析垂直方向和单元
const direction = project["所属垂直方向"] || "环保工程技术与服务";
const unit = project["对应单元名称(垂直能力课)"] || project["对应单元名称(复合能力课)"] || "";
// 确定分类
let category = "环保技术";
if (project["案例名称"].includes("碳")) {
category = "碳管理";
} else if (project["案例名称"].includes("节能")) {
category = "节能技术";
} else if (project["案例名称"].includes("生态修复") || project["案例名称"].includes("湿地")) {
category = "生态修复";
} else if (project["案例名称"].includes("污水") || project["案例名称"].includes("水")) {
category = "水处理";
} else if (project["案例名称"].includes("土壤")) {
category = "土壤修复";
} else if (project["案例名称"].includes("环境影响评价")) {
category = "环境评价";
} else if (project["案例名称"].includes("设备")) {
category = "设备运维";
}
return {
id: index + 1,
name: project["案例名称"],
description: direction,
positions: positions,
unit: unit.split(',')[0].trim(), // 取第一个单元
direction: direction,
category: category
};
});
// 转换项目详情格式
const projectDetails = envProjects.map((project, index) => {
// 解析岗位并添加等级
const positions = project["对应个人简历名称"] ?
project["对应个人简历名称"].split(',').map(p => {
const posName = p.trim();
// 根据岗位名称判断等级
let level = "技术骨干岗";
if (posName.includes("助理") || posName.includes("专员") || posName.includes("技术员")) {
level = "普通岗";
} else if (posName.includes("主管") || posName.includes("经理")) {
level = "储备干部岗";
}
return {
level: level,
position: posName
};
}) : [];
// 解析项目内容
const content = project["项目案例内容"] || "";
// 提取项目概述
const overviewMatch = content.match(/# 一、项目概述\s*([\s\S]*?)(?=# 二、|$)/);
const overview = overviewMatch ? overviewMatch[1].trim() : "";
// 提取流程部分
const processMatch = content.match(/# 二、项目整体流程介绍\s*([\s\S]*?)(?=# 三、|$)/);
const process = processMatch ? processMatch[1].trim() : "";
// 提取关键技术点
const keyPointsMatch = content.match(/# 三、项目案例关键技术点\s*([\s\S]*?)$/);
const keyPoints = keyPointsMatch ? keyPointsMatch[1].trim() : "";
return {
id: index + 1,
name: project["案例名称"],
positions: positions,
unit: project["对应单元名称(垂直能力课)"] || project["对应单元名称(复合能力课)"] || "",
overview: overview,
process: process,
keyPoints: keyPoints
};
});
// 生成Mock数据代码
const mockCode = `// 项目库Mock数据
export const getMockProjectsList = (params = {}) => {
const { search = "", page = 1, pageSize = 10 } = params;
// 完整项目列表数据
const projects = ${JSON.stringify(projectsList, null, 4)};
// 搜索过滤
const filteredProjects = projects.filter(project => {
if (!search) return true;
return project.name.includes(search) ||
project.description.includes(search) ||
project.positions.some(pos => pos.includes(search)) ||
project.category.includes(search);
});
// 分页
const startIndex = (page - 1) * pageSize;
const endIndex = startIndex + pageSize;
const paginatedProjects = filteredProjects.slice(startIndex, endIndex);
return {
data: paginatedProjects,
total: filteredProjects.length,
page,
pageSize,
};
};
// 获取项目详情
export const getMockProjectDetail = (id) => {
// 直接根据ID返回对应项目的详情
const projects = ${JSON.stringify(projectDetails, null, 2)};
const project = projects.find(p => p.id === parseInt(id));
if (!project) {
return {
error: "项目未找到"
};
}
return {
data: project
};
};`;
// 写入文件
fs.writeFileSync('projectLibraryMock_env.js', mockCode, 'utf8');
console.log('环保项目数据转换完成!');
console.log(`共转换了 ${projectsList.length} 个项目`);
console.log('\n项目分类统计');
const categoryStats = {};
projectsList.forEach(p => {
categoryStats[p.category] = (categoryStats[p.category] || 0) + 1;
});
console.log(categoryStats);