# devvv_admin **Repository Path**: devvv33/devvv_admin ## Basic Information - **Project Name**: devvv_admin - **Description**: 这是一个把后台系统功能沉淀成可配置能力的前端项目:通过配置菜单/页面/按钮/弹窗/字段,即可快速拼装出可用的后台界面,能够帮你减少90%的页面开发工作量。项目是用AI开发而成,可基于此项目继续用AI开发新功能。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2026-01-07 - **Last Updated**: 2026-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## DevvvAdmin(Vue 3)— 可快速配置的后台管理系统 这是一个把后台系统功能沉淀成**可配置**能力的前端项目:通过配置菜单/页面/按钮/弹窗/字段,即可快速拼装出可用的后台界面,能够帮你减少90%的页面开发工作量。项目是用AI开发而成,可基于此项目继续用AI开发新功能。 - **在线演示**:[`https://devvv33.github.io/devvv_admin/`](https://devvv33.github.io/devvv_admin/)(使用 Mock 数据) --- ## 后端项目开源地址 - **GitHub**:[`https://github.com/devvv33/devvv_admin_java`](https://github.com/devvv33/devvv_admin_java) - **Gitee**:[`https://gitee.com/devvv33/devvv_admin_java`](https://gitee.com/devvv33/devvv_admin_java) --- ### 核心功能 - **配置即功能**:列表页、查询条件、列字段、弹窗表单字段、弹窗列表字段、按钮行为,都可以通过配置生成 - **简单页面无需重打包**:只要后端提供接口,前端通过配置即可渲染出可用页面(内置渲染/交互逻辑) - **复杂页面可自定义**:自行开发 Vue 组件,在菜单配置中填写组件名即可接入(该方式需要重新构建发布) - **接口加密**:请求参数完全加密传输(RSA + AES),与后端保持同一加解密协议 - **增强图标系统**:Element Plus + Iconify 在线搜索(可扩展自定义图标) --- ### 技术栈 - Vue 3 + TypeScript + Vite - Element Plus - Pinia + Vue Router - Axios --- ## 快速开始 ### 安装 & 运行 ```bash npm install npm run dev ``` ### 构建 ```bash npm run build ``` --- ## 环境变量(重要) 项目会读取以下环境变量(可在 `.env.development` / `.env.production` 配置): - **VITE_USE_MOCK**:是否启用 Mock(演示用) - **VITE_USE_ENCRYPT**:是否启用加密(生产环境建议 `true`) - **VITE_APP_VERSION**:客户端版本号(会进入客户端信息 `x-inf`) - **VITE_RSA_PUBLIC_KEY**:RSA 公钥(后端提供,用于加密 AES key) - **VITE_BASE_URL**:基础访问路径(生产环境建议 `/`) 示例: ```env VITE_USE_MOCK=false VITE_USE_ENCRYPT=true VITE_APP_VERSION=1.0.0 VITE_RSA_PUBLIC_KEY=xxx ``` --- ## 核心理念:一套“菜单配置”,生成整个后台 项目把后台资源抽象成四类:**模块 / 目录 / 页面 / 按钮**。其中页面与按钮再细分行为类型,从而实现“配置驱动渲染”。 ### 1) 菜单类型 - **模块(MODULE)**:顶部菜单(大分类) - **目录(DIRECTORY)**:左侧菜单的聚合分类(可选层级) - **页面(PAGE)**:左侧菜单,具备路由与页面类型 - **列表页面(LIST)**:通用列表(查询/列字段/分页/树形等都可配置) - **自定义页面(CUSTOM)**:自己写 Vue 页面组件,通过配置接入 - **外部页面(OUTER_LINK)**:菜单直接打开外链(可用于外部文档/系统入口) - **按钮(BUTTON)**:挂载在页面内的操作入口(可出现在列表行、或列表底部) ### 2) 按钮位置 - **行级按钮(ROW)**:出现在表格每一行 - **底部按钮(FOOTER)**:出现在列表底部工具栏/按钮区 ### 3) 按钮操作类型 - **弹窗表单(MODAL_FORM)**:配置表单字段,收集数据并提交到接口 - **弹窗列表(MODAL_LIST)**:弹出一个“迷你列表页”,可配置查询接口与列字段 - **确认框(CONFIRM)**:删除/危险操作二次确认,通过后才请求后端 - **导出(EXPORT)**:保持 POST 请求导出,并携带当前查询参数 - **文件下载(DOWNLOAD)**:类似 `` 的 GET 下载 - **打开新页面(PAGE)**:类似 `` 打开新页/外链 > 具体枚举可参考:`src/types/menu.ts` --- ## 自定义页面开发(复杂页面接入) 当你需要复杂交互/图表/多 Tab 等自定义页面: 1. 在 `src/views/custom/` 下新增你的页面组件(例如 `UserAnalytics.vue`) 2. 在菜单管理中新增一个 **页面(PAGE)**,选择 **自定义页面(CUSTOM)** 3. 将 **自定义组件** 配置为你的组件名(要求与 `src/views/custom/` 下匹配) 4. 重新构建发布(因为自定义组件需要打包进产物) --- ## 接口请求与加密说明(RSA + AES) 项目在 `src/api/request.ts` 中实现了与后端一致的加密通信: - **x-inf**:客户端信息(开发环境明文;生产环境 AES 加密) - **x-arg**:RSA 加密后的 AES key(并带有前缀标识) - **请求体**:JSON 请求在生产环境会被 AES 加密(`multipart/form-data` 上传不加密) - **响应体**:在生产环境按需解密后再交给业务层 详细文档见:`docs/API_REQUEST.md` --- ## 代理与部署 - 开发环境:Vite 代理 `/cmsApi/*` 到后端(避免 CORS) - 生产环境:建议用 Nginx 将 `/cmsApi/*` 转发到后端服务 详见:`docs/PROXY_CONFIG.md` --- ## 项目目录结构(重点文件) ``` web_vue/ ├── docs/ # 项目文档 ├── src/ │ ├── api/ # 接口封装(含加密与 Mock) │ ├── api/mock/ # Mock 系统 │ ├── components/ # 通用渲染组件(列表/弹窗/动态表单等) │ ├── layouts/ # 布局(左侧菜单 + 顶部模块) │ ├── router/ # 路由 │ ├── stores/ # Pinia 状态 │ ├── types/ # 核心类型(菜单/字段/按钮枚举) │ ├── utils/ # 工具(加密/客户端信息/路由工具等) │ └── views/ │ ├── template/ # 通用模板页面(ListPage/CustomPage) │ └── custom/ # 业务自定义页面入口(菜单配置引用这里的组件) └── vite.config.ts # Vite 配置(含代理) ``` --- ## 项目截图 ![菜单配置](docs/screenshots/menu-manager.png) ![列表页面](docs/screenshots/list-page.png) --- ## 贡献 & 二次开发(与 AI 共建) 欢迎提交 Issue / PR: - 配置模型增强(字段组件、校验规则、联动等) - 通用页面模板增强(更多列表/表单能力) - 内置示例与截图完善