Compare commits

...
22 Commits
Author SHA1 Message Date
Baorong Li d03787a871 Publish antd-admin@5.0.1 2018-12-12 13:48:34 +08:00
Baorong Li 0949a298c9 fix #924 404 Not Found after router change 2018-12-12 06:53:26 +08:00
Baorong Li 94c8e2168f fix #926 createUser api in services 2018-12-12 06:17:30 +08:00
Baorong Li 358134f417 fallback umi to 2.2.8 to fix #923 2018-12-09 23:07:16 +08:00
Baorong Li 7483572b1d Merge pull request #921 from francolaiuppa/patch-1
Mini typo fixes for English docs, Configuration section.
2018-11-29 09:45:38 +08:00
Franco Laiuppa d1ce8e0739 Mini typo fixes
Hi! Great project!

I was reading the docs and noticed some typos regarding the layout names and the `exclude` parameter, so I've decided to fix it.
I'm new to this repo so I hope this is a valid edit if not please let me know and I'll change it.

Thanks!
2018-11-28 16:53:25 +01:00
zuiidea f230429ddd Merge branch 'develop' of https://github.com/zuiidea/antd-admin into develop 2018-11-21 10:36:51 +08:00
zuiidea 78c3b6d597 📝 Add some comments image to document. 2018-11-20 21:30:22 +08:00
Baorong Li cdbc2782ff chore: remove beta tag in version from package.json 2018-11-20 17:50:20 +08:00
zuiidea 108aca99b9 📝 Add documentation for Add Layout. 2018-11-18 23:08:12 +08:00
Baorong Li 7dd5dfb1bf fix: icons' format not right in manifest.json 2018-11-15 14:11:47 +08:00
zuiidea ee7a0fffc2 ⚡ Update manifest.json. 2018-11-15 00:11:17 +08:00
zuiidea 6999871860 📝 Add documentation for Add Luanguage. 2018-11-14 23:46:59 +08:00
zuiidea 6742207c77 🐛 Fix cannot translate fields with variables. 2018-11-14 22:44:46 +08:00
Baorong Li d71c29ee2e feat: enable pwa 2018-11-14 13:37:34 +08:00
zuiidea 6917d6b89a Merge branch 'develop' of https://github.com/zuiidea/antd-admin into develop 2018-11-12 23:31:11 +08:00
zuiidea c3f369f0b3 📝 Add documentation for API configuration. 2018-11-12 23:30:56 +08:00
Baorong Li 01abc5ca38 upgrade antd@3.10.5 2018-11-10 09:50:20 +08:00
Baorong Li 08a348090c upgrade umi@2.3.0-beta.1 2018-11-09 23:16:42 +08:00
Baorong Li 63b1ecf79f Upgrade umi@2.2.5 2018-11-09 11:26:19 +08:00
Baorong Li efe7e74375 fix #913 handleMenuClick is not defined 2018-11-07 16:23:36 +08:00
Baorong Li 6d552d22d9 add doc about custom http header #829 2018-11-05 11:23:43 +08:00
25 changed files with 1110 additions and 51 deletions
+5
View File
@@ -58,6 +58,11 @@ export default {
include: ['dva', 'dva/router', 'dva/saga', 'dva/fetch', 'antd/es'],
},
hardSource: /* isMac */ process.platform === 'darwin',
pwa: {
manifestOptions: {
srcPath: 'manifest.json'
},
}
},
],
],
+86
View File
@@ -0,0 +1,86 @@
# API configuration
## Why
In the use of `redux` or `dva` projects, we often write functions like the following `service` layer to make the code structure clearer, but it is easy to see that we will write a lot of similar code in `antd -admin@5.0`, using the more concise configuration method to achieve the same function.
```javascript
Export async function login(data) {
  Return request({
    Url: '/api/v1/user/login',
    Method: 'post',
    Data,
  })
}
```
## Configuration and use
In the `src/services/api.js` file, you will see the following configuration object, the object's key is used to call the function name, the object's value is the requested `url`, the default request method is `GET`, The format of the value of the other request mode object is `'method url'`.
```javascript
Export default {
  ...
  queryUser: '/user/:id',
  queryUserList: '/users',
  updateUser: 'Patch /user/:id',
  createUser: 'POST /user/:id',
  removeUser: 'DELETE /user/:id',
  removeUserList: 'POST /users/delete',
  ...
}
```
Used in other files
```javascript
Import { queryUser } from 'api'
// in the general file
...
queryUser(option).then(data => console.log(data))
...
/ / Model file
...
Yield call(queryUser, option)
...
```
## Method to realize
Refer to the `src/services/index.js` file to traverse the api configuration. Each property returns the corresponding encapsulated request function.
```javascript
Import request from 'utils/request'
Import { apiPrefix } from 'utils/config'
Import api from './api'
Const gen = params => {
  Let url = apiPrefix + params
  Let method = 'GET'
  Const paramsArray = params.split(' ')
  If (paramsArray.length === 2) {
    Method = paramsArray[0]
    Url = apiPrefix + paramsArray[1]
  }
  Return function(data) {
    Return request({
      Url,
      Data,
      Method,
    })
  }
}
Const APIFunction = {}
For (const key in api) {
  APIFunction[key] = gen(api[key])
}
Module.exports = APIFunction
```
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 194 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 118 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 199 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 124 KiB

+4
View File
@@ -2,6 +2,10 @@
- [Quick Start](getting-started.md)
- Customization
- [Configuration](configuration.md)
- [API Configuration](API-configuration.md)
- [I18n](i18n.md)
- [Layout](layout.md)
- [Request](request.md)
- Guide
- [Deploy](deploy.md)
- [Change Log](change-log.md)
+10 -10
View File
@@ -12,7 +12,7 @@ You can do some custom configuration in `/src/utils/config.js`:
- Type: `String`
Configure the copyright notice to apply to the login page, at the bottom of the `Primay` layout.
Configure the copyright notice to apply to the login page, at the bottom of the `Primary` layout.
## logoPath
@@ -24,7 +24,7 @@ You can do some custom configuration in `/src/utils/config.js`:
- Type: `String`
Configure the prefix of the interface in the project. The interface related documents can be viewed [API configuration]()
Configure the prefix of the interface in the project. The interface related documents can be viewed [API configuration](API-configuration.md)
## fixedHeader
@@ -39,25 +39,25 @@ You can do some custom configuration in `/src/utils/config.js`:
Configuration? Which routes use which layout, unspecified route uses the default layout `Public`, the project currently has `Primary` and `Public` layouts,
     The default configuration is as follows:
```js
```javascript
layouts: [
{
name: 'primary',
include: [/.*/],
exlude: [/(\/(en|zh))*\/login/],
exclude: [/(\/(en|zh))*\/login/],
},
],
```
The object properties for each layout are as follows:
- `name` - The name of the layout;
- `name` - The name of the layout;
- `include` - Specifies a list of routing rules that use this layout, which can be a regular expression or a string;
- `exlude` - Specifies a list of routing rules that do not use this layout, which can be a regular expression or a string.
- `exclude` - Specifies a list of routing rules that do not use this layout, which can be a regular expression or a string.
> Note: `exlude` takes precedence over `include`, and the layout behind it has a higher priority than the previous layout. The development process may need to be combined with the layout in the `src/layouts` directory. For details, see [Using Layout]().
> Note: `exclude` takes precedence over `include`, and the layout previous it has a higher priority than the behind layout. The development process may need to be combined with the layout in the `src/layouts` directory. For details, see [Using Layout](./layout.md).
## i18n
@@ -65,7 +65,7 @@ You can do some custom configuration in `/src/utils/config.js`:
Configure internationalization, the default configuration is as follows:
```js
```javascript
i18n: {
languages: [
{
@@ -91,9 +91,9 @@ You can do some custom configuration in `/src/utils/config.js`:
- `key` - The `key` of the language is applied to the page url to distinguish the language, and also corresponds to the language package folder name in the `src/locales` directory;
- `title` - The name of the language, at the bottom of the login page, at the top of the `Primay` layout, the language switch is displayed;
- `title` - The name of the language, at the bottom of the login page, at the top of the `Primary` layout, the language switch is displayed;
- `flag` - The path of the flag icon of the language, the language switching display at the top of the `Primay` layout.
- `flag` - The path of the flag icon of the language, the language switching display at the top of the `Primary` layout.
### i18n.defaultLanguage
+2
View File
@@ -2,6 +2,8 @@
After the development is completed and verified in the development environment, it needs to be deployed to our users.
![i18n](./_media/term_build.svg)
## Build
First execute the following command,
+75
View File
@@ -0,0 +1,75 @@
# globalization
## Add language
Take Japanese as an example.
![i18n](../_media/term_i18n.svg)
1. Add a language pack local file, `ja` is the Japanese language code, and a list of languages ​​that support translation [有道智云](http://ai.youdao.com/docs/doc-trans-api.s#p05), the `src/locales/ja/messages.json` file will be generated after running the following command.
```bash 
npm run add-locale ja
```
2. Extract the fields in the code that need to be translated, ie `<Trans>?message</Trans>`, `` i18n.t`message `` in the `message` field, run the following command after `src/locales/ja /messages.json` will appear after the extracted field configuration.
```bash 
npm run extract
```
You will see the following information:
```bash
Catalog statistics:
┌─────────────┬─────────────┬─────────┐
│ Language │ Total count │ Missing │
├─────────────┼─────────────┼─────────┤
│ en (source) │ 52 │ - │
│ ja │ 52 │ 52 │
│ zh │ 52 │ 0 │
└─────────────┴─────────────┴─────────┘
```
3. At the same time, we have added the relevant configuration in `src/utils/config.js`.
```javascript
{
...
i18n: {
languages: [
...
{
key:'ja',
title: '日本語',
flag: '/japanese.svg',
},
],
},
}
```
> Routing related effects, after the configuration `npm run start` takes effect after restart.
4. Use the built-in commands for automatic translation. You will see the translated configuration in `src/locales/ja/messages.json`.
```bash
npm run trans:only
```
You will see the following information:
```bash
start: en -> ja
...
youdao: en -> ja: Unpublished -> 未発表
youdao: en -> ja: Update -> 更新
youdao: en -> ja: Update User -> ユーザーの更新
youdao: en -> ja: Username -> 名
...
All translations have been completed.
```
> `npm run trans` will execute `npm run extract` and `npm run trans:only` in order.
5. Finally, you can adjust the inaccurate fields in `src/locales/ja/messages.json`. Start the development mode `npm run start`, open [http://localhost:7000/ja/login](http://localhost:7000/ja/login) and you will see the Japanese version of the app.
+60
View File
@@ -0,0 +1,60 @@
# Layout
## Add a new layout
Take a new layout named `secondary` as an example to make the route starting with `seconday` use this layout.
1. Add related configuration in `src/utils/config.js`. For details, please refer to [layouts](/configuration?id=layouts).
   ```javascript
   layouts: [
           {
               name: 'primary',
               include: [/.*/],
               exlude: [/(\/(en|zh))*\/login/, /(\/(en|zh))*\/seconday\/(.*)/],
           },
           {
               name: 'secondary',
               include: [/(\/(en|zh))*\/seconday\/(.*)/],
           },
   ],
   ```
2. Add the `secondary` layout component to the `src/layouts/BaseLayout.js` file.
   ```javascript
   import SecondaryLayout from './SecondaryLayout'
   const LayoutMap = {
     Primary: PrimaryLayout,
     Public: PublicLayout,
     Secondary: SecondaryLayout,
   }
   ```
3. Add the `SecondaryLayout.js` file to the `src/layouts/` directory.
   ```javascript
   import React from 'react'
   export default ({ children }) => {
     Return (
       <div>
         <h1>Seconday</h1>
         {children}
       </div>
     )
   }
   ```
4. Add a `seconday/index.js` file to the `src/pages/` directory.
   ```javascript
   import React from 'react'
   export default ({ children }) => {
     Return <div>Seconday page Content</div>
   }
   ```
5. Finally, start the development mode `npm run start`, open [http://localhost:7000/seconday/](http://localhost:7000/seconday/) and you will see the page for the `seconday` layout.
+22
View File
@@ -0,0 +1,22 @@
# HTTP request
this project use axios for http service, file located in src/utils/request.js
## Custom Header
As for privilege access or modify cookie, you could add header param by yourself
```
axios.defaults.headers.common['Authorization'] = 'token'
```
Or
```
axios.interceptors.request.use(function (config) {
config.headers.token = window.localStorage.getItem('token');
return config;
}, function (error) {
return Promise.reject(error);
});
```
+86
View File
@@ -0,0 +1,86 @@
# 接口配置
## 为什么
在使用了`redux`或者`dva`项目中,我们经常会写类似下面的`service`层的函数,使代码结构更清晰,但是很容易看出,我们会写很多相似的代码,在`antd-admin@5.0`中,使用了更加简洁的配置方式实现了相同的功能。
```javascript
export async function login(data) {
return request({
url: '/api/v1/user/login',
method: 'post',
data,
})
}
```
## 配置和使用
在`src/services/api.js`文件中,你会看到如下配置对象,对象的键用于调用时的函数名称,对象的值为请求的`url`,默认请求方式为`GET`,如果是其他请求方式对象的值的格式则为`'method url'`。
```javascript
export default {
...
queryUser: '/user/:id',
queryUserList: '/users',
updateUser: 'Patch /user/:id',
createUser: 'POST /user/:id',
removeUser: 'DELETE /user/:id',
removeUserList: 'POST /users/delete',
...
}
```
在其他文件中使用
```javascript
import { queryUser } from 'api'
// 一般文件中
...
queryUser(option).then(data => console.log(data))
...
// model文件中
...
yield call(queryUser, option)
...
```
## 实现方式
参考`src/services/index.js`文件,对api配置进行遍历,每个属性都返回对应的封装后的request函数。
```javascript
import request from 'utils/request'
import { apiPrefix } from 'utils/config'
import api from './api'
const gen = params => {
let url = apiPrefix + params
let method = 'GET'
const paramsArray = params.split(' ')
if (paramsArray.length === 2) {
method = paramsArray[0]
url = apiPrefix + paramsArray[1]
}
return function(data) {
return request({
url,
data,
method,
})
}
}
const APIFunction = {}
for (const key in api) {
APIFunction[key] = gen(api[key])
}
module.exports = APIFunction
```
+4
View File
@@ -2,6 +2,10 @@
- [快速上手](zh-cn/getting-started.md)
- 定制化
- [配置项](zh-cn/configuration.md)
- [接口配置](zh-cn/API-configuration.md)
- [国际化](zh-cn/i18n.md)
- [布局](zh-cn/layout.md)
- [http 请求](zh-cn/request.md)
- 指南
- [部署](zh-cn/deploy.md)
- [更新日志](zh-cn/change-log.md)
+4 -4
View File
@@ -24,7 +24,7 @@
- 类型: `String`
配置项目中接口的前缀,接口相关文档可查看 [接口配置化]()
配置项目中接口的前缀,接口相关文档可查看 [接口配置](API-configuration.md)
## fixedHeader
@@ -39,7 +39,7 @@
配置哪些路由使用哪种布局,未指定路由使用默认布局 `Public`,项目中目前有 `Primary` 和 `Public` 两种布局,
默认配置如下:
```js
```javascript
layouts: [
{
name: 'primary',
@@ -57,7 +57,7 @@
- `exlude` - 指定不使用该布局的路由规则列表,规则可为正则表达式或者字符串。
> 注意:`exlude` 优先级高于 `include`,后面的布局优先级高于前面的布局。开发过程中可能需要结合`src/layouts`目录下的布局使用,具体方法可查看 [使用布局]()。
> 注意:`exlude` 优先级高于 `include`,前面的布局优先级高于后面的布局。开发过程中可能需要结合`src/layouts`目录下的布局使用,具体方法可查看 [使用布局](./layout.md)。
## i18n
@@ -65,7 +65,7 @@
配置国际化,默认配置如下:
```js
```javascript
i18n: {
languages: [
{
+2
View File
@@ -2,6 +2,8 @@
完成开发并且在开发环境验证之后,就需要部署给我们的用户了。
![i18n](../_media/term_build.svg)
## 构建
先执行下面的命令,
+75
View File
@@ -0,0 +1,75 @@
# 国际化
## 新增应用语言
以新增日语为例。
![i18n](../_media/term_i18n.svg)
1. 添加语言包本地文件,`ja` 为日语的语言代码,支持翻译的语言列表参考 [有道智云](http://ai.youdao.com/docs/doc-trans-api.s#p05),运行下面命令后会生成 `src/locales/ja/messages.json` 文件。
```bash
npm run add-locale ja
```
2. 提取代码中需要翻译的字段,即 `<Trans>message</Trans>`、`` i18n.t`message `` 中 `message` 字段,运行下面命令后 `src/locales/ja/messages.json` 将会出现提取后的字段配置。
```bash
npm run extract
```
你将看到如下信息:
```bash
Catalog statistics:
┌─────────────┬─────────────┬─────────┐
│ Language │ Total count │ Missing │
├─────────────┼─────────────┼─────────┤
│ en (source) │ 52 │ - │
│ ja │ 52 │ 52 │
│ zh │ 52 │ 0 │
└─────────────┴─────────────┴─────────┘
```
3. 与此同时,我们在 `src/utils/config.js` 新增相关配置。
```javascript
{
...
i18n: {
languages: [
...
{
key:'ja',
title: '日本語',
flag: '/japanese.svg',
},
],
},
}
```
>  路由相关效果,配置后 `npm run start` 重启后生效。
4. 使用内置的命令进行自动翻译,在 `src/locales/ja/messages.json` 中将会看到翻译后的配置。
```bash
npm run trans:only
```
你将看到如下信息:
```bash
start: en -> ja
...
youdao: en -> ja: Unpublished -> 未発表
youdao: en -> ja: Update -> 更新
youdao: en -> ja: Update User -> ユーザーの更新
youdao: en -> ja: Username -> 名
...
All translations have been completed.
```
> `npm run trans` 将会依次执行 `npm run extract` 和 `npm run trans:only`
5. 最后,可以在 `src/locales/ja/messages.json` 中对翻译不准确的的字段进行调整。启动开发模式 `npm run start`,打开 [http://localhost:7000/ja/login](http://localhost:7000/ja/login),你将看到日语版本的应用。
+60
View File
@@ -0,0 +1,60 @@
# 布局
## 新增布局
以新增名为 `secondary` 的布局为例,使以 `seconday` 开头的路由都使用该布局。
1. 在 `src/utils/config.js` 新增相关配置,参数详细请查看 [layouts](/zh-cn/configuration?id=layouts)。
```javascript
layouts: [
{
name: 'primary',
include: [/.*/],
exlude: [/(\/(en|zh))*\/login/, /(\/(en|zh))*\/seconday\/(.*)/],
},
{
name: 'secondary',
include: [/(\/(en|zh))*\/seconday\/(.*)/],
},
],
```
2. 在`src/layouts/BaseLayout.js` 文件中新增 `secondary` 布局组件。
```javascript
import SecondaryLayout from './SecondaryLayout'
const LayoutMap = {
primary: PrimaryLayout,
public: PublicLayout,
secondary: SecondaryLayout,
}
```
3. 在`src/layouts/` 目录中新增 `SecondaryLayout.js` 文件。
```javascript
import React from 'react'
export default ({ children }) => {
return (
<div>
<h1>Seconday</h1>
{children}
</div>
)
}
```
4. 在`src/pages/` 目录中新增 `seconday/index.js` 文件。
```javascript
import React from 'react'
export default ({ children }) => {
return <div>Seconday page Content</div>
}
```
5. 最后,启动开发模式 `npm run start`,打开 [http://localhost:7000/seconday/](http://localhost:7000/seconday/),你将看到 `seconday` 布局的页面。
+24
View File
@@ -0,0 +1,24 @@
# HTTP请求
本项目使用了axios提供http请求服务,文件在src/utils/request.js
## 自定义Header
为了提供鉴权、修改cookie等服务,可以手动修改Header
```
axios.defaults.headers.common['Authorization'] = 'token'
```
或者
```
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
config.headers.token = window.localStorage.getItem('token');
return config;
}, function (error) {
return Promise.reject(error);
});
```
+13
View File
@@ -0,0 +1,13 @@
{
"name": "Antd-Admin",
"start_url": ".",
"display": "standalone",
"background_color": "#fff",
"description": "A front-end solution for enterprise applications built upon Ant Design and UmiJS",
"icons": [
{
"src": "logo.svg",
"sizes": "72x72 96x96 128x128 144x144 152x152 192x192 384x384 512x512"
}
]
}
+19 -19
View File
@@ -1,12 +1,12 @@
{
"name": "antd-admin",
"version": "5.0.0-beta",
"version": "5.0.1",
"private": true,
"description": "An admin dashboard application demo built upon Ant Design and UmiJS",
"dependencies": {
"@lingui/react": "^2.7.0",
"ant-design-pro": "^2.1.0",
"antd": "^3.10.0",
"@lingui/react": "^2.7.1",
"ant-design-pro": "^2.1.1",
"antd": "^3.10.7",
"axios": "^0.18.0",
"babel-core": "7.0.0-bridge.0",
"classnames": "^2.2.6",
@@ -28,46 +28,46 @@
"path-to-regexp": "^2.4.0",
"prop-types": "^15.6.2",
"qs": "^6.5.2",
"rc-tween-one": "^2.2.8",
"rc-tween-one": "^2.2.17",
"react-adsense": "^0.0.6",
"react-countup": "^4.0.0-alpha.6",
"react-draft-wysiwyg": "^1.12.13",
"react-helmet": "^5.2.0",
"react-highcharts": "^16.0.2",
"react-perfect-scrollbar": "^1.4.0",
"recharts": "^1.3.0",
"react-perfect-scrollbar": "^1.4.2",
"recharts": "^1.3.6",
"store": "^2.0.12"
},
"devDependencies": {
"@lingui/babel-preset-react": "^2.7.0",
"@lingui/cli": "^2.7.0",
"@lingui/loader": "^2.7.0",
"@lingui/babel-preset-react": "^2.7.1",
"@lingui/cli": "^2.7.1",
"@lingui/loader": "^2.7.1",
"babel-eslint": "^10.0.1",
"babel-plugin-dev-expression": "^0.2.1",
"babel-plugin-import": "^1.10.0",
"babel-plugin-macros": "^2.4.2",
"babel-plugin-module-resolver": "^3.1.1",
"cross-env": "^5.2.0",
"eslint": "^5.7.0",
"eslint-config-react-app": "^3.0.4",
"eslint": "^5.9.0",
"eslint-config-react-app": "^3.0.5",
"eslint-plugin-flowtype": "^3.0.0",
"eslint-plugin-import": "^2.6.0",
"eslint-plugin-jsx-a11y": "^6.1.1",
"eslint-plugin-react": "^7.1.0",
"husky": "^1.1.1",
"husky": "^1.1.4",
"less-vars-to-js": "^1.3.0",
"lint-staged": "^7.3.0",
"lint-staged": "^8.0.4",
"mockjs": "^1.0.1-beta3",
"module": "^1.2.5",
"prettier": "^1.14.3",
"stylelint": "^9.6.0",
"prettier": "^1.15.2",
"stylelint": "^9.8.0",
"stylelint-config-prettier": "^4.0.0",
"stylelint-config-standard": "^18.2.0",
"umi": "^2.2.1",
"umi-plugin-react": "^1.2.0"
"umi": "^2.2.8",
"umi-plugin-react": "^1.2.3"
},
"optionalDependencies": {
"puppeteer": "^1.9.0"
"puppeteer": "^1.10.0"
},
"lint-staged": {
"src/**/*.js": [
+15 -3
View File
@@ -56,9 +56,21 @@ const transform = async ({ from, to, locales, outputPath }) => {
let res = key
let way = 'youdao'
if (key.indexOf('/') !== 0) {
res = await youdao({
q: key,
})
const reg = '{([^{}]*)}'
const tasks = key
.match(new RegExp(`${reg}|((?<=(${reg}|^)).*?(?=(${reg}|$)))`, 'g'))
.map(item => {
if (new RegExp(reg).test(item)) {
return Promise.resolve(item)
}
return youdao({
q: item,
from,
to,
})
})
res = (await Promise.all(tasks)).join('')
} else {
res = `/${to + key}`
way = 'link'
+2 -8
View File
@@ -26,13 +26,7 @@ class List extends PureComponent {
}
render() {
const {
handleMenuClick,
onDeleteItem,
onEditItem,
i18n,
...tableProps
} = this.props
const { onDeleteItem, onEditItem, i18n, ...tableProps } = this.props
const columns = [
{
@@ -92,7 +86,7 @@ class List extends PureComponent {
render: (text, record) => {
return (
<DropOption
onMenuClick={e => handleMenuClick(record, e)}
onMenuClick={e => this.handleMenuClick(record, e)}
menuOptions={[
{ key: '1', name: i18n.t`Update` },
{ key: '2', name: i18n.t`Delete` },
+2 -4
View File
@@ -1,4 +1,4 @@
const api = {
export default {
queryRouteList: '/routes',
queryUserInfo: '/user',
@@ -8,7 +8,7 @@ const api = {
queryUser: '/user/:id',
queryUserList: '/users',
updateUser: 'Patch /user/:id',
createUser: 'POST /user/:id',
createUser: 'POST /user',
removeUser: 'DELETE /user/:id',
removeUserList: 'POST /users/delete',
@@ -16,5 +16,3 @@ const api = {
queryDashboard: '/dashboard',
}
export default api
+2 -3
View File
@@ -246,9 +246,8 @@ export function getLocale() {
export function setLocale(language) {
if (getLocale() !== language) {
umiRouter.push({
pathname: `/${language}${deLangPrefix(window.location.pathname)}${
window.location.search
}`,
pathname: `/${language}${deLangPrefix(window.location.pathname)}`,
search: window.location.search,
})
}
}