1
1
<template >
2
2
<div
3
- class =" fixed inset-0 bg-black/40 flex items-center justify-center z-[999]"
3
+ class =" fixed inset-0 bg-black/40 dark:bg-black/60 flex items-center justify-center z-[999]"
4
4
@click.self =" closeModal"
5
5
>
6
- <div class =" bg-white rounded-xl shadow-dialog w-full max-w-md mx-4 transform transition-all duration-300 ease-in-out" >
6
+ <div class =" bg-white dark:bg-gray-800 rounded-xl shadow-dialog dark:shadow-lg w-full max-w-md mx-4 transform transition-all duration-300 ease-in-out border border-transparent dark:border-gray-700 " >
7
7
<!-- 弹窗头部 -->
8
- <div class =" p-5 border-b border-gray-100 flex justify-between items-center" >
9
- <h3 class =" text-lg font-semibold text-gray-800" >{{ displayData.title }}</h3 >
10
- <div class =" text-gray-400 hover:text-gray-600 transition-colors cursor-pointer" @click =" closeModal" >
8
+ <div class =" p-5 border-b border-gray-100 dark:border-gray-700 flex justify-between items-center" >
9
+ <h3 class =" text-lg font-semibold text-gray-800 dark:text-gray-100 " >{{ displayData.title }}</h3 >
10
+ <div class =" text-gray-400 dark:text-gray-300 hover:text-gray-600 dark:hover:text-gray-200 transition-colors cursor-pointer" @click =" closeModal" >
11
11
<close class =" h-6 w-6" />
12
12
</div >
13
13
</div >
16
16
<div class =" p-6 pt-0" >
17
17
<!-- 错误类型 -->
18
18
<div class =" mb-4" >
19
- <div class =" text-xs font-medium text-gray-500 uppercase mb-2" >错误类型</div >
19
+ <div class =" text-xs font-medium text-gray-500 dark:text-gray-400 uppercase mb-2" >错误类型</div >
20
20
<div class =" flex items-center gap-2" >
21
- <lock v-if =" displayData.icon === 'lock'" class =" text-red-500 w-5 h-5" />
22
- <warn v-if =" displayData.icon === 'warn'" class =" text-red-500 w-5 h-5" />
23
- <server v-if =" displayData.icon === 'server'" class =" text-red-500 w-5 h-5" />
24
- <span class =" font-medium text-gray-800" >{{ displayData.type }}</span >
21
+ <lock v-if =" displayData.icon === 'lock'" : class =" [' w-5 h-5', displayData.color] " />
22
+ <warn v-if =" displayData.icon === 'warn'" : class =" [' w-5 h-5', displayData.color] " />
23
+ <server v-if =" displayData.icon === 'server'" : class =" [' w-5 h-5', displayData.color] " />
24
+ <span class =" font-medium text-gray-800 dark:text-gray-100 " >{{ displayData.type }}</span >
25
25
</div >
26
26
</div >
27
27
28
28
<!-- 具体错误 -->
29
29
<div class =" mb-6" >
30
- <div class =" text-xs font-medium text-gray-500 uppercase mb-2" >具体错误</div >
31
- <div class =" bg-gray-100 rounded-lg p-3 text-sm text-gray-700 leading-relaxed" >
30
+ <div class =" text-xs font-medium text-gray-500 dark:text-gray-400 uppercase mb-2" >具体错误</div >
31
+ <div class =" bg-gray-100 dark:bg-gray-900/40 rounded-lg p-3 text-sm text-gray-700 dark:text-gray-200 leading-relaxed" >
32
32
{{ displayData.message }}
33
33
</div >
34
34
</div >
35
35
36
36
<!-- 提示信息 -->
37
37
<div v-if =" displayData.tips" >
38
- <div class =" text-xs font-medium text-gray-500 uppercase mb-2" >提示</div >
38
+ <div class =" text-xs font-medium text-gray-500 dark:text-gray-400 uppercase mb-2" >提示</div >
39
39
<div class =" flex items-center gap-2" >
40
- <idea class =" text-blue-500 w-5 h-5" />
41
- <p class =" text-sm text-gray-600" >{{ displayData.tips }}</p >
40
+ <idea class =" text-blue-500 dark:text-blue-400 w-5 h-5" />
41
+ <p class =" text-sm text-gray-600 dark:text-gray-300 " >{{ displayData.tips }}</p >
42
42
</div >
43
43
</div >
44
44
</div >
45
45
46
46
<!-- 弹窗底部 -->
47
- <div class =" py-2 px-4 border-t border-gray-100 flex justify-end" >
48
- <div class =" px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors font-medium text-sm shadow-sm cursor-pointer" @click =" handleConfirm" >
47
+ <div class =" py-2 px-4 border-t border-gray-100 dark:border-gray-700 flex justify-end" >
48
+ <div class =" px-4 py-2 bg-blue-600 dark:bg-blue-500 text-white dark:text-gray-100 rounded-lg hover:bg-blue-700 dark:hover:bg-blue-600 transition-colors font-medium text-sm shadow-sm cursor-pointer" @click =" handleConfirm" >
49
49
确定
50
50
</div >
51
51
</div >
@@ -70,28 +70,28 @@ const presetErrors = {
70
70
title: ' 检测到接口错误' ,
71
71
type: ' 服务器发生内部错误' ,
72
72
icon: ' server' ,
73
- color: ' text-red-500' ,
73
+ color: ' text-red-500 dark:text-red-400 ' ,
74
74
tips: ' 此类错误内容常见于后台panic,请先查看后台日志,如果影响您正常使用可强制登出清理缓存'
75
75
},
76
76
404 : {
77
77
title: ' 资源未找到' ,
78
78
type: ' Not Found' ,
79
79
icon: ' warn' ,
80
- color: ' text-orange-500' ,
80
+ color: ' text-orange-500 dark:text-orange-400 ' ,
81
81
tips: ' 此类错误多为接口未注册(或未重启)或者请求路径(方法)与api路径(方法)不符--如果为自动化代码请检查是否存在空格'
82
82
},
83
83
401 : {
84
84
title: ' 身份认证失败' ,
85
85
type: ' 身份令牌无效' ,
86
86
icon: ' lock' ,
87
- color: ' text-purple-500' ,
87
+ color: ' text-purple-500 dark:text-purple-400 ' ,
88
88
tips: ' 您的身份认证已过期或无效,请重新登录。'
89
89
},
90
90
' network' : {
91
91
title: ' 网络错误' ,
92
92
type: ' Network Error' ,
93
93
icon: ' fa-wifi-slash' ,
94
- color: ' text-gray-500' ,
94
+ color: ' text-gray-500 dark:text-gray-400 ' ,
95
95
tips: ' 无法连接到服务器,请检查您的网络连接。'
96
96
}
97
97
};
@@ -109,7 +109,7 @@ const displayData = computed(() => {
109
109
title: ' 未知错误' ,
110
110
type: ' 检测到请求错误' ,
111
111
icon: ' fa-question-circle' ,
112
- color: ' text-gray-400' ,
112
+ color: ' text-gray-400 dark:text-gray-300 ' ,
113
113
message: props .errorData .message || ' 发生了一个未知错误。' ,
114
114
tips: ' 请检查控制台获取更多信息。'
115
115
};
0 commit comments