diff --git a/web/src/components/TextOverflow.vue b/web/src/components/TextOverflow.vue index ce7bf56..68cac2c 100644 --- a/web/src/components/TextOverflow.vue +++ b/web/src/components/TextOverflow.vue @@ -1,6 +1,6 @@ diff --git a/web/src/components/ui/BaihuDialog.vue b/web/src/components/ui/BaihuDialog.vue new file mode 100644 index 0000000..be7f268 --- /dev/null +++ b/web/src/components/ui/BaihuDialog.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/web/src/views/dependencies/Dependencies.vue b/web/src/views/dependencies/Dependencies.vue index 80271a1..77df032 100644 --- a/web/src/views/dependencies/Dependencies.vue +++ b/web/src/views/dependencies/Dependencies.vue @@ -258,26 +258,26 @@ onMounted(async () => {
-
-
- {{ filteredDeps.length }} 个包 +
+
+ {{ filteredDeps.length }} 个包
-
-
- - +
+
+ +
-
- - -
@@ -285,11 +285,12 @@ onMounted(async () => {
+ class="flex items-center gap-4 px-4 h-10 border-b bg-muted/20 text-xs text-muted-foreground font-bold uppercase tracking-wider min-w-[400px]"> + 序号 包名 - 版本 - - 操作 + 版本 + + 操作
@@ -302,29 +303,30 @@ onMounted(async () => { {{ searchQuery ? '无匹配结果' : '暂无依赖包' }}
-
- +
+
#{{ filteredDeps.length - index }}
+ - {{ dep.version || '-' }} -
diff --git a/web/src/views/environments/Environments.vue b/web/src/views/environments/Environments.vue index bbc7ae9..dcb35e3 100644 --- a/web/src/views/environments/Environments.vue +++ b/web/src/views/environments/Environments.vue @@ -2,7 +2,7 @@ import { nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue' import { Button } from '@/components/ui/button' import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogFooter } from '@/components/ui/dialog' -import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from '@/components/ui/alert-dialog' +import BaihuDialog from '@/components/ui/BaihuDialog.vue' import { Input } from '@/components/ui/input' import { Textarea } from '@/components/ui/textarea' import { Label } from '@/components/ui/label' @@ -457,62 +457,49 @@ onBeforeUnmount(() => { - - - - 确认删除 - -
-
- -
-

{{ activeTab === ENV_TYPE.SECRET ? '机密' : '环境变量' }}正在使用中

-

- 该{{ activeTab === ENV_TYPE.SECRET ? '机密' : '变量' }}已被以下任务引用,直接删除可能导致任务运行失败。建议先移除引用或选择“强制删除”。 -

-
-
+ +
+
+ +
+

{{ activeTab === ENV_TYPE.SECRET ? '机密' : '环境变量' }}正在使用中

+

+ 该{{ activeTab === ENV_TYPE.SECRET ? '机密' : '变量' }}已被以下任务引用,直接删除可能导致任务运行失败。建议先移除引用或选择“强制删除”。 +

+
+
-
-
-

关联任务 ({{ - associatedTasks.length }})

-
-
-
-
- - {{ task.name }} -
- {{ task.id }} -
-
-
- -
-

- 提示:选择强制删除将自动解除以上任务对该{{ activeTab === 'secret' ? '机密' : '变量' }}的绑定并执行物理删除。 -

+
+

关联任务 ({{ associatedTasks.length }})

+
+
+
+ + {{ task.name }}
+ {{ task.id }}
-

确定要删除此{{ activeTab === ENV_TYPE.SECRET ? '机密' : '环境变量' }}吗?此操作无法撤销,请谨慎操作。

- - - - 取消 - - - - - +
+
+ +
+

+ 提示:选择强制删除将自动解除以上任务对该{{ activeTab === 'secret' ? '机密' : '变量' }}的绑定并执行物理删除。 +

+
+
+

确定要删除此{{ activeTab === ENV_TYPE.SECRET ? '机密' : '环境变量' }}吗?此操作无法撤销,请谨慎操作。

+ + +
diff --git a/web/src/views/history/History.vue b/web/src/views/history/History.vue index 06cecd7..c59ca14 100644 --- a/web/src/views/history/History.vue +++ b/web/src/views/history/History.vue @@ -13,16 +13,7 @@ import { } from 'lucide-vue-next' import { api, type TaskLog } from '@/api' import LogDetailCard from '@/components/LogDetailCard.vue' -import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, -} from '@/components/ui/alert-dialog' +import BaihuDialog from '@/components/ui/BaihuDialog.vue' import { toast } from 'vue-sonner' import { useSiteSettings } from '@/composables/useSiteSettings' import TextOverflow from '@/components/TextOverflow.vue' @@ -506,42 +497,27 @@ watch(() => route.query, (newQuery) => { :content="decompressedOutput" /> - - - - 确认清空日志? - - 此操作将永久删除{{ filterTaskId ? '当前任务的' : '所有' }}任务历史记录,包括控制台输出,并且无法撤销。 - - - - 取消 - - 清空 - - - - + +
+ 此操作将永久删除{{ filterTaskId ? '当前任务的' : '所有' }}任务历史记录,包括控制台输出,并且无法撤销。 +

⚠️ 风险:该操作不可撤销。

+
+ +
- - - - 确认删除这条日志? - - 此操作将永久删除该次运行记录和日志文件,且不可恢复。 - - - - 取消 - - 删除 - - - - + +
+ 此操作将永久删除该次运行记录和日志文件,且不可恢复。 +
+ +
diff --git a/web/src/views/languages/Languages.vue b/web/src/views/languages/Languages.vue index bdfe565..6202ac0 100644 --- a/web/src/views/languages/Languages.vue +++ b/web/src/views/languages/Languages.vue @@ -17,6 +17,7 @@ import { api, type MiseLanguage } from '@/api' import { toast } from 'vue-sonner' import XTerminal from '@/components/XTerminal.vue' import { cn } from '@/lib/utils' +import BaihuDialog from '@/components/ui/BaihuDialog.vue' const SUPPORTED_DEPS_LANGS = [ 'python', 'node', 'ruby', 'go', 'rust', 'bun', 'php', @@ -35,6 +36,13 @@ const searchQuery = ref('') const errorMsg = ref('') const syncing = ref(false) const showSyncConfirm = ref(false) +const showDetailDialog = ref(false) +const selectedLang = ref(null) + +function viewDetail(lang: DisplayLanguage) { + selectedLang.value = lang + showDetailDialog.value = true +} const showInstallDialog = ref(false) const newLangPlugin = ref('') @@ -338,22 +346,22 @@ onMounted(() => {

管理编程语言及相关包依赖(Mise)

-
- - - - - 安装列表 - 镜像加速 + + + 安装列表 + 镜像加速
-
+
设为默认:将选定版本设为系统全局默认 (mise use -g),生效后所有未通过高级配置指定特定环境的任务将默认调用此环境。 @@ -371,21 +379,23 @@ onMounted(() => {
-
- - + class="flex items-center justify-between px-3 sm:px-4 py-2 sm:py-3 border-b bg-muted/30 gap-2 sm:gap-4"> +
+ +
-
- -
@@ -401,64 +411,75 @@ onMounted(() => { {{ searchQuery ? '未找到匹配的语言' : '未发现已安装的语言' }}
@@ -617,22 +639,24 @@ onMounted(() => {
-
- +
+
+ +
+
+ 未找到匹配版本 +
+
-
- 未找到匹配版本 -
-
@@ -720,5 +744,50 @@ onMounted(() => { + + + + +
diff --git a/web/src/views/loginlogs/tabs/LoginLogTab.vue b/web/src/views/loginlogs/tabs/LoginLogTab.vue index 157ab0f..7957856 100644 --- a/web/src/views/loginlogs/tabs/LoginLogTab.vue +++ b/web/src/views/loginlogs/tabs/LoginLogTab.vue @@ -8,13 +8,7 @@ import TextOverflow from '@/components/TextOverflow.vue' import { api } from '@/api' import { toast } from 'vue-sonner' import { useSiteSettings } from '@/composables/useSiteSettings' -import { - Dialog, - DialogContent, - DialogHeader, - DialogTitle, - DialogDescription -} from '@/components/ui/dialog' +import BaihuDialog from '@/components/ui/BaihuDialog.vue' const { pageSize } = useSiteSettings() @@ -214,36 +208,49 @@ onMounted(loadLogs)
- - - - IP 详情 - - {{ selectedIp }} - - -
- -
-
-
国家
-
{{ ipGeoInfo.country }} ({{ ipGeoInfo.country_code }})
-
运营商
-
{{ ipGeoInfo.isp || '-' }}
-
组织
-
{{ ipGeoInfo.organization || '-' }}
-
ASN
-
{{ ipGeoInfo.asn }} - {{ ipGeoInfo.asn_organization || '-' }} + + + +
+ +
+
+
+
+

国家/地区

+

{{ ipGeoInfo.country }} ({{ ipGeoInfo.country_code }})

+
+
+

时区

+

{{ ipGeoInfo.timezone || '-' }}

-
时区
-
{{ ipGeoInfo.timezone || '-' }}
-
坐标
-
{{ ipGeoInfo.latitude }}, {{ ipGeoInfo.longitude }}
-
- 无法获取 IP 信息 + +
+
+ 运营商 + {{ ipGeoInfo.isp || '-' }} +
+
+ 组织 + {{ ipGeoInfo.organization || '-' }} +
+
+ ASN + {{ ipGeoInfo.asn }} - {{ ipGeoInfo.asn_organization || '-' }} +
- -
+ +
+ 地理坐标 + {{ ipGeoInfo.latitude }}, {{ ipGeoInfo.longitude }} +
+
+
+ 无法获取 IP 信息,请稍后再试 +
+
diff --git a/web/src/views/loginlogs/tabs/SystemEventTab.vue b/web/src/views/loginlogs/tabs/SystemEventTab.vue index 6a632be..b05025b 100644 --- a/web/src/views/loginlogs/tabs/SystemEventTab.vue +++ b/web/src/views/loginlogs/tabs/SystemEventTab.vue @@ -12,27 +12,12 @@ import { SelectValue, } from '@/components/ui/select' import Pagination from '@/components/Pagination.vue' -import { - Dialog, - DialogContent, - DialogHeader, - DialogTitle, -} from '@/components/ui/dialog' +import BaihuDialog from '@/components/ui/BaihuDialog.vue' import { toast } from 'vue-sonner' import { format } from 'date-fns' import { - RefreshCw, Trash2, Search, Info, AlertTriangle, AlertCircle + RefreshCw, Search, Info, AlertTriangle, AlertCircle } from 'lucide-vue-next' -import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, -} from '@/components/ui/alert-dialog' import { useSiteSettings } from '@/composables/useSiteSettings' const { pageSize } = useSiteSettings() @@ -193,27 +178,15 @@ function onDialogClose(open: boolean) {
- - - - - 确认清空所有系统事件? - - 此操作将永久清空当前分类下的所有系统事件记录,操作后无法恢复。确认要继续吗? - - - - 取消 - - 确认清空 - - - - + +
+ 此操作将永久清空当前分类下的所有系统事件记录,操作后无法恢复。确认要继续吗? +
+ +
@@ -302,65 +275,40 @@ function onDialogClose(open: boolean) {
- - - -
- 事件详情 - -
- - {{ selectedLog?.level || 'INFO' }} -
-
-
-
+ + -
-
-
- 标题 - {{ detailDialogProps.title }} -
-
- 发生时间 - {{ selectedLog ? - formatDate(selectedLog.created_at) : '-' }} +
+
+
+

事件内容

+
+ {{ detailDialogProps.content }}
+
无内容
-
-
- 内容详情 +
+

错误堆栈/信息

+
+ {{ detailDialogProps.error }}
-
-
- {{ detailDialogProps.content }} -
-
无内容
-
- -
- -
+
+ diff --git a/web/src/views/notify/Notify.vue b/web/src/views/notify/Notify.vue index cd22eac..4611949 100644 --- a/web/src/views/notify/Notify.vue +++ b/web/src/views/notify/Notify.vue @@ -1,16 +1,8 @@