From 5def4bc26d93a16e3138f2177f64b4dff2e471bb Mon Sep 17 00:00:00 2001 From: "meilin.huang" <954537473@qq.com> Date: Mon, 14 Feb 2022 14:58:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=97=A5=E5=B8=B8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mayfly_go_web/src/common/utils/format.ts | 76 +++++++++-- .../src/components/codemirror/codemirror.vue | 4 +- .../views/ops/component/ProjectEnvSelect.vue | 4 +- .../{component/Table => db}/CreateTable.vue | 103 ++++++--------- mayfly_go_web/src/views/ops/db/DbList.vue | 31 ++++- mayfly_go_web/src/views/ops/db/SqlExec.vue | 10 +- .../views/ops/{component => db}/TableEdit.vue | 0 .../ops/db/{ => component}/SqlExecBox.ts | 4 +- .../ops/db/{ => component}/SqlExecDialog.vue | 6 +- .../ops/{component/Table => db}/service.ts | 0 .../src/views/ops/machine/SshTerminalPage.vue | 2 +- .../src/views/ops/project/ProjectList.vue | 2 +- .../src/views/ops/redis/DataEdit.vue | 122 ++++++++++++------ .../src/views/ops/redis/DataOperation.vue | 9 +- 14 files changed, 234 insertions(+), 139 deletions(-) rename mayfly_go_web/src/views/ops/{component/Table => db}/CreateTable.vue (63%) rename mayfly_go_web/src/views/ops/{component => db}/TableEdit.vue (100%) rename mayfly_go_web/src/views/ops/db/{ => component}/SqlExecBox.ts (85%) rename mayfly_go_web/src/views/ops/db/{ => component}/SqlExecDialog.vue (95%) rename mayfly_go_web/src/views/ops/{component/Table => db}/service.ts (100%) diff --git a/mayfly_go_web/src/common/utils/format.ts b/mayfly_go_web/src/common/utils/format.ts index 5b1aaa94..25e3bc2b 100644 --- a/mayfly_go_web/src/common/utils/format.ts +++ b/mayfly_go_web/src/common/utils/format.ts @@ -5,17 +5,71 @@ */ export function formatByteSize(size: any) { const value = Number(size); - if (size && !isNaN(value)) { - const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB', 'BB']; - let index = 0; - let k = value; - if (value >= 1024) { - while (k > 1024) { - k = k / 1024; - index++; - } + if (size && !isNaN(value)) { + const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB', 'BB']; + let index = 0; + let k = value; + if (value >= 1024) { + while (k > 1024) { + k = k / 1024; + index++; } - return `${k.toFixed(2)}${units[index]}`; } - return '-'; + return `${k.toFixed(2)}${units[index]}`; + } + return '-'; +} + +/** + * 格式化json字符串 + * @param txt json字符串 + * @param compress 是否压缩 + * @returns 格式化后的字符串 + */ +export function formatJsonString(txt: string, compress: boolean) { + var indentChar = ' '; + if (/^\s*$/.test(txt)) { + console.log('数据为空,无法格式化! '); + return txt; + } + try { + var data = JSON.parse(txt); + } catch (e: any) { + console.log('数据源语法错误,格式化失败! 错误信息: ' + e.description, 'err'); + return txt; + } + var draw: any = [], + line = compress ? '' : '\n', + // eslint-disable-next-line no-unused-vars + nodeCount: number = 0, + // eslint-disable-next-line no-unused-vars + maxDepth: number = 0; + + var notify = function (name: any, value: any, isLast: any, indent: any, formObj: any) { + nodeCount++; /*节点计数*/ + for (var i = 0, tab = ''; i < indent; i++) tab += indentChar; /* 缩进HTML */ + tab = compress ? '' : tab; /*压缩模式忽略缩进*/ + maxDepth = ++indent; /*缩进递增并记录*/ + if (value && value.constructor == Array) { + /*处理数组*/ + draw.push(tab + (formObj ? '"' + name + '": ' : '') + '[' + line); /*缩进'[' 然后换行*/ + for (var i = 0; i < value.length; i++) notify(i, value[i], i == value.length - 1, indent, false); + draw.push(tab + ']' + (isLast ? line : ',' + line)); /*缩进']'换行,若非尾元素则添加逗号*/ + } else if (value && typeof value == 'object') { + /*处理对象*/ + draw.push(tab + (formObj ? '"' + name + '": ' : '') + '{' + line); /*缩进'{' 然后换行*/ + var len = 0, + i = 0; + for (var key in value) len++; + for (var key in value) notify(key, value[key], ++i == len, indent, true); + draw.push(tab + '}' + (isLast ? line : ',' + line)); /*缩进'}'换行,若非尾元素则添加逗号*/ + } else { + if (typeof value == 'string') value = '"' + value + '"'; + draw.push(tab + (formObj ? '"' + name + '": ' : '') + value + (isLast ? '' : ',') + line); + } + }; + var isLast = true, + indent = 0; + notify('', data, isLast, indent, false); + return draw.join(''); } \ No newline at end of file diff --git a/mayfly_go_web/src/components/codemirror/codemirror.vue b/mayfly_go_web/src/components/codemirror/codemirror.vue index 4679c967..201cac41 100644 --- a/mayfly_go_web/src/components/codemirror/codemirror.vue +++ b/mayfly_go_web/src/components/codemirror/codemirror.vue @@ -46,7 +46,7 @@ import { ElOption, ElSelect } from 'element-plus'; const CodeMirror = (window as any).CodeMirror || _CodeMirror; export default defineComponent({ - name: 'codemirror', + name: 'CodeMirror', components: { ElOption, ElSelect, @@ -173,7 +173,7 @@ export default defineComponent({ watch( () => props.modelValue, - (newValue, oldValue) => { + (newValue) => { handerCodeChange(newValue); } ); diff --git a/mayfly_go_web/src/views/ops/component/ProjectEnvSelect.vue b/mayfly_go_web/src/views/ops/component/ProjectEnvSelect.vue index eee56f0f..ae5082d5 100644 --- a/mayfly_go_web/src/views/ops/component/ProjectEnvSelect.vue +++ b/mayfly_go_web/src/views/ops/component/ProjectEnvSelect.vue @@ -22,9 +22,7 @@ \ No newline at end of file + + \ No newline at end of file diff --git a/mayfly_go_web/src/views/ops/redis/DataOperation.vue b/mayfly_go_web/src/views/ops/redis/DataOperation.vue index a2cf16c6..c32e9a44 100644 --- a/mayfly_go_web/src/views/ops/redis/DataOperation.vue +++ b/mayfly_go_web/src/views/ops/redis/DataOperation.vue @@ -24,7 +24,7 @@