const fs = require('fs'); // 读取projectLibraryMock.js文件 const mockFilePath = './src/mocks/projectLibraryMock.js'; let mockFileContent = fs.readFileSync(mockFilePath, 'utf-8'); // 找到getMockProjectsList中的projects数组 const firstProjectsMatch = mockFileContent.match(/const projects = \[([\s\S]*?)\];\s*\/\/ 搜索过滤/); if (!firstProjectsMatch) { console.error('❌ 未找到getMockProjectsList中的projects数组'); process.exit(1); } // 提取第一个projects数组的内容 const projectsArrayContent = firstProjectsMatch[1]; // 找到getMockProjectDetail函数的开始和结束位置 const detailFunctionStart = mockFileContent.indexOf('export const getMockProjectDetail = (id) => {'); if (detailFunctionStart === -1) { console.error('❌ 未找到getMockProjectDetail函数'); process.exit(1); } // 找到函数结束位置 const functionEndPattern = /\n\};/g; functionEndPattern.lastIndex = detailFunctionStart; let functionEndMatch; let detailFunctionEnd = -1; while ((functionEndMatch = functionEndPattern.exec(mockFileContent))) { const functionContent = mockFileContent.substring(detailFunctionStart, functionEndMatch.index + functionEndMatch[0].length); if (functionContent.split('{').length === functionContent.split('}').length) { detailFunctionEnd = functionEndMatch.index + functionEndMatch[0].length; break; } } if (detailFunctionEnd === -1) { console.error('❌ 未找到getMockProjectDetail函数的结束位置'); process.exit(1); } // 构建新的getMockProjectDetail函数,返回正确的格式 const newDetailFunction = `export const getMockProjectDetail = (id) => { // 直接根据ID返回对应项目的详情 const projects = [${projectsArrayContent}]; const project = projects.find(p => p.id === parseInt(id)); if (!project) { return { success: false, code: 404, message: "项目不存在", data: null }; } // 返回组件期望的格式 return { success: true, code: 0, message: "success", data: { id: project.id, title: project.name, category: "智能开发", description: project.overview || "暂无项目概述", overview: project.overview || "暂无项目概述", // 适用岗位 - 转换为组件期望的格式 applicablePositions: project.positions || [], // 对应单元 correspondingUnits: project.unit ? [project.unit] : [], // 流程和关键技术点 process: project.process || "", keyPoints: project.keyPoints || "", // 其他字段 attachments: [] } }; }`; // 替换getMockProjectDetail函数 mockFileContent = mockFileContent.substring(0, detailFunctionStart) + newDetailFunction + mockFileContent.substring(detailFunctionEnd); // 写入文件 fs.writeFileSync(mockFilePath, mockFileContent, 'utf-8'); console.log('✅ getMockProjectDetail函数返回格式已修复!'); console.log('现在返回的数据包含success字段,弹窗应该能正常打开。');