name: pref-web-dev description: >- 风机数据管理平台(performance-test / pref-web)开发与联调指南。涵盖 Vue 2 Options API、多代理 devServer、健康分析 healthApi 联调、动态路由与组织树风场 选择。在用户修改本仓库前端/后端、新增 API 联调、健康/性能/驾驶舱模块或询问
docs/AI_SPECS.md — 技术栈、目录、API、安全底线.cursor/rules/project-rules.mdc — 全项目总则.cursor/rules/frontend-rules.mdc — Vue 2 前端.cursor/rules/backend-rules.mdc — server/、downLoadServer/Rules 是精简硬约束;Specs 是详细说明。改代码前读 Specs 相关章节,不必把 Specs 全文塞进 Rule。
| 层 | 技术 |
|---|---|
| 前端 | Vue 2.6、Vue Router 3、Vuex 3、Element UI、SCSS、ECharts、Vue CLI 5 |
| 主 API | @/utils/request.js → baseURL: /api |
| 独立服务 | 各模块自建 axios 实例 + vue.config.js 代理前缀 |
| 后端 | server/(mysql2)、downLoadServer/(图表/报告导出) |
禁止:迁移 TypeScript / Vue 3 / Composition API;引入新 UI 库或新请求库。
npm run serve:dev # .env.dev
npm run serve:dt # .env.dt(大唐)
npm run serve:hd # .env.hd(华电)
npm run serve:jl # .env.jl
修改 vue.config.js 代理后必须重启 dev server。
主业务走 /api;其他服务用独立前缀,禁止用 /health(与路由 /home/health 冲突)。
| 前缀 | 环境变量 | 用途 |
|---|---|---|
/api |
VUE_APP_APIPROXY |
主业务 energy-manage-service |
/healthApi |
VUE_APP_HEALTH_APIPROXY |
健康分析 energy-manage-analyse-service |
/WZLapi |
VUE_APP_WZLAPIPROXY |
振动/激光 |
/AnalysisMulti |
VUE_APP_AnalysisMultiAPIPROXY |
健康评估算法 |
/downLoadChart |
VUE_APP_downLoadChartAPIPROXY |
图表下载 |
不要自定义 historyApiFallback.rewrites 覆盖默认 SPA 回退,否则 /home/* 会返回 Tomcat 404 而非 index.html。
新增独立服务时:
.env.* 加 VUE_APP_XXX_APIPROXYvue.config.js devServer.proxy 加前缀(勿与路由路径冲突)src/utils/xxxRequest.js 新建 axios 实例src/api/xxx.js 封装接口1. 确认 swagger 或接口文档 → 路径、方法、query/body、响应 ResultResp<T>
2. src/api/<module>.js 具名导出 export function getXxx(params)
3. 选择 request 实例(主 /api 或专用 healthRequest 等)
4. POST + query 参数时显式传 params: { fieldCode, datatime }
5. 页面 methods 调用,判断 res.code === 200 后取 res.data
6. 复杂响应抽到 views/<module>/utils/*Mapper.js 映射 UI 结构
// 标准包装
{ code: 200, data: T, msg: string, status: boolean }
拦截器已处理非 200;页面 catch 后清空或保留上次数据,不要 router.push 到 404 页。
Message.error 提示,保持当前页面healthRequest 会识别 Tomcat HTML 响应并 reject/healthApi/... 而非 /api/...| 文件 | 职责 |
|---|---|
src/views/health/index.vue |
仪表盘页 |
src/views/health/components/health/HealthHeader.vue |
风场树(portal 到 header) |
src/api/healthAnalyse.js |
健康分析接口 |
src/utils/healthRequest.js |
/healthApi 专用请求 |
src/views/health/utils/healthDashboardMapper.js |
API → UI 数据映射 |
fieldCode = 组织树节点的 codeNumbertree[0].children[0](第一个根节点的第一个子节点)HealthHeader 的 change 事件携带 { ...node, fieldCode: codeNumber }/api(getSysOrganizationAuthTreeByRoleId),健康数据走 /healthApiPOST /energy-manage-analyse-service/healthscores/getHealthOverview
params: fieldCode(required), datatime(optional)
POST /energy-manage-analyse-service/healthscores/getHealthscoresWindList
POST /energy-manage-analyse-service/healthscores/getLastDaysTrend
params: day, engineId, fieldId
完整设计见 docs/API_DESIGN_REPORT_energy-manage-analyse.md。
src/router/index.js(/home 壳 + 驾驶舱)store/auth.js → getAuthRouterFn 按权限注入MenuDt.vue → router.push(${path}?id=${id})/home/health/index?id=264catch-all path: '*' 在 auth.js 末尾注册;接口代理路径(/api、/healthApi 等)不应进入 404 页面组件。
.vue 结构 template / script / style lang="scss"src/api/*.js;双引号、保留分号html[data-theme="..."]src/views/admin/cockpitManage/cockpit-dashboard.scss(勿改 scoped)src/views/health/components/health/health-dashboard.scsssrc/assets/js/constants/echarts-config/ 与已有 mixin.env*、token、数据库密码、MinIO 凭据- [ ] 是否复用已有组件/工具/API?
- [ ] 新接口是否放对 request 实例与代理前缀?
- [ ] 是否保持 Options API 与局部最小 diff?
- [ ] 错误处理是否只提示、不跳转 404 页?
- [ ] vue.config 代理改动是否提醒重启 serve?
- [ ] 是否检查相关文件 lint?
docs/API_DESIGN_REPORT_energy-manage-analyse.md