fdb2 1.0.8 → 1.0.10
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.
- package/.dockerignore +21 -21
- package/.editorconfig +11 -11
- package/.eslintrc.cjs +14 -14
- package/.eslintrc.json +7 -7
- package/.prettierrc.js +3 -3
- package/.tpl.env +21 -21
- package/.vscodeignore +45 -45
- package/README.md +312 -312
- package/bin/build.sh +28 -28
- package/bin/deploy.sh +8 -8
- package/bin/dev.sh +10 -10
- package/bin/docker/dev-docker-compose.yml +43 -43
- package/bin/docker/dev.Dockerfile +24 -24
- package/bin/docker/prod-docker-compose.yml +17 -17
- package/bin/docker/prod.Dockerfile +29 -29
- package/bin/fdb2.js +220 -220
- package/dist/package.json +29 -29
- package/dist/pnpm-lock.yaml +1042 -354
- package/dist/public/explorer.css +1464 -1437
- package/dist/public/explorer.js +759 -223
- package/dist/public/index.css +1026 -1026
- package/dist/public/index.js +15 -9
- package/dist/public/layout.css +221 -221
- package/dist/public/layout.js +1 -1
- package/dist/public/vue.js +8 -2
- package/dist/scripts/preinstall.js +112 -112
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +8 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.ts +680 -671
- package/dist/server/model/connection.entity.ts +65 -65
- package/dist/server/model/database.entity.ts +245 -245
- package/dist/server/service/connection.service.d.ts +6 -1
- package/dist/server/service/connection.service.d.ts.map +1 -1
- package/dist/server/service/connection.service.js +18 -1
- package/dist/server/service/connection.service.js.map +1 -1
- package/dist/server/service/connection.service.ts +358 -341
- package/dist/server/service/database/base.service.d.ts +27 -0
- package/dist/server/service/database/base.service.d.ts.map +1 -1
- package/dist/server/service/database/base.service.js +17 -0
- package/dist/server/service/database/base.service.js.map +1 -1
- package/dist/server/service/database/base.service.ts +406 -367
- package/dist/server/service/database/cockroachdb.service.d.ts +16 -0
- package/dist/server/service/database/cockroachdb.service.d.ts.map +1 -1
- package/dist/server/service/database/cockroachdb.service.js +220 -154
- package/dist/server/service/database/cockroachdb.service.js.map +1 -1
- package/dist/server/service/database/cockroachdb.service.ts +871 -782
- package/dist/server/service/database/database.service.d.ts +4 -0
- package/dist/server/service/database/database.service.d.ts.map +1 -1
- package/dist/server/service/database/database.service.js +123 -0
- package/dist/server/service/database/database.service.js.map +1 -1
- package/dist/server/service/database/database.service.ts +775 -638
- package/dist/server/service/database/index.ts +6 -6
- package/dist/server/service/database/mongodb.service.d.ts +16 -0
- package/dist/server/service/database/mongodb.service.d.ts.map +1 -1
- package/dist/server/service/database/mongodb.service.js +35 -0
- package/dist/server/service/database/mongodb.service.js.map +1 -1
- package/dist/server/service/database/mongodb.service.ts +39 -1
- package/dist/server/service/database/mssql.service.d.ts +16 -0
- package/dist/server/service/database/mssql.service.d.ts.map +1 -1
- package/dist/server/service/database/mssql.service.js +168 -96
- package/dist/server/service/database/mssql.service.js.map +1 -1
- package/dist/server/service/database/mssql.service.ts +931 -840
- package/dist/server/service/database/mysql.service.d.ts +16 -0
- package/dist/server/service/database/mysql.service.d.ts.map +1 -1
- package/dist/server/service/database/mysql.service.js +189 -80
- package/dist/server/service/database/mysql.service.js.map +1 -1
- package/dist/server/service/database/mysql.service.ts +1025 -890
- package/dist/server/service/database/oracle.service.d.ts +16 -0
- package/dist/server/service/database/oracle.service.d.ts.map +1 -1
- package/dist/server/service/database/oracle.service.js +182 -120
- package/dist/server/service/database/oracle.service.js.map +1 -1
- package/dist/server/service/database/oracle.service.ts +1035 -959
- package/dist/server/service/database/postgres.service.d.ts +16 -0
- package/dist/server/service/database/postgres.service.d.ts.map +1 -1
- package/dist/server/service/database/postgres.service.js +154 -88
- package/dist/server/service/database/postgres.service.js.map +1 -1
- package/dist/server/service/database/postgres.service.ts +960 -871
- package/dist/server/service/database/sap.service.d.ts +16 -0
- package/dist/server/service/database/sap.service.d.ts.map +1 -1
- package/dist/server/service/database/sap.service.js +66 -0
- package/dist/server/service/database/sap.service.js.map +1 -1
- package/dist/server/service/database/sap.service.ts +89 -0
- package/dist/server/service/database/sqlite.service.d.ts +17 -1
- package/dist/server/service/database/sqlite.service.d.ts.map +1 -1
- package/dist/server/service/database/sqlite.service.js +78 -19
- package/dist/server/service/database/sqlite.service.js.map +1 -1
- package/dist/server/service/database/sqlite.service.ts +787 -708
- package/dist/server/service/session.service.ts +158 -158
- package/dist/view/index.html +38 -38
- package/env.d.ts +1 -1
- package/package.json +7 -2
- package/packages/vscode/.vscodeignore +44 -44
- package/packages/vscode/README.md +62 -62
- package/packages/vscode/out/database-services/cockroachdb.service.js +154 -154
- package/packages/vscode/out/database-services/mssql.service.js +96 -96
- package/packages/vscode/out/database-services/mysql.service.js +80 -80
- package/packages/vscode/out/database-services/oracle.service.js +120 -120
- package/packages/vscode/out/database-services/postgres.service.js +88 -88
- package/packages/vscode/out/database-services/sqlite.service.js +18 -18
- package/packages/vscode/out/provider/WebViewProvider.js +32 -32
- package/packages/vscode/package.json +142 -142
- package/packages/vscode/resources/icon.svg +5 -5
- package/packages/vscode/resources/webview/connection.css +41 -41
- package/packages/vscode/resources/webview/database.css +163 -163
- package/packages/vscode/resources/webview/index.html +9 -9
- package/packages/vscode/resources/webview/modules/header.tpl +13 -13
- package/packages/vscode/resources/webview/modules/initial_state.tpl +54 -54
- package/packages/vscode/resources/webview/query.css +104 -104
- package/packages/vscode/src/database-services/base.service.ts +362 -362
- package/packages/vscode/src/database-services/cockroachdb.service.ts +659 -659
- package/packages/vscode/src/database-services/connection.service.ts +340 -340
- package/packages/vscode/src/database-services/database.service.ts +629 -629
- package/packages/vscode/src/database-services/index.ts +6 -6
- package/packages/vscode/src/database-services/model/connection.entity.ts +65 -65
- package/packages/vscode/src/database-services/model/database.entity.ts +245 -245
- package/packages/vscode/src/database-services/mssql.service.ts +722 -722
- package/packages/vscode/src/database-services/mysql.service.ts +760 -760
- package/packages/vscode/src/database-services/oracle.service.ts +831 -831
- package/packages/vscode/src/database-services/postgres.service.ts +740 -740
- package/packages/vscode/src/database-services/sqlite.service.ts +558 -558
- package/packages/vscode/src/extension.ts +76 -76
- package/packages/vscode/src/provider/DatabaseTreeProvider.ts +167 -167
- package/packages/vscode/src/provider/WebViewProvider.ts +277 -277
- package/packages/vscode/src/service/DatabaseServiceBridge.ts +414 -414
- package/packages/vscode/src/typings/connection.ts +90 -90
- package/packages/vscode/tsconfig.json +21 -21
- package/public/index.html +9 -9
- package/public/modules/header.tpl +13 -13
- package/public/modules/initial_state.tpl +54 -54
- package/scripts/preinstall.js +112 -112
- package/server/index.ts +680 -671
- package/server/model/connection.entity.ts +65 -65
- package/server/model/database.entity.ts +245 -245
- package/server/service/connection.service.ts +358 -341
- package/server/service/database/base.service.ts +406 -367
- package/server/service/database/cockroachdb.service.ts +871 -782
- package/server/service/database/database.service.ts +775 -638
- package/server/service/database/index.ts +6 -6
- package/server/service/database/mongodb.service.ts +39 -1
- package/server/service/database/mssql.service.ts +931 -840
- package/server/service/database/mysql.service.ts +1025 -890
- package/server/service/database/oracle.service.ts +1035 -959
- package/server/service/database/postgres.service.ts +960 -871
- package/server/service/database/sap.service.ts +89 -0
- package/server/service/database/sqlite.service.ts +787 -708
- package/server/service/session.service.ts +158 -158
- package/server/tsconfig.json +20 -20
- package/server.js +149 -149
- package/server.pid +1 -0
- package/src/adapter/ajax.ts +135 -135
- package/src/assets/base.css +1 -1
- package/src/assets/database.css +949 -949
- package/src/assets/images/svg/illustrations/illustration-1.svg +1 -1
- package/src/assets/images/svg/illustrations/illustration-2.svg +2 -2
- package/src/assets/images/svg/illustrations/illustration-3.svg +50 -50
- package/src/assets/images/svg/illustrations/illustration-4.svg +1 -1
- package/src/assets/images/svg/illustrations/illustration-5.svg +73 -73
- package/src/assets/images/svg/illustrations/illustration-6.svg +89 -89
- package/src/assets/images/svg/illustrations/illustration-7.svg +39 -39
- package/src/assets/images/svg/separators/curve-2.svg +3 -3
- package/src/assets/images/svg/separators/curve.svg +3 -3
- package/src/assets/images/svg/separators/line.svg +3 -3
- package/src/assets/logo.svg +73 -73
- package/src/assets/main.css +1 -1
- package/src/base/config.ts +20 -20
- package/src/base/detect.ts +134 -134
- package/src/base/entity.ts +92 -92
- package/src/base/eventBus.ts +36 -36
- package/src/components/connection-editor/index.vue +588 -588
- package/src/components/dataGrid/index.vue +104 -104
- package/src/components/dataGrid/pagination.vue +105 -105
- package/src/components/loading/index.vue +42 -42
- package/src/components/modal/index.ts +180 -180
- package/src/components/modal/index.vue +560 -560
- package/src/components/toast/index.ts +43 -43
- package/src/components/toast/toast.vue +57 -57
- package/src/components/user/name.vue +103 -103
- package/src/components/user/selector.vue +416 -416
- package/src/domain/SysConfig.ts +74 -74
- package/src/platform/App.vue +7 -7
- package/src/platform/database/components/connection-detail.vue +1153 -1154
- package/src/platform/database/components/data-editor.vue +477 -477
- package/src/platform/database/components/database-detail.vue +1173 -1172
- package/src/platform/database/components/database-monitor.vue +1085 -1085
- package/src/platform/database/components/db-tools.vue +1264 -816
- package/src/platform/database/components/query-history.vue +1348 -1348
- package/src/platform/database/components/sql-executor.vue +737 -737
- package/src/platform/database/components/sql-query-editor.vue +1045 -1045
- package/src/platform/database/components/table-detail.vue +1375 -1376
- package/src/platform/database/components/table-editor.vue +916 -916
- package/src/platform/database/explorer.vue +1839 -1839
- package/src/platform/database/index.vue +1192 -1192
- package/src/platform/database/layout.vue +366 -366
- package/src/platform/database/router.ts +36 -36
- package/src/platform/database/styles/common.scss +601 -601
- package/src/platform/database/types/common.ts +444 -444
- package/src/platform/database/utils/export.ts +231 -231
- package/src/platform/database/utils/helpers.ts +436 -436
- package/src/platform/index.ts +32 -32
- package/src/platform/router.ts +40 -40
- package/src/platform/vscode/bridge.ts +121 -121
- package/src/platform/vscode/components/ConnectionPanel.vue +272 -272
- package/src/platform/vscode/components/DatabasePanel.vue +532 -532
- package/src/platform/vscode/components/QueryPanel.vue +371 -371
- package/src/platform/vscode/entry/connection.ts +13 -13
- package/src/platform/vscode/entry/database.ts +13 -13
- package/src/platform/vscode/entry/query.ts +13 -13
- package/src/platform/vscode/index.ts +5 -5
- package/src/service/base.ts +133 -127
- package/src/service/database.ts +505 -495
- package/src/service/login.ts +120 -120
- package/src/shims-vue.d.ts +6 -6
- package/src/stores/connection.ts +266 -266
- package/src/stores/session.ts +87 -87
- package/src/typings/database-types.ts +412 -412
- package/src/typings/database.ts +363 -363
- package/src/typings/global.d.ts +58 -58
- package/src/typings/pinia.d.ts +7 -7
- package/src/utils/clipboard.ts +29 -29
- package/src/utils/database-types.ts +242 -242
- package/src/utils/modal.ts +123 -123
- package/src/utils/request.ts +55 -55
- package/src/utils/sleep.ts +3 -3
- package/src/utils/toast.ts +73 -73
- package/src/utils/util.ts +171 -171
- package/src/utils/xlsx.ts +228 -228
- package/tsconfig.json +33 -33
- package/view/index.html +9 -9
- package/view/modules/header.tpl +13 -13
- package/view/modules/initial_state.tpl +19 -19
- package/vite.config.ts +424 -424
- package/vite.config.vscode.ts +47 -47
- package/fdb2.server.pid +0 -1
- package/server/backups/db_ai_breakout_2026-03-11T08-38-48-677Z.sql +0 -0
package/dist/public/explorer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { s as defineComponent, w as watch, o as openBlock, v as createElementBlock, F as Fragment, J as createVNode, N as withCtx, a as ref, z as createBaseVNode, L as withModifiers, H as createTextVNode, O as withDirectives, P as vModelText, x as renderList, A as toDisplayString, Q as vModelSelect, B as createCommentVNode, R as vModelCheckbox, G as onMounted, y as normalizeClass, S as vShow, l as computed, T as useRouter, K as normalizeStyle, n as nextTick,
|
|
1
|
+
import { s as defineComponent, w as watch, o as openBlock, v as createElementBlock, F as Fragment, J as createVNode, N as withCtx, a as ref, z as createBaseVNode, L as withModifiers, H as createTextVNode, O as withDirectives, P as vModelText, x as renderList, A as toDisplayString, Q as vModelSelect, B as createCommentVNode, R as vModelCheckbox, G as onMounted, y as normalizeClass, S as vShow, l as computed, T as useRouter, U as createStaticVNode, K as normalizeStyle, n as nextTick, V as withKeys, c as createBlock, W as useRoute } from "./vue.js";
|
|
2
2
|
import { r as request, M as Modal, _ as _export_sfc, s as showAlert, a as showConfirm, g as getModalInstance, d as defineStore, t as toast, c as commonjsGlobal, T as Toast } from "./index.js";
|
|
3
3
|
import "./bootstrap.js";
|
|
4
4
|
class ConnectionService {
|
|
@@ -352,6 +352,15 @@ class DatabaseService {
|
|
|
352
352
|
database: databaseName
|
|
353
353
|
});
|
|
354
354
|
}
|
|
355
|
+
/**
|
|
356
|
+
* 同步表结构和数据到其他数据库
|
|
357
|
+
*/
|
|
358
|
+
async syncTable(connectionId, syncConfig) {
|
|
359
|
+
return request("/api/database/syncTable", {
|
|
360
|
+
id: connectionId,
|
|
361
|
+
syncConfig
|
|
362
|
+
});
|
|
363
|
+
}
|
|
355
364
|
}
|
|
356
365
|
const _hoisted_1$8 = { class: "form-section" };
|
|
357
366
|
const _hoisted_2$8 = { class: "section-content" };
|
|
@@ -377,16 +386,16 @@ const _hoisted_15$8 = { class: "section-content" };
|
|
|
377
386
|
const _hoisted_16$7 = { class: "form-grid" };
|
|
378
387
|
const _hoisted_17$7 = { class: "form-group-modern" };
|
|
379
388
|
const _hoisted_18$7 = { class: "form-section" };
|
|
380
|
-
const _hoisted_19$
|
|
381
|
-
const _hoisted_20$
|
|
382
|
-
const _hoisted_21$
|
|
383
|
-
const _hoisted_22$
|
|
384
|
-
const _hoisted_23$
|
|
385
|
-
const _hoisted_24$
|
|
386
|
-
const _hoisted_25$
|
|
387
|
-
const _hoisted_26$
|
|
388
|
-
const _hoisted_27$
|
|
389
|
-
const _hoisted_28$
|
|
389
|
+
const _hoisted_19$7 = { class: "section-content" };
|
|
390
|
+
const _hoisted_20$7 = { class: "form-grid" };
|
|
391
|
+
const _hoisted_21$7 = { class: "form-group-modern" };
|
|
392
|
+
const _hoisted_22$7 = { class: "form-group-modern" };
|
|
393
|
+
const _hoisted_23$7 = { class: "form-section" };
|
|
394
|
+
const _hoisted_24$7 = { class: "section-content" };
|
|
395
|
+
const _hoisted_25$7 = { class: "form-group-modern" };
|
|
396
|
+
const _hoisted_26$7 = { class: "form-check-modern" };
|
|
397
|
+
const _hoisted_27$7 = { class: "error-content" };
|
|
398
|
+
const _hoisted_28$7 = { class: "error-message" };
|
|
390
399
|
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
391
400
|
__name: "index",
|
|
392
401
|
props: {
|
|
@@ -796,9 +805,9 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
796
805
|
]),
|
|
797
806
|
createBaseVNode("h3", { class: "section-title" }, "认证信息")
|
|
798
807
|
], -1)),
|
|
799
|
-
createBaseVNode("div", _hoisted_19$
|
|
800
|
-
createBaseVNode("div", _hoisted_20$
|
|
801
|
-
createBaseVNode("div", _hoisted_21$
|
|
808
|
+
createBaseVNode("div", _hoisted_19$7, [
|
|
809
|
+
createBaseVNode("div", _hoisted_20$7, [
|
|
810
|
+
createBaseVNode("div", _hoisted_21$7, [
|
|
802
811
|
_cache[22] || (_cache[22] = createBaseVNode("label", { class: "form-label-modern" }, [
|
|
803
812
|
createBaseVNode("i", { class: "bi bi-person me-2" }),
|
|
804
813
|
createTextVNode("用户名 ")
|
|
@@ -812,7 +821,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
812
821
|
[vModelText, connectionForm.value.username]
|
|
813
822
|
])
|
|
814
823
|
]),
|
|
815
|
-
createBaseVNode("div", _hoisted_22$
|
|
824
|
+
createBaseVNode("div", _hoisted_22$7, [
|
|
816
825
|
_cache[23] || (_cache[23] = createBaseVNode("label", { class: "form-label-modern" }, [
|
|
817
826
|
createBaseVNode("i", { class: "bi bi-key me-2" }),
|
|
818
827
|
createTextVNode("密码 ")
|
|
@@ -829,20 +838,20 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
829
838
|
])
|
|
830
839
|
])
|
|
831
840
|
]),
|
|
832
|
-
createBaseVNode("div", _hoisted_23$
|
|
841
|
+
createBaseVNode("div", _hoisted_23$7, [
|
|
833
842
|
_cache[27] || (_cache[27] = createBaseVNode("div", { class: "section-header" }, [
|
|
834
843
|
createBaseVNode("div", { class: "section-icon" }, [
|
|
835
844
|
createBaseVNode("i", { class: "bi bi-gear" })
|
|
836
845
|
]),
|
|
837
846
|
createBaseVNode("h3", { class: "section-title" }, "其他选项")
|
|
838
847
|
], -1)),
|
|
839
|
-
createBaseVNode("div", _hoisted_24$
|
|
840
|
-
createBaseVNode("div", _hoisted_25$
|
|
848
|
+
createBaseVNode("div", _hoisted_24$7, [
|
|
849
|
+
createBaseVNode("div", _hoisted_25$7, [
|
|
841
850
|
_cache[26] || (_cache[26] = createBaseVNode("label", { class: "form-label-modern" }, [
|
|
842
851
|
createBaseVNode("i", { class: "bi bi-toggle-on me-2" }),
|
|
843
852
|
createTextVNode("连接状态 ")
|
|
844
853
|
], -1)),
|
|
845
|
-
createBaseVNode("div", _hoisted_26$
|
|
854
|
+
createBaseVNode("div", _hoisted_26$7, [
|
|
846
855
|
withDirectives(createBaseVNode("input", {
|
|
847
856
|
class: "form-check-input-modern",
|
|
848
857
|
type: "checkbox",
|
|
@@ -876,11 +885,11 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
876
885
|
style: { maxWidth: "400px!important", width: "100%" }
|
|
877
886
|
}, {
|
|
878
887
|
default: withCtx(() => [
|
|
879
|
-
createBaseVNode("div", _hoisted_27$
|
|
888
|
+
createBaseVNode("div", _hoisted_27$7, [
|
|
880
889
|
_cache[32] || (_cache[32] = createBaseVNode("div", { class: "error-icon" }, [
|
|
881
890
|
createBaseVNode("i", { class: "bi bi-exclamation-triangle" })
|
|
882
891
|
], -1)),
|
|
883
|
-
createBaseVNode("div", _hoisted_28$
|
|
892
|
+
createBaseVNode("div", _hoisted_28$7, toDisplayString(errorMessage.value), 1)
|
|
884
893
|
])
|
|
885
894
|
]),
|
|
886
895
|
_: 1
|
|
@@ -889,7 +898,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
889
898
|
};
|
|
890
899
|
}
|
|
891
900
|
});
|
|
892
|
-
const ConnectionEditor = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-
|
|
901
|
+
const ConnectionEditor = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-60ee1360"]]);
|
|
893
902
|
class ModalHelper {
|
|
894
903
|
/**
|
|
895
904
|
* 获取全局modal实例
|
|
@@ -44160,7 +44169,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
44160
44169
|
};
|
|
44161
44170
|
}
|
|
44162
44171
|
});
|
|
44163
|
-
const SqlExecutor = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-
|
|
44172
|
+
const SqlExecutor = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-82959a5b"]]);
|
|
44164
44173
|
const _hoisted_1$6 = { class: "connection-detail" };
|
|
44165
44174
|
const _hoisted_2$6 = { class: "connection-header" };
|
|
44166
44175
|
const _hoisted_3$6 = { class: "connection-info" };
|
|
@@ -44182,68 +44191,68 @@ const _hoisted_15$6 = { class: "info-grid" };
|
|
|
44182
44191
|
const _hoisted_16$6 = { class: "info-item" };
|
|
44183
44192
|
const _hoisted_17$6 = { class: "info-value" };
|
|
44184
44193
|
const _hoisted_18$6 = { class: "info-item" };
|
|
44185
|
-
const _hoisted_19$
|
|
44186
|
-
const _hoisted_20$
|
|
44187
|
-
const _hoisted_21$
|
|
44188
|
-
const _hoisted_22$
|
|
44189
|
-
const _hoisted_23$
|
|
44190
|
-
const _hoisted_24$
|
|
44191
|
-
const _hoisted_25$
|
|
44192
|
-
const _hoisted_26$
|
|
44193
|
-
const _hoisted_27$
|
|
44194
|
-
const _hoisted_28$
|
|
44195
|
-
const _hoisted_29$
|
|
44196
|
-
const _hoisted_30$
|
|
44197
|
-
const _hoisted_31$
|
|
44198
|
-
const _hoisted_32$
|
|
44199
|
-
const _hoisted_33$
|
|
44200
|
-
const _hoisted_34$
|
|
44201
|
-
const _hoisted_35$
|
|
44202
|
-
const _hoisted_36$
|
|
44203
|
-
const _hoisted_37$
|
|
44204
|
-
const _hoisted_38$
|
|
44205
|
-
const _hoisted_39$
|
|
44206
|
-
const _hoisted_40$
|
|
44207
|
-
const _hoisted_41$
|
|
44208
|
-
const _hoisted_42$
|
|
44209
|
-
const _hoisted_43$
|
|
44210
|
-
const _hoisted_44$
|
|
44211
|
-
const _hoisted_45$
|
|
44212
|
-
const _hoisted_46$
|
|
44194
|
+
const _hoisted_19$6 = { class: "info-value" };
|
|
44195
|
+
const _hoisted_20$6 = { class: "info-item" };
|
|
44196
|
+
const _hoisted_21$6 = { class: "info-value" };
|
|
44197
|
+
const _hoisted_22$6 = { class: "info-item" };
|
|
44198
|
+
const _hoisted_23$6 = { class: "info-value" };
|
|
44199
|
+
const _hoisted_24$6 = { class: "col-md-6" };
|
|
44200
|
+
const _hoisted_25$6 = { class: "stats-grid" };
|
|
44201
|
+
const _hoisted_26$6 = { class: "stat-item" };
|
|
44202
|
+
const _hoisted_27$6 = { class: "stat-value" };
|
|
44203
|
+
const _hoisted_28$6 = { class: "stat-item" };
|
|
44204
|
+
const _hoisted_29$5 = { class: "stat-value" };
|
|
44205
|
+
const _hoisted_30$5 = { class: "stat-item" };
|
|
44206
|
+
const _hoisted_31$5 = { class: "stat-value" };
|
|
44207
|
+
const _hoisted_32$5 = { class: "stat-item" };
|
|
44208
|
+
const _hoisted_33$5 = { class: "stat-value" };
|
|
44209
|
+
const _hoisted_34$5 = { class: "connection-tabs" };
|
|
44210
|
+
const _hoisted_35$4 = { class: "nav nav-tabs" };
|
|
44211
|
+
const _hoisted_36$4 = { class: "nav-item" };
|
|
44212
|
+
const _hoisted_37$4 = { class: "badge bg-primary ms-1" };
|
|
44213
|
+
const _hoisted_38$4 = { class: "nav-item" };
|
|
44214
|
+
const _hoisted_39$4 = { class: "tab-content" };
|
|
44215
|
+
const _hoisted_40$4 = { class: "tab-panel" };
|
|
44216
|
+
const _hoisted_41$3 = { class: "databases-section" };
|
|
44217
|
+
const _hoisted_42$3 = { class: "section-header" };
|
|
44218
|
+
const _hoisted_43$3 = { class: "section-actions" };
|
|
44219
|
+
const _hoisted_44$3 = { class: "search-box" };
|
|
44220
|
+
const _hoisted_45$3 = ["disabled"];
|
|
44221
|
+
const _hoisted_46$3 = {
|
|
44213
44222
|
key: 0,
|
|
44214
44223
|
class: "spinner-border spinner-border-sm me-1"
|
|
44215
44224
|
};
|
|
44216
|
-
const _hoisted_47$
|
|
44217
|
-
const _hoisted_48$
|
|
44225
|
+
const _hoisted_47$3 = { class: "databases-list" };
|
|
44226
|
+
const _hoisted_48$3 = {
|
|
44218
44227
|
key: 0,
|
|
44219
44228
|
class: "loading-state"
|
|
44220
44229
|
};
|
|
44221
|
-
const _hoisted_49$
|
|
44230
|
+
const _hoisted_49$3 = {
|
|
44222
44231
|
key: 1,
|
|
44223
44232
|
class: "empty-state"
|
|
44224
44233
|
};
|
|
44225
|
-
const _hoisted_50$
|
|
44234
|
+
const _hoisted_50$3 = {
|
|
44226
44235
|
key: 2,
|
|
44227
44236
|
class: "databases-list-simple"
|
|
44228
44237
|
};
|
|
44229
|
-
const _hoisted_51$
|
|
44230
|
-
const _hoisted_52$
|
|
44231
|
-
const _hoisted_53$
|
|
44232
|
-
const _hoisted_54$
|
|
44233
|
-
const _hoisted_55$
|
|
44234
|
-
const _hoisted_56$
|
|
44235
|
-
const _hoisted_57$
|
|
44238
|
+
const _hoisted_51$3 = ["onClick"];
|
|
44239
|
+
const _hoisted_52$3 = { class: "database-item-name" };
|
|
44240
|
+
const _hoisted_53$3 = { class: "database-item-actions" };
|
|
44241
|
+
const _hoisted_54$3 = { class: "tab-panel" };
|
|
44242
|
+
const _hoisted_55$3 = { class: "sql-section" };
|
|
44243
|
+
const _hoisted_56$3 = { class: "sql-header" };
|
|
44244
|
+
const _hoisted_57$3 = {
|
|
44236
44245
|
key: 0,
|
|
44237
44246
|
class: "sql-db-info"
|
|
44238
44247
|
};
|
|
44239
|
-
const _hoisted_58$
|
|
44240
|
-
const _hoisted_59$
|
|
44248
|
+
const _hoisted_58$3 = { class: "badge bg-info" };
|
|
44249
|
+
const _hoisted_59$3 = {
|
|
44241
44250
|
key: 1,
|
|
44242
44251
|
class: "modal fade show d-block",
|
|
44243
44252
|
style: { "background": "rgba(0,0,0,0.5)" }
|
|
44244
44253
|
};
|
|
44245
|
-
const _hoisted_60$
|
|
44246
|
-
const _hoisted_61$
|
|
44254
|
+
const _hoisted_60$3 = { class: "modal-dialog" };
|
|
44255
|
+
const _hoisted_61$3 = { class: "modal-content" };
|
|
44247
44256
|
const _hoisted_62$2 = { class: "modal-header" };
|
|
44248
44257
|
const _hoisted_63$2 = { class: "modal-body" };
|
|
44249
44258
|
const _hoisted_64$2 = { class: "mb-3" };
|
|
@@ -44524,15 +44533,15 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44524
44533
|
]),
|
|
44525
44534
|
createBaseVNode("div", _hoisted_18$6, [
|
|
44526
44535
|
_cache[19] || (_cache[19] = createBaseVNode("label", { class: "info-label" }, "端口", -1)),
|
|
44527
|
-
createBaseVNode("div", _hoisted_19$
|
|
44536
|
+
createBaseVNode("div", _hoisted_19$6, toDisplayString(__props.connection?.port), 1)
|
|
44528
44537
|
]),
|
|
44529
|
-
createBaseVNode("div", _hoisted_20$
|
|
44538
|
+
createBaseVNode("div", _hoisted_20$6, [
|
|
44530
44539
|
_cache[20] || (_cache[20] = createBaseVNode("label", { class: "info-label" }, "用户名", -1)),
|
|
44531
|
-
createBaseVNode("div", _hoisted_21$
|
|
44540
|
+
createBaseVNode("div", _hoisted_21$6, toDisplayString(__props.connection?.username), 1)
|
|
44532
44541
|
]),
|
|
44533
|
-
createBaseVNode("div", _hoisted_22$
|
|
44542
|
+
createBaseVNode("div", _hoisted_22$6, [
|
|
44534
44543
|
_cache[21] || (_cache[21] = createBaseVNode("label", { class: "info-label" }, "数据库类型", -1)),
|
|
44535
|
-
createBaseVNode("div", _hoisted_23$
|
|
44544
|
+
createBaseVNode("div", _hoisted_23$6, [
|
|
44536
44545
|
createBaseVNode("span", {
|
|
44537
44546
|
class: normalizeClass(["db-type-badge", getDbLogoClass(__props.connection?.type)])
|
|
44538
44547
|
}, toDisplayString(getDbTypeLabel(__props.connection?.type)), 3)
|
|
@@ -44540,26 +44549,26 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44540
44549
|
])
|
|
44541
44550
|
])
|
|
44542
44551
|
]),
|
|
44543
|
-
createBaseVNode("div", _hoisted_24$
|
|
44552
|
+
createBaseVNode("div", _hoisted_24$6, [
|
|
44544
44553
|
_cache[27] || (_cache[27] = createBaseVNode("h6", { class: "section-title" }, [
|
|
44545
44554
|
createBaseVNode("i", { class: "bi bi-bar-chart" }),
|
|
44546
44555
|
createTextVNode(" 连接统计 ")
|
|
44547
44556
|
], -1)),
|
|
44548
|
-
createBaseVNode("div", _hoisted_25$
|
|
44549
|
-
createBaseVNode("div", _hoisted_26$
|
|
44550
|
-
createBaseVNode("div", _hoisted_27$
|
|
44557
|
+
createBaseVNode("div", _hoisted_25$6, [
|
|
44558
|
+
createBaseVNode("div", _hoisted_26$6, [
|
|
44559
|
+
createBaseVNode("div", _hoisted_27$6, toDisplayString(connectionStats.value.databaseCount || 0), 1),
|
|
44551
44560
|
_cache[23] || (_cache[23] = createBaseVNode("div", { class: "stat-label" }, "数据库数量", -1))
|
|
44552
44561
|
]),
|
|
44553
|
-
createBaseVNode("div", _hoisted_28$
|
|
44554
|
-
createBaseVNode("div", _hoisted_29$
|
|
44562
|
+
createBaseVNode("div", _hoisted_28$6, [
|
|
44563
|
+
createBaseVNode("div", _hoisted_29$5, toDisplayString(connectionStats.value.tableCount || 0), 1),
|
|
44555
44564
|
_cache[24] || (_cache[24] = createBaseVNode("div", { class: "stat-label" }, "表总数", -1))
|
|
44556
44565
|
]),
|
|
44557
|
-
createBaseVNode("div", _hoisted_30$
|
|
44558
|
-
createBaseVNode("div", _hoisted_31$
|
|
44566
|
+
createBaseVNode("div", _hoisted_30$5, [
|
|
44567
|
+
createBaseVNode("div", _hoisted_31$5, toDisplayString(formatFileSize(connectionStats.value.totalSize || 0)), 1),
|
|
44559
44568
|
_cache[25] || (_cache[25] = createBaseVNode("div", { class: "stat-label" }, "总大小", -1))
|
|
44560
44569
|
]),
|
|
44561
|
-
createBaseVNode("div", _hoisted_32$
|
|
44562
|
-
createBaseVNode("div", _hoisted_33$
|
|
44570
|
+
createBaseVNode("div", _hoisted_32$5, [
|
|
44571
|
+
createBaseVNode("div", _hoisted_33$5, toDisplayString(connectionStats.value.lastConnected || "从未"), 1),
|
|
44563
44572
|
_cache[26] || (_cache[26] = createBaseVNode("div", { class: "stat-label" }, "最后连接", -1))
|
|
44564
44573
|
])
|
|
44565
44574
|
])
|
|
@@ -44605,19 +44614,19 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44605
44614
|
])])
|
|
44606
44615
|
])
|
|
44607
44616
|
]),
|
|
44608
|
-
createBaseVNode("div", _hoisted_34$
|
|
44609
|
-
createBaseVNode("ul", _hoisted_35$
|
|
44610
|
-
createBaseVNode("li", _hoisted_36$
|
|
44617
|
+
createBaseVNode("div", _hoisted_34$5, [
|
|
44618
|
+
createBaseVNode("ul", _hoisted_35$4, [
|
|
44619
|
+
createBaseVNode("li", _hoisted_36$4, [
|
|
44611
44620
|
createBaseVNode("button", {
|
|
44612
44621
|
class: normalizeClass(["nav-link", { active: activeTab.value === "databases" }]),
|
|
44613
44622
|
onClick: _cache[0] || (_cache[0] = ($event) => activeTab.value = "databases")
|
|
44614
44623
|
}, [
|
|
44615
44624
|
_cache[32] || (_cache[32] = createBaseVNode("i", { class: "bi bi-database-fill" }, null, -1)),
|
|
44616
44625
|
_cache[33] || (_cache[33] = createTextVNode(" 数据库列表 ", -1)),
|
|
44617
|
-
createBaseVNode("span", _hoisted_37$
|
|
44626
|
+
createBaseVNode("span", _hoisted_37$4, toDisplayString(databases.value.length), 1)
|
|
44618
44627
|
], 2)
|
|
44619
44628
|
]),
|
|
44620
|
-
createBaseVNode("li", _hoisted_38$
|
|
44629
|
+
createBaseVNode("li", _hoisted_38$4, [
|
|
44621
44630
|
createBaseVNode("button", {
|
|
44622
44631
|
class: normalizeClass(["nav-link", { active: activeTab.value === "sql" }]),
|
|
44623
44632
|
onClick: _cache[1] || (_cache[1] = ($event) => activeTab.value = "sql")
|
|
@@ -44627,12 +44636,12 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44627
44636
|
])], 2)
|
|
44628
44637
|
])
|
|
44629
44638
|
]),
|
|
44630
|
-
createBaseVNode("div", _hoisted_39$
|
|
44631
|
-
withDirectives(createBaseVNode("div", _hoisted_40$
|
|
44632
|
-
createBaseVNode("div", _hoisted_41$
|
|
44633
|
-
createBaseVNode("div", _hoisted_42$
|
|
44634
|
-
createBaseVNode("div", _hoisted_43$
|
|
44635
|
-
createBaseVNode("div", _hoisted_44$
|
|
44639
|
+
createBaseVNode("div", _hoisted_39$4, [
|
|
44640
|
+
withDirectives(createBaseVNode("div", _hoisted_40$4, [
|
|
44641
|
+
createBaseVNode("div", _hoisted_41$3, [
|
|
44642
|
+
createBaseVNode("div", _hoisted_42$3, [
|
|
44643
|
+
createBaseVNode("div", _hoisted_43$3, [
|
|
44644
|
+
createBaseVNode("div", _hoisted_44$3, [
|
|
44636
44645
|
withDirectives(createBaseVNode("input", {
|
|
44637
44646
|
type: "text",
|
|
44638
44647
|
class: "form-control form-control-sm",
|
|
@@ -44648,17 +44657,17 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44648
44657
|
onClick: loadDatabases,
|
|
44649
44658
|
disabled: loadingDatabases.value
|
|
44650
44659
|
}, [
|
|
44651
|
-
loadingDatabases.value ? (openBlock(), createElementBlock("span", _hoisted_46$
|
|
44660
|
+
loadingDatabases.value ? (openBlock(), createElementBlock("span", _hoisted_46$3)) : createCommentVNode("", true),
|
|
44652
44661
|
_cache[35] || (_cache[35] = createBaseVNode("i", { class: "bi bi-arrow-clockwise" }, null, -1)),
|
|
44653
44662
|
_cache[36] || (_cache[36] = createTextVNode(" 刷新 ", -1))
|
|
44654
|
-
], 8, _hoisted_45$
|
|
44663
|
+
], 8, _hoisted_45$3)
|
|
44655
44664
|
])
|
|
44656
44665
|
]),
|
|
44657
|
-
createBaseVNode("div", _hoisted_47$
|
|
44658
|
-
loadingDatabases.value ? (openBlock(), createElementBlock("div", _hoisted_48$
|
|
44666
|
+
createBaseVNode("div", _hoisted_47$3, [
|
|
44667
|
+
loadingDatabases.value ? (openBlock(), createElementBlock("div", _hoisted_48$3, [..._cache[37] || (_cache[37] = [
|
|
44659
44668
|
createBaseVNode("div", { class: "spinner-border text-primary" }, null, -1),
|
|
44660
44669
|
createBaseVNode("span", null, "加载数据库列表...", -1)
|
|
44661
|
-
])])) : filteredDatabases.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_49$
|
|
44670
|
+
])])) : filteredDatabases.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_49$3, [
|
|
44662
44671
|
_cache[39] || (_cache[39] = createBaseVNode("i", { class: "bi bi-database" }, null, -1)),
|
|
44663
44672
|
createBaseVNode("p", null, toDisplayString(searchKeyword.value ? "没有找到匹配的数据库" : "暂无数据库"), 1),
|
|
44664
44673
|
createBaseVNode("button", {
|
|
@@ -44668,7 +44677,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44668
44677
|
createBaseVNode("i", { class: "bi bi-plus" }, null, -1),
|
|
44669
44678
|
createTextVNode(" 创建数据库 ", -1)
|
|
44670
44679
|
])])
|
|
44671
|
-
])) : (openBlock(), createElementBlock("div", _hoisted_50$
|
|
44680
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_50$3, [
|
|
44672
44681
|
(openBlock(true), createElementBlock(Fragment, null, renderList(filteredDatabases.value, (database) => {
|
|
44673
44682
|
return openBlock(), createElementBlock("div", {
|
|
44674
44683
|
key: database.name,
|
|
@@ -44678,8 +44687,8 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44678
44687
|
_cache[41] || (_cache[41] = createBaseVNode("div", { class: "database-item-icon" }, [
|
|
44679
44688
|
createBaseVNode("i", { class: "bi bi-database" })
|
|
44680
44689
|
], -1)),
|
|
44681
|
-
createBaseVNode("div", _hoisted_52$
|
|
44682
|
-
createBaseVNode("div", _hoisted_53$
|
|
44690
|
+
createBaseVNode("div", _hoisted_52$3, toDisplayString(database.name), 1),
|
|
44691
|
+
createBaseVNode("div", _hoisted_53$3, [
|
|
44683
44692
|
createBaseVNode("button", {
|
|
44684
44693
|
class: "btn btn-sm btn-outline-secondary",
|
|
44685
44694
|
onClick: _cache[3] || (_cache[3] = withModifiers(($event) => activeTab.value = "sql", ["stop"]))
|
|
@@ -44687,7 +44696,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44687
44696
|
createBaseVNode("i", { class: "bi bi-terminal" }, null, -1)
|
|
44688
44697
|
])])
|
|
44689
44698
|
])
|
|
44690
|
-
], 8, _hoisted_51$
|
|
44699
|
+
], 8, _hoisted_51$3);
|
|
44691
44700
|
}), 128))
|
|
44692
44701
|
]))
|
|
44693
44702
|
])
|
|
@@ -44695,15 +44704,15 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44695
44704
|
], 512), [
|
|
44696
44705
|
[vShow, activeTab.value === "databases"]
|
|
44697
44706
|
]),
|
|
44698
|
-
withDirectives(createBaseVNode("div", _hoisted_54$
|
|
44699
|
-
createBaseVNode("div", _hoisted_55$
|
|
44700
|
-
createBaseVNode("div", _hoisted_56$
|
|
44707
|
+
withDirectives(createBaseVNode("div", _hoisted_54$3, [
|
|
44708
|
+
createBaseVNode("div", _hoisted_55$3, [
|
|
44709
|
+
createBaseVNode("div", _hoisted_56$3, [
|
|
44701
44710
|
_cache[42] || (_cache[42] = createBaseVNode("h6", { class: "sql-title" }, [
|
|
44702
44711
|
createBaseVNode("i", { class: "bi bi-terminal" }),
|
|
44703
44712
|
createTextVNode(" SQL查询 ")
|
|
44704
44713
|
], -1)),
|
|
44705
|
-
props.connection ? (openBlock(), createElementBlock("div", _hoisted_57$
|
|
44706
|
-
createBaseVNode("span", _hoisted_58$
|
|
44714
|
+
props.connection ? (openBlock(), createElementBlock("div", _hoisted_57$3, [
|
|
44715
|
+
createBaseVNode("span", _hoisted_58$3, toDisplayString(props.connection.name), 1)
|
|
44707
44716
|
])) : createCommentVNode("", true)
|
|
44708
44717
|
]),
|
|
44709
44718
|
createVNode(SqlExecutor, {
|
|
@@ -44716,9 +44725,9 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44716
44725
|
])
|
|
44717
44726
|
])
|
|
44718
44727
|
]),
|
|
44719
|
-
showCreateDatabase.value ? (openBlock(), createElementBlock("div", _hoisted_59$
|
|
44720
|
-
createBaseVNode("div", _hoisted_60$
|
|
44721
|
-
createBaseVNode("div", _hoisted_61$
|
|
44728
|
+
showCreateDatabase.value ? (openBlock(), createElementBlock("div", _hoisted_59$3, [
|
|
44729
|
+
createBaseVNode("div", _hoisted_60$3, [
|
|
44730
|
+
createBaseVNode("div", _hoisted_61$3, [
|
|
44722
44731
|
createBaseVNode("div", _hoisted_62$2, [
|
|
44723
44732
|
_cache[43] || (_cache[43] = createBaseVNode("h5", { class: "modal-title" }, "创建数据库", -1)),
|
|
44724
44733
|
createBaseVNode("button", {
|
|
@@ -44860,7 +44869,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
44860
44869
|
};
|
|
44861
44870
|
}
|
|
44862
44871
|
});
|
|
44863
|
-
const ConnectionDetail = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-
|
|
44872
|
+
const ConnectionDetail = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-283b71e5"]]);
|
|
44864
44873
|
var DatabaseType = /* @__PURE__ */ ((DatabaseType2) => {
|
|
44865
44874
|
DatabaseType2["MYSQL"] = "mysql";
|
|
44866
44875
|
DatabaseType2["POSTGRESQL"] = "postgres";
|
|
@@ -45230,28 +45239,28 @@ const _hoisted_15$5 = ["onUpdate:modelValue"];
|
|
|
45230
45239
|
const _hoisted_16$5 = ["onUpdate:modelValue"];
|
|
45231
45240
|
const _hoisted_17$5 = ["label"];
|
|
45232
45241
|
const _hoisted_18$5 = ["value"];
|
|
45233
|
-
const _hoisted_19$
|
|
45242
|
+
const _hoisted_19$5 = {
|
|
45234
45243
|
key: 0,
|
|
45235
45244
|
class: "input-group input-group-sm"
|
|
45236
45245
|
};
|
|
45237
|
-
const _hoisted_20$
|
|
45238
|
-
const _hoisted_21$
|
|
45239
|
-
const _hoisted_22$
|
|
45240
|
-
const _hoisted_23$
|
|
45246
|
+
const _hoisted_20$5 = ["onUpdate:modelValue"];
|
|
45247
|
+
const _hoisted_21$5 = ["onUpdate:modelValue"];
|
|
45248
|
+
const _hoisted_22$5 = ["onUpdate:modelValue"];
|
|
45249
|
+
const _hoisted_23$5 = {
|
|
45241
45250
|
key: 1,
|
|
45242
45251
|
class: "text-muted"
|
|
45243
45252
|
};
|
|
45244
|
-
const _hoisted_24$
|
|
45245
|
-
const _hoisted_25$
|
|
45246
|
-
const _hoisted_26$
|
|
45247
|
-
const _hoisted_27$
|
|
45248
|
-
const _hoisted_28$
|
|
45249
|
-
const _hoisted_29$
|
|
45250
|
-
const _hoisted_30$
|
|
45251
|
-
const _hoisted_31$
|
|
45252
|
-
const _hoisted_32$
|
|
45253
|
-
const _hoisted_33$
|
|
45254
|
-
const _hoisted_34$
|
|
45253
|
+
const _hoisted_24$5 = { class: "form-check" };
|
|
45254
|
+
const _hoisted_25$5 = ["onUpdate:modelValue"];
|
|
45255
|
+
const _hoisted_26$5 = ["onUpdate:modelValue"];
|
|
45256
|
+
const _hoisted_27$5 = { class: "form-check" };
|
|
45257
|
+
const _hoisted_28$5 = ["onUpdate:modelValue", "onChange"];
|
|
45258
|
+
const _hoisted_29$4 = { class: "form-check" };
|
|
45259
|
+
const _hoisted_30$4 = ["onUpdate:modelValue", "disabled"];
|
|
45260
|
+
const _hoisted_31$4 = ["onUpdate:modelValue"];
|
|
45261
|
+
const _hoisted_32$4 = ["onClick", "disabled"];
|
|
45262
|
+
const _hoisted_33$4 = { class: "sql-preview-section mt-4" };
|
|
45263
|
+
const _hoisted_34$4 = { class: "sql-preview bg-light p-3 rounded" };
|
|
45255
45264
|
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
45256
45265
|
__name: "table-editor",
|
|
45257
45266
|
props: {
|
|
@@ -45871,14 +45880,14 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
45871
45880
|
])
|
|
45872
45881
|
]),
|
|
45873
45882
|
createBaseVNode("td", null, [
|
|
45874
|
-
needsLength(column) || needsPrecision(column) ? (openBlock(), createElementBlock("div", _hoisted_19$
|
|
45883
|
+
needsLength(column) || needsPrecision(column) ? (openBlock(), createElementBlock("div", _hoisted_19$5, [
|
|
45875
45884
|
needsLength(column) ? withDirectives((openBlock(), createElementBlock("input", {
|
|
45876
45885
|
key: 0,
|
|
45877
45886
|
"onUpdate:modelValue": ($event) => column.length = $event,
|
|
45878
45887
|
type: "number",
|
|
45879
45888
|
class: "form-control form-control-sm",
|
|
45880
45889
|
placeholder: "长度"
|
|
45881
|
-
}, null, 8, _hoisted_20$
|
|
45890
|
+
}, null, 8, _hoisted_20$5)), [
|
|
45882
45891
|
[vModelText, column.length]
|
|
45883
45892
|
]) : createCommentVNode("", true),
|
|
45884
45893
|
needsPrecision(column) ? withDirectives((openBlock(), createElementBlock("input", {
|
|
@@ -45887,7 +45896,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
45887
45896
|
type: "number",
|
|
45888
45897
|
class: "form-control form-control-sm",
|
|
45889
45898
|
placeholder: "精度"
|
|
45890
|
-
}, null, 8, _hoisted_21$
|
|
45899
|
+
}, null, 8, _hoisted_21$5)), [
|
|
45891
45900
|
[vModelText, column.precision]
|
|
45892
45901
|
]) : createCommentVNode("", true),
|
|
45893
45902
|
needsScale(column) ? withDirectives((openBlock(), createElementBlock("input", {
|
|
@@ -45896,18 +45905,18 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
45896
45905
|
type: "number",
|
|
45897
45906
|
class: "form-control form-control-sm",
|
|
45898
45907
|
placeholder: "小数"
|
|
45899
|
-
}, null, 8, _hoisted_22$
|
|
45908
|
+
}, null, 8, _hoisted_22$5)), [
|
|
45900
45909
|
[vModelText, column.scale]
|
|
45901
45910
|
]) : createCommentVNode("", true)
|
|
45902
|
-
])) : (openBlock(), createElementBlock("span", _hoisted_23$
|
|
45911
|
+
])) : (openBlock(), createElementBlock("span", _hoisted_23$5, "-"))
|
|
45903
45912
|
]),
|
|
45904
45913
|
createBaseVNode("td", null, [
|
|
45905
|
-
createBaseVNode("div", _hoisted_24$
|
|
45914
|
+
createBaseVNode("div", _hoisted_24$5, [
|
|
45906
45915
|
withDirectives(createBaseVNode("input", {
|
|
45907
45916
|
"onUpdate:modelValue": ($event) => column.nullable = $event,
|
|
45908
45917
|
type: "checkbox",
|
|
45909
45918
|
class: "form-check-input"
|
|
45910
|
-
}, null, 8, _hoisted_25$
|
|
45919
|
+
}, null, 8, _hoisted_25$5), [
|
|
45911
45920
|
[vModelCheckbox, column.nullable]
|
|
45912
45921
|
])
|
|
45913
45922
|
])
|
|
@@ -45918,30 +45927,30 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
45918
45927
|
type: "text",
|
|
45919
45928
|
class: "form-control form-control-sm",
|
|
45920
45929
|
placeholder: "默认值"
|
|
45921
|
-
}, null, 8, _hoisted_26$
|
|
45930
|
+
}, null, 8, _hoisted_26$5), [
|
|
45922
45931
|
[vModelText, column.defaultValue]
|
|
45923
45932
|
])
|
|
45924
45933
|
]),
|
|
45925
45934
|
createBaseVNode("td", null, [
|
|
45926
|
-
createBaseVNode("div", _hoisted_27$
|
|
45935
|
+
createBaseVNode("div", _hoisted_27$5, [
|
|
45927
45936
|
withDirectives(createBaseVNode("input", {
|
|
45928
45937
|
"onUpdate:modelValue": ($event) => column.isPrimary = $event,
|
|
45929
45938
|
type: "checkbox",
|
|
45930
45939
|
class: "form-check-input",
|
|
45931
45940
|
onChange: ($event) => onPrimaryKeyChange(column, index)
|
|
45932
|
-
}, null, 40, _hoisted_28$
|
|
45941
|
+
}, null, 40, _hoisted_28$5), [
|
|
45933
45942
|
[vModelCheckbox, column.isPrimary]
|
|
45934
45943
|
])
|
|
45935
45944
|
])
|
|
45936
45945
|
]),
|
|
45937
45946
|
createBaseVNode("td", null, [
|
|
45938
|
-
createBaseVNode("div", _hoisted_29$
|
|
45947
|
+
createBaseVNode("div", _hoisted_29$4, [
|
|
45939
45948
|
withDirectives(createBaseVNode("input", {
|
|
45940
45949
|
"onUpdate:modelValue": ($event) => column.isAutoIncrement = $event,
|
|
45941
45950
|
type: "checkbox",
|
|
45942
45951
|
class: "form-check-input",
|
|
45943
45952
|
disabled: !column.isPrimary || !supportsAutoIncrement(column)
|
|
45944
|
-
}, null, 8, _hoisted_30$
|
|
45953
|
+
}, null, 8, _hoisted_30$4), [
|
|
45945
45954
|
[vModelCheckbox, column.isAutoIncrement]
|
|
45946
45955
|
])
|
|
45947
45956
|
])
|
|
@@ -45952,7 +45961,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
45952
45961
|
type: "text",
|
|
45953
45962
|
class: "form-control form-control-sm",
|
|
45954
45963
|
placeholder: "字段注释"
|
|
45955
|
-
}, null, 8, _hoisted_31$
|
|
45964
|
+
}, null, 8, _hoisted_31$4), [
|
|
45956
45965
|
[vModelText, column.comment]
|
|
45957
45966
|
])
|
|
45958
45967
|
]),
|
|
@@ -45963,7 +45972,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
45963
45972
|
disabled: formData.value.columns.length <= 1
|
|
45964
45973
|
}, [..._cache[10] || (_cache[10] = [
|
|
45965
45974
|
createBaseVNode("i", { class: "bi bi-trash" }, null, -1)
|
|
45966
|
-
])], 8, _hoisted_32$
|
|
45975
|
+
])], 8, _hoisted_32$4)
|
|
45967
45976
|
])
|
|
45968
45977
|
]);
|
|
45969
45978
|
}), 128))
|
|
@@ -45971,9 +45980,9 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
45971
45980
|
])
|
|
45972
45981
|
])
|
|
45973
45982
|
]),
|
|
45974
|
-
createBaseVNode("div", _hoisted_33$
|
|
45983
|
+
createBaseVNode("div", _hoisted_33$4, [
|
|
45975
45984
|
_cache[12] || (_cache[12] = createBaseVNode("h6", { class: "section-title" }, "SQL预览", -1)),
|
|
45976
|
-
createBaseVNode("pre", _hoisted_34$
|
|
45985
|
+
createBaseVNode("pre", _hoisted_34$4, toDisplayString(generateSQL()), 1)
|
|
45977
45986
|
])
|
|
45978
45987
|
]),
|
|
45979
45988
|
createBaseVNode("div", { class: "modal-footer" }, [
|
|
@@ -45994,34 +46003,89 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
45994
46003
|
};
|
|
45995
46004
|
}
|
|
45996
46005
|
});
|
|
45997
|
-
const TableEditor = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-
|
|
46006
|
+
const TableEditor = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-d08de09c"]]);
|
|
45998
46007
|
const _hoisted_1$4 = { class: "db-tools" };
|
|
45999
|
-
const _hoisted_2$4 = { class: "
|
|
46000
|
-
const _hoisted_3$4 = {
|
|
46008
|
+
const _hoisted_2$4 = { class: "tools-content" };
|
|
46009
|
+
const _hoisted_3$4 = { class: "tool-section" };
|
|
46010
|
+
const _hoisted_4$4 = { class: "tool-actions" };
|
|
46011
|
+
const _hoisted_5$4 = {
|
|
46001
46012
|
key: 0,
|
|
46002
|
-
class: "
|
|
46013
|
+
class: "tool-component-area"
|
|
46003
46014
|
};
|
|
46004
|
-
const
|
|
46005
|
-
const
|
|
46006
|
-
const _hoisted_6$4 = { class: "operation-name" };
|
|
46007
|
-
const _hoisted_7$4 = { class: "operation-time" };
|
|
46015
|
+
const _hoisted_6$4 = { class: "component-header" };
|
|
46016
|
+
const _hoisted_7$4 = { class: "component-title" };
|
|
46008
46017
|
const _hoisted_8$4 = {
|
|
46018
|
+
key: 0,
|
|
46019
|
+
class: "tool-component sync-component"
|
|
46020
|
+
};
|
|
46021
|
+
const _hoisted_9$4 = { class: "mb-4" };
|
|
46022
|
+
const _hoisted_10$4 = { class: "row g-3" };
|
|
46023
|
+
const _hoisted_11$4 = { class: "col-md-6" };
|
|
46024
|
+
const _hoisted_12$4 = { class: "col-md-6" };
|
|
46025
|
+
const _hoisted_13$4 = ["value"];
|
|
46026
|
+
const _hoisted_14$4 = { class: "mb-4" };
|
|
46027
|
+
const _hoisted_15$4 = { class: "mb-3" };
|
|
46028
|
+
const _hoisted_16$4 = { class: "form-check form-switch" };
|
|
46029
|
+
const _hoisted_17$4 = {
|
|
46030
|
+
key: 0,
|
|
46031
|
+
class: "row g-3"
|
|
46032
|
+
};
|
|
46033
|
+
const _hoisted_18$4 = { class: "col-md-6" };
|
|
46034
|
+
const _hoisted_19$4 = ["value"];
|
|
46035
|
+
const _hoisted_20$4 = { class: "col-md-6" };
|
|
46036
|
+
const _hoisted_21$4 = ["value"];
|
|
46037
|
+
const _hoisted_22$4 = { class: "col-md-12" };
|
|
46038
|
+
const _hoisted_23$4 = {
|
|
46039
|
+
key: 1,
|
|
46040
|
+
class: "row g-3"
|
|
46041
|
+
};
|
|
46042
|
+
const _hoisted_24$4 = { class: "col-md-4" };
|
|
46043
|
+
const _hoisted_25$4 = { class: "col-md-4" };
|
|
46044
|
+
const _hoisted_26$4 = { class: "col-md-4" };
|
|
46045
|
+
const _hoisted_27$4 = { class: "col-md-4" };
|
|
46046
|
+
const _hoisted_28$4 = { class: "col-md-4" };
|
|
46047
|
+
const _hoisted_29$3 = { class: "col-md-4" };
|
|
46048
|
+
const _hoisted_30$3 = { class: "col-md-6" };
|
|
46049
|
+
const _hoisted_31$3 = { class: "mb-4" };
|
|
46050
|
+
const _hoisted_32$3 = { class: "row g-3" };
|
|
46051
|
+
const _hoisted_33$3 = { class: "col-md-6" };
|
|
46052
|
+
const _hoisted_34$3 = { class: "form-check" };
|
|
46053
|
+
const _hoisted_35$3 = { class: "col-md-6" };
|
|
46054
|
+
const _hoisted_36$3 = { class: "form-check" };
|
|
46055
|
+
const _hoisted_37$3 = { class: "col-md-6" };
|
|
46056
|
+
const _hoisted_38$3 = { class: "form-check" };
|
|
46057
|
+
const _hoisted_39$3 = { class: "col-md-6" };
|
|
46058
|
+
const _hoisted_40$3 = { class: "form-check" };
|
|
46059
|
+
const _hoisted_41$2 = { class: "col-md-6" };
|
|
46060
|
+
const _hoisted_42$2 = { class: "form-check" };
|
|
46061
|
+
const _hoisted_43$2 = { class: "tool-actions" };
|
|
46062
|
+
const _hoisted_44$2 = ["disabled"];
|
|
46063
|
+
const _hoisted_45$2 = { class: "execution-results" };
|
|
46064
|
+
const _hoisted_46$2 = {
|
|
46065
|
+
key: 0,
|
|
46066
|
+
class: "no-results"
|
|
46067
|
+
};
|
|
46068
|
+
const _hoisted_47$2 = ["onClick"];
|
|
46069
|
+
const _hoisted_48$2 = { class: "result-title" };
|
|
46070
|
+
const _hoisted_49$2 = { class: "operation-name" };
|
|
46071
|
+
const _hoisted_50$2 = { class: "operation-time" };
|
|
46072
|
+
const _hoisted_51$2 = {
|
|
46009
46073
|
key: 0,
|
|
46010
46074
|
class: "result-body"
|
|
46011
46075
|
};
|
|
46012
|
-
const
|
|
46013
|
-
const
|
|
46014
|
-
const
|
|
46015
|
-
const
|
|
46016
|
-
const
|
|
46017
|
-
const
|
|
46076
|
+
const _hoisted_52$2 = ["innerHTML"];
|
|
46077
|
+
const _hoisted_53$2 = { class: "modal-dialog" };
|
|
46078
|
+
const _hoisted_54$2 = { class: "modal-content" };
|
|
46079
|
+
const _hoisted_55$2 = { class: "modal-body" };
|
|
46080
|
+
const _hoisted_56$2 = { class: "mb-3" };
|
|
46081
|
+
const _hoisted_57$2 = {
|
|
46018
46082
|
key: 0,
|
|
46019
46083
|
class: "alert alert-info"
|
|
46020
46084
|
};
|
|
46021
|
-
const
|
|
46022
|
-
const
|
|
46023
|
-
const
|
|
46024
|
-
const
|
|
46085
|
+
const _hoisted_58$2 = { class: "mb-3 form-check" };
|
|
46086
|
+
const _hoisted_59$2 = { class: "modal-footer" };
|
|
46087
|
+
const _hoisted_60$2 = ["disabled"];
|
|
46088
|
+
const _hoisted_61$2 = {
|
|
46025
46089
|
key: 0,
|
|
46026
46090
|
class: "spinner-border spinner-border-sm me-2"
|
|
46027
46091
|
};
|
|
@@ -46033,6 +46097,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46033
46097
|
},
|
|
46034
46098
|
emits: ["execute-sql"],
|
|
46035
46099
|
setup(__props, { emit: __emit }) {
|
|
46100
|
+
const connectionService2 = new ConnectionService();
|
|
46036
46101
|
const props = __props;
|
|
46037
46102
|
const emit = __emit;
|
|
46038
46103
|
const databaseService2 = new DatabaseService();
|
|
@@ -46040,10 +46105,78 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46040
46105
|
const selectedFile = ref(null);
|
|
46041
46106
|
const restoring = ref(false);
|
|
46042
46107
|
const resultsContentRef = ref(null);
|
|
46108
|
+
const selectedTool = ref(null);
|
|
46109
|
+
const syncing = ref(false);
|
|
46110
|
+
const tables = ref([]);
|
|
46111
|
+
const connections = ref([]);
|
|
46112
|
+
const databases = ref([]);
|
|
46113
|
+
const useExistingConnection = ref(false);
|
|
46114
|
+
const selectedConnectionId = ref("");
|
|
46115
|
+
const selectedDatabaseName = ref("");
|
|
46116
|
+
const syncConfig = ref({
|
|
46117
|
+
source: {
|
|
46118
|
+
database: "",
|
|
46119
|
+
tableName: ""
|
|
46120
|
+
},
|
|
46121
|
+
target: {
|
|
46122
|
+
dbType: "mysql",
|
|
46123
|
+
host: "localhost",
|
|
46124
|
+
port: 3306,
|
|
46125
|
+
database: "",
|
|
46126
|
+
username: "root",
|
|
46127
|
+
password: "",
|
|
46128
|
+
tableName: ""
|
|
46129
|
+
},
|
|
46130
|
+
options: {
|
|
46131
|
+
syncStructure: true,
|
|
46132
|
+
syncData: true,
|
|
46133
|
+
dropIfExists: false,
|
|
46134
|
+
bulkInsert: true,
|
|
46135
|
+
overrideExisting: false
|
|
46136
|
+
}
|
|
46137
|
+
});
|
|
46138
|
+
watch(() => syncConfig.value.source.tableName, (newTableName) => {
|
|
46139
|
+
if (newTableName) {
|
|
46140
|
+
syncConfig.value.target.tableName = newTableName;
|
|
46141
|
+
}
|
|
46142
|
+
});
|
|
46143
|
+
onMounted(() => {
|
|
46144
|
+
initSyncData();
|
|
46145
|
+
});
|
|
46146
|
+
async function loadDatabases(connectionId) {
|
|
46147
|
+
if (!connectionId) {
|
|
46148
|
+
databases.value = [];
|
|
46149
|
+
selectedDatabaseName.value = "";
|
|
46150
|
+
return;
|
|
46151
|
+
}
|
|
46152
|
+
try {
|
|
46153
|
+
const res2 = await databaseService2.getDatabases(connectionId);
|
|
46154
|
+
if (res2.ret === 0) {
|
|
46155
|
+
databases.value = res2.data || [];
|
|
46156
|
+
} else {
|
|
46157
|
+
databases.value = [];
|
|
46158
|
+
}
|
|
46159
|
+
selectedDatabaseName.value = "";
|
|
46160
|
+
} catch (error) {
|
|
46161
|
+
console.error("加载数据库列表失败:", error);
|
|
46162
|
+
databases.value = [];
|
|
46163
|
+
selectedDatabaseName.value = "";
|
|
46164
|
+
}
|
|
46165
|
+
}
|
|
46166
|
+
watch(selectedConnectionId, (newVal) => {
|
|
46167
|
+
loadDatabases(newVal);
|
|
46168
|
+
});
|
|
46043
46169
|
const executionResults = ref([]);
|
|
46044
46170
|
const restoreOptions = ref({
|
|
46045
46171
|
dropExisting: false
|
|
46046
46172
|
});
|
|
46173
|
+
const isSyncFormValid = computed(() => {
|
|
46174
|
+
if (useExistingConnection.value) {
|
|
46175
|
+
return syncConfig.value.source.tableName && selectedConnectionId.value && selectedDatabaseName.value && syncConfig.value.target.tableName && (syncConfig.value.options.syncStructure || syncConfig.value.options.syncData);
|
|
46176
|
+
} else {
|
|
46177
|
+
return syncConfig.value.source.tableName && syncConfig.value.target.host && syncConfig.value.target.port && syncConfig.value.target.database && syncConfig.value.target.username && syncConfig.value.target.tableName && (syncConfig.value.options.syncStructure || syncConfig.value.options.syncData);
|
|
46178
|
+
}
|
|
46179
|
+
});
|
|
46047
46180
|
function addExecutionResult(operation, status, data) {
|
|
46048
46181
|
const timestamp = (/* @__PURE__ */ new Date()).toLocaleString("zh-CN", {
|
|
46049
46182
|
year: "numeric",
|
|
@@ -46224,9 +46357,6 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46224
46357
|
function showImportModal() {
|
|
46225
46358
|
addExecutionResult("导入数据", "info", { message: "导入数据功能开发中..." });
|
|
46226
46359
|
}
|
|
46227
|
-
function showSyncModal() {
|
|
46228
|
-
addExecutionResult("数据同步", "info", { message: "数据同步功能开发中..." });
|
|
46229
|
-
}
|
|
46230
46360
|
async function runHealthCheck() {
|
|
46231
46361
|
const operation = "健康检查";
|
|
46232
46362
|
const checks = [
|
|
@@ -46300,20 +46430,124 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46300
46430
|
restoring.value = false;
|
|
46301
46431
|
}
|
|
46302
46432
|
}
|
|
46433
|
+
function selectTool(toolName) {
|
|
46434
|
+
selectedTool.value = toolName;
|
|
46435
|
+
{
|
|
46436
|
+
initSyncData();
|
|
46437
|
+
}
|
|
46438
|
+
}
|
|
46439
|
+
function closeTool() {
|
|
46440
|
+
selectedTool.value = null;
|
|
46441
|
+
}
|
|
46442
|
+
function getToolIcon(toolName) {
|
|
46443
|
+
const icons = {
|
|
46444
|
+
"sync": "bi-arrow-repeat"
|
|
46445
|
+
};
|
|
46446
|
+
return icons[toolName] || "bi-gear";
|
|
46447
|
+
}
|
|
46448
|
+
function getToolTitle(toolName) {
|
|
46449
|
+
const titles = {
|
|
46450
|
+
"sync": "数据同步"
|
|
46451
|
+
};
|
|
46452
|
+
return titles[toolName] || "工具";
|
|
46453
|
+
}
|
|
46454
|
+
async function initSyncData() {
|
|
46455
|
+
try {
|
|
46456
|
+
const tablesRes = await databaseService2.getTables(props.connection?.id || "", props.database);
|
|
46457
|
+
if (tablesRes.ret === 0) {
|
|
46458
|
+
tables.value = tablesRes.data || [];
|
|
46459
|
+
}
|
|
46460
|
+
const connRes = await connectionService2.getAllConnections();
|
|
46461
|
+
if (connRes.ret === 0) {
|
|
46462
|
+
connections.value = connRes.data || [];
|
|
46463
|
+
}
|
|
46464
|
+
syncConfig.value.source.database = props.database;
|
|
46465
|
+
if (props.connection?.id) {
|
|
46466
|
+
useExistingConnection.value = true;
|
|
46467
|
+
selectedConnectionId.value = props.connection.id;
|
|
46468
|
+
}
|
|
46469
|
+
} catch (error) {
|
|
46470
|
+
console.error("加载表列表失败:", error);
|
|
46471
|
+
modal.error("加载表列表失败");
|
|
46472
|
+
}
|
|
46473
|
+
}
|
|
46474
|
+
async function performSync() {
|
|
46475
|
+
if (!isSyncFormValid.value) {
|
|
46476
|
+
modal.error("请填写完整的同步配置");
|
|
46477
|
+
return;
|
|
46478
|
+
}
|
|
46479
|
+
const operation = "数据同步";
|
|
46480
|
+
syncing.value = true;
|
|
46481
|
+
try {
|
|
46482
|
+
let syncData;
|
|
46483
|
+
if (useExistingConnection.value) {
|
|
46484
|
+
syncData = {
|
|
46485
|
+
source: {
|
|
46486
|
+
database: syncConfig.value.source.database,
|
|
46487
|
+
tableName: syncConfig.value.source.tableName
|
|
46488
|
+
},
|
|
46489
|
+
target: {
|
|
46490
|
+
connectionId: selectedConnectionId.value,
|
|
46491
|
+
database: selectedDatabaseName.value,
|
|
46492
|
+
tableName: syncConfig.value.target.tableName
|
|
46493
|
+
},
|
|
46494
|
+
options: syncConfig.value.options
|
|
46495
|
+
};
|
|
46496
|
+
} else {
|
|
46497
|
+
syncData = syncConfig.value;
|
|
46498
|
+
}
|
|
46499
|
+
addExecutionResult(operation, "info", {
|
|
46500
|
+
message: "开始同步数据",
|
|
46501
|
+
config: syncData
|
|
46502
|
+
});
|
|
46503
|
+
const res2 = await databaseService2.syncTable(
|
|
46504
|
+
props.connection?.id || "",
|
|
46505
|
+
syncData
|
|
46506
|
+
);
|
|
46507
|
+
if (res2.ret === 0) {
|
|
46508
|
+
const tables2 = res2.data?.tables || [];
|
|
46509
|
+
let successCount = 0;
|
|
46510
|
+
let totalRows = 0;
|
|
46511
|
+
tables2.forEach((table) => {
|
|
46512
|
+
if (table.rowsSynced > 0) {
|
|
46513
|
+
successCount++;
|
|
46514
|
+
totalRows += table.rowsSynced;
|
|
46515
|
+
}
|
|
46516
|
+
});
|
|
46517
|
+
addExecutionResult(operation, "success", {
|
|
46518
|
+
message: `数据同步成功,${successCount}/${tables2.length} 个表同步完成,共同步 ${totalRows} 行数据`,
|
|
46519
|
+
data: res2.data
|
|
46520
|
+
});
|
|
46521
|
+
toast.success(`数据同步成功,${successCount}/${tables2.length} 个表同步完成`);
|
|
46522
|
+
} else {
|
|
46523
|
+
addExecutionResult(operation, "error", {
|
|
46524
|
+
message: res2.msg || "同步失败",
|
|
46525
|
+
error: res2.error
|
|
46526
|
+
});
|
|
46527
|
+
toast.error(res2.msg || "同步失败");
|
|
46528
|
+
}
|
|
46529
|
+
} catch (error) {
|
|
46530
|
+
console.error("同步失败:", error);
|
|
46531
|
+
addExecutionResult(operation, "error", formatError(error));
|
|
46532
|
+
toast.error(error.msg || error.message || "同步失败");
|
|
46533
|
+
} finally {
|
|
46534
|
+
syncing.value = false;
|
|
46535
|
+
}
|
|
46536
|
+
}
|
|
46303
46537
|
function showScheduleModal() {
|
|
46304
46538
|
addExecutionResult("定时备份", "info", { message: "定时备份功能开发中..." });
|
|
46305
46539
|
}
|
|
46306
46540
|
return (_ctx, _cache) => {
|
|
46307
46541
|
return openBlock(), createElementBlock("div", _hoisted_1$4, [
|
|
46308
|
-
_cache[
|
|
46542
|
+
_cache[82] || (_cache[82] = createBaseVNode("div", { class: "tools-header" }, [
|
|
46309
46543
|
createBaseVNode("h5", { class: "tools-title" }, [
|
|
46310
46544
|
createBaseVNode("i", { class: "bi bi-tools" }),
|
|
46311
46545
|
createTextVNode(" 数据库管理工具 ")
|
|
46312
46546
|
])
|
|
46313
46547
|
], -1)),
|
|
46314
|
-
createBaseVNode("div",
|
|
46548
|
+
createBaseVNode("div", _hoisted_2$4, [
|
|
46315
46549
|
createBaseVNode("div", { class: "tool-section" }, [
|
|
46316
|
-
_cache[
|
|
46550
|
+
_cache[25] || (_cache[25] = createBaseVNode("h6", { class: "section-title" }, [
|
|
46317
46551
|
createBaseVNode("i", { class: "bi bi-shield-check" }),
|
|
46318
46552
|
createTextVNode(" 数据备份 ")
|
|
46319
46553
|
], -1)),
|
|
@@ -46321,28 +46555,28 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46321
46555
|
createBaseVNode("button", {
|
|
46322
46556
|
class: "btn btn-outline-primary btn-sm",
|
|
46323
46557
|
onClick: backupDatabase
|
|
46324
|
-
}, [..._cache[
|
|
46558
|
+
}, [..._cache[22] || (_cache[22] = [
|
|
46325
46559
|
createBaseVNode("i", { class: "bi bi-download" }, null, -1),
|
|
46326
46560
|
createTextVNode(" 备份数据库 ", -1)
|
|
46327
46561
|
])]),
|
|
46328
46562
|
createBaseVNode("button", {
|
|
46329
46563
|
class: "btn btn-outline-secondary btn-sm",
|
|
46330
46564
|
onClick: showRestoreModal
|
|
46331
|
-
}, [..._cache[
|
|
46565
|
+
}, [..._cache[23] || (_cache[23] = [
|
|
46332
46566
|
createBaseVNode("i", { class: "bi bi-upload" }, null, -1),
|
|
46333
46567
|
createTextVNode(" 恢复数据库 ", -1)
|
|
46334
46568
|
])]),
|
|
46335
46569
|
createBaseVNode("button", {
|
|
46336
46570
|
class: "btn btn-outline-info btn-sm",
|
|
46337
46571
|
onClick: showScheduleModal
|
|
46338
|
-
}, [..._cache[
|
|
46572
|
+
}, [..._cache[24] || (_cache[24] = [
|
|
46339
46573
|
createBaseVNode("i", { class: "bi bi-clock" }, null, -1),
|
|
46340
46574
|
createTextVNode(" 定时备份 ", -1)
|
|
46341
46575
|
])])
|
|
46342
46576
|
])
|
|
46343
46577
|
]),
|
|
46344
46578
|
createBaseVNode("div", { class: "tool-section" }, [
|
|
46345
|
-
_cache[
|
|
46579
|
+
_cache[29] || (_cache[29] = createBaseVNode("h6", { class: "section-title" }, [
|
|
46346
46580
|
createBaseVNode("i", { class: "bi bi-people" }),
|
|
46347
46581
|
createTextVNode(" 用户管理 ")
|
|
46348
46582
|
], -1)),
|
|
@@ -46350,28 +46584,28 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46350
46584
|
createBaseVNode("button", {
|
|
46351
46585
|
class: "btn btn-outline-success btn-sm",
|
|
46352
46586
|
onClick: showUsersList
|
|
46353
|
-
}, [..._cache[
|
|
46587
|
+
}, [..._cache[26] || (_cache[26] = [
|
|
46354
46588
|
createBaseVNode("i", { class: "bi bi-person-lines-fill" }, null, -1),
|
|
46355
46589
|
createTextVNode(" 用户列表 ", -1)
|
|
46356
46590
|
])]),
|
|
46357
46591
|
createBaseVNode("button", {
|
|
46358
46592
|
class: "btn btn-outline-primary btn-sm",
|
|
46359
46593
|
onClick: showCreateUserModal
|
|
46360
|
-
}, [..._cache[
|
|
46594
|
+
}, [..._cache[27] || (_cache[27] = [
|
|
46361
46595
|
createBaseVNode("i", { class: "bi bi-person-plus" }, null, -1),
|
|
46362
46596
|
createTextVNode(" 创建用户 ", -1)
|
|
46363
46597
|
])]),
|
|
46364
46598
|
createBaseVNode("button", {
|
|
46365
46599
|
class: "btn btn-outline-warning btn-sm",
|
|
46366
46600
|
onClick: showPermissionsModal
|
|
46367
|
-
}, [..._cache[
|
|
46601
|
+
}, [..._cache[28] || (_cache[28] = [
|
|
46368
46602
|
createBaseVNode("i", { class: "bi bi-key" }, null, -1),
|
|
46369
46603
|
createTextVNode(" 权限管理 ", -1)
|
|
46370
46604
|
])])
|
|
46371
46605
|
])
|
|
46372
46606
|
]),
|
|
46373
46607
|
createBaseVNode("div", { class: "tool-section" }, [
|
|
46374
|
-
_cache[
|
|
46608
|
+
_cache[33] || (_cache[33] = createBaseVNode("h6", { class: "section-title" }, [
|
|
46375
46609
|
createBaseVNode("i", { class: "bi bi-speedometer2" }),
|
|
46376
46610
|
createTextVNode(" 性能监控 ")
|
|
46377
46611
|
], -1)),
|
|
@@ -46379,28 +46613,28 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46379
46613
|
createBaseVNode("button", {
|
|
46380
46614
|
class: "btn btn-outline-info btn-sm",
|
|
46381
46615
|
onClick: showProcessList
|
|
46382
|
-
}, [..._cache[
|
|
46616
|
+
}, [..._cache[30] || (_cache[30] = [
|
|
46383
46617
|
createBaseVNode("i", { class: "bi bi-activity" }, null, -1),
|
|
46384
46618
|
createTextVNode(" 进程列表 ", -1)
|
|
46385
46619
|
])]),
|
|
46386
46620
|
createBaseVNode("button", {
|
|
46387
46621
|
class: "btn btn-outline-warning btn-sm",
|
|
46388
46622
|
onClick: showSlowQueries
|
|
46389
|
-
}, [..._cache[
|
|
46623
|
+
}, [..._cache[31] || (_cache[31] = [
|
|
46390
46624
|
createBaseVNode("i", { class: "bi bi-hourglass-split" }, null, -1),
|
|
46391
46625
|
createTextVNode(" 慢查询 ", -1)
|
|
46392
46626
|
])]),
|
|
46393
46627
|
createBaseVNode("button", {
|
|
46394
46628
|
class: "btn btn-outline-danger btn-sm",
|
|
46395
46629
|
onClick: showConnectionsList
|
|
46396
|
-
}, [..._cache[
|
|
46630
|
+
}, [..._cache[32] || (_cache[32] = [
|
|
46397
46631
|
createBaseVNode("i", { class: "bi bi-diagram-3" }, null, -1),
|
|
46398
46632
|
createTextVNode(" 连接数 ", -1)
|
|
46399
46633
|
])])
|
|
46400
46634
|
])
|
|
46401
46635
|
]),
|
|
46402
46636
|
createBaseVNode("div", { class: "tool-section" }, [
|
|
46403
|
-
_cache[
|
|
46637
|
+
_cache[38] || (_cache[38] = createBaseVNode("h6", { class: "section-title" }, [
|
|
46404
46638
|
createBaseVNode("i", { class: "bi bi-gear-wide-connected" }),
|
|
46405
46639
|
createTextVNode(" 数据库优化 ")
|
|
46406
46640
|
], -1)),
|
|
@@ -46408,64 +46642,64 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46408
46642
|
createBaseVNode("button", {
|
|
46409
46643
|
class: "btn btn-outline-success btn-sm",
|
|
46410
46644
|
onClick: optimizeDatabase
|
|
46411
|
-
}, [..._cache[
|
|
46645
|
+
}, [..._cache[34] || (_cache[34] = [
|
|
46412
46646
|
createBaseVNode("i", { class: "bi bi-lightning-charge" }, null, -1),
|
|
46413
46647
|
createTextVNode(" 优化数据库 ", -1)
|
|
46414
46648
|
])]),
|
|
46415
46649
|
createBaseVNode("button", {
|
|
46416
46650
|
class: "btn btn-outline-primary btn-sm",
|
|
46417
46651
|
onClick: analyzeTables
|
|
46418
|
-
}, [..._cache[
|
|
46652
|
+
}, [..._cache[35] || (_cache[35] = [
|
|
46419
46653
|
createBaseVNode("i", { class: "bi bi-search" }, null, -1),
|
|
46420
46654
|
createTextVNode(" 分析表 ", -1)
|
|
46421
46655
|
])]),
|
|
46422
46656
|
createBaseVNode("button", {
|
|
46423
46657
|
class: "btn btn-outline-secondary btn-sm",
|
|
46424
46658
|
onClick: repairTables
|
|
46425
|
-
}, [..._cache[
|
|
46659
|
+
}, [..._cache[36] || (_cache[36] = [
|
|
46426
46660
|
createBaseVNode("i", { class: "bi bi-tools" }, null, -1),
|
|
46427
46661
|
createTextVNode(" 修复表 ", -1)
|
|
46428
46662
|
])]),
|
|
46429
46663
|
createBaseVNode("button", {
|
|
46430
46664
|
class: "btn btn-outline-info btn-sm",
|
|
46431
46665
|
onClick: clearLogs
|
|
46432
|
-
}, [..._cache[
|
|
46666
|
+
}, [..._cache[37] || (_cache[37] = [
|
|
46433
46667
|
createBaseVNode("i", { class: "bi bi-trash" }, null, -1),
|
|
46434
46668
|
createTextVNode(" 清理日志 ", -1)
|
|
46435
46669
|
])])
|
|
46436
46670
|
])
|
|
46437
46671
|
]),
|
|
46438
|
-
createBaseVNode("div",
|
|
46439
|
-
_cache[
|
|
46672
|
+
createBaseVNode("div", _hoisted_3$4, [
|
|
46673
|
+
_cache[42] || (_cache[42] = createBaseVNode("h6", { class: "section-title" }, [
|
|
46440
46674
|
createBaseVNode("i", { class: "bi bi-arrow-left-right" }),
|
|
46441
46675
|
createTextVNode(" 数据迁移 ")
|
|
46442
46676
|
], -1)),
|
|
46443
|
-
createBaseVNode("div",
|
|
46677
|
+
createBaseVNode("div", _hoisted_4$4, [
|
|
46444
46678
|
createBaseVNode("button", {
|
|
46445
46679
|
class: "btn btn-outline-primary btn-sm",
|
|
46446
46680
|
onClick: showExportModal
|
|
46447
|
-
}, [..._cache[
|
|
46681
|
+
}, [..._cache[39] || (_cache[39] = [
|
|
46448
46682
|
createBaseVNode("i", { class: "bi bi-box-arrow-up-right" }, null, -1),
|
|
46449
46683
|
createTextVNode(" 导出结构 ", -1)
|
|
46450
46684
|
])]),
|
|
46451
46685
|
createBaseVNode("button", {
|
|
46452
46686
|
class: "btn btn-outline-success btn-sm",
|
|
46453
46687
|
onClick: showImportModal
|
|
46454
|
-
}, [..._cache[
|
|
46688
|
+
}, [..._cache[40] || (_cache[40] = [
|
|
46455
46689
|
createBaseVNode("i", { class: "bi bi-box-arrow-in-down" }, null, -1),
|
|
46456
46690
|
createTextVNode(" 导入数据 ", -1)
|
|
46457
46691
|
])]),
|
|
46458
46692
|
createBaseVNode("button", {
|
|
46459
46693
|
class: "btn btn-outline-warning btn-sm",
|
|
46460
|
-
onClick:
|
|
46461
|
-
}, [..._cache[
|
|
46694
|
+
onClick: _cache[0] || (_cache[0] = ($event) => selectTool("sync"))
|
|
46695
|
+
}, [..._cache[41] || (_cache[41] = [
|
|
46462
46696
|
createBaseVNode("i", { class: "bi bi-arrow-repeat" }, null, -1),
|
|
46463
46697
|
createTextVNode(" 数据同步 ", -1)
|
|
46464
46698
|
])])
|
|
46465
46699
|
])
|
|
46466
46700
|
]),
|
|
46467
46701
|
createBaseVNode("div", { class: "tool-section" }, [
|
|
46468
|
-
_cache[
|
|
46702
|
+
_cache[46] || (_cache[46] = createBaseVNode("h6", { class: "section-title" }, [
|
|
46469
46703
|
createBaseVNode("i", { class: "bi bi-heart-pulse" }),
|
|
46470
46704
|
createTextVNode(" 健康检查 ")
|
|
46471
46705
|
], -1)),
|
|
@@ -46473,37 +46707,339 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46473
46707
|
createBaseVNode("button", {
|
|
46474
46708
|
class: "btn btn-outline-info btn-sm",
|
|
46475
46709
|
onClick: runHealthCheck
|
|
46476
|
-
}, [..._cache[
|
|
46710
|
+
}, [..._cache[43] || (_cache[43] = [
|
|
46477
46711
|
createBaseVNode("i", { class: "bi bi-clipboard-check" }, null, -1),
|
|
46478
46712
|
createTextVNode(" 健康检查 ", -1)
|
|
46479
46713
|
])]),
|
|
46480
46714
|
createBaseVNode("button", {
|
|
46481
46715
|
class: "btn btn-outline-secondary btn-sm",
|
|
46482
46716
|
onClick: showStatistics
|
|
46483
|
-
}, [..._cache[
|
|
46717
|
+
}, [..._cache[44] || (_cache[44] = [
|
|
46484
46718
|
createBaseVNode("i", { class: "bi bi-bar-chart" }, null, -1),
|
|
46485
46719
|
createTextVNode(" 数据统计 ", -1)
|
|
46486
46720
|
])]),
|
|
46487
46721
|
createBaseVNode("button", {
|
|
46488
46722
|
class: "btn btn-outline-warning btn-sm",
|
|
46489
46723
|
onClick: showAuditLog
|
|
46490
|
-
}, [..._cache[
|
|
46724
|
+
}, [..._cache[45] || (_cache[45] = [
|
|
46491
46725
|
createBaseVNode("i", { class: "bi bi-journal-text" }, null, -1),
|
|
46492
46726
|
createTextVNode(" 审计日志 ", -1)
|
|
46493
46727
|
])])
|
|
46494
46728
|
])
|
|
46495
46729
|
])
|
|
46496
46730
|
]),
|
|
46497
|
-
|
|
46731
|
+
selectedTool.value ? (openBlock(), createElementBlock("div", _hoisted_5$4, [
|
|
46732
|
+
createBaseVNode("div", _hoisted_6$4, [
|
|
46733
|
+
createBaseVNode("h6", _hoisted_7$4, [
|
|
46734
|
+
createBaseVNode("i", {
|
|
46735
|
+
class: normalizeClass(getToolIcon(selectedTool.value))
|
|
46736
|
+
}, null, 2),
|
|
46737
|
+
createTextVNode(" " + toDisplayString(getToolTitle(selectedTool.value)), 1)
|
|
46738
|
+
]),
|
|
46739
|
+
createBaseVNode("button", {
|
|
46740
|
+
class: "btn btn-outline-secondary btn-sm",
|
|
46741
|
+
onClick: closeTool
|
|
46742
|
+
}, [..._cache[47] || (_cache[47] = [
|
|
46743
|
+
createBaseVNode("i", { class: "bi bi-x" }, null, -1),
|
|
46744
|
+
createTextVNode(" 关闭 ", -1)
|
|
46745
|
+
])])
|
|
46746
|
+
]),
|
|
46747
|
+
selectedTool.value === "sync" ? (openBlock(), createElementBlock("div", _hoisted_8$4, [
|
|
46748
|
+
createBaseVNode("div", _hoisted_9$4, [
|
|
46749
|
+
_cache[51] || (_cache[51] = createBaseVNode("h6", { class: "text-primary mb-2" }, [
|
|
46750
|
+
createBaseVNode("i", { class: "bi bi-database" }),
|
|
46751
|
+
createTextVNode(" 源数据库")
|
|
46752
|
+
], -1)),
|
|
46753
|
+
createBaseVNode("div", _hoisted_10$4, [
|
|
46754
|
+
createBaseVNode("div", _hoisted_11$4, [
|
|
46755
|
+
_cache[48] || (_cache[48] = createBaseVNode("label", { class: "form-label" }, "数据库名称", -1)),
|
|
46756
|
+
withDirectives(createBaseVNode("input", {
|
|
46757
|
+
type: "text",
|
|
46758
|
+
class: "form-control",
|
|
46759
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => syncConfig.value.source.database = $event),
|
|
46760
|
+
readonly: ""
|
|
46761
|
+
}, null, 512), [
|
|
46762
|
+
[vModelText, syncConfig.value.source.database]
|
|
46763
|
+
])
|
|
46764
|
+
]),
|
|
46765
|
+
createBaseVNode("div", _hoisted_12$4, [
|
|
46766
|
+
_cache[50] || (_cache[50] = createBaseVNode("label", { class: "form-label" }, "选择表", -1)),
|
|
46767
|
+
withDirectives(createBaseVNode("select", {
|
|
46768
|
+
class: "form-select",
|
|
46769
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => syncConfig.value.source.tableName = $event)
|
|
46770
|
+
}, [
|
|
46771
|
+
_cache[49] || (_cache[49] = createBaseVNode("option", { value: "" }, "请选择表", -1)),
|
|
46772
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(tables.value, (table) => {
|
|
46773
|
+
return openBlock(), createElementBlock("option", {
|
|
46774
|
+
key: table.name,
|
|
46775
|
+
value: table.name
|
|
46776
|
+
}, toDisplayString(table.name), 9, _hoisted_13$4);
|
|
46777
|
+
}), 128))
|
|
46778
|
+
], 512), [
|
|
46779
|
+
[vModelSelect, syncConfig.value.source.tableName]
|
|
46780
|
+
])
|
|
46781
|
+
])
|
|
46782
|
+
])
|
|
46783
|
+
]),
|
|
46784
|
+
createBaseVNode("div", _hoisted_14$4, [
|
|
46785
|
+
_cache[66] || (_cache[66] = createBaseVNode("h6", { class: "text-primary mb-2" }, [
|
|
46786
|
+
createBaseVNode("i", { class: "bi bi-database" }),
|
|
46787
|
+
createTextVNode(" 目标数据库")
|
|
46788
|
+
], -1)),
|
|
46789
|
+
createBaseVNode("div", _hoisted_15$4, [
|
|
46790
|
+
createBaseVNode("div", _hoisted_16$4, [
|
|
46791
|
+
withDirectives(createBaseVNode("input", {
|
|
46792
|
+
class: "form-check-input",
|
|
46793
|
+
type: "checkbox",
|
|
46794
|
+
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => useExistingConnection.value = $event),
|
|
46795
|
+
id: "useExistingConnection"
|
|
46796
|
+
}, null, 512), [
|
|
46797
|
+
[vModelCheckbox, useExistingConnection.value]
|
|
46798
|
+
]),
|
|
46799
|
+
_cache[52] || (_cache[52] = createBaseVNode("label", {
|
|
46800
|
+
class: "form-check-label",
|
|
46801
|
+
for: "useExistingConnection"
|
|
46802
|
+
}, "使用已配置的数据库连接", -1))
|
|
46803
|
+
])
|
|
46804
|
+
]),
|
|
46805
|
+
useExistingConnection.value ? (openBlock(), createElementBlock("div", _hoisted_17$4, [
|
|
46806
|
+
createBaseVNode("div", _hoisted_18$4, [
|
|
46807
|
+
_cache[54] || (_cache[54] = createBaseVNode("label", { class: "form-label" }, "选择数据库连接", -1)),
|
|
46808
|
+
withDirectives(createBaseVNode("select", {
|
|
46809
|
+
class: "form-select",
|
|
46810
|
+
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => selectedConnectionId.value = $event)
|
|
46811
|
+
}, [
|
|
46812
|
+
_cache[53] || (_cache[53] = createBaseVNode("option", { value: "" }, "请选择连接", -1)),
|
|
46813
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(connections.value, (conn) => {
|
|
46814
|
+
return openBlock(), createElementBlock("option", {
|
|
46815
|
+
key: conn.id,
|
|
46816
|
+
value: conn.id
|
|
46817
|
+
}, toDisplayString(conn.name) + " (" + toDisplayString(conn.type) + ")", 9, _hoisted_19$4);
|
|
46818
|
+
}), 128))
|
|
46819
|
+
], 512), [
|
|
46820
|
+
[vModelSelect, selectedConnectionId.value]
|
|
46821
|
+
])
|
|
46822
|
+
]),
|
|
46823
|
+
createBaseVNode("div", _hoisted_20$4, [
|
|
46824
|
+
_cache[56] || (_cache[56] = createBaseVNode("label", { class: "form-label" }, "选择数据库", -1)),
|
|
46825
|
+
withDirectives(createBaseVNode("select", {
|
|
46826
|
+
class: "form-select",
|
|
46827
|
+
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => selectedDatabaseName.value = $event)
|
|
46828
|
+
}, [
|
|
46829
|
+
_cache[55] || (_cache[55] = createBaseVNode("option", { value: "" }, "请选择数据库", -1)),
|
|
46830
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(databases.value, (db) => {
|
|
46831
|
+
return openBlock(), createElementBlock("option", {
|
|
46832
|
+
key: db,
|
|
46833
|
+
value: db
|
|
46834
|
+
}, toDisplayString(db), 9, _hoisted_21$4);
|
|
46835
|
+
}), 128))
|
|
46836
|
+
], 512), [
|
|
46837
|
+
[vModelSelect, selectedDatabaseName.value]
|
|
46838
|
+
])
|
|
46839
|
+
]),
|
|
46840
|
+
createBaseVNode("div", _hoisted_22$4, [
|
|
46841
|
+
_cache[57] || (_cache[57] = createBaseVNode("label", { class: "form-label" }, "目标表名", -1)),
|
|
46842
|
+
withDirectives(createBaseVNode("input", {
|
|
46843
|
+
type: "text",
|
|
46844
|
+
class: "form-control",
|
|
46845
|
+
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => syncConfig.value.target.tableName = $event)
|
|
46846
|
+
}, null, 512), [
|
|
46847
|
+
[vModelText, syncConfig.value.target.tableName]
|
|
46848
|
+
])
|
|
46849
|
+
])
|
|
46850
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_23$4, [
|
|
46851
|
+
createBaseVNode("div", _hoisted_24$4, [
|
|
46852
|
+
_cache[59] || (_cache[59] = createBaseVNode("label", { class: "form-label" }, "数据库类型", -1)),
|
|
46853
|
+
withDirectives(createBaseVNode("select", {
|
|
46854
|
+
class: "form-select",
|
|
46855
|
+
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => syncConfig.value.target.dbType = $event)
|
|
46856
|
+
}, [..._cache[58] || (_cache[58] = [
|
|
46857
|
+
createStaticVNode('<option value="mysql" data-v-622732f3>MySQL</option><option value="postgresql" data-v-622732f3>PostgreSQL</option><option value="sqlite" data-v-622732f3>SQLite</option><option value="sqlserver" data-v-622732f3>SQL Server</option><option value="oracle" data-v-622732f3>Oracle</option>', 5)
|
|
46858
|
+
])], 512), [
|
|
46859
|
+
[vModelSelect, syncConfig.value.target.dbType]
|
|
46860
|
+
])
|
|
46861
|
+
]),
|
|
46862
|
+
createBaseVNode("div", _hoisted_25$4, [
|
|
46863
|
+
_cache[60] || (_cache[60] = createBaseVNode("label", { class: "form-label" }, "主机", -1)),
|
|
46864
|
+
withDirectives(createBaseVNode("input", {
|
|
46865
|
+
type: "text",
|
|
46866
|
+
class: "form-control",
|
|
46867
|
+
"onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => syncConfig.value.target.host = $event)
|
|
46868
|
+
}, null, 512), [
|
|
46869
|
+
[vModelText, syncConfig.value.target.host]
|
|
46870
|
+
])
|
|
46871
|
+
]),
|
|
46872
|
+
createBaseVNode("div", _hoisted_26$4, [
|
|
46873
|
+
_cache[61] || (_cache[61] = createBaseVNode("label", { class: "form-label" }, "端口", -1)),
|
|
46874
|
+
withDirectives(createBaseVNode("input", {
|
|
46875
|
+
type: "number",
|
|
46876
|
+
class: "form-control",
|
|
46877
|
+
"onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => syncConfig.value.target.port = $event)
|
|
46878
|
+
}, null, 512), [
|
|
46879
|
+
[vModelText, syncConfig.value.target.port]
|
|
46880
|
+
])
|
|
46881
|
+
]),
|
|
46882
|
+
createBaseVNode("div", _hoisted_27$4, [
|
|
46883
|
+
_cache[62] || (_cache[62] = createBaseVNode("label", { class: "form-label" }, "数据库名", -1)),
|
|
46884
|
+
withDirectives(createBaseVNode("input", {
|
|
46885
|
+
type: "text",
|
|
46886
|
+
class: "form-control",
|
|
46887
|
+
"onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => syncConfig.value.target.database = $event)
|
|
46888
|
+
}, null, 512), [
|
|
46889
|
+
[vModelText, syncConfig.value.target.database]
|
|
46890
|
+
])
|
|
46891
|
+
]),
|
|
46892
|
+
createBaseVNode("div", _hoisted_28$4, [
|
|
46893
|
+
_cache[63] || (_cache[63] = createBaseVNode("label", { class: "form-label" }, "用户名", -1)),
|
|
46894
|
+
withDirectives(createBaseVNode("input", {
|
|
46895
|
+
type: "text",
|
|
46896
|
+
class: "form-control",
|
|
46897
|
+
"onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => syncConfig.value.target.username = $event)
|
|
46898
|
+
}, null, 512), [
|
|
46899
|
+
[vModelText, syncConfig.value.target.username]
|
|
46900
|
+
])
|
|
46901
|
+
]),
|
|
46902
|
+
createBaseVNode("div", _hoisted_29$3, [
|
|
46903
|
+
_cache[64] || (_cache[64] = createBaseVNode("label", { class: "form-label" }, "密码", -1)),
|
|
46904
|
+
withDirectives(createBaseVNode("input", {
|
|
46905
|
+
type: "password",
|
|
46906
|
+
class: "form-control",
|
|
46907
|
+
"onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => syncConfig.value.target.password = $event)
|
|
46908
|
+
}, null, 512), [
|
|
46909
|
+
[vModelText, syncConfig.value.target.password]
|
|
46910
|
+
])
|
|
46911
|
+
]),
|
|
46912
|
+
createBaseVNode("div", _hoisted_30$3, [
|
|
46913
|
+
_cache[65] || (_cache[65] = createBaseVNode("label", { class: "form-label" }, "目标表名", -1)),
|
|
46914
|
+
withDirectives(createBaseVNode("input", {
|
|
46915
|
+
type: "text",
|
|
46916
|
+
class: "form-control",
|
|
46917
|
+
"onUpdate:modelValue": _cache[13] || (_cache[13] = ($event) => syncConfig.value.target.tableName = $event)
|
|
46918
|
+
}, null, 512), [
|
|
46919
|
+
[vModelText, syncConfig.value.target.tableName]
|
|
46920
|
+
])
|
|
46921
|
+
])
|
|
46922
|
+
]))
|
|
46923
|
+
]),
|
|
46924
|
+
createBaseVNode("div", _hoisted_31$3, [
|
|
46925
|
+
_cache[72] || (_cache[72] = createBaseVNode("h6", { class: "text-primary mb-2" }, [
|
|
46926
|
+
createBaseVNode("i", { class: "bi bi-sliders" }),
|
|
46927
|
+
createTextVNode(" 同步选项")
|
|
46928
|
+
], -1)),
|
|
46929
|
+
createBaseVNode("div", _hoisted_32$3, [
|
|
46930
|
+
createBaseVNode("div", _hoisted_33$3, [
|
|
46931
|
+
createBaseVNode("div", _hoisted_34$3, [
|
|
46932
|
+
withDirectives(createBaseVNode("input", {
|
|
46933
|
+
type: "checkbox",
|
|
46934
|
+
class: "form-check-input",
|
|
46935
|
+
"onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => syncConfig.value.options.syncStructure = $event),
|
|
46936
|
+
id: "syncStructure"
|
|
46937
|
+
}, null, 512), [
|
|
46938
|
+
[vModelCheckbox, syncConfig.value.options.syncStructure]
|
|
46939
|
+
]),
|
|
46940
|
+
_cache[67] || (_cache[67] = createBaseVNode("label", {
|
|
46941
|
+
class: "form-check-label",
|
|
46942
|
+
for: "syncStructure"
|
|
46943
|
+
}, "同步表结构", -1))
|
|
46944
|
+
])
|
|
46945
|
+
]),
|
|
46946
|
+
createBaseVNode("div", _hoisted_35$3, [
|
|
46947
|
+
createBaseVNode("div", _hoisted_36$3, [
|
|
46948
|
+
withDirectives(createBaseVNode("input", {
|
|
46949
|
+
type: "checkbox",
|
|
46950
|
+
class: "form-check-input",
|
|
46951
|
+
"onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => syncConfig.value.options.syncData = $event),
|
|
46952
|
+
id: "syncData"
|
|
46953
|
+
}, null, 512), [
|
|
46954
|
+
[vModelCheckbox, syncConfig.value.options.syncData]
|
|
46955
|
+
]),
|
|
46956
|
+
_cache[68] || (_cache[68] = createBaseVNode("label", {
|
|
46957
|
+
class: "form-check-label",
|
|
46958
|
+
for: "syncData"
|
|
46959
|
+
}, "同步表数据", -1))
|
|
46960
|
+
])
|
|
46961
|
+
]),
|
|
46962
|
+
createBaseVNode("div", _hoisted_37$3, [
|
|
46963
|
+
createBaseVNode("div", _hoisted_38$3, [
|
|
46964
|
+
withDirectives(createBaseVNode("input", {
|
|
46965
|
+
type: "checkbox",
|
|
46966
|
+
class: "form-check-input",
|
|
46967
|
+
"onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => syncConfig.value.options.dropIfExists = $event),
|
|
46968
|
+
id: "dropIfExists"
|
|
46969
|
+
}, null, 512), [
|
|
46970
|
+
[vModelCheckbox, syncConfig.value.options.dropIfExists]
|
|
46971
|
+
]),
|
|
46972
|
+
_cache[69] || (_cache[69] = createBaseVNode("label", {
|
|
46973
|
+
class: "form-check-label",
|
|
46974
|
+
for: "dropIfExists"
|
|
46975
|
+
}, "目标表存在时删除", -1))
|
|
46976
|
+
])
|
|
46977
|
+
]),
|
|
46978
|
+
createBaseVNode("div", _hoisted_39$3, [
|
|
46979
|
+
createBaseVNode("div", _hoisted_40$3, [
|
|
46980
|
+
withDirectives(createBaseVNode("input", {
|
|
46981
|
+
type: "checkbox",
|
|
46982
|
+
class: "form-check-input",
|
|
46983
|
+
"onUpdate:modelValue": _cache[17] || (_cache[17] = ($event) => syncConfig.value.options.bulkInsert = $event),
|
|
46984
|
+
id: "bulkInsert"
|
|
46985
|
+
}, null, 512), [
|
|
46986
|
+
[vModelCheckbox, syncConfig.value.options.bulkInsert]
|
|
46987
|
+
]),
|
|
46988
|
+
_cache[70] || (_cache[70] = createBaseVNode("label", {
|
|
46989
|
+
class: "form-check-label",
|
|
46990
|
+
for: "bulkInsert"
|
|
46991
|
+
}, "批量插入数据", -1))
|
|
46992
|
+
])
|
|
46993
|
+
]),
|
|
46994
|
+
createBaseVNode("div", _hoisted_41$2, [
|
|
46995
|
+
createBaseVNode("div", _hoisted_42$2, [
|
|
46996
|
+
withDirectives(createBaseVNode("input", {
|
|
46997
|
+
type: "checkbox",
|
|
46998
|
+
class: "form-check-input",
|
|
46999
|
+
"onUpdate:modelValue": _cache[18] || (_cache[18] = ($event) => syncConfig.value.options.overrideExisting = $event),
|
|
47000
|
+
id: "overrideExisting"
|
|
47001
|
+
}, null, 512), [
|
|
47002
|
+
[vModelCheckbox, syncConfig.value.options.overrideExisting]
|
|
47003
|
+
]),
|
|
47004
|
+
_cache[71] || (_cache[71] = createBaseVNode("label", {
|
|
47005
|
+
class: "form-check-label",
|
|
47006
|
+
for: "overrideExisting"
|
|
47007
|
+
}, "覆盖已存在的数据", -1))
|
|
47008
|
+
])
|
|
47009
|
+
])
|
|
47010
|
+
])
|
|
47011
|
+
]),
|
|
47012
|
+
createBaseVNode("div", _hoisted_43$2, [
|
|
47013
|
+
createBaseVNode("button", {
|
|
47014
|
+
class: "btn btn-primary btn-sm",
|
|
47015
|
+
onClick: performSync,
|
|
47016
|
+
disabled: syncing.value || !isSyncFormValid.value
|
|
47017
|
+
}, [..._cache[73] || (_cache[73] = [
|
|
47018
|
+
createBaseVNode("i", { class: "bi bi-play-fill" }, null, -1),
|
|
47019
|
+
createTextVNode(" 开始同步 ", -1)
|
|
47020
|
+
])], 8, _hoisted_44$2),
|
|
47021
|
+
syncing.value ? (openBlock(), createElementBlock("button", {
|
|
47022
|
+
key: 0,
|
|
47023
|
+
class: "btn btn-outline-danger btn-sm",
|
|
47024
|
+
onClick: _cache[19] || (_cache[19] = //@ts-ignore
|
|
47025
|
+
(...args) => _ctx.stopSync && _ctx.stopSync(...args))
|
|
47026
|
+
}, [..._cache[74] || (_cache[74] = [
|
|
47027
|
+
createBaseVNode("i", { class: "bi bi-stop-fill" }, null, -1),
|
|
47028
|
+
createTextVNode(" 停止同步 ", -1)
|
|
47029
|
+
])])) : createCommentVNode("", true)
|
|
47030
|
+
])
|
|
47031
|
+
])) : createCommentVNode("", true)
|
|
47032
|
+
])) : createCommentVNode("", true),
|
|
47033
|
+
createBaseVNode("div", _hoisted_45$2, [
|
|
46498
47034
|
createBaseVNode("div", { class: "results-header" }, [
|
|
46499
|
-
_cache[
|
|
47035
|
+
_cache[76] || (_cache[76] = createBaseVNode("h6", { class: "results-title" }, [
|
|
46500
47036
|
createBaseVNode("i", { class: "bi bi-terminal" }),
|
|
46501
47037
|
createTextVNode(" 执行结果 ")
|
|
46502
47038
|
], -1)),
|
|
46503
47039
|
createBaseVNode("button", {
|
|
46504
47040
|
class: "btn btn-outline-secondary btn-sm",
|
|
46505
47041
|
onClick: clearResults
|
|
46506
|
-
}, [..._cache[
|
|
47042
|
+
}, [..._cache[75] || (_cache[75] = [
|
|
46507
47043
|
createBaseVNode("i", { class: "bi bi-trash" }, null, -1),
|
|
46508
47044
|
createTextVNode(" 清空 ", -1)
|
|
46509
47045
|
])])
|
|
@@ -46513,7 +47049,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46513
47049
|
ref_key: "resultsContentRef",
|
|
46514
47050
|
ref: resultsContentRef
|
|
46515
47051
|
}, [
|
|
46516
|
-
executionResults.value.length === 0 ? (openBlock(), createElementBlock("div",
|
|
47052
|
+
executionResults.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_46$2, [..._cache[77] || (_cache[77] = [
|
|
46517
47053
|
createBaseVNode("i", { class: "bi bi-inbox" }, null, -1),
|
|
46518
47054
|
createBaseVNode("p", null, "暂无执行结果", -1)
|
|
46519
47055
|
])])) : createCommentVNode("", true),
|
|
@@ -46526,22 +47062,22 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46526
47062
|
class: "result-header",
|
|
46527
47063
|
onClick: ($event) => toggleResult(index)
|
|
46528
47064
|
}, [
|
|
46529
|
-
createBaseVNode("div",
|
|
47065
|
+
createBaseVNode("div", _hoisted_48$2, [
|
|
46530
47066
|
createBaseVNode("i", {
|
|
46531
47067
|
class: normalizeClass(getResultIcon(result.status))
|
|
46532
47068
|
}, null, 2),
|
|
46533
|
-
createBaseVNode("span",
|
|
46534
|
-
createBaseVNode("span",
|
|
47069
|
+
createBaseVNode("span", _hoisted_49$2, toDisplayString(result.operation), 1),
|
|
47070
|
+
createBaseVNode("span", _hoisted_50$2, toDisplayString(result.timestamp), 1)
|
|
46535
47071
|
]),
|
|
46536
47072
|
createBaseVNode("i", {
|
|
46537
47073
|
class: normalizeClass(["bi bi-chevron-down toggle-icon", { "expanded": result.expanded }])
|
|
46538
47074
|
}, null, 2)
|
|
46539
|
-
], 8,
|
|
46540
|
-
result.expanded ? (openBlock(), createElementBlock("div",
|
|
47075
|
+
], 8, _hoisted_47$2),
|
|
47076
|
+
result.expanded ? (openBlock(), createElementBlock("div", _hoisted_51$2, [
|
|
46541
47077
|
createBaseVNode("pre", null, [
|
|
46542
47078
|
createBaseVNode("code", {
|
|
46543
47079
|
innerHTML: highlightJson(result.data)
|
|
46544
|
-
}, null, 8,
|
|
47080
|
+
}, null, 8, _hoisted_52$2)
|
|
46545
47081
|
])
|
|
46546
47082
|
])) : createCommentVNode("", true)
|
|
46547
47083
|
], 2);
|
|
@@ -46552,44 +47088,44 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46552
47088
|
class: normalizeClass(["modal fade", { show: restoreModalVisible.value }]),
|
|
46553
47089
|
style: normalizeStyle({ display: restoreModalVisible.value ? "block" : "none", zIndex: 1055 })
|
|
46554
47090
|
}, [
|
|
46555
|
-
createBaseVNode("div",
|
|
46556
|
-
createBaseVNode("div",
|
|
47091
|
+
createBaseVNode("div", _hoisted_53$2, [
|
|
47092
|
+
createBaseVNode("div", _hoisted_54$2, [
|
|
46557
47093
|
createBaseVNode("div", { class: "modal-header" }, [
|
|
46558
|
-
_cache[
|
|
47094
|
+
_cache[78] || (_cache[78] = createBaseVNode("h5", { class: "modal-title" }, "恢复数据库", -1)),
|
|
46559
47095
|
createBaseVNode("button", {
|
|
46560
47096
|
type: "button",
|
|
46561
47097
|
class: "btn-close",
|
|
46562
47098
|
onClick: closeRestoreModal
|
|
46563
47099
|
})
|
|
46564
47100
|
]),
|
|
46565
|
-
createBaseVNode("div",
|
|
46566
|
-
_cache[
|
|
46567
|
-
createBaseVNode("div",
|
|
47101
|
+
createBaseVNode("div", _hoisted_55$2, [
|
|
47102
|
+
_cache[80] || (_cache[80] = createBaseVNode("p", null, "请选择要恢复的备份文件:", -1)),
|
|
47103
|
+
createBaseVNode("div", _hoisted_56$2, [
|
|
46568
47104
|
createBaseVNode("input", {
|
|
46569
47105
|
type: "file",
|
|
46570
47106
|
class: "form-control",
|
|
46571
|
-
onChange: _cache[
|
|
47107
|
+
onChange: _cache[20] || (_cache[20] = //@ts-ignore
|
|
46572
47108
|
(...args) => _ctx.handleFileChange && _ctx.handleFileChange(...args)),
|
|
46573
47109
|
accept: ".sql,.bak"
|
|
46574
47110
|
}, null, 32)
|
|
46575
47111
|
]),
|
|
46576
|
-
selectedFile.value ? (openBlock(), createElementBlock("div",
|
|
46577
|
-
createBaseVNode("div",
|
|
47112
|
+
selectedFile.value ? (openBlock(), createElementBlock("div", _hoisted_57$2, " 已选择文件:" + toDisplayString(selectedFile.value.name), 1)) : createCommentVNode("", true),
|
|
47113
|
+
createBaseVNode("div", _hoisted_58$2, [
|
|
46578
47114
|
withDirectives(createBaseVNode("input", {
|
|
46579
47115
|
type: "checkbox",
|
|
46580
47116
|
class: "form-check-input",
|
|
46581
|
-
"onUpdate:modelValue": _cache[
|
|
47117
|
+
"onUpdate:modelValue": _cache[21] || (_cache[21] = ($event) => restoreOptions.value.dropExisting = $event),
|
|
46582
47118
|
id: "dropExisting"
|
|
46583
47119
|
}, null, 512), [
|
|
46584
47120
|
[vModelCheckbox, restoreOptions.value.dropExisting]
|
|
46585
47121
|
]),
|
|
46586
|
-
_cache[
|
|
47122
|
+
_cache[79] || (_cache[79] = createBaseVNode("label", {
|
|
46587
47123
|
class: "form-check-label",
|
|
46588
47124
|
for: "dropExisting"
|
|
46589
47125
|
}, "删除现有表", -1))
|
|
46590
47126
|
])
|
|
46591
47127
|
]),
|
|
46592
|
-
createBaseVNode("div",
|
|
47128
|
+
createBaseVNode("div", _hoisted_59$2, [
|
|
46593
47129
|
createBaseVNode("button", {
|
|
46594
47130
|
type: "button",
|
|
46595
47131
|
class: "btn btn-secondary",
|
|
@@ -46601,9 +47137,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46601
47137
|
onClick: performRestore,
|
|
46602
47138
|
disabled: !selectedFile.value
|
|
46603
47139
|
}, [
|
|
46604
|
-
restoring.value ? (openBlock(), createElementBlock("span",
|
|
46605
|
-
_cache[
|
|
46606
|
-
], 8,
|
|
47140
|
+
restoring.value ? (openBlock(), createElementBlock("span", _hoisted_61$2)) : createCommentVNode("", true),
|
|
47141
|
+
_cache[81] || (_cache[81] = createTextVNode(" 恢复 ", -1))
|
|
47142
|
+
], 8, _hoisted_60$2)
|
|
46607
47143
|
])
|
|
46608
47144
|
])
|
|
46609
47145
|
])
|
|
@@ -46612,7 +47148,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
46612
47148
|
};
|
|
46613
47149
|
}
|
|
46614
47150
|
});
|
|
46615
|
-
const DbTools = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-
|
|
47151
|
+
const DbTools = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-622732f3"]]);
|
|
46616
47152
|
const _hoisted_1$3 = { class: "database-detail" };
|
|
46617
47153
|
const _hoisted_2$3 = { class: "database-header" };
|
|
46618
47154
|
const _hoisted_3$3 = { class: "database-header-content" };
|
|
@@ -47539,7 +48075,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
47539
48075
|
};
|
|
47540
48076
|
}
|
|
47541
48077
|
});
|
|
47542
|
-
const DatabaseDetail = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-
|
|
48078
|
+
const DatabaseDetail = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-7ce335e1"]]);
|
|
47543
48079
|
const _hoisted_1$2 = { class: "modal-dialog modal-lg" };
|
|
47544
48080
|
const _hoisted_2$2 = { class: "modal-content" };
|
|
47545
48081
|
const _hoisted_3$2 = {
|
|
@@ -47948,7 +48484,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
47948
48484
|
};
|
|
47949
48485
|
}
|
|
47950
48486
|
});
|
|
47951
|
-
const DataEditor = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-
|
|
48487
|
+
const DataEditor = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-dc8f434a"]]);
|
|
47952
48488
|
const _hoisted_1$1 = { class: "table-detail" };
|
|
47953
48489
|
const _hoisted_2$1 = { class: "table-header" };
|
|
47954
48490
|
const _hoisted_3$1 = { class: "table-header-content" };
|
|
@@ -49140,7 +49676,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
49140
49676
|
};
|
|
49141
49677
|
}
|
|
49142
49678
|
});
|
|
49143
|
-
const TableDetail = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-
|
|
49679
|
+
const TableDetail = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-23851444"]]);
|
|
49144
49680
|
const _hoisted_1 = { class: "database-explorer" };
|
|
49145
49681
|
const _hoisted_2 = { class: "explorer-layout" };
|
|
49146
49682
|
const _hoisted_3 = { class: "explorer-sidebar" };
|
|
@@ -50085,7 +50621,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
50085
50621
|
};
|
|
50086
50622
|
}
|
|
50087
50623
|
});
|
|
50088
|
-
const explorer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
50624
|
+
const explorer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-54c47218"]]);
|
|
50089
50625
|
export {
|
|
50090
50626
|
explorer as default
|
|
50091
50627
|
};
|