diff --git a/backend/apps/system/crud/assistant.py b/backend/apps/system/crud/assistant.py
index 5cd27af8..a90528b3 100644
--- a/backend/apps/system/crud/assistant.py
+++ b/backend/apps/system/crud/assistant.py
@@ -130,7 +130,8 @@ def get_ds_from_api(self):
cookies[item['key']] = item['value']
if item['target'] == 'param':
param[item['key']] = item['value']
- res = requests.get(url=endpoint, params=param, headers=header, cookies=cookies, timeout=10)
+ timeout = int(config.get('timeout')) if config.get('timeout') else 10
+ res = requests.get(url=endpoint, params=param, headers=header, cookies=cookies, timeout=timeout)
if res.status_code == 200:
result_json: dict[any] = json.loads(res.text)
if result_json.get('code') == 0 or result_json.get('code') == 200:
diff --git a/frontend/src/views/system/embedded/iframe.vue b/frontend/src/views/system/embedded/iframe.vue
index d82bff80..aaacab96 100644
--- a/frontend/src/views/system/embedded/iframe.vue
+++ b/frontend/src/views/system/embedded/iframe.vue
@@ -84,6 +84,7 @@ const certificateForm = reactive(cloneDeep(defaultCertificateForm))
const defaultUrlForm = {
endpoint: '',
+ timeout: 10,
encrypt: false,
aes_key: '',
aes_iv: '',
@@ -342,6 +343,14 @@ const validateCertificate = (_: any, value: any, callback: any) => {
}
}
+const validateTimeout = (_: any, value: any, callback: any) => {
+ if (value === null) {
+ callback(new Error(t('datasource.please_enter') + t('common.empty') + t('ds.form.timeout')))
+ } else {
+ callback()
+ }
+}
+
const urlRules = {
endpoint: [
{
@@ -350,6 +359,13 @@ const urlRules = {
trigger: 'blur',
},
],
+ timeout: [
+ {
+ required: true,
+ validator: validateTimeout,
+ trigger: 'change',
+ },
+ ],
certificate: [
{
required: true,
@@ -799,6 +815,15 @@ const saveHandler = () => {
autocomplete="off"
/>
+
+
+
{{ t('embedded.aes_enable') }}