From 6fe892ca9f1f0becd1c478e4b1f22b7724b9d1ad Mon Sep 17 00:00:00 2001 From: "meilin.huang" <954537473@qq.com> Date: Sun, 24 Apr 2022 20:26:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=AE=8C=E5=96=84-=E6=94=AF=E6=8C=81=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=88=97=E8=BE=93=E5=85=A5=E5=80=BC=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/model/model.go | 2 +- mayfly_go_web/package.json | 2 +- mayfly_go_web/src/views/ops/db/SqlExec.vue | 68 ++++++++++++++++--- .../src/views/ops/machine/MachineList.vue | 7 +- server/devops/api/machine.go | 1 + .../persistence/machine_repo.go | 5 +- 6 files changed, 71 insertions(+), 14 deletions(-) diff --git a/base/model/model.go b/base/model/model.go index 81e4f6f2..ef76de17 100644 --- a/base/model/model.go +++ b/base/model/model.go @@ -179,7 +179,7 @@ func GetPageBySql(sql string, param *PageParam, toModel interface{}, args ...int return &PageResult{Total: 0, List: []string{}} } // 分页查询 - limitSql := sql + " LIMIT " + strconv.Itoa(param.PageNum-1) + ", " + strconv.Itoa(param.PageSize) + limitSql := sql + " LIMIT " + strconv.Itoa((param.PageNum-1)*param.PageSize) + ", " + strconv.Itoa(param.PageSize) err = db.Raw(limitSql).Scan(toModel).Error biz.ErrIsNil(err, "查询失败: %s") return &PageResult{Total: int64(count), List: toModel} diff --git a/mayfly_go_web/package.json b/mayfly_go_web/package.json index b9af03e7..1f00df27 100644 --- a/mayfly_go_web/package.json +++ b/mayfly_go_web/package.json @@ -12,7 +12,7 @@ "countup.js": "^2.0.7", "cropperjs": "^1.5.11", "echarts": "^5.1.1", - "element-plus": "^2.1.4", + "element-plus": "^2.1.10", "@element-plus/icons-vue": "^1.1.3", "jsonlint": "^1.6.3", "lodash": "^4.17.21", diff --git a/mayfly_go_web/src/views/ops/db/SqlExec.vue b/mayfly_go_web/src/views/ops/db/SqlExec.vue index d99905b7..0a9d993b 100644 --- a/mayfly_go_web/src/views/ops/db/SqlExec.vue +++ b/mayfly_go_web/src/views/ops/db/SqlExec.vue @@ -139,8 +139,29 @@ - + + + @@ -296,16 +317,16 @@ export default defineComponent({ // 将sql提示去除 changeObj.text[0] = text.split(' ')[0]; }); - }; onMounted(() => { initCodemirror(); setHeight(); // 监听浏览器窗口大小变化,更新对应组件高度 - window.onresize = () => (() => { - setHeight(); - })(); + window.onresize = () => + (() => { + setHeight(); + })(); }); /** @@ -315,7 +336,7 @@ export default defineComponent({ // 默认300px codemirror.setSize('auto', `${window.innerHeight - 538}px`); state.dataTabsTableHeight = window.innerHeight - 258; - } + }; /** * 项目及环境更改后的回调事件 @@ -498,7 +519,7 @@ export default defineComponent({ const getColumnTip = (tableName: string, columnName: string) => { // 优先从 table map中获取 - let columns = tableMap.get(tableName); + let columns = getColumns4Map(tableName); if (!columns) { return ''; } @@ -604,7 +625,7 @@ export default defineComponent({ */ const getColumns = async (tableName: string) => { // 优先从 table map中获取 - let columns = tableMap.get(tableName); + let columns = getColumns4Map(tableName); if (columns) { return columns; } @@ -616,6 +637,35 @@ export default defineComponent({ return columns; }; + // 从缓存map获取列信息 + const getColumns4Map = (tableName: string) => { + return tableMap.get(tableName); + }; + + /** + * 条件查询,点击列信息后显示输入对应的值 + */ + const onConditionRowClick = (event: any, dataTab: any) => { + const row = event[0]; + ElMessageBox.prompt(`请输入 [${row.columnName}] 的值`, '查询条件', { + confirmButtonText: '确定', + cancelButtonText: '取消', + inputPlaceholder: `${row.columnType} ${row.columnComment}`, + }) + .then(({ value }) => { + if (!value) { + value = ''; + } + let condition = dataTab.condition; + if (condition) { + condition += ` AND `; + } + condition += `${row.columnName} = `; + dataTab.condition = condition + wrapColumnValue(row, value); + }) + .catch(() => {}); + }; + const onRefresh = async (tableName: string) => { // 查询条件置空 state.dataTabs[tableName].condition = ''; @@ -936,6 +986,8 @@ export default defineComponent({ execSqlFileSuccess, flexColumnWidth, getColumnTip, + getColumns4Map, + onConditionRowClick, changeSqlTemplate, deleteSql, saveSql, diff --git a/mayfly_go_web/src/views/ops/machine/MachineList.vue b/mayfly_go_web/src/views/ops/machine/MachineList.vue index 91792695..cdd05310 100644 --- a/mayfly_go_web/src/views/ops/machine/MachineList.vue +++ b/mayfly_go_web/src/views/ops/machine/MachineList.vue @@ -22,7 +22,8 @@ - + + @@ -122,8 +123,8 @@ export default defineComponent({ params: { pageNum: 1, pageSize: 10, - host: null, - clusterId: null, + ip: null, + name: null, }, // 列表数据 data: { diff --git a/server/devops/api/machine.go b/server/devops/api/machine.go index c1db9b32..ec66f282 100644 --- a/server/devops/api/machine.go +++ b/server/devops/api/machine.go @@ -29,6 +29,7 @@ func (m *Machine) Machines(rc *ctx.ReqCtx) { // 使用创建者id模拟账号成员id condition.CreatorId = rc.LoginAccount.Id condition.Ip = rc.GinCtx.Query("ip") + condition.Name = rc.GinCtx.Query("name") condition.ProjectId = uint64(ginx.QueryInt(rc.GinCtx, "projectId", 0)) res := m.MachineApp.GetMachineList(condition, ginx.GetPageParam(rc.GinCtx), new([]*vo.MachineVO)) diff --git a/server/devops/infrastructure/persistence/machine_repo.go b/server/devops/infrastructure/persistence/machine_repo.go index 8b85d7f2..2458c14c 100644 --- a/server/devops/infrastructure/persistence/machine_repo.go +++ b/server/devops/infrastructure/persistence/machine_repo.go @@ -24,7 +24,10 @@ func (m *machineRepo) GetMachineList(condition *entity.Machine, pageParam *model if condition.Ip != "" { sql = sql + " AND m.ip LIKE '%" + condition.Ip + "%'" } - sql = sql + " ORDER BY m.create_time DESC" + if condition.Name != "" { + sql = sql + " AND m.name LIKE '%" + condition.Name + "%'" + } + sql = sql + " ORDER BY m.project_id, m.create_time DESC" return model.GetPageBySql(sql, pageParam, toEntity) }