diff --git a/frontend/src/assets/icon/db/sql.svg b/frontend/src/assets/icon/db/sql.svg
new file mode 100644
index 00000000..2226c807
--- /dev/null
+++ b/frontend/src/assets/icon/db/sql.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/frontend/src/components/monaco/MonacoEditorBox.ts b/frontend/src/components/monaco/MonacoEditorBox.ts
index 7cfa3a7f..295cf192 100644
--- a/frontend/src/components/monaco/MonacoEditorBox.ts
+++ b/frontend/src/components/monaco/MonacoEditorBox.ts
@@ -1,6 +1,7 @@
import { VNode, h, render } from 'vue';
import MonacoEditorDialog from './MonacoEditorDialog.vue';
import * as monaco from 'monaco-editor';
+import { ElMessage } from 'element-plus';
export type MonacoEditorDialogProps = {
content: string;
@@ -53,7 +54,23 @@ const MonacoEditorBox = (props: MonacoEditorDialogProps): void => {
console.log('close editor');
},
onConfirm: () => {
- props.confirmFn && props.confirmFn(props.content);
+ let value = props.content;
+ if (props.language === 'json') {
+ let val;
+ try {
+ val = JSON.parse(value);
+ if (typeof val !== 'object') {
+ ElMessage.error('Invalid json');
+ return;
+ }
+ } catch (e) {
+ ElMessage.error('Invalid json');
+ return;
+ }
+ // 压缩json字符串
+ value = JSON.stringify(val);
+ }
+ props.confirmFn && props.confirmFn(value);
},
});
// 将虚拟dom渲染到 container dom 上
diff --git a/frontend/src/components/monaco/MonacoEditorDialog.vue b/frontend/src/components/monaco/MonacoEditorDialog.vue
index 936b515b..9ce7fed6 100644
--- a/frontend/src/components/monaco/MonacoEditorDialog.vue
+++ b/frontend/src/components/monaco/MonacoEditorDialog.vue
@@ -76,11 +76,11 @@ const confirm = async () => {
try {
val = JSON.parse(value);
if (typeof val !== 'object') {
- ElMessage.error('请输入正确的json');
+ ElMessage.error('Invalid json');
return;
}
} catch (e) {
- ElMessage.error('请输入正确的json');
+ ElMessage.error('Invalid json');
return;
}
diff --git a/frontend/src/views/ops/component/TagTree.vue b/frontend/src/views/ops/component/TagTree.vue
index bae39738..0cd2ddd8 100644
--- a/frontend/src/views/ops/component/TagTree.vue
+++ b/frontend/src/views/ops/component/TagTree.vue
@@ -18,7 +18,12 @@
:default-expanded-keys="props.defaultExpandedKeys"
>
-
+
@@ -157,7 +162,13 @@ const treeNodeClick = async (data: any) => {
};
// 树节点双击事件
-const treeNodeDblclick = (data: any) => {
+const treeNodeDblclick = (data: any, node: any) => {
+ if (node.expanded) {
+ node.collapse();
+ } else {
+ node.expand();
+ }
+
// emit('nodeDblick', data);
if (!data.disabled && data.type.nodeDblclickFunc) {
data.type.nodeDblclickFunc(data);
@@ -245,5 +256,12 @@ defineExpose({
font-size: 10px;
margin-top: 2px;
}
+
+ .node-container {
+ display: flex;
+ align-items: center;
+ width: 100%; // 确保容器宽度占满整个节点区域
+ cursor: pointer; // 添加鼠标指针样式
+ }
}
diff --git a/frontend/src/views/ops/db/SqlExec.vue b/frontend/src/views/ops/db/SqlExec.vue
index 9afe77b9..78e8b266 100644
--- a/frontend/src/views/ops/db/SqlExec.vue
+++ b/frontend/src/views/ops/db/SqlExec.vue
@@ -295,7 +295,7 @@ const TableIcon = {
};
const SqlIcon = {
- name: 'Files',
+ name: 'icon db/sql',
color: '#f56c6c',
};
@@ -450,11 +450,11 @@ const NodeTypeTableMenu = new NodeType(SqlExecNodeType.TableMenu)
// 设置父节点参数的表大小
parentNode.params.dbTableSize = dbTableSize == 0 ? '' : formatByteSize(dbTableSize);
return tablesNode;
- })
- .withNodeDblclickFunc((node: TagTreeNode) => {
- const params = node.params;
- addTablesOpTab({ id: params.id, db: params.db, type: params.type, version: params.version, nodeKey: node.key });
});
+// .withNodeDblclickFunc((node: TagTreeNode) => {
+// const params = node.params;
+// addTablesOpTab({ id: params.id, db: params.db, type: params.type, version: params.version, nodeKey: node.key });
+// });
// 数据库sql模板菜单节点
const NodeTypeSqlMenu = new NodeType(SqlExecNodeType.SqlMenu)
diff --git a/frontend/src/views/ops/db/SyncTaskEdit.vue b/frontend/src/views/ops/db/SyncTaskEdit.vue
index 0034e92e..e1c0602a 100644
--- a/frontend/src/views/ops/db/SyncTaskEdit.vue
+++ b/frontend/src/views/ops/db/SyncTaskEdit.vue
@@ -8,21 +8,19 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
-
-
-
-
-
- {{ $t('db.updateField') }}
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
- {{ $t('db.updateFieldValue') }}
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ {{ $t('db.updateField') }}
+
+
+
+
+
+
+
-
-
-
-
-
- {{ $t('db.fieldValueSrc') }}
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ {{ $t('db.updateFieldValue') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('db.fieldValueSrc') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/ops/db/SyncTaskList.vue b/frontend/src/views/ops/db/SyncTaskList.vue
index 07bbf734..bbb7c56a 100644
--- a/frontend/src/views/ops/db/SyncTaskList.vue
+++ b/frontend/src/views/ops/db/SyncTaskList.vue
@@ -50,7 +50,6 @@