Files
mes-ui-d2/README.md

271 lines
11 KiB
Markdown
Raw Normal View History

# MES-UI
2019-12-14 22:12:45 +08:00
基于 [D2 Admin](https://github.com/d2-projects/d2-admin)Vue 2 + Element UI的企业级中后台前端项目。
---
## 项目目录结构
```
mes-ui/
├── .github/ # GitHub 相关配置
├── docs/ # 项目文档
├── public/ # 静态资源(不经过 webpack 处理)
├── src/ # PC 端业务源码
│ ├── api/ # 接口请求层
│ ├── assets/ # 静态资源(经 webpack 处理)
│ ├── components/ # 公共组件
│ ├── composables/ # 可复用逻辑函数
│ ├── layout/ # 页面布局
│ ├── libs/ # 工具函数
│ ├── locales/ # 国际化语言包
│ ├── menu/ # 菜单配置
│ ├── plugin/ # Vue 插件
│ ├── router/ # 路由配置
│ ├── store/ # Vuex 状态管理
│ └── views/ # 业务页面
├── src.mobile/ # 移动端业务源码
├── .browserslistrc # 浏览器兼容配置
├── .editorconfig # 编辑器统一配置
├── .env / .env.development / .env.preview # 环境变量
├── .eslintignore / .eslintrc.js # ESLint 配置
├── .gitignore # Git 忽略配置
├── .postcssrc.js # PostCSS 配置
├── babel.config.js # Babel 配置
├── jest.config.js # Jest 单元测试配置
├── jsconfig.json # VS Code 路径别名提示
├── package.json # 项目依赖与脚本
├── pnpm-lock.yaml # pnpm 依赖锁定文件
├── vue.config.js # Vue CLI 构建配置
└── README.md # 项目说明(本文件)
```
---
## 各目录详解
### `.github/`
GitHub 相关配置,包含 Issue 模板和 CI/CD 工作流(`workflows/`)。
### `docs/`
项目文档目录,存放变更日志、修复记录等 Markdown 文档。子目录 `image/` 存放文档引用的图片。
| 文档 | 说明 |
|------|------|
| [表格组件使用说明](./docs/表格组件使用说明.md) | page-table / page-dialog-form 的完整使用手册 |
| [sct-base-table 重构方案](./docs/sct-base-table-refactor-design.md) | 旧 sct-base-table → 新架构的设计文档 |
| [sass-deprecation-fixes.md](./docs/sass-deprecation-fixes.md) | Sass 废弃警告修复记录 |
| [CHANGELOG.md](./docs/CHANGELOG.md) | 项目变更日志 |
### `public/`
**静态资源目录**,文件会原样复制到构建产物中,不经过 webpack 编译。
| 子目录 | 作用 |
|--------|------|
| `lib/UEditor/` | 百度 UEditor 富文本编辑器(第三方库,通过 `<script>` 直接引入) |
| `image/theme/` | 各主题的 Logo 图片和预览图chester / d2 / element / line / star / tomorrow-night-blue / violet |
| `image/loading/` | 页面加载动画的 SVG |
| `html/` | 独立 HTML 页面(如 demo.html |
| `index.html` | SPA 入口 HTML 模板 |
| `icon.ico` | 网站 Favicon |
### `src/` — PC 端源码
#### `src/api/`
**接口请求层**。封装后端 API 调用,按业务模块拆分为独立文件。
- `_service.js` — 基于 axios 的请求服务实例
- `_tools.js` — 请求工具函数
- `demo.js` — 演示接口
- `sys.user.js` — 用户相关接口
#### `src/assets/`
**静态资源**,会被 webpack 处理。
| 子目录 | 作用 |
|--------|------|
| `style/unit/color.scss` | 全局颜色变量定义 |
| `style/public.scss` | 全局 SCSS 变量、mixin、placeholder通过 `additionalData` 自动注入每个组件) |
| `style/public-class.scss` | 全局通用 CSS class间距、浮动、文字对齐等工具类 |
| `style/fixed/` | 第三方库样式覆盖element / markdown / n-progress / vue-splitpane 等) |
| `style/animate/` | 过渡动画样式vue-transition |
| `style/theme/` | 主题切换样式,每个主题独立目录,含 `index.scss` + `setting.scss` |
| `svg-icons/icons/` | SVG 图标文件,通过 `svg-sprite-loader` 生成雪碧图 |
| `svg-icons/index.js` | SVG 图标自动注册脚本 |
#### `src/components/`
**公共组件库**,所有可复用组件集中管理。
| 组件 | 作用 |
|------|------|
| `d2-container` | 页面容器组件,提供卡片、全屏、透明等多种布局变体 |
| `d2-container-frame` | iframe 嵌套外部页面容器 |
| `d2-count-up` | 数字滚动动画组件 |
| `d2-highlight` | 代码高亮展示组件 |
| `d2-icon` / `d2-icon-svg` | 图标组件Font Awesome / SVG |
| `d2-icon-select` / `d2-icon-svg-select` | 图标选择器组件 |
| `d2-link-btn` | 链接式按钮 |
| `d2-markdown` | Markdown 渲染组件 |
| `d2-module-index-banner` | 首页 Banner 展示组件 |
| `d2-module-index-menu` | 首页菜单组件 |
| `d2-quill` | Quill 富文本编辑器封装 |
| `d2-scrollbar` | 自定义滚动条组件 |
| `d2-ueditor` | 百度 UEditor 编辑器封装 |
| `page-table` | **新** CRUD 表格便捷组合体(按钮栏 + 表格 + 分页 + 高度自适应 + 帮助按钮) |
| `page-dialog-form` | **新** 增删改查弹框组件(表单渲染 + 校验 + i18n |
> `page-table` 和 `page-dialog-form` 的详细用法见:[表格组件使用说明](./docs/表格组件使用说明.md)
#### `src/composables/`
**可复用的逻辑函数Composition Utilities**。把散落在各页面中的重复 JS 逻辑抽成纯函数,组件只需调用即可。
| 文件 | 作用 |
|------|------|
| `useTableColumns.js` | 列定义工厂,消除手动分配 `idx` 序号;约定 `prop: '_actions'` 为操作列 |
| `useTableButtons.js` | 按钮定义工厂,一键生成顶部工具栏 + 行内操作按钮,自动注入权限过滤 |
| `useI18n.js` | i18n Mixin 工厂,通过 `i18nMixin(prefix)` 注入 `key()` / `ckey()` 方法,消除每个页面手写 `T` 常量 |
> **为什么放在 `src/` 根目录?**
> composable 不是 UI 组件(不需要 `<template>`),也不属于 `libs/`(通用工具库)。它是介于**组件和逻辑之间**的中间层——被多个组件调用,但本身不渲染 DOM。放在 `src/` 根目录下与 `components/`、`views/` 同级,方便一眼看到项目的公共逻辑层。
#### `src/layout/`
**页面布局**。当前使用 `header-aside` 布局(顶栏 + 侧边栏 + 主内容区)。
| 子目录 | 作用 |
|--------|------|
| `layout.vue` | 布局主文件 |
| `components/menu-side/` | 侧边菜单组件 |
| `components/menu-header/` | 顶部导航菜单组件 |
| `components/header-user/` | 顶栏用户信息下拉 |
| `components/header-theme/` | 主题切换面板 |
| `components/header-color/` | 主题色切换 |
| `components/header-locales/` | 多语言切换 |
| `components/header-fullscreen/` | 全屏切换 |
| `components/header-search/` | 全局搜索 |
| `components/header-log/` | 操作日志 |
| `components/header-size/` | 字号大小切换 |
| `components/tabs/` | 多标签页栏 |
| `components/contextmenu/` | 标签页右键菜单 |
| `components/panel-search/` | 全局搜索面板 |
| `mixins/search.js` | 搜索 mixin |
| `mixins/` | 菜单相关 mixin |
#### `src/libs/`
**工具函数库**。
- `util.js` — 通用工具方法
- `util.cookies.js` — Cookie 操作
- `util.db.js` — 本地存储(基于 lowdb
- `util.log.js` — 日志工具
- `util.import.development.js` / `util.import.production.js` — 开发/生产环境动态加载
#### `src/locales/`
**国际化i18n**。JSON 格式的语言文件,支持:
- `zh-chs` — 简体中文
- `zh-cht` — 繁体中文
- `en` — 英文
- `ja` — 日文
- `mixin.js` — Vue 国际化 mixin
#### `src/menu/`
**菜单配置**。按业务模块拆分,定义侧边栏菜单结构。`modules/` 下按 demo-components、demo-playground、demo-plugins 组织。
#### `src/plugin/`
**Vue 插件**。
- `d2admin/` — D2Admin 核心插件(初始化全局功能)
- `error/` — 全局错误捕获
- `log/` — 通用日志输出
- `open/` — 新窗口打开工具
#### `src/router/`
**路由配置**。`modules/` 下按 components、playground、plugins 拆分路由表。`routes.js` 为汇总路由,`index.js` 创建 Vue Router 实例。
#### `src/store/`
**Vuex 状态管理**。`modules/d2admin/` 下按功能拆分为独立模块:
| 模块 | 作用 |
|------|------|
| `account` | 用户账户信息 |
| `color` | 主题色管理 |
| `db` | 本地数据库状态 |
| `fullscreen` | 全屏状态 |
| `gray` | 灰度模式 |
| `log` | 操作日志 |
| `menu` | 菜单状态(展开/收缩/激活项) |
| `page` | 页面缓存与标签页 |
| `releases` | 版本信息 |
| `search` | 全局搜索 |
| `size` | 字号大小 |
| `theme` | 主题切换 |
| `transition` | 页面过渡动画 |
| `ua` | 用户代理信息 |
| `user` | 用户登录态 |
#### `src/views/`
**页面视图**。
- `demo/` — 各功能展示页面(组件演示 / 插件演示 / 功能试验场)
- `system/` — 系统级页面(首页 / 登录 / 404 / 日志 / 重定向 / 刷新)
- `production-master-data/` — 生产配置模块(工厂区域 / 产线 / 工艺 / 产品 / 物料等)
> 页面按一级模块 → 二级模块 → 三级模块 三层目录组织,与 [后台Webman界面截图对照表](./后台Webman界面截图对照表.md) 中的英文命名一致。
#### `src/` 根文件
| 文件 | 作用 |
|------|------|
| `main.js` | PC 端应用入口 |
| `App.vue` | 根组件 |
| `setting.js` | 全局设置(站点标题等) |
| `i18n.js` | 国际化初始化 |
---
### `src.mobile/` — 移动端源码
基于 Vant UI 的移动端适配版本,与 PC 端共用部分业务逻辑。
| 文件/目录 | 作用 |
|-----------|------|
| `main.js` | 移动端应用入口 |
| `App.vue` | 移动端根组件 |
| `vant.js` | Vant UI 按需引入配置 |
| `router/` | 移动端路由 |
| `store/` | 移动端状态管理 |
| `views/` | 移动端页面 |
---
### 构建配置文件
| 文件 | 作用 |
|------|------|
| `vue.config.js` | Vue CLI 构建配置多页入口、CDN、webpack 插件、主题色替换、SVG sprites、路径别名 |
| `babel.config.js` | Babel 转译配置 |
| `.postcssrc.js` | PostCSS 自动前缀等配置 |
| `.eslintrc.js` | ESLint 代码规范 |
| `jest.config.js` | 单元测试框架配置 |
| `jsconfig.json` | VS Code 路径别名智能提示(`@``src/` |
| `.browserslistrc` | 目标浏览器范围 |
| `.editorconfig` | 编辑器缩进/换行风格统一 |
### 环境变量文件
| 文件 | 作用 |
|------|------|
| `.env` | 所有环境通用变量 |
| `.env.development` | 开发环境变量 |
| `.env.preview` | 预发布环境变量 |
---
## 常用命令
| 命令 | 说明 |
|------|------|
| `pnpm serve` | 启动开发服务器 |
| `pnpm build` | 生产环境构建 |
| `pnpm build:preview` | 预发布环境构建 |
| `pnpm lint` | ESLint 检查并自动修复 |
| `pnpm test:unit` | 运行单元测试 |