# xn-admin-react-ts
**Repository Path**: jenning/xn-admin-react-ts
## Basic Information
- **Project Name**: xn-admin-react-ts
- **Description**: xn-admin-react-ts 是「心念后台」的 React 管理端,基于 React 19、TypeScript 与 Ant Design,由基准前端 xn-admin-vue3-ts 移植而来,对接同一套微服务后端 xn-admin-cloud。业务能力与 Vue 端对齐(登录鉴权、动态菜单、RBAC、CRUD、主题布局、监控与文件任务等),视觉使用 Ant Design 原生风格。采用
- **Primary Language**: TypeScript
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 0
- **Created**: 2026-08-06
- **Last Updated**: 2026-09-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: React, React19, TypeScript, Ant-Design, vite
## README
# xn-admin-react-ts
[简体中文](README.md) | [English](README.en.md)
心念后台管理系统前端:React 19 + TypeScript + Vite + Ant Design。
xn-admin-react-ts 是「心念后台」的 React 管理端,基于 React 19、TypeScript 与 Ant Design,由基准前端 xn-admin-vue3-ts 移植而来,对接同一套微服务后端 xn-admin-cloud。业务能力与 Vue 端对齐(登录鉴权、动态菜单、RBAC、CRUD、主题布局、智能对话、监控与文件任务等),视觉使用 Ant Design 原生风格。采用 Apache License 2.0 开源,**可商用、可自用**。
[](./LICENSE)
[](./LICENSE)
[](./LICENSE)
[](./LICENSE)
本仓库**独立开源**(Apache-2.0,**可商用、可自用**)。对接微服务后端独立仓库 **xn-admin-cloud**(经网关 `8088`),提供 JWT 登录、RBAC、动态路由/菜单、page-ui 驱动 CRUD、主题、通知与系统监控等能力。
本工程是基准前端 **xn-admin-vue3-ts** 的 React 技术栈移植。同步进度见 [`SYNC.md`](./SYNC.md)。
**视觉刻意与 Element Plus 端区分**:使用 Ant Design 原生主色(`#1677ff`)、浅色侧栏与白顶栏(主题可切换),不做「壳层仿 Element」。业务能力以基准为准。
版本:`1.1.0` · 许可证:[Apache-2.0](./LICENSE) · **可商用 / 可自用** · Copyright 2026 心念
**在线演示:** https://react.xinniankeji.vip · 官网:https://xinniankeji.vip
## 相关仓库
开源范围仅后端 + 四套管理端:
| 仓库 | 在线 | Gitee | GitHub | 说明 |
| ------------------- | --------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------- | --------------------------------- |
| `xn-admin-cloud` | [官网](https://xinniankeji.vip) | [Gitee](https://gitee.com/jenning/xn-admin-cloud) | [GitHub](https://github.com/xinnian0310/xn-admin-cloud) | 微服务后端(必需) |
| `xn-admin-vue3-ts` | [演示](https://vue3-ts.xinniankeji.vip) | [Gitee](https://gitee.com/jenning/xn-admin-vue3-ts) | [GitHub](https://github.com/xinnian0310/xn-admin-vue3-ts) | 功能基准(Vue 3 + TypeScript) |
| `xn-admin-vue3-js` | [演示](https://vue3-js.xinniankeji.vip) | [Gitee](https://gitee.com/jenning/xn-admin-vue3-js) | [GitHub](https://github.com/xinnian0310/xn-admin-vue3-js) | Vue 3 + JavaScript(Composition) |
| `xn-admin-vue2-js` | [演示](https://vue2.xinniankeji.vip) | [Gitee](https://gitee.com/jenning/xn-admin-vue2-js) | [GitHub](https://github.com/xinnian0310/xn-admin-vue2-js) | Vue 3 + JavaScript(Options API) |
| `xn-admin-react-ts` | [演示](https://react.xinniankeji.vip) | [Gitee](https://gitee.com/jenning/xn-admin-react-ts) | [GitHub](https://github.com/xinnian0310/xn-admin-react-ts) | 本仓库 |
## 前提
1. Node.js 20+(建议 20 LTS)
2. 后端 **xn-admin-cloud** 已启动,网关可访问:http://127.0.0.1:8088
(按其仓库 README 三步启动:`docker compose up -d` → `scripts/run-dev`)
3. 中间件可由后端仓库 Docker Compose 拉起(也可本机自备 MySQL / Redis / Nacos / MinIO)
## 默认账号
与后端种子账号一致(首次初始化,**仅用于本地开发**):
| 用户名 | 初始密码 | 说明 |
| ------------ | --------- | ---------- |
| `SuperAdmin` | `xinnian` | 超级管理员 |
| `admin` | `admin` | 管理员 |
登录后请尽快修改密码。详见 [SECURITY.md](./SECURITY.md)。
## 快速启动
```bash
npm install # 安装依赖
npm run dev # 启动开发服务
```
开发地址:http://localhost:1800(与 vue2-js `1801` / vue3-js `1802` / vue3-ts `1803` 错开,便于同时联调)
Vite 已代理到网关:
| 前缀 | 目标 |
| -------------- | ------------------------------------ |
| `/api` | `http://localhost:8088` |
| `/uploads` | `http://localhost:8088` |
| `/ws` | `http://localhost:8088`(WebSocket) |
| `/swagger-ui` | `http://localhost:8088` |
| `/v3/api-docs` | `http://localhost:8088` |
```bash
npm run build # tsc -b + vite 生产构建
npm run preview # 本地预览构建产物
npm run typecheck # TypeScript:仅做类型检查
npm run lint # oxlint:代码检查
npm run lint:fix # oxlint:自动修复可修复项
npm run format # Prettier:格式化代码
npm run format:check # Prettier:仅检查格式,不改文件
```
生产静态资源需由 Nginx 等反向代理到同一网关(`/api`、`/uploads`、`/ws`),或自行调整构建时的代理/网关地址。
## 质量检查
```bash
npm run typecheck # TypeScript 类型检查
npm run lint # oxlint
npm run format:check # Prettier 格式检查
npm run ci # 全量检查:typecheck + lint + format:check + build
```
提交前会经 Husky 跑 lint-staged(oxlint 修复 + Prettier 格式化);提交信息需符合 [Conventional Commits](https://www.conventionalcommits.org/)(如 `feat: xxx`)。约定详见 [CONTRIBUTING.md](CONTRIBUTING.md)。
在 Cursor / VS Code 中打开本仓库并安装推荐扩展后:**保存文件会自动 Prettier 格式化,并执行 oxlint 可自动修复项**(见 `.vscode/settings.json`)。
## 技术栈
| 类别 | 技术 |
| ------------- | ------------------------------------------------ |
| 框架 | React 19、TypeScript 6、Vite 8 |
| UI | Ant Design 6、@ant-design/icons、Iconify |
| 状态 / 路由 | Zustand 5、React Router 7 |
| 请求 | Axios |
| 图表 / 编辑器 | ECharts、wangEditor |
| Excel | ExcelJS、xlsx |
| 工程化 | oxlint、Prettier、Husky、lint-staged、commitlint |
## 与基准差异
| 项 | 基准 Vue(xn-admin-vue3-ts) | 本工程 React |
| --------------- | ---------------------------- | --------------------------------------------- |
| UI | Element Plus | **Ant Design 原生视觉** |
| 默认主色 / 侧栏 | `#409eff` 同色顶栏侧栏 | `#1677ff` + 浅色侧栏 + 白顶栏(可切换) |
| 菜单图标字段 | `icon`(Element) | 优先 `iconAntd`,回退 `icon` |
| 状态 | Pinia | Zustand |
| 路由 | vue-router `addRoute` | 动态 `RouteObject` 挂载 |
| 视图目录 | `src/views` | `src/pages` |
| 权限 | `v-permission` | `` / `usePermission` |
| `APP_CLIENT_ID` | `xn-admin-vue3-ts` | `xn-admin-react-ts`(`src/config/client.ts`) |
| 开发端口 | `1803` | `1800` |
## 目录结构
```
src/
├── api/ # 接口模块(auth、user、role、route、notice、logs…)
├── components/ # 通用组件(Xn* / Auth / ThemePicker…)
├── config/ # 应用 / 客户端 / 主题等配置
├── hooks/ # usePageUi、usePermission 等
├── layouts/ # AdminLayout 及 Side / Top / Mix / Columns
├── pages/ # 业务页面(由 view-loader 懒加载)
├── router/ # 静态路由 + 动态注册与守卫
├── stores/ # Zustand:user、permission、menu、tagsView、theme、notice
├── styles/ # 全局样式
├── types/ # 类型定义
└── utils/ # request、icons、excel、download、view-loader…
```
## 通用组件
每个组件目录下有独立文档,入口见 [`src/components/README.md`](./src/components/README.md)。
典型列表页组合:
```
XnPageLayout
├── aside → XnTreePanel(可选)
├── search → XnSearch
├── toolbar → XnButton + XnExport
└── table → XnTable
```
`XnDialog` 是业务弹窗(默认取消 / 确定);`XnModal` 是底层 Ant Design Modal 封装(拖拽、限高)。业务页优先用 `XnDialog`。配置通常来自后端 page-ui 与 `` / `usePermission`。
| 组件 | 说明 | 文档 |
| ----------------- | -------------------------------------- | ------------------------------------------------------ |
| XnAppIcon | 统一图标(Ant Design / Iconify / SVG) | [README](./src/components/XnAppIcon/README.md) |
| XnAppBrandLogo | 品牌 Logo | [README](./src/components/XnAppBrandLogo/README.md) |
| XnAuth | 按钮级权限(对应 Vue `v-permission`) | [README](./src/components/XnAuth/README.md) |
| XnAvatarCrop | 头像裁剪上传 | [README](./src/components/XnAvatarCrop/README.md) |
| XnButton | 工具栏 / 行操作按钮 | [README](./src/components/XnButton/README.md) |
| XnCaptcha | 图形 / 滑块验证码 | [README](./src/components/XnCaptcha/README.md) |
| XnCode | JSON / 代码查看(行号、复制、着色) | [README](./src/components/XnCode/README.md) |
| XnCopy | 一键复制按钮 | [README](./src/components/XnCopy/README.md) |
| XnCron | Quartz Cron 编辑器 | [README](./src/components/XnCron/README.md) |
| XnDesc | 详情描述列表 | [README](./src/components/XnDesc/README.md) |
| XnDialog | 业务弹窗壳(内部用 `XnModal`) | [README](./src/components/XnDialog/README.md) |
| XnDictSelect | 字典下拉 | [README](./src/components/XnDictSelect/README.md) |
| XnEmpty | 无数据 / 无权限等空状态 | [README](./src/components/XnEmpty/README.md) |
| XnErrorPage | 403 / 404 / 503 错误页 | [README](./src/components/XnErrorPage/README.md) |
| XnExport | 导出按钮 | [README](./src/components/XnExport/README.md) |
| XnFilePicker | 从已上传文件中选择 | [README](./src/components/XnFilePicker/README.md) |
| XnIconPicker | 图标选择器 | [README](./src/components/XnIconPicker/README.md) |
| XnImport | Excel 导入对话框 | [README](./src/components/XnImport/README.md) |
| XnImageUpload | 图片上传(单张 / 多张 + 预览) | [README](./src/components/XnImageUpload/README.md) |
| XnLongText | 长文本截断 + 弹窗查看 | [README](./src/components/XnLongText/README.md) |
| XnModal | 可拖拽、限高的 Ant Design Modal | [README](./src/components/XnModal/README.md) |
| XnNoticeInbox | 消息中心抽屉 | [README](./src/components/XnNoticeInbox/README.md) |
| XnOrgSelect | 单位 / 用户 / 角色 / 岗位 | [README](./src/components/XnOrgSelect/README.md) |
| XnPageLayout | 列表页骨架 | [README](./src/components/XnPageLayout/README.md) |
| XnPopconfirm | 行内确认气泡 | [README](./src/components/XnPopconfirm/README.md) |
| XnRegion | 省市区级联 | [README](./src/components/XnRegion/README.md) |
| XnRichEditor | 富文本(wangEditor) | [README](./src/components/XnRichEditor/README.md) |
| XnSearch | 配置化搜索表单 | [README](./src/components/XnSearch/README.md) |
| XnSidebarMenu | 多级菜单 | [README](./src/components/XnSidebarMenu/README.md) |
| XnSmsCode | 短信验证码倒计时 | [README](./src/components/XnSmsCode/README.md) |
| XnTable | 配置化表格 | [README](./src/components/XnTable/README.md) |
| XnTagsView | 页面标签栏 | [README](./src/components/XnTagsView/README.md) |
| XnThemePicker | 主题设置 | [README](./src/components/XnThemePicker/README.md) |
| XnTreePanel | 左侧树面板 | [README](./src/components/XnTreePanel/README.md) |
| XnUiPreferenceFab | 个人界面偏好 FAB | [README](./src/components/XnUiPreferenceFab/README.md) |
| XnUpload | 大文件分片上传 | [README](./src/components/XnUpload/README.md) |
| XnWatermark | 页面水印 | [README](./src/components/XnWatermark/README.md) |
## 界面预览
截图目录 [`docs/images/`](./docs/images/),命名与基准仓库 **xn-admin-vue3-ts** 对齐(如 `login.png`、`users.png`),均为本工程 Ant Design 界面实拍。
### 登录与首页
| 模块 | 截图 |
| ------ | ------------------------------------ |
| 登录页 |  |
| 首页 |  |
### 智能对话
| 模块 | 截图 |
| -------- | ------------------------------------------- |
| 智能对话 |  |
| 厂商目录 |  |
| 我的模型 |  |
| 配额管理 |  |
### 个人中心
| 模块 | 截图 |
| -------- | -------------------------------------------- |
| 个人信息 |  |
| 我的消息 |  |
### 系统监控
| 模块 | 截图 |
| -------- | --------------------------------------------- |
| 在线用户 |  |
| 服务监控 |  |
| 缓存监控 |  |
| SQL 监控 |  |
### 日志管理
| 模块 | 截图 |
| -------- | --------------------------------------------- |
| 登录日志 |  |
| 操作日志 |  |
| 异常日志 |  |
| 任务日志 |  |
### 组织与账号
| 模块 | 截图 |
| -------- | ------------------------------------ |
| 用户管理 |  |
| 单位管理 |  |
| 岗位管理 |  |
### 权限与安全
| 模块 | 截图 |
| -------- | -------------------------------------------------- |
| 角色列表 |  |
| 角色权限 |  |
| 权限内容 |  |
| 路由管理 |  |
| 安全策略 |  |
### 内容运营
| 模块 | 截图 |
| ---------- | --------------------------------------------- |
| 公告管理 |  |
| 站内信 |  |
| 联系与捐赠 |  |
### 基础数据与系统设置
| 模块 | 截图 |
| ---------- | ----------------------------------------------- |
| 字典管理 |  |
| 登录页设置 |  |
| 系统配置 |  |
| 远程连接 |  |
### 系统工具
| 模块 | 截图 |
| -------- | --------------------------------------- |
| 文件管理 |  |
| 定时任务 |  |
| 接口文档 |  |
| 代码生成 |  |
| 回收站 |  |
## 功能概览
- JWT 登录与会话刷新;`` / `usePermission` 按钮级权限
- 动态菜单 / 路由注册(后端路由 + `pages` 懒加载)
- 角色、权限、用户、单位、岗位、字典、公告、站内信、登录页配置、系统配置、安全策略、远程连接、联系与捐赠
- 页面标签栏、多布局模式、主题(含自定义色与背景)
- 通用系统配置 + 登录用户个人布局/字号(右下角悬浮入口)
- 表格列个性化、Excel 导入导出
- 通用组件:验证码、短信码、字典/组织/省市区、图片上传、文件选择、水印、Cron、`XnDialog` / `XnModal` 等(见 [`src/components/README.md`](./src/components/README.md))
- 系统监控:在线用户 / 服务 / Redis / SQL
- 文件管理、定时任务、回收站、代码生成、接口文档页(Swagger UI / API 切换)
- 智能对话:厂商目录、我的模型、流式会话、试用配额
- 公告 WebSocket 推送(`/ws`)
- 日志管理:登录 / 操作 / 异常 / 任务日志(查询、详情、删除、清空、导出)
## 环境与约定
- 路径别名:`@` → `src/`
- `APP_CLIENT_ID = xn-admin-react-ts`(`src/config/client.ts`),公开系统配置按 client 隔离品牌文案
- 鉴权 Token 由 `utils/request` 注入;未登录跳转登录页
- 列表页模式:`XnPageLayout` → `XnSearch` → `XnButton` → `XnTable`(+ 可选 `XnTreePanel`)
- 动态菜单页面对应 `src/pages/**/index.tsx`(由 view-loader 懒加载)
- 详细同步与缺口说明见 [`SYNC.md`](./SYNC.md)
## 生产部署(摘要)
- `npm run build` 产出静态资源,由 Nginx 等托管
- 将 `/api`、`/uploads`、`/ws` 反向代理到后端网关(默认 `127.0.0.1:8088`)
- 安全见 [SECURITY.md](./SECURITY.md);贡献见 [CONTRIBUTING.md](./CONTRIBUTING.md)
## 支持捐赠
如果这个项目对你有帮助,欢迎请作者喝杯咖啡 ☕
## 开源与许可证
本项目采用 [Apache License 2.0](./LICENSE) **免费开源**,**允许个人自用与商业使用**,无需单独购买授权。
| 用途 | 是否允许 |
| ---------------------- | ------------------------- |
| 个人学习、自用部署 | 允许 |
| 二次开发、修改源码 | 允许 |
| 商业项目使用、对外交付 | 允许 |
| 闭源商用 | 允许(须遵守 Apache-2.0) |
| 再分发源码或编译产物 | 允许 |
使用、修改或分发时请:保留版权声明、本许可证文本及 NOTICE(如有);对修改过的文件注明变更。软件按「现状」提供,不附带任何明示或默示担保。完整条款见 [LICENSE](./LICENSE)。
捐赠为自愿支持,不构成商业授权或付费售后。