fdb2 1.0.13 → 1.0.14

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 (313) hide show
  1. package/README.md +9 -2
  2. package/bin/docker/.env +4 -0
  3. package/package.json +16 -8
  4. package/public/favicon.ico +0 -0
  5. package/public/favicon.png +0 -0
  6. package/view/modules/header.tpl +1 -1
  7. package/.dockerignore +0 -21
  8. package/.editorconfig +0 -11
  9. package/.eslintrc.cjs +0 -14
  10. package/.eslintrc.json +0 -7
  11. package/.prettierrc.js +0 -3
  12. package/.tpl.env +0 -22
  13. package/.vscodeignore +0 -45
  14. package/dist/package.json +0 -115
  15. package/dist/pnpm-lock.yaml +0 -8135
  16. package/dist/public/.vite/manifest.json +0 -82
  17. package/dist/public/bootstrap-icons.woff +0 -0
  18. package/dist/public/bootstrap-icons.woff2 +0 -0
  19. package/dist/public/bootstrap.css +0 -14152
  20. package/dist/public/bootstrap.js +0 -5038
  21. package/dist/public/explorer.css +0 -2379
  22. package/dist/public/explorer.js +0 -50586
  23. package/dist/public/index.css +0 -1099
  24. package/dist/public/index.js +0 -12862
  25. package/dist/public/layout.css +0 -318
  26. package/dist/public/layout.js +0 -25
  27. package/dist/public/vue.css +0 -1
  28. package/dist/public/vue.js +0 -9110
  29. package/dist/scripts/preinstall.js +0 -112
  30. package/dist/server/index.d.ts +0 -2
  31. package/dist/server/index.d.ts.map +0 -1
  32. package/dist/server/index.js +0 -601
  33. package/dist/server/index.js.map +0 -1
  34. package/dist/server/index.ts +0 -681
  35. package/dist/server/model/connection.entity.d.ts +0 -55
  36. package/dist/server/model/connection.entity.d.ts.map +0 -1
  37. package/dist/server/model/connection.entity.js +0 -59
  38. package/dist/server/model/connection.entity.js.map +0 -1
  39. package/dist/server/model/connection.entity.ts +0 -66
  40. package/dist/server/model/database.entity.d.ts +0 -203
  41. package/dist/server/model/database.entity.d.ts.map +0 -1
  42. package/dist/server/model/database.entity.js +0 -211
  43. package/dist/server/model/database.entity.js.map +0 -1
  44. package/dist/server/model/database.entity.ts +0 -246
  45. package/dist/server/service/connection.service.d.ts +0 -84
  46. package/dist/server/service/connection.service.d.ts.map +0 -1
  47. package/dist/server/service/connection.service.js +0 -369
  48. package/dist/server/service/connection.service.js.map +0 -1
  49. package/dist/server/service/connection.service.ts +0 -359
  50. package/dist/server/service/database/base.service.d.ts +0 -183
  51. package/dist/server/service/database/base.service.d.ts.map +0 -1
  52. package/dist/server/service/database/base.service.js +0 -253
  53. package/dist/server/service/database/base.service.js.map +0 -1
  54. package/dist/server/service/database/base.service.ts +0 -407
  55. package/dist/server/service/database/cockroachdb.service.d.ts +0 -116
  56. package/dist/server/service/database/cockroachdb.service.d.ts.map +0 -1
  57. package/dist/server/service/database/cockroachdb.service.js +0 -812
  58. package/dist/server/service/database/cockroachdb.service.js.map +0 -1
  59. package/dist/server/service/database/cockroachdb.service.ts +0 -871
  60. package/dist/server/service/database/database.service.d.ts +0 -495
  61. package/dist/server/service/database/database.service.d.ts.map +0 -1
  62. package/dist/server/service/database/database.service.js +0 -711
  63. package/dist/server/service/database/database.service.js.map +0 -1
  64. package/dist/server/service/database/database.service.ts +0 -776
  65. package/dist/server/service/database/index.d.ts +0 -8
  66. package/dist/server/service/database/index.d.ts.map +0 -1
  67. package/dist/server/service/database/index.js +0 -18
  68. package/dist/server/service/database/index.js.map +0 -1
  69. package/dist/server/service/database/index.ts +0 -7
  70. package/dist/server/service/database/mongodb.service.d.ts +0 -121
  71. package/dist/server/service/database/mongodb.service.d.ts.map +0 -1
  72. package/dist/server/service/database/mongodb.service.js +0 -502
  73. package/dist/server/service/database/mongodb.service.js.map +0 -1
  74. package/dist/server/service/database/mongodb.service.ts +0 -501
  75. package/dist/server/service/database/mssql.service.d.ts +0 -118
  76. package/dist/server/service/database/mssql.service.d.ts.map +0 -1
  77. package/dist/server/service/database/mssql.service.js +0 -871
  78. package/dist/server/service/database/mssql.service.js.map +0 -1
  79. package/dist/server/service/database/mssql.service.ts +0 -932
  80. package/dist/server/service/database/mysql.service.d.ts +0 -114
  81. package/dist/server/service/database/mysql.service.d.ts.map +0 -1
  82. package/dist/server/service/database/mysql.service.js +0 -960
  83. package/dist/server/service/database/mysql.service.js.map +0 -1
  84. package/dist/server/service/database/mysql.service.ts +0 -1026
  85. package/dist/server/service/database/oracle.service.d.ts +0 -126
  86. package/dist/server/service/database/oracle.service.d.ts.map +0 -1
  87. package/dist/server/service/database/oracle.service.js +0 -963
  88. package/dist/server/service/database/oracle.service.js.map +0 -1
  89. package/dist/server/service/database/oracle.service.ts +0 -1036
  90. package/dist/server/service/database/postgres.service.d.ts +0 -122
  91. package/dist/server/service/database/postgres.service.d.ts.map +0 -1
  92. package/dist/server/service/database/postgres.service.js +0 -882
  93. package/dist/server/service/database/postgres.service.js.map +0 -1
  94. package/dist/server/service/database/postgres.service.ts +0 -961
  95. package/dist/server/service/database/sap.service.d.ts +0 -115
  96. package/dist/server/service/database/sap.service.d.ts.map +0 -1
  97. package/dist/server/service/database/sap.service.js +0 -868
  98. package/dist/server/service/database/sap.service.js.map +0 -1
  99. package/dist/server/service/database/sap.service.ts +0 -922
  100. package/dist/server/service/database/sqlite.service.d.ts +0 -112
  101. package/dist/server/service/database/sqlite.service.d.ts.map +0 -1
  102. package/dist/server/service/database/sqlite.service.js +0 -723
  103. package/dist/server/service/database/sqlite.service.js.map +0 -1
  104. package/dist/server/service/database/sqlite.service.ts +0 -787
  105. package/dist/server/service/session.service.ts +0 -158
  106. package/dist/view/index.html +0 -45
  107. package/env.d.ts +0 -1
  108. package/packages/vscode/.vscodeignore +0 -44
  109. package/packages/vscode/README.md +0 -62
  110. package/packages/vscode/out/database-services/base.service.js +0 -236
  111. package/packages/vscode/out/database-services/base.service.js.map +0 -1
  112. package/packages/vscode/out/database-services/cockroachdb.service.js +0 -634
  113. package/packages/vscode/out/database-services/cockroachdb.service.js.map +0 -1
  114. package/packages/vscode/out/database-services/connection.service.js +0 -346
  115. package/packages/vscode/out/database-services/connection.service.js.map +0 -1
  116. package/packages/vscode/out/database-services/database.service.js +0 -571
  117. package/packages/vscode/out/database-services/database.service.js.map +0 -1
  118. package/packages/vscode/out/database-services/index.js +0 -18
  119. package/packages/vscode/out/database-services/index.js.map +0 -1
  120. package/packages/vscode/out/database-services/model/connection.entity.js +0 -11
  121. package/packages/vscode/out/database-services/model/connection.entity.js.map +0 -1
  122. package/packages/vscode/out/database-services/model/database.entity.js +0 -35
  123. package/packages/vscode/out/database-services/model/database.entity.js.map +0 -1
  124. package/packages/vscode/out/database-services/mongodb.service.js +0 -458
  125. package/packages/vscode/out/database-services/mongodb.service.js.map +0 -1
  126. package/packages/vscode/out/database-services/mssql.service.js +0 -694
  127. package/packages/vscode/out/database-services/mssql.service.js.map +0 -1
  128. package/packages/vscode/out/database-services/mysql.service.js +0 -735
  129. package/packages/vscode/out/database-services/mysql.service.js.map +0 -1
  130. package/packages/vscode/out/database-services/oracle.service.js +0 -787
  131. package/packages/vscode/out/database-services/oracle.service.js.map +0 -1
  132. package/packages/vscode/out/database-services/postgres.service.js +0 -696
  133. package/packages/vscode/out/database-services/postgres.service.js.map +0 -1
  134. package/packages/vscode/out/database-services/sap.service.js +0 -695
  135. package/packages/vscode/out/database-services/sap.service.js.map +0 -1
  136. package/packages/vscode/out/database-services/sqlite.service.js +0 -532
  137. package/packages/vscode/out/database-services/sqlite.service.js.map +0 -1
  138. package/packages/vscode/out/extension.js +0 -93
  139. package/packages/vscode/out/extension.js.map +0 -1
  140. package/packages/vscode/out/provider/DatabaseTreeProvider.js +0 -159
  141. package/packages/vscode/out/provider/DatabaseTreeProvider.js.map +0 -1
  142. package/packages/vscode/out/provider/WebViewProvider.js +0 -259
  143. package/packages/vscode/out/provider/WebViewProvider.js.map +0 -1
  144. package/packages/vscode/out/service/ConnectionManager.js +0 -105
  145. package/packages/vscode/out/service/ConnectionManager.js.map +0 -1
  146. package/packages/vscode/out/service/DatabaseServiceBridge.js +0 -395
  147. package/packages/vscode/out/service/DatabaseServiceBridge.js.map +0 -1
  148. package/packages/vscode/out/typings/connection.js +0 -3
  149. package/packages/vscode/out/typings/connection.js.map +0 -1
  150. package/packages/vscode/package.json +0 -144
  151. package/packages/vscode/resources/icon.svg +0 -5
  152. package/packages/vscode/resources/webview/_plugin-vue_export-helper.js +0 -6529
  153. package/packages/vscode/resources/webview/_plugin-vue_export-helper.js.map +0 -1
  154. package/packages/vscode/resources/webview/connection.css +0 -69
  155. package/packages/vscode/resources/webview/connection.js +0 -228
  156. package/packages/vscode/resources/webview/connection.js.map +0 -1
  157. package/packages/vscode/resources/webview/database.css +0 -259
  158. package/packages/vscode/resources/webview/database.js +0 -275
  159. package/packages/vscode/resources/webview/database.js.map +0 -1
  160. package/packages/vscode/resources/webview/favicon.ico +0 -0
  161. package/packages/vscode/resources/webview/index.html +0 -9
  162. package/packages/vscode/resources/webview/modules/header.tpl +0 -14
  163. package/packages/vscode/resources/webview/modules/initial_state.tpl +0 -55
  164. package/packages/vscode/resources/webview/query.css +0 -162
  165. package/packages/vscode/resources/webview/query.js +0 -198
  166. package/packages/vscode/resources/webview/query.js.map +0 -1
  167. package/packages/vscode/src/database-services/base.service.js.map +0 -1
  168. package/packages/vscode/src/database-services/base.service.ts +0 -363
  169. package/packages/vscode/src/database-services/cockroachdb.service.js.map +0 -1
  170. package/packages/vscode/src/database-services/cockroachdb.service.ts +0 -659
  171. package/packages/vscode/src/database-services/connection.service.ts +0 -341
  172. package/packages/vscode/src/database-services/database.service.ts +0 -630
  173. package/packages/vscode/src/database-services/index.ts +0 -7
  174. package/packages/vscode/src/database-services/model/connection.entity.js +0 -11
  175. package/packages/vscode/src/database-services/model/connection.entity.js.map +0 -1
  176. package/packages/vscode/src/database-services/model/connection.entity.ts +0 -66
  177. package/packages/vscode/src/database-services/model/database.entity.js +0 -35
  178. package/packages/vscode/src/database-services/model/database.entity.js.map +0 -1
  179. package/packages/vscode/src/database-services/model/database.entity.ts +0 -246
  180. package/packages/vscode/src/database-services/mongodb.service.js.map +0 -1
  181. package/packages/vscode/src/database-services/mongodb.service.ts +0 -454
  182. package/packages/vscode/src/database-services/mssql.service.js.map +0 -1
  183. package/packages/vscode/src/database-services/mssql.service.ts +0 -723
  184. package/packages/vscode/src/database-services/mysql.service.js.map +0 -1
  185. package/packages/vscode/src/database-services/mysql.service.ts +0 -761
  186. package/packages/vscode/src/database-services/oracle.service.js.map +0 -1
  187. package/packages/vscode/src/database-services/oracle.service.ts +0 -832
  188. package/packages/vscode/src/database-services/postgres.service.js.map +0 -1
  189. package/packages/vscode/src/database-services/postgres.service.ts +0 -741
  190. package/packages/vscode/src/database-services/sap.service.js.map +0 -1
  191. package/packages/vscode/src/database-services/sap.service.ts +0 -713
  192. package/packages/vscode/src/database-services/sqlite.service.js.map +0 -1
  193. package/packages/vscode/src/database-services/sqlite.service.ts +0 -558
  194. package/packages/vscode/src/extension.ts +0 -76
  195. package/packages/vscode/src/provider/DatabaseTreeProvider.ts +0 -167
  196. package/packages/vscode/src/provider/WebViewProvider.ts +0 -277
  197. package/packages/vscode/src/service/DatabaseServiceBridge.ts +0 -414
  198. package/packages/vscode/src/typings/connection.ts +0 -90
  199. package/packages/vscode/tsconfig.json +0 -21
  200. package/scripts/preinstall.js +0 -112
  201. package/server/index.ts +0 -681
  202. package/server/model/connection.entity.js +0 -11
  203. package/server/model/connection.entity.js.map +0 -1
  204. package/server/model/connection.entity.ts +0 -66
  205. package/server/model/database.entity.js +0 -35
  206. package/server/model/database.entity.js.map +0 -1
  207. package/server/model/database.entity.ts +0 -246
  208. package/server/service/connection.service.ts +0 -359
  209. package/server/service/database/base.service.ts +0 -407
  210. package/server/service/database/cockroachdb.service.ts +0 -871
  211. package/server/service/database/database.service.ts +0 -776
  212. package/server/service/database/index.ts +0 -7
  213. package/server/service/database/mongodb.service.ts +0 -501
  214. package/server/service/database/mssql.service.ts +0 -932
  215. package/server/service/database/mysql.service.ts +0 -1026
  216. package/server/service/database/oracle.service.ts +0 -1036
  217. package/server/service/database/postgres.service.ts +0 -961
  218. package/server/service/database/sap.service.ts +0 -922
  219. package/server/service/database/sqlite.service.ts +0 -787
  220. package/server/service/session.service.ts +0 -158
  221. package/server/tsconfig.json +0 -20
  222. package/src/adapter/ajax.ts +0 -135
  223. package/src/assets/base.css +0 -1
  224. package/src/assets/database.css +0 -950
  225. package/src/assets/images/collapse.png +0 -0
  226. package/src/assets/images/no-login.png +0 -0
  227. package/src/assets/images/svg/illustrations/illustration-1.svg +0 -1
  228. package/src/assets/images/svg/illustrations/illustration-2.svg +0 -2
  229. package/src/assets/images/svg/illustrations/illustration-3.svg +0 -50
  230. package/src/assets/images/svg/illustrations/illustration-4.svg +0 -1
  231. package/src/assets/images/svg/illustrations/illustration-5.svg +0 -73
  232. package/src/assets/images/svg/illustrations/illustration-6.svg +0 -89
  233. package/src/assets/images/svg/illustrations/illustration-7.svg +0 -39
  234. package/src/assets/images/svg/illustrations/illustration-8.svg +0 -1
  235. package/src/assets/images/svg/separators/curve-2.svg +0 -3
  236. package/src/assets/images/svg/separators/curve.svg +0 -3
  237. package/src/assets/images/svg/separators/line.svg +0 -3
  238. package/src/assets/images/theme/light/screen-1-1000x800.jpg +0 -0
  239. package/src/assets/images/theme/light/screen-2-1000x800.jpg +0 -0
  240. package/src/assets/login/bg.jpg +0 -0
  241. package/src/assets/login/bg.png +0 -0
  242. package/src/assets/login/left.jpg +0 -0
  243. package/src/assets/logo.svg +0 -73
  244. package/src/assets/logo.webp +0 -0
  245. package/src/assets/main.css +0 -1
  246. package/src/base/config.ts +0 -20
  247. package/src/base/detect.ts +0 -134
  248. package/src/base/entity.ts +0 -92
  249. package/src/base/eventBus.ts +0 -37
  250. package/src/components/connection-editor/index.vue +0 -589
  251. package/src/components/dataGrid/index.vue +0 -163
  252. package/src/components/dataGrid/pagination.vue +0 -106
  253. package/src/components/loading/index.vue +0 -43
  254. package/src/components/modal/index.ts +0 -181
  255. package/src/components/modal/index.vue +0 -560
  256. package/src/components/toast/index.ts +0 -44
  257. package/src/components/toast/toast.vue +0 -58
  258. package/src/components/user/name.vue +0 -104
  259. package/src/components/user/selector.vue +0 -416
  260. package/src/domain/SysConfig.ts +0 -74
  261. package/src/platform/App.vue +0 -8
  262. package/src/platform/database/components/connection-detail.vue +0 -1153
  263. package/src/platform/database/components/data-editor.vue +0 -478
  264. package/src/platform/database/components/data-import-export.vue +0 -1602
  265. package/src/platform/database/components/database-detail.vue +0 -1199
  266. package/src/platform/database/components/database-monitor.vue +0 -1086
  267. package/src/platform/database/components/db-tools.vue +0 -1265
  268. package/src/platform/database/components/query-history.vue +0 -1349
  269. package/src/platform/database/components/sql-executor.vue +0 -738
  270. package/src/platform/database/components/sql-query-editor.vue +0 -1046
  271. package/src/platform/database/components/table-data-grid.vue +0 -273
  272. package/src/platform/database/components/table-detail.vue +0 -1173
  273. package/src/platform/database/components/table-editor.vue +0 -917
  274. package/src/platform/database/explorer.vue +0 -1840
  275. package/src/platform/database/index.vue +0 -1193
  276. package/src/platform/database/layout.vue +0 -367
  277. package/src/platform/database/router.ts +0 -37
  278. package/src/platform/database/styles/common.scss +0 -602
  279. package/src/platform/database/types/common.ts +0 -445
  280. package/src/platform/database/utils/export.ts +0 -232
  281. package/src/platform/database/utils/helpers.ts +0 -437
  282. package/src/platform/index.ts +0 -33
  283. package/src/platform/router.ts +0 -41
  284. package/src/platform/vscode/bridge.ts +0 -121
  285. package/src/platform/vscode/components/ConnectionPanel.vue +0 -272
  286. package/src/platform/vscode/components/DatabasePanel.vue +0 -532
  287. package/src/platform/vscode/components/QueryPanel.vue +0 -371
  288. package/src/platform/vscode/entry/connection.ts +0 -13
  289. package/src/platform/vscode/entry/database.ts +0 -13
  290. package/src/platform/vscode/entry/query.ts +0 -13
  291. package/src/platform/vscode/index.ts +0 -5
  292. package/src/service/base.ts +0 -134
  293. package/src/service/database.ts +0 -506
  294. package/src/service/login.ts +0 -121
  295. package/src/shims-vue.d.ts +0 -7
  296. package/src/stores/connection.ts +0 -266
  297. package/src/stores/session.ts +0 -87
  298. package/src/typings/database-types.ts +0 -413
  299. package/src/typings/database.ts +0 -364
  300. package/src/typings/global.d.ts +0 -58
  301. package/src/typings/pinia.d.ts +0 -8
  302. package/src/utils/clipboard.ts +0 -30
  303. package/src/utils/database-types.ts +0 -243
  304. package/src/utils/modal.ts +0 -124
  305. package/src/utils/request.ts +0 -55
  306. package/src/utils/sleep.ts +0 -4
  307. package/src/utils/toast.ts +0 -73
  308. package/src/utils/util.ts +0 -171
  309. package/src/utils/xlsx.ts +0 -228
  310. package/tsconfig.json +0 -33
  311. package/tsconfig.server.json +0 -19
  312. package/vite.config.ts +0 -424
  313. package/vite.config.vscode.ts +0 -47
@@ -1,1099 +0,0 @@
1
- /* 数据库管理工具全局样式 - 现代桌面应用设计 */
2
-
3
- /* 基础变量 - 现代色彩方案 */
4
- :root {
5
- /* 主色调 - 紫色渐变 */
6
- --db-primary-color: #667eea;
7
- --db-primary-dark: #5a67d8;
8
- --db-primary-light: #7c8bf8;
9
- --db-primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
10
-
11
- /* 辅助色彩 */
12
- --db-secondary-color: #6c757d;
13
- --db-accent-color: #10b981;
14
- --db-warning-color: #f59e0b;
15
- --db-danger-color: #ef4444;
16
- --db-info-color: #3b82f6;
17
-
18
- /* 中性色彩 */
19
- --db-light-color: #f8fafc;
20
- --db-gray-light: #f1f5f9;
21
- --db-gray-medium: #e2e8f0;
22
- --db-gray-dark: #94a3b8;
23
- --db-darker-color: #64748b;
24
- --db-dark-color: #1e293b;
25
- --db-black: #0f172a;
26
-
27
- /* 背景渐变 */
28
- --db-bg-gradient: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
29
- --db-card-gradient: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
30
-
31
- /* 阴影 */
32
- --db-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.05);
33
- --db-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.05);
34
- --db-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1), 0 4px 6px rgba(0, 0, 0, 0.05);
35
- --db-shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1), 0 10px 10px rgba(0, 0, 0, 0.04);
36
- --db-shadow-2xl: 0 25px 50px rgba(0, 0, 0, 0.15), 0 12px 24px rgba(0, 0, 0, 0.08);
37
-
38
- /* 圆角 */
39
- --db-radius-sm: 6px;
40
- --db-radius-md: 12px;
41
- --db-radius-lg: 16px;
42
- --db-radius-xl: 20px;
43
- --db-radius-2xl: 24px;
44
-
45
- /* 间距 */
46
- --db-spacing-xs: 0.5rem;
47
- --db-spacing-sm: 0.75rem;
48
- --db-spacing-md: 1rem;
49
- --db-spacing-lg: 1.5rem;
50
- --db-spacing-xl: 2rem;
51
- --db-spacing-2xl: 3rem;
52
-
53
- /* 字体 */
54
- --db-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
55
- --db-font-mono: 'SF Mono', Monaco, Inconsolata, 'Roboto Mono', monospace;
56
- }
57
-
58
- /* 全局布局 - 现代桌面应用风格 */
59
- * {
60
- box-sizing: border-box;
61
- }
62
-
63
- body {
64
- font-family: var(--db-font-family);
65
- background: var(--db-bg-gradient);
66
- color: var(--db-dark-color);
67
- line-height: 1.6;
68
- -webkit-font-smoothing: antialiased;
69
- -moz-osx-font-smoothing: grayscale;
70
- }
71
-
72
- /* 滚动条现代化 */
73
- ::-webkit-scrollbar {
74
- width: 8px;
75
- height: 8px;
76
- }
77
-
78
- ::-webkit-scrollbar-track {
79
- background: var(--db-gray-light);
80
- border-radius: var(--db-radius-sm);
81
- }
82
-
83
- ::-webkit-scrollbar-thumb {
84
- background: var(--db-gray-medium);
85
- border-radius: var(--db-radius-sm);
86
- transition: background 0.3s ease;
87
- }
88
-
89
- ::-webkit-scrollbar-thumb:hover {
90
- background: var(--db-gray-dark);
91
- }
92
-
93
- /* 选择文本样式 */
94
- ::selection {
95
- background: rgba(102, 126, 234, 0.2);
96
- color: var(--db-dark-color);
97
- }
98
-
99
- ::-moz-selection {
100
- background: rgba(102, 126, 234, 0.2);
101
- color: var(--db-dark-color);
102
- }
103
-
104
- /* 现代卡片样式 */
105
- .card {
106
- background: var(--db-card-gradient);
107
- border: 1px solid var(--db-gray-medium);
108
- border-radius: var(--db-radius-lg);
109
- box-shadow: var(--db-shadow-md);
110
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
111
- overflow: hidden;
112
- backdrop-filter: blur(10px);
113
- }
114
-
115
- .card:hover {
116
- transform: translateY(-4px);
117
- box-shadow: var(--db-shadow-xl);
118
- border-color: var(--db-primary-color);
119
- }
120
-
121
- .card-header {
122
- background: linear-gradient(135deg, var(--db-light-color) 0%, var(--db-gray-light) 100%);
123
- border-bottom: 1px solid var(--db-gray-medium);
124
- padding: var(--db-spacing-lg);
125
- font-weight: 700;
126
- color: var(--db-dark-color);
127
- position: relative;
128
- }
129
-
130
- .card-header::before {
131
- content: '';
132
- position: absolute;
133
- top: 0;
134
- left: 0;
135
- width: 4px;
136
- height: 100%;
137
- background: var(--db-primary-gradient);
138
- opacity: 0;
139
- transition: opacity 0.3s ease;
140
- }
141
-
142
- .card:hover .card-header::before {
143
- opacity: 1;
144
- }
145
-
146
- .card-body {
147
- padding: var(--db-spacing-lg);
148
- }
149
-
150
- .card-footer {
151
- background: var(--db-gray-light);
152
- border-top: 1px solid var(--db-gray-medium);
153
- padding: var(--db-spacing-md) var(--db-spacing-lg);
154
- }
155
-
156
- /* 现代表格样式 */
157
- .table {
158
- background: white;
159
- border-radius: var(--db-radius-lg);
160
- overflow: hidden;
161
- box-shadow: var(--db-shadow-sm);
162
- }
163
-
164
- .table th {
165
- border-top: none;
166
- font-weight: 700;
167
- color: var(--db-dark-color);
168
- background: var(--db-gray-light);
169
- padding: var(--db-spacing-md) var(--db-spacing-lg);
170
- letter-spacing: 0.025em;
171
- text-transform: uppercase;
172
- font-size: 0.875rem;
173
- }
174
-
175
- .table td {
176
- padding: var(--db-spacing-md) var(--db-spacing-lg);
177
- border-color: var(--db-gray-medium);
178
- vertical-align: middle;
179
- }
180
-
181
- .table-striped tbody tr:nth-of-type(odd) {
182
- background-color: rgba(248, 250, 252, 0.5);
183
- }
184
-
185
- .table-hover tbody tr:hover {
186
- background-color: rgba(102, 126, 234, 0.05);
187
- transform: translateX(2px);
188
- transition: all 0.3s ease;
189
- }
190
-
191
- .table-responsive {
192
- border-radius: var(--db-radius-lg);
193
- box-shadow: var(--db-shadow-sm);
194
- }
195
-
196
- /* 现代按钮样式 */
197
- .btn {
198
- border-radius: var(--db-radius-md);
199
- font-weight: 600;
200
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
201
- border: none;
202
- position: relative;
203
- overflow: hidden;
204
- letter-spacing: 0.025em;
205
- box-shadow: var(--db-shadow-sm);
206
- }
207
-
208
- .btn::before {
209
- content: '';
210
- position: absolute;
211
- top: 50%;
212
- left: 50%;
213
- width: 0;
214
- height: 0;
215
- border-radius: 50%;
216
- background: rgba(255, 255, 255, 0.2);
217
- transform: translate(-50%, -50%);
218
- transition: width 0.6s, height 0.6s;
219
- }
220
-
221
- .btn:active::before {
222
- width: 300px;
223
- height: 300px;
224
- }
225
-
226
- .btn:hover {
227
- transform: translateY(-2px);
228
- box-shadow: var(--db-shadow-lg);
229
- }
230
-
231
- .btn:active {
232
- transform: translateY(0);
233
- }
234
-
235
- /* 主要按钮 */
236
- .btn-primary {
237
- background: var(--db-primary-gradient);
238
- color: white;
239
- }
240
-
241
- .btn-primary:hover {
242
- background: var(--db-primary-dark);
243
- color: white;
244
- }
245
-
246
- /* 次要按钮 */
247
- .btn-secondary {
248
- background: var(--db-gray-light);
249
- color: var(--db-darker-color);
250
- border: 1px solid var(--db-gray-medium);
251
- }
252
-
253
- .btn-secondary:hover {
254
- background: var(--db-gray-medium);
255
- color: var(--db-dark-color);
256
- }
257
-
258
- /* 成功按钮 */
259
- .btn-success {
260
- background: linear-gradient(135deg, var(--db-accent-color) 0%, #059669 100%);
261
- color: white;
262
- }
263
-
264
- /* 警告按钮 */
265
- .btn-warning {
266
- background: linear-gradient(135deg, var(--db-warning-color) 0%, #d97706 100%);
267
- color: white;
268
- }
269
-
270
- /* 危险按钮 */
271
- .btn-danger {
272
- background: linear-gradient(135deg, var(--db-danger-color) 0%, #dc2626 100%);
273
- color: white;
274
- }
275
-
276
- /* 信息按钮 */
277
- .btn-info {
278
- background: linear-gradient(135deg, var(--db-info-color) 0%, #2563eb 100%);
279
- color: white;
280
- }
281
-
282
- /* 轮廓按钮 */
283
- .btn-outline-primary {
284
- background: transparent;
285
- color: var(--db-primary-color);
286
- border: 2px solid var(--db-primary-color);
287
- }
288
-
289
- .btn-outline-primary:hover {
290
- background: var(--db-primary-gradient);
291
- color: white;
292
- border-color: transparent;
293
- }
294
-
295
- /* 按钮组 */
296
- .btn-group-sm > .btn {
297
- font-size: 0.875rem;
298
- padding: 0.5rem var(--db-spacing-md);
299
- border-radius: var(--db-radius-sm);
300
- }
301
-
302
- /* 现代徽章样式 */
303
- .badge {
304
- font-size: 0.75rem;
305
- font-weight: 600;
306
- border-radius: var(--db-radius-sm);
307
- padding: 0.25rem 0.75rem;
308
- letter-spacing: 0.025em;
309
- text-transform: uppercase;
310
- box-shadow: var(--db-shadow-sm);
311
- }
312
-
313
- .badge.bg-primary {
314
- background: var(--db-primary-gradient) !important;
315
- }
316
-
317
- .badge.bg-success {
318
- background: linear-gradient(135deg, var(--db-accent-color) 0%, #059669 100%) !important;
319
- }
320
-
321
- .badge.bg-warning {
322
- background: linear-gradient(135deg, var(--db-warning-color) 0%, #d97706 100%) !important;
323
- }
324
-
325
- .badge.bg-danger {
326
- background: linear-gradient(135deg, var(--db-danger-color) 0%, #dc2626 100%) !important;
327
- }
328
-
329
- .badge.bg-info {
330
- background: linear-gradient(135deg, var(--db-info-color) 0%, #2563eb 100%) !important;
331
- }
332
-
333
- /* 现代导航样式 */
334
- .navbar {
335
- background: var(--db-card-gradient);
336
- border-bottom: 1px solid var(--db-gray-medium);
337
- box-shadow: var(--db-shadow-md);
338
- backdrop-filter: blur(10px);
339
- }
340
-
341
- .navbar-brand {
342
- font-weight: 800;
343
- font-size: 1.25rem;
344
- color: var(--db-primary-color);
345
- text-decoration: none;
346
- transition: all 0.3s ease;
347
- display: flex;
348
- align-items: center;
349
- gap: var(--db-spacing-sm);
350
- }
351
-
352
- .navbar-brand:hover {
353
- color: var(--db-primary-dark);
354
- transform: translateX(2px);
355
- }
356
-
357
- .navbar-nav .nav-link {
358
- font-weight: 600;
359
- border-radius: var(--db-radius-md);
360
- margin: 0 var(--db-spacing-xs);
361
- transition: all 0.3s ease;
362
- position: relative;
363
- overflow: hidden;
364
- }
365
-
366
- .navbar-nav .nav-link::before {
367
- content: '';
368
- position: absolute;
369
- bottom: 0;
370
- left: 50%;
371
- width: 0;
372
- height: 2px;
373
- background: var(--db-primary-gradient);
374
- transform: translateX(-50%);
375
- transition: width 0.3s ease;
376
- }
377
-
378
- .navbar-nav .nav-link:hover {
379
- background-color: rgba(102, 126, 234, 0.1);
380
- color: var(--db-primary-color);
381
- }
382
-
383
- .navbar-nav .nav-link:hover::before {
384
- width: 80%;
385
- }
386
-
387
- .navbar-nav .nav-link.active {
388
- background: var(--db-primary-gradient);
389
- color: white;
390
- font-weight: 700;
391
- box-shadow: var(--db-shadow-md);
392
- }
393
-
394
- .navbar-nav .nav-link.active::before {
395
- width: 100%;
396
- }
397
-
398
- /* 现代模态框样式 */
399
- .modal-content {
400
- border: none;
401
- border-radius: var(--db-radius-xl);
402
- box-shadow: var(--db-shadow-2xl);
403
- overflow: hidden;
404
- backdrop-filter: blur(10px);
405
- }
406
-
407
- .modal-header {
408
- background: var(--db-card-gradient);
409
- border-bottom: 1px solid var(--db-gray-medium);
410
- padding: var(--db-spacing-xl);
411
- position: relative;
412
- }
413
-
414
- .modal-header::before {
415
- content: '';
416
- position: absolute;
417
- top: 0;
418
- left: 0;
419
- width: 100%;
420
- height: 4px;
421
- background: var(--db-primary-gradient);
422
- }
423
-
424
- .modal-title {
425
- font-weight: 700;
426
- color: var(--db-dark-color);
427
- font-size: 1.5rem;
428
- }
429
-
430
- .modal-body {
431
- padding: var(--db-spacing-xl);
432
- max-height: 70vh;
433
- overflow-y: auto;
434
- }
435
-
436
- .modal-footer {
437
- background: var(--db-gray-light);
438
- border-top: 1px solid var(--db-gray-medium);
439
- padding: var(--db-spacing-lg) var(--db-spacing-xl);
440
- display: flex;
441
- justify-content: flex-end;
442
- gap: var(--db-spacing-md);
443
- }
444
-
445
- .btn-close {
446
- background: var(--db-gray-light);
447
- border: none;
448
- border-radius: var(--db-radius-md);
449
- width: 32px;
450
- height: 32px;
451
- display: flex;
452
- align-items: center;
453
- justify-content: center;
454
- transition: all 0.3s ease;
455
- }
456
-
457
- .btn-close:hover {
458
- background: var(--db-danger-color);
459
- color: white;
460
- transform: rotate(90deg);
461
- }
462
-
463
- /* 现代表单样式 */
464
- .form-control {
465
- border-radius: var(--db-radius-md);
466
- border: 2px solid var(--db-gray-medium);
467
- padding: 0.75rem var(--db-spacing-md);
468
- font-size: 0.95rem;
469
- transition: all 0.3s ease;
470
- background: white;
471
- font-weight: 500;
472
- }
473
-
474
- .form-control:focus {
475
- outline: none;
476
- border-color: var(--db-primary-color);
477
- box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
478
- transform: translateY(-1px);
479
- }
480
-
481
- .form-select {
482
- border-radius: var(--db-radius-md);
483
- border: 2px solid var(--db-gray-medium);
484
- padding: 0.75rem var(--db-spacing-md);
485
- font-size: 0.95rem;
486
- transition: all 0.3s ease;
487
- background: white;
488
- font-weight: 500;
489
- cursor: pointer;
490
- }
491
-
492
- .form-select:focus {
493
- outline: none;
494
- border-color: var(--db-primary-color);
495
- box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
496
- transform: translateY(-1px);
497
- }
498
-
499
- .form-label {
500
- font-weight: 700;
501
- color: var(--db-dark-color);
502
- margin-bottom: var(--db-spacing-sm);
503
- font-size: 0.9rem;
504
- letter-spacing: 0.025em;
505
- display: flex;
506
- align-items: center;
507
- gap: var(--db-spacing-xs);
508
- }
509
-
510
- .form-text {
511
- font-size: 0.875rem;
512
- color: var(--db-gray-dark);
513
- margin-top: var(--db-spacing-xs);
514
- }
515
-
516
- .form-check-input {
517
- width: 1.25rem;
518
- height: 1.25rem;
519
- border: 2px solid var(--db-gray-medium);
520
- border-radius: var(--db-radius-sm);
521
- cursor: pointer;
522
- transition: all 0.3s ease;
523
- accent-color: var(--db-primary-color);
524
- }
525
-
526
- .form-check-input:checked {
527
- background: var(--db-primary-gradient);
528
- border-color: var(--db-primary-color);
529
- }
530
-
531
- .form-check-label {
532
- font-weight: 500;
533
- color: var(--db-darker-color);
534
- cursor: pointer;
535
- margin-left: var(--db-spacing-sm);
536
- }
537
-
538
- /* 代码样式 */
539
- code {
540
- background-color: #e9ecef;
541
- color: #d63384;
542
- padding: 0.2rem 0.4rem;
543
- border-radius: 3px;
544
- font-size: 0.875em;
545
- }
546
-
547
- pre {
548
- background-color: #f8f9fa;
549
- border: 1px solid #e9ecef;
550
- border-radius: 6px;
551
- padding: 1rem;
552
- margin: 0;
553
- white-space: pre-wrap;
554
- word-wrap: break-word;
555
- }
556
-
557
- /* 警告框样式 */
558
- .alert {
559
- border: none;
560
- border-radius: 6px;
561
- font-weight: 500;
562
- }
563
-
564
- .alert-success {
565
- background-color: #d4edda;
566
- color: #155724;
567
- }
568
-
569
- .alert-danger {
570
- background-color: #f8d7da;
571
- color: #721c24;
572
- }
573
-
574
- .alert-warning {
575
- background-color: #fff3cd;
576
- color: #856404;
577
- }
578
-
579
- .alert-info {
580
- background-color: #d1ecf1;
581
- color: #0c5460;
582
- }
583
-
584
- /* 工具提示样式 */
585
- .tooltip {
586
- font-size: 0.875rem;
587
- }
588
-
589
- /* 下拉菜单样式 */
590
- .dropdown-menu {
591
- border: none;
592
- border-radius: 6px;
593
- box-shadow: 0 4px 8px rgba(0,0,0,0.15);
594
- }
595
-
596
- .dropdown-item {
597
- border-radius: 4px;
598
- margin: 2px 4px;
599
- transition: all 0.2s ease;
600
- }
601
-
602
- .dropdown-item:hover {
603
- background-color: #f8f9fa;
604
- transform: translateX(2px);
605
- }
606
-
607
- /* 列表组样式 */
608
- .list-group-item {
609
- border: none;
610
- border-radius: 6px;
611
- margin-bottom: 4px;
612
- transition: all 0.2s ease;
613
- }
614
-
615
- .list-group-item:hover {
616
- background-color: #f8f9fa;
617
- transform: translateX(4px);
618
- }
619
-
620
- /* 页面头部样式 */
621
- .page-header {
622
- background: linear-gradient(135deg, var(--db-primary-color) 0%, #0056b3 100%);
623
- color: white;
624
- padding: 2rem 0;
625
- margin-bottom: 2rem;
626
- }
627
-
628
- .page-header h1 {
629
- font-weight: 700;
630
- margin-bottom: 0.5rem;
631
- }
632
-
633
- .page-header p {
634
- opacity: 0.9;
635
- font-size: 1.1rem;
636
- }
637
-
638
- /* 响应式设计 */
639
- @media (max-width: 768px) {
640
- .container-fluid {
641
- padding-left: 15px;
642
- padding-right: 15px;
643
- }
644
-
645
- .card {
646
- margin-bottom: 1rem;
647
- }
648
-
649
- .btn-group {
650
- flex-direction: column;
651
- }
652
-
653
- .table-responsive {
654
- font-size: 0.875rem;
655
- }
656
- }
657
-
658
- /* 现代动画效果 */
659
- @keyframes fadeIn {
660
- from { opacity: 0; transform: translateY(20px); }
661
- to { opacity: 1; transform: translateY(0); }
662
- }
663
-
664
- @keyframes slideInRight {
665
- from { opacity: 0; transform: translateX(30px); }
666
- to { opacity: 1; transform: translateX(0); }
667
- }
668
-
669
- @keyframes slideInLeft {
670
- from { opacity: 0; transform: translateX(-30px); }
671
- to { opacity: 1; transform: translateX(0); }
672
- }
673
-
674
- @keyframes scaleIn {
675
- from { opacity: 0; transform: scale(0.9); }
676
- to { opacity: 1; transform: scale(1); }
677
- }
678
-
679
- @keyframes float {
680
- 0%, 100% { transform: translateY(0px); }
681
- 50% { transform: translateY(-10px); }
682
- }
683
-
684
- @keyframes pulse {
685
- 0%, 100% { opacity: 1; transform: scale(1); }
686
- 50% { opacity: 0.8; transform: scale(1.05); }
687
- }
688
-
689
- @keyframes glow {
690
- 0%, 100% { box-shadow: 0 0 5px rgba(102, 126, 234, 0.3); }
691
- 50% { box-shadow: 0 0 20px rgba(102, 126, 234, 0.6); }
692
- }
693
-
694
- /* 动画类 */
695
- .fade-in {
696
- animation: fadeIn 0.5s ease-out;
697
- }
698
-
699
- .slide-in-right {
700
- animation: slideInRight 0.5s ease-out;
701
- }
702
-
703
- .slide-in-left {
704
- animation: slideInLeft 0.5s ease-out;
705
- }
706
-
707
- .scale-in {
708
- animation: scaleIn 0.3s ease-out;
709
- }
710
-
711
- .float-animation {
712
- animation: float 3s ease-in-out infinite;
713
- }
714
-
715
- .pulse-animation {
716
- animation: pulse 2s ease-in-out infinite;
717
- }
718
-
719
- .glow-animation {
720
- animation: glow 2s ease-in-out infinite;
721
- }
722
-
723
- /* 滚动条样式 */
724
- ::-webkit-scrollbar {
725
- width: 8px;
726
- height: 8px;
727
- }
728
-
729
- ::-webkit-scrollbar-track {
730
- background: #f1f1f1;
731
- border-radius: 4px;
732
- }
733
-
734
- ::-webkit-scrollbar-thumb {
735
- background: #c1c1c1;
736
- border-radius: 4px;
737
- }
738
-
739
- ::-webkit-scrollbar-thumb:hover {
740
- background: #a8a8a8;
741
- }
742
-
743
- /* 加载状态 */
744
- .loading {
745
- opacity: 0.6;
746
- pointer-events: none;
747
- }
748
-
749
- .loading::after {
750
- content: '';
751
- position: absolute;
752
- top: 50%;
753
- left: 50%;
754
- width: 20px;
755
- height: 20px;
756
- margin: -10px 0 0 -10px;
757
- border: 2px solid #f3f3f3;
758
- border-top: 2px solid var(--db-primary-color);
759
- border-radius: 50%;
760
- animation: spin 1s linear infinite;
761
- }
762
-
763
- @keyframes spin {
764
- 0% { transform: rotate(0deg); }
765
- 100% { transform: rotate(360deg); }
766
- }
767
-
768
- /* 现代状态样式 */
769
- .status-online {
770
- color: var(--db-accent-color);
771
- display: flex;
772
- align-items: center;
773
- gap: var(--db-spacing-xs);
774
- }
775
-
776
- .status-offline {
777
- color: var(--db-gray-dark);
778
- display: flex;
779
- align-items: center;
780
- gap: var(--db-spacing-xs);
781
- }
782
-
783
- .status-error {
784
- color: var(--db-danger-color);
785
- display: flex;
786
- align-items: center;
787
- gap: var(--db-spacing-xs);
788
- }
789
-
790
- .status-dot {
791
- width: 8px;
792
- height: 8px;
793
- border-radius: 50%;
794
- background: currentColor;
795
- animation: pulse 2s ease-in-out infinite;
796
- }
797
-
798
- /* 数据库类型样式 */
799
- .db-icon-mysql {
800
- color: #00758f;
801
- background: linear-gradient(135deg, #00758f 0%, #005a70 100%);
802
- }
803
- .db-icon-postgres {
804
- color: #336791;
805
- background: linear-gradient(135deg, #336791 0%, #2a5278 100%);
806
- }
807
- .db-icon-sqlite {
808
- color: #003b57;
809
- background: linear-gradient(135deg, #003b57 0%, #002d42 100%);
810
- }
811
- .db-icon-mssql {
812
- color: #cc2927;
813
- background: linear-gradient(135deg, #cc2927 0%, #a62220 100%);
814
- }
815
- .db-icon-oracle {
816
- color: #f80000;
817
- background: linear-gradient(135deg, #f80000 0%, #d40000 100%);
818
- }
819
-
820
- /* 现代工具类 */
821
- .text-gradient {
822
- background: var(--db-primary-gradient);
823
- -webkit-background-clip: text;
824
- -webkit-text-fill-color: transparent;
825
- background-clip: text;
826
- }
827
-
828
- .bg-gradient {
829
- background: var(--db-primary-gradient);
830
- }
831
-
832
- .bg-glass {
833
- background: rgba(255, 255, 255, 0.8);
834
- backdrop-filter: blur(10px);
835
- border: 1px solid rgba(255, 255, 255, 0.2);
836
- }
837
-
838
- .shadow-soft {
839
- box-shadow: 0 8px 32px rgba(31, 38, 135, 0.15);
840
- }
841
-
842
- .border-gradient {
843
- border: 1px solid;
844
- border-image: var(--db-primary-gradient) 1;
845
- }
846
-
847
- .hover-lift {
848
- transition: transform 0.3s ease;
849
- }
850
-
851
- .hover-lift:hover {
852
- transform: translateY(-4px);
853
- }
854
-
855
- .hover-scale {
856
- transition: transform 0.3s ease;
857
- }
858
-
859
- .hover-scale:hover {
860
- transform: scale(1.02);
861
- }
862
-
863
- /* 加载状态 */
864
- .loading-overlay {
865
- position: absolute;
866
- top: 0;
867
- left: 0;
868
- width: 100%;
869
- height: 100%;
870
- background: rgba(255, 255, 255, 0.9);
871
- display: flex;
872
- align-items: center;
873
- justify-content: center;
874
- z-index: 9999;
875
- backdrop-filter: blur(2px);
876
- }
877
-
878
- .loading-spinner {
879
- width: 40px;
880
- height: 40px;
881
- border: 4px solid var(--db-gray-light);
882
- border-top: 4px solid var(--db-primary-color);
883
- border-radius: 50%;
884
- animation: spin 1s linear infinite;
885
- }
886
-
887
- @keyframes spin {
888
- 0% { transform: rotate(0deg); }
889
- 100% { transform: rotate(360deg); }
890
- }
891
-
892
- /* 响应式工具类 */
893
- .container-fluid {
894
- padding-left: var(--db-spacing-lg);
895
- padding-right: var(--db-spacing-lg);
896
- }
897
-
898
- @media (max-width: 768px) {
899
- .container-fluid {
900
- padding-left: var(--db-spacing-md);
901
- padding-right: var(--db-spacing-md);
902
- }
903
- }
904
-
905
- @media (max-width: 480px) {
906
- .container-fluid {
907
- padding-left: var(--db-spacing-sm);
908
- padding-right: var(--db-spacing-sm);
909
- }
910
- }
911
-
912
- /* 暗色模式支持 */
913
- @media (prefers-color-scheme: dark) {
914
- :root {
915
- --db-light-color: #1e293b;
916
- --db-gray-light: #334155;
917
- --db-gray-medium: #475569;
918
- --db-gray-dark: #64748b;
919
- --db-darker-color: #94a3b8;
920
- --db-dark-color: #f1f5f9;
921
- --db-black: #f8fafc;
922
-
923
- --db-bg-gradient: linear-gradient(135deg, #1e293b 0%, #334155 100%);
924
- --db-card-gradient: linear-gradient(135deg, #334155 0%, #1e293b 100%);
925
- }
926
-
927
- .card {
928
- border-color: #475569;
929
- }
930
-
931
- .form-control,
932
- .form-select {
933
- background: #1e293b;
934
- border-color: #475569;
935
- color: #f1f5f9;
936
- }
937
-
938
- .navbar {
939
- background: linear-gradient(135deg, #334155 0%, #1e293b 100%);
940
- }
941
-
942
- .table {
943
- background: #1e293b;
944
- }
945
-
946
- .table th {
947
- background: #475569;
948
- color: #f1f5f9;
949
- }
950
- }
951
- /* 覆盖Bootstrap默认样式 */
952
- .toast-container[data-v-7d639c44] {
953
- z-index: 1100;
954
- }
955
- .fade-out[data-v-7d639c44] {
956
- animation: fadeOut-7d639c44 1s forwards;
957
- }
958
- @keyframes fadeOut-7d639c44 {
959
- 0% { opacity: 1; transform: translateY(0);
960
- }
961
- 100% { opacity: 0; transform: translateY(-120%);}
962
- }
963
-
964
- .loading-overlay[data-v-d5892680] {
965
- position: absolute;
966
- top: 0;
967
- left: 0;
968
- width: 100%;
969
- height: 100%;
970
- background-color: rgba(0, 0, 0, 0.3);
971
- display: flex;
972
- justify-content: center;
973
- align-items: center;
974
- z-index: 1050;
975
- }
976
- .loading-spinner[data-v-d5892680] {
977
- text-align: center;
978
- }
979
-
980
- .modal-dialog[data-v-6653cff9] {
981
- z-index: var(--bs-modal-zindex);
982
- max-width:none !important;
983
- }
984
- .modal-success .modal-header[data-v-6653cff9] {
985
- background-color: var(--bs-success);
986
- color: white;
987
- }
988
- .modal-error .modal-header[data-v-6653cff9] {
989
- background-color: var(--bs-danger);
990
- color: white;
991
- }
992
- .modal-warning .modal-header[data-v-6653cff9] {
993
- background-color: var(--bs-warning);
994
- color: var(--bs-dark);
995
- }
996
- .modal-info .modal-header[data-v-6653cff9] {
997
- background-color: var(--bs-info);
998
- color: white;
999
- }
1000
- .modal-body[data-v-6653cff9] {
1001
- min-height: 80px;
1002
- display: flex;
1003
- flex-direction: column;
1004
- align-items: stretch;
1005
- }
1006
- .error-details[data-v-6653cff9] {
1007
- width: 100%;
1008
- margin-top: 1rem;
1009
- }
1010
- .error-content[data-v-6653cff9] {
1011
- background-color: #f8f9fa;
1012
- border: 1px solid #e9ecef;
1013
- border-radius: 0.375rem;
1014
- padding: 1rem;
1015
- margin: 0;
1016
- max-height: 200px;
1017
- overflow-y: auto;
1018
- white-space: pre-wrap;
1019
- word-break: break-word;
1020
- font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
1021
- font-size: 0.875rem;
1022
- line-height: 1.5;
1023
- }
1024
- .error-details-toggle[data-v-6653cff9] {
1025
- width: 100%;
1026
- }
1027
- .error-details-content[data-v-6653cff9] {
1028
- background-color: #f8f9fa;
1029
- border: 1px solid #e9ecef;
1030
- border-radius: 0.375rem;
1031
- padding: 1rem;
1032
- margin-top: 0.5rem;
1033
- }
1034
- .error-json[data-v-6653cff9] {
1035
- background-color: #212529;
1036
- color: #f8f9fa;
1037
- border-radius: 0.25rem;
1038
- padding: 0.75rem;
1039
- font-size: 0.8rem;
1040
- line-height: 1.4;
1041
- max-height: 300px;
1042
- overflow-y: auto;
1043
- white-space: pre-wrap;
1044
- word-break: break-word;
1045
- }
1046
- .error-meta[data-v-6653cff9] {
1047
- border-bottom: 1px solid #dee2e6;
1048
- padding-bottom: 0.5rem;
1049
- margin-bottom: 0.5rem;
1050
- }
1051
- .modal-body .fs-1[data-v-6653cff9] {
1052
- font-size: 2.5rem;
1053
- margin-bottom: 1rem;
1054
- }
1055
-
1056
- /* 响应式调整 */
1057
- @media (max-width: 576px) {
1058
- .error-content[data-v-6653cff9],
1059
- .error-json[data-v-6653cff9] {
1060
- font-size: 0.75rem;
1061
- max-height: 150px;
1062
- }
1063
- }
1064
-
1065
- .datagrid-container[data-v-ae552d25] {
1066
- display: flex;
1067
- flex-direction: column;
1068
- height: 100%;
1069
- }
1070
- .datagrid-inner[data-v-ae552d25] {
1071
- flex: 1;
1072
- overflow: auto;
1073
- margin-bottom: 10px;
1074
- }
1075
- .datagrid-th[data-v-ae552d25] {
1076
- min-width: 80px;
1077
- white-space: nowrap;
1078
- position: sticky;
1079
- top: 0;
1080
- z-index: 10;
1081
- background-color: #f8f9fa;
1082
- }
1083
- .datagrid-th.sortable[data-v-ae552d25] {
1084
- cursor: pointer;
1085
- user-select: none;
1086
- }
1087
- .datagrid-th.sortable[data-v-ae552d25]:hover {
1088
- background-color: #e9ecef;
1089
- }
1090
- .header-content[data-v-ae552d25] {
1091
- display: flex;
1092
- align-items: center;
1093
- gap: 0.5rem;
1094
- }
1095
- .sort-icon[data-v-ae552d25] {
1096
- display: flex;
1097
- align-items: center;
1098
- font-size: 0.75rem;
1099
- }