#!/usr/bin/env python3 # -*- coding: utf-8 -*- import json def create_my_projects_data(): # 读取土木水利项目案例数据 with open('网页未导入数据/土木水利产业/土木水利项目案例.json', 'r', encoding='utf-8') as f: civil_data = json.load(f) # 按单元分组项目 unit_projects = {} for item in civil_data: project_name = item.get('案例名称', '') # 使用垂直能力课单元 units = item.get('对应单元名称(垂直能力课)', '') if units and project_name: unit_list = [u.strip() for u in units.split(',')] # 只取第一个单元,避免重复 if unit_list: unit = unit_list[0] if unit not in unit_projects: unit_projects[unit] = [] if project_name not in unit_projects[unit]: # 避免重复 unit_projects[unit].append(project_name) # 选择10个有代表性的单元 selected_units = [ "BIM设计", "建筑工程施工技术", "项目成本管理", "建筑设计原理", "室内三维空间设计", "工程招投标与合同管理", "项目质量管理", "建筑动画设计", "广联达软件实操教学", "智能建造" ] # 构建myProjectsData格式 my_projects_data = [] for unit in selected_units: if unit in unit_projects and unit_projects[unit]: # 每个单元最多取2个项目 projects = unit_projects[unit][:2] my_projects_data.append({ "unitName": unit, "projects": projects }) # 确保有10个单元 while len(my_projects_data) < 10: for unit, projects in unit_projects.items(): if unit not in selected_units and projects: my_projects_data.append({ "unitName": unit, "projects": projects[:2] }) if len(my_projects_data) >= 10: break # 读取筏板厚度项目的详细内容 with open('网页未导入数据/土木水利产业/学生完成的项目/筏板厚度及配筋变更引起的工程造价调整项目.md', 'r', encoding='utf-8') as f: raft_content = f.read() # 创建可点击项目的数据 clickable_project = { "id": "clickable-1", "name": "筏板厚度及配筋变更引起的工程造价调整项目", "unitName": "工程造价智慧管理", "isClickable": True, "content": { "title": "筏板厚度及配筋变更引起的工程造价调整项目", "description": "某住宅项目在基础施工阶段,由于甲方提出新的使用功能要求,结构专业图纸发生了设计变更。原设计筏板厚度为 600 mm,变更后调整为 650 mm,同时钢筋配筋量同步增加。因设计调整,需对施工图预算进行重新编制,并提交新的工程造价书。", "images": [], "sections": [ { "title": "一、项目背景", "content": "某住宅项目在基础施工阶段,由于甲方提出新的使用功能要求,结构专业图纸发生了设计变更。原设计筏板厚度为 **600 mm**,变更后调整为 **650 mm**,同时钢筋配筋量同步增加。因设计调整,需对施工图预算进行重新编制,并提交新的工程造价书。" }, { "title": "二、项目任务", "content": '''根据以下条件,完成一份造价调整书: 1. **变更原因说明**:简要描述甲方提出变更的原因及对结构安全、使用功能的影响。 2. **工程量变化分析**:计算筏板厚度增加所带来的混凝土方量变化;分析配筋量增加的情况(可假设钢筋增加比例,如增加10%)。 3. **单价及总价调整**:结合定额单价,计算混凝土与钢筋工程费的增加额,并汇总出总造价的变化情况。 4. **费用对比表**:编制一张"变更前后造价对比表",清晰展示各分项造价的差异。 5. **文字说明**:在造价书中加入简要的文字说明,解释因设计变更导致造价上调的合理性,以及对项目成本控制的启示。''' }, { "title": "三、参考数据", "content": '''- 筏板面积:2,000 m² - 混凝土单价:450 元/m³ - 钢筋单价:4,200 元/t - 原设计配筋率:120 kg/m³''' }, { "title": "四、工程量计算", "content": '''### (1)混凝土体积 - **变更前体积**:2,000 m² × 0.60 m = 1,200 m³ - **变更后体积**:2,000 m² × 0.65 m = 1,300 m³ - **体积增量**:100 m³ ### (2)钢筋工程量 - **原钢筋量**:1,200 × 0.12 = 144.0 t - **新钢筋量**:1,300 × 0.132 = 171.6 t(配筋率上调至 0.132 t/m³) - **钢筋增量**:27.6 t''' }, { "title": "五、造价对比分析", "content": '''| 分项 | 变更前造价 | 变更后造价 | 增减额 | 增减比例 | | --- | --- | --- | --- | --- | | 混凝土 | 540,000元 | 585,000元 | +45,000元 | +8.33% | | 钢筋 | 604,800元 | 720,720元 | +115,920元 | +19.17% | | **合计** | **1,144,800元** | **1,305,720元** | **+160,920元** | **+14.06%** |''' }, { "title": "六、项目成果", "content": '''通过本项目的实施,成功完成了: 1. **准确计算工程量变化**:精确计算了筏板厚度增加带来的混凝土和钢筋用量变化。 2. **编制造价调整书**:完成了规范的工程造价调整书,为项目变更提供了可靠依据。 3. **成本控制分析**:分析了设计变更对项目成本的影响,提出了成本控制建议。 4. **专业技能提升**:掌握了工程变更造价调整的完整流程和方法。 5. **实践经验积累**:通过实际项目操作,积累了宝贵的工程造价管理经验。''' } ] } } # 输出结果 print(f"生成了{len(my_projects_data)}个单元的项目数据") for data in my_projects_data[:5]: print(f" - {data['unitName']}: {len(data['projects'])}个项目") return my_projects_data, clickable_project def generate_jsx_code(): my_projects_data, clickable_project = create_my_projects_data() # 生成myProjectsData的JSX代码 jsx_my_projects = "const myProjectsData = [\n" for item in my_projects_data: jsx_my_projects += " {\n" jsx_my_projects += f' "unitName": "{item["unitName"]}",\n' jsx_my_projects += ' "projects": [\n' for proj in item["projects"]: jsx_my_projects += f' "{proj}",\n' jsx_my_projects += ' ]\n' jsx_my_projects += " },\n" jsx_my_projects += "];" # 生成clickableProjects的JSX代码 jsx_clickable = """const clickableProjects = [ { id: "clickable-1", name: "筏板厚度及配筋变更引起的工程造价调整项目", unitName: "工程造价智慧管理", isClickable: true, content: { title: "筏板厚度及配筋变更引起的工程造价调整项目", description: "某住宅项目在基础施工阶段,由于甲方提出新的使用功能要求,结构专业图纸发生了设计变更。原设计筏板厚度为 600 mm,变更后调整为 650 mm,同时钢筋配筋量同步增加。", images: [], sections: [""" for section in clickable_project["content"]["sections"]: jsx_clickable += f""" {{ title: "{section['title']}", content: `{section['content']}` }},""" jsx_clickable += """ ] } } ];""" with open('my_projects_jsx.txt', 'w', encoding='utf-8') as f: f.write(jsx_my_projects) f.write('\n\n') f.write(jsx_clickable) print("\n✅ JSX代码已生成到 my_projects_jsx.txt") if __name__ == "__main__": generate_jsx_code()