# 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 + 微信小程序 的全栈企业级开发框架
[](https://dotnet.microsoft.com/)
[](https://vuejs.org/)
[](https://vitejs.dev/)
[](https://antdv.com/)
[](https://www.donet5.com/Home/Doc)
[](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