# JY1.0 项目 Agent 规则 ## 项目概述 你正在参与「景耀 JY1.0」制造执行系统(MES)的前端开发工作。本项目是江苏高精机械设备有限公司的管理信息系统,基于 Vue 2 + Element UI 构建,后端为 ASP.NET(.ashx 通用处理程序)。 ## 技术栈识别 本项目使用 Vue 2.5.17 + Vuex 3.0.1 + Vue Router 3.0.7 + Element UI 2.13 + Axios 0.18.0 + ECharts 4 + Webpack 4。不使用 TypeScript,不使用 Composition API,不使用 Vue 3 语法。所有代码均为 JavaScript + Vue 2 Options API 风格。 ## API 通信规范 所有业务请求统一 POST 到单一端点 `MESCommonBase.ashx`,URL 字段留空(由 baseURL 统一代理)。通过 `name` 字段(中文命名,格式为`模块_子模块_操作_查询/增加/编辑/删除数据`)路由到后端不同存储过程。通过 `type` 字段区分操作:`'1'` 为查询,`'2'` 为增删改,`'7'` 为批量提交。参数通过 `param` 字段以 `key=value&key2=value2` 字符串拼接传递,非 JSON 对象。每个请求必须携带 `UserID`(从 Cookie 取)和 `ModularID`(当前路由路径)。 ## 数据字段命名 后端返回的数据库字段名为中文,如 `状态`、`订单编号`、`零件名称`、`图号`、`投产日期` 等。前端模板中直接使用中文属性访问,如 `scope.row.状态`、`scope.row.订单号`。新增字段时必须使用中文命名以保持与后端一致。 ## 视图组件结构 每个页面视图遵循统一布局模式:外层 `div.app-container` > `el-card` > 搜索栏 + 数据表格。搜索栏使用 `el-input`、`el-select`、`el-date-picker` 等组件,数据表格使用 `el-table` + `el-table-column`,固定高度(如 `height="750px"`),尺寸为 `size="mini"`,带 `border` 属性。状态列使用 `el-tag` 组件,通过 `:type` 属性区分不同状态颜色。 ## 全局工具方法 项目通过 `Vue.prototype` 挂载了以下全局方法,在组件中通过 `this.xxx` 直接调用:`CreateData(type, name, data, pageSize, pageList)` 构建请求参数、`ExecDatabase(num)` 发送请求、`addForm(form, callback)` 重置并打开新增表单、`editForm(row, form, callback)` 填充行数据到编辑表单、`getSelect(requestData, select, carrier, param)` 获取下拉框数据、`getData(requestData, carrier, param)` 获取普通数据、`getTable(requestData, param, e)` 获取分页表格数据、`addTable(requestData, param, form, callback)` 新增表格行、`editTable(requestData, param, form, callback)` 编辑表格行、`deleteRow(requestData, id, callback)` 删除表格行。新增/编辑操作必须使用这些全局方法,不要自行封装。 ## 状态管理 Vuex 采用 modules 模式,包含 `app`、`user`、`tagsView`、`permission` 四个模块。用户信息(token、name、id、userId)通过 `js-cookie` 持久化,有效期 1 天。权限控制采用静态路由 + 动态路由注入模式,`getRouter.js` 根据后端返回的菜单数据递归构建路由树。登录后通过 `store.dispatch('GetInfo')` 获取用户信息,再通过 `store.dispatch('GenerateRoutes', asyncRouterMap)` 动态添加路由。 ## 路由配置 静态路由定义在 `src/router/index.js` 的 `constantRouterMap` 中,仅包含登录页、404页和首页。动态路由通过 `src/router/getRouter.js` 根据后端返回的菜单数据(含 pid 父子关系)递归构建,组件路径映射到 `src/views` 目录下对应的 `.vue` 文件。路由 meta 中包含 `title`(中文标题)和 `icon`(SVG 图标名称)。 ## API 文件组织 API 文件按业务模块组织在 `src/api/` 目录下,子目录与业务模块一一对应:`BasicData`(基础数据)、`SalesManagement`(销售管理)、`ManufacturingCenter`(制造中心)、`Assembly`(装配管理)、`Inventory`(仓储管理)、`Outsourcing`(外协管理)、`PurchasingCenter`(采购中心)、`TechnologyCenter`(技术中心)、`WorkshopProcurement`(车间采购)、`MarketingCenter`(营销中心)、`ProjectManagement`(项目管理)。每个 API 文件导出多个命名函数,函数名以操作语义命名。 ## 视图目录组织 视图文件按业务模块组织在 `src/views/` 目录下,与 API 目录结构对应。主要模块包括:`BasicData`(基础数据)、`SalesManagement`(销售管理)、`SeikoWorkshop`(精工车间)、`AssemblyManagement`(装配管理)、`DeviceManagement`(设备管理)、`PurchasingManagement`(采购管理)、`WarehouseManagement`(仓储管理)、`TechnologyCenter`(技术中心)、`ManufacturingCenter`(制造中心)。每个页面为独立文件夹 + `index.vue`。 ## 配置管理 环境配置集中在 `static/config.js` 中,通过导出常量供 `src/utils/request.js` 引用。包含主服务地址、立库接口地址、文件上传下载路径、WebSocket 地址等。环境切换通过注释切换 IP 地址实现,不使用 `.env` 文件。修改配置时需同时关注 `request.js` 中的引用。 ## 文件上传下载 文件上传使用多个专用处理器:`uploadFile.ashx`(通用上传)、`MESUploadFile.ashx`(MES 系统上传)、`uploadOP.ashx`(工序上传)、`uploadPerson.ashx`(人员上传)等。文件下载使用 `downloadFile.ashx` 和 `MESDownloadFile.ashx`。Excel 导出使用 `ExcelDownLoad` 配置指向 `MESCommonBase.ashx`,前端通过 `this.exportExcel_NPOI(param)` 触发下载。图片查看使用 `v-viewer` 插件。 ## 样式规范 全局样式位于 `src/styles/` 目录,包含 `element-ui.scss`(Element UI 覆写)、`variables.scss`(SCSS 变量)、`mixin.scss`(混入)、`sidebar.scss`(侧边栏)、`transition.scss`(过渡动画)。组件内样式使用 `