Compare commits

...

28 Commits

  1. 229
      modify.md
  2. 16
      site/.next/app-build-manifest.json
  3. 2
      site/.next/cache/.tsbuildinfo
  4. BIN
      site/.next/cache/images/+ZHqBM2LCd60edpf-FLFs3axZ1s-cX6JAFfDY+hO+Vg=/60.1764773385254.Urt+xf4PIkRnfPCs+15jjCz6RuGNIMBSg4WPayxayD0=.avif
  5. BIN
      site/.next/cache/images/+tgdR5sNAgfrCRPeykTL7RcMTTKr+BHQVx1KKKMrBU4=/60.1764773691922.E7IihH7LtUcvCtSqqpshiZh8VrSwYZsEmapx1gU8J+8=.avif
  6. BIN
      site/.next/cache/images/-B4SqE3A2sQTwWtes4BHDwCuDTqp63wo82JjO9+KZ9o=/60.1765201863589.R1J3InxspVsdv0oyEEcpm-T6zWZPL0majrXBea6n1nk=.avif
  7. BIN
      site/.next/cache/images/-FaXIxY1v1K7KDIl6+diD3GnzbSLTrU1qCujmcRkQIU=/60.1765201866204.WaPq8TwLL5oeJYWKcnyQYeFQLCWpOjvph9TcDTo-8mY=.avif
  8. BIN
      site/.next/cache/images/1BJYEh-1uax6kWFVWo+rZ7BN7m8T7DuJ-jBfGS2pz4k=/60.1765205829146.0DjCUnsbbNtFM5Q4G62Tu1BGnCdyQsqWB7z2RedGBAI=.avif
  9. BIN
      site/.next/cache/images/2pdBgHe+PhVaO-nhxhBYXdwRt9lfsAKr9iav2n-ipQ8=/60.1764773694336.vTkjqd5vHk0HuiXjYgM19NrRCinbq3RQOhKmUh2WjIc=.avif
  10. BIN
      site/.next/cache/images/8lqlZ3P0ZydNgAoYkKR3GLIM8fEILi4yesU8qfpJGB8=/60.1764771239629.5ZGzjFzhErarVCziBDibjhyb9j81DWG9EDFVSGi5wGM=.avif
  11. BIN
      site/.next/cache/images/AbfW6-H-H7-2qtQ5wPXGNrc6FFDVve+wIyBcv9rjQdQ=/60.1764773696439.MpYHeILiMEpXcIWU6BqI4rqoqkNb87aXwbXAvteis1Q=.avif
  12. BIN
      site/.next/cache/images/B+hhMRtx3BWL0TjYARzPEqWluXiUZ4cv6Q39wNZMfWY=/60.1765205830658.zM9izp2uEwDo+uBk9UY1N854fC221t9tGB5dTXOZuwQ=.avif
  13. BIN
      site/.next/cache/images/EQRSaMwp8tAbmul5rkouyWvDdvIxsiuJM3PhacaA1C8=/60.1765205832989.DiDVUNtJF48eUqmTXiUXVQSawClt16pA796gvat5crM=.avif
  14. BIN
      site/.next/cache/images/FMxzL3mgnWcixCe0BLorCZUC5SrZS2bUbkCWK4ap-bs=/60.1764773698834.FJNhVEQkNCxcG1cNIGbhRERBjnB1x5rFrq-UnjgBSos=.avif
  15. BIN
      site/.next/cache/images/JE81jyYkxAGHbskSlYucoLWxWYPHGVkTK-rDTNxV5mY=/60.1765199347010.LQ8qFHXCD59NCRxXDNbySaeE2PpQsiQyH-3Pcac2Qek=.avif
  16. BIN
      site/.next/cache/images/KI1GlPUWtq+tGIoXycyUhPyXoNDKcW49nUzgIbC6OSA=/60.1764773692964.8MPff5T675yRVbkFrx2Lw-CmmaQj2+1NMnd8wWTvJI8=.avif
  17. BIN
      site/.next/cache/images/KiHAyXhnGGJlfgTZId5vetc9VBsFF6srAlSM4EEWNIQ=/60.1765205830410.oiovXui9No07v6QF5ItJHB8PznQy80J4O46q8KoTL6g=.avif
  18. BIN
      site/.next/cache/images/L58isRcWYNt24DLpenuRqbPelVIdeUUlQLy2N8Z6l-I=/60.1765205830923.sci5uXI2nkN3GEHwdpGN8xAZ6EsQHNF1z3LeIpDZpP4=.avif
  19. BIN
      site/.next/cache/images/LwI3eCK5WP0n4bIU6xzORdpbiCUkiJlMGUWIXLx28zo=/60.1765205835673.PTkQz30bYPlj9zjxj-RrtDFKOFYJQk4pX+j78CoqMfY=.avif
  20. BIN
      site/.next/cache/images/NYznSn1O8x319-dPAIvA9pXLUm0Eo-qBqiqEUXiVf9o=/60.1765205831347.gzngGRK+akDU9Lh42pFPc+piMp7OGMziPSkNW4Qf5aI=.avif
  21. BIN
      site/.next/cache/images/QDlpAsE0nSV8OHi77O1KYx2n3p2DhKUFM5eUM0EQKhg=/60.1765205829979.JXAPENDopkijfxUVh78eCOhht2HF3vYRhTx0e4wcpy0=.avif
  22. BIN
      site/.next/cache/images/RCchWW-e19DQHZJlX7-bDXTNpqvgocXXB9v0d1Mc0cw=/60.1764856626008.boC1oQNMC46zOnQ-CZKvnQpnT4-zJSKQuFSj2VVA5sg=.avif
  23. BIN
      site/.next/cache/images/S3Xj2fgPThIxWK22-muw9S+GPdCQUkjkBXsGC+bI2ow=/60.1764773380234.5mZmzqOWmCck55086C97DjwVsFltBImNvXgyIb2IO4I=.avif
  24. BIN
      site/.next/cache/images/TeFWddp7qgTve+BCQG5PmI6pBc+2vxOL4HIw5fpXoWM=/60.1765205828434.LQ8qFHXCD59NCRxXDNbySaeE2PpQsiQyH-3Pcac2Qek=.avif
  25. BIN
      site/.next/cache/images/XC+6W46FYhDKTru+DGUwNF4qEGV1nTG5nypI2Dr3fZQ=/60.1764773365569.+YwKUEvdMroTWy-gA5Jro3kWjCtlup-GYKYxzt4ECVM=.avif
  26. BIN
      site/.next/cache/images/aGd4u9R04v-mtdGN8eXbZzrgcCpZFUE3T73leJpq0Mw=/60.1765205834351.zmcpQUibKT0fmVxxPk+x3Ri8rCUHV0oXIpmlAkUNuro=.avif
  27. BIN
      site/.next/cache/images/bQUNbnYQu9imznVKsuYb5jHfRaCLVzhrVmW9AZGd+qo=/60.1765205835175.R4F5OFj5PtV3IscFobUFdtK4-pbcV8bw9kWp7hyUwj4=.avif
  28. BIN
      site/.next/cache/images/d-QCuazOX2ZcrRgV+4sfNhNgdmuMNT9W7WZqIHiT7ME=/60.1765205838958.aAofKJ7f0SjXKIn4AVA+DyLzjMpbA9mrAecpBSte-2k=.avif
  29. BIN
      site/.next/cache/images/drTHjioDpHQ6wz1DfyygYij4EGBn3HPuZucYJZ5ELl0=/60.1764773709993.boC1oQNMC46zOnQ-CZKvnQpnT4-zJSKQuFSj2VVA5sg=.avif
  30. BIN
      site/.next/cache/images/gV6AJlmHKE7nrT0XxOEdvFI0Qj6Z-QTG1fixj7dqyEE=/60.1764773681948.TfBTtsXk6QTknpidVHszccDmLdo3LjDonFb4v1Z7yE0=.avif
  31. BIN
      site/.next/cache/images/miQ1Fm7Cwwk0M87FTbAMlRdQPSkDShRtqSqTKf1qFhY=/60.1765205830207.KuYYVTvdzU9LFZSOTTJ0ORctGpr2uYdzsy9zK8To7WQ=.avif
  32. BIN
      site/.next/cache/images/ntg1vKrvOHG3ec0V8qJz-K2OoHM1wJ6OjBLe5Q+S6Nk=/60.1765205836707.vSGIFFOh6yJLfm2H6riHz-PRXJnr3vOUbrtI+bGu59I=.avif
  33. BIN
      site/.next/cache/images/p5k+nrM-FXx9BGqGg7n6O5mnoLFpKSkg3YuYTV1A638=/60.1764773533633.QzIuQmhNyanRqFQv-wGeZBL8ewsU5HfvZVFmYqjRDr4=.avif
  34. BIN
      site/.next/cache/images/rhrWIPyvDItRezOSG8PYbDT68Q3qbtgEnbvMWPDdDvU=/60.1764773375511.agqU+PEQJhQTcaxRUDpdGfH8miapkQoWWxLgR7GMrGE=.avif
  35. BIN
      site/.next/cache/images/rvMvW5EIvoIEEWr4iOfg3sKPbtfrSn3MCril1TKjNSw=/60.1764774207151.tWc0+dhA2JntYyWgBKxwvPmnkLThySXqOnYrYJ-9WD0=.avif
  36. BIN
      site/.next/cache/images/vBnijxJg6EPJGfb2TnTMhsaSUkL3K-ujb8G7-bq9kqE=/60.1764774197862.9ddYKyVhQF2fduoD0smCUpCoNhq5rUy3CuS16coobAs=.avif
  37. BIN
      site/.next/cache/images/wuzgkq7+lClFkxAJL1mPr-Occ1o-sjCdf826aJllkD4=/60.1765205831706.sLSdkLbiZmUuhtSamQcMpAubHEX3jcQLZGZMHY8S-RA=.avif
  38. BIN
      site/.next/cache/images/yehOX0wUiEUTL-IeXSUnRPK3kECnqLx48SaaOZEQ+qo=/60.1764856359933.yw1v1LJkOc12G2k6uJFXK+uH2VUL3BbOXRMVo2OZuqg=.avif
  39. BIN
      site/.next/cache/webpack/client-development-fallback/0.pack.gz
  40. BIN
      site/.next/cache/webpack/client-development-fallback/index.pack.gz
  41. BIN
      site/.next/cache/webpack/client-development/0.pack.gz
  42. BIN
      site/.next/cache/webpack/client-development/1.pack.gz
  43. BIN
      site/.next/cache/webpack/client-development/10.pack.gz
  44. BIN
      site/.next/cache/webpack/client-development/11.pack.gz
  45. BIN
      site/.next/cache/webpack/client-development/12.pack.gz
  46. BIN
      site/.next/cache/webpack/client-development/13.pack.gz
  47. BIN
      site/.next/cache/webpack/client-development/14.pack.gz
  48. BIN
      site/.next/cache/webpack/client-development/15.pack.gz
  49. BIN
      site/.next/cache/webpack/client-development/16.pack.gz
  50. BIN
      site/.next/cache/webpack/client-development/2.pack.gz
  51. BIN
      site/.next/cache/webpack/client-development/3.pack.gz
  52. BIN
      site/.next/cache/webpack/client-development/4.pack.gz
  53. BIN
      site/.next/cache/webpack/client-development/5.pack.gz
  54. BIN
      site/.next/cache/webpack/client-development/6.pack.gz
  55. BIN
      site/.next/cache/webpack/client-development/7.pack.gz
  56. BIN
      site/.next/cache/webpack/client-development/8.pack.gz
  57. BIN
      site/.next/cache/webpack/client-development/9.pack.gz
  58. BIN
      site/.next/cache/webpack/client-development/index.pack.gz
  59. BIN
      site/.next/cache/webpack/client-development/index.pack.gz.old
  60. BIN
      site/.next/cache/webpack/client-production/0.pack
  61. BIN
      site/.next/cache/webpack/client-production/1.pack
  62. BIN
      site/.next/cache/webpack/client-production/2.pack
  63. BIN
      site/.next/cache/webpack/client-production/3.pack
  64. BIN
      site/.next/cache/webpack/client-production/4.pack
  65. BIN
      site/.next/cache/webpack/client-production/5.pack
  66. BIN
      site/.next/cache/webpack/client-production/6.pack
  67. BIN
      site/.next/cache/webpack/client-production/index.pack
  68. BIN
      site/.next/cache/webpack/client-production/index.pack.old
  69. BIN
      site/.next/cache/webpack/edge-server-production/index.pack
  70. BIN
      site/.next/cache/webpack/edge-server-production/index.pack.old
  71. BIN
      site/.next/cache/webpack/server-development/0.pack.gz
  72. BIN
      site/.next/cache/webpack/server-development/1.pack.gz
  73. BIN
      site/.next/cache/webpack/server-development/10.pack.gz
  74. BIN
      site/.next/cache/webpack/server-development/11.pack.gz
  75. BIN
      site/.next/cache/webpack/server-development/12.pack.gz
  76. BIN
      site/.next/cache/webpack/server-development/13.pack.gz
  77. BIN
      site/.next/cache/webpack/server-development/14.pack.gz
  78. BIN
      site/.next/cache/webpack/server-development/15.pack.gz
  79. BIN
      site/.next/cache/webpack/server-development/16.pack.gz
  80. BIN
      site/.next/cache/webpack/server-development/2.pack.gz
  81. BIN
      site/.next/cache/webpack/server-development/3.pack.gz
  82. BIN
      site/.next/cache/webpack/server-development/4.pack.gz
  83. BIN
      site/.next/cache/webpack/server-development/5.pack.gz
  84. BIN
      site/.next/cache/webpack/server-development/6.pack.gz
  85. BIN
      site/.next/cache/webpack/server-development/7.pack.gz
  86. BIN
      site/.next/cache/webpack/server-development/8.pack.gz
  87. BIN
      site/.next/cache/webpack/server-development/9.pack.gz
  88. BIN
      site/.next/cache/webpack/server-development/index.pack.gz
  89. BIN
      site/.next/cache/webpack/server-development/index.pack.gz.old
  90. BIN
      site/.next/cache/webpack/server-production/0.pack
  91. BIN
      site/.next/cache/webpack/server-production/1.pack
  92. BIN
      site/.next/cache/webpack/server-production/2.pack
  93. BIN
      site/.next/cache/webpack/server-production/index.pack
  94. BIN
      site/.next/cache/webpack/server-production/index.pack.old
  95. 41
      site/.next/server/_rsc_components_ProductCarouselSection_tsx.js
  96. 41
      site/.next/server/_rsc_components_SolutionsCarousel_tsx.js
  97. 4
      site/.next/server/app-paths-manifest.json
  98. 205
      site/.next/server/app/[locale]/page.js
  99. 2
      site/.next/server/app/[locale]/page_client-reference-manifest.js
  100. 302
      site/.next/server/app/[locale]/solutions/[id]/page.js

229
modify.md

@ -1,70 +1,159 @@
## Docker 发布配置
- 新增:`site/Dockerfile` - 多阶段构建配置,基于 node:20-alpine,优化镜像体积
- 新增:`site/.dockerignore` - Docker 构建忽略文件,排除不必要的文件
- 新增:`site/docker-compose.yml` - Docker Compose 配置文件,便于本地和服务器部署
- 新增:`DOCKER.md` - Docker 发布完整指南,包含构建、运行、发布到 Docker Hub 等步骤
- 更新:`site/next.config.mjs` - 添加 `output: 'standalone'` 配置,支持独立输出模式,优化 Docker 部署
- 修复:`site/Dockerfile` - 添加复制 `data` 目录到容器,修复运行时找不到 JSON 数据文件的错误(ENOENT: no such file or directory)
## 移动端导航修复
- 修复:`site/components/MainNav.tsx` - 添加移动端汉堡菜单,解决手机端导航菜单不显示的问题
- 将组件改为客户端组件("use client"),使用 useState 管理菜单状态
- 添加移动端菜单按钮(汉堡图标),点击展开/收起菜单
- 移动端菜单包含搜索框和所有导航项
- PC 端保持原有横向导航布局不变
## 功能更新
- About 轮播统一比例:`BannerCarousel` 支持 `aspectClass`,在 About 页固定为 `aspect-[16/6]`,保证三张图一致大小(object-cover 填充)。
- 轮播增强:`BannerCarousel` 新增左右切换按钮(Prev/Next),悬浮可见;保持自动轮播与指示点。
- 导航新增:在 `mainnav.json``data/en/mainnav.json` 首位添加“公司介绍/About”,链接 `/about`
- 新增页面:`app/[locale]/about/page.tsx`,上方轮播(手机/家电/智能),下方“公司产品介绍”段落。
- 新增数据:`data/about.json` 与 `data/en/about.json`
- 修复:横幅链接指向不存在的 `flagship`,改为现有产品 `p1`(中/英 `banners.json`)。
- 本地化:产品详情页根据 `locale` 切换文案(未找到/返回/首页/加入购物车)。
- 视觉优化:`ProductCard` 提升观感(白底圆角阴影、居中等比展示、标题/描述固定高度、悬浮上浮)。
- 布局优化:`ProductGrid` 增大断点间距与列数回落,频道页头部增加标题与返回入口。
- 修复:本地化引入后样式与布局错乱的根因(双层布局)。
- 根级 `app/layout.tsx` 改为只渲染 `{children}`,不再包含 Header/Footer。
- 根首页 `app/page.tsx` 改为重定向到 `/zh-CN`,所有实际页面只使用 `app/[locale]/layout.tsx` 的单一布局。
- 多语言:取消 Next 内置 i18n 配置,统一使用 `app/[locale]/*` 路由前缀,避免与布局冲突。
- 链接前缀:为组件增加 `basePath/locale` 支持,确保所有链接都指向带语言前缀的路径。
- 更新 `MainNav`、`BannerCarousel`、`PromoGrid`、`ProductCard`、`ProductGrid`、`FloorSection` 接口并在页面传入 `basePath`
- 新增本地化路由:`app/[locale]/layout.tsx`、`app/[locale]/page.tsx`、`app/[locale]/channel/[slug]/page.tsx`、`app/[locale]/product/[id]/page.tsx`。
- 数据按语言读取:`lib/data.ts` 增加 locale 感知,优先读取 `data/<locale>/*.json`,否则回退 `data/*.json`
- 英文示例数据:`data/en/{mainnav,banners,promos,products,services}.json`。
- 语言开关:新增 `components/LangSwitch.tsx`,在 `MainNav` 右侧切换中英文(在路径前添加/切换 `/en``/zh-CN`)。
- 新增:频道页 `app/channel/[slug]/page.tsx`(从 `data/products.json` 匹配 floor,显示横幅与产品网格),避免手机/家电等频道 404。
- 新增:产品详情页 `app/product/[id]/page.tsx`(从数据集中查找产品,含面包屑与占位购买按钮),避免产品链接 404。
- 新增:`app/not-found.tsx` 全局 404 友好页。
- 新增:批量 SVG 占位图到 `site/public/`(hero/floors/products/promos/icons),并将 `data/*.json` 的图片扩展名改为 `.svg` 对应路径,确保本地即刻有图可用。
- 修复:`site/public/products/a2.svg` 的 `xmlns` 写法错误,改为 `http://www.w3.org/2000/svg`,解决“净化器”图片不显示。
## 2025-10-30
- 新增:项目任务清单(初始化 10 项),当前进行中:建立 data/ 与类型定义。
- 新增:`site/types.ts` 类型定义(NavItem/Banner/Promo/Product/Floor/ServiceLink)。
- 新增:`site/data/` 示例数据文件(`nav.json`、`banners.json`、`products.json`)。
- 新增:基础 UI 组件 `site/components/TopBar.tsx`、`MainNav.tsx`、`Footer.tsx`;组件以 props 驱动,后续由页面注入数据。
- 变更:取消 TopBar 登录/注册入口,仅保留帮助中心链接。
- 新增:数据读取工具 `site/lib/data.ts`(从 `data/*.json` 读取)。
- 新增:首页所需组件 `BannerCarousel`、`PromoGrid`、`ProductCard`、`ProductGrid`、`FloorSection`、`ServiceLinks`。
- 新增:`app/layout.tsx`、`app/page.tsx`、`app/globals.css`,完成首页骨架接线(TopBar→MainNav→Hero→Promos→楼层→服务→Footer)。
- 新增与配置:Next.js + TypeScript + Tailwind 环境
- 更新 `site/package.json`:添加脚本(dev/build/start)与依赖(next/react/react-dom)及 devDependencies(typescript/@types/node/@types/react/tailwindcss/postcss/autoprefixer 等)。
- 新增 `site/tsconfig.json`:启用严格模式、ES2020、Bundler 解析、引入 Node/React 类型。
- 新增 `site/next.config.ts`、`site/postcss.config.mjs`、`site/tailwind.config.ts`,Tailwind 扫描 `app/` `components/`
- 将 Next.js 配置从 `next.config.ts` 改为 `next.config.mjs`(Next 14 不支持 `.ts` 配置)。
- 移除 TopBar:删除 `site/components/TopBar.tsx``site/data/topbar.json`,`app/layout.tsx` 不再引用;`site/lib/data.ts` 移除 `getTopbarNav`
- Windows 终端设 UTF-8(`chcp 65001` + `$OutputEncoding`)后执行 `yarn install` 和依赖安装以避免中文乱码。
- 为避免 Tailwind v4 与现有配置不兼容,暂将 Tailwind 固定为 3.4.10,并将 React/Next 与类型依赖固定到兼容版本。
变更原因:为实现基于 Next.js + Tailwind 的官网首页布局,先行搭建数据与类型骨架,保证后续内容可替换。
- 新增:`PLAN.md` 实施计划与步骤(目标/范围/架构/步骤/部署/替换指南/里程碑)。
# 修改记录
## 2024年 - 优化房屋安全监测方案"系统组成"部分格式
### 修改内容
1. **优化"二、系统组成"部分格式** (`site/房屋安全监测方案.md`)
- 修复列表项格式,添加点号和空格(如"1智能"改为"1. 智能")
- 使用加粗格式(**)突出列表项标题,提升可读性
- 去除多余空白行,保持合理的段落间距
- 统一格式规范,使文档更加美观
### 格式改进
- 列表项格式规范化(1. 2. 3. 4.)
- 列表项标题使用加粗格式,层次更清晰
- 去除多余空白行,文档更紧凑
- 保持内容不变,仅优化格式
---
## 2024年 - 重构房屋安全监测方案文档格式
### 修改内容
1. **优化文档格式和排版** (`site/房屋安全监测方案.md`)
- 使用标准 Markdown 标题语法(#、##、###)替代纯文本标题
- 主标题使用一级标题(#)
- 一级章节(一、二、三等)使用二级标题(##)
- 二级列表项使用三级标题(###)
- 优化段落间距,提升可读性
- 保持所有内容完全不变,仅优化格式和排版
### 格式改进
- 标题层级更加清晰,符合 Markdown 规范
- 文档结构更加规范,便于阅读和渲染
- 段落间距优化,视觉效果更佳
- 列表项格式统一,层次分明
---
## 2024年 - 解决方案页面重新设计
### 修改内容
1. **添加解决方案markdown文件读取功能** (`site/lib/data.ts`)
- 添加了 `solutionMarkdownMap` 映射,将解决方案ID映射到对应的markdown文件名
- 添加了 `getSolutionMarkdownFile` 函数,用于读取解决方案markdown文件
- 添加了 `getSolutionMarkdown` 导出函数,支持缓存机制
2. **创建解决方案详情页面组件** (`site/components/SolutionDetailSection.tsx`)
- 新建组件用于渲染解决方案的markdown内容
- 支持解析markdown格式,提取标题和段落
- 使用与网站一致的设计风格
3. **创建解决方案详情页面路由** (`site/app/[locale]/solutions/[id]/page.tsx`)
- 新建动态路由页面,支持通过ID访问具体解决方案详情
- 集成markdown内容读取和渲染
- 包含404错误处理
4. **修改导航组件** (`site/components/MainNav.tsx`)
- 添加二级菜单悬停显示功能
- PC端:鼠标悬停时显示下拉菜单
- 移动端:显示折叠式二级菜单
- 支持 `NavItem``children` 属性
5. **更新导航数据** (`site/data/mainnav.json`)
- 为"解决方案"菜单项添加二级菜单
- 包含四个子菜单项:
- 房屋安全监测方案 (`/solutions/house-safety`)
- 边坡安全监测方案 (`/solutions/slope-safety`)
- 桥梁安全监测方案 (`/solutions/bridge-safety`)
- 矿山/坑道/水坝监测方案 (`/solutions/mine-dam`)
6. **修改解决方案列表组件** (`site/components/SolutionsSection.tsx`)
- 添加 `locale` 参数支持
- 将解决方案卡片改为可点击的链接
- 点击卡片跳转到对应的详情页面
- 优化hover效果和过渡动画
7. **更新解决方案页面** (`site/app/[locale]/solutions/page.tsx`)
- 传递 `locale` 参数给 `SolutionsSection` 组件
### 功能说明
- 解决方案页面现在支持二级菜单导航
- 鼠标悬停在"解决方案"菜单上时,会显示四个子菜单项
- 点击解决方案卡片可以跳转到对应的详情页面
- 详情页面会显示对应markdown文件的完整内容
- 支持中英文多语言
### 相关文件
- `房屋安全监测方案.md` - 房屋安全监测方案内容
- `边坡安全监测方案优化.md` - 边坡安全监测方案内容
- `桥梁安全监测方案.md` - 桥梁安全监测方案内容
- `矿山_坑道 _水坝监测方案.md` - 矿山/坑道/水坝监测方案内容
---
## 2024年 - 修复解决方案详情页面文件读取问题并优化内容
### 修改内容
1. **修复文件路径查找问题** (`site/lib/data.ts`)
- 修复了解决方案markdown文件的路径查找逻辑
- 添加了直接在`site`目录下查找文件的路径选项
- 确保文件能够正确读取,解决显示空白的问题
2. **优化房屋安全监测方案内容** (`site/房屋安全监测方案.md`)
- 大幅扩充和优化了方案内容,从96行扩展到300+行
- 添加了详细的技术说明和设备介绍
- 完善了监测指标、监测方法、系统功能等章节
- 增加了实施方案的详细步骤说明
- 添加了系统优势的详细描述
- 优化了总结部分,使其更加全面和专业
### 问题解决
- **问题**:点击房屋安全监测方案后显示空白
- **原因**:文件路径查找不正确,无法找到markdown文件
- **解决方案**
1. 修复了路径查找逻辑,添加了`site`目录下的直接查找路径
2. 优化了文件内容,使其更加丰富和专业
### 内容优化亮点
- 详细的技术参数说明(精度、频率范围等)
- 完整的监测方法和工作流程
- 多级预警机制和响应流程
- 数据分析和趋势预测功能
- 完整的实施方案和维护指南
---
## 2024年 - 首页解决方案轮播添加跳转功能
### 修改内容
1. **修改首页解决方案轮播组件** (`site/components/SolutionsCarousel.tsx`)
- 添加 `locale` 参数支持
- 将轮播项改为可点击的链接,点击后跳转到对应的解决方案详情页
- 添加"了解更多"链接提示和箭头图标
- 优化hover效果:
- 标题颜色变化(hover时变为蓝色)
- 图片缩放效果(hover时轻微放大)
- 阴影增强效果
- "了解更多"链接的箭头位置动画
2. **更新首页** (`site/app/[locale]/page.tsx`)
- 传递 `locale` 参数给 `SolutionsCarousel` 组件
### 功能说明
- 首页的解决方案轮播现在可以点击跳转到详情页
- 每个轮播项都是一个可点击的链接
- 添加了视觉反馈,提升用户体验
- 支持中英文多语言

16
site/.next/app-build-manifest.json

@ -1,9 +1,15 @@
{
"pages": {
"/page": [
"/[locale]/solutions/[id]/page": [
"static/chunks/webpack.js",
"static/chunks/main-app.js",
"static/chunks/app/page.js"
"static/chunks/app/[locale]/solutions/[id]/page.js"
],
"/[locale]/layout": [
"static/chunks/webpack.js",
"static/chunks/main-app.js",
"static/css/app/[locale]/layout.css",
"static/chunks/app/[locale]/layout.js"
],
"/layout": [
"static/chunks/webpack.js",
@ -19,12 +25,6 @@
"static/chunks/webpack.js",
"static/chunks/main-app.js",
"static/chunks/app/[locale]/page.js"
],
"/[locale]/layout": [
"static/chunks/webpack.js",
"static/chunks/main-app.js",
"static/css/app/[locale]/layout.css",
"static/chunks/app/[locale]/layout.js"
]
}
}

2
site/.next/cache/.tsbuildinfo

File diff suppressed because one or more lines are too long

BIN
site/.next/cache/images/+ZHqBM2LCd60edpf-FLFs3axZ1s-cX6JAFfDY+hO+Vg=/60.1764773385254.Urt+xf4PIkRnfPCs+15jjCz6RuGNIMBSg4WPayxayD0=.avif

Binary file not shown.

BIN
site/.next/cache/images/+tgdR5sNAgfrCRPeykTL7RcMTTKr+BHQVx1KKKMrBU4=/60.1764773691922.E7IihH7LtUcvCtSqqpshiZh8VrSwYZsEmapx1gU8J+8=.avif

Binary file not shown.

BIN
site/.next/cache/images/-B4SqE3A2sQTwWtes4BHDwCuDTqp63wo82JjO9+KZ9o=/60.1765201863589.R1J3InxspVsdv0oyEEcpm-T6zWZPL0majrXBea6n1nk=.avif

Binary file not shown.

BIN
site/.next/cache/images/-FaXIxY1v1K7KDIl6+diD3GnzbSLTrU1qCujmcRkQIU=/60.1765201866204.WaPq8TwLL5oeJYWKcnyQYeFQLCWpOjvph9TcDTo-8mY=.avif

Binary file not shown.

BIN
site/.next/cache/images/1BJYEh-1uax6kWFVWo+rZ7BN7m8T7DuJ-jBfGS2pz4k=/60.1765205829146.0DjCUnsbbNtFM5Q4G62Tu1BGnCdyQsqWB7z2RedGBAI=.avif

Binary file not shown.

BIN
site/.next/cache/images/2pdBgHe+PhVaO-nhxhBYXdwRt9lfsAKr9iav2n-ipQ8=/60.1764773694336.vTkjqd5vHk0HuiXjYgM19NrRCinbq3RQOhKmUh2WjIc=.avif

Binary file not shown.

BIN
site/.next/cache/images/8lqlZ3P0ZydNgAoYkKR3GLIM8fEILi4yesU8qfpJGB8=/60.1764771239629.5ZGzjFzhErarVCziBDibjhyb9j81DWG9EDFVSGi5wGM=.avif

Binary file not shown.

BIN
site/.next/cache/images/AbfW6-H-H7-2qtQ5wPXGNrc6FFDVve+wIyBcv9rjQdQ=/60.1764773696439.MpYHeILiMEpXcIWU6BqI4rqoqkNb87aXwbXAvteis1Q=.avif

Binary file not shown.

BIN
site/.next/cache/images/B+hhMRtx3BWL0TjYARzPEqWluXiUZ4cv6Q39wNZMfWY=/60.1765205830658.zM9izp2uEwDo+uBk9UY1N854fC221t9tGB5dTXOZuwQ=.avif

Binary file not shown.

BIN
site/.next/cache/images/EQRSaMwp8tAbmul5rkouyWvDdvIxsiuJM3PhacaA1C8=/60.1765205832989.DiDVUNtJF48eUqmTXiUXVQSawClt16pA796gvat5crM=.avif

Binary file not shown.

BIN
site/.next/cache/images/FMxzL3mgnWcixCe0BLorCZUC5SrZS2bUbkCWK4ap-bs=/60.1764773698834.FJNhVEQkNCxcG1cNIGbhRERBjnB1x5rFrq-UnjgBSos=.avif

Binary file not shown.

BIN
site/.next/cache/images/JE81jyYkxAGHbskSlYucoLWxWYPHGVkTK-rDTNxV5mY=/60.1765199347010.LQ8qFHXCD59NCRxXDNbySaeE2PpQsiQyH-3Pcac2Qek=.avif

Binary file not shown.

BIN
site/.next/cache/images/KI1GlPUWtq+tGIoXycyUhPyXoNDKcW49nUzgIbC6OSA=/60.1764773692964.8MPff5T675yRVbkFrx2Lw-CmmaQj2+1NMnd8wWTvJI8=.avif

Binary file not shown.

BIN
site/.next/cache/images/KiHAyXhnGGJlfgTZId5vetc9VBsFF6srAlSM4EEWNIQ=/60.1765205830410.oiovXui9No07v6QF5ItJHB8PznQy80J4O46q8KoTL6g=.avif

Binary file not shown.

BIN
site/.next/cache/images/L58isRcWYNt24DLpenuRqbPelVIdeUUlQLy2N8Z6l-I=/60.1765205830923.sci5uXI2nkN3GEHwdpGN8xAZ6EsQHNF1z3LeIpDZpP4=.avif

Binary file not shown.

BIN
site/.next/cache/images/LwI3eCK5WP0n4bIU6xzORdpbiCUkiJlMGUWIXLx28zo=/60.1765205835673.PTkQz30bYPlj9zjxj-RrtDFKOFYJQk4pX+j78CoqMfY=.avif

Binary file not shown.

BIN
site/.next/cache/images/NYznSn1O8x319-dPAIvA9pXLUm0Eo-qBqiqEUXiVf9o=/60.1765205831347.gzngGRK+akDU9Lh42pFPc+piMp7OGMziPSkNW4Qf5aI=.avif

Binary file not shown.

BIN
site/.next/cache/images/QDlpAsE0nSV8OHi77O1KYx2n3p2DhKUFM5eUM0EQKhg=/60.1765205829979.JXAPENDopkijfxUVh78eCOhht2HF3vYRhTx0e4wcpy0=.avif

Binary file not shown.

BIN
site/.next/cache/images/RCchWW-e19DQHZJlX7-bDXTNpqvgocXXB9v0d1Mc0cw=/60.1764856626008.boC1oQNMC46zOnQ-CZKvnQpnT4-zJSKQuFSj2VVA5sg=.avif

Binary file not shown.

BIN
site/.next/cache/images/S3Xj2fgPThIxWK22-muw9S+GPdCQUkjkBXsGC+bI2ow=/60.1764773380234.5mZmzqOWmCck55086C97DjwVsFltBImNvXgyIb2IO4I=.avif

Binary file not shown.

BIN
site/.next/cache/images/TeFWddp7qgTve+BCQG5PmI6pBc+2vxOL4HIw5fpXoWM=/60.1765205828434.LQ8qFHXCD59NCRxXDNbySaeE2PpQsiQyH-3Pcac2Qek=.avif

Binary file not shown.

BIN
site/.next/cache/images/XC+6W46FYhDKTru+DGUwNF4qEGV1nTG5nypI2Dr3fZQ=/60.1764773365569.+YwKUEvdMroTWy-gA5Jro3kWjCtlup-GYKYxzt4ECVM=.avif

Binary file not shown.

BIN
site/.next/cache/images/aGd4u9R04v-mtdGN8eXbZzrgcCpZFUE3T73leJpq0Mw=/60.1765205834351.zmcpQUibKT0fmVxxPk+x3Ri8rCUHV0oXIpmlAkUNuro=.avif

Binary file not shown.

BIN
site/.next/cache/images/bQUNbnYQu9imznVKsuYb5jHfRaCLVzhrVmW9AZGd+qo=/60.1765205835175.R4F5OFj5PtV3IscFobUFdtK4-pbcV8bw9kWp7hyUwj4=.avif

Binary file not shown.

BIN
site/.next/cache/images/d-QCuazOX2ZcrRgV+4sfNhNgdmuMNT9W7WZqIHiT7ME=/60.1765205838958.aAofKJ7f0SjXKIn4AVA+DyLzjMpbA9mrAecpBSte-2k=.avif

Binary file not shown.

BIN
site/.next/cache/images/drTHjioDpHQ6wz1DfyygYij4EGBn3HPuZucYJZ5ELl0=/60.1764773709993.boC1oQNMC46zOnQ-CZKvnQpnT4-zJSKQuFSj2VVA5sg=.avif

Binary file not shown.

BIN
site/.next/cache/images/gV6AJlmHKE7nrT0XxOEdvFI0Qj6Z-QTG1fixj7dqyEE=/60.1764773681948.TfBTtsXk6QTknpidVHszccDmLdo3LjDonFb4v1Z7yE0=.avif

Binary file not shown.

BIN
site/.next/cache/images/miQ1Fm7Cwwk0M87FTbAMlRdQPSkDShRtqSqTKf1qFhY=/60.1765205830207.KuYYVTvdzU9LFZSOTTJ0ORctGpr2uYdzsy9zK8To7WQ=.avif

Binary file not shown.

BIN
site/.next/cache/images/ntg1vKrvOHG3ec0V8qJz-K2OoHM1wJ6OjBLe5Q+S6Nk=/60.1765205836707.vSGIFFOh6yJLfm2H6riHz-PRXJnr3vOUbrtI+bGu59I=.avif

Binary file not shown.

BIN
site/.next/cache/images/p5k+nrM-FXx9BGqGg7n6O5mnoLFpKSkg3YuYTV1A638=/60.1764773533633.QzIuQmhNyanRqFQv-wGeZBL8ewsU5HfvZVFmYqjRDr4=.avif

Binary file not shown.

BIN
site/.next/cache/images/rhrWIPyvDItRezOSG8PYbDT68Q3qbtgEnbvMWPDdDvU=/60.1764773375511.agqU+PEQJhQTcaxRUDpdGfH8miapkQoWWxLgR7GMrGE=.avif

Binary file not shown.

BIN
site/.next/cache/images/rvMvW5EIvoIEEWr4iOfg3sKPbtfrSn3MCril1TKjNSw=/60.1764774207151.tWc0+dhA2JntYyWgBKxwvPmnkLThySXqOnYrYJ-9WD0=.avif

Binary file not shown.

BIN
site/.next/cache/images/vBnijxJg6EPJGfb2TnTMhsaSUkL3K-ujb8G7-bq9kqE=/60.1764774197862.9ddYKyVhQF2fduoD0smCUpCoNhq5rUy3CuS16coobAs=.avif

Binary file not shown.

BIN
site/.next/cache/images/wuzgkq7+lClFkxAJL1mPr-Occ1o-sjCdf826aJllkD4=/60.1765205831706.sLSdkLbiZmUuhtSamQcMpAubHEX3jcQLZGZMHY8S-RA=.avif

Binary file not shown.

BIN
site/.next/cache/images/yehOX0wUiEUTL-IeXSUnRPK3kECnqLx48SaaOZEQ+qo=/60.1764856359933.yw1v1LJkOc12G2k6uJFXK+uH2VUL3BbOXRMVo2OZuqg=.avif

Binary file not shown.

BIN
site/.next/cache/webpack/client-development-fallback/0.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development-fallback/index.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/0.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/1.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/10.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/11.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/12.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/13.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/14.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/15.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/16.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/2.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/3.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/4.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/5.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/6.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/7.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/8.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/9.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/index.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/client-development/index.pack.gz.old

Binary file not shown.

BIN
site/.next/cache/webpack/client-production/0.pack

Binary file not shown.

BIN
site/.next/cache/webpack/client-production/1.pack

Binary file not shown.

BIN
site/.next/cache/webpack/client-production/2.pack

Binary file not shown.

BIN
site/.next/cache/webpack/client-production/3.pack

Binary file not shown.

BIN
site/.next/cache/webpack/client-production/4.pack

Binary file not shown.

BIN
site/.next/cache/webpack/client-production/5.pack

Binary file not shown.

BIN
site/.next/cache/webpack/client-production/6.pack

Binary file not shown.

BIN
site/.next/cache/webpack/client-production/index.pack

Binary file not shown.

BIN
site/.next/cache/webpack/client-production/index.pack.old

Binary file not shown.

BIN
site/.next/cache/webpack/edge-server-production/index.pack

Binary file not shown.

BIN
site/.next/cache/webpack/edge-server-production/index.pack.old

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/0.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/1.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/10.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/11.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/12.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/13.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/14.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/15.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/16.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/2.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/3.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/4.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/5.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/6.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/7.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/8.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/9.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/index.pack.gz

Binary file not shown.

BIN
site/.next/cache/webpack/server-development/index.pack.gz.old

Binary file not shown.

BIN
site/.next/cache/webpack/server-production/0.pack

Binary file not shown.

BIN
site/.next/cache/webpack/server-production/1.pack

Binary file not shown.

BIN
site/.next/cache/webpack/server-production/2.pack

Binary file not shown.

BIN
site/.next/cache/webpack/server-production/index.pack

Binary file not shown.

BIN
site/.next/cache/webpack/server-production/index.pack.old

Binary file not shown.

41
site/.next/server/_rsc_components_ProductCarouselSection_tsx.js

@ -0,0 +1,41 @@
"use strict";
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
exports.id = "_rsc_components_ProductCarouselSection_tsx";
exports.ids = ["_rsc_components_ProductCarouselSection_tsx"];
exports.modules = {
/***/ "(rsc)/./components/ProductCarouselSection.tsx":
/*!***********************************************!*\
!*** ./components/ProductCarouselSection.tsx ***!
\***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ProductCarouselSection: () => (/* binding */ e0)
/* harmony export */ });
/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\Desktop\qa\web\X1_Site\site\components\ProductCarouselSection.tsx`)
// Accessing the __esModule property and exporting $$typeof are required here.
// The __esModule getter forces the proxy target to create the default export
// and the $$typeof value is for rendering logic to determine if the module
// is a client boundary.
const { __esModule, $$typeof } = proxy;
const __default__ = proxy.default;
const e0 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\Desktop\qa\web\X1_Site\site\components\ProductCarouselSection.tsx#ProductCarouselSection`);
/***/ })
};
;

41
site/.next/server/_rsc_components_SolutionsCarousel_tsx.js

@ -0,0 +1,41 @@
"use strict";
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
exports.id = "_rsc_components_SolutionsCarousel_tsx";
exports.ids = ["_rsc_components_SolutionsCarousel_tsx"];
exports.modules = {
/***/ "(rsc)/./components/SolutionsCarousel.tsx":
/*!******************************************!*\
!*** ./components/SolutionsCarousel.tsx ***!
\******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ SolutionsCarousel: () => (/* binding */ e0)
/* harmony export */ });
/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\Desktop\qa\web\X1_Site\site\components\SolutionsCarousel.tsx`)
// Accessing the __esModule property and exporting $$typeof are required here.
// The __esModule getter forces the proxy target to create the default export
// and the $$typeof value is for rendering logic to determine if the module
// is a client boundary.
const { __esModule, $$typeof } = proxy;
const __default__ = proxy.default;
const e0 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\Desktop\qa\web\X1_Site\site\components\SolutionsCarousel.tsx#SolutionsCarousel`);
/***/ })
};
;

4
site/.next/server/app-paths-manifest.json

@ -1,4 +1,4 @@
{
"/page": "app/page.js",
"/[locale]/page": "app/[locale]/page.js"
"/[locale]/page": "app/[locale]/page.js",
"/[locale]/solutions/[id]/page": "app/[locale]/solutions/[id]/page.js"
}

205
site/.next/server/app/[locale]/page.js

File diff suppressed because one or more lines are too long

2
site/.next/server/app/[locale]/page_client-reference-manifest.js

File diff suppressed because one or more lines are too long

302
site/.next/server/app/[locale]/solutions/[id]/page.js

File diff suppressed because one or more lines are too long

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save