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
41162cc4
authored
May 11, 2024
by
QuentinHsu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor: 运营设置-监控设置
parent
c395fc28
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
162 additions
and
50 deletions
+162
-50
web/src/components/OperationSetting.js
+8
-50
web/src/pages/Setting/Operation/SettingsMonitoring.js
+154
-0
No files found.
web/src/components/OperationSetting.js
View file @
41162cc4
...
...
@@ -6,6 +6,7 @@ import SettingsDrawing from '../pages/Setting/Operation/SettingsDrawing.js';
import
SettingsSensitiveWords
from
'../pages/Setting/Operation/SettingsSensitiveWords.js'
;
import
SettingsLog
from
'../pages/Setting/Operation/SettingsLog.js'
;
import
SettingsDataDashboard
from
'../pages/Setting/Operation/SettingsDataDashboard.js'
;
import
SettingsMonitoring
from
'../pages/Setting/Operation/SettingsMonitoring.js'
;
import
{
API
,
...
...
@@ -33,8 +34,8 @@ const OperationSetting = () => {
ChatLink
:
''
,
ChatLink2
:
''
,
// 添加的新状态变量
QuotaPerUnit
:
0
,
AutomaticDisableChannelEnabled
:
''
,
AutomaticEnableChannelEnabled
:
''
,
AutomaticDisableChannelEnabled
:
false
,
AutomaticEnableChannelEnabled
:
false
,
ChannelDisableThreshold
:
0
,
LogConsumeEnabled
:
false
,
DisplayInCurrencyEnabled
:
false
,
...
...
@@ -220,7 +221,7 @@ const OperationSetting = () => {
return
(
<>
{
/* 通用设置 */
}
<
Card
>
<
Card
style
=
{{
marginTop
:
'10px'
}}
>
<
SettingsGeneral
options
=
{
inputs
}
/
>
<
/Card
>
{
/* 绘图设置 */
}
...
...
@@ -239,6 +240,10 @@ const OperationSetting = () => {
<
Card
style
=
{{
marginTop
:
'10px'
}}
>
<
SettingsDataDashboard
options
=
{
inputs
}
/
>
<
/Card
>
{
/* 监控设置 */
}
<
Card
style
=
{{
marginTop
:
'10px'
}}
>
<
SettingsMonitoring
options
=
{
inputs
}
/
>
<
/Card
>
<
Grid
columns
=
{
1
}
>
<
Grid
.
Column
>
<
Form
loading
=
{
loading
}
inverted
=
{
isDark
}
>
...
...
@@ -264,53 +269,6 @@ const OperationSetting = () => {
<
Divider
/>
<
Header
as
=
'h3'
inverted
=
{
isDark
}
>
监控设置
<
/Header
>
<
Form
.
Group
widths
=
{
3
}
>
<
Form
.
Input
label
=
'最长响应时间'
name
=
'ChannelDisableThreshold'
onChange
=
{
handleInputChange
}
autoComplete
=
'new-password'
value
=
{
inputs
.
ChannelDisableThreshold
}
type
=
'number'
min
=
'0'
placeholder
=
'单位秒,当运行通道全部测试时,超过此时间将自动禁用通道'
/>
<
Form
.
Input
label
=
'额度提醒阈值'
name
=
'QuotaRemindThreshold'
onChange
=
{
handleInputChange
}
autoComplete
=
'new-password'
value
=
{
inputs
.
QuotaRemindThreshold
}
type
=
'number'
min
=
'0'
placeholder
=
'低于此额度时将发送邮件提醒用户'
/>
<
/Form.Group
>
<
Form
.
Group
inline
>
<
Form
.
Checkbox
checked
=
{
inputs
.
AutomaticDisableChannelEnabled
===
'true'
}
label
=
'失败时自动禁用通道'
name
=
'AutomaticDisableChannelEnabled'
onChange
=
{
handleInputChange
}
/
>
<
Form
.
Checkbox
checked
=
{
inputs
.
AutomaticEnableChannelEnabled
===
'true'
}
label
=
'成功时自动启用通道'
name
=
'AutomaticEnableChannelEnabled'
onChange
=
{
handleInputChange
}
/
>
<
/Form.Group
>
<
Form
.
Button
onClick
=
{()
=>
{
submitConfig
(
'monitor'
).
then
();
}}
>
保存监控设置
<
/Form.Button
>
<
Divider
/>
<
Header
as
=
'h3'
inverted
=
{
isDark
}
>
额度设置
<
/Header
>
<
Form
.
Group
widths
=
{
4
}
>
...
...
web/src/pages/Setting/Operation/SettingsMonitoring.js
0 → 100644
View file @
41162cc4
import
React
,
{
useEffect
,
useState
,
useRef
}
from
'react'
;
import
{
Button
,
Col
,
Form
,
Row
,
Spin
}
from
'@douyinfe/semi-ui'
;
import
{
compareObjects
,
API
,
showError
,
showSuccess
,
showWarning
,
}
from
'../../../helpers'
;
export
default
function
SettingsMonitoring
(
props
)
{
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
[
inputs
,
setInputs
]
=
useState
({
ChannelDisableThreshold
:
''
,
QuotaRemindThreshold
:
''
,
AutomaticDisableChannelEnabled
:
false
,
AutomaticEnableChannelEnabled
:
false
,
});
const
refForm
=
useRef
();
const
[
inputsRow
,
setInputsRow
]
=
useState
(
inputs
);
function
onSubmit
()
{
const
updateArray
=
compareObjects
(
inputs
,
inputsRow
);
if
(
!
updateArray
.
length
)
return
showWarning
(
'你似乎并没有修改什么'
);
const
requestQueue
=
updateArray
.
map
((
item
)
=>
{
let
value
=
''
;
if
(
typeof
inputs
[
item
.
key
]
===
'boolean'
)
{
value
=
String
(
inputs
[
item
.
key
]);
}
else
{
value
=
inputs
[
item
.
key
];
}
return
API
.
put
(
'/api/option/'
,
{
key
:
item
.
key
,
value
,
});
});
setLoading
(
true
);
Promise
.
all
(
requestQueue
)
.
then
((
res
)
=>
{
if
(
requestQueue
.
length
===
1
)
{
if
(
res
.
includes
(
undefined
))
return
;
}
else
if
(
requestQueue
.
length
>
1
)
{
if
(
res
.
includes
(
undefined
))
return
showError
(
'部分更新失败'
);
}
showSuccess
(
'更新成功'
);
})
.
catch
(()
=>
{
showError
(
'更新失败'
);
})
.
finally
(()
=>
{
setLoading
(
false
);
setInputsRow
(
structuredClone
(
inputs
));
});
}
useEffect
(()
=>
{
const
currentInputs
=
{};
for
(
let
key
in
props
.
options
)
{
if
(
Object
.
keys
(
inputs
).
includes
(
key
))
{
currentInputs
[
key
]
=
props
.
options
[
key
];
}
}
setInputs
(
currentInputs
);
setInputsRow
(
structuredClone
(
currentInputs
));
refForm
.
current
.
setValues
(
currentInputs
);
},
[
props
.
options
]);
return
(
<>
<
Spin
spinning
=
{
loading
}
>
<
Form
values
=
{
inputs
}
getFormApi
=
{(
formAPI
)
=>
(
refForm
.
current
=
formAPI
)}
style
=
{{
marginBottom
:
15
}}
>
<
Form
.
Section
text
=
{
'监控设置'
}
>
<
Row
gutter
=
{
16
}
>
<
Col
span
=
{
8
}
>
<
Form
.
InputNumber
label
=
{
'最长响应时间'
}
step
=
{
1
}
min
=
{
0
}
suffix
=
{
'秒'
}
extraText
=
{
'当运行通道全部测试时,超过此时间将自动禁用通道'
}
placeholder
=
{
''
}
field
=
{
'ChannelDisableThreshold'
}
onChange
=
{(
value
)
=>
setInputs
({
...
inputs
,
ChannelDisableThreshold
:
String
(
value
),
})
}
/
>
<
/Col
>
<
Col
span
=
{
8
}
>
<
Form
.
InputNumber
label
=
{
'额度提醒阈值'
}
step
=
{
1
}
min
=
{
0
}
suffix
=
{
'Token'
}
extraText
=
{
'低于此额度时将发送邮件提醒用户'
}
placeholder
=
{
''
}
field
=
{
'QuotaRemindThreshold'
}
onChange
=
{(
value
)
=>
setInputs
({
...
inputs
,
QuotaRemindThreshold
:
String
(
value
),
})
}
/
>
<
/Col
>
<
/Row
>
<
Row
gutter
=
{
16
}
>
<
Col
span
=
{
8
}
>
<
Form
.
Switch
field
=
{
'AutomaticDisableChannelEnabled'
}
label
=
{
'失败时自动禁用通道'
}
size
=
'large'
checkedText
=
'|'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
{
setInputs
({
...
inputs
,
AutomaticDisableChannelEnabled
:
value
,
});
}}
/
>
<
/Col
>
<
Col
span
=
{
8
}
>
<
Form
.
Switch
field
=
{
'AutomaticEnableChannelEnabled'
}
label
=
{
'成功时自动启用通道'
}
size
=
'large'
checkedText
=
'|'
uncheckedText
=
'〇'
onChange
=
{(
value
)
=>
setInputs
({
...
inputs
,
AutomaticEnableChannelEnabled
:
value
,
})
}
/
>
<
/Col
>
<
/Row
>
<
Row
>
<
Button
size
=
'large'
onClick
=
{
onSubmit
}
>
保存监控设置
<
/Button
>
<
/Row
>
<
/Form.Section
>
<
/Form
>
<
/Spin
>
<
/
>
);
}
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