diff --git a/core/backend/src/main/java/io/dataease/commons/utils/UrlTestUtils.java b/core/backend/src/main/java/io/dataease/commons/utils/UrlTestUtils.java index ba2bb3fbd0..ff536617a6 100644 --- a/core/backend/src/main/java/io/dataease/commons/utils/UrlTestUtils.java +++ b/core/backend/src/main/java/io/dataease/commons/utils/UrlTestUtils.java @@ -1,5 +1,7 @@ package io.dataease.commons.utils; +import java.io.IOException; +import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; @@ -17,4 +19,16 @@ public class UrlTestUtils { return false; } } + + public static boolean isURLAvailable(String urlString) { + try { + URL url = new URL(urlString); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("HEAD"); + int responseCode = connection.getResponseCode(); + return responseCode == HttpURLConnection.HTTP_OK; + } catch (IOException e) { + return false; + } + } } diff --git a/core/backend/src/main/java/io/dataease/service/ai/AiBaseService.java b/core/backend/src/main/java/io/dataease/service/ai/AiBaseService.java index e6b02a8cf7..b4daf17f81 100644 --- a/core/backend/src/main/java/io/dataease/service/ai/AiBaseService.java +++ b/core/backend/src/main/java/io/dataease/service/ai/AiBaseService.java @@ -1,5 +1,6 @@ package io.dataease.service.ai; +import io.dataease.commons.utils.UrlTestUtils; import io.dataease.service.system.SystemParameterService; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -23,7 +24,7 @@ public class AiBaseService { String baseUrl = parameterService.getValue("ai.baseUrl"); Map result = new HashMap<>(); - if(StringUtils.isNotEmpty(baseUrl)){ + if(StringUtils.isNotEmpty(baseUrl) && UrlTestUtils.isURLAvailable(baseUrl)){ result.put("ai.baseUrl",baseUrl); } diff --git a/core/frontend/src/icons/svg/dv-ai-window-max.svg b/core/frontend/src/icons/svg/dv-ai-window-max.svg new file mode 100644 index 0000000000..65f2115172 --- /dev/null +++ b/core/frontend/src/icons/svg/dv-ai-window-max.svg @@ -0,0 +1 @@ + diff --git a/core/frontend/src/icons/svg/dv-ai-window-min.svg b/core/frontend/src/icons/svg/dv-ai-window-min.svg new file mode 100644 index 0000000000..58794a4b18 --- /dev/null +++ b/core/frontend/src/icons/svg/dv-ai-window-min.svg @@ -0,0 +1 @@ + diff --git a/core/frontend/src/layout/components/AiComponent.vue b/core/frontend/src/layout/components/AiComponent.vue index bfd5a60572..5f342b59a5 100644 --- a/core/frontend/src/layout/components/AiComponent.vue +++ b/core/frontend/src/layout/components/AiComponent.vue @@ -10,7 +10,8 @@ export default { }, data() { return { - aiDialogShow: false + aiDialogShow: false, + sizeState: 'min' } }, mounted() { @@ -22,6 +23,9 @@ export default { }, closeAi() { this.aiDialogShow = false + }, + sizeChange() { + this.sizeState = this.sizeState === 'min' ? 'max' : 'min' } } } @@ -29,10 +33,19 @@ export default {