fdb2 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/.dockerignore +21 -21
  2. package/.editorconfig +11 -11
  3. package/.eslintrc.cjs +14 -14
  4. package/.eslintrc.json +7 -7
  5. package/.prettierrc.js +3 -3
  6. package/.tpl.env +21 -21
  7. package/.vscodeignore +45 -45
  8. package/README.md +312 -312
  9. package/bin/build.sh +28 -28
  10. package/bin/deploy.sh +8 -8
  11. package/bin/dev.sh +10 -10
  12. package/bin/docker/dev-docker-compose.yml +43 -43
  13. package/bin/docker/dev.Dockerfile +24 -24
  14. package/bin/docker/prod-docker-compose.yml +17 -17
  15. package/bin/docker/prod.Dockerfile +29 -29
  16. package/bin/fdb2.js +220 -220
  17. package/dist/package.json +29 -29
  18. package/dist/pnpm-lock.yaml +1042 -354
  19. package/dist/public/explorer.css +1464 -1437
  20. package/dist/public/explorer.js +759 -223
  21. package/dist/public/index.css +1026 -1026
  22. package/dist/public/index.js +15 -9
  23. package/dist/public/layout.css +221 -221
  24. package/dist/public/layout.js +1 -1
  25. package/dist/public/vue.js +8 -2
  26. package/dist/scripts/preinstall.js +112 -112
  27. package/dist/server/index.d.ts.map +1 -1
  28. package/dist/server/index.js +8 -0
  29. package/dist/server/index.js.map +1 -1
  30. package/dist/server/index.ts +680 -671
  31. package/dist/server/model/connection.entity.ts +65 -65
  32. package/dist/server/model/database.entity.ts +245 -245
  33. package/dist/server/service/connection.service.d.ts +6 -1
  34. package/dist/server/service/connection.service.d.ts.map +1 -1
  35. package/dist/server/service/connection.service.js +15 -0
  36. package/dist/server/service/connection.service.js.map +1 -1
  37. package/dist/server/service/connection.service.ts +356 -341
  38. package/dist/server/service/database/base.service.d.ts +27 -0
  39. package/dist/server/service/database/base.service.d.ts.map +1 -1
  40. package/dist/server/service/database/base.service.js +17 -0
  41. package/dist/server/service/database/base.service.js.map +1 -1
  42. package/dist/server/service/database/base.service.ts +406 -367
  43. package/dist/server/service/database/cockroachdb.service.d.ts +16 -0
  44. package/dist/server/service/database/cockroachdb.service.d.ts.map +1 -1
  45. package/dist/server/service/database/cockroachdb.service.js +220 -154
  46. package/dist/server/service/database/cockroachdb.service.js.map +1 -1
  47. package/dist/server/service/database/cockroachdb.service.ts +871 -782
  48. package/dist/server/service/database/database.service.d.ts +4 -0
  49. package/dist/server/service/database/database.service.d.ts.map +1 -1
  50. package/dist/server/service/database/database.service.js +123 -0
  51. package/dist/server/service/database/database.service.js.map +1 -1
  52. package/dist/server/service/database/database.service.ts +775 -638
  53. package/dist/server/service/database/index.ts +6 -6
  54. package/dist/server/service/database/mongodb.service.d.ts +16 -0
  55. package/dist/server/service/database/mongodb.service.d.ts.map +1 -1
  56. package/dist/server/service/database/mongodb.service.js +35 -0
  57. package/dist/server/service/database/mongodb.service.js.map +1 -1
  58. package/dist/server/service/database/mongodb.service.ts +39 -1
  59. package/dist/server/service/database/mssql.service.d.ts +16 -0
  60. package/dist/server/service/database/mssql.service.d.ts.map +1 -1
  61. package/dist/server/service/database/mssql.service.js +168 -96
  62. package/dist/server/service/database/mssql.service.js.map +1 -1
  63. package/dist/server/service/database/mssql.service.ts +931 -840
  64. package/dist/server/service/database/mysql.service.d.ts +16 -0
  65. package/dist/server/service/database/mysql.service.d.ts.map +1 -1
  66. package/dist/server/service/database/mysql.service.js +189 -80
  67. package/dist/server/service/database/mysql.service.js.map +1 -1
  68. package/dist/server/service/database/mysql.service.ts +1025 -890
  69. package/dist/server/service/database/oracle.service.d.ts +16 -0
  70. package/dist/server/service/database/oracle.service.d.ts.map +1 -1
  71. package/dist/server/service/database/oracle.service.js +182 -120
  72. package/dist/server/service/database/oracle.service.js.map +1 -1
  73. package/dist/server/service/database/oracle.service.ts +1035 -959
  74. package/dist/server/service/database/postgres.service.d.ts +16 -0
  75. package/dist/server/service/database/postgres.service.d.ts.map +1 -1
  76. package/dist/server/service/database/postgres.service.js +154 -88
  77. package/dist/server/service/database/postgres.service.js.map +1 -1
  78. package/dist/server/service/database/postgres.service.ts +960 -871
  79. package/dist/server/service/database/sap.service.d.ts +16 -0
  80. package/dist/server/service/database/sap.service.d.ts.map +1 -1
  81. package/dist/server/service/database/sap.service.js +66 -0
  82. package/dist/server/service/database/sap.service.js.map +1 -1
  83. package/dist/server/service/database/sap.service.ts +89 -0
  84. package/dist/server/service/database/sqlite.service.d.ts +16 -0
  85. package/dist/server/service/database/sqlite.service.d.ts.map +1 -1
  86. package/dist/server/service/database/sqlite.service.js +77 -18
  87. package/dist/server/service/database/sqlite.service.js.map +1 -1
  88. package/dist/server/service/database/sqlite.service.ts +787 -708
  89. package/dist/server/service/session.service.ts +158 -158
  90. package/dist/view/index.html +38 -38
  91. package/env.d.ts +1 -1
  92. package/package.json +1 -1
  93. package/packages/vscode/.vscodeignore +44 -44
  94. package/packages/vscode/README.md +62 -62
  95. package/packages/vscode/out/database-services/cockroachdb.service.js +154 -154
  96. package/packages/vscode/out/database-services/mssql.service.js +96 -96
  97. package/packages/vscode/out/database-services/mysql.service.js +80 -80
  98. package/packages/vscode/out/database-services/oracle.service.js +120 -120
  99. package/packages/vscode/out/database-services/postgres.service.js +88 -88
  100. package/packages/vscode/out/database-services/sqlite.service.js +18 -18
  101. package/packages/vscode/out/provider/WebViewProvider.js +32 -32
  102. package/packages/vscode/package.json +142 -142
  103. package/packages/vscode/resources/icon.svg +5 -5
  104. package/packages/vscode/resources/webview/connection.css +41 -41
  105. package/packages/vscode/resources/webview/database.css +163 -163
  106. package/packages/vscode/resources/webview/index.html +9 -9
  107. package/packages/vscode/resources/webview/modules/header.tpl +13 -13
  108. package/packages/vscode/resources/webview/modules/initial_state.tpl +54 -54
  109. package/packages/vscode/resources/webview/query.css +104 -104
  110. package/packages/vscode/src/database-services/base.service.ts +362 -362
  111. package/packages/vscode/src/database-services/cockroachdb.service.ts +659 -659
  112. package/packages/vscode/src/database-services/connection.service.ts +340 -340
  113. package/packages/vscode/src/database-services/database.service.ts +629 -629
  114. package/packages/vscode/src/database-services/index.ts +6 -6
  115. package/packages/vscode/src/database-services/model/connection.entity.ts +65 -65
  116. package/packages/vscode/src/database-services/model/database.entity.ts +245 -245
  117. package/packages/vscode/src/database-services/mssql.service.ts +722 -722
  118. package/packages/vscode/src/database-services/mysql.service.ts +760 -760
  119. package/packages/vscode/src/database-services/oracle.service.ts +831 -831
  120. package/packages/vscode/src/database-services/postgres.service.ts +740 -740
  121. package/packages/vscode/src/database-services/sqlite.service.ts +558 -558
  122. package/packages/vscode/src/extension.ts +76 -76
  123. package/packages/vscode/src/provider/DatabaseTreeProvider.ts +167 -167
  124. package/packages/vscode/src/provider/WebViewProvider.ts +277 -277
  125. package/packages/vscode/src/service/DatabaseServiceBridge.ts +414 -414
  126. package/packages/vscode/src/typings/connection.ts +90 -90
  127. package/packages/vscode/tsconfig.json +21 -21
  128. package/public/index.html +9 -9
  129. package/public/modules/header.tpl +13 -13
  130. package/public/modules/initial_state.tpl +54 -54
  131. package/scripts/preinstall.js +112 -112
  132. package/server/index.ts +680 -671
  133. package/server/model/connection.entity.ts +65 -65
  134. package/server/model/database.entity.ts +245 -245
  135. package/server/service/connection.service.ts +356 -341
  136. package/server/service/database/base.service.ts +406 -367
  137. package/server/service/database/cockroachdb.service.ts +871 -782
  138. package/server/service/database/database.service.ts +775 -638
  139. package/server/service/database/index.ts +6 -6
  140. package/server/service/database/mongodb.service.ts +39 -1
  141. package/server/service/database/mssql.service.ts +931 -840
  142. package/server/service/database/mysql.service.ts +1025 -890
  143. package/server/service/database/oracle.service.ts +1035 -959
  144. package/server/service/database/postgres.service.ts +960 -871
  145. package/server/service/database/sap.service.ts +89 -0
  146. package/server/service/database/sqlite.service.ts +787 -708
  147. package/server/service/session.service.ts +158 -158
  148. package/server/tsconfig.json +20 -20
  149. package/server.js +149 -149
  150. package/server.pid +1 -0
  151. package/src/adapter/ajax.ts +135 -135
  152. package/src/assets/base.css +1 -1
  153. package/src/assets/database.css +949 -949
  154. package/src/assets/images/svg/illustrations/illustration-1.svg +1 -1
  155. package/src/assets/images/svg/illustrations/illustration-2.svg +2 -2
  156. package/src/assets/images/svg/illustrations/illustration-3.svg +50 -50
  157. package/src/assets/images/svg/illustrations/illustration-4.svg +1 -1
  158. package/src/assets/images/svg/illustrations/illustration-5.svg +73 -73
  159. package/src/assets/images/svg/illustrations/illustration-6.svg +89 -89
  160. package/src/assets/images/svg/illustrations/illustration-7.svg +39 -39
  161. package/src/assets/images/svg/separators/curve-2.svg +3 -3
  162. package/src/assets/images/svg/separators/curve.svg +3 -3
  163. package/src/assets/images/svg/separators/line.svg +3 -3
  164. package/src/assets/logo.svg +73 -73
  165. package/src/assets/main.css +1 -1
  166. package/src/base/config.ts +20 -20
  167. package/src/base/detect.ts +134 -134
  168. package/src/base/entity.ts +92 -92
  169. package/src/base/eventBus.ts +36 -36
  170. package/src/components/connection-editor/index.vue +588 -588
  171. package/src/components/dataGrid/index.vue +104 -104
  172. package/src/components/dataGrid/pagination.vue +105 -105
  173. package/src/components/loading/index.vue +42 -42
  174. package/src/components/modal/index.ts +180 -180
  175. package/src/components/modal/index.vue +560 -560
  176. package/src/components/toast/index.ts +43 -43
  177. package/src/components/toast/toast.vue +57 -57
  178. package/src/components/user/name.vue +103 -103
  179. package/src/components/user/selector.vue +416 -416
  180. package/src/domain/SysConfig.ts +74 -74
  181. package/src/platform/App.vue +7 -7
  182. package/src/platform/database/components/connection-detail.vue +1153 -1154
  183. package/src/platform/database/components/data-editor.vue +477 -477
  184. package/src/platform/database/components/database-detail.vue +1173 -1172
  185. package/src/platform/database/components/database-monitor.vue +1085 -1085
  186. package/src/platform/database/components/db-tools.vue +1264 -816
  187. package/src/platform/database/components/query-history.vue +1348 -1348
  188. package/src/platform/database/components/sql-executor.vue +737 -737
  189. package/src/platform/database/components/sql-query-editor.vue +1045 -1045
  190. package/src/platform/database/components/table-detail.vue +1375 -1376
  191. package/src/platform/database/components/table-editor.vue +916 -916
  192. package/src/platform/database/explorer.vue +1839 -1839
  193. package/src/platform/database/index.vue +1192 -1192
  194. package/src/platform/database/layout.vue +366 -366
  195. package/src/platform/database/router.ts +36 -36
  196. package/src/platform/database/styles/common.scss +601 -601
  197. package/src/platform/database/types/common.ts +444 -444
  198. package/src/platform/database/utils/export.ts +231 -231
  199. package/src/platform/database/utils/helpers.ts +436 -436
  200. package/src/platform/index.ts +32 -32
  201. package/src/platform/router.ts +40 -40
  202. package/src/platform/vscode/bridge.ts +121 -121
  203. package/src/platform/vscode/components/ConnectionPanel.vue +272 -272
  204. package/src/platform/vscode/components/DatabasePanel.vue +532 -532
  205. package/src/platform/vscode/components/QueryPanel.vue +371 -371
  206. package/src/platform/vscode/entry/connection.ts +13 -13
  207. package/src/platform/vscode/entry/database.ts +13 -13
  208. package/src/platform/vscode/entry/query.ts +13 -13
  209. package/src/platform/vscode/index.ts +5 -5
  210. package/src/service/base.ts +133 -127
  211. package/src/service/database.ts +505 -495
  212. package/src/service/login.ts +120 -120
  213. package/src/shims-vue.d.ts +6 -6
  214. package/src/stores/connection.ts +266 -266
  215. package/src/stores/session.ts +87 -87
  216. package/src/typings/database-types.ts +412 -412
  217. package/src/typings/database.ts +363 -363
  218. package/src/typings/global.d.ts +58 -58
  219. package/src/typings/pinia.d.ts +7 -7
  220. package/src/utils/clipboard.ts +29 -29
  221. package/src/utils/database-types.ts +242 -242
  222. package/src/utils/modal.ts +123 -123
  223. package/src/utils/request.ts +55 -55
  224. package/src/utils/sleep.ts +3 -3
  225. package/src/utils/toast.ts +73 -73
  226. package/src/utils/util.ts +171 -171
  227. package/src/utils/xlsx.ts +228 -228
  228. package/tsconfig.json +33 -33
  229. package/view/index.html +9 -9
  230. package/view/modules/header.tpl +13 -13
  231. package/view/modules/initial_state.tpl +19 -19
  232. package/vite.config.ts +424 -424
  233. package/vite.config.vscode.ts +47 -47
  234. package/fdb2.server.pid +0 -1
  235. package/server/backups/db_ai_breakout_2026-03-11T08-38-48-677Z.sql +0 -0
@@ -1,2270 +1,2297 @@
1
-
1
+
2
2
  /* 继承原有的样式,这里可以添加组件特定的样式 */
3
- .connection-form-modern[data-v-144c6980] {
3
+ .connection-form-modern[data-v-60ee1360] {
4
4
  padding: 0;
5
5
  }
6
- .form-section[data-v-144c6980] {
6
+ .form-section[data-v-60ee1360] {
7
7
  margin-bottom: 2rem;
8
8
  }
9
- .section-header[data-v-144c6980] {
10
- display: flex;
11
- align-items: center;
12
- margin-bottom: 1.5rem;
13
- padding-bottom: 0.75rem;
9
+ .section-header[data-v-60ee1360] {
10
+ display: flex;
11
+ align-items: center;
12
+ margin-bottom: 1.5rem;
13
+ padding-bottom: 0.75rem;
14
14
  border-bottom: 2px solid #f0f0f0;
15
15
  }
16
- .section-icon[data-v-144c6980] {
17
- width: 40px;
18
- height: 40px;
19
- border-radius: 8px;
20
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
21
- display: flex;
22
- align-items: center;
23
- justify-content: center;
24
- color: white;
16
+ .section-icon[data-v-60ee1360] {
17
+ width: 40px;
18
+ height: 40px;
19
+ border-radius: 8px;
20
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ color: white;
25
25
  margin-right: 1rem;
26
26
  }
27
- .section-title[data-v-144c6980] {
28
- font-size: 1.1rem;
29
- font-weight: 600;
30
- margin: 0;
27
+ .section-title[data-v-60ee1360] {
28
+ font-size: 1.1rem;
29
+ font-weight: 600;
30
+ margin: 0;
31
31
  color: #333;
32
32
  }
33
- .section-content[data-v-144c6980] {
33
+ .section-content[data-v-60ee1360] {
34
34
  padding-left: 56px;
35
35
  }
36
- .form-grid[data-v-144c6980] {
37
- display: grid;
38
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
36
+ .form-grid[data-v-60ee1360] {
37
+ display: grid;
38
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
39
39
  gap: 1.5rem;
40
40
  }
41
- .form-group-modern[data-v-144c6980] {
41
+ .form-group-modern[data-v-60ee1360] {
42
42
  margin-bottom: 1rem;
43
43
  }
44
- .form-label-modern[data-v-144c6980] {
45
- display: flex;
46
- align-items: center;
47
- font-weight: 500;
48
- color: #555;
49
- margin-bottom: 0.5rem;
44
+ .form-label-modern[data-v-60ee1360] {
45
+ display: flex;
46
+ align-items: center;
47
+ font-weight: 500;
48
+ color: #555;
49
+ margin-bottom: 0.5rem;
50
50
  font-size: 0.9rem;
51
51
  }
52
- .form-control-modern[data-v-144c6980],
53
- .form-select-modern[data-v-144c6980] {
54
- width: 100%;
55
- padding: 0.75rem;
56
- border: 2px solid #e9ecef;
57
- border-radius: 8px;
58
- font-size: 0.95rem;
52
+ .form-control-modern[data-v-60ee1360],
53
+ .form-select-modern[data-v-60ee1360] {
54
+ width: 100%;
55
+ padding: 0.75rem;
56
+ border: 2px solid #e9ecef;
57
+ border-radius: 8px;
58
+ font-size: 0.95rem;
59
59
  transition: all 0.3s ease;
60
60
  }
61
- .form-control-modern[data-v-144c6980]:focus,
62
- .form-select-modern[data-v-144c6980]:focus {
63
- outline: none;
64
- border-color: #667eea;
61
+ .form-control-modern[data-v-60ee1360]:focus,
62
+ .form-select-modern[data-v-60ee1360]:focus {
63
+ outline: none;
64
+ border-color: #667eea;
65
65
  box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
66
66
  }
67
- .form-check-modern[data-v-144c6980] {
68
- display: flex;
69
- align-items: flex-start;
67
+ .form-check-modern[data-v-60ee1360] {
68
+ display: flex;
69
+ align-items: flex-start;
70
70
  padding: 0;
71
71
  }
72
- .form-check-input-modern[data-v-144c6980] {
73
- margin-right: 0.75rem;
72
+ .form-check-input-modern[data-v-60ee1360] {
73
+ margin-right: 0.75rem;
74
74
  margin-top: 0.25rem;
75
75
  }
76
- .form-check-label-modern[data-v-144c6980] {
77
- display: flex;
78
- flex-direction: column;
76
+ .form-check-label-modern[data-v-60ee1360] {
77
+ display: flex;
78
+ flex-direction: column;
79
79
  cursor: pointer;
80
80
  }
81
- .check-text[data-v-144c6980] {
82
- font-weight: 500;
83
- color: #333;
81
+ .check-text[data-v-60ee1360] {
82
+ font-weight: 500;
83
+ color: #333;
84
84
  margin-bottom: 0.25rem;
85
85
  }
86
- .check-description[data-v-144c6980] {
87
- font-size: 0.85rem;
86
+ .check-description[data-v-60ee1360] {
87
+ font-size: 0.85rem;
88
88
  color: #666;
89
89
  }
90
- .required[data-v-144c6980] {
91
- color: #dc3545;
90
+ .required[data-v-60ee1360] {
91
+ color: #dc3545;
92
92
  margin-left: 0.25rem;
93
93
  }
94
- .error-content[data-v-144c6980] {
95
- display: flex;
96
- align-items: center;
97
- padding: 1.5rem;
94
+ .error-content[data-v-60ee1360] {
95
+ display: flex;
96
+ align-items: center;
97
+ padding: 1.5rem;
98
98
  gap: 1rem;
99
99
  }
100
- .error-icon[data-v-144c6980] {
101
- width: 48px;
102
- height: 48px;
103
- border-radius: 50%;
104
- background: linear-gradient(135deg, #dc3545 0%, #ff6b6b 100%);
105
- display: flex;
106
- align-items: center;
107
- justify-content: center;
108
- color: white;
109
- font-size: 1.5rem;
100
+ .error-icon[data-v-60ee1360] {
101
+ width: 48px;
102
+ height: 48px;
103
+ border-radius: 50%;
104
+ background: linear-gradient(135deg, #dc3545 0%, #ff6b6b 100%);
105
+ display: flex;
106
+ align-items: center;
107
+ justify-content: center;
108
+ color: white;
109
+ font-size: 1.5rem;
110
110
  flex-shrink: 0;
111
111
  }
112
- .error-message[data-v-144c6980] {
113
- flex: 1;
114
- color: #333;
115
- font-size: 0.95rem;
112
+ .error-message[data-v-60ee1360] {
113
+ flex: 1;
114
+ color: #333;
115
+ font-size: 0.95rem;
116
116
  line-height: 1.6;
117
- }
117
+ }
118
118
 
119
- .sql-executor[data-v-ac4aced1] {
120
- width: 100%;
121
- flex: 1;
122
- display: flex;
123
- flex-direction: column;
119
+ .sql-executor[data-v-82959a5b] {
120
+ width: 100%;
121
+ flex: 1;
122
+ display: flex;
123
+ flex-direction: column;
124
124
  gap: 10px;
125
125
  }
126
- .sql-toolbar[data-v-ac4aced1] {
127
- display: flex;
128
- justify-content: space-between;
129
- align-items: center;
130
- margin-bottom: 10px;
131
- padding: 10px;
132
- background-color: #f8f9fa;
126
+ .sql-toolbar[data-v-82959a5b] {
127
+ display: flex;
128
+ justify-content: space-between;
129
+ align-items: center;
130
+ margin-bottom: 10px;
131
+ padding: 10px;
132
+ background-color: #f8f9fa;
133
133
  border-radius: 4px;
134
134
  }
135
- .toolbar-left[data-v-ac4aced1],
136
- .toolbar-right[data-v-ac4aced1] {
137
- display: flex;
135
+ .toolbar-left[data-v-82959a5b],
136
+ .toolbar-right[data-v-82959a5b] {
137
+ display: flex;
138
138
  gap: 8px;
139
139
  }
140
- .sql-container[data-v-ac4aced1] {
141
- position: relative;
142
- border: 1px solid #dee2e6;
143
- border-radius: 4px;
144
- overflow: hidden;
145
- flex: 1;
146
- display: flex;
140
+ .sql-container[data-v-82959a5b] {
141
+ position: relative;
142
+ border: 1px solid #dee2e6;
143
+ border-radius: 4px;
144
+ overflow: hidden;
145
+ flex: 1;
146
+ display: flex;
147
147
  flex-direction: column;
148
148
  }
149
- .sql-editor[data-v-ac4aced1] {
150
- position: relative;
151
- overflow: auto;
152
- flex: 0 1 300px;
149
+ .sql-editor[data-v-82959a5b] {
150
+ position: relative;
151
+ overflow: auto;
152
+ flex: 0 1 300px;
153
153
  min-height: 200px;
154
154
  }
155
- .sql-result[data-v-ac4aced1] {
156
- position: relative;
157
- overflow: auto;
158
- border-top: 1px solid #dee2e6;
155
+ .sql-result[data-v-82959a5b] {
156
+ position: relative;
157
+ overflow: auto;
158
+ border-top: 1px solid #dee2e6;
159
159
  flex: 1;
160
160
  }
161
- .codemirror-editor[data-v-ac4aced1] {
162
- height: 100%;
161
+ .codemirror-editor[data-v-82959a5b] {
162
+ height: 100%;
163
163
  width: 100%;
164
164
  }
165
- .resizer[data-v-ac4aced1] {
166
- height: 8px;
167
- background-color: #e9ecef;
168
- cursor: ns-resize;
169
- display: flex;
170
- align-items: center;
165
+ .resizer[data-v-82959a5b] {
166
+ height: 8px;
167
+ background-color: #e9ecef;
168
+ cursor: ns-resize;
169
+ display: flex;
170
+ align-items: center;
171
171
  justify-content: center;
172
172
  }
173
- .resizer[data-v-ac4aced1]:hover {
173
+ .resizer[data-v-82959a5b]:hover {
174
174
  background-color: #dee2e6;
175
175
  }
176
- .resizer[data-v-ac4aced1]::before {
177
- content: '';
178
- width: 40px;
179
- height: 2px;
180
- background-color: #adb5bd;
176
+ .resizer[data-v-82959a5b]::before {
177
+ content: '';
178
+ width: 40px;
179
+ height: 2px;
180
+ background-color: #adb5bd;
181
181
  border-radius: 1px;
182
182
  }
183
- .resizer.resizing[data-v-ac4aced1] {
183
+ .resizer.resizing[data-v-82959a5b] {
184
184
  background-color: #dee2e6;
185
185
  }
186
- .resizer.resizing[data-v-ac4aced1]::before {
186
+ .resizer.resizing[data-v-82959a5b]::before {
187
187
  background-color: #6c757d;
188
188
  }
189
- .sql-result[data-v-ac4aced1] {
190
- position: relative;
191
- overflow: auto;
189
+ .sql-result[data-v-82959a5b] {
190
+ position: relative;
191
+ overflow: auto;
192
192
  border-top: 1px solid #dee2e6;
193
193
  }
194
- .result-content[data-v-ac4aced1] {
195
- height: 100%;
196
- display: flex;
194
+ .result-content[data-v-82959a5b] {
195
+ height: 100%;
196
+ display: flex;
197
197
  flex-direction: column;
198
198
  }
199
- .result-header[data-v-ac4aced1] {
200
- display: flex;
201
- justify-content: space-between;
202
- align-items: center;
203
- padding: 12px;
204
- background-color: #f8f9fa;
199
+ .result-header[data-v-82959a5b] {
200
+ display: flex;
201
+ justify-content: space-between;
202
+ align-items: center;
203
+ padding: 12px;
204
+ background-color: #f8f9fa;
205
205
  border-bottom: 1px solid #dee2e6;
206
206
  }
207
- .result-title[data-v-ac4aced1] {
208
- margin: 0;
209
- font-size: 14px;
210
- font-weight: 600;
211
- display: flex;
212
- align-items: center;
207
+ .result-title[data-v-82959a5b] {
208
+ margin: 0;
209
+ font-size: 14px;
210
+ font-weight: 600;
211
+ display: flex;
212
+ align-items: center;
213
213
  gap: 8px;
214
214
  }
215
- .sql-loading[data-v-ac4aced1] {
216
- display: flex;
217
- align-items: center;
215
+ .sql-loading[data-v-82959a5b] {
216
+ display: flex;
217
+ align-items: center;
218
218
  gap: 8px;
219
219
  }
220
- .result-stats[data-v-ac4aced1] {
221
- display: flex;
220
+ .result-stats[data-v-82959a5b] {
221
+ display: flex;
222
222
  gap: 8px;
223
223
  }
224
- .result-info[data-v-ac4aced1] {
225
- display: flex;
226
- justify-content: space-between;
227
- align-items: center;
228
- padding: 10px 12px;
229
- background-color: #f8f9fa;
224
+ .result-info[data-v-82959a5b] {
225
+ display: flex;
226
+ justify-content: space-between;
227
+ align-items: center;
228
+ padding: 10px 12px;
229
+ background-color: #f8f9fa;
230
230
  border-bottom: 1px solid #dee2e6;
231
231
  }
232
- .result-actions[data-v-ac4aced1] {
233
- display: flex;
232
+ .result-actions[data-v-82959a5b] {
233
+ display: flex;
234
234
  gap: 8px;
235
235
  }
236
- .result-table-container[data-v-ac4aced1] {
237
- flex: 1;
236
+ .result-table-container[data-v-82959a5b] {
237
+ flex: 1;
238
238
  overflow: auto;
239
- }
240
-
239
+ }
240
+
241
241
  /* 对象结果样式 */
242
- .result-object[data-v-ac4aced1] {
243
- display: flex;
244
- flex-direction: column;
242
+ .result-object[data-v-82959a5b] {
243
+ display: flex;
244
+ flex-direction: column;
245
245
  height: 100%;
246
246
  }
247
- .object-container[data-v-ac4aced1] {
248
- flex: 1;
247
+ .object-container[data-v-82959a5b] {
248
+ flex: 1;
249
249
  overflow: auto;
250
250
  }
251
- .object-container table[data-v-ac4aced1] {
251
+ .object-container table[data-v-82959a5b] {
252
252
  width: 100%;
253
253
  }
254
- .object-container th[data-v-ac4aced1]:first-child {
255
- width: 20%;
254
+ .object-container th[data-v-82959a5b]:first-child {
255
+ width: 20%;
256
256
  min-width: 100px;
257
257
  }
258
- .object-container td[data-v-ac4aced1]:first-child {
259
- font-weight: 500;
258
+ .object-container td[data-v-82959a5b]:first-child {
259
+ font-weight: 500;
260
260
  background-color: #f8f9fa;
261
261
  }
262
- .sql-loading-state[data-v-ac4aced1] {
263
- display: flex;
264
- align-items: center;
265
- justify-content: center;
266
- height: 100%;
262
+ .sql-loading-state[data-v-82959a5b] {
263
+ display: flex;
264
+ align-items: center;
265
+ justify-content: center;
266
+ height: 100%;
267
267
  flex: 1;
268
268
  }
269
- .sql-empty-result[data-v-ac4aced1],
270
- .sql-error[data-v-ac4aced1] {
271
- padding: 12px;
269
+ .sql-empty-result[data-v-82959a5b],
270
+ .sql-error[data-v-82959a5b] {
271
+ padding: 12px;
272
272
  flex: 1;
273
273
  }
274
- .result-empty[data-v-ac4aced1] {
275
- display: flex;
276
- flex-direction: column;
277
- align-items: center;
278
- justify-content: center;
279
- height: 100%;
280
- color: #6c757d;
274
+ .result-empty[data-v-82959a5b] {
275
+ display: flex;
276
+ flex-direction: column;
277
+ align-items: center;
278
+ justify-content: center;
279
+ height: 100%;
280
+ color: #6c757d;
281
281
  gap: 10px;
282
282
  }
283
- .result-empty i[data-v-ac4aced1] {
284
- font-size: 48px;
283
+ .result-empty i[data-v-82959a5b] {
284
+ font-size: 48px;
285
285
  opacity: 0.5;
286
286
  }
287
- .json-result[data-v-ac4aced1] {
288
- flex: 1;
287
+ .json-result[data-v-82959a5b] {
288
+ flex: 1;
289
289
  overflow: hidden;
290
290
  }
291
- .json-result .codemirror-editor[data-v-ac4aced1] {
292
- height: 100%;
291
+ .json-result .codemirror-editor[data-v-82959a5b] {
292
+ height: 100%;
293
293
  width: 100%;
294
- }
295
-
294
+ }
295
+
296
296
  /* 响应式设计 */
297
297
  @media (max-width: 768px) {
298
- .sql-toolbar[data-v-ac4aced1] {
299
- flex-direction: column;
300
- align-items: stretch;
298
+ .sql-toolbar[data-v-82959a5b] {
299
+ flex-direction: column;
300
+ align-items: stretch;
301
301
  gap: 8px;
302
302
  }
303
- .toolbar-left[data-v-ac4aced1],
304
- .toolbar-right[data-v-ac4aced1] {
303
+ .toolbar-left[data-v-82959a5b],
304
+ .toolbar-right[data-v-82959a5b] {
305
305
  justify-content: center;
306
306
  }
307
- }
307
+ }
308
308
 
309
- .connection-detail[data-v-d46cb2d8] {
310
- padding: 20px;
311
- display: flex;
312
- flex-direction: column;
313
- height: 100%;
309
+ .connection-detail[data-v-283b71e5] {
310
+ padding: 20px;
311
+ display: flex;
312
+ flex-direction: column;
313
+ height: 100%;
314
314
  gap: 20px;
315
315
  }
316
- .connection-header[data-v-d46cb2d8] {
317
- display: flex;
318
- justify-content: space-between;
319
- align-items: center;
320
- margin-bottom: 20px;
321
- padding: 20px;
322
- background-color: #f8f9fa;
316
+ .connection-header[data-v-283b71e5] {
317
+ display: flex;
318
+ justify-content: space-between;
319
+ align-items: center;
320
+ margin-bottom: 20px;
321
+ padding: 20px;
322
+ background-color: #f8f9fa;
323
323
  border-radius: 8px;
324
324
  }
325
- .connection-info[data-v-d46cb2d8] {
326
- display: flex;
327
- align-items: center;
325
+ .connection-info[data-v-283b71e5] {
326
+ display: flex;
327
+ align-items: center;
328
328
  gap: 16px;
329
329
  }
330
- .connection-avatar[data-v-d46cb2d8] {
331
- width: 60px;
332
- height: 60px;
333
- display: flex;
334
- align-items: center;
335
- justify-content: center;
336
- border-radius: 8px;
330
+ .connection-avatar[data-v-283b71e5] {
331
+ width: 60px;
332
+ height: 60px;
333
+ display: flex;
334
+ align-items: center;
335
+ justify-content: center;
336
+ border-radius: 8px;
337
337
  background-color: #e9ecef;
338
338
  }
339
- .db-logo[data-v-d46cb2d8] {
340
- font-size: 24px;
341
- font-weight: bold;
339
+ .db-logo[data-v-283b71e5] {
340
+ font-size: 24px;
341
+ font-weight: bold;
342
342
  color: #6c757d;
343
343
  }
344
- .db-mysql[data-v-d46cb2d8] {
345
- background-color: #4CAF50;
344
+ .db-mysql[data-v-283b71e5] {
345
+ background-color: #4CAF50;
346
346
  color: white;
347
347
  }
348
- .db-postgres[data-v-d46cb2d8] {
349
- background-color: #336791;
348
+ .db-postgres[data-v-283b71e5] {
349
+ background-color: #336791;
350
350
  color: white;
351
351
  }
352
- .db-mssql[data-v-d46cb2d8] {
353
- background-color: #0078d4;
352
+ .db-mssql[data-v-283b71e5] {
353
+ background-color: #0078d4;
354
354
  color: white;
355
355
  }
356
- .db-sqlite[data-v-d46cb2d8] {
357
- background-color: #003B57;
356
+ .db-sqlite[data-v-283b71e5] {
357
+ background-color: #003B57;
358
358
  color: white;
359
359
  }
360
- .db-oracle[data-v-d46cb2d8] {
361
- background-color: #F80000;
360
+ .db-oracle[data-v-283b71e5] {
361
+ background-color: #F80000;
362
362
  color: white;
363
363
  }
364
- .connection-meta[data-v-d46cb2d8] {
365
- display: flex;
366
- flex-direction: column;
364
+ .connection-meta[data-v-283b71e5] {
365
+ display: flex;
366
+ flex-direction: column;
367
367
  gap: 4px;
368
368
  }
369
- .connection-name[data-v-d46cb2d8] {
370
- margin: 0;
371
- font-size: 20px;
369
+ .connection-name[data-v-283b71e5] {
370
+ margin: 0;
371
+ font-size: 20px;
372
372
  font-weight: 600;
373
373
  }
374
- .connection-type-info[data-v-d46cb2d8] {
375
- display: flex;
376
- align-items: center;
374
+ .connection-type-info[data-v-283b71e5] {
375
+ display: flex;
376
+ align-items: center;
377
377
  gap: 12px;
378
378
  }
379
- .db-type[data-v-d46cb2d8] {
380
- padding: 4px 12px;
381
- border-radius: 12px;
382
- background-color: #e9ecef;
383
- font-size: 12px;
379
+ .db-type[data-v-283b71e5] {
380
+ padding: 4px 12px;
381
+ border-radius: 12px;
382
+ background-color: #e9ecef;
383
+ font-size: 12px;
384
384
  font-weight: 500;
385
385
  }
386
- .connection-status[data-v-d46cb2d8] {
387
- display: flex;
388
- align-items: center;
389
- gap: 6px;
386
+ .connection-status[data-v-283b71e5] {
387
+ display: flex;
388
+ align-items: center;
389
+ gap: 6px;
390
390
  font-size: 14px;
391
391
  }
392
- .status-dot[data-v-d46cb2d8] {
393
- width: 8px;
394
- height: 8px;
395
- border-radius: 50%;
392
+ .status-dot[data-v-283b71e5] {
393
+ width: 8px;
394
+ height: 8px;
395
+ border-radius: 50%;
396
396
  background-color: #6c757d;
397
397
  }
398
- .status-online .status-dot[data-v-d46cb2d8] {
398
+ .status-online .status-dot[data-v-283b71e5] {
399
399
  background-color: #28a745;
400
400
  }
401
- .status-offline .status-dot[data-v-d46cb2d8] {
401
+ .status-offline .status-dot[data-v-283b71e5] {
402
402
  background-color: #dc3545;
403
403
  }
404
- .status-testing .status-dot[data-v-d46cb2d8] {
405
- background-color: #ffc107;
406
- animation: pulse-d46cb2d8 1s infinite;
404
+ .status-testing .status-dot[data-v-283b71e5] {
405
+ background-color: #ffc107;
406
+ animation: pulse-283b71e5 1s infinite;
407
407
  }
408
- @keyframes pulse-d46cb2d8 {
409
- 0%, 100% {
408
+ @keyframes pulse-283b71e5 {
409
+ 0%, 100% {
410
410
  opacity: 1;
411
411
  }
412
- 50% {
412
+ 50% {
413
413
  opacity: 0.5;
414
414
  }
415
415
  }
416
- .connection-actions[data-v-d46cb2d8] {
417
- display: flex;
416
+ .connection-actions[data-v-283b71e5] {
417
+ display: flex;
418
418
  gap: 8px;
419
419
  }
420
- .connection-details-panel[data-v-d46cb2d8] {
421
- margin-bottom: 30px;
422
- animation: fadeIn-d46cb2d8 0.3s ease;
423
- }
424
- .section-title[data-v-d46cb2d8] {
425
- margin: 0 0 16px 0;
426
- font-size: 16px;
427
- font-weight: 600;
428
- display: flex;
429
- align-items: center;
430
- gap: 8px;
431
- color: #343a40;
432
- padding-bottom: 8px;
420
+ .connection-details-panel[data-v-283b71e5] {
421
+ margin-bottom: 30px;
422
+ animation: fadeIn-283b71e5 0.3s ease;
423
+ }
424
+ .section-title[data-v-283b71e5] {
425
+ margin: 0 0 16px 0;
426
+ font-size: 16px;
427
+ font-weight: 600;
428
+ display: flex;
429
+ align-items: center;
430
+ gap: 8px;
431
+ color: #343a40;
432
+ padding-bottom: 8px;
433
433
  border-bottom: 1px solid #e9ecef;
434
434
  }
435
- @keyframes fadeIn-d46cb2d8 {
436
- from {
437
- opacity: 0;
435
+ @keyframes fadeIn-283b71e5 {
436
+ from {
437
+ opacity: 0;
438
438
  transform: translateY(-10px);
439
439
  }
440
- to {
441
- opacity: 1;
440
+ to {
441
+ opacity: 1;
442
442
  transform: translateY(0);
443
443
  }
444
444
  }
445
- .detail-card[data-v-d46cb2d8] {
446
- border: 1px solid #dee2e6;
447
- border-radius: 8px;
445
+ .detail-card[data-v-283b71e5] {
446
+ border: 1px solid #dee2e6;
447
+ border-radius: 8px;
448
448
  overflow: hidden;
449
449
  }
450
- .card-header[data-v-d46cb2d8] {
451
- padding: 16px;
452
- background-color: #f8f9fa;
450
+ .card-header[data-v-283b71e5] {
451
+ padding: 16px;
452
+ background-color: #f8f9fa;
453
453
  border-bottom: 1px solid #dee2e6;
454
454
  }
455
- .card-title[data-v-d46cb2d8] {
456
- margin: 0;
457
- font-size: 16px;
458
- font-weight: 600;
459
- display: flex;
460
- align-items: center;
455
+ .card-title[data-v-283b71e5] {
456
+ margin: 0;
457
+ font-size: 16px;
458
+ font-weight: 600;
459
+ display: flex;
460
+ align-items: center;
461
461
  gap: 8px;
462
462
  }
463
- .card-body[data-v-d46cb2d8] {
463
+ .card-body[data-v-283b71e5] {
464
464
  padding: 16px;
465
465
  }
466
- .info-grid[data-v-d46cb2d8] {
467
- display: grid;
468
- grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
469
- gap: 16px;
466
+ .info-grid[data-v-283b71e5] {
467
+ display: grid;
468
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
469
+ gap: 16px;
470
470
  margin-bottom: 10px;
471
471
  }
472
- .info-item[data-v-d46cb2d8] {
473
- display: flex;
474
- flex-direction: column;
475
- gap: 4px;
476
- padding: 10px;
477
- background-color: #f8f9fa;
478
- border-radius: 6px;
472
+ .info-item[data-v-283b71e5] {
473
+ display: flex;
474
+ flex-direction: column;
475
+ gap: 4px;
476
+ padding: 10px;
477
+ background-color: #f8f9fa;
478
+ border-radius: 6px;
479
479
  transition: all 0.2s ease;
480
480
  }
481
- .info-item[data-v-d46cb2d8]:hover {
482
- background-color: #e9ecef;
481
+ .info-item[data-v-283b71e5]:hover {
482
+ background-color: #e9ecef;
483
483
  transform: translateY(-1px);
484
484
  }
485
- .info-label[data-v-d46cb2d8] {
486
- font-size: 12px;
487
- font-weight: 500;
488
- color: #6c757d;
489
- text-transform: uppercase;
485
+ .info-label[data-v-283b71e5] {
486
+ font-size: 12px;
487
+ font-weight: 500;
488
+ color: #6c757d;
489
+ text-transform: uppercase;
490
490
  letter-spacing: 0.5px;
491
491
  }
492
- .info-value[data-v-d46cb2d8] {
493
- font-size: 14px;
494
- font-weight: 500;
492
+ .info-value[data-v-283b71e5] {
493
+ font-size: 14px;
494
+ font-weight: 500;
495
495
  color: #343a40;
496
496
  }
497
- .db-type-badge[data-v-d46cb2d8] {
498
- padding: 4px 10px;
499
- border-radius: 12px;
500
- font-size: 12px;
497
+ .db-type-badge[data-v-283b71e5] {
498
+ padding: 4px 10px;
499
+ border-radius: 12px;
500
+ font-size: 12px;
501
501
  font-weight: 500;
502
502
  }
503
- .stats-grid[data-v-d46cb2d8] {
504
- display: grid;
505
- grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
503
+ .stats-grid[data-v-283b71e5] {
504
+ display: grid;
505
+ grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
506
506
  gap: 16px;
507
507
  }
508
- .stat-item[data-v-d46cb2d8] {
509
- text-align: center;
510
- padding: 12px;
511
- background-color: #f8f9fa;
512
- border-radius: 6px;
508
+ .stat-item[data-v-283b71e5] {
509
+ text-align: center;
510
+ padding: 12px;
511
+ background-color: #f8f9fa;
512
+ border-radius: 6px;
513
513
  transition: all 0.2s ease;
514
514
  }
515
- .stat-item[data-v-d46cb2d8]:hover {
516
- background-color: #e9ecef;
517
- transform: translateY(-1px);
515
+ .stat-item[data-v-283b71e5]:hover {
516
+ background-color: #e9ecef;
517
+ transform: translateY(-1px);
518
518
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
519
519
  }
520
- .stat-value[data-v-d46cb2d8] {
521
- font-size: 20px;
522
- font-weight: 600;
520
+ .stat-value[data-v-283b71e5] {
521
+ font-size: 20px;
522
+ font-weight: 600;
523
523
  color: #343a40;
524
524
  }
525
- .stat-label[data-v-d46cb2d8] {
526
- font-size: 12px;
527
- color: #6c757d;
525
+ .stat-label[data-v-283b71e5] {
526
+ font-size: 12px;
527
+ color: #6c757d;
528
528
  margin-top: 4px;
529
529
  }
530
- .quick-actions[data-v-d46cb2d8] {
531
- margin-bottom: 30px;
532
- padding: 20px;
533
- background-color: #f8f9fa;
530
+ .quick-actions[data-v-283b71e5] {
531
+ margin-bottom: 30px;
532
+ padding: 20px;
533
+ background-color: #f8f9fa;
534
534
  border-radius: 8px;
535
535
  }
536
- .actions-header[data-v-d46cb2d8] {
536
+ .actions-header[data-v-283b71e5] {
537
537
  margin-bottom: 16px;
538
538
  }
539
- .actions-title[data-v-d46cb2d8] {
540
- margin: 0;
541
- font-size: 16px;
542
- font-weight: 600;
543
- display: flex;
544
- align-items: center;
539
+ .actions-title[data-v-283b71e5] {
540
+ margin: 0;
541
+ font-size: 16px;
542
+ font-weight: 600;
543
+ display: flex;
544
+ align-items: center;
545
545
  gap: 8px;
546
546
  }
547
- .actions-grid[data-v-d46cb2d8] {
548
- display: grid;
549
- grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
547
+ .actions-grid[data-v-283b71e5] {
548
+ display: grid;
549
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
550
550
  gap: 16px;
551
551
  }
552
- .action-btn[data-v-d46cb2d8] {
553
- display: flex;
554
- flex-direction: column;
555
- align-items: center;
556
- gap: 8px;
557
- padding: 16px;
558
- background-color: white;
559
- border: 1px solid #dee2e6;
560
- border-radius: 8px;
561
- cursor: pointer;
552
+ .action-btn[data-v-283b71e5] {
553
+ display: flex;
554
+ flex-direction: column;
555
+ align-items: center;
556
+ gap: 8px;
557
+ padding: 16px;
558
+ background-color: white;
559
+ border: 1px solid #dee2e6;
560
+ border-radius: 8px;
561
+ cursor: pointer;
562
562
  transition: all 0.2s ease;
563
563
  }
564
- .action-btn[data-v-d46cb2d8]:hover {
565
- background-color: #e9ecef;
566
- transform: translateY(-2px);
564
+ .action-btn[data-v-283b71e5]:hover {
565
+ background-color: #e9ecef;
566
+ transform: translateY(-2px);
567
567
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
568
568
  }
569
- .action-icon[data-v-d46cb2d8] {
570
- font-size: 24px;
569
+ .action-icon[data-v-283b71e5] {
570
+ font-size: 24px;
571
571
  color: #6c757d;
572
572
  }
573
- .action-text[data-v-d46cb2d8] {
574
- font-size: 14px;
575
- font-weight: 500;
573
+ .action-text[data-v-283b71e5] {
574
+ font-size: 14px;
575
+ font-weight: 500;
576
576
  color: #343a40;
577
577
  }
578
- .connection-tabs[data-v-d46cb2d8] {
579
- border: 1px solid #dee2e6;
580
- border-radius: 8px;
581
- overflow: hidden;
582
- flex: 1;
583
- display: flex;
578
+ .connection-tabs[data-v-283b71e5] {
579
+ border: 1px solid #dee2e6;
580
+ border-radius: 8px;
581
+ flex: 1;
582
+ display: flex;
584
583
  flex-direction: column;
585
584
  }
586
- .nav-tabs[data-v-d46cb2d8] {
587
- border-bottom: 1px solid #dee2e6;
585
+ .nav-tabs[data-v-283b71e5] {
586
+ border-bottom: 1px solid #dee2e6;
588
587
  background-color: #f8f9fa;
589
588
  }
590
- .nav-link[data-v-d46cb2d8] {
591
- border: none;
592
- border-radius: 0;
593
- padding: 12px 20px;
594
- font-size: 14px;
595
- font-weight: 500;
589
+ .nav-link[data-v-283b71e5] {
590
+ border: none;
591
+ border-radius: 0;
592
+ padding: 12px 20px;
593
+ font-size: 14px;
594
+ font-weight: 500;
596
595
  transition: all 0.2s ease;
597
596
  }
598
- .nav-link[data-v-d46cb2d8]:hover {
597
+ .nav-link[data-v-283b71e5]:hover {
599
598
  background-color: #e9ecef;
600
599
  }
601
- .nav-link.active[data-v-d46cb2d8] {
602
- background-color: white;
600
+ .nav-link.active[data-v-283b71e5] {
601
+ background-color: white;
603
602
  border-bottom: 2px solid #0d6efd;
604
603
  }
605
- .tab-content[data-v-d46cb2d8] {
606
- flex: 1;
607
- display: flex;
608
- flex-direction: column;
604
+ .tab-content[data-v-283b71e5] {
605
+ flex: 1;
606
+ display: flex;
607
+ flex-direction: column;
609
608
  overflow: hidden;
610
609
  }
611
- .tab-panel[data-v-d46cb2d8] {
612
- padding: 20px;
613
- flex: 1;
614
- display: flex;
615
- flex-direction: column;
610
+ .tab-panel[data-v-283b71e5] {
611
+ padding: 20px;
612
+ flex: 1;
613
+ display: flex;
614
+ flex-direction: column;
616
615
  overflow: hidden;
617
616
  }
618
- .databases-section[data-v-d46cb2d8] {
619
- display: flex;
620
- flex-direction: column;
621
- gap: 16px;
622
- flex: 1;
617
+ .databases-section[data-v-283b71e5] {
618
+ display: flex;
619
+ flex-direction: column;
620
+ gap: 16px;
621
+ flex: 1;
623
622
  overflow: hidden;
624
623
  }
625
- .section-header[data-v-d46cb2d8] {
626
- display: flex;
627
- justify-content: flex-end;
624
+ .section-header[data-v-283b71e5] {
625
+ display: flex;
626
+ justify-content: flex-end;
628
627
  align-items: center;
629
628
  }
630
- .section-actions[data-v-d46cb2d8] {
631
- display: flex;
632
- align-items: center;
629
+ .section-actions[data-v-283b71e5] {
630
+ display: flex;
631
+ align-items: center;
633
632
  gap: 8px;
634
633
  }
635
- .databases-list[data-v-d46cb2d8] {
636
- min-height: 300px;
637
- height: 100%;
638
- overflow-y: auto;
634
+ .databases-list[data-v-283b71e5] {
635
+ min-height: 300px;
636
+ height: 100%;
637
+ overflow-y: auto;
639
638
  padding-right: 8px;
640
639
  }
641
- .loading-state[data-v-d46cb2d8] {
642
- display: flex;
643
- flex-direction: column;
644
- align-items: center;
645
- justify-content: center;
646
- padding: 60px 20px;
640
+ .loading-state[data-v-283b71e5] {
641
+ display: flex;
642
+ flex-direction: column;
643
+ align-items: center;
644
+ justify-content: center;
645
+ padding: 60px 20px;
647
646
  gap: 16px;
648
647
  }
649
- .empty-state[data-v-d46cb2d8] {
650
- display: flex;
651
- flex-direction: column;
652
- align-items: center;
653
- justify-content: center;
654
- padding: 60px 20px;
655
- gap: 16px;
648
+ .empty-state[data-v-283b71e5] {
649
+ display: flex;
650
+ flex-direction: column;
651
+ align-items: center;
652
+ justify-content: center;
653
+ padding: 60px 20px;
654
+ gap: 16px;
656
655
  text-align: center;
657
656
  }
658
- .empty-state i[data-v-d46cb2d8] {
659
- font-size: 48px;
657
+ .empty-state i[data-v-283b71e5] {
658
+ font-size: 48px;
660
659
  color: #ced4da;
661
660
  }
662
- .empty-state p[data-v-d46cb2d8] {
663
- margin: 0;
664
- color: #6c757d;
661
+ .empty-state p[data-v-283b71e5] {
662
+ margin: 0;
663
+ color: #6c757d;
665
664
  font-size: 16px;
666
665
  }
667
- .databases-list-simple[data-v-d46cb2d8] {
668
- display: grid;
669
- grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
666
+ .databases-list-simple[data-v-283b71e5] {
667
+ display: grid;
668
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
670
669
  gap: 12px;
671
670
  }
672
- .database-item[data-v-d46cb2d8] {
673
- display: flex;
674
- flex-direction: column;
675
- align-items: center;
676
- gap: 8px;
677
- padding: 16px;
678
- border: 1px solid #dee2e6;
679
- border-radius: 6px;
680
- cursor: pointer;
681
- transition: all 0.2s ease;
682
- text-align: center;
671
+ .database-item[data-v-283b71e5] {
672
+ display: flex;
673
+ flex-direction: column;
674
+ align-items: center;
675
+ gap: 8px;
676
+ padding: 16px;
677
+ border: 1px solid #dee2e6;
678
+ border-radius: 6px;
679
+ cursor: pointer;
680
+ transition: all 0.2s ease;
681
+ text-align: center;
683
682
  min-height: 100px;
684
683
  }
685
- .database-item[data-v-d46cb2d8]:hover {
686
- border-color: #0d6efd;
687
- background-color: #f8f9fa;
688
- transform: translateY(-2px);
684
+ .database-item[data-v-283b71e5]:hover {
685
+ border-color: #0d6efd;
686
+ background-color: #f8f9fa;
687
+ transform: translateY(-2px);
689
688
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
690
689
  }
691
- .database-item-icon[data-v-d46cb2d8] {
692
- font-size: 32px;
690
+ .database-item-icon[data-v-283b71e5] {
691
+ font-size: 32px;
693
692
  color: #6c757d;
694
693
  }
695
- .database-item-name[data-v-d46cb2d8] {
696
- font-size: 14px;
697
- font-weight: 500;
698
- color: #343a40;
699
- overflow: hidden;
700
- text-overflow: ellipsis;
701
- white-space: nowrap;
694
+ .database-item-name[data-v-283b71e5] {
695
+ font-size: 14px;
696
+ font-weight: 500;
697
+ color: #343a40;
698
+ overflow: hidden;
699
+ text-overflow: ellipsis;
700
+ white-space: nowrap;
702
701
  max-width: 100%;
703
702
  }
704
- .database-item-actions[data-v-d46cb2d8] {
705
- display: flex;
706
- gap: 4px;
703
+ .database-item-actions[data-v-283b71e5] {
704
+ display: flex;
705
+ gap: 4px;
707
706
  margin-top: auto;
708
707
  }
709
- .sql-section[data-v-d46cb2d8] {
710
- display: flex;
711
- flex-direction: column;
712
- gap: 16px;
713
- flex: 1;
708
+ .sql-section[data-v-283b71e5] {
709
+ display: flex;
710
+ flex-direction: column;
711
+ gap: 16px;
712
+ flex: 1;
714
713
  overflow: hidden;
715
714
  }
716
- .sql-header[data-v-d46cb2d8] {
717
- display: flex;
718
- justify-content: space-between;
715
+ .sql-header[data-v-283b71e5] {
716
+ display: flex;
717
+ justify-content: space-between;
719
718
  align-items: center;
720
719
  }
721
- .sql-title[data-v-d46cb2d8] {
722
- margin: 0;
723
- font-size: 16px;
724
- font-weight: 600;
725
- display: flex;
726
- align-items: center;
720
+ .sql-title[data-v-283b71e5] {
721
+ margin: 0;
722
+ font-size: 16px;
723
+ font-weight: 600;
724
+ display: flex;
725
+ align-items: center;
727
726
  gap: 8px;
728
727
  }
729
- .sql-db-info[data-v-d46cb2d8] {
730
- display: flex;
731
- align-items: center;
728
+ .sql-db-info[data-v-283b71e5] {
729
+ display: flex;
730
+ align-items: center;
732
731
  gap: 8px;
733
- }
734
-
732
+ }
733
+
735
734
  /* 响应式设计 */
736
735
  @media (max-width: 768px) {
737
- .connection-header[data-v-d46cb2d8] {
738
- flex-direction: column;
739
- align-items: flex-start;
736
+ .connection-header[data-v-283b71e5] {
737
+ flex-direction: column;
738
+ align-items: flex-start;
740
739
  gap: 16px;
741
740
  }
742
- .connection-actions[data-v-d46cb2d8] {
741
+ .connection-actions[data-v-283b71e5] {
743
742
  align-self: flex-end;
744
743
  }
745
- .connection-cards[data-v-d46cb2d8] {
744
+ .connection-cards[data-v-283b71e5] {
746
745
  grid-template-columns: 1fr;
747
746
  }
748
- .info-grid[data-v-d46cb2d8] {
747
+ .info-grid[data-v-283b71e5] {
749
748
  grid-template-columns: 1fr;
750
749
  }
751
- .stats-grid[data-v-d46cb2d8] {
750
+ .stats-grid[data-v-283b71e5] {
752
751
  grid-template-columns: repeat(2, 1fr);
753
752
  }
754
- .actions-grid[data-v-d46cb2d8] {
753
+ .actions-grid[data-v-283b71e5] {
755
754
  grid-template-columns: repeat(2, 1fr);
756
755
  }
757
- .databases-list-simple[data-v-d46cb2d8] {
758
- grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
756
+ .databases-list-simple[data-v-283b71e5] {
757
+ grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
759
758
  gap: 10px;
760
759
  }
761
- .database-item[data-v-d46cb2d8] {
762
- padding: 12px;
760
+ .database-item[data-v-283b71e5] {
761
+ padding: 12px;
763
762
  min-height: 80px;
764
763
  }
765
- .database-item-icon[data-v-d46cb2d8] {
764
+ .database-item-icon[data-v-283b71e5] {
766
765
  font-size: 24px;
767
766
  }
768
- .database-item-name[data-v-d46cb2d8] {
767
+ .database-item-name[data-v-283b71e5] {
769
768
  font-size: 12px;
770
769
  }
771
- .nav-link[data-v-d46cb2d8] {
772
- padding: 10px 16px;
770
+ .nav-link[data-v-283b71e5] {
771
+ padding: 10px 16px;
773
772
  font-size: 13px;
774
773
  }
775
- }
774
+ }
776
775
 
777
- .section-title[data-v-dcd325b0] {
778
- color: #495057;
779
- font-weight: 600;
780
- border-bottom: 2px solid #e9ecef;
781
- padding-bottom: 0.5rem;
776
+ .section-title[data-v-d08de09c] {
777
+ color: #495057;
778
+ font-weight: 600;
779
+ border-bottom: 2px solid #e9ecef;
780
+ padding-bottom: 0.5rem;
782
781
  margin-bottom: 1rem;
783
782
  }
784
- .sql-preview[data-v-dcd325b0] {
785
- font-family: 'Courier New', monospace;
786
- font-size: 0.875rem;
787
- max-height: 200px;
788
- overflow-y: auto;
783
+ .sql-preview[data-v-d08de09c] {
784
+ font-family: 'Courier New', monospace;
785
+ font-size: 0.875rem;
786
+ max-height: 200px;
787
+ overflow-y: auto;
789
788
  border: 1px solid #dee2e6;
790
789
  }
791
- .table th[data-v-dcd325b0] {
792
- font-size: 0.875rem;
790
+ .table th[data-v-d08de09c] {
791
+ font-size: 0.875rem;
793
792
  font-weight: 600;
794
793
  }
795
- .table td[data-v-dcd325b0] {
794
+ .table td[data-v-d08de09c] {
796
795
  padding: 0!important;
797
796
  }
798
- .table .form-control[data-v-dcd325b0], .table .form-select[data-v-dcd325b0] {
799
- border: none;
800
- border-radius: 0;
797
+ .table .form-control[data-v-d08de09c], .table .form-select[data-v-d08de09c] {
798
+ border: none;
799
+ border-radius: 0;
801
800
  box-shadow: none;
802
801
  }
803
- .form-control-sm[data-v-dcd325b0], .form-select-sm[data-v-dcd325b0] {
802
+ .form-control-sm[data-v-d08de09c], .form-select-sm[data-v-d08de09c] {
804
803
  font-size: 0.875rem;
805
804
  }
806
- .modal-content[data-v-dcd325b0] {
807
- max-height: 90vh;
805
+ .modal-content[data-v-d08de09c] {
806
+ max-height: 90vh;
808
807
  overflow-y: auto;
809
808
  }
810
- .modal-body[data-v-dcd325b0] {
811
- max-height: calc(90vh - 120px);
809
+ .modal-body[data-v-d08de09c] {
810
+ max-height: calc(90vh - 120px);
812
811
  overflow-y: auto;
813
812
  }
814
- .input-group-sm .form-control[data-v-dcd325b0] {
813
+ .input-group-sm .form-control[data-v-d08de09c] {
815
814
  border-radius: 0;
816
815
  }
817
- .input-group-sm .form-control[data-v-dcd325b0]:first-child {
818
- border-top-left-radius: 0.25rem;
816
+ .input-group-sm .form-control[data-v-d08de09c]:first-child {
817
+ border-top-left-radius: 0.25rem;
819
818
  border-bottom-left-radius: 0.25rem;
820
819
  }
821
- .input-group-sm .form-control[data-v-dcd325b0]:last-child {
822
- border-top-right-radius: 0.25rem;
820
+ .input-group-sm .form-control[data-v-d08de09c]:last-child {
821
+ border-top-right-radius: 0.25rem;
823
822
  border-bottom-right-radius: 0.25rem;
824
823
  }
825
- .text-muted[data-v-dcd325b0] {
824
+ .text-muted[data-v-d08de09c] {
826
825
  color: #6c757d !important;
827
- }
826
+ }
828
827
 
829
- .db-tools[data-v-b1c1e4d6] {
830
- background: white;
831
- border-radius: 12px;
832
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
833
- overflow: hidden;
828
+ .db-tools[data-v-622732f3] {
829
+ background: white;
830
+ border-radius: 12px;
831
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
834
832
  }
835
- .tools-header[data-v-b1c1e4d6] {
836
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
837
- color: white;
838
- padding: 1rem 1.5rem;
833
+ .tools-header[data-v-622732f3] {
834
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
835
+ color: white;
836
+ padding: 1rem 1.5rem;
839
837
  border-bottom: 1px solid #e2e8f0;
840
838
  }
841
- .tools-title[data-v-b1c1e4d6] {
842
- margin: 0;
843
- font-size: 1.1rem;
844
- font-weight: 600;
845
- display: flex;
846
- align-items: center;
839
+ .tools-title[data-v-622732f3] {
840
+ margin: 0;
841
+ font-size: 1.1rem;
842
+ font-weight: 600;
843
+ display: flex;
844
+ align-items: center;
847
845
  gap: 0.5rem;
848
846
  }
849
- .tools-content[data-v-b1c1e4d6] {
850
- padding: 1.5rem;
851
- max-height: 500px;
847
+ .tools-content[data-v-622732f3] {
848
+ padding: 1.5rem;
852
849
  overflow-y: auto;
853
850
  }
854
- .tool-section[data-v-b1c1e4d6] {
851
+ .tool-section[data-v-622732f3] {
855
852
  margin-bottom: 2rem;
856
853
  }
857
- .section-title[data-v-b1c1e4d6] {
858
- font-size: 0.9rem;
859
- font-weight: 600;
860
- color: #374151;
861
- margin-bottom: 1rem;
862
- display: flex;
863
- align-items: center;
854
+ .section-title[data-v-622732f3] {
855
+ font-size: 0.9rem;
856
+ font-weight: 600;
857
+ color: #374151;
858
+ margin-bottom: 1rem;
859
+ display: flex;
860
+ align-items: center;
864
861
  gap: 0.5rem;
865
862
  }
866
- .tool-actions[data-v-b1c1e4d6] {
867
- display: flex;
868
- flex-wrap: wrap;
863
+ .tool-actions[data-v-622732f3] {
864
+ display: flex;
865
+ flex-wrap: wrap;
869
866
  gap: 0.5rem;
870
867
  }
871
- .tool-actions .btn[data-v-b1c1e4d6] {
872
- min-width: 120px;
873
- display: flex;
874
- align-items: center;
868
+ .tool-actions .btn[data-v-622732f3] {
869
+ min-width: 120px;
870
+ display: flex;
871
+ align-items: center;
875
872
  gap: 0.5rem;
876
873
  }
877
- .modal[data-v-b1c1e4d6] {
874
+ .modal[data-v-622732f3] {
878
875
  background-color: rgba(0, 0, 0, 0.5);
879
876
  }
880
- .modal-dialog[data-v-b1c1e4d6] {
877
+ .modal-dialog[data-v-622732f3] {
881
878
  max-width: 600px;
882
879
  }
883
- .modal-header[data-v-b1c1e4d6] {
884
- background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
880
+ .modal-header[data-v-622732f3] {
881
+ background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
885
882
  border-bottom: 1px solid #e2e8f0;
886
883
  }
887
- .modal-title[data-v-b1c1e4d6] {
888
- color: #1e293b;
884
+ .modal-title[data-v-622732f3] {
885
+ color: #1e293b;
889
886
  font-weight: 600;
890
887
  }
891
- .modal-footer[data-v-b1c1e4d6] {
892
- background: #f8fafc;
888
+ .modal-footer[data-v-622732f3] {
889
+ background: #f8fafc;
890
+ border-top: 1px solid #e2e8f0;
891
+ }
892
+
893
+ /* 工具组件区域 */
894
+ .tool-component-area[data-v-622732f3] {
893
895
  border-top: 1px solid #e2e8f0;
894
- }
895
-
896
+ background: #f8fafc;
897
+ }
898
+ .component-header[data-v-622732f3] {
899
+ display: flex;
900
+ justify-content: space-between;
901
+ align-items: center;
902
+ padding: 1rem 1.5rem;
903
+ background: linear-gradient(135deg, #f1f5f9 0%, #f8fafc 100%);
904
+ border-bottom: 1px solid #e2e8f0;
905
+ }
906
+ .component-title[data-v-622732f3] {
907
+ margin: 0;
908
+ font-size: 1rem;
909
+ font-weight: 600;
910
+ color: #1e293b;
911
+ display: flex;
912
+ align-items: center;
913
+ gap: 0.5rem;
914
+ }
915
+ .tool-component[data-v-622732f3] {
916
+ padding: 1.5rem;
917
+ }
918
+ .sync-component[data-v-622732f3] {
919
+ background: white;
920
+ border-radius: 0.375rem;
921
+ }
922
+
896
923
  /* 执行结果区域 */
897
- .execution-results[data-v-b1c1e4d6] {
898
- border-top: 1px solid #e2e8f0;
924
+ .execution-results[data-v-622732f3] {
925
+ border-top: 1px solid #e2e8f0;
899
926
  background: #f8fafc;
900
927
  }
901
- .results-header[data-v-b1c1e4d6] {
902
- display: flex;
903
- justify-content: space-between;
904
- align-items: center;
905
- padding: 1rem 1.5rem;
906
- background: linear-gradient(135deg, #f1f5f9 0%, #f8fafc 100%);
928
+ .results-header[data-v-622732f3] {
929
+ display: flex;
930
+ justify-content: space-between;
931
+ align-items: center;
932
+ padding: 1rem 1.5rem;
933
+ background: linear-gradient(135deg, #f1f5f9 0%, #f8fafc 100%);
907
934
  border-bottom: 1px solid #e2e8f0;
908
935
  }
909
- .results-title[data-v-b1c1e4d6] {
910
- margin: 0;
911
- font-size: 1rem;
912
- font-weight: 600;
913
- color: #1e293b;
914
- display: flex;
915
- align-items: center;
936
+ .results-title[data-v-622732f3] {
937
+ margin: 0;
938
+ font-size: 1rem;
939
+ font-weight: 600;
940
+ color: #1e293b;
941
+ display: flex;
942
+ align-items: center;
916
943
  gap: 0.5rem;
917
944
  }
918
- .results-content[data-v-b1c1e4d6] {
919
- max-height: 400px;
920
- overflow-y: auto;
945
+ .results-content[data-v-622732f3] {
946
+ max-height: 400px;
947
+ overflow-y: auto;
921
948
  padding: 1rem;
922
949
  }
923
- .no-results[data-v-b1c1e4d6] {
924
- display: flex;
925
- flex-direction: column;
926
- align-items: center;
927
- justify-content: center;
928
- padding: 3rem 1rem;
950
+ .no-results[data-v-622732f3] {
951
+ display: flex;
952
+ flex-direction: column;
953
+ align-items: center;
954
+ justify-content: center;
955
+ padding: 3rem 1rem;
929
956
  color: #94a3b8;
930
957
  }
931
- .no-results i[data-v-b1c1e4d6] {
932
- font-size: 3rem;
958
+ .no-results i[data-v-622732f3] {
959
+ font-size: 3rem;
933
960
  margin-bottom: 1rem;
934
961
  }
935
- .no-results p[data-v-b1c1e4d6] {
936
- margin: 0;
962
+ .no-results p[data-v-622732f3] {
963
+ margin: 0;
937
964
  font-size: 1rem;
938
965
  }
939
- .result-item[data-v-b1c1e4d6] {
940
- margin-bottom: 0.75rem;
941
- border: 1px solid #e2e8f0;
942
- border-radius: 8px;
943
- background: white;
944
- overflow: hidden;
966
+ .result-item[data-v-622732f3] {
967
+ margin-bottom: 0.75rem;
968
+ border: 1px solid #e2e8f0;
969
+ border-radius: 8px;
970
+ background: white;
971
+ overflow: hidden;
945
972
  transition: box-shadow 0.2s;
946
973
  }
947
- .result-item[data-v-b1c1e4d6]:hover {
974
+ .result-item[data-v-622732f3]:hover {
948
975
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
949
976
  }
950
- .result-item.result-success[data-v-b1c1e4d6] {
977
+ .result-item.result-success[data-v-622732f3] {
951
978
  border-left: 4px solid #22c55e;
952
979
  }
953
- .result-item.result-error[data-v-b1c1e4d6] {
980
+ .result-item.result-error[data-v-622732f3] {
954
981
  border-left: 4px solid #ef4444;
955
982
  }
956
- .result-item.result-info[data-v-b1c1e4d6] {
983
+ .result-item.result-info[data-v-622732f3] {
957
984
  border-left: 4px solid #3b82f6;
958
985
  }
959
- .result-header[data-v-b1c1e4d6] {
960
- display: flex;
961
- justify-content: space-between;
962
- align-items: center;
963
- padding: 0.75rem 1rem;
964
- cursor: pointer;
965
- background: white;
986
+ .result-header[data-v-622732f3] {
987
+ display: flex;
988
+ justify-content: space-between;
989
+ align-items: center;
990
+ padding: 0.75rem 1rem;
991
+ cursor: pointer;
992
+ background: white;
966
993
  transition: background 0.2s;
967
994
  }
968
- .result-header[data-v-b1c1e4d6]:hover {
995
+ .result-header[data-v-622732f3]:hover {
969
996
  background: #f8fafc;
970
997
  }
971
- .result-title[data-v-b1c1e4d6] {
972
- display: flex;
973
- align-items: center;
974
- gap: 0.75rem;
998
+ .result-title[data-v-622732f3] {
999
+ display: flex;
1000
+ align-items: center;
1001
+ gap: 0.75rem;
975
1002
  flex: 1;
976
1003
  }
977
- .result-title i[data-v-b1c1e4d6] {
1004
+ .result-title i[data-v-622732f3] {
978
1005
  font-size: 1.1rem;
979
1006
  }
980
- .operation-name[data-v-b1c1e4d6] {
981
- font-weight: 600;
982
- color: #1e293b;
1007
+ .operation-name[data-v-622732f3] {
1008
+ font-weight: 600;
1009
+ color: #1e293b;
983
1010
  font-size: 0.95rem;
984
1011
  }
985
- .operation-time[data-v-b1c1e4d6] {
986
- color: #64748b;
987
- font-size: 0.85rem;
1012
+ .operation-time[data-v-622732f3] {
1013
+ color: #64748b;
1014
+ font-size: 0.85rem;
988
1015
  margin-left: auto;
989
1016
  }
990
- .toggle-icon[data-v-b1c1e4d6] {
991
- transition: transform 0.2s;
992
- color: #94a3b8;
1017
+ .toggle-icon[data-v-622732f3] {
1018
+ transition: transform 0.2s;
1019
+ color: #94a3b8;
993
1020
  font-size: 0.9rem;
994
1021
  }
995
- .toggle-icon.expanded[data-v-b1c1e4d6] {
1022
+ .toggle-icon.expanded[data-v-622732f3] {
996
1023
  transform: rotate(180deg);
997
1024
  }
998
- .result-body[data-v-b1c1e4d6] {
999
- padding: 1rem;
1000
- background: #fafafa;
1025
+ .result-body[data-v-622732f3] {
1026
+ padding: 1rem;
1027
+ background: #fafafa;
1001
1028
  border-top: 1px solid #e2e8f0;
1002
1029
  }
1003
- .result-body pre[data-v-b1c1e4d6] {
1004
- margin: 0;
1005
- font-size: 0.85rem;
1006
- line-height: 1.5;
1007
- max-height: 300px;
1030
+ .result-body pre[data-v-622732f3] {
1031
+ margin: 0;
1032
+ font-size: 0.85rem;
1033
+ line-height: 1.5;
1034
+ max-height: 300px;
1008
1035
  overflow: auto;
1009
1036
  }
1010
- .result-body code[data-v-b1c1e4d6] {
1037
+ .result-body code[data-v-622732f3] {
1011
1038
  font-family: 'Fira Code', 'Consolas', 'Monaco', monospace;
1012
- }
1013
-
1039
+ }
1040
+
1014
1041
  /* JSON 语法高亮 - 不使用 scoped 以确保 v-html 内容能应用样式 */
1015
- [data-v-b1c1e4d6] .json-key {
1016
- color: #d04255;
1042
+ [data-v-622732f3] .json-key {
1043
+ color: #d04255;
1017
1044
  font-weight: 500;
1018
1045
  }
1019
- [data-v-b1c1e4d6] .json-string {
1046
+ [data-v-622732f3] .json-string {
1020
1047
  color: #22863a;
1021
1048
  }
1022
- [data-v-b1c1e4d6] .json-number {
1049
+ [data-v-622732f3] .json-number {
1023
1050
  color: #005cc5;
1024
1051
  }
1025
- [data-v-b1c1e4d6] .json-boolean {
1052
+ [data-v-622732f3] .json-boolean {
1026
1053
  color: #d73a49;
1027
1054
  }
1028
- [data-v-b1c1e4d6] .json-null {
1055
+ [data-v-622732f3] .json-null {
1029
1056
  color: #6f42c1;
1030
- }
1031
-
1057
+ }
1058
+
1032
1059
  /* 滚动条样式 */
1033
- .results-content[data-v-b1c1e4d6]::-webkit-scrollbar,
1034
- .result-body pre[data-v-b1c1e4d6]::-webkit-scrollbar {
1035
- width: 8px;
1060
+ .results-content[data-v-622732f3]::-webkit-scrollbar,
1061
+ .result-body pre[data-v-622732f3]::-webkit-scrollbar {
1062
+ width: 8px;
1036
1063
  height: 8px;
1037
1064
  }
1038
- .results-content[data-v-b1c1e4d6]::-webkit-scrollbar-track,
1039
- .result-body pre[data-v-b1c1e4d6]::-webkit-scrollbar-track {
1040
- background: #f1f5f9;
1065
+ .results-content[data-v-622732f3]::-webkit-scrollbar-track,
1066
+ .result-body pre[data-v-622732f3]::-webkit-scrollbar-track {
1067
+ background: #f1f5f9;
1041
1068
  border-radius: 4px;
1042
1069
  }
1043
- .results-content[data-v-b1c1e4d6]::-webkit-scrollbar-thumb,
1044
- .result-body pre[data-v-b1c1e4d6]::-webkit-scrollbar-thumb {
1045
- background: #cbd5e1;
1070
+ .results-content[data-v-622732f3]::-webkit-scrollbar-thumb,
1071
+ .result-body pre[data-v-622732f3]::-webkit-scrollbar-thumb {
1072
+ background: #cbd5e1;
1046
1073
  border-radius: 4px;
1047
1074
  }
1048
- .results-content[data-v-b1c1e4d6]::-webkit-scrollbar-thumb:hover,
1049
- .result-body pre[data-v-b1c1e4d6]::-webkit-scrollbar-thumb:hover {
1075
+ .results-content[data-v-622732f3]::-webkit-scrollbar-thumb:hover,
1076
+ .result-body pre[data-v-622732f3]::-webkit-scrollbar-thumb:hover {
1050
1077
  background: #94a3b8;
1051
- }
1078
+ }
1052
1079
 
1053
- .database-detail[data-v-fd20d470] {
1054
- width: 100%;
1055
- height: 100%;
1056
- display: flex;
1080
+ .database-detail[data-v-7ce335e1] {
1081
+ width: 100%;
1082
+ height: 100%;
1083
+ display: flex;
1057
1084
  flex-direction: column;
1058
1085
  }
1059
- .sql-executor-section[data-v-fd20d470] {
1060
- margin: 15px 0;
1061
- padding: 15px;
1062
- background-color: #f8f9fa;
1063
- border-radius: 4px;
1064
- border: 1px solid #dee2e6;
1065
- flex: 1;
1086
+ .sql-executor-section[data-v-7ce335e1] {
1087
+ margin: 15px 0;
1088
+ padding: 15px;
1089
+ background-color: #f8f9fa;
1090
+ border-radius: 4px;
1091
+ border: 1px solid #dee2e6;
1092
+ flex: 1;
1066
1093
  display: flex;
1067
- }
1068
-
1094
+ }
1095
+
1069
1096
  /* 加载状态样式 */
1070
- .loading-state[data-v-fd20d470] {
1071
- display: flex;
1072
- flex-direction: column;
1073
- align-items: center;
1074
- justify-content: center;
1075
- padding: 40px 0;
1097
+ .loading-state[data-v-7ce335e1] {
1098
+ display: flex;
1099
+ flex-direction: column;
1100
+ align-items: center;
1101
+ justify-content: center;
1102
+ padding: 40px 0;
1076
1103
  color: #6c757d;
1077
1104
  }
1078
- .loading-state .spinner-border[data-v-fd20d470] {
1079
- margin-bottom: 15px;
1105
+ .loading-state .spinner-border[data-v-7ce335e1] {
1106
+ margin-bottom: 15px;
1080
1107
  color: #0d6efd;
1081
1108
  }
1082
- .loading-state p[data-v-fd20d470] {
1083
- margin: 0;
1109
+ .loading-state p[data-v-7ce335e1] {
1110
+ margin: 0;
1084
1111
  font-size: 14px;
1085
1112
  }
1086
- .database-header[data-v-fd20d470] {
1087
- padding: 1rem;
1088
- background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
1113
+ .database-header[data-v-7ce335e1] {
1114
+ padding: 1rem;
1115
+ background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
1089
1116
  border-bottom: 1px solid #e2e8f0;
1090
1117
  }
1091
- .database-header-content[data-v-fd20d470] {
1092
- display: flex;
1093
- justify-content: space-between;
1094
- align-items: center;
1118
+ .database-header-content[data-v-7ce335e1] {
1119
+ display: flex;
1120
+ justify-content: space-between;
1121
+ align-items: center;
1095
1122
  gap: 2rem;
1096
1123
  }
1097
- .database-info[data-v-fd20d470] {
1098
- display: flex;
1099
- align-items: center;
1124
+ .database-info[data-v-7ce335e1] {
1125
+ display: flex;
1126
+ align-items: center;
1100
1127
  gap: 1rem;
1101
1128
  }
1102
- .database-icon[data-v-fd20d470] {
1103
- width: 60px;
1104
- height: 60px;
1105
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1106
- border-radius: 12px;
1107
- display: flex;
1108
- align-items: center;
1109
- justify-content: center;
1110
- color: white;
1129
+ .database-icon[data-v-7ce335e1] {
1130
+ width: 60px;
1131
+ height: 60px;
1132
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1133
+ border-radius: 12px;
1134
+ display: flex;
1135
+ align-items: center;
1136
+ justify-content: center;
1137
+ color: white;
1111
1138
  font-size: 1.5rem;
1112
1139
  }
1113
- .database-meta h4[data-v-fd20d470] {
1114
- margin: 0 0 0.5rem 0;
1115
- color: #1e293b;
1140
+ .database-meta h4[data-v-7ce335e1] {
1141
+ margin: 0 0 0.5rem 0;
1142
+ color: #1e293b;
1116
1143
  font-weight: 600;
1117
1144
  }
1118
- .connection-info[data-v-fd20d470] {
1119
- display: flex;
1145
+ .connection-info[data-v-7ce335e1] {
1146
+ display: flex;
1120
1147
  gap: 0.75rem;
1121
1148
  }
1122
- .connection-name[data-v-fd20d470] {
1123
- background: rgba(102, 126, 234, 0.1);
1124
- color: #667eea;
1125
- padding: 0.25rem 0.5rem;
1126
- border-radius: 12px;
1127
- font-size: 0.875rem;
1149
+ .connection-name[data-v-7ce335e1] {
1150
+ background: rgba(102, 126, 234, 0.1);
1151
+ color: #667eea;
1152
+ padding: 0.25rem 0.5rem;
1153
+ border-radius: 12px;
1154
+ font-size: 0.875rem;
1128
1155
  font-weight: 500;
1129
1156
  }
1130
- .connection-type[data-v-fd20d470] {
1131
- background: #f1f5f9;
1132
- color: #64748b;
1133
- padding: 0.25rem 0.5rem;
1134
- border-radius: 12px;
1135
- font-size: 0.875rem;
1157
+ .connection-type[data-v-7ce335e1] {
1158
+ background: #f1f5f9;
1159
+ color: #64748b;
1160
+ padding: 0.25rem 0.5rem;
1161
+ border-radius: 12px;
1162
+ font-size: 0.875rem;
1136
1163
  font-weight: 500;
1137
1164
  }
1138
- .database-stats[data-v-fd20d470] {
1139
- display: flex;
1165
+ .database-stats[data-v-7ce335e1] {
1166
+ display: flex;
1140
1167
  gap: 2rem;
1141
1168
  }
1142
- .stat-item[data-v-fd20d470] {
1169
+ .stat-item[data-v-7ce335e1] {
1143
1170
  text-align: center;
1144
1171
  }
1145
- .stat-value[data-v-fd20d470] {
1146
- font-size: 1.5rem;
1147
- font-weight: 700;
1148
- color: #1e293b;
1172
+ .stat-value[data-v-7ce335e1] {
1173
+ font-size: 1.5rem;
1174
+ font-weight: 700;
1175
+ color: #1e293b;
1149
1176
  margin-bottom: 0.25rem;
1150
1177
  }
1151
- .stat-label[data-v-fd20d470] {
1152
- font-size: 0.875rem;
1153
- color: #64748b;
1178
+ .stat-label[data-v-7ce335e1] {
1179
+ font-size: 0.875rem;
1180
+ color: #64748b;
1154
1181
  font-weight: 500;
1155
1182
  }
1156
- .database-tabs[data-v-fd20d470] {
1157
- flex: 1;
1158
- overflow: hidden;
1159
- display: flex;
1183
+ .database-tabs[data-v-7ce335e1] {
1184
+ flex: 1;
1185
+ overflow: hidden;
1186
+ display: flex;
1160
1187
  flex-direction: column;
1161
1188
  }
1162
- .nav-tabs[data-v-fd20d470] {
1163
- background: #f8fafc;
1164
- border-bottom: 1px solid #e2e8f0;
1189
+ .nav-tabs[data-v-7ce335e1] {
1190
+ background: #f8fafc;
1191
+ border-bottom: 1px solid #e2e8f0;
1165
1192
  padding: 0 1.5rem;
1166
1193
  }
1167
- .nav-link[data-v-fd20d470] {
1168
- border: none;
1169
- background: transparent;
1170
- color: #64748b;
1171
- padding: 1rem 1.5rem;
1172
- font-weight: 500;
1194
+ .nav-link[data-v-7ce335e1] {
1195
+ border: none;
1196
+ background: transparent;
1197
+ color: #64748b;
1198
+ padding: 1rem 1.5rem;
1199
+ font-weight: 500;
1173
1200
  transition: all 0.2s ease;
1174
1201
  }
1175
- .nav-link[data-v-fd20d470]:hover {
1176
- color: #667eea;
1202
+ .nav-link[data-v-7ce335e1]:hover {
1203
+ color: #667eea;
1177
1204
  background: rgba(102, 126, 234, 0.1);
1178
1205
  }
1179
- .nav-link.active[data-v-fd20d470] {
1180
- color: #667eea;
1181
- background: white;
1206
+ .nav-link.active[data-v-7ce335e1] {
1207
+ color: #667eea;
1208
+ background: white;
1182
1209
  border-bottom: 2px solid #667eea;
1183
1210
  }
1184
- .tab-content[data-v-fd20d470] {
1185
- padding: 1.5rem;
1186
- overflow-y: auto;
1187
- flex: 1;
1188
- display: flex;
1211
+ .tab-content[data-v-7ce335e1] {
1212
+ overflow-y: auto;
1213
+ flex: 1;
1214
+ display: flex;
1189
1215
  flex-direction: column;
1216
+ height: 100%;
1190
1217
  }
1191
- .tab-panel[data-v-fd20d470] {
1192
- flex: 1;
1193
- overflow-y: auto;
1194
- display: flex;
1218
+ .tab-panel[data-v-7ce335e1] {
1219
+ flex: 1;
1220
+ overflow-y: auto;
1221
+ display: flex;
1195
1222
  flex-direction: column;
1223
+ height: 100%;
1196
1224
  }
1197
- .table-grid[data-v-fd20d470] {
1198
- display: grid;
1199
- grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
1225
+ .table-grid[data-v-7ce335e1] {
1226
+ display: grid;
1227
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
1200
1228
  gap: 1rem;
1201
1229
  }
1202
- .table-card[data-v-fd20d470] {
1203
- background: white;
1204
- border: 1px solid #e2e8f0;
1205
- border-radius: 12px;
1206
- overflow: hidden;
1207
- transition: all 0.2s ease;
1230
+ .table-card[data-v-7ce335e1] {
1231
+ background: white;
1232
+ border: 1px solid #e2e8f0;
1233
+ border-radius: 12px;
1234
+ overflow: hidden;
1235
+ transition: all 0.2s ease;
1208
1236
  cursor: pointer;
1209
1237
  }
1210
- .table-card[data-v-fd20d470]:hover {
1211
- border-color: #667eea;
1212
- box-shadow: 0 4px 12px rgba(102, 126, 234, 0.15);
1238
+ .table-card[data-v-7ce335e1]:hover {
1239
+ border-color: #667eea;
1240
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.15);
1213
1241
  transform: translateY(-2px);
1214
1242
  }
1215
- .card-header[data-v-fd20d470] {
1216
- background: #f8fafc;
1217
- padding: 1rem;
1218
- display: flex;
1219
- align-items: center;
1243
+ .card-header[data-v-7ce335e1] {
1244
+ background: #f8fafc;
1245
+ padding: 1rem;
1246
+ display: flex;
1247
+ align-items: center;
1220
1248
  gap: 0.75rem;
1221
1249
  }
1222
- .table-icon[data-v-fd20d470] {
1223
- width: 40px;
1224
- height: 40px;
1225
- background: linear-gradient(135deg, #10b981 0%, #059669 100%);
1226
- border-radius: 8px;
1227
- display: flex;
1228
- align-items: center;
1229
- justify-content: center;
1250
+ .table-icon[data-v-7ce335e1] {
1251
+ width: 40px;
1252
+ height: 40px;
1253
+ background: linear-gradient(135deg, #10b981 0%, #059669 100%);
1254
+ border-radius: 8px;
1255
+ display: flex;
1256
+ align-items: center;
1257
+ justify-content: center;
1230
1258
  color: white;
1231
1259
  }
1232
- .table-name[data-v-fd20d470] {
1233
- font-weight: 600;
1234
- color: #1e293b;
1260
+ .table-name[data-v-7ce335e1] {
1261
+ font-weight: 600;
1262
+ color: #1e293b;
1235
1263
  margin-bottom: 0.25rem;
1236
1264
  }
1237
- .table-engine[data-v-fd20d470] {
1238
- font-size: 0.75rem;
1239
- color: #64748b;
1240
- background: #f1f5f9;
1241
- padding: 0.125rem 0.375rem;
1265
+ .table-engine[data-v-7ce335e1] {
1266
+ font-size: 0.75rem;
1267
+ color: #64748b;
1268
+ background: #f1f5f9;
1269
+ padding: 0.125rem 0.375rem;
1242
1270
  border-radius: 8px;
1243
1271
  }
1244
- .card-body[data-v-fd20d470] {
1272
+ .card-body[data-v-7ce335e1] {
1245
1273
  padding: 1rem;
1246
1274
  }
1247
- .table-stats[data-v-fd20d470] {
1248
- display: flex;
1249
- gap: 1rem;
1275
+ .table-stats[data-v-7ce335e1] {
1276
+ display: flex;
1277
+ gap: 1rem;
1250
1278
  margin-bottom: 0.75rem;
1251
1279
  }
1252
- .stat[data-v-fd20d470] {
1253
- display: flex;
1254
- flex-direction: column;
1280
+ .stat[data-v-7ce335e1] {
1281
+ display: flex;
1282
+ flex-direction: column;
1255
1283
  gap: 0.25rem;
1256
1284
  }
1257
- .table-comment[data-v-fd20d470] {
1258
- font-size: 0.875rem;
1259
- color: #64748b;
1260
- font-style: italic;
1261
- margin-bottom: 0.75rem;
1285
+ .table-comment[data-v-7ce335e1] {
1286
+ font-size: 0.875rem;
1287
+ color: #64748b;
1288
+ font-style: italic;
1289
+ margin-bottom: 0.75rem;
1262
1290
  line-height: 1.4;
1263
1291
  }
1264
- .table-actions[data-v-fd20d470] {
1265
- display: flex;
1292
+ .table-actions[data-v-7ce335e1] {
1293
+ display: flex;
1266
1294
  gap: 0.5rem;
1267
1295
  }
1268
- .empty-state[data-v-fd20d470] {
1269
- display: flex;
1270
- flex-direction: column;
1271
- align-items: center;
1272
- justify-content: center;
1273
- height: 200px;
1274
- color: #64748b;
1275
- text-align: center;
1296
+ .empty-state[data-v-7ce335e1] {
1297
+ display: flex;
1298
+ flex-direction: column;
1299
+ align-items: center;
1300
+ justify-content: center;
1301
+ height: 200px;
1302
+ color: #64748b;
1303
+ text-align: center;
1276
1304
  font-size: 1.5rem;
1277
1305
  }
1278
- .empty-state i[data-v-fd20d470] {
1279
- margin-bottom: 1rem;
1306
+ .empty-state i[data-v-7ce335e1] {
1307
+ margin-bottom: 1rem;
1280
1308
  opacity: 0.5;
1281
- }
1282
-
1309
+ }
1310
+
1283
1311
  /* 视图和存储过程卡片样式 */
1284
- .views-grid[data-v-fd20d470], .procedures-grid[data-v-fd20d470] {
1285
- display: grid;
1286
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
1312
+ .views-grid[data-v-7ce335e1], .procedures-grid[data-v-7ce335e1] {
1313
+ display: grid;
1314
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
1287
1315
  gap: 1rem;
1288
1316
  }
1289
- .view-card[data-v-fd20d470], .procedure-card[data-v-fd20d470] {
1290
- background: white;
1291
- border: 1px solid #e2e8f0;
1292
- border-radius: 12px;
1293
- overflow: hidden;
1317
+ .view-card[data-v-7ce335e1], .procedure-card[data-v-7ce335e1] {
1318
+ background: white;
1319
+ border: 1px solid #e2e8f0;
1320
+ border-radius: 12px;
1321
+ overflow: hidden;
1294
1322
  transition: all 0.2s ease;
1295
1323
  }
1296
- .view-card[data-v-fd20d470]:hover, .procedure-card[data-v-fd20d470]:hover {
1297
- border-color: #667eea;
1298
- box-shadow: 0 4px 12px rgba(102, 126, 234, 0.15);
1324
+ .view-card[data-v-7ce335e1]:hover, .procedure-card[data-v-7ce335e1]:hover {
1325
+ border-color: #667eea;
1326
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.15);
1299
1327
  transform: translateY(-2px);
1300
1328
  }
1301
- .view-card .card-header[data-v-fd20d470], .procedure-card .card-header[data-v-fd20d470] {
1302
- background: #f8fafc;
1303
- padding: 1rem;
1304
- display: flex;
1305
- align-items: center;
1329
+ .view-card .card-header[data-v-7ce335e1], .procedure-card .card-header[data-v-7ce335e1] {
1330
+ background: #f8fafc;
1331
+ padding: 1rem;
1332
+ display: flex;
1333
+ align-items: center;
1306
1334
  gap: 0.75rem;
1307
1335
  }
1308
- .view-icon[data-v-fd20d470], .procedure-icon[data-v-fd20d470] {
1309
- width: 40px;
1310
- height: 40px;
1311
- background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
1312
- border-radius: 8px;
1313
- display: flex;
1314
- align-items: center;
1315
- justify-content: center;
1336
+ .view-icon[data-v-7ce335e1], .procedure-icon[data-v-7ce335e1] {
1337
+ width: 40px;
1338
+ height: 40px;
1339
+ background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
1340
+ border-radius: 8px;
1341
+ display: flex;
1342
+ align-items: center;
1343
+ justify-content: center;
1316
1344
  color: white;
1317
1345
  }
1318
- .procedure-icon[data-v-fd20d470] {
1346
+ .procedure-icon[data-v-7ce335e1] {
1319
1347
  background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
1320
1348
  }
1321
- .view-name[data-v-fd20d470], .procedure-name[data-v-fd20d470] {
1322
- font-weight: 600;
1323
- color: #1e293b;
1349
+ .view-name[data-v-7ce335e1], .procedure-name[data-v-7ce335e1] {
1350
+ font-weight: 600;
1351
+ color: #1e293b;
1324
1352
  margin-bottom: 0.25rem;
1325
1353
  }
1326
- .view-comment[data-v-fd20d470], .procedure-comment[data-v-fd20d470] {
1327
- font-size: 0.75rem;
1328
- color: #64748b;
1329
- margin-bottom: 0.5rem;
1354
+ .view-comment[data-v-7ce335e1], .procedure-comment[data-v-7ce335e1] {
1355
+ font-size: 0.75rem;
1356
+ color: #64748b;
1357
+ margin-bottom: 0.5rem;
1330
1358
  line-height: 1.4;
1331
1359
  }
1332
- .procedure-type[data-v-fd20d470] {
1333
- display: flex;
1334
- gap: 0.25rem;
1360
+ .procedure-type[data-v-7ce335e1] {
1361
+ display: flex;
1362
+ gap: 0.25rem;
1335
1363
  flex-wrap: wrap;
1336
1364
  }
1337
- .view-card .card-body[data-v-fd20d470], .procedure-card .card-body[data-v-fd20d470] {
1365
+ .view-card .card-body[data-v-7ce335e1], .procedure-card .card-body[data-v-7ce335e1] {
1338
1366
  padding: 1rem;
1339
1367
  }
1340
- .view-actions[data-v-fd20d470], .procedure-actions[data-v-fd20d470] {
1341
- display: flex;
1368
+ .view-actions[data-v-7ce335e1], .procedure-actions[data-v-7ce335e1] {
1369
+ display: flex;
1342
1370
  gap: 0.5rem;
1343
1371
  }
1344
- .views-actions[data-v-fd20d470], .procedures-actions[data-v-fd20d470], .tables-actions[data-v-fd20d470] {
1345
- display: flex;
1346
- gap: 0.5rem;
1347
- margin-bottom: 1rem;
1348
- padding: 0.75rem 1rem;
1349
- background: #f8fafc;
1372
+ .views-actions[data-v-7ce335e1], .procedures-actions[data-v-7ce335e1], .tables-actions[data-v-7ce335e1] {
1373
+ display: flex;
1374
+ gap: 0.5rem;
1375
+ margin-bottom: 1rem;
1376
+ padding: 0.75rem 1rem;
1377
+ background: #f8fafc;
1350
1378
  border-radius: 8px;
1351
- }
1352
-
1379
+ }
1380
+
1353
1381
  /* 模态框样式 */
1354
- .modal-dialog[data-v-fd20d470] {
1382
+ .modal-dialog[data-v-7ce335e1] {
1355
1383
  margin-top: 10vh;
1356
1384
  }
1357
- .modal-content[data-v-fd20d470] {
1358
- border-radius: 12px;
1359
- border: none;
1385
+ .modal-content[data-v-7ce335e1] {
1386
+ border-radius: 12px;
1387
+ border: none;
1360
1388
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
1361
1389
  }
1362
- .modal-header[data-v-fd20d470] {
1363
- border-bottom: 1px solid #e2e8f0;
1390
+ .modal-header[data-v-7ce335e1] {
1391
+ border-bottom: 1px solid #e2e8f0;
1364
1392
  padding: 1rem 1.5rem;
1365
1393
  }
1366
- .modal-title[data-v-fd20d470] {
1367
- margin: 0;
1368
- font-weight: 600;
1394
+ .modal-title[data-v-7ce335e1] {
1395
+ margin: 0;
1396
+ font-weight: 600;
1369
1397
  color: #1e293b;
1370
1398
  }
1371
- .modal-body[data-v-fd20d470] {
1399
+ .modal-body[data-v-7ce335e1] {
1372
1400
  padding: 1.5rem;
1373
1401
  }
1374
- .modal-footer[data-v-fd20d470] {
1375
- border-top: 1px solid #e2e8f0;
1376
- padding: 1rem 1.5rem;
1377
- display: flex;
1378
- justify-content: flex-end;
1402
+ .modal-footer[data-v-7ce335e1] {
1403
+ border-top: 1px solid #e2e8f0;
1404
+ padding: 1rem 1.5rem;
1405
+ display: flex;
1406
+ justify-content: flex-end;
1379
1407
  gap: 0.5rem;
1380
- }
1408
+ }
1381
1409
 
1382
- .modal[data-v-bc488007] {
1410
+ .modal[data-v-dc8f434a] {
1383
1411
  background-color: rgba(0, 0, 0, 0.5);
1384
1412
  }
1385
- .modal-dialog[data-v-bc488007] {
1413
+ .modal-dialog[data-v-dc8f434a] {
1386
1414
  max-width: 800px;
1387
1415
  }
1388
- .form-label[data-v-bc488007] {
1389
- font-weight: 500;
1416
+ .form-label[data-v-dc8f434a] {
1417
+ font-weight: 500;
1390
1418
  color: #374151;
1391
1419
  }
1392
- .form-control[data-v-bc488007], .form-select[data-v-bc488007] {
1393
- border: 1px solid #d1d5db;
1420
+ .form-control[data-v-dc8f434a], .form-select[data-v-dc8f434a] {
1421
+ border: 1px solid #d1d5db;
1394
1422
  border-radius: 6px;
1395
1423
  }
1396
- .form-control[data-v-bc488007]:focus, .form-select[data-v-bc488007]:focus {
1397
- border-color: #3b82f6;
1424
+ .form-control[data-v-dc8f434a]:focus, .form-select[data-v-dc8f434a]:focus {
1425
+ border-color: #3b82f6;
1398
1426
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1399
1427
  }
1400
- .modal-header[data-v-bc488007] {
1401
- background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
1428
+ .modal-header[data-v-dc8f434a] {
1429
+ background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
1402
1430
  border-bottom: 1px solid #e2e8f0;
1403
1431
  }
1404
- .modal-title[data-v-bc488007] {
1405
- color: #1e293b;
1432
+ .modal-title[data-v-dc8f434a] {
1433
+ color: #1e293b;
1406
1434
  font-weight: 600;
1407
1435
  }
1408
- .modal-footer[data-v-bc488007] {
1409
- background: #f8fafc;
1436
+ .modal-footer[data-v-dc8f434a] {
1437
+ background: #f8fafc;
1410
1438
  border-top: 1px solid #e2e8f0;
1411
1439
  }
1412
- .text-danger[data-v-bc488007] {
1440
+ .text-danger[data-v-dc8f434a] {
1413
1441
  color: #ef4444;
1414
1442
  }
1415
- .text-muted[data-v-bc488007] {
1416
- color: #6b7280;
1443
+ .text-muted[data-v-dc8f434a] {
1444
+ color: #6b7280;
1417
1445
  font-size: 0.875rem;
1418
1446
  }
1419
- .json-editor textarea[data-v-bc488007] {
1420
- font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
1421
- font-size: 0.875rem;
1422
- line-height: 1.5;
1423
- background-color: #f8fafc;
1424
- border-color: #e2e8f0;
1447
+ .json-editor textarea[data-v-dc8f434a] {
1448
+ font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
1449
+ font-size: 0.875rem;
1450
+ line-height: 1.5;
1451
+ background-color: #f8fafc;
1452
+ border-color: #e2e8f0;
1425
1453
  resize: vertical;
1426
1454
  }
1427
- .json-editor textarea[data-v-bc488007]:focus {
1428
- background-color: #ffffff;
1429
- border-color: #3b82f6;
1455
+ .json-editor textarea[data-v-dc8f434a]:focus {
1456
+ background-color: #ffffff;
1457
+ border-color: #3b82f6;
1430
1458
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1431
1459
  }
1432
- .json-editor .text-muted[data-v-bc488007] {
1460
+ .json-editor .text-muted[data-v-dc8f434a] {
1433
1461
  font-size: 0.75rem;
1434
- }
1462
+ }
1435
1463
 
1436
- .table-detail[data-v-131c5ea4] {
1437
- width: 100%;
1438
- height: 100%;
1439
- display: flex;
1464
+ .table-detail[data-v-23851444] {
1465
+ width: 100%;
1466
+ height: 100%;
1467
+ display: flex;
1440
1468
  flex-direction: column;
1441
1469
  }
1442
- .table-header[data-v-131c5ea4] {
1443
- background-color: #f8f9fa;
1444
- border-bottom: 1px solid #dee2e6;
1470
+ .table-header[data-v-23851444] {
1471
+ background-color: #f8f9fa;
1472
+ border-bottom: 1px solid #dee2e6;
1445
1473
  padding: 15px 20px;
1446
1474
  }
1447
- .table-header-content[data-v-131c5ea4] {
1448
- display: flex;
1449
- justify-content: space-between;
1475
+ .table-header-content[data-v-23851444] {
1476
+ display: flex;
1477
+ justify-content: space-between;
1450
1478
  align-items: center;
1451
1479
  }
1452
- .table-info[data-v-131c5ea4] {
1453
- display: flex;
1454
- align-items: center;
1480
+ .table-info[data-v-23851444] {
1481
+ display: flex;
1482
+ align-items: center;
1455
1483
  gap: 15px;
1456
1484
  }
1457
- .table-icon[data-v-131c5ea4] {
1458
- font-size: 32px;
1485
+ .table-icon[data-v-23851444] {
1486
+ font-size: 32px;
1459
1487
  color: #495057;
1460
1488
  }
1461
- .table-meta[data-v-131c5ea4] {
1462
- display: flex;
1463
- flex-direction: column;
1489
+ .table-meta[data-v-23851444] {
1490
+ display: flex;
1491
+ flex-direction: column;
1464
1492
  gap: 5px;
1465
1493
  }
1466
- .table-name[data-v-131c5ea4] {
1467
- margin: 0;
1468
- font-size: 1.25rem;
1494
+ .table-name[data-v-23851444] {
1495
+ margin: 0;
1496
+ font-size: 1.25rem;
1469
1497
  font-weight: 600;
1470
1498
  }
1471
- .table-breadcrumb[data-v-131c5ea4] {
1472
- display: flex;
1473
- align-items: center;
1474
- gap: 8px;
1475
- font-size: 0.875rem;
1499
+ .table-breadcrumb[data-v-23851444] {
1500
+ display: flex;
1501
+ align-items: center;
1502
+ gap: 8px;
1503
+ font-size: 0.875rem;
1476
1504
  color: #6c757d;
1477
1505
  }
1478
- .table-stats[data-v-131c5ea4] {
1479
- display: flex;
1506
+ .table-stats[data-v-23851444] {
1507
+ display: flex;
1480
1508
  gap: 20px;
1481
1509
  }
1482
- .stat-item[data-v-131c5ea4] {
1483
- display: flex;
1484
- flex-direction: column;
1485
- align-items: center;
1510
+ .stat-item[data-v-23851444] {
1511
+ display: flex;
1512
+ flex-direction: column;
1513
+ align-items: center;
1486
1514
  gap: 2px;
1487
1515
  }
1488
- .stat-value[data-v-131c5ea4] {
1489
- font-size: 1.125rem;
1490
- font-weight: 600;
1516
+ .stat-value[data-v-23851444] {
1517
+ font-size: 1.125rem;
1518
+ font-weight: 600;
1491
1519
  color: #495057;
1492
1520
  }
1493
- .stat-label[data-v-131c5ea4] {
1494
- font-size: 0.75rem;
1521
+ .stat-label[data-v-23851444] {
1522
+ font-size: 0.75rem;
1495
1523
  color: #6c757d;
1496
1524
  }
1497
- .table-toolbar[data-v-131c5ea4] {
1498
- display: flex;
1499
- justify-content: space-between;
1500
- align-items: center;
1501
- padding: 10px 20px;
1502
- background-color: #f8f9fa;
1525
+ .table-toolbar[data-v-23851444] {
1526
+ display: flex;
1527
+ justify-content: space-between;
1528
+ align-items: center;
1529
+ padding: 10px 20px;
1530
+ background-color: #f8f9fa;
1503
1531
  border-bottom: 1px solid #dee2e6;
1504
1532
  }
1505
- .toolbar-left[data-v-131c5ea4] {
1506
- display: flex;
1507
- gap: 10px;
1533
+ .toolbar-left[data-v-23851444] {
1534
+ display: flex;
1535
+ gap: 10px;
1508
1536
  align-items: center;
1509
1537
  }
1510
- .toolbar-right[data-v-131c5ea4] {
1511
- display: flex;
1512
- gap: 10px;
1538
+ .toolbar-right[data-v-23851444] {
1539
+ display: flex;
1540
+ gap: 10px;
1513
1541
  align-items: center;
1514
1542
  }
1515
- .table-tabs[data-v-131c5ea4] {
1516
- flex: 1;
1517
- display: flex;
1518
- flex-direction: column;
1519
- overflow: hidden;
1543
+ .table-tabs[data-v-23851444] {
1544
+ flex: 1;
1545
+ display: flex;
1546
+ flex-direction: column;
1520
1547
  }
1521
- .nav-tabs[data-v-131c5ea4] {
1522
- border-bottom: 1px solid #dee2e6;
1548
+ .nav-tabs[data-v-23851444] {
1549
+ border-bottom: 1px solid #dee2e6;
1523
1550
  background-color: #f8f9fa;
1524
1551
  }
1525
- .nav-tabs .nav-link[data-v-131c5ea4] {
1526
- color: #495057;
1527
- border: none;
1528
- border-bottom: 3px solid transparent;
1529
- border-radius: 0;
1530
- padding: 10px 15px;
1552
+ .nav-tabs .nav-link[data-v-23851444] {
1553
+ color: #495057;
1554
+ border: none;
1555
+ border-bottom: 3px solid transparent;
1556
+ border-radius: 0;
1557
+ padding: 10px 15px;
1531
1558
  font-weight: 500;
1532
1559
  }
1533
- .nav-tabs .nav-link[data-v-131c5ea4]:hover {
1534
- background-color: #e9ecef;
1560
+ .nav-tabs .nav-link[data-v-23851444]:hover {
1561
+ background-color: #e9ecef;
1535
1562
  border-bottom-color: #adb5bd;
1536
1563
  }
1537
- .nav-tabs .nav-link.active[data-v-131c5ea4] {
1538
- background-color: #fff;
1539
- border-bottom-color: #0d6efd;
1564
+ .nav-tabs .nav-link.active[data-v-23851444] {
1565
+ background-color: #fff;
1566
+ border-bottom-color: #0d6efd;
1540
1567
  color: #0d6efd;
1541
1568
  }
1542
- .tab-content[data-v-131c5ea4] {
1543
- flex: 1;
1544
- overflow: auto;
1545
- padding: 20px;
1569
+ .tab-content[data-v-23851444] {
1570
+ flex: 1;
1571
+ overflow: auto;
1572
+ padding: 20px;
1546
1573
  background-color: #fff;
1547
1574
  }
1548
- .tab-panel[data-v-131c5ea4] {
1575
+ .tab-panel[data-v-23851444] {
1549
1576
  height: 100%;
1550
1577
  }
1551
- .data-content[data-v-131c5ea4] {
1552
- height: 100%;
1553
- display: flex;
1578
+ .data-content[data-v-23851444] {
1579
+ height: 100%;
1580
+ display: flex;
1554
1581
  flex-direction: column;
1555
1582
  }
1556
- .data-content.loading[data-v-131c5ea4] {
1557
- opacity: 0.7;
1583
+ .data-content.loading[data-v-23851444] {
1584
+ opacity: 0.7;
1558
1585
  pointer-events: none;
1559
1586
  }
1560
- .table-responsive[data-v-131c5ea4] {
1561
- flex: 1;
1587
+ .table-responsive[data-v-23851444] {
1588
+ flex: 1;
1562
1589
  overflow: auto;
1563
1590
  }
1564
- .column-header[data-v-131c5ea4] {
1591
+ .column-header[data-v-23851444] {
1565
1592
  position: relative;
1566
1593
  }
1567
- .column-key[data-v-131c5ea4] {
1568
- position: absolute;
1569
- top: -5px;
1570
- right: -15px;
1571
- color: #0d6efd;
1594
+ .column-key[data-v-23851444] {
1595
+ position: absolute;
1596
+ top: -5px;
1597
+ right: -15px;
1598
+ color: #0d6efd;
1572
1599
  font-size: 0.75rem;
1573
1600
  }
1574
- .cell-value[data-v-131c5ea4] {
1575
- max-width: 200px;
1576
- overflow: hidden;
1577
- text-overflow: ellipsis;
1601
+ .cell-value[data-v-23851444] {
1602
+ max-width: 200px;
1603
+ overflow: hidden;
1604
+ text-overflow: ellipsis;
1578
1605
  white-space: nowrap;
1579
1606
  }
1580
- .loading-state[data-v-131c5ea4] {
1581
- display: flex;
1582
- flex-direction: column;
1583
- align-items: center;
1584
- justify-content: center;
1585
- height: 300px;
1607
+ .loading-state[data-v-23851444] {
1608
+ display: flex;
1609
+ flex-direction: column;
1610
+ align-items: center;
1611
+ justify-content: center;
1612
+ height: 300px;
1586
1613
  gap: 15px;
1587
1614
  }
1588
- .empty-state[data-v-131c5ea4] {
1589
- display: flex;
1590
- flex-direction: column;
1591
- align-items: center;
1592
- justify-content: center;
1593
- height: 300px;
1594
- gap: 15px;
1615
+ .empty-state[data-v-23851444] {
1616
+ display: flex;
1617
+ flex-direction: column;
1618
+ align-items: center;
1619
+ justify-content: center;
1620
+ height: 300px;
1621
+ gap: 15px;
1595
1622
  color: #6c757d;
1596
1623
  }
1597
- .empty-state i[data-v-131c5ea4] {
1598
- font-size: 48px;
1624
+ .empty-state i[data-v-23851444] {
1625
+ font-size: 48px;
1599
1626
  opacity: 0.5;
1600
1627
  }
1601
- .pagination-nav[data-v-131c5ea4] {
1602
- margin-top: 20px;
1603
- border-top: 1px solid #dee2e6;
1628
+ .pagination-nav[data-v-23851444] {
1629
+ margin-top: 20px;
1630
+ border-top: 1px solid #dee2e6;
1604
1631
  padding-top: 15px;
1605
1632
  }
1606
- .pagination-container[data-v-131c5ea4] {
1607
- display: flex;
1608
- align-items: center;
1609
- justify-content: space-between;
1610
- flex-wrap: wrap;
1633
+ .pagination-container[data-v-23851444] {
1634
+ display: flex;
1635
+ align-items: center;
1636
+ justify-content: space-between;
1637
+ flex-wrap: wrap;
1611
1638
  gap: 10px;
1612
1639
  }
1613
- .pagination-info[data-v-131c5ea4] {
1614
- font-size: 0.875rem;
1640
+ .pagination-info[data-v-23851444] {
1641
+ font-size: 0.875rem;
1615
1642
  color: #6c757d;
1616
1643
  }
1617
- .page-size-selector[data-v-131c5ea4] {
1618
- display: flex;
1619
- align-items: center;
1644
+ .page-size-selector[data-v-23851444] {
1645
+ display: flex;
1646
+ align-items: center;
1620
1647
  gap: 5px;
1621
1648
  }
1622
- .page-jump[data-v-131c5ea4] {
1623
- display: flex;
1624
- align-items: center;
1649
+ .page-jump[data-v-23851444] {
1650
+ display: flex;
1651
+ align-items: center;
1625
1652
  gap: 5px;
1626
1653
  }
1627
- .structure-actions[data-v-131c5ea4] {
1628
- display: flex;
1629
- gap: 10px;
1654
+ .structure-actions[data-v-23851444] {
1655
+ display: flex;
1656
+ gap: 10px;
1630
1657
  margin-bottom: 15px;
1631
1658
  }
1632
- .structure-table[data-v-131c5ea4], .indexes-table[data-v-131c5ea4], .relations-table[data-v-131c5ea4] {
1659
+ .structure-table[data-v-23851444], .indexes-table[data-v-23851444], .relations-table[data-v-23851444] {
1633
1660
  overflow: auto;
1634
1661
  }
1635
- .structure-table table[data-v-131c5ea4], .indexes-table table[data-v-131c5ea4], .relations-table table[data-v-131c5ea4] {
1662
+ .structure-table table[data-v-23851444], .indexes-table table[data-v-23851444], .relations-table table[data-v-23851444] {
1636
1663
  width: 100%;
1637
1664
  }
1638
- .sql-section[data-v-131c5ea4] {
1665
+ .sql-section[data-v-23851444] {
1639
1666
  height: 100%;
1640
- }
1641
-
1667
+ }
1668
+
1642
1669
  /* 响应式设计 */
1643
1670
  @media (max-width: 768px) {
1644
- .table-header-content[data-v-131c5ea4] {
1645
- flex-direction: column;
1646
- align-items: flex-start;
1671
+ .table-header-content[data-v-23851444] {
1672
+ flex-direction: column;
1673
+ align-items: flex-start;
1647
1674
  gap: 15px;
1648
1675
  }
1649
- .table-stats[data-v-131c5ea4] {
1650
- width: 100%;
1676
+ .table-stats[data-v-23851444] {
1677
+ width: 100%;
1651
1678
  justify-content: space-around;
1652
1679
  }
1653
- .table-toolbar[data-v-131c5ea4] {
1654
- flex-direction: column;
1655
- align-items: stretch;
1680
+ .table-toolbar[data-v-23851444] {
1681
+ flex-direction: column;
1682
+ align-items: stretch;
1656
1683
  gap: 10px;
1657
1684
  }
1658
- .toolbar-left[data-v-131c5ea4], .toolbar-right[data-v-131c5ea4] {
1685
+ .toolbar-left[data-v-23851444], .toolbar-right[data-v-23851444] {
1659
1686
  justify-content: center;
1660
1687
  }
1661
- .pagination-container[data-v-131c5ea4] {
1662
- flex-direction: column;
1663
- align-items: flex-start;
1688
+ .pagination-container[data-v-23851444] {
1689
+ flex-direction: column;
1690
+ align-items: flex-start;
1664
1691
  gap: 15px;
1665
1692
  }
1666
- .pagination[data-v-131c5ea4] {
1667
- width: 100%;
1693
+ .pagination[data-v-23851444] {
1694
+ width: 100%;
1668
1695
  justify-content: center;
1669
1696
  }
1670
- }
1697
+ }
1671
1698
 
1672
- .database-explorer[data-v-f2a7bdef] {
1673
- height: 100vh;
1699
+ .database-explorer[data-v-54c47218] {
1700
+ height: 100vh;
1674
1701
  min-height: 600px;
1675
1702
  }
1676
- .explorer-layout[data-v-f2a7bdef] {
1677
- display: flex;
1678
- height: 100%;
1679
- background: white;
1680
- border-radius: 12px;
1681
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
1703
+ .explorer-layout[data-v-54c47218] {
1704
+ display: flex;
1705
+ height: 100%;
1706
+ background: white;
1707
+ border-radius: 12px;
1708
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
1682
1709
  overflow: hidden;
1683
- }
1684
-
1710
+ }
1711
+
1685
1712
  /* 左侧边栏 */
1686
- .explorer-sidebar[data-v-f2a7bdef] {
1687
- width: 350px;
1688
- flex-shrink: 0;
1689
- border-right: 1px solid #e1e5e9;
1690
- display: flex;
1691
- flex-direction: column;
1713
+ .explorer-sidebar[data-v-54c47218] {
1714
+ width: 350px;
1715
+ flex-shrink: 0;
1716
+ border-right: 1px solid #e1e5e9;
1717
+ display: flex;
1718
+ flex-direction: column;
1692
1719
  background: #ffffff;
1693
1720
  }
1694
- .sidebar-header[data-v-f2a7bdef] {
1695
- padding: 1rem 0.875rem;
1696
- border-bottom: 1px solid #e1e5e9;
1697
- background: #f8f9fa;
1698
- display: flex;
1699
- justify-content: space-between;
1700
- align-items: center;
1701
- }
1702
- .sidebar-title[data-v-f2a7bdef] {
1703
- margin: 0;
1704
- font-size: 0.9375rem;
1705
- font-weight: 600;
1706
- color: #24292f;
1707
- display: flex;
1708
- align-items: center;
1721
+ .sidebar-header[data-v-54c47218] {
1722
+ padding: 1rem 0.875rem;
1723
+ border-bottom: 1px solid #e1e5e9;
1724
+ background: #f8f9fa;
1725
+ display: flex;
1726
+ justify-content: space-between;
1727
+ align-items: center;
1728
+ }
1729
+ .sidebar-title[data-v-54c47218] {
1730
+ margin: 0;
1731
+ font-size: 0.9375rem;
1732
+ font-weight: 600;
1733
+ color: #24292f;
1734
+ display: flex;
1735
+ align-items: center;
1709
1736
  gap: 0.5rem;
1710
1737
  }
1711
- .sidebar-title i[data-v-f2a7bdef] {
1738
+ .sidebar-title i[data-v-54c47218] {
1712
1739
  color: #656d76;
1713
1740
  }
1714
- .sidebar-actions[data-v-f2a7bdef] {
1715
- display: flex;
1741
+ .sidebar-actions[data-v-54c47218] {
1742
+ display: flex;
1716
1743
  gap: 0.25rem;
1717
1744
  }
1718
- .sidebar-actions .btn[data-v-f2a7bdef] {
1719
- padding: 0.375rem 0.625rem;
1720
- font-size: 0.75rem;
1721
- border: 1px solid #d0d7de;
1722
- background-color: #ffffff;
1723
- color: #24292f;
1724
- border-radius: 6px;
1745
+ .sidebar-actions .btn[data-v-54c47218] {
1746
+ padding: 0.375rem 0.625rem;
1747
+ font-size: 0.75rem;
1748
+ border: 1px solid #d0d7de;
1749
+ background-color: #ffffff;
1750
+ color: #24292f;
1751
+ border-radius: 6px;
1725
1752
  transition: all 0.15s ease;
1726
1753
  }
1727
- .sidebar-actions .btn[data-v-f2a7bdef]:hover {
1728
- background-color: #f3f4f6;
1754
+ .sidebar-actions .btn[data-v-54c47218]:hover {
1755
+ background-color: #f3f4f6;
1729
1756
  border-color: #d0d7de;
1730
1757
  }
1731
- .sidebar-actions .btn-outline-primary[data-v-f2a7bdef] {
1732
- border-color: #0969da;
1758
+ .sidebar-actions .btn-outline-primary[data-v-54c47218] {
1759
+ border-color: #0969da;
1733
1760
  color: #0969da;
1734
1761
  }
1735
- .sidebar-actions .btn-outline-primary[data-v-f2a7bdef]:hover {
1736
- background-color: #0969da;
1737
- border-color: #0969da;
1762
+ .sidebar-actions .btn-outline-primary[data-v-54c47218]:hover {
1763
+ background-color: #0969da;
1764
+ border-color: #0969da;
1738
1765
  color: #ffffff;
1739
1766
  }
1740
- .sidebar-actions .btn-outline-success[data-v-f2a7bdef] {
1741
- border-color: #1a7f37;
1767
+ .sidebar-actions .btn-outline-success[data-v-54c47218] {
1768
+ border-color: #1a7f37;
1742
1769
  color: #1a7f37;
1743
1770
  }
1744
- .sidebar-actions .btn-outline-success[data-v-f2a7bdef]:hover {
1745
- background-color: #1a7f37;
1746
- border-color: #1a7f37;
1771
+ .sidebar-actions .btn-outline-success[data-v-54c47218]:hover {
1772
+ background-color: #1a7f37;
1773
+ border-color: #1a7f37;
1747
1774
  color: #ffffff;
1748
1775
  }
1749
- .sidebar-content[data-v-f2a7bdef] {
1750
- flex: 1;
1751
- overflow-y: auto;
1776
+ .sidebar-content[data-v-54c47218] {
1777
+ flex: 1;
1778
+ overflow-y: auto;
1752
1779
  padding: 0.5rem 0;
1753
- }
1754
-
1780
+ }
1781
+
1755
1782
  /* 树形结构 */
1756
- .tree-container[data-v-f2a7bdef] {
1757
- font-size: 0.875rem;
1783
+ .tree-container[data-v-54c47218] {
1784
+ font-size: 0.875rem;
1758
1785
  user-select: none;
1759
1786
  }
1760
- .tree-node[data-v-f2a7bdef] {
1787
+ .tree-node[data-v-54c47218] {
1761
1788
  margin-bottom: 0;
1762
1789
  }
1763
- .tree-children[data-v-f2a7bdef] {
1764
- margin-left: 0.75rem;
1765
- border-left: 1px solid #e1e5e9;
1790
+ .tree-children[data-v-54c47218] {
1791
+ margin-left: 0.75rem;
1792
+ border-left: 1px solid #e1e5e9;
1766
1793
  padding-left: 0.5rem;
1767
1794
  }
1768
- .node-content[data-v-f2a7bdef] {
1769
- display: flex;
1770
- align-items: center;
1771
- padding: 0.375rem 0.75rem;
1772
- cursor: pointer;
1773
- transition: background-color 0.15s ease;
1774
- position: relative;
1775
- margin-right: 0.5rem;
1776
- border-radius: 6px;
1795
+ .node-content[data-v-54c47218] {
1796
+ display: flex;
1797
+ align-items: center;
1798
+ padding: 0.375rem 0.75rem;
1799
+ cursor: pointer;
1800
+ transition: background-color 0.15s ease;
1801
+ position: relative;
1802
+ margin-right: 0.5rem;
1803
+ border-radius: 6px;
1777
1804
  gap: 0.25rem;
1778
1805
  }
1779
- .node-expand[data-v-f2a7bdef] {
1780
- width: 16px;
1781
- height: 16px;
1782
- display: flex;
1783
- align-items: center;
1784
- justify-content: center;
1785
- flex-shrink: 0;
1806
+ .node-expand[data-v-54c47218] {
1807
+ width: 16px;
1808
+ height: 16px;
1809
+ display: flex;
1810
+ align-items: center;
1811
+ justify-content: center;
1812
+ flex-shrink: 0;
1786
1813
  margin-right: 0.25rem;
1787
1814
  }
1788
- .node-expand i[data-v-f2a7bdef] {
1789
- font-size: 0.6875rem;
1790
- color: #656d76;
1815
+ .node-expand i[data-v-54c47218] {
1816
+ font-size: 0.6875rem;
1817
+ color: #656d76;
1791
1818
  transition: transform 0.15s ease;
1792
1819
  }
1793
- .node-expand i.expanded[data-v-f2a7bdef] {
1820
+ .node-expand i.expanded[data-v-54c47218] {
1794
1821
  transform: rotate(90deg);
1795
1822
  }
1796
- .node-main[data-v-f2a7bdef] {
1797
- display: flex;
1798
- align-items: center;
1799
- flex: 1;
1823
+ .node-main[data-v-54c47218] {
1824
+ display: flex;
1825
+ align-items: center;
1826
+ flex: 1;
1800
1827
  min-width: 0;
1801
1828
  }
1802
- .node-content[data-v-f2a7bdef]:hover {
1829
+ .node-content[data-v-54c47218]:hover {
1803
1830
  background-color: #f3f4f6;
1804
1831
  }
1805
- .tree-node.selected .node-content[data-v-f2a7bdef] {
1806
- background-color: #eff1ff;
1807
- color: #0969da;
1808
- font-weight: 500;
1832
+ .tree-node.selected .node-content[data-v-54c47218] {
1833
+ background-color: #eff1ff;
1834
+ color: #0969da;
1835
+ font-weight: 500;
1809
1836
  box-shadow: 0 2px 8px rgba(9, 105, 218, 0.15);
1810
1837
  }
1811
- .tree-node.selected .node-content[data-v-f2a7bdef]::before {
1812
- content: '';
1813
- position: absolute;
1814
- left: 0;
1815
- top: 0;
1816
- bottom: 0;
1817
- width: 3px;
1818
- background: linear-gradient(135deg, #0969da, #0550ae);
1838
+ .tree-node.selected .node-content[data-v-54c47218]::before {
1839
+ content: '';
1840
+ position: absolute;
1841
+ left: 0;
1842
+ top: 0;
1843
+ bottom: 0;
1844
+ width: 3px;
1845
+ background: linear-gradient(135deg, #0969da, #0550ae);
1819
1846
  border-radius: 3px 0 0 3px;
1820
1847
  }
1821
- .node-icon[data-v-f2a7bdef] {
1822
- width: 20px;
1823
- display: flex;
1824
- justify-content: center;
1825
- flex-shrink: 0;
1848
+ .node-icon[data-v-54c47218] {
1849
+ width: 20px;
1850
+ display: flex;
1851
+ justify-content: center;
1852
+ flex-shrink: 0;
1826
1853
  margin-right: 0.5rem;
1827
1854
  }
1828
- .node-icon i[data-v-f2a7bdef] {
1855
+ .node-icon i[data-v-54c47218] {
1829
1856
  font-size: 0.875rem;
1830
1857
  }
1831
- .node-label[data-v-f2a7bdef] {
1832
- flex: 1;
1833
- display: flex;
1834
- align-items: center;
1835
- gap: 0.375rem;
1858
+ .node-label[data-v-54c47218] {
1859
+ flex: 1;
1860
+ display: flex;
1861
+ align-items: center;
1862
+ gap: 0.375rem;
1836
1863
  min-width: 0;
1837
1864
  }
1838
- .connection-name[data-v-f2a7bdef],
1839
- .database-name[data-v-f2a7bdef],
1840
- .table-name[data-v-f2a7bdef] {
1841
- font-weight: 500;
1842
- white-space: nowrap;
1843
- overflow: hidden;
1844
- text-overflow: ellipsis;
1865
+ .connection-name[data-v-54c47218],
1866
+ .database-name[data-v-54c47218],
1867
+ .table-name[data-v-54c47218] {
1868
+ font-weight: 500;
1869
+ white-space: nowrap;
1870
+ overflow: hidden;
1871
+ text-overflow: ellipsis;
1845
1872
  line-height: 1.25;
1846
1873
  }
1847
- .tree-node.selected .connection-name[data-v-f2a7bdef],
1848
- .tree-node.selected .database-name[data-v-f2a7bdef],
1849
- .tree-node.selected .table-name[data-v-f2a7bdef] {
1874
+ .tree-node.selected .connection-name[data-v-54c47218],
1875
+ .tree-node.selected .database-name[data-v-54c47218],
1876
+ .tree-node.selected .table-name[data-v-54c47218] {
1850
1877
  font-weight: 600;
1851
1878
  }
1852
- .connection-type[data-v-f2a7bdef],
1853
- .table-info[data-v-f2a7bdef] {
1854
- font-size: 0.75rem;
1855
- color: #656d76;
1856
- background-color: #f6f8fa;
1857
- padding: 0.125rem 0.375rem;
1858
- border-radius: 12px;
1859
- font-weight: 500;
1879
+ .connection-type[data-v-54c47218],
1880
+ .table-info[data-v-54c47218] {
1881
+ font-size: 0.75rem;
1882
+ color: #656d76;
1883
+ background-color: #f6f8fa;
1884
+ padding: 0.125rem 0.375rem;
1885
+ border-radius: 12px;
1886
+ font-weight: 500;
1860
1887
  white-space: nowrap;
1861
1888
  }
1862
- .tree-node.selected .connection-type[data-v-f2a7bdef],
1863
- .tree-node.selected .table-info[data-v-f2a7bdef] {
1864
- background-color: rgba(9, 105, 218, 0.1);
1889
+ .tree-node.selected .connection-type[data-v-54c47218],
1890
+ .tree-node.selected .table-info[data-v-54c47218] {
1891
+ background-color: rgba(9, 105, 218, 0.1);
1865
1892
  color: #0969da;
1866
1893
  }
1867
- .node-actions[data-v-f2a7bdef] {
1868
- display: flex;
1869
- gap: 0.125rem;
1870
- opacity: 0;
1894
+ .node-actions[data-v-54c47218] {
1895
+ display: flex;
1896
+ gap: 0.125rem;
1897
+ opacity: 0;
1871
1898
  transition: opacity 0.15s ease;
1872
1899
  }
1873
- .node-content:hover .node-actions[data-v-f2a7bdef] {
1900
+ .node-content:hover .node-actions[data-v-54c47218] {
1874
1901
  opacity: 1;
1875
1902
  }
1876
- .btn-icon[data-v-f2a7bdef] {
1877
- padding: 0.25rem;
1878
- background: transparent;
1879
- border: none;
1880
- border-radius: 4px;
1881
- transition: background-color 0.15s ease;
1882
- display: flex;
1883
- align-items: center;
1884
- justify-content: center;
1885
- width: 20px;
1903
+ .btn-icon[data-v-54c47218] {
1904
+ padding: 0.25rem;
1905
+ background: transparent;
1906
+ border: none;
1907
+ border-radius: 4px;
1908
+ transition: background-color 0.15s ease;
1909
+ display: flex;
1910
+ align-items: center;
1911
+ justify-content: center;
1912
+ width: 20px;
1886
1913
  height: 20px;
1887
1914
  }
1888
- .btn-icon[data-v-f2a7bdef]:hover {
1915
+ .btn-icon[data-v-54c47218]:hover {
1889
1916
  background-color: #e1e4e8;
1890
1917
  }
1891
- .btn-icon i[data-v-f2a7bdef] {
1892
- font-size: 0.6875rem;
1918
+ .btn-icon i[data-v-54c47218] {
1919
+ font-size: 0.6875rem;
1893
1920
  color: #656d76;
1894
1921
  }
1895
- .tree-node.selected .btn-icon[data-v-f2a7bdef]:hover {
1922
+ .tree-node.selected .btn-icon[data-v-54c47218]:hover {
1896
1923
  background-color: rgba(9, 105, 218, 0.1);
1897
1924
  }
1898
- .tree-node.selected .btn-icon i[data-v-f2a7bdef] {
1925
+ .tree-node.selected .btn-icon i[data-v-54c47218] {
1899
1926
  color: #656d76;
1900
1927
  }
1901
- .tree-node.selected .btn-icon:hover i[data-v-f2a7bdef] {
1928
+ .tree-node.selected .btn-icon:hover i[data-v-54c47218] {
1902
1929
  color: #0969da;
1903
1930
  }
1904
- .btn-icon-danger[data-v-f2a7bdef]:hover {
1931
+ .btn-icon-danger[data-v-54c47218]:hover {
1905
1932
  background-color: #fee2e2;
1906
1933
  }
1907
- .btn-icon-danger:hover i[data-v-f2a7bdef] {
1934
+ .btn-icon-danger:hover i[data-v-54c47218] {
1908
1935
  color: #dc2626;
1909
1936
  }
1910
- .node-spinner[data-v-f2a7bdef] {
1911
- display: flex;
1912
- align-items: center;
1937
+ .node-spinner[data-v-54c47218] {
1938
+ display: flex;
1939
+ align-items: center;
1913
1940
  justify-content: center;
1914
1941
  }
1915
- .spinner-border-sm[data-v-f2a7bdef] {
1916
- width: 1rem;
1917
- height: 1rem;
1942
+ .spinner-border-sm[data-v-54c47218] {
1943
+ width: 1rem;
1944
+ height: 1rem;
1918
1945
  border-width: 0.15em;
1919
- }
1920
-
1946
+ }
1947
+
1921
1948
  /* 连接节点样式 */
1922
- .connection-content[data-v-f2a7bdef] {
1923
- font-weight: 500;
1949
+ .connection-content[data-v-54c47218] {
1950
+ font-weight: 500;
1924
1951
  color: #24292f;
1925
1952
  }
1926
- .connection-content[data-v-f2a7bdef]:hover {
1953
+ .connection-content[data-v-54c47218]:hover {
1927
1954
  background-color: #f3f4f6;
1928
1955
  }
1929
- .tree-node.selected .connection-content[data-v-f2a7bdef] {
1930
- background-color: #eff1ff;
1956
+ .tree-node.selected .connection-content[data-v-54c47218] {
1957
+ background-color: #eff1ff;
1931
1958
  color: #0969da;
1932
- }
1933
-
1959
+ }
1960
+
1934
1961
  /* 数据库节点样式 */
1935
- .database-content[data-v-f2a7bdef] {
1962
+ .database-content[data-v-54c47218] {
1936
1963
  color: #24292f;
1937
1964
  }
1938
- .database-content[data-v-f2a7bdef]:hover {
1965
+ .database-content[data-v-54c47218]:hover {
1939
1966
  background-color: #f6f8fa;
1940
1967
  }
1941
- .tree-node.selected .database-content[data-v-f2a7bdef] {
1942
- background-color: #eff1ff;
1968
+ .tree-node.selected .database-content[data-v-54c47218] {
1969
+ background-color: #eff1ff;
1943
1970
  color: #0969da;
1944
- }
1945
-
1971
+ }
1972
+
1946
1973
  /* 表节点样式 */
1947
- .table-content[data-v-f2a7bdef] {
1974
+ .table-content[data-v-54c47218] {
1948
1975
  color: #24292f;
1949
1976
  }
1950
- .table-content[data-v-f2a7bdef]:hover {
1977
+ .table-content[data-v-54c47218]:hover {
1951
1978
  background-color: #f6f8fa;
1952
1979
  }
1953
- .tree-node.selected .table-content[data-v-f2a7bdef] {
1954
- background-color: #eff1ff;
1980
+ .tree-node.selected .table-content[data-v-54c47218] {
1981
+ background-color: #eff1ff;
1955
1982
  color: #0969da;
1956
- }
1957
-
1983
+ }
1984
+
1958
1985
  /* 数据库品牌色彩 */
1959
- .db-mysql[data-v-f2a7bdef] {
1960
- color: #00758f !important;
1961
- background: linear-gradient(135deg, #00758f, #005a70);
1962
- -webkit-background-clip: text;
1986
+ .db-mysql[data-v-54c47218] {
1987
+ color: #00758f !important;
1988
+ background: linear-gradient(135deg, #00758f, #005a70);
1989
+ -webkit-background-clip: text;
1963
1990
  -webkit-text-fill-color: transparent;
1964
1991
  }
1965
- .db-mysql-bg[data-v-f2a7bdef] { background: linear-gradient(135deg, #00758f, #005a70);
1992
+ .db-mysql-bg[data-v-54c47218] { background: linear-gradient(135deg, #00758f, #005a70);
1966
1993
  }
1967
- .db-postgres[data-v-f2a7bdef] {
1968
- color: #336791 !important;
1969
- background: linear-gradient(135deg, #336791, #2a5278);
1970
- -webkit-background-clip: text;
1994
+ .db-postgres[data-v-54c47218] {
1995
+ color: #336791 !important;
1996
+ background: linear-gradient(135deg, #336791, #2a5278);
1997
+ -webkit-background-clip: text;
1971
1998
  -webkit-text-fill-color: transparent;
1972
1999
  }
1973
- .db-postgres-bg[data-v-f2a7bdef] { background: linear-gradient(135deg, #336791, #2a5278);
2000
+ .db-postgres-bg[data-v-54c47218] { background: linear-gradient(135deg, #336791, #2a5278);
1974
2001
  }
1975
- .db-sqlite[data-v-f2a7bdef] {
1976
- color: #003b57 !important;
1977
- background: linear-gradient(135deg, #003b57, #002d42);
1978
- -webkit-background-clip: text;
2002
+ .db-sqlite[data-v-54c47218] {
2003
+ color: #003b57 !important;
2004
+ background: linear-gradient(135deg, #003b57, #002d42);
2005
+ -webkit-background-clip: text;
1979
2006
  -webkit-text-fill-color: transparent;
1980
2007
  }
1981
- .db-sqlite-bg[data-v-f2a7bdef] { background: linear-gradient(135deg, #003b57, #002d42);
2008
+ .db-sqlite-bg[data-v-54c47218] { background: linear-gradient(135deg, #003b57, #002d42);
1982
2009
  }
1983
- .db-mssql[data-v-f2a7bdef] {
1984
- color: #cc2927 !important;
1985
- background: linear-gradient(135deg, #cc2927, #a62220);
1986
- -webkit-background-clip: text;
2010
+ .db-mssql[data-v-54c47218] {
2011
+ color: #cc2927 !important;
2012
+ background: linear-gradient(135deg, #cc2927, #a62220);
2013
+ -webkit-background-clip: text;
1987
2014
  -webkit-text-fill-color: transparent;
1988
2015
  }
1989
- .db-mssql-bg[data-v-f2a7bdef] { background: linear-gradient(135deg, #cc2927, #a62220);
2016
+ .db-mssql-bg[data-v-54c47218] { background: linear-gradient(135deg, #cc2927, #a62220);
1990
2017
  }
1991
- .db-oracle[data-v-f2a7bdef] {
1992
- color: #f80000 !important;
1993
- background: linear-gradient(135deg, #f80000, #d40000);
1994
- -webkit-background-clip: text;
2018
+ .db-oracle[data-v-54c47218] {
2019
+ color: #f80000 !important;
2020
+ background: linear-gradient(135deg, #f80000, #d40000);
2021
+ -webkit-background-clip: text;
1995
2022
  -webkit-text-fill-color: transparent;
1996
2023
  }
1997
- .db-oracle-bg[data-v-f2a7bdef] { background: linear-gradient(135deg, #f80000, #d40000);
2024
+ .db-oracle-bg[data-v-54c47218] { background: linear-gradient(135deg, #f80000, #d40000);
1998
2025
  }
1999
- .db-default[data-v-f2a7bdef] {
2000
- color: #64748b !important;
2001
- background: linear-gradient(135deg, #64748b, #475569);
2002
- -webkit-background-clip: text;
2026
+ .db-default[data-v-54c47218] {
2027
+ color: #64748b !important;
2028
+ background: linear-gradient(135deg, #64748b, #475569);
2029
+ -webkit-background-clip: text;
2003
2030
  -webkit-text-fill-color: transparent;
2004
2031
  }
2005
- .db-default-bg[data-v-f2a7bdef] { background: linear-gradient(135deg, #64748b, #475569);
2032
+ .db-default-bg[data-v-54c47218] { background: linear-gradient(135deg, #64748b, #475569);
2006
2033
  }
2007
- .tree-node.selected .db-mysql[data-v-f2a7bdef],
2008
- .tree-node.selected .db-postgres[data-v-f2a7bdef],
2009
- .tree-node.selected .db-sqlite[data-v-f2a7bdef],
2010
- .tree-node.selected .db-mssql[data-v-f2a7bdef],
2011
- .tree-node.selected .db-oracle[data-v-f2a7bdef],
2012
- .tree-node.selected .db-default[data-v-f2a7bdef] {
2013
- color: white !important;
2014
- background: none;
2034
+ .tree-node.selected .db-mysql[data-v-54c47218],
2035
+ .tree-node.selected .db-postgres[data-v-54c47218],
2036
+ .tree-node.selected .db-sqlite[data-v-54c47218],
2037
+ .tree-node.selected .db-mssql[data-v-54c47218],
2038
+ .tree-node.selected .db-oracle[data-v-54c47218],
2039
+ .tree-node.selected .db-default[data-v-54c47218] {
2040
+ color: white !important;
2041
+ background: none;
2015
2042
  -webkit-text-fill-color: white;
2016
- }
2017
-
2043
+ }
2044
+
2018
2045
  /* 数据库Logo图标 */
2019
- .db-logo[data-v-f2a7bdef] {
2020
- width: 20px;
2021
- height: 20px;
2022
- border-radius: 4px;
2023
- display: flex;
2024
- align-items: center;
2025
- justify-content: center;
2026
- font-weight: 700;
2027
- font-size: 0.75rem;
2028
- color: white;
2046
+ .db-logo[data-v-54c47218] {
2047
+ width: 20px;
2048
+ height: 20px;
2049
+ border-radius: 4px;
2050
+ display: flex;
2051
+ align-items: center;
2052
+ justify-content: center;
2053
+ font-weight: 700;
2054
+ font-size: 0.75rem;
2055
+ color: white;
2029
2056
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
2030
2057
  }
2031
- .db-logo-mysql[data-v-f2a7bdef] {
2032
- background: linear-gradient(135deg, #00758f, #005a70);
2058
+ .db-logo-mysql[data-v-54c47218] {
2059
+ background: linear-gradient(135deg, #00758f, #005a70);
2033
2060
  border: 1px solid #004d61;
2034
2061
  }
2035
- .db-logo-postgres[data-v-f2a7bdef] {
2036
- background: linear-gradient(135deg, #336791, #2a5278);
2062
+ .db-logo-postgres[data-v-54c47218] {
2063
+ background: linear-gradient(135deg, #336791, #2a5278);
2037
2064
  border: 1px solid #244566;
2038
2065
  }
2039
- .db-logo-sqlite[data-v-f2a7bdef] {
2040
- background: linear-gradient(135deg, #003b57, #002d42);
2066
+ .db-logo-sqlite[data-v-54c47218] {
2067
+ background: linear-gradient(135deg, #003b57, #002d42);
2041
2068
  border: 1px solid #002939;
2042
2069
  }
2043
- .db-logo-mssql[data-v-f2a7bdef] {
2044
- background: linear-gradient(135deg, #cc2927, #a62220);
2070
+ .db-logo-mssql[data-v-54c47218] {
2071
+ background: linear-gradient(135deg, #cc2927, #a62220);
2045
2072
  border: 1px solid #8b1f1d;
2046
2073
  }
2047
- .db-logo-oracle[data-v-f2a7bdef] {
2048
- background: linear-gradient(135deg, #f80000, #d40000);
2074
+ .db-logo-oracle[data-v-54c47218] {
2075
+ background: linear-gradient(135deg, #f80000, #d40000);
2049
2076
  border: 1px solid #b30000;
2050
2077
  }
2051
- .db-logo-default[data-v-f2a7bdef] {
2052
- background: linear-gradient(135deg, #64748b, #475569);
2078
+ .db-logo-default[data-v-54c47218] {
2079
+ background: linear-gradient(135deg, #64748b, #475569);
2053
2080
  border: 1px solid #334155;
2054
- }
2055
-
2081
+ }
2082
+
2056
2083
  /* 右侧主内容 */
2057
- .explorer-main[data-v-f2a7bdef] {
2058
- flex: 1;
2059
- display: flex;
2060
- flex-direction: column;
2061
- overflow: hidden;
2084
+ .explorer-main[data-v-54c47218] {
2085
+ flex: 1;
2086
+ display: flex;
2087
+ flex-direction: column;
2088
+ overflow: hidden;
2062
2089
  height: 100%;
2063
- }
2064
-
2090
+ }
2091
+
2065
2092
  /* 详情组件容器 */
2066
- .explorer-main[data-v-f2a7bdef] > * {
2067
- flex: 1;
2068
- display: flex;
2069
- flex-direction: column;
2093
+ .explorer-main[data-v-54c47218] > * {
2094
+ flex: 1;
2095
+ display: flex;
2096
+ flex-direction: column;
2070
2097
  height: 100%;
2071
2098
  }
2072
- .content-tabs[data-v-f2a7bdef] {
2073
- flex: 1;
2074
- display: flex;
2075
- flex-direction: column;
2099
+ .content-tabs[data-v-54c47218] {
2100
+ flex: 1;
2101
+ display: flex;
2102
+ flex-direction: column;
2076
2103
  height: 100%;
2077
2104
  }
2078
- .nav-tabs[data-v-f2a7bdef] {
2079
- background: #f8fafc;
2080
- border-bottom: 1px solid #e2e8f0;
2105
+ .nav-tabs[data-v-54c47218] {
2106
+ background: #f8fafc;
2107
+ border-bottom: 1px solid #e2e8f0;
2081
2108
  padding: 0 1rem;
2082
2109
  }
2083
- .nav-link[data-v-f2a7bdef] {
2084
- border: none;
2085
- background: transparent;
2086
- color: #64748b;
2087
- padding: 1rem 1.5rem;
2088
- font-weight: 500;
2110
+ .nav-link[data-v-54c47218] {
2111
+ border: none;
2112
+ background: transparent;
2113
+ color: #64748b;
2114
+ padding: 1rem 1.5rem;
2115
+ font-weight: 500;
2089
2116
  transition: all 0.2s ease;
2090
2117
  }
2091
- .nav-link[data-v-f2a7bdef]:hover {
2092
- color: #667eea;
2118
+ .nav-link[data-v-54c47218]:hover {
2119
+ color: #667eea;
2093
2120
  background: rgba(102, 126, 234, 0.1);
2094
2121
  }
2095
- .nav-link.active[data-v-f2a7bdef] {
2096
- color: #667eea;
2097
- background: white;
2122
+ .nav-link.active[data-v-54c47218] {
2123
+ color: #667eea;
2124
+ background: white;
2098
2125
  border-bottom: 2px solid #667eea;
2099
2126
  }
2100
- .tab-content[data-v-f2a7bdef] {
2101
- flex: 1;
2102
- overflow-y: auto;
2103
- padding: 1.5rem;
2127
+ .tab-content[data-v-54c47218] {
2128
+ flex: 1;
2129
+ overflow-y: auto;
2130
+ padding: 1.5rem;
2104
2131
  height: calc(100% - 60px); /* 减去导航栏高度 */
2105
- }
2106
-
2132
+ }
2133
+
2107
2134
  /* 概览样式 */
2108
- .overview-section[data-v-f2a7bdef] {
2135
+ .overview-section[data-v-54c47218] {
2109
2136
  padding: 1rem 0;
2110
2137
  }
2111
- .info-cards[data-v-f2a7bdef] {
2112
- display: grid;
2113
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
2138
+ .info-cards[data-v-54c47218] {
2139
+ display: grid;
2140
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
2114
2141
  gap: 1rem;
2115
2142
  }
2116
- .info-card[data-v-f2a7bdef] {
2117
- background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
2118
- border-radius: 12px;
2119
- padding: 1.5rem;
2120
- display: flex;
2121
- align-items: center;
2122
- gap: 1rem;
2143
+ .info-card[data-v-54c47218] {
2144
+ background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
2145
+ border-radius: 12px;
2146
+ padding: 1.5rem;
2147
+ display: flex;
2148
+ align-items: center;
2149
+ gap: 1rem;
2123
2150
  border: 1px solid #e2e8f0;
2124
2151
  }
2125
- .card-icon[data-v-f2a7bdef] {
2126
- width: 48px;
2127
- height: 48px;
2128
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
2129
- border-radius: 12px;
2130
- display: flex;
2131
- align-items: center;
2132
- justify-content: center;
2133
- color: white;
2152
+ .card-icon[data-v-54c47218] {
2153
+ width: 48px;
2154
+ height: 48px;
2155
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
2156
+ border-radius: 12px;
2157
+ display: flex;
2158
+ align-items: center;
2159
+ justify-content: center;
2160
+ color: white;
2134
2161
  font-size: 1.25rem;
2135
2162
  }
2136
- .card-content h6[data-v-f2a7bdef] {
2137
- margin: 0 0 0.25rem 0;
2138
- color: #64748b;
2139
- font-size: 0.875rem;
2163
+ .card-content h6[data-v-54c47218] {
2164
+ margin: 0 0 0.25rem 0;
2165
+ color: #64748b;
2166
+ font-size: 0.875rem;
2140
2167
  font-weight: 500;
2141
2168
  }
2142
- .card-value[data-v-f2a7bdef] {
2143
- margin: 0;
2144
- color: #1e293b;
2145
- font-weight: 600;
2169
+ .card-value[data-v-54c47218] {
2170
+ margin: 0;
2171
+ color: #1e293b;
2172
+ font-weight: 600;
2146
2173
  font-size: 1.1rem;
2147
- }
2148
-
2174
+ }
2175
+
2149
2176
  /* 表格网格 */
2150
- .table-grid[data-v-f2a7bdef] {
2151
- display: grid;
2152
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
2177
+ .table-grid[data-v-54c47218] {
2178
+ display: grid;
2179
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
2153
2180
  gap: 1rem;
2154
2181
  }
2155
- .table-card[data-v-f2a7bdef] {
2156
- background: white;
2157
- border: 1px solid #e2e8f0;
2158
- border-radius: 12px;
2159
- padding: 1rem;
2160
- cursor: pointer;
2182
+ .table-card[data-v-54c47218] {
2183
+ background: white;
2184
+ border: 1px solid #e2e8f0;
2185
+ border-radius: 12px;
2186
+ padding: 1rem;
2187
+ cursor: pointer;
2161
2188
  transition: all 0.2s ease;
2162
2189
  }
2163
- .table-card[data-v-f2a7bdef]:hover {
2164
- border-color: #667eea;
2165
- box-shadow: 0 4px 12px rgba(102, 126, 234, 0.15);
2190
+ .table-card[data-v-54c47218]:hover {
2191
+ border-color: #667eea;
2192
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.15);
2166
2193
  transform: translateY(-2px);
2167
2194
  }
2168
- .table-card .card-header[data-v-f2a7bdef] {
2169
- display: flex;
2170
- align-items: center;
2171
- gap: 0.75rem;
2195
+ .table-card .card-header[data-v-54c47218] {
2196
+ display: flex;
2197
+ align-items: center;
2198
+ gap: 0.75rem;
2172
2199
  margin-bottom: 0.75rem;
2173
2200
  }
2174
- .table-icon[data-v-f2a7bdef] {
2175
- width: 32px;
2176
- height: 32px;
2177
- background: linear-gradient(135deg, #10b981 0%, #059669 100%);
2178
- border-radius: 8px;
2179
- display: flex;
2180
- align-items: center;
2181
- justify-content: center;
2201
+ .table-icon[data-v-54c47218] {
2202
+ width: 32px;
2203
+ height: 32px;
2204
+ background: linear-gradient(135deg, #10b981 0%, #059669 100%);
2205
+ border-radius: 8px;
2206
+ display: flex;
2207
+ align-items: center;
2208
+ justify-content: center;
2182
2209
  color: white;
2183
2210
  }
2184
- .table-name[data-v-f2a7bdef] {
2185
- font-weight: 600;
2211
+ .table-name[data-v-54c47218] {
2212
+ font-weight: 600;
2186
2213
  color: #1e293b;
2187
2214
  }
2188
- .table-stats[data-v-f2a7bdef] {
2189
- display: flex;
2190
- gap: 1rem;
2215
+ .table-stats[data-v-54c47218] {
2216
+ display: flex;
2217
+ gap: 1rem;
2191
2218
  margin-bottom: 0.5rem;
2192
2219
  }
2193
- .stat[data-v-f2a7bdef] {
2194
- display: flex;
2195
- flex-direction: column;
2220
+ .stat[data-v-54c47218] {
2221
+ display: flex;
2222
+ flex-direction: column;
2196
2223
  gap: 0.25rem;
2197
2224
  }
2198
- .stat-label[data-v-f2a7bdef] {
2199
- font-size: 0.75rem;
2225
+ .stat-label[data-v-54c47218] {
2226
+ font-size: 0.75rem;
2200
2227
  color: #64748b;
2201
2228
  }
2202
- .stat-value[data-v-f2a7bdef] {
2203
- font-size: 0.875rem;
2204
- font-weight: 600;
2229
+ .stat-value[data-v-54c47218] {
2230
+ font-size: 0.875rem;
2231
+ font-weight: 600;
2205
2232
  color: #1e293b;
2206
2233
  }
2207
- .table-comment[data-v-f2a7bdef] {
2208
- font-size: 0.75rem;
2209
- color: #64748b;
2234
+ .table-comment[data-v-54c47218] {
2235
+ font-size: 0.75rem;
2236
+ color: #64748b;
2210
2237
  font-style: italic;
2211
- }
2212
-
2238
+ }
2239
+
2213
2240
  /* 数据工具栏 */
2214
- .data-toolbar[data-v-f2a7bdef] {
2215
- display: flex;
2216
- justify-content: space-between;
2217
- align-items: center;
2218
- margin-bottom: 1rem;
2219
- padding: 0.75rem;
2220
- background: #f8fafc;
2241
+ .data-toolbar[data-v-54c47218] {
2242
+ display: flex;
2243
+ justify-content: space-between;
2244
+ align-items: center;
2245
+ margin-bottom: 1rem;
2246
+ padding: 0.75rem;
2247
+ background: #f8fafc;
2221
2248
  border-radius: 8px;
2222
2249
  }
2223
- .toolbar-left[data-v-f2a7bdef],
2224
- .toolbar-right[data-v-f2a7bdef] {
2225
- display: flex;
2226
- gap: 0.5rem;
2250
+ .toolbar-left[data-v-54c47218],
2251
+ .toolbar-right[data-v-54c47218] {
2252
+ display: flex;
2253
+ gap: 0.5rem;
2227
2254
  align-items: center;
2228
- }
2229
-
2255
+ }
2256
+
2230
2257
  /* 空状态 */
2231
- .empty-state[data-v-f2a7bdef],
2232
- .default-state[data-v-f2a7bdef] {
2233
- display: flex;
2234
- flex-direction: column;
2235
- align-items: center;
2236
- justify-content: center;
2237
- height: 100%;
2238
- color: #64748b;
2258
+ .empty-state[data-v-54c47218],
2259
+ .default-state[data-v-54c47218] {
2260
+ display: flex;
2261
+ flex-direction: column;
2262
+ align-items: center;
2263
+ justify-content: center;
2264
+ height: 100%;
2265
+ color: #64748b;
2239
2266
  text-align: center;
2240
2267
  }
2241
- .empty-icon[data-v-f2a7bdef],
2242
- .default-icon[data-v-f2a7bdef] {
2243
- font-size: 3rem;
2244
- margin-bottom: 1rem;
2268
+ .empty-icon[data-v-54c47218],
2269
+ .default-icon[data-v-54c47218] {
2270
+ font-size: 3rem;
2271
+ margin-bottom: 1rem;
2245
2272
  opacity: 0.5;
2246
2273
  }
2247
- .empty-text h5[data-v-f2a7bdef],
2248
- .default-content h5[data-v-f2a7bdef] {
2249
- color: #64748b;
2274
+ .empty-text h5[data-v-54c47218],
2275
+ .default-content h5[data-v-54c47218] {
2276
+ color: #64748b;
2250
2277
  margin-bottom: 0.5rem;
2251
- }
2252
-
2278
+ }
2279
+
2253
2280
  /* 响应式 */
2254
2281
  @media (max-width: 768px) {
2255
- .explorer-layout[data-v-f2a7bdef] {
2282
+ .explorer-layout[data-v-54c47218] {
2256
2283
  flex-direction: column;
2257
2284
  }
2258
- .explorer-sidebar[data-v-f2a7bdef] {
2259
- width: 100%;
2260
- height: 40vh;
2261
- border-right: none;
2285
+ .explorer-sidebar[data-v-54c47218] {
2286
+ width: 100%;
2287
+ height: 40vh;
2288
+ border-right: none;
2262
2289
  border-bottom: 1px solid #e2e8f0;
2263
2290
  }
2264
- .info-cards[data-v-f2a7bdef] {
2291
+ .info-cards[data-v-54c47218] {
2265
2292
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
2266
2293
  }
2267
- .table-grid[data-v-f2a7bdef] {
2294
+ .table-grid[data-v-54c47218] {
2268
2295
  grid-template-columns: 1fr;
2269
2296
  }
2270
- }
2297
+ }