From 878985f7c5c45ac5cbb8ab67a55ff504c398988b Mon Sep 17 00:00:00 2001 From: "meilin.huang" <954537473@qq.com> Date: Thu, 22 Feb 2024 21:03:13 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BE=9D=E8=B5=96=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8D=87=E7=BA=A7=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- mayfly_go_web/package.json | 20 +++++++++---------- .../src/components/terminal/TerminalBody.vue | 8 +++++--- .../src/views/ops/db/InstanceList.vue | 19 +++--------------- server/go.mod | 12 +++++------ server/resources/script/sql/mayfly-go.sql | 2 +- 6 files changed, 26 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 99947ee9..41b243d1 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ docker pulls - golang + golang vue diff --git a/mayfly_go_web/package.json b/mayfly_go_web/package.json index e5b2dbb0..e48af67d 100644 --- a/mayfly_go_web/package.json +++ b/mayfly_go_web/package.json @@ -10,13 +10,13 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.3.1", - "@vueuse/core": "^10.7.2", - "asciinema-player": "^3.6.3", + "@vueuse/core": "^10.8.0", + "asciinema-player": "^3.7.0", "axios": "^1.6.2", "clipboard": "^2.0.11", - "countup.js": "^2.7.0", - "cropperjs": "^1.5.11", - "echarts": "^5.4.3", + "countup.js": "^2.8.0", + "cropperjs": "^1.6.1", + "echarts": "^5.5.0", "element-plus": "^2.5.6", "js-base64": "^3.7.5", "jsencrypt": "^3.3.2", @@ -29,12 +29,12 @@ "pinia": "^2.1.7", "qrcode.vue": "^3.4.1", "screenfull": "^6.0.2", - "sortablejs": "^1.15.0", + "sortablejs": "^1.15.2", "splitpanes": "^3.1.5", "sql-formatter": "^15.0.2", "uuid": "^9.0.1", "vue": "^3.4.19", - "vue-router": "^4.2.5", + "vue-router": "^4.3.0", "xterm": "^5.3.0", "xterm-addon-fit": "^0.8.0", "xterm-addon-search": "^0.13.0", @@ -44,10 +44,10 @@ "@types/lodash": "^4.14.178", "@types/node": "^18.14.0", "@types/nprogress": "^0.2.0", - "@types/sortablejs": "^1.15.3", + "@types/sortablejs": "^1.15.8", "@typescript-eslint/eslint-plugin": "^6.7.4", "@typescript-eslint/parser": "^6.7.4", - "@vitejs/plugin-vue": "^5.0.3", + "@vitejs/plugin-vue": "^5.0.4", "@vue/compiler-sfc": "^3.4.19", "code-inspector-plugin": "^0.4.5", "dotenv": "^16.3.1", @@ -56,7 +56,7 @@ "prettier": "^3.2.5", "sass": "^1.69.0", "typescript": "^5.3.2", - "vite": "^5.1.3", + "vite": "^5.1.4", "vue-eslint-parser": "^9.4.2" }, "browserslist": [ diff --git a/mayfly_go_web/src/components/terminal/TerminalBody.vue b/mayfly_go_web/src/components/terminal/TerminalBody.vue index 1306f3b9..9adb676d 100644 --- a/mayfly_go_web/src/components/terminal/TerminalBody.vue +++ b/mayfly_go_web/src/components/terminal/TerminalBody.vue @@ -117,9 +117,11 @@ function init() { state.addon.weblinks = weblinks; term.loadAddon(weblinks); - fitTerminal(); - // 初始化websocket - initSocket(); + setTimeout(() => { + fitTerminal(); + // 初始化websocket + initSocket(); + }, 100); } /** diff --git a/mayfly_go_web/src/views/ops/db/InstanceList.vue b/mayfly_go_web/src/views/ops/db/InstanceList.vue index e5e2dcd6..8631fd02 100644 --- a/mayfly_go_web/src/views/ops/db/InstanceList.vue +++ b/mayfly_go_web/src/views/ops/db/InstanceList.vue @@ -25,7 +25,6 @@ @@ -151,26 +150,14 @@ const editInstance = async (data: any) => { state.instanceEditDialog.visible = true; }; -const deleteInstance = async (data: any) => { +const deleteInstance = async () => { try { - let instanceName: string; - if (data) { - instanceName = data.name; - } else { - instanceName = state.selectionData.map((x: any) => x.name).join(', '); - } - await ElMessageBox.confirm(`确定删除数据库实例【${instanceName}】?`, '提示', { + await ElMessageBox.confirm(`确定删除数据库实例【${state.selectionData.map((x: any) => x.name).join(', ')}】?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', }); - let instanceId: string; - if (data) { - instanceId = data.id; - } else { - instanceId = state.selectionData.map((x: any) => x.id).join(','); - } - await dbApi.deleteInstance.request({ id: instanceId }); + await dbApi.deleteInstance.request({ id: state.selectionData.map((x: any) => x.id).join(',') }); ElMessage.success('删除成功'); search(); } catch (err) { diff --git a/server/go.mod b/server/go.mod index 487b6e67..143bdc33 100644 --- a/server/go.mod +++ b/server/go.mod @@ -1,6 +1,6 @@ module mayfly-go -go 1.21 +go 1.22 require ( gitee.com/chunanyong/dm v1.8.13 @@ -25,13 +25,13 @@ require ( github.com/pkg/errors v0.9.1 github.com/pkg/sftp v1.13.6 github.com/pquerna/otp v1.4.0 - github.com/redis/go-redis/v9 v9.4.0 + github.com/redis/go-redis/v9 v9.5.1 github.com/robfig/cron/v3 v3.0.1 // 定时任务 - github.com/sijms/go-ora/v2 v2.8.7 + github.com/sijms/go-ora/v2 v2.8.9 github.com/stretchr/testify v1.8.4 - go.mongodb.org/mongo-driver v1.13.1 // mongo + go.mongodb.org/mongo-driver v1.14.0 // mongo golang.org/x/crypto v0.19.0 // ssh - golang.org/x/oauth2 v0.15.0 + golang.org/x/oauth2 v0.17.0 golang.org/x/sync v0.6.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 @@ -86,7 +86,7 @@ require ( golang.org/x/arch v0.3.0 // indirect golang.org/x/exp v0.0.0-20230519143937-03e91628a987 // indirect golang.org/x/image v0.13.0 // indirect - golang.org/x/net v0.19.0 // indirect + golang.org/x/net v0.21.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/server/resources/script/sql/mayfly-go.sql b/server/resources/script/sql/mayfly-go.sql index 9d4b3d4c..45566351 100644 --- a/server/resources/script/sql/mayfly-go.sql +++ b/server/resources/script/sql/mayfly-go.sql @@ -626,7 +626,7 @@ INSERT INTO `t_sys_config` (name, `key`, params, value, remark, create_time, cre INSERT INTO `t_sys_config` (name, `key`, params, value, remark, permission, create_time, creator_id, creator, update_time, modifier_id, modifier, is_deleted, delete_time) VALUES('oauth2登录配置', 'Oauth2Login', '[{"name":"是否启用","model":"enable","placeholder":"是否启用oauth2登录","options":"true,false"},{"name":"名称","model":"name","placeholder":"oauth2名称"},{"name":"Client ID","model":"clientId","placeholder":"Client ID"},{"name":"Client Secret","model":"clientSecret","placeholder":"Client Secret"},{"name":"Authorization URL","model":"authorizationURL","placeholder":"Authorization URL"},{"name":"AccessToken URL","model":"accessTokenURL","placeholder":"AccessToken URL"},{"name":"Redirect URL","model":"redirectURL","placeholder":"本系统地址"},{"name":"Scopes","model":"scopes","placeholder":"Scopes"},{"name":"Resource URL","model":"resourceURL","placeholder":"获取用户信息资源地址"},{"name":"UserIdentifier","model":"userIdentifier","placeholder":"用户唯一标识字段;格式为type:fieldPath(string:username)"},{"name":"是否自动注册","model":"autoRegister","placeholder":"","options":"true,false"}]', '', 'oauth2登录相关配置信息', 'admin,', '2023-07-22 13:58:51', 1, 'admin', '2023-07-22 19:34:37', 1, 'admin', 0, NULL); INSERT INTO `t_sys_config` (name, `key`, params, value, remark, permission, create_time, creator_id, creator, update_time, modifier_id, modifier, is_deleted, delete_time) VALUES('ldap登录配置', 'LdapLogin', '[{"name":"是否启用","model":"enable","placeholder":"是否启用","options":"true,false"},{"name":"host","model":"host","placeholder":"host"},{"name":"port","model":"port","placeholder":"port"},{"name":"bindDN","model":"bindDN","placeholder":"LDAP 服务的管理员账号,如: \\"cn=admin,dc=example,dc=com\\""},{"name":"bindPwd","model":"bindPwd","placeholder":"LDAP 服务的管理员密码"},{"name":"baseDN","model":"baseDN","placeholder":"用户所在的 base DN, 如: \\"ou=users,dc=example,dc=com\\""},{"name":"userFilter","model":"userFilter","placeholder":"过滤用户的方式, 如: \\"(uid=%s)、(&(objectClass=organizationalPerson)(uid=%s))\\""},{"name":"uidMap","model":"uidMap","placeholder":"用户id和 LDAP 字段名之间的映射关系,如: cn"},{"name":"udnMap","model":"udnMap","placeholder":"用户姓名(dispalyName)和 LDAP 字段名之间的映射关系,如: displayName"},{"name":"emailMap","model":"emailMap","placeholder":"用户email和 LDAP 字段名之间的映射关系"},{"name":"skipTLSVerify","model":"skipTLSVerify","placeholder":"客户端是否跳过 TLS 证书验证","options":"true,false"},{"name":"安全协议","model":"securityProtocol","placeholder":"安全协议(为Null不使用安全协议),如: StartTLS, LDAPS","options":"Null,StartTLS,LDAPS"}]', '', 'ldap登录相关配置', 'admin,', '2023-08-25 21:47:20', 1, 'admin', '2023-08-25 22:56:07', 1, 'admin', 0, NULL); INSERT INTO `t_sys_config` (`name`, `key`, `params`, `value`, `remark`, `permission`, `create_time`, `creator_id`, `creator`, `update_time`, `modifier_id`, `modifier`, `is_deleted`, `delete_time`) VALUES('系统全局样式设置', 'SysStyleConfig', '[{"model":"logoIcon","name":"logo图标","placeholder":"系统logo图标(base64编码, 建议svg格式,不超过10k)","required":false},{"model":"title","name":"菜单栏标题","placeholder":"系统菜单栏标题展示","required":false},{"model":"viceTitle","name":"登录页标题","placeholder":"登录页标题展示","required":false},{"model":"useWatermark","name":"是否启用水印","placeholder":"是否启用系统水印","options":"true,false","required":false},{"model":"watermarkContent","name":"水印补充信息","placeholder":"额外水印信息","required":false}]', '{"title":"mayfly-go","viceTitle":"mayfly-go","logoIcon":"","useWatermark":"true","watermarkContent":""}', '系统icon、标题、水印信息等配置', 'all', '2024-01-04 15:17:18', 1, 'admin', '2024-01-05 09:40:44', 1, 'admin', 0, NULL); -INSERT INTO `t_sys_config` (name, `key`, params, value, remark, create_time, creator_id, creator, update_time, modifier_id, modifier)VALUES ('数据库查询最大结果集', 'DbQueryMaxCount', '[]', '200', '允许sql查询的最大结果集数。注: 0=不限制', '2023-02-11 14:29:03', 1, 'admin', '2023-02-11 14:40:56', 1, 'admin'); +INSERT INTO `t_sys_config` (name, `key`, params, value, remark, create_time, creator_id, creator, update_time, modifier_id, modifier)VALUES ('数据库查询最大结果集', 'DbQueryMaxCount', '[]', '0', '允许sql查询的最大结果集数。注: 0=不限制', '2023-02-11 14:29:03', 1, 'admin', '2023-02-11 14:40:56', 1, 'admin'); INSERT INTO `t_sys_config` (name, `key`, params, value, remark, create_time, creator_id, creator, update_time, modifier_id, modifier)VALUES ('数据库是否记录查询SQL', 'DbSaveQuerySQL', '[]', '0', '1: 记录、0:不记录', '2023-02-11 16:07:14', 1, 'admin', '2023-02-11 16:44:17', 1, 'admin'); INSERT INTO `t_sys_config` (`name`, `key`, `params`, `value`, `remark`, `permission`, `create_time`, `creator_id`, `creator`, `update_time`, `modifier_id`, `modifier`, `is_deleted`, `delete_time`) VALUES('机器相关配置', 'MachineConfig', '[{"name":"终端回放存储路径","model":"terminalRecPath","placeholder":"终端回放存储路径"},{"name":"uploadMaxFileSize","model":"uploadMaxFileSize","placeholder":"允许上传的最大文件大小(1MB\\2GB等)"},{"model":"termOpSaveDays","name":"终端记录保存时间","placeholder":"终端记录保存时间(单位天)"}]', '{"terminalRecPath":"./rec","uploadMaxFileSize":"100MB"}', '机器相关配置,如终端回放路径等', 'all', '2023-07-13 16:26:44', 1, 'admin', '2024-01-15 16:30:22', 1, 'admin', 0, NULL); INSERT INTO `t_sys_config` (`name`, `key`, `params`, `value`, `remark`, `permission`, `create_time`, `creator_id`, `creator`, `update_time`, `modifier_id`, `modifier`, `is_deleted`, `delete_time`) VALUES('数据库备份恢复', 'DbBackupRestore', '[{"model":"backupPath","name":"备份路径","placeholder":"备份文件存储路径"}]', '{"backupPath":"./db/backup"}', '', 'admin,', '2023-12-29 09:55:26', 1, 'admin', '2023-12-29 15:45:24', 1, 'admin', 0, NULL);