# Cadmin-client-react **Repository Path**: baiy/Cadmin-client-react ## Basic Information - **Project Name**: Cadmin-client-react - **Description**: Cadmin的客户端实现 react+ant.design - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2019-11-29 - **Last Updated**: 2025-04-03 ## Categories & Tags **Categories**: backend **Tags**: None ## README Cadmin的客户端实现 react+ant.design > 项目地址: [[github](https://github.com/baiy/Cadmin-client-react)] [[gitee](https://gitee.com/baiy/Cadmin-client-react)] > > 在线文档地址: ### 依赖 * [react](https://reactjs.org/) * localStorage * [redux](https://redux.js.org/) * [axios](https://github.com/axios/axios) * [ant.design](https://ant.design/) * [lodash](https://lodash.com/) > 整体环境使用[create-react-app](https://create-react-app.dev/)搭建 ### 安装 ```shell // 安装 npm install // 开发 npm start // 编译 npm run build ``` > 更多开发构建问题见 [create-react-app](https://create-react-app.dev/) 文档 ### 配置 配置文件地址:`./env` > 使用`create-react-app`的[环境变量](https://create-react-app.dev/docs/adding-custom-environment-variables) | 配置变量名 | 说明| | --- | --- | |REACT_APP_ADMIN_TOKEN_NAME|前端localStorage存储 `token` 名称| |REACT_APP_API_URL_PREFIX|服务端数据请求入口地址| |REACT_APP_API_ACTION_NAME|服务端数据请求地址中 `action` 变量名| |REACT_APP_API_TOKEN_NAME|服务端数据请求地址中 `token` 变量名| |REACT_APP_INDEX_URL|登录后首页(`/`)跳转地址| |REACT_APP_SITE_NAME|站点名称 页面左上角| |REACT_APP_SITE_TITLE_TPL|页面标题模板| ```js import {config} from "src/utils/helper"; // 获取配置 let name = config('SITE_NAME') ``` > 获取配置时`REACT_APP__`无需填写 ### 路由与菜单 ##### 路由 系统中页面路由已经实现动态自动加载,加载规则如下: 1. 加载目录`/src/pages` 1. 加载文件`index.tsx` 1. 会自动过滤`components`文件夹中的文件 > 实现代码 `import {getPages} from "src/utils/helper";` 例如: | 文件路径 | 路由地址| | --- | --- | |/src/pages/system/user/index.tsx|/system/user| |/src/pages/system/user/index2.tsx|不自动加载| |/src/pages/a/b/c/d/index.tsx|/a/b/c/d| |/src/pages/a/components/c/index.tsx|不自动加载| |/src/pages/components/a/index.tsx|不自动加载| ##### 菜单 菜单分为两种类型: 1. 目录型: 点击该菜单会展示下级菜单,没有真实页面与之对应 1. 页面型: 这种菜单有前端页面对应,点击进入对应的前端页面 1. 链接型: http/https链接 页面型菜单: 后台配置菜单链接时对应这里 `路由地址` ### redux > `/reducers/` | - | 路由地址| | --- | --- | |user|当前用户信息| |allUser|后台所有用户列表| |menu|用户已授权菜单列表| |request|用户已授权请求列表| |auth|用户关联权限| |userGroup|用户已授权请求列表| |currentMenu|当前页面菜单信息| |currentMenus|当前菜单信息(包含父级菜单)| ### 服务端请求 #### 常用方法 ```js import request from "src/utils/request"; // get 请求 request('/system/request/remove'). data({id:1}). showSuccessTip(). success(r=>{ console.log(r) }).get(); // post 请求 request('/system/request/remove'). data({id:1}). showSuccessTip(). success(r=>{ console.log(r) }).get(); ``` `request()` 方法参数为服务端请求`action` `request()` 方法返回值为 `src/utils/request` 中 `request` 对象 发送请求时无需关心`token`,程序会自动附加 ##### request对象 | 方法 | 说明| 默认值| | --- | --- |---| |dataType(string)|响应格式|json| |contentType(string)|请求头`Content-Type`|application/x-www-form-urlencoded| |data(object)|请求数据对象|{}| |showSuccessTip()|显示业务执行成功页面提示 不调用默认`不提示`|| |hideErrorTip()|隐藏业务执行异常页面提示 不调用默认`提示`|| |success(function)|业务执行成功回调函数|null| |error(function)|业务执行异常回调函数|null| |complete(function)|请求完成回调函数|null| |get()|发起GET请求|| |post()|发起POST请求|| > 只有调用`get()`/`post()`方法才会发起请求 #### 其他 当然你也可以自己导入`axios` 按照`axios`方式发起请求,通过下面的方法生成对应的服务端url以及附加token ```js import {actionUrl} from 'src/utils/helper' let url = actionUrl('action') ``` ### 内置组件 开发过程除了可以使用[ant.design](https://ant.design/)的组件外, 系统还内置一些与后台开发常用的组件 #### 显示后台指定用户名称 ``` import Username from 'src/components/username' ``` > `id`:用户ID > `default`:用户不存在显示文字 可选 #### 权限检查 ``` import AuthCheck from 'src/components/authCheck' 有权限是展示 ``` > `without` 可选 > > 常用于根据当前用户指定请求的权限判断结果展示不同的内容 #### 字段映射 ``` import FieldMap from 'src/components/fieldMap' let map = [{v: 1, n: '启用'},{v: 2, n: '禁用'}] ``` > 以上代码输出:`禁用` > > 该组件常用于映射字段的页面输出 `valueField`/`descField` 可选