Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
new-api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
b72b4f26
authored
Nov 12, 2024
by
Calcium-Ion
Committed by
GitHub
Nov 12, 2024
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #564 from Licoy/main
优化页面组件大小规格一致
parents
08d17417
af1f0a40
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
170 additions
and
161 deletions
+170
-161
common/constants.go
+4
-2
middleware/rate-limit.go
+10
-0
web/src/components/ChannelsTable.js
+55
-64
web/src/components/LogsTable.js
+16
-14
web/src/components/RedemptionsTable.js
+27
-24
web/src/components/TokensTable.js
+27
-24
web/src/components/UsersTable.js
+9
-11
web/src/pages/Setting/Operation/SettingsCreditLimit.js
+1
-1
web/src/pages/Setting/Operation/SettingsDataDashboard.js
+2
-2
web/src/pages/Setting/Operation/SettingsDrawing.js
+7
-7
web/src/pages/Setting/Operation/SettingsGeneral.js
+4
-4
web/src/pages/Setting/Operation/SettingsLog.js
+2
-2
web/src/pages/Setting/Operation/SettingsMonitoring.js
+3
-3
web/src/pages/Setting/Operation/SettingsSensitiveWords.js
+3
-3
No files found.
common/constants.go
View file @
b72b4f26
...
@@ -144,11 +144,13 @@ var (
...
@@ -144,11 +144,13 @@ var (
// All duration's unit is seconds
// All duration's unit is seconds
// Shouldn't larger then RateLimitKeyExpirationDuration
// Shouldn't larger then RateLimitKeyExpirationDuration
var
(
var
(
GlobalApiRateLimitEnable
=
GetEnvOrDefaultBool
(
"GLOBAL_API_RATE_LIMIT_ENABLE"
,
true
)
GlobalApiRateLimitNum
=
GetEnvOrDefault
(
"GLOBAL_API_RATE_LIMIT"
,
180
)
GlobalApiRateLimitNum
=
GetEnvOrDefault
(
"GLOBAL_API_RATE_LIMIT"
,
180
)
GlobalApiRateLimitDuration
int64
=
3
*
60
GlobalApiRateLimitDuration
=
int64
(
GetEnvOrDefault
(
"GLOBAL_API_RATE_LIMIT_DURATION"
,
180
))
GlobalWebRateLimitEnable
=
GetEnvOrDefaultBool
(
"GLOBAL_WEB_RATE_LIMIT_ENABLE"
,
true
)
GlobalWebRateLimitNum
=
GetEnvOrDefault
(
"GLOBAL_WEB_RATE_LIMIT"
,
60
)
GlobalWebRateLimitNum
=
GetEnvOrDefault
(
"GLOBAL_WEB_RATE_LIMIT"
,
60
)
GlobalWebRateLimitDuration
int64
=
3
*
60
GlobalWebRateLimitDuration
=
int64
(
GetEnvOrDefault
(
"GLOBAL_WEB_RATE_LIMIT_DURATION"
,
180
))
UploadRateLimitNum
=
10
UploadRateLimitNum
=
10
UploadRateLimitDuration
int64
=
60
UploadRateLimitDuration
int64
=
60
...
...
middleware/rate-limit.go
View file @
b72b4f26
...
@@ -13,6 +13,10 @@ var timeFormat = "2006-01-02T15:04:05.000Z"
...
@@ -13,6 +13,10 @@ var timeFormat = "2006-01-02T15:04:05.000Z"
var
inMemoryRateLimiter
common
.
InMemoryRateLimiter
var
inMemoryRateLimiter
common
.
InMemoryRateLimiter
var
defNext
=
func
(
c
*
gin
.
Context
)
{
c
.
Next
()
}
func
redisRateLimiter
(
c
*
gin
.
Context
,
maxRequestNum
int
,
duration
int64
,
mark
string
)
{
func
redisRateLimiter
(
c
*
gin
.
Context
,
maxRequestNum
int
,
duration
int64
,
mark
string
)
{
ctx
:=
context
.
Background
()
ctx
:=
context
.
Background
()
rdb
:=
common
.
RDB
rdb
:=
common
.
RDB
...
@@ -83,11 +87,17 @@ func rateLimitFactory(maxRequestNum int, duration int64, mark string) func(c *gi
...
@@ -83,11 +87,17 @@ func rateLimitFactory(maxRequestNum int, duration int64, mark string) func(c *gi
}
}
func
GlobalWebRateLimit
()
func
(
c
*
gin
.
Context
)
{
func
GlobalWebRateLimit
()
func
(
c
*
gin
.
Context
)
{
if
common
.
GlobalWebRateLimitEnable
{
return
rateLimitFactory
(
common
.
GlobalWebRateLimitNum
,
common
.
GlobalWebRateLimitDuration
,
"GW"
)
return
rateLimitFactory
(
common
.
GlobalWebRateLimitNum
,
common
.
GlobalWebRateLimitDuration
,
"GW"
)
}
return
defNext
}
}
func
GlobalAPIRateLimit
()
func
(
c
*
gin
.
Context
)
{
func
GlobalAPIRateLimit
()
func
(
c
*
gin
.
Context
)
{
if
common
.
GlobalApiRateLimitEnable
{
return
rateLimitFactory
(
common
.
GlobalApiRateLimitNum
,
common
.
GlobalApiRateLimitDuration
,
"GA"
)
return
rateLimitFactory
(
common
.
GlobalApiRateLimitNum
,
common
.
GlobalApiRateLimitDuration
,
"GA"
)
}
return
defNext
}
}
func
CriticalRateLimit
()
func
(
c
*
gin
.
Context
)
{
func
CriticalRateLimit
()
func
(
c
*
gin
.
Context
)
{
...
...
web/src/components/ChannelsTable.js
View file @
b72b4f26
...
@@ -17,7 +17,7 @@ import {
...
@@ -17,7 +17,7 @@ import {
renderQuota
,
renderQuota
,
}
from
'../helpers/render'
;
}
from
'../helpers/render'
;
import
{
import
{
Button
,
Button
,
Divider
,
Dropdown
,
Dropdown
,
Form
,
Form
,
InputNumber
,
InputNumber
,
...
@@ -720,7 +720,7 @@ const ChannelsTable = () => {
...
@@ -720,7 +720,7 @@ const ChannelsTable = () => {
}}
}}
labelPosition
=
'left'
labelPosition
=
'left'
>
>
<
div
style
=
{{
display
:
'flex'
}}
>
<
div
style
=
{{
display
:
'flex'
}}
>
<
Space
>
<
Space
>
<
Form
.
Input
<
Form
.
Input
field
=
'search_keyword'
field
=
'search_keyword'
...
@@ -745,7 +745,7 @@ const ChannelsTable = () => {
...
@@ -745,7 +745,7 @@ const ChannelsTable = () => {
<
Form
.
Select
<
Form
.
Select
field
=
'group'
field
=
'group'
label
=
'分组'
label
=
'分组'
optionList
=
{[{
label
:
'选择分组'
,
value
:
null
},
...
groupOptions
]}
optionList
=
{[{
label
:
'选择分组'
,
value
:
null
},
...
groupOptions
]}
initValue
=
{
null
}
initValue
=
{
null
}
onChange
=
{(
v
)
=>
{
onChange
=
{(
v
)
=>
{
setSearchGroup
(
v
);
setSearchGroup
(
v
);
...
@@ -757,16 +757,25 @@ const ChannelsTable = () => {
...
@@ -757,16 +757,25 @@ const ChannelsTable = () => {
type
=
'primary'
type
=
'primary'
htmlType
=
'submit'
htmlType
=
'submit'
className
=
'btn-margin-right'
className
=
'btn-margin-right'
style
=
{{
marginRight
:
8
}}
style
=
{{
marginRight
:
8
}}
>
>
查询
查询
<
/Button
>
<
/Button
>
<
/Space
>
<
/Space
>
<
/div
>
<
/div
>
<
/Form
>
<
/Form
>
<
div
style
=
{{
marginTop
:
10
,
display
:
'flex'
}}
>
<
Divider
style
=
{{
marginBottom
:
15
}}
/
>
<
Space
>
<
div
<
Space
>
style
=
{{
display
:
isMobile
()
?
''
:
'flex'
,
marginTop
:
isMobile
()
?
0
:
-
45
,
zIndex
:
999
,
pointerEvents
:
'none'
,
}}
>
<
Space
style
=
{{
pointerEvents
:
'auto'
,
marginTop
:
isMobile
()
?
0
:
45
}}
>
<
Typography
.
Text
strong
>
使用
ID
排序
<
/Typography.Text
>
<
Typography
.
Text
strong
>
使用
ID
排序
<
/Typography.Text
>
<
Switch
<
Switch
checked
=
{
idSort
}
checked
=
{
idSort
}
...
@@ -783,56 +792,10 @@ const ChannelsTable = () => {
...
@@ -783,56 +792,10 @@ const ChannelsTable = () => {
});
});
}}
}}
><
/Switch
>
><
/Switch
>
<
/Space
>
<
/Space
>
<
/div
>
<
Table
className
=
{
'channel-table'
}
style
=
{{
marginTop
:
15
}}
columns
=
{
columns
}
dataSource
=
{
pageData
}
pagination
=
{{
currentPage
:
activePage
,
pageSize
:
pageSize
,
total
:
channelCount
,
pageSizeOpts
:
[
10
,
20
,
50
,
100
],
showSizeChanger
:
true
,
formatPageText
:
(
page
)
=>
''
,
onPageSizeChange
:
(
size
)
=>
{
handlePageSizeChange
(
size
).
then
();
},
onPageChange
:
handlePageChange
,
}}
loading
=
{
loading
}
onRow
=
{
handleRow
}
rowSelection
=
{
enableBatchDelete
?
{
onChange
:
(
selectedRowKeys
,
selectedRows
)
=>
{
// console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
setSelectedChannels
(
selectedRows
);
},
}
:
null
}
/
>
<
div
style
=
{{
display
:
isMobile
()
?
''
:
'flex'
,
marginTop
:
isMobile
()
?
0
:
-
45
,
zIndex
:
999
,
position
:
'relative'
,
pointerEvents
:
'none'
,
}}
>
<
Space
style
=
{{
pointerEvents
:
'auto'
,
marginTop
:
isMobile
()
?
0
:
45
}}
>
<
Button
<
Button
theme
=
'light'
theme
=
'light'
type
=
'primary'
type
=
'primary'
style
=
{{
marginRight
:
8
}}
style
=
{{
marginRight
:
8
}}
onClick
=
{()
=>
{
onClick
=
{()
=>
{
setEditingChannel
({
setEditingChannel
({
id
:
undefined
,
id
:
undefined
,
...
@@ -848,7 +811,7 @@ const ChannelsTable = () => {
...
@@ -848,7 +811,7 @@ const ChannelsTable = () => {
onConfirm
=
{
testAllChannels
}
onConfirm
=
{
testAllChannels
}
position
=
{
isMobile
()
?
'top'
:
'top'
}
position
=
{
isMobile
()
?
'top'
:
'top'
}
>
>
<
Button
theme
=
'light'
type
=
'warning'
style
=
{{
marginRight
:
8
}}
>
<
Button
theme
=
'light'
type
=
'warning'
style
=
{{
marginRight
:
8
}}
>
测试所有通道
测试所有通道
<
/Button
>
<
/Button
>
<
/Popconfirm
>
<
/Popconfirm
>
...
@@ -857,7 +820,7 @@ const ChannelsTable = () => {
...
@@ -857,7 +820,7 @@ const ChannelsTable = () => {
okType
=
{
'secondary'
}
okType
=
{
'secondary'
}
onConfirm
=
{
updateAllChannelsBalance
}
onConfirm
=
{
updateAllChannelsBalance
}
>
>
<
Button
theme
=
'light'
type
=
'secondary'
style
=
{{
marginRight
:
8
}}
>
<
Button
theme
=
'light'
type
=
'secondary'
style
=
{{
marginRight
:
8
}}
>
更新所有已启用通道余额
更新所有已启用通道余额
<
/Button
>
<
/Button
>
<
/Popconfirm
>
<
/Popconfirm
>
...
@@ -867,7 +830,7 @@ const ChannelsTable = () => {
...
@@ -867,7 +830,7 @@ const ChannelsTable = () => {
okType
=
{
'danger'
}
okType
=
{
'danger'
}
onConfirm
=
{
deleteAllDisabledChannels
}
onConfirm
=
{
deleteAllDisabledChannels
}
>
>
<
Button
theme
=
'light'
type
=
'danger'
style
=
{{
marginRight
:
8
}}
>
<
Button
theme
=
'light'
type
=
'danger'
style
=
{{
marginRight
:
8
}}
>
删除禁用通道
删除禁用通道
<
/Button
>
<
/Button
>
<
/Popconfirm
>
<
/Popconfirm
>
...
@@ -875,17 +838,14 @@ const ChannelsTable = () => {
...
@@ -875,17 +838,14 @@ const ChannelsTable = () => {
<
Button
<
Button
theme
=
'light'
theme
=
'light'
type
=
'primary'
type
=
'primary'
style
=
{{
marginRight
:
8
}}
style
=
{{
marginRight
:
8
}}
onClick
=
{
refresh
}
onClick
=
{
refresh
}
>
>
刷新
刷新
<
/Button
>
<
/Button
>
<
/Space
>
<
/Space
>
{
/*<div style={{width: '100%', pointerEvents: 'none', position: 'absolute'}}>*/
}
{
/*</div>*/
}
<
/div
>
<
/div
>
<
div
style
=
{{
marginTop
:
20
}}
>
<
div
style
=
{{
marginTop
:
20
}}
>
<
Space
>
<
Space
>
<
Typography
.
Text
strong
>
开启批量删除
<
/Typography.Text
>
<
Typography
.
Text
strong
>
开启批量删除
<
/Typography.Text
>
<
Switch
<
Switch
...
@@ -908,7 +868,7 @@ const ChannelsTable = () => {
...
@@ -908,7 +868,7 @@ const ChannelsTable = () => {
disabled
=
{
!
enableBatchDelete
}
disabled
=
{
!
enableBatchDelete
}
theme
=
'light'
theme
=
'light'
type
=
'danger'
type
=
'danger'
style
=
{{
marginRight
:
8
}}
style
=
{{
marginRight
:
8
}}
>
>
删除所选通道
删除所选通道
<
/Button
>
<
/Button
>
...
@@ -920,12 +880,43 @@ const ChannelsTable = () => {
...
@@ -920,12 +880,43 @@ const ChannelsTable = () => {
onConfirm
=
{
fixChannelsAbilities
}
onConfirm
=
{
fixChannelsAbilities
}
position
=
{
'top'
}
position
=
{
'top'
}
>
>
<
Button
theme
=
'light'
type
=
'secondary'
style
=
{{
marginRight
:
8
}}
>
<
Button
theme
=
'light'
type
=
'secondary'
style
=
{{
marginRight
:
8
}}
>
修复数据库一致性
修复数据库一致性
<
/Button
>
<
/Button
>
<
/Popconfirm
>
<
/Popconfirm
>
<
/Space
>
<
/Space
>
<
/div
>
<
/div
>
<
Table
className
=
{
'channel-table'
}
style
=
{{
marginTop
:
15
}}
columns
=
{
columns
}
dataSource
=
{
pageData
}
pagination
=
{{
currentPage
:
activePage
,
pageSize
:
pageSize
,
total
:
channelCount
,
pageSizeOpts
:
[
10
,
20
,
50
,
100
],
showSizeChanger
:
true
,
formatPageText
:
(
page
)
=>
''
,
onPageSizeChange
:
(
size
)
=>
{
handlePageSizeChange
(
size
).
then
();
},
onPageChange
:
handlePageChange
,
}}
loading
=
{
loading
}
onRow
=
{
handleRow
}
rowSelection
=
{
enableBatchDelete
?
{
onChange
:
(
selectedRowKeys
,
selectedRows
)
=>
{
// console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
setSelectedChannels
(
selectedRows
);
},
}
:
null
}
/
>
<
/
>
<
/
>
);
);
};
};
...
...
web/src/components/LogsTable.js
View file @
b72b4f26
...
@@ -767,6 +767,22 @@ const LogsTable = () => {
...
@@ -767,6 +767,22 @@ const LogsTable = () => {
<
Form
.
Section
><
/Form.Section
>
<
Form
.
Section
><
/Form.Section
>
<
/
>
<
/
>
<
/Form
>
<
/Form
>
<
div
style
=
{{
marginTop
:
10
}}
>
<
Select
defaultValue
=
'0'
style
=
{{
width
:
120
}}
onChange
=
{(
value
)
=>
{
setLogType
(
parseInt
(
value
));
loadLogs
(
0
,
pageSize
,
parseInt
(
value
));
}}
>
<
Select
.
Option
value
=
'0'
>
全部
<
/Select.Option
>
<
Select
.
Option
value
=
'1'
>
充值
<
/Select.Option
>
<
Select
.
Option
value
=
'2'
>
消费
<
/Select.Option
>
<
Select
.
Option
value
=
'3'
>
管理
<
/Select.Option
>
<
Select
.
Option
value
=
'4'
>
系统
<
/Select.Option
>
<
/Select
>
<
/div
>
<
Table
<
Table
style
=
{{
marginTop
:
5
}}
style
=
{{
marginTop
:
5
}}
columns
=
{
columns
}
columns
=
{
columns
}
...
@@ -786,20 +802,6 @@ const LogsTable = () => {
...
@@ -786,20 +802,6 @@ const LogsTable = () => {
onPageChange
:
handlePageChange
,
onPageChange
:
handlePageChange
,
}}
}}
/
>
/
>
<
Select
defaultValue
=
'0'
style
=
{{
width
:
120
}}
onChange
=
{(
value
)
=>
{
setLogType
(
parseInt
(
value
));
loadLogs
(
0
,
pageSize
,
parseInt
(
value
));
}}
>
<
Select
.
Option
value
=
'0'
>
全部
<
/Select.Option
>
<
Select
.
Option
value
=
'1'
>
充值
<
/Select.Option
>
<
Select
.
Option
value
=
'2'
>
消费
<
/Select.Option
>
<
Select
.
Option
value
=
'3'
>
管理
<
/Select.Option
>
<
Select
.
Option
value
=
'4'
>
系统
<
/Select.Option
>
<
/Select
>
<
/Layout
>
<
/Layout
>
<
/
>
<
/
>
);
);
...
...
web/src/components/RedemptionsTable.js
View file @
b72b4f26
...
@@ -10,7 +10,7 @@ import {
...
@@ -10,7 +10,7 @@ import {
import
{
ITEMS_PER_PAGE
}
from
'../constants'
;
import
{
ITEMS_PER_PAGE
}
from
'../constants'
;
import
{
renderQuota
}
from
'../helpers/render'
;
import
{
renderQuota
}
from
'../helpers/render'
;
import
{
import
{
Button
,
Button
,
Divider
,
Form
,
Form
,
Modal
,
Modal
,
Popconfirm
,
Popconfirm
,
...
@@ -391,29 +391,8 @@ const RedemptionsTable = () => {
...
@@ -391,29 +391,8 @@ const RedemptionsTable = () => {
onChange
=
{
handleKeywordChange
}
onChange
=
{
handleKeywordChange
}
/
>
/
>
<
/Form
>
<
/Form
>
<
Divider
style
=
{{
margin
:
'5px 0 15px 0'
}}
/
>
<
Table
<
div
>
style
=
{{
marginTop
:
20
}}
columns
=
{
columns
}
dataSource
=
{
pageData
}
pagination
=
{{
currentPage
:
activePage
,
pageSize
:
ITEMS_PER_PAGE
,
total
:
tokenCount
,
// showSizeChanger: true,
// pageSizeOptions: [10, 20, 50, 100],
formatPageText
:
(
page
)
=>
`第
${
page
.
currentStart
}
-
${
page
.
currentEnd
}
条,共
${
redemptions
.
length
}
条`
,
// onPageSizeChange: (size) => {
// setPageSize(size);
// setActivePage(1);
// },
onPageChange
:
handlePageChange
,
}}
loading
=
{
loading
}
rowSelection
=
{
rowSelection
}
onRow
=
{
handleRow
}
><
/Table
>
<
Button
<
Button
theme
=
'light'
theme
=
'light'
type
=
'primary'
type
=
'primary'
...
@@ -444,6 +423,30 @@ const RedemptionsTable = () => {
...
@@ -444,6 +423,30 @@ const RedemptionsTable = () => {
>
>
复制所选兑换码到剪贴板
复制所选兑换码到剪贴板
<
/Button
>
<
/Button
>
<
/div
>
<
Table
style
=
{{
marginTop
:
20
}}
columns
=
{
columns
}
dataSource
=
{
pageData
}
pagination
=
{{
currentPage
:
activePage
,
pageSize
:
ITEMS_PER_PAGE
,
total
:
tokenCount
,
// showSizeChanger: true,
// pageSizeOptions: [10, 20, 50, 100],
formatPageText
:
(
page
)
=>
`第
${
page
.
currentStart
}
-
${
page
.
currentEnd
}
条,共
${
redemptions
.
length
}
条`
,
// onPageSizeChange: (size) => {
// setPageSize(size);
// setActivePage(1);
// },
onPageChange
:
handlePageChange
,
}}
loading
=
{
loading
}
rowSelection
=
{
rowSelection
}
onRow
=
{
handleRow
}
><
/Table
>
<
/
>
<
/
>
);
);
};
};
...
...
web/src/components/TokensTable.js
View file @
b72b4f26
...
@@ -10,7 +10,7 @@ import {
...
@@ -10,7 +10,7 @@ import {
import
{
ITEMS_PER_PAGE
}
from
'../constants'
;
import
{
ITEMS_PER_PAGE
}
from
'../constants'
;
import
{
renderGroup
,
renderQuota
}
from
'../helpers/render'
;
import
{
renderGroup
,
renderQuota
}
from
'../helpers/render'
;
import
{
import
{
Button
,
Button
,
Divider
,
Dropdown
,
Dropdown
,
Form
,
Form
,
Modal
,
Modal
,
...
@@ -596,29 +596,8 @@ const TokensTable = () => {
...
@@ -596,29 +596,8 @@ const TokensTable = () => {
查询
查询
<
/Button
>
<
/Button
>
<
/Form
>
<
/Form
>
<
Divider
style
=
{{
margin
:
'15px 0'
}}
/
>
<
Table
<
div
>
style
=
{{
marginTop
:
20
}}
columns
=
{
columns
}
dataSource
=
{
pageData
}
pagination
=
{{
currentPage
:
activePage
,
pageSize
:
pageSize
,
total
:
tokenCount
,
showSizeChanger
:
true
,
pageSizeOptions
:
[
10
,
20
,
50
,
100
],
formatPageText
:
(
page
)
=>
`第
${
page
.
currentStart
}
-
${
page
.
currentEnd
}
条,共
${
tokens
.
length
}
条`
,
onPageSizeChange
:
(
size
)
=>
{
setPageSize
(
size
);
setActivePage
(
1
);
},
onPageChange
:
handlePageChange
,
}}
loading
=
{
loading
}
rowSelection
=
{
rowSelection
}
onRow
=
{
handleRow
}
><
/Table
>
<
Button
<
Button
theme
=
'light'
theme
=
'light'
type
=
'primary'
type
=
'primary'
...
@@ -650,6 +629,30 @@ const TokensTable = () => {
...
@@ -650,6 +629,30 @@ const TokensTable = () => {
>
>
复制所选令牌到剪贴板
复制所选令牌到剪贴板
<
/Button
>
<
/Button
>
<
/div
>
<
Table
style
=
{{
marginTop
:
20
}}
columns
=
{
columns
}
dataSource
=
{
pageData
}
pagination
=
{{
currentPage
:
activePage
,
pageSize
:
pageSize
,
total
:
tokenCount
,
showSizeChanger
:
true
,
pageSizeOptions
:
[
10
,
20
,
50
,
100
],
formatPageText
:
(
page
)
=>
`第
${
page
.
currentStart
}
-
${
page
.
currentEnd
}
条,共
${
tokens
.
length
}
条`
,
onPageSizeChange
:
(
size
)
=>
{
setPageSize
(
size
);
setActivePage
(
1
);
},
onPageChange
:
handlePageChange
,
}}
loading
=
{
loading
}
rowSelection
=
{
rowSelection
}
onRow
=
{
handleRow
}
><
/Table
>
<
/
>
<
/
>
);
);
};
};
...
...
web/src/components/UsersTable.js
View file @
b72b4f26
...
@@ -476,10 +476,18 @@ const UsersTable = () => {
...
@@ -476,10 +476,18 @@ const UsersTable = () => {
type
=
'primary'
type
=
'primary'
htmlType
=
'submit'
htmlType
=
'submit'
className
=
'btn-margin-right'
className
=
'btn-margin-right'
style
=
{{
marginRight
:
8
}}
>
>
查询
查询
<
/Button
>
<
/Button
>
<
Button
theme
=
'light'
type
=
'primary'
onClick
=
{()
=>
{
setShowAddUser
(
true
);
}}
>
添加用户
<
/Button
>
<
/Space
>
<
/Space
>
<
/div
>
<
/div
>
<
/Form
>
<
/Form
>
...
@@ -496,16 +504,6 @@ const UsersTable = () => {
...
@@ -496,16 +504,6 @@ const UsersTable = () => {
}}
}}
loading
=
{
loading
}
loading
=
{
loading
}
/
>
/
>
<
Button
theme
=
'light'
type
=
'primary'
style
=
{{
marginRight
:
8
}}
onClick
=
{()
=>
{
setShowAddUser
(
true
);
}}
>
添加用户
<
/Button
>
<
/
>
<
/
>
);
);
};
};
...
...
web/src/pages/Setting/Operation/SettingsCreditLimit.js
View file @
b72b4f26
...
@@ -144,7 +144,7 @@ export default function SettingsCreditLimit(props) {
...
@@ -144,7 +144,7 @@ export default function SettingsCreditLimit(props) {
<
/Row
>
<
/Row
>
<
Row
>
<
Row
>
<
Button
size
=
'
large
'
onClick
=
{
onSubmit
}
>
<
Button
size
=
'
default
'
onClick
=
{
onSubmit
}
>
保存额度设置
保存额度设置
<
/Button
>
<
/Button
>
<
/Row
>
<
/Row
>
...
...
web/src/pages/Setting/Operation/SettingsDataDashboard.js
View file @
b72b4f26
...
@@ -87,7 +87,7 @@ export default function DataDashboard(props) {
...
@@ -87,7 +87,7 @@ export default function DataDashboard(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'DataExportEnabled'
}
field
=
{
'DataExportEnabled'
}
label
=
{
'启用数据看板(实验性)'
}
label
=
{
'启用数据看板(实验性)'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
{
onChange
=
{(
value
)
=>
{
...
@@ -135,7 +135,7 @@ export default function DataDashboard(props) {
...
@@ -135,7 +135,7 @@ export default function DataDashboard(props) {
<
/Col
>
<
/Col
>
<
/Row
>
<
/Row
>
<
Row
>
<
Row
>
<
Button
size
=
'
large
'
onClick
=
{
onSubmit
}
>
<
Button
size
=
'
default
'
onClick
=
{
onSubmit
}
>
保存数据看板设置
保存数据看板设置
<
/Button
>
<
/Button
>
<
/Row
>
<
/Row
>
...
...
web/src/pages/Setting/Operation/SettingsDrawing.js
View file @
b72b4f26
...
@@ -81,7 +81,7 @@ export default function SettingsDrawing(props) {
...
@@ -81,7 +81,7 @@ export default function SettingsDrawing(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'DrawingEnabled'
}
field
=
{
'DrawingEnabled'
}
label
=
{
'启用绘图功能'
}
label
=
{
'启用绘图功能'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
{
onChange
=
{(
value
)
=>
{
...
@@ -96,7 +96,7 @@ export default function SettingsDrawing(props) {
...
@@ -96,7 +96,7 @@ export default function SettingsDrawing(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'MjNotifyEnabled'
}
field
=
{
'MjNotifyEnabled'
}
label
=
{
'允许回调(会泄露服务器 IP 地址)'
}
label
=
{
'允许回调(会泄露服务器 IP 地址)'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
onChange
=
{(
value
)
=>
...
@@ -111,7 +111,7 @@ export default function SettingsDrawing(props) {
...
@@ -111,7 +111,7 @@ export default function SettingsDrawing(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'MjAccountFilterEnabled'
}
field
=
{
'MjAccountFilterEnabled'
}
label
=
{
'允许 AccountFilter 参数'
}
label
=
{
'允许 AccountFilter 参数'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
onChange
=
{(
value
)
=>
...
@@ -126,7 +126,7 @@ export default function SettingsDrawing(props) {
...
@@ -126,7 +126,7 @@ export default function SettingsDrawing(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'MjForwardUrlEnabled'
}
field
=
{
'MjForwardUrlEnabled'
}
label
=
{
'开启之后将上游地址替换为服务器地址'
}
label
=
{
'开启之后将上游地址替换为服务器地址'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
onChange
=
{(
value
)
=>
...
@@ -146,7 +146,7 @@ export default function SettingsDrawing(props) {
...
@@ -146,7 +146,7 @@ export default function SettingsDrawing(props) {
<
Tag
>--
relax
<
/Tag> 以及 <Tag>--turbo</
Tag
>
参数
<
Tag
>--
relax
<
/Tag> 以及 <Tag>--turbo</
Tag
>
参数
<
/
>
<
/
>
}
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
onChange
=
{(
value
)
=>
...
@@ -165,7 +165,7 @@ export default function SettingsDrawing(props) {
...
@@ -165,7 +165,7 @@ export default function SettingsDrawing(props) {
检测必须等待绘图成功才能进行放大等操作
检测必须等待绘图成功才能进行放大等操作
<
/
>
<
/
>
}
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
onChange
=
{(
value
)
=>
...
@@ -178,7 +178,7 @@ export default function SettingsDrawing(props) {
...
@@ -178,7 +178,7 @@ export default function SettingsDrawing(props) {
<
/Col
>
<
/Col
>
<
/Row
>
<
/Row
>
<
Row
>
<
Row
>
<
Button
size
=
'
large
'
onClick
=
{
onSubmit
}
>
<
Button
size
=
'
default
'
onClick
=
{
onSubmit
}
>
保存绘图设置
保存绘图设置
<
/Button
>
<
/Button
>
<
/Row
>
<
/Row
>
...
...
web/src/pages/Setting/Operation/SettingsGeneral.js
View file @
b72b4f26
...
@@ -141,7 +141,7 @@ export default function GeneralSettings(props) {
...
@@ -141,7 +141,7 @@ export default function GeneralSettings(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'DisplayInCurrencyEnabled'
}
field
=
{
'DisplayInCurrencyEnabled'
}
label
=
{
'以货币形式显示额度'
}
label
=
{
'以货币形式显示额度'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
{
onChange
=
{(
value
)
=>
{
...
@@ -156,7 +156,7 @@ export default function GeneralSettings(props) {
...
@@ -156,7 +156,7 @@ export default function GeneralSettings(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'DisplayTokenStatEnabled'
}
field
=
{
'DisplayTokenStatEnabled'
}
label
=
{
'Billing 相关 API 显示令牌额度而非用户额度'
}
label
=
{
'Billing 相关 API 显示令牌额度而非用户额度'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
onChange
=
{(
value
)
=>
...
@@ -171,7 +171,7 @@ export default function GeneralSettings(props) {
...
@@ -171,7 +171,7 @@ export default function GeneralSettings(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'DefaultCollapseSidebar'
}
field
=
{
'DefaultCollapseSidebar'
}
label
=
{
'默认折叠侧边栏'
}
label
=
{
'默认折叠侧边栏'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
onChange
=
{(
value
)
=>
...
@@ -184,7 +184,7 @@ export default function GeneralSettings(props) {
...
@@ -184,7 +184,7 @@ export default function GeneralSettings(props) {
<
/Col
>
<
/Col
>
<
/Row
>
<
/Row
>
<
Row
>
<
Row
>
<
Button
size
=
'
large
'
onClick
=
{
onSubmit
}
>
<
Button
size
=
'
default
'
onClick
=
{
onSubmit
}
>
保存通用设置
保存通用设置
<
/Button
>
<
/Button
>
<
/Row
>
<
/Row
>
...
...
web/src/pages/Setting/Operation/SettingsLog.js
View file @
b72b4f26
...
@@ -102,7 +102,7 @@ export default function SettingsLog(props) {
...
@@ -102,7 +102,7 @@ export default function SettingsLog(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'LogConsumeEnabled'
}
field
=
{
'LogConsumeEnabled'
}
label
=
{
'启用额度消费日志记录'
}
label
=
{
'启用额度消费日志记录'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
{
onChange
=
{(
value
)
=>
{
...
@@ -135,7 +135,7 @@ export default function SettingsLog(props) {
...
@@ -135,7 +135,7 @@ export default function SettingsLog(props) {
<
/Row
>
<
/Row
>
<
Row
>
<
Row
>
<
Button
size
=
'
large
'
onClick
=
{
onSubmit
}
>
<
Button
size
=
'
default
'
onClick
=
{
onSubmit
}
>
保存日志设置
保存日志设置
<
/Button
>
<
/Button
>
<
/Row
>
<
/Row
>
...
...
web/src/pages/Setting/Operation/SettingsMonitoring.js
View file @
b72b4f26
...
@@ -114,7 +114,7 @@ export default function SettingsMonitoring(props) {
...
@@ -114,7 +114,7 @@ export default function SettingsMonitoring(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'AutomaticDisableChannelEnabled'
}
field
=
{
'AutomaticDisableChannelEnabled'
}
label
=
{
'失败时自动禁用通道'
}
label
=
{
'失败时自动禁用通道'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
{
onChange
=
{(
value
)
=>
{
...
@@ -129,7 +129,7 @@ export default function SettingsMonitoring(props) {
...
@@ -129,7 +129,7 @@ export default function SettingsMonitoring(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'AutomaticEnableChannelEnabled'
}
field
=
{
'AutomaticEnableChannelEnabled'
}
label
=
{
'成功时自动启用通道'
}
label
=
{
'成功时自动启用通道'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
onChange
=
{(
value
)
=>
...
@@ -142,7 +142,7 @@ export default function SettingsMonitoring(props) {
...
@@ -142,7 +142,7 @@ export default function SettingsMonitoring(props) {
<
/Col
>
<
/Col
>
<
/Row
>
<
/Row
>
<
Row
>
<
Row
>
<
Button
size
=
'
large
'
onClick
=
{
onSubmit
}
>
<
Button
size
=
'
default
'
onClick
=
{
onSubmit
}
>
保存监控设置
保存监控设置
<
/Button
>
<
/Button
>
<
/Row
>
<
/Row
>
...
...
web/src/pages/Setting/Operation/SettingsSensitiveWords.js
View file @
b72b4f26
...
@@ -77,7 +77,7 @@ export default function SettingsSensitiveWords(props) {
...
@@ -77,7 +77,7 @@ export default function SettingsSensitiveWords(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'CheckSensitiveEnabled'
}
field
=
{
'CheckSensitiveEnabled'
}
label
=
{
'启用屏蔽词过滤功能'
}
label
=
{
'启用屏蔽词过滤功能'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
{
onChange
=
{(
value
)
=>
{
...
@@ -92,7 +92,7 @@ export default function SettingsSensitiveWords(props) {
...
@@ -92,7 +92,7 @@ export default function SettingsSensitiveWords(props) {
<
Form
.
Switch
<
Form
.
Switch
field
=
{
'CheckSensitiveOnPromptEnabled'
}
field
=
{
'CheckSensitiveOnPromptEnabled'
}
label
=
{
'启用 Prompt 检查'
}
label
=
{
'启用 Prompt 检查'
}
size
=
'
large
'
size
=
'
default
'
checkedText
=
'|'
checkedText
=
'|'
uncheckedText
=
'〇'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
onChange
=
{(
value
)
=>
...
@@ -123,7 +123,7 @@ export default function SettingsSensitiveWords(props) {
...
@@ -123,7 +123,7 @@ export default function SettingsSensitiveWords(props) {
<
/Col
>
<
/Col
>
<
/Row
>
<
/Row
>
<
Row
>
<
Row
>
<
Button
size
=
'
large
'
onClick
=
{
onSubmit
}
>
<
Button
size
=
'
default
'
onClick
=
{
onSubmit
}
>
保存屏蔽词过滤设置
保存屏蔽词过滤设置
<
/Button
>
<
/Button
>
<
/Row
>
<
/Row
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment