# pax **Repository Path**: zchty/pax ## Basic Information - **Project Name**: pax - **Description**: Pax 是一套面向企业级应用的全栈开发解决方案,项目采用经典的分层架构设计,提供了从用户认证、权限管理、组织架构到数据可视化的完整解决方案,适用于企业级管理系统的快速开发,包含前后端以及微信小程序子项目。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: https://pax.net.cn - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-19 - **Last Updated**: 2026-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Pax

Pax

一套基于 .NET 10 + Vue 3.5 + 微信小程序 的全栈企业级开发框架

[![.NET](https://img.shields.io/badge/.NET-10.0-purple.svg)](https://dotnet.microsoft.com/) [![Vue](https://img.shields.io/badge/Vue-3.5.13-green.svg)](https://vuejs.org/) [![Vite](https://img.shields.io/badge/Vite-7.0.6-646CFF.svg)](https://vitejs.dev/) [![Ant Design Vue](https://img.shields.io/badge/Ant%20Design%20Vue-4.2.6-red.svg)](https://antdv.com/) [![SqlSugar](https://img.shields.io/badge/ORM-SqlSugar-orange.svg)](https://www.donet5.com/Home/Doc) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [在线演示](https://admin.pax.net.cn/) · [快速开始](#快速开始) · [项目结构](#项目结构) · [核心功能](#核心功能)
--- ## 项目简介 Pax 是一套面向企业级应用的全栈开发解决方案,包含前后端以及微信小程序子项目: - **[Pax Admin](pax-admin/)** - 基于 Vue 3.5 + Vite + Ant Design Vue 4 的现代化前端管理系统 - **[PaxCore](pax-core/)** - 基于 .NET 10 + SqlSugar + PostgreSQL 的企业级 WebAPI 开发框架 - **[Pax Mini Program](pax-miniprogram/)** - 基于微信原生的小程序端,集成 TDesign 小程序组件,提供登录、首页与个人中心能力 项目采用经典的分层架构设计,提供了从用户认证、权限管理、组织架构到数据可视化的完整解决方案,适用于企业级管理系统的快速开发。 ### 技术亮点 - 🚀 **最新技术栈** - Vue 3.5、.NET 10、Vite 7 等前沿技术 - 🔐 **完善的权限系统** - RBAC 权限模型,支持按钮级细粒度控制 - 📦 **丰富的组件库** - 封装了 FormTable、IconPicker 等通用业务组件 - 📊 **数据可视化** - 集成 ECharts 图表库,支持丰富的数据展示 - 🛠️ **CLI 脚手架** - 前后端均提供项目快速生成工具 - 🐳 **容器化支持** - 提供 Docker 部署方案 - 📱 **微信小程序** - 原生小程序 + TDesign,快速覆盖移动端场景 --- ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 客户端层 (Pax Admin + Pax Mini Program) │ │ ┌────────────────────────────┐ ┌───────────────────────┐ │ │ │ Pax Admin │ │ Pax Mini Program │ │ │ │ Vue 3.5 + Vite + Ant Design│ │ 微信原生 + TDesign │ │ │ │ 页面视图 / 通用组件 / 状态 │ │ pages / utils / 组件 │ │ │ └────────────────────────────┘ └───────────────────────┘ │ └──────────────────────────┬──────────────────────────────────┘ │ HTTP/HTTPS ┌──────────────────────────▼──────────────────────────────────┐ │ 后端层 (PaxCore) │ │ .NET 10 + SqlSugar + PostgreSQL │ │ │ │ ┌────────────────────────────────────────────────────────┐ │ │ │ PaxCore.Api │ │ │ │ ┌────────────┐ ┌────────────┐ ┌────────────────────┐ │ │ │ │ │ 授权过滤器 │ │ Action过滤器│ │ 异常过滤器 │ │ │ │ │ └────────────┘ └────────────┘ └────────────────────┘ │ │ │ └────────────────────────┬───────────────────────────────┘ │ │ │ │ │ ┌────────────────────────▼───────────────────────────────┐ │ │ │ PaxCore.Service │ │ │ │ (业务逻辑层) │ │ │ └────────────────────────┬───────────────────────────────┘ │ │ │ │ │ ┌──────────────┐ ┌──────▼───────┐ ┌──────────────┐ │ │ │ PostgreSQL │ │ MongoDB │ │ Redis │ │ │ │ (主数据库) │ │ (日志/审计) │ │ (缓存) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 项目结构 ``` pax/ ├── pax-admin/ # 前端项目 (Vue 3.5 + Vite) │ ├── src/ │ │ ├── api/ # API 接口层 (Alova) │ │ ├── components/ # 公共组件 │ │ ├── views/ # 页面视图 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── router/ # 路由配置 │ │ └── utils/ # 工具函数 │ ├── bin/ # CLI 脚手架工具 │ └── package.json │ ├── pax-core/ # 后端项目 (.NET 10) │ ├── PaxCore.Api/ # API 接口层 │ ├── PaxCore.Service/ # 业务逻辑层 │ ├── PaxCore.Models/ # 实体模型层 │ ├── PaxCore.Core/ # 核心基础层 │ └── Dockerfile │ ├── pax-miniprogram/ # 微信小程序项目(原生) │ ├── pages/ # 首页、登录、个人中心等页面 │ ├── components/ # 自定义组件(navbar 等) │ ├── utils/ # 请求封装、用户信息工具 │ └── miniprogram_npm/ # TDesign 组件库依赖 │ └── README.md ``` --- ## 核心功能 ### 认证与权限 - **JWT 认证** - 支持 Token 生成、验证、刷新 - **RBAC 权限模型** - 用户 → 角色 → 菜单,支持按钮级细粒度权限控制 - **动态路由** - 后端配置路由,前端动态生成 - **路由守卫** - 全局路由守卫实现访问控制 ### 系统管理 - **用户管理** - 账号增删改查、密码重置 - **角色管理** - 角色配置、权限分配 - **菜单管理** - 动态菜单树、按钮权限配置 - **字典管理** - 系统字典及字典项维护 - **区域管理** - 行政区域数据管理 ### 组织架构 - **部门管理** - 树形部门结构 - **员工管理** - 员工信息维护 - **岗位管理** - 岗位配置 ### 数据导入导出 - 基于 EPPlus 的 Excel 导入导出 - 支持多工作表导出、自动列宽、表头样式 - 支持特性映射的强类型导入 ### 日志与审计 - **操作日志** - 自动记录接口调用(写入 MongoDB) - **异常日志** - 全局异常捕获并持久化 - **登录日志** - 登录行为记录 - **Serilog 文件日志** - 按级别分文件、按日期归档 ### 定时任务 - 基于 Quartz.NET 的任务调度 - 支持 Cron 表达式、任务暂停/恢复/立即执行 - 支持类反射动态加载任务 ### 数据可视化 - 集成 ECharts 图表库 - 提供数据统计和分析视图 - 服务状态实时监控 --- ## 快速开始 ### 环境要求 | 依赖项 | 版本要求 | |-------|---------| | Node.js | >= 16.0.0 | | .NET SDK | 10.0+ | | PostgreSQL | 12+ | | Redis | 6+ | | MongoDB | 4.4+(可选,用于日志存储) | | 微信开发者工具 | >= 1.06(可选,用于小程序开发) | ### 1. 克隆项目 ```bash git clone https://gitee.com/zchty/pax.git cd pax ``` ### 2. 启动后端服务 ```bash cd pax-core/PaxCore # 还原依赖 dotnet restore # 启动 API 服务 dotnet run --project PaxCore.Api ``` ### 3. 启动前端项目 ```bash cd pax-admin # 安装依赖 npm install # 启动开发服务器(默认端口 8080) npm run dev ``` ### 3.5 启动小程序(可选) 通过 npx 一键创建新项目(推荐): ```bash # 基础用法(项目名即小程序标题) npx pax-miniprogram my-app # 自定义标题 npx pax-miniprogram my-app --title "我的管理系统" ``` 创建完成后: ```bash cd my-app npm install # 安装 tdesign-miniprogram 依赖 # 在微信开发者工具中构建 npm,修改 app.js 的 baseUrl 与 project.config.json 的 appid ``` 也可手动从源码导入: 1. 使用**微信开发者工具**导入 `pax-miniprogram` 目录。 2. 若使用 npm,请在项目根目录执行 `npm install` 以安装 `tdesign-miniprogram` 依赖。 3. 修改 `app.js` 中的 `baseUrl`,使其指向后端地址(默认 `http://localhost:5251/api/`)。 4. 在开发者工具中预览或真机调试即可。 ### 4. 访问系统 打开浏览器访问 http://localhost:8080 --- ## 子项目详情 ### Pax Admin (前端) 基于 Vue 3.5 + Vite + Ant Design Vue 4 构建的现代化前端管理系统。 **技术栈:** - Vue 3.5.13 + Composition API - Vite 7.0.6 - Ant Design Vue 4.2.6 - Vue Router 4 + Pinia 2 - Alova 3.2.6 (HTTP 请求) - ECharts 6.0.0 (数据可视化) **快速开始:** ```bash cd pax-admin npm install npm run dev ``` 更多详情请参考 [pax-admin/README.md](pax-admin/README.md) ### Pax Mini Program (小程序) 基于微信原生框架的小程序端,使用 TDesign 小程序组件库,覆盖登录、首页和个人中心场景。 **技术栈:** - 微信原生框架 + 自定义 TabBar - TDesign Miniprogram 1.15.x - wx.request 封装(含 Token 刷新) **快速开始:** ```bash # 通过 npx 创建项目(推荐) npx pax-miniprogram my-app --title "我的管理系统" # 也可手动导入源码 ``` 更多详情请参考 [pax-miniprogram/README.md](pax-miniprogram/README.md) ### PaxCore (后端) 基于 .NET 10 + SqlSugar + PostgreSQL 的企业级 WebAPI 开发框架。 **技术栈:** - .NET 10 - SqlSugar (ORM) - PostgreSQL (主数据库) - MongoDB (日志存储) - Redis (缓存) - JWT (身份认证) - Quartz.NET (定时任务) - Serilog (日志框架) **快速开始:** ```bash cd pax-core/PaxCore dotnet restore dotnet run --project PaxCore.Api ``` 更多详情请参考 [pax-core/README.md](pax-core/README.md) --- ## 小程序脚手架使用方法 `pax-miniprogram` 是一个开箱即用的原生小程序脚手架,内置请求封装、Token 自动刷新、沉浸式导航栏、自定义 TabBar 以及 TDesign 组件库集成。以下说明如何基于该脚手架进行二次开发。 ### 一、初始化与基础配置 脚手架的全局状态与后端地址集中在 `app.js` 的 `globalData` 中,新建项目时通常只需修改 `baseUrl`: ```js // app.js App({ globalData: { baseUrl: 'http://localhost:5251/api/', // 改为你的后端地址 userInfo: null, token: null, isLoggedIn: false } }) ``` > 真机调试时 `localhost` 无法访问,请替换为后端所在机器的局域网 IP 或公网域名;若后端开启 HTTPS,请使用 `https://`。 所有页面路径在 `app.json` 的 `pages` 数组中注册,`usingComponents` 中已声明全局可用的 TDesign 组件与自定义导航栏,新页面无需重复声明即可直接使用。 ### 二、基于脚手架创建新页面 1. 在 `pages/` 下新建目录(如 `pages/order/order`),并创建四个文件: - `order.js`(页面逻辑) - `order.json`(页面配置,可留空 `{}`) - `order.wxml`(页面结构) - `order.wxss`(页面样式) 2. 在 `app.json` 的 `pages` 数组中添加路径 `"pages/order/order"`。 3. 如该页面需加入底部 TabBar,在 `custom-tab-bar/index.js` 的 `list` 中追加一项,并同步 `app.json` 的 `tabBar.list`。 ```js // pages/order/order.js Page({ data: { list: [] }, onLoad() { // 使用封装的请求获取数据 } }) ``` ### 三、使用请求封装(utils/request.js) 请求封装已内置 **Token 自动携带**、**401 自动刷新**、**全局 loading Toast** 与统一错误提示,推荐所有接口请求都通过它发起。 ```js const request = require('../../utils/request.js') // GET request.get({ url: 'userInfo/userIsAny', data: { code: 'xxx' } }) .then(res => { /* res.data 即业务数据 */ }) .catch(err => { /* 已自动弹窗提示 */ }) // POST / PUT / DELETE request.post({ url: 'order/create', data: { ... } }) request.put({ url: 'order/update', data: { ... } }) request.del({ url: 'order/delete', data: { id: 1 } }) ``` 常用配置项: | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `url` | String | `''` | 相对路径,会自动拼接 `baseUrl` | | `data` | Object | `{}` | 请求参数 | | `method` | String | `'GET'` | 由 get/post/put/del 自动设置 | | `load` | Boolean | `true` | 是否显示加载 Toast | | `loadmsg` | String | `'加载中...'` | 加载提示文案 | > 后端约定返回 `{ code, data, msg }` 结构;`code === 200` 时 `resolve(data)`,`401` 时自动用 `wx.login` 刷新 Token 后重试原请求,刷新失败则跳转登录页。 ### 四、使用沉浸式导航栏(navbar + scroll-fade 行为) 脚手架提供了滚动渐隐导航栏能力,只需两步即可接入: **1. 页面 JS 引入 behavior:** ```js // pages/order/order.js const scrollFade = require('../../behaviors/scroll-fade-navbar') Page({ behaviors: [scrollFade], // 自动注入 onPageScroll,计算导航栏透明度 data: {} }) ``` **2. 页面 WXML 中使用自定义导航栏:** ```xml ``` `navbarBgOpacity` 由 behavior 自动注入,无需在页面 `data` 中声明。导航栏随页面滚动从透明渐变到不透明,默认过渡区间 60px。 ### 五、使用自定义 TabBar 底部 TabBar 位于 `custom-tab-bar/`,使用自定义模式(`app.json` 中 `"tabBar.custom": true`)。在需要使用 TabBar 的页面中调用 `init()` 即可高亮当前项: ```js // pages/home/home.js Page({ onShow() { this.getTabBar().init() // 高亮当前 Tab } }) ``` 修改 Tab 项只需编辑 `custom-tab-bar/index.js` 中的 `list`(含 `icon`、`text`、`url`)。 ### 六、使用 TDesign 组件库 脚手架已通过 npm 集成 `tdesign-miniprogram@^1.15.2`,并在 `app.json` 的 `usingComponents` 全局注册了 `t-button`、`t-dialog`、`t-toast`、`t-popup` 等常用组件,页面中直接书写标签即可: ```xml 提交 ``` 当升级组件库版本或新增组件时: ```bash cd pax-miniprogram npm install tdesign-miniprogram@latest # 在微信开发者工具中:工具 → 构建 npm,重新生成 miniprogram_npm ``` ### 七、用户信息工具(utils/userInfoAny.js) 封装了「静默登录 + 用户信息拉取」逻辑,适用于页面初始化时判断登录态: ```js const userInfoAny = require('../../utils/userInfoAny.js') userInfoAny.getUserInfoAny( (res) => { /* 已登录,res 含用户信息 */ }, (err) => { /* 未登录/手机未绑定,err 为原因 */ } ) ``` 它会通过 `wx.login` 获取 `code` 调用 `userInfo/userIsAny`,成功后写入 `app.globalData` 与本地缓存 `userInfo`。 ### 八、目录结构参考 ``` pax-miniprogram/ ├── pages/ # 页面(home / profile / login / index 等) ├── components/navbar/ # 自定义导航栏组件 ├── behaviors/ # 公共 behavior(scroll-fade-navbar 滚动渐隐) ├── custom-tab-bar/ # 自定义底部 TabBar ├── utils/ │ ├── request.js # 请求封装(Token / 刷新 / loading) │ ├── userInfoAny.js # 静默登录与用户信息 │ └── util.js # 通用工具(时间格式化等) ├── assets/ # 静态资源与全局样式 ├── app.js # 入口(globalData.baseUrl / token / userInfo) ├── app.json # 路由、TabBar、全局组件声明 └── project.config.json # 项目配置(已含 appid) ``` 更多详情请参考 [pax-miniprogram/README.md](pax-miniprogram/README.md) --- ## 部署说明 ### Docker 部署 后端提供多阶段构建 Dockerfile: ```bash cd pax-core/PaxCore # 构建镜像 docker build -t paxcore-api -f PaxCore.Api/Dockerfile . # 运行容器 docker run -d -p 8080:8080 --name paxcore paxcore-api ``` 前端构建为静态文件后部署到 Nginx: ```bash cd pax-admin # 构建生产版本 npm run build # 构建输出位于 dist/ 目录 ``` 小程序需通过微信公众平台发布:在微信开发者工具中上传 `pax-miniprogram` 代码,提交审核后上线。 ### 环境配置 后端配置位于 `pax-core/PaxCore/PaxCore.Api/appsettings.json`: ```jsonc { // 数据库连接 "ConnectionConfigs": [ { "ConnectionString": "server=ip;uid=用户名;database=数据库名称;pwd=密码", "DbType": "PostgreSQL", "IsAutoCloseConnection": true } ], // Redis "Redis": { "Configuration": "localhost:6379" }, // JWT 配置 "JwtSettings": { "EnableAuthorization": true, "Key": "your-32-char-secret-key", "ExpiredTime": 1200 } } ``` 前端配置位于 `pax-admin/.env.development`: ```env VITE_BASE_API=http://localhost:5000/api ``` --- ## 贡献指南 欢迎所有形式的贡献: 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/your-feature`) 3. 提交更改 (`git commit -m 'feat: Add your-feature'`) 4. 推送分支 (`git push origin feature/your-feature`) 5. 提交 Pull Request 如有问题或建议,请提交 Issue。 --- ## 许可证 本项目基于 [MIT License](LICENSE) 开源。 Copyright (c) 2026 zchty