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
3ef8b740
authored
Sep 19, 2024
by
CalciumIon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 无可选分组时关闭令牌分组功能 #485
parent
27909c95
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
124 additions
and
117 deletions
+124
-117
web/src/pages/Token/EditToken.js
+124
-117
No files found.
web/src/pages/Token/EditToken.js
View file @
3ef8b740
...
...
@@ -273,150 +273,150 @@ const EditToken = (props) => {
>
<
Spin
spinning
=
{
loading
}
>
<
Input
style
=
{{
marginTop
:
20
}}
label
=
'名称'
name
=
'name'
placeholder
=
{
'请输入名称'
}
onChange
=
{(
value
)
=>
handleInputChange
(
'name'
,
value
)}
value
=
{
name
}
autoComplete
=
'new-password'
required
=
{
!
isEdit
}
style
=
{{
marginTop
:
20
}}
label
=
'名称'
name
=
'name'
placeholder
=
{
'请输入名称'
}
onChange
=
{(
value
)
=>
handleInputChange
(
'name'
,
value
)}
value
=
{
name
}
autoComplete
=
'new-password'
required
=
{
!
isEdit
}
/
>
<
Divider
/>
<
Divider
/>
<
DatePicker
label
=
'过期时间'
name
=
'expired_time'
placeholder
=
{
'请选择过期时间'
}
onChange
=
{(
value
)
=>
handleInputChange
(
'expired_time'
,
value
)}
value
=
{
expired_time
}
autoComplete
=
'new-password'
type
=
'dateTime'
label
=
'过期时间'
name
=
'expired_time'
placeholder
=
{
'请选择过期时间'
}
onChange
=
{(
value
)
=>
handleInputChange
(
'expired_time'
,
value
)}
value
=
{
expired_time
}
autoComplete
=
'new-password'
type
=
'dateTime'
/>
<
div
style
=
{{
marginTop
:
20
}}
>
<
div
style
=
{{
marginTop
:
20
}}
>
<
Space
>
<
Button
type
=
{
'tertiary'
}
onClick
=
{()
=>
{
setExpiredTime
(
0
,
0
,
0
,
0
);
}}
type
=
{
'tertiary'
}
onClick
=
{()
=>
{
setExpiredTime
(
0
,
0
,
0
,
0
);
}}
>
永不过期
<
/Button
>
<
Button
type
=
{
'tertiary'
}
onClick
=
{()
=>
{
setExpiredTime
(
0
,
0
,
1
,
0
);
}}
type
=
{
'tertiary'
}
onClick
=
{()
=>
{
setExpiredTime
(
0
,
0
,
1
,
0
);
}}
>
一小时
<
/Button
>
<
Button
type
=
{
'tertiary'
}
onClick
=
{()
=>
{
setExpiredTime
(
1
,
0
,
0
,
0
);
}}
type
=
{
'tertiary'
}
onClick
=
{()
=>
{
setExpiredTime
(
1
,
0
,
0
,
0
);
}}
>
一个月
<
/Button
>
<
Button
type
=
{
'tertiary'
}
onClick
=
{()
=>
{
setExpiredTime
(
0
,
1
,
0
,
0
);
}}
type
=
{
'tertiary'
}
onClick
=
{()
=>
{
setExpiredTime
(
0
,
1
,
0
,
0
);
}}
>
一天
<
/Button
>
<
/Space
>
<
/div
>
<
Divider
/>
<
Divider
/>
<
Banner
type
=
{
'warning'
}
description
=
{
'注意,令牌的额度仅用于限制令牌本身的最大额度使用量,实际的使用受到账户的剩余额度限制。'
}
type
=
{
'warning'
}
description
=
{
'注意,令牌的额度仅用于限制令牌本身的最大额度使用量,实际的使用受到账户的剩余额度限制。'
}
><
/Banner
>
<
div
style
=
{{
marginTop
:
20
}}
>
<
div
style
=
{{
marginTop
:
20
}}
>
<
Typography
.
Text
>
{
`额度
${
renderQuotaWithPrompt
(
remain_quota
)}
`
}
<
/Typography.Text
>
<
/div
>
<
AutoComplete
style
=
{{
marginTop
:
8
}}
name
=
'remain_quota'
placeholder
=
{
'请输入额度'
}
onChange
=
{(
value
)
=>
handleInputChange
(
'remain_quota'
,
value
)}
value
=
{
remain_quota
}
autoComplete
=
'new-password'
type
=
'number'
// position={'top'}
data
=
{[
{
value
:
500000
,
label
:
'1$'
},
{
value
:
5000000
,
label
:
'10$'
},
{
value
:
25000000
,
label
:
'50$'
},
{
value
:
50000000
,
label
:
'100$'
},
{
value
:
250000000
,
label
:
'500$'
},
{
value
:
500000000
,
label
:
'1000$'
},
]}
disabled
=
{
unlimited_quota
}
style
=
{{
marginTop
:
8
}}
name
=
'remain_quota'
placeholder
=
{
'请输入额度'
}
onChange
=
{(
value
)
=>
handleInputChange
(
'remain_quota'
,
value
)}
value
=
{
remain_quota
}
autoComplete
=
'new-password'
type
=
'number'
// position={'top'}
data
=
{[
{
value
:
500000
,
label
:
'1$'
},
{
value
:
5000000
,
label
:
'10$'
},
{
value
:
25000000
,
label
:
'50$'
},
{
value
:
50000000
,
label
:
'100$'
},
{
value
:
250000000
,
label
:
'500$'
},
{
value
:
500000000
,
label
:
'1000$'
},
]}
disabled
=
{
unlimited_quota
}
/
>
{
!
isEdit
&&
(
<>
<
div
style
=
{{
marginTop
:
20
}}
>
<
Typography
.
Text
>
新建数量
<
/Typography.Text
>
<
/div
>
<
AutoComplete
style
=
{{
marginTop
:
8
}}
label
=
'数量'
placeholder
=
{
'请选择或输入创建令牌的数量'
}
onChange
=
{(
value
)
=>
handleTokenCountChange
(
value
)}
onSelect
=
{(
value
)
=>
handleTokenCountChange
(
value
)}
value
=
{
tokenCount
.
toString
()}
autoComplete
=
'off'
type
=
'number'
data
=
{[
{
value
:
10
,
label
:
'10个'
},
{
value
:
20
,
label
:
'20个'
},
{
value
:
30
,
label
:
'30个'
},
{
value
:
100
,
label
:
'100个'
},
]}
disabled
=
{
unlimited_quota
}
/
>
<
/
>
<>
<
div
style
=
{{
marginTop
:
20
}}
>
<
Typography
.
Text
>
新建数量
<
/Typography.Text
>
<
/div
>
<
AutoComplete
style
=
{{
marginTop
:
8
}}
label
=
'数量'
placeholder
=
{
'请选择或输入创建令牌的数量'
}
onChange
=
{(
value
)
=>
handleTokenCountChange
(
value
)}
onSelect
=
{(
value
)
=>
handleTokenCountChange
(
value
)}
value
=
{
tokenCount
.
toString
()}
autoComplete
=
'off'
type
=
'number'
data
=
{[
{
value
:
10
,
label
:
'10个'
},
{
value
:
20
,
label
:
'20个'
},
{
value
:
30
,
label
:
'30个'
},
{
value
:
100
,
label
:
'100个'
},
]}
disabled
=
{
unlimited_quota
}
/
>
<
/
>
)}
<
div
>
<
Button
style
=
{{
marginTop
:
8
}}
type
=
{
'warning'
}
onClick
=
{()
=>
{
setUnlimitedQuota
();
}}
style
=
{{
marginTop
:
8
}}
type
=
{
'warning'
}
onClick
=
{()
=>
{
setUnlimitedQuota
();
}}
>
{
unlimited_quota
?
'取消无限额度'
:
'设为无限额度'
}
<
/Button
>
<
/div
>
<
Divider
/>
<
div
style
=
{{
marginTop
:
10
}}
>
<
Divider
/>
<
div
style
=
{{
marginTop
:
10
}}
>
<
Typography
.
Text
>
IP
白名单(请勿过度信任此功能)
<
/Typography.Text
>
<
/div
>
<
TextArea
label
=
'IP白名单'
name
=
'allow_ips'
placeholder
=
{
'允许的IP,一行一个'
}
onChange
=
{(
value
)
=>
{
handleInputChange
(
'allow_ips'
,
value
);
}}
value
=
{
inputs
.
allow_ips
}
style
=
{{
fontFamily
:
'JetBrains Mono, Consolas'
}}
label
=
'IP白名单'
name
=
'allow_ips'
placeholder
=
{
'允许的IP,一行一个'
}
onChange
=
{(
value
)
=>
{
handleInputChange
(
'allow_ips'
,
value
);
}}
value
=
{
inputs
.
allow_ips
}
style
=
{{
fontFamily
:
'JetBrains Mono, Consolas'
}}
/
>
<
div
style
=
{{
marginTop
:
10
,
display
:
'flex'
}}
>
<
div
style
=
{{
marginTop
:
10
,
display
:
'flex'
}}
>
<
Space
>
<
Checkbox
name
=
'model_limits_enabled'
checked
=
{
model_limits_enabled
}
onChange
=
{(
e
)
=>
handleInputChange
(
'model_limits_enabled'
,
e
.
target
.
checked
)
}
name
=
'model_limits_enabled'
checked
=
{
model_limits_enabled
}
onChange
=
{(
e
)
=>
handleInputChange
(
'model_limits_enabled'
,
e
.
target
.
checked
)
}
><
/Checkbox
>
<
Typography
.
Text
>
启用模型限制(非必要,不建议启用)
...
...
@@ -425,26 +425,26 @@ const EditToken = (props) => {
<
/div
>
<
Select
style
=
{{
marginTop
:
8
}}
placeholder
=
{
'请选择该渠道所支持的模型'
}
name
=
'models'
required
multiple
selection
onChange
=
{(
value
)
=>
{
handleInputChange
(
'model_limits'
,
value
);
}}
value
=
{
inputs
.
model_limits
}
autoComplete
=
'new-password'
optionList
=
{
models
}
disabled
=
{
!
model_limits_enabled
}
style
=
{{
marginTop
:
8
}}
placeholder
=
{
'请选择该渠道所支持的模型'
}
name
=
'models'
required
multiple
selection
onChange
=
{(
value
)
=>
{
handleInputChange
(
'model_limits'
,
value
);
}}
value
=
{
inputs
.
model_limits
}
autoComplete
=
'new-password'
optionList
=
{
models
}
disabled
=
{
!
model_limits_enabled
}
/
>
<
div
style
=
{{
marginTop
:
10
}}
>
<
div
style
=
{{
marginTop
:
10
}}
>
<
Typography
.
Text
>
令牌分组,默认为用户的分组
<
/Typography.Text
>
<
/div
>
<
Select
style
=
{{
marginTop
:
8
}}
{
groups
.
length
>
0
?
<
Select
style
=
{{
marginTop
:
8
}}
placeholder
=
{
'令牌分组,默认为用户的分组'
}
name
=
'gruop'
required
...
...
@@ -455,7 +455,14 @@ const EditToken = (props) => {
value
=
{
inputs
.
group
}
autoComplete
=
'new-password'
optionList
=
{
groups
}
/
>
/>
:
<
Select
style
=
{{
marginTop
:
8
}}
placeholder
=
{
'管理员未设置用户可选分组'
}
name
=
'gruop'
disabled
=
{
true
}
/
>
}
<
/Spin
>
<
/SideSheet
>
<
/
>
...
...
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