mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-04 00:10:25 +08:00
refactor: 列表字段精简
This commit is contained in:
@@ -7,13 +7,13 @@
|
|||||||
"lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/"
|
"lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@element-plus/icons-vue": "^2.0.9",
|
"@element-plus/icons-vue": "^2.0.10",
|
||||||
"asciinema-player": "^3.0.1",
|
"asciinema-player": "^3.0.1",
|
||||||
"axios": "^1.1.2",
|
"axios": "^1.1.2",
|
||||||
"countup.js": "^2.0.7",
|
"countup.js": "^2.0.7",
|
||||||
"cropperjs": "^1.5.11",
|
"cropperjs": "^1.5.11",
|
||||||
"echarts": "^5.3.3",
|
"echarts": "^5.3.3",
|
||||||
"element-plus": "^2.2.20",
|
"element-plus": "^2.2.22",
|
||||||
"jsencrypt": "^3.2.1",
|
"jsencrypt": "^3.2.1",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
"screenfull": "^6.0.2",
|
"screenfull": "^6.0.2",
|
||||||
"sortablejs": "^1.13.0",
|
"sortablejs": "^1.13.0",
|
||||||
"sql-formatter": "^9.2.0",
|
"sql-formatter": "^9.2.0",
|
||||||
"vue": "^3.2.41",
|
"vue": "^3.2.45",
|
||||||
"vue-clipboard3": "^1.0.1",
|
"vue-clipboard3": "^1.0.1",
|
||||||
"vue-router": "^4.1.6",
|
"vue-router": "^4.1.6",
|
||||||
"vuex": "^4.0.2",
|
"vuex": "^4.0.2",
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ export default defineComponent({
|
|||||||
() => route.path,
|
() => route.path,
|
||||||
() => {
|
() => {
|
||||||
initCurrentRouteMeta(route.meta);
|
initCurrentRouteMeta(route.meta);
|
||||||
proxy.$refs.layoutScrollbarRef.wrap$.scrollTop = 0;
|
proxy.$refs.layoutScrollbarRef.wrapRef.scrollTop = 0;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ export default {
|
|||||||
};
|
};
|
||||||
// 鼠标滚轮滚动
|
// 鼠标滚轮滚动
|
||||||
const onHandleScroll = (e: any) => {
|
const onHandleScroll = (e: any) => {
|
||||||
proxy.$refs.scrollbarRef.$refs.wrap.scrollLeft += e.wheelDelta / 4;
|
proxy.$refs.scrollbarRef.$refs.wrapRef.scrollLeft += e.wheelDelta / 4;
|
||||||
};
|
};
|
||||||
// tagsView 横向滚动
|
// tagsView 横向滚动
|
||||||
const tagsViewmoveToCurrentTag = () => {
|
const tagsViewmoveToCurrentTag = () => {
|
||||||
@@ -251,7 +251,7 @@ export default {
|
|||||||
// 最后 li
|
// 最后 li
|
||||||
let liLast: any = tagsRefs.value[tagsRefs.value.length - 1];
|
let liLast: any = tagsRefs.value[tagsRefs.value.length - 1];
|
||||||
// 当前滚动条的值
|
// 当前滚动条的值
|
||||||
let scrollRefs = proxy.$refs.scrollbarRef.$refs.wrap$;
|
let scrollRefs = proxy.$refs.scrollbarRef.$refs.wrapRef;
|
||||||
// 当前滚动条滚动宽度
|
// 当前滚动条滚动宽度
|
||||||
let scrollS = scrollRefs.scrollWidth;
|
let scrollS = scrollRefs.scrollWidth;
|
||||||
// 当前滚动条偏移宽度
|
// 当前滚动条偏移宽度
|
||||||
|
|||||||
@@ -57,16 +57,13 @@
|
|||||||
<el-table-column prop="username" label="用户名" min-width="100"></el-table-column>
|
<el-table-column prop="username" label="用户名" min-width="100"></el-table-column>
|
||||||
<el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip></el-table-column>
|
||||||
|
|
||||||
<el-table-column min-width="115" prop="creator" label="创建账号"></el-table-column>
|
<el-table-column label="操作" min-width="160" fixed="right">
|
||||||
<el-table-column min-width="160" prop="createTime" label="创建时间" show-overflow-tooltip>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ dateFormat(scope.row.createTime) }}
|
<el-link plain size="small" :underline="false" @click="showInfo(scope.row)">
|
||||||
</template>
|
详情</el-link>
|
||||||
</el-table-column>
|
<el-divider direction="vertical" border-style="dashed" />
|
||||||
|
<el-link class="ml5" type="primary" plain size="small" :underline="false"
|
||||||
<el-table-column label="操作" min-width="120" fixed="right">
|
@click="onShowSqlExec(scope.row)">
|
||||||
<template #default="scope">
|
|
||||||
<el-link type="primary" plain size="small" :underline="false" @click="onShowSqlExec(scope.row)">
|
|
||||||
SQL执行记录</el-link>
|
SQL执行记录</el-link>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -145,8 +142,8 @@
|
|||||||
<el-link @click.prevent="showColumns(scope.row)" type="primary">字段</el-link>
|
<el-link @click.prevent="showColumns(scope.row)" type="primary">字段</el-link>
|
||||||
<el-link class="ml5" @click.prevent="showTableIndex(scope.row)" type="success">索引</el-link>
|
<el-link class="ml5" @click.prevent="showTableIndex(scope.row)" type="success">索引</el-link>
|
||||||
<el-link class="ml5"
|
<el-link class="ml5"
|
||||||
v-if="tableCreateDialog.enableEditTypes.indexOf(tableCreateDialog.type) > -1"
|
v-if="tableCreateDialog.enableEditTypes.indexOf(tableCreateDialog.type) > -1"
|
||||||
@click.prevent="openEditTable(scope.row)" type="warning">编辑表</el-link>
|
@click.prevent="openEditTable(scope.row)" type="warning">编辑表</el-link>
|
||||||
<el-link class="ml5" @click.prevent="showCreateDdl(scope.row)" type="info">DDL</el-link>
|
<el-link class="ml5" @click.prevent="showCreateDdl(scope.row)" type="info">DDL</el-link>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -242,15 +239,41 @@
|
|||||||
size="small"> </el-input>
|
size="small"> </el-input>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog v-model="infoDialog.visible">
|
||||||
|
<el-descriptions title="详情" :column="3" border>
|
||||||
|
<el-descriptions-item :span="1.5" label="id">{{ infoDialog.data.id }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1.5" label="名称">{{ infoDialog.data.name }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="3" label="标签路径">{{ infoDialog.data.tagPath }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2" label="主机">{{ infoDialog.data.host }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" label="端口">{{ infoDialog.data.port }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2" label="用户名">{{ infoDialog.data.username }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" label="类型">{{ infoDialog.data.type }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="3" label="连接参数">{{ infoDialog.data.params }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="3" label="备注">{{ infoDialog.data.remark }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="3" label="数据库">{{ infoDialog.data.database }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="3" label="SSH隧道">{{ infoDialog.data.enableSshTunnel == 1 ? '是' : '否' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2" label="创建时间">{{ dateFormat(infoDialog.data.createTime) }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" label="创建者">{{ infoDialog.data.creator }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2" label="更新时间">{{ dateFormat(infoDialog.data.updateTime) }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" label="修改者">{{ infoDialog.data.modifier }}</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
<db-edit @val-change="valChange" :title="dbEditDialog.title" v-model:visible="dbEditDialog.visible"
|
<db-edit @val-change="valChange" :title="dbEditDialog.title" v-model:visible="dbEditDialog.visible"
|
||||||
v-model:db="dbEditDialog.data"></db-edit>
|
v-model:db="dbEditDialog.data"></db-edit>
|
||||||
<create-table :title="tableCreateDialog.title"
|
<create-table :title="tableCreateDialog.title" :active-name="tableCreateDialog.activeName" :dbId="dbId" :db="db"
|
||||||
:active-name="tableCreateDialog.activeName"
|
:data="tableCreateDialog.data" v-model:visible="tableCreateDialog.visible" @submit-sql="onSubmitSql">
|
||||||
:dbId="dbId" :db="db"
|
</create-table>
|
||||||
:data="tableCreateDialog.data"
|
|
||||||
v-model:visible="tableCreateDialog.visible"
|
|
||||||
@submit-sql="onSubmitSql"
|
|
||||||
></create-table>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -298,6 +321,10 @@ const state = reactive({
|
|||||||
},
|
},
|
||||||
datas: [],
|
datas: [],
|
||||||
total: 0,
|
total: 0,
|
||||||
|
infoDialog: {
|
||||||
|
visible: false,
|
||||||
|
data: null as any,
|
||||||
|
},
|
||||||
showDumpInfo: false,
|
showDumpInfo: false,
|
||||||
dumpInfo: {
|
dumpInfo: {
|
||||||
id: 0,
|
id: 0,
|
||||||
@@ -355,7 +382,7 @@ const state = reactive({
|
|||||||
visible: false,
|
visible: false,
|
||||||
activeName: '1',
|
activeName: '1',
|
||||||
type: '',
|
type: '',
|
||||||
enableEditTypes:['mysql'], // 支持"编辑表"的数据库类型
|
enableEditTypes: ['mysql'], // 支持"编辑表"的数据库类型
|
||||||
data: { // 修改表时,传递修改数据
|
data: { // 修改表时,传递修改数据
|
||||||
edit: false,
|
edit: false,
|
||||||
row: {},
|
row: {},
|
||||||
@@ -378,6 +405,7 @@ const {
|
|||||||
query,
|
query,
|
||||||
datas,
|
datas,
|
||||||
total,
|
total,
|
||||||
|
infoDialog,
|
||||||
showDumpInfo,
|
showDumpInfo,
|
||||||
dumpInfo,
|
dumpInfo,
|
||||||
sqlExecLogDialog,
|
sqlExecLogDialog,
|
||||||
@@ -441,6 +469,11 @@ const handlePageChange = (curPage: number) => {
|
|||||||
search();
|
search();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const showInfo = (info: any) => {
|
||||||
|
state.infoDialog.data = info;
|
||||||
|
state.infoDialog.visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
const getTags = async () => {
|
const getTags = async () => {
|
||||||
state.tags = await tagApi.getAccountTags.request(null);
|
state.tags = await tagApi.getAccountTags.request(null);
|
||||||
};
|
};
|
||||||
@@ -589,7 +622,7 @@ const showTableInfo = async (row: any, db: string) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const onSubmitSql = async (row: {tableName: string}) => {
|
const onSubmitSql = async (row: { tableName: string }) => {
|
||||||
await openEditTable(row)
|
await openEditTable(row)
|
||||||
state.tableInfoDialog.infos = await dbApi.tableInfos.request({ id: state.dbId, db: state.db });
|
state.tableInfoDialog.infos = await dbApi.tableInfos.request({ id: state.dbId, db: state.db });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -246,7 +246,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import {onMounted, computed, toRefs, reactive, ref, watch} from 'vue';
|
import { onMounted, computed, toRefs, reactive, ref, watch } from 'vue';
|
||||||
import { dbApi } from './api';
|
import { dbApi } from './api';
|
||||||
|
|
||||||
import { format as sqlFormatter } from 'sql-formatter';
|
import { format as sqlFormatter } from 'sql-formatter';
|
||||||
@@ -408,7 +408,7 @@ const initMonacoEditor = () => {
|
|||||||
// chord
|
// chord
|
||||||
monaco.KeyMod.chord(
|
monaco.KeyMod.chord(
|
||||||
monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyR
|
monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyR
|
||||||
, 0)
|
, 0)
|
||||||
],
|
],
|
||||||
contextMenuGroupId: 'navigation',
|
contextMenuGroupId: 'navigation',
|
||||||
contextMenuOrder: 1.5,
|
contextMenuOrder: 1.5,
|
||||||
@@ -436,7 +436,7 @@ const initMonacoEditor = () => {
|
|||||||
// chord
|
// chord
|
||||||
monaco.KeyMod.chord(
|
monaco.KeyMod.chord(
|
||||||
monaco.KeyMod.CtrlCmd | monaco.KeyMod.Shift | monaco.KeyCode.KeyF
|
monaco.KeyMod.CtrlCmd | monaco.KeyMod.Shift | monaco.KeyCode.KeyF
|
||||||
,0)
|
, 0)
|
||||||
],
|
],
|
||||||
contextMenuGroupId: 'navigation',
|
contextMenuGroupId: 'navigation',
|
||||||
contextMenuOrder: 2,
|
contextMenuOrder: 2,
|
||||||
@@ -515,7 +515,7 @@ const initMonacoEditor = () => {
|
|||||||
const { tableName, tableComment } = item
|
const { tableName, tableComment } = item
|
||||||
suggestions.push({
|
suggestions.push({
|
||||||
label: {
|
label: {
|
||||||
label: tableName + ( tableComment ? ' - ' + tableComment :'' ),
|
label: tableName + (tableComment ? ' - ' + tableComment : ''),
|
||||||
description: 'table'
|
description: 'table'
|
||||||
},
|
},
|
||||||
kind: monaco.languages.CompletionItemKind.File,
|
kind: monaco.languages.CompletionItemKind.File,
|
||||||
@@ -569,7 +569,7 @@ const initMonacoEditor = () => {
|
|||||||
sqlLanguage.keywords.forEach((item: any) => {
|
sqlLanguage.keywords.forEach((item: any) => {
|
||||||
suggestions.push({
|
suggestions.push({
|
||||||
label: {
|
label: {
|
||||||
label:item,
|
label: item,
|
||||||
description: 'keyword'
|
description: 'keyword'
|
||||||
},
|
},
|
||||||
kind: monaco.languages.CompletionItemKind.Keyword,
|
kind: monaco.languages.CompletionItemKind.Keyword,
|
||||||
@@ -581,7 +581,7 @@ const initMonacoEditor = () => {
|
|||||||
sqlLanguage.operators.forEach((item: any) => {
|
sqlLanguage.operators.forEach((item: any) => {
|
||||||
suggestions.push({
|
suggestions.push({
|
||||||
label: {
|
label: {
|
||||||
label:item,
|
label: item,
|
||||||
description: 'opt'
|
description: 'opt'
|
||||||
},
|
},
|
||||||
kind: monaco.languages.CompletionItemKind.Operator,
|
kind: monaco.languages.CompletionItemKind.Operator,
|
||||||
@@ -593,7 +593,7 @@ const initMonacoEditor = () => {
|
|||||||
sqlLanguage.builtinFunctions.forEach((item: any) => {
|
sqlLanguage.builtinFunctions.forEach((item: any) => {
|
||||||
suggestions.push({
|
suggestions.push({
|
||||||
label: {
|
label: {
|
||||||
label:item,
|
label: item,
|
||||||
description: 'func'
|
description: 'func'
|
||||||
},
|
},
|
||||||
kind: monaco.languages.CompletionItemKind.Function,
|
kind: monaco.languages.CompletionItemKind.Function,
|
||||||
@@ -605,7 +605,7 @@ const initMonacoEditor = () => {
|
|||||||
sqlLanguage.builtinVariables.forEach((item: string) => {
|
sqlLanguage.builtinVariables.forEach((item: string) => {
|
||||||
suggestions.push({
|
suggestions.push({
|
||||||
label: {
|
label: {
|
||||||
label:item,
|
label: item,
|
||||||
description: 'var'
|
description: 'var'
|
||||||
},
|
},
|
||||||
kind: monaco.languages.CompletionItemKind.Variable,
|
kind: monaco.languages.CompletionItemKind.Variable,
|
||||||
@@ -632,7 +632,7 @@ const initMonacoEditor = () => {
|
|||||||
const { tableName, tableComment } = tableMeta
|
const { tableName, tableComment } = tableMeta
|
||||||
suggestions.push({
|
suggestions.push({
|
||||||
label: {
|
label: {
|
||||||
label: tableName + ' - ' + tableComment,
|
label: tableName + ' - ' + tableComment,
|
||||||
description: 'table'
|
description: 'table'
|
||||||
},
|
},
|
||||||
kind: monaco.languages.CompletionItemKind.File,
|
kind: monaco.languages.CompletionItemKind.File,
|
||||||
@@ -699,7 +699,7 @@ select * from invisit v where`.match(/(join|from)\s+(\w*-?\w*\.?\w+)\s*(as)?\s*(
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
self.completionItemProvider?.dispose()
|
self.completionItemProvider?.dispose()
|
||||||
setHeight();
|
setHeight();
|
||||||
initMonacoEditor();
|
initMonacoEditor();
|
||||||
// 监听浏览器窗口大小变化,更新对应组件高度
|
// 监听浏览器窗口大小变化,更新对应组件高度
|
||||||
@@ -1513,8 +1513,8 @@ const addRow = async () => {
|
|||||||
*/
|
*/
|
||||||
const formatSql = () => {
|
const formatSql = () => {
|
||||||
let selection = monacoEditor.getSelection()
|
let selection = monacoEditor.getSelection()
|
||||||
if(!selection){
|
if (!selection) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let sql = monacoEditor.getModel()?.getValueInRange(selection)
|
let sql = monacoEditor.getModel()?.getValueInRange(selection)
|
||||||
// 有选中sql则格式化并替换选中sql, 否则格式化编辑器所有内容
|
// 有选中sql则格式化并替换选中sql, 否则格式化编辑器所有内容
|
||||||
@@ -1530,8 +1530,8 @@ const formatSql = () => {
|
|||||||
*/
|
*/
|
||||||
const replaceSelection = (str: string, selection: any) => {
|
const replaceSelection = (str: string, selection: any) => {
|
||||||
const model = monacoEditor.getModel();
|
const model = monacoEditor.getModel();
|
||||||
if(!model){
|
if (!model) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!selection) {
|
if (!selection) {
|
||||||
model.setValue(str);
|
model.setValue(str);
|
||||||
|
|||||||
@@ -49,12 +49,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="username" label="用户名" min-width="90"></el-table-column>
|
<el-table-column prop="username" label="用户名" min-width="90"></el-table-column>
|
||||||
<el-table-column prop="remark" label="备注" min-width="250" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="remark" label="备注" min-width="250" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="createTime" label="创建时间" min-width="165">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ dateFormat(scope.row.createTime) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="creator" label="创建者" min-width="80"></el-table-column>
|
|
||||||
<el-table-column label="操作" min-width="235" fixed="right">
|
<el-table-column label="操作" min-width="235" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-auth="'machine:terminal'">
|
<span v-auth="'machine:terminal'">
|
||||||
@@ -82,6 +77,11 @@
|
|||||||
</span>
|
</span>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu>
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item>
|
||||||
|
<el-link @click="showInfo(scope.row)" plain :underline="false" size="small">详情
|
||||||
|
</el-link>
|
||||||
|
</el-dropdown-item>
|
||||||
|
|
||||||
<el-dropdown-item>
|
<el-dropdown-item>
|
||||||
<el-link @click="showProcess(scope.row)" :disabled="scope.row.status == -1"
|
<el-link @click="showProcess(scope.row)" :disabled="scope.row.status == -1"
|
||||||
plain :underline="false" size="small">进程</el-link>
|
plain :underline="false" size="small">进程</el-link>
|
||||||
@@ -110,6 +110,40 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
<el-dialog v-model="infoDialog.visible">
|
||||||
|
<el-descriptions title="详情" :column="3" border>
|
||||||
|
<el-descriptions-item :span="1.5" label="机器id">{{ infoDialog.data.id }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1.5" label="名称">{{ infoDialog.data.name }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="3" label="标签路径">{{ infoDialog.data.tagPath }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2" label="IP">{{ infoDialog.data.ip }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" label="端口">{{ infoDialog.data.port }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2" label="用户名">{{ infoDialog.data.username }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" label="认证方式">{{ infoDialog.data.authMethod == 1 ? 'Password' :
|
||||||
|
'PublicKey'
|
||||||
|
}}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="3" label="备注">{{ infoDialog.data.remark }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="1.5" label="SSH隧道">{{ infoDialog.data.enableSshTunnel == 1 ? '是' : '否' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1.5" label="终端回放">{{ infoDialog.data.enableRecorder == 1 ? '是' : '否' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2" label="创建时间">{{ dateFormat(infoDialog.data.createTime) }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" label="创建者">{{ infoDialog.data.creator }}</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2" label="更新时间">{{ dateFormat(infoDialog.data.updateTime) }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" label="修改者">{{ infoDialog.data.modifier }}</el-descriptions-item>
|
||||||
|
|
||||||
|
</el-descriptions>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
<machine-edit :title="machineEditDialog.title" v-model:visible="machineEditDialog.visible"
|
<machine-edit :title="machineEditDialog.title" v-model:visible="machineEditDialog.visible"
|
||||||
v-model:machine="machineEditDialog.data" @valChange="submitSuccess"></machine-edit>
|
v-model:machine="machineEditDialog.data" @valChange="submitSuccess"></machine-edit>
|
||||||
|
|
||||||
@@ -158,6 +192,10 @@ const state = reactive({
|
|||||||
list: [],
|
list: [],
|
||||||
total: 10,
|
total: 10,
|
||||||
},
|
},
|
||||||
|
infoDialog: {
|
||||||
|
visible: false,
|
||||||
|
data: null as any,
|
||||||
|
},
|
||||||
// 当前选中数据id
|
// 当前选中数据id
|
||||||
currentId: 0,
|
currentId: 0,
|
||||||
currentData: null,
|
currentData: null,
|
||||||
@@ -197,6 +235,7 @@ const {
|
|||||||
tags,
|
tags,
|
||||||
params,
|
params,
|
||||||
data,
|
data,
|
||||||
|
infoDialog,
|
||||||
currentId,
|
currentId,
|
||||||
currentData,
|
currentData,
|
||||||
serviceDialog,
|
serviceDialog,
|
||||||
@@ -318,6 +357,11 @@ const handlePageChange = (curPage: number) => {
|
|||||||
search();
|
search();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const showInfo = (info: any) => {
|
||||||
|
state.infoDialog.data = info;
|
||||||
|
state.infoDialog.visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
const showProcess = (row: any) => {
|
const showProcess = (row: any) => {
|
||||||
state.processDialog.machineId = row.id;
|
state.processDialog.machineId = row.id;
|
||||||
state.processDialog.visible = true;
|
state.processDialog.visible = true;
|
||||||
|
|||||||
@@ -25,19 +25,18 @@
|
|||||||
<el-table-column prop="host" label="host:port" min-width="150" show-overflow-tooltip> </el-table-column>
|
<el-table-column prop="host" label="host:port" min-width="150" show-overflow-tooltip> </el-table-column>
|
||||||
<el-table-column prop="mode" label="mode" min-width="100"></el-table-column>
|
<el-table-column prop="mode" label="mode" min-width="100"></el-table-column>
|
||||||
<el-table-column prop="remark" label="备注" min-width="120" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="remark" label="备注" min-width="120" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="createTime" label="创建时间" min-width="160">
|
|
||||||
<template #default="scope">
|
|
||||||
{{ dateFormat(scope.row.createTime) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="creator" label="创建人" min-width="100"></el-table-column>
|
|
||||||
<el-table-column label="更多" min-width="155" fixed="right">
|
<el-table-column label="更多" min-width="155" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
|
<el-link @click="showDetail(scope.row)" :underline="false">详情</el-link>
|
||||||
|
<el-divider direction="vertical" border-style="dashed" />
|
||||||
|
|
||||||
<el-link v-if="scope.row.mode === 'standalone' || scope.row.mode === 'sentinel'" type="primary"
|
<el-link v-if="scope.row.mode === 'standalone' || scope.row.mode === 'sentinel'" type="primary"
|
||||||
@click="showInfoDialog(scope.row)" :underline="false">单机信息</el-link>
|
@click="showInfoDialog(scope.row)" :underline="false">单机信息</el-link>
|
||||||
<el-link @click="onShowClusterInfo(scope.row)" v-if="scope.row.mode === 'cluster'"
|
<el-link @click="onShowClusterInfo(scope.row)" v-if="scope.row.mode === 'cluster'"
|
||||||
type="success" :underline="false">集群信息</el-link>
|
type="primary" :underline="false">集群信息</el-link>
|
||||||
<el-divider direction="vertical" border-style="dashed" />
|
<el-divider direction="vertical" border-style="dashed" />
|
||||||
|
|
||||||
<el-link @click="openDataOpt(scope.row)" type="success" :underline="false">数据操作</el-link>
|
<el-link @click="openDataOpt(scope.row)" type="success" :underline="false">数据操作</el-link>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -78,8 +77,9 @@
|
|||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag @click="showInfoDialog({ id: clusterInfoDialog.redisId, ip: scope.row.ip })" effect="plain"
|
<el-tag @click="showInfoDialog({ id: clusterInfoDialog.redisId, ip: scope.row.ip })"
|
||||||
type="success" size="small" style="cursor: pointer">{{ scope.row.ip }}</el-tag>
|
effect="plain" type="success" size="small" style="cursor: pointer">{{ scope.row.ip }}
|
||||||
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="flags" label="flags" min-width="110"></el-table-column>
|
<el-table-column prop="flags" label="flags" min-width="110"></el-table-column>
|
||||||
@@ -121,6 +121,31 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog v-model="detailDialog.visible">
|
||||||
|
<el-descriptions title="详情" :column="3" border>
|
||||||
|
<el-descriptions-item :span="1.5" label="id">{{ detailDialog.data.id }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1.5" label="名称">{{ detailDialog.data.name }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="3" label="标签路径">{{ detailDialog.data.tagPath }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="3" label="主机">{{ detailDialog.data.host }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="3" label="库">{{ detailDialog.data.db }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="3" label="备注">{{ detailDialog.data.remark }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="3" label="SSH隧道">{{ detailDialog.data.enableSshTunnel == 1 ? '是' : '否' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2" label="创建时间">{{ dateFormat(detailDialog.data.createTime) }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" label="创建者">{{ detailDialog.data.creator }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2" label="更新时间">{{ dateFormat(detailDialog.data.updateTime) }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item :span="1" label="修改者">{{ detailDialog.data.modifier }}</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
<redis-edit @val-change="valChange" :tags="tags" :title="redisEditDialog.title"
|
<redis-edit @val-change="valChange" :tags="tags" :title="redisEditDialog.title"
|
||||||
v-model:visible="redisEditDialog.visible" v-model:redis="redisEditDialog.data"></redis-edit>
|
v-model:visible="redisEditDialog.visible" v-model:redis="redisEditDialog.data"></redis-edit>
|
||||||
</div>
|
</div>
|
||||||
@@ -149,6 +174,10 @@ const state = reactive({
|
|||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
clusterId: null,
|
clusterId: null,
|
||||||
},
|
},
|
||||||
|
detailDialog: {
|
||||||
|
visible: false,
|
||||||
|
data: null as any,
|
||||||
|
},
|
||||||
clusterInfoDialog: {
|
clusterInfoDialog: {
|
||||||
visible: false,
|
visible: false,
|
||||||
redisId: 0,
|
redisId: 0,
|
||||||
@@ -179,6 +208,7 @@ const {
|
|||||||
total,
|
total,
|
||||||
currentId,
|
currentId,
|
||||||
query,
|
query,
|
||||||
|
detailDialog,
|
||||||
clusterInfoDialog,
|
clusterInfoDialog,
|
||||||
infoDialog,
|
infoDialog,
|
||||||
redisEditDialog,
|
redisEditDialog,
|
||||||
@@ -193,6 +223,11 @@ const handlePageChange = (curPage: number) => {
|
|||||||
search();
|
search();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const showDetail = (detail: any) => {
|
||||||
|
state.detailDialog.data = detail;
|
||||||
|
state.detailDialog.visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
const choose = (item: any) => {
|
const choose = (item: any) => {
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -372,23 +372,23 @@ const saveTags = async () => {
|
|||||||
closeTagDialog();
|
closeTagDialog();
|
||||||
};
|
};
|
||||||
|
|
||||||
const tagTreeNodeCheck = (data: any, checkInfo: any) => {
|
const tagTreeNodeCheck = () => {
|
||||||
const node = tagTreeRef.value.getNode(data.id);
|
// const node = tagTreeRef.value.getNode(data.id);
|
||||||
console.log(node);
|
// console.log(node);
|
||||||
// state.showTagDialog.tagTreeTeams = [16]
|
// // state.showTagDialog.tagTreeTeams = [16]
|
||||||
if (node.checked) {
|
// if (node.checked) {
|
||||||
if (node.parent) {
|
// if (node.parent) {
|
||||||
console.log(node.parent);
|
// console.log(node.parent);
|
||||||
// removeCheckedTagId(node.parent.key);
|
// // removeCheckedTagId(node.parent.key);
|
||||||
tagTreeRef.value.setChecked(node.parent, false, false);
|
// tagTreeRef.value.setChecked(node.parent, false, false);
|
||||||
}
|
// }
|
||||||
// // parentNode = node.parent
|
// // // parentNode = node.parent
|
||||||
// for (let parentNode of node.parent) {
|
// // for (let parentNode of node.parent) {
|
||||||
// parentNode.setChecked(false);
|
// // parentNode.setChecked(false);
|
||||||
// }
|
// // }
|
||||||
}
|
// }
|
||||||
console.log(data);
|
// console.log(data);
|
||||||
console.log(checkInfo);
|
// console.log(checkInfo);
|
||||||
};
|
};
|
||||||
|
|
||||||
// function removeCheckedTagId(id: any) {
|
// function removeCheckedTagId(id: any) {
|
||||||
|
|||||||
@@ -19,7 +19,12 @@
|
|||||||
resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz"
|
resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz"
|
||||||
integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==
|
integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==
|
||||||
|
|
||||||
"@element-plus/icons-vue@^2.0.6", "@element-plus/icons-vue@^2.0.9":
|
"@element-plus/icons-vue@^2.0.10":
|
||||||
|
version "2.0.10"
|
||||||
|
resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz#60808d613c3dbdad025577022be8a972739ade21"
|
||||||
|
integrity sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==
|
||||||
|
|
||||||
|
"@element-plus/icons-vue@^2.0.6":
|
||||||
version "2.0.9"
|
version "2.0.9"
|
||||||
resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.9.tgz"
|
resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.9.tgz"
|
||||||
integrity sha512-okdrwiVeKBmW41Hkl0eMrXDjzJwhQMuKiBOu17rOszqM+LS/yBYpNQNV5Jvoh06Wc+89fMmb/uhzf8NZuDuUaQ==
|
integrity sha512-okdrwiVeKBmW41Hkl0eMrXDjzJwhQMuKiBOu17rOszqM+LS/yBYpNQNV5Jvoh06Wc+89fMmb/uhzf8NZuDuUaQ==
|
||||||
@@ -223,13 +228,13 @@
|
|||||||
estree-walker "^2.0.2"
|
estree-walker "^2.0.2"
|
||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
|
|
||||||
"@vue/compiler-core@3.2.41":
|
"@vue/compiler-core@3.2.45":
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz#d9311207d96f6ebd5f4660be129fb99f01ddb41b"
|
||||||
integrity sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==
|
integrity sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/parser" "^7.16.4"
|
"@babel/parser" "^7.16.4"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.45"
|
||||||
estree-walker "^2.0.2"
|
estree-walker "^2.0.2"
|
||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
|
|
||||||
@@ -241,25 +246,25 @@
|
|||||||
"@vue/compiler-core" "3.2.39"
|
"@vue/compiler-core" "3.2.39"
|
||||||
"@vue/shared" "3.2.39"
|
"@vue/shared" "3.2.39"
|
||||||
|
|
||||||
"@vue/compiler-dom@3.2.41":
|
"@vue/compiler-dom@3.2.45":
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz#c43cc15e50da62ecc16a42f2622d25dc5fd97dce"
|
||||||
integrity sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==
|
integrity sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/compiler-core" "3.2.41"
|
"@vue/compiler-core" "3.2.45"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.45"
|
||||||
|
|
||||||
"@vue/compiler-sfc@3.2.41":
|
"@vue/compiler-sfc@3.2.45":
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz#7f7989cc04ec9e7c55acd406827a2c4e96872c70"
|
||||||
integrity sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==
|
integrity sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/parser" "^7.16.4"
|
"@babel/parser" "^7.16.4"
|
||||||
"@vue/compiler-core" "3.2.41"
|
"@vue/compiler-core" "3.2.45"
|
||||||
"@vue/compiler-dom" "3.2.41"
|
"@vue/compiler-dom" "3.2.45"
|
||||||
"@vue/compiler-ssr" "3.2.41"
|
"@vue/compiler-ssr" "3.2.45"
|
||||||
"@vue/reactivity-transform" "3.2.41"
|
"@vue/reactivity-transform" "3.2.45"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.45"
|
||||||
estree-walker "^2.0.2"
|
estree-walker "^2.0.2"
|
||||||
magic-string "^0.25.7"
|
magic-string "^0.25.7"
|
||||||
postcss "^8.1.10"
|
postcss "^8.1.10"
|
||||||
@@ -289,13 +294,13 @@
|
|||||||
"@vue/compiler-dom" "3.2.39"
|
"@vue/compiler-dom" "3.2.39"
|
||||||
"@vue/shared" "3.2.39"
|
"@vue/shared" "3.2.39"
|
||||||
|
|
||||||
"@vue/compiler-ssr@3.2.41":
|
"@vue/compiler-ssr@3.2.45":
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz#bd20604b6e64ea15344d5b6278c4141191c983b2"
|
||||||
integrity sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==
|
integrity sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/compiler-dom" "3.2.41"
|
"@vue/compiler-dom" "3.2.45"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.45"
|
||||||
|
|
||||||
"@vue/devtools-api@^6.0.0-beta.11":
|
"@vue/devtools-api@^6.0.0-beta.11":
|
||||||
version "6.0.0-beta.20.1"
|
version "6.0.0-beta.20.1"
|
||||||
@@ -318,58 +323,58 @@
|
|||||||
estree-walker "^2.0.2"
|
estree-walker "^2.0.2"
|
||||||
magic-string "^0.25.7"
|
magic-string "^0.25.7"
|
||||||
|
|
||||||
"@vue/reactivity-transform@3.2.41":
|
"@vue/reactivity-transform@3.2.45":
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz#07ac83b8138550c83dfb50db43cde1e0e5e8124d"
|
||||||
integrity sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==
|
integrity sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/parser" "^7.16.4"
|
"@babel/parser" "^7.16.4"
|
||||||
"@vue/compiler-core" "3.2.41"
|
"@vue/compiler-core" "3.2.45"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.45"
|
||||||
estree-walker "^2.0.2"
|
estree-walker "^2.0.2"
|
||||||
magic-string "^0.25.7"
|
magic-string "^0.25.7"
|
||||||
|
|
||||||
"@vue/reactivity@3.2.41":
|
"@vue/reactivity@3.2.45":
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz#412a45b574de601be5a4a5d9a8cbd4dee4662ff0"
|
||||||
integrity sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==
|
integrity sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.45"
|
||||||
|
|
||||||
"@vue/runtime-core@3.2.41":
|
"@vue/runtime-core@3.2.45":
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz#7ad7ef9b2519d41062a30c6fa001ec43ac549c7f"
|
||||||
integrity sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==
|
integrity sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/reactivity" "3.2.41"
|
"@vue/reactivity" "3.2.45"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.45"
|
||||||
|
|
||||||
"@vue/runtime-dom@3.2.41":
|
"@vue/runtime-dom@3.2.45":
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz#1a2ef6ee2ad876206fbbe2a884554bba2d0faf59"
|
||||||
integrity sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==
|
integrity sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/runtime-core" "3.2.41"
|
"@vue/runtime-core" "3.2.45"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.45"
|
||||||
csstype "^2.6.8"
|
csstype "^2.6.8"
|
||||||
|
|
||||||
"@vue/server-renderer@3.2.41":
|
"@vue/server-renderer@3.2.45":
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz#ca9306a0c12b0530a1a250e44f4a0abac6b81f3f"
|
||||||
integrity sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==
|
integrity sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/compiler-ssr" "3.2.41"
|
"@vue/compiler-ssr" "3.2.45"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.45"
|
||||||
|
|
||||||
"@vue/shared@3.2.39":
|
"@vue/shared@3.2.39":
|
||||||
version "3.2.39"
|
version "3.2.39"
|
||||||
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.39.tgz"
|
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.39.tgz"
|
||||||
integrity sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==
|
integrity sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==
|
||||||
|
|
||||||
"@vue/shared@3.2.41":
|
"@vue/shared@3.2.45":
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2"
|
||||||
integrity sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==
|
integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==
|
||||||
|
|
||||||
"@vueuse/core@^9.1.0":
|
"@vueuse/core@^9.1.0":
|
||||||
version "9.2.0"
|
version "9.2.0"
|
||||||
@@ -657,10 +662,10 @@ echarts@^5.3.3:
|
|||||||
tslib "2.3.0"
|
tslib "2.3.0"
|
||||||
zrender "5.3.2"
|
zrender "5.3.2"
|
||||||
|
|
||||||
element-plus@^2.2.20:
|
element-plus@^2.2.22:
|
||||||
version "2.2.20"
|
version "2.2.22"
|
||||||
resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.20.tgz"
|
resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.22.tgz#6374a263ecdcf0a820c3d2e926bb28102542e254"
|
||||||
integrity sha512-ludShd3f5kNRY4FLzeoNitLcwZ4qs2M/zwKeyeE7rUzZJAQ0BZtcT3SvZoEoBLmgxw9jHoonl4WIwon4UzhyRA==
|
integrity sha512-gg2g2WOMNpWf0wGesymUvTV0VZDF/4khQKroSNeCV/vWJ/cqssPYdtqfGxTiFRt/f+JpyFkV7O1mo0yzMCzrBg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@ctrl/tinycolor" "^3.4.1"
|
"@ctrl/tinycolor" "^3.4.1"
|
||||||
"@element-plus/icons-vue" "^2.0.6"
|
"@element-plus/icons-vue" "^2.0.6"
|
||||||
@@ -1751,16 +1756,16 @@ vue-router@^4.1.6:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@vue/devtools-api" "^6.4.5"
|
"@vue/devtools-api" "^6.4.5"
|
||||||
|
|
||||||
vue@^3.2.41:
|
vue@^3.2.45:
|
||||||
version "3.2.41"
|
version "3.2.45"
|
||||||
resolved "https://registry.npmmirror.com/vue/-/vue-3.2.41.tgz"
|
resolved "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz#94a116784447eb7dbd892167784619fef379b3c8"
|
||||||
integrity sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==
|
integrity sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/compiler-dom" "3.2.41"
|
"@vue/compiler-dom" "3.2.45"
|
||||||
"@vue/compiler-sfc" "3.2.41"
|
"@vue/compiler-sfc" "3.2.45"
|
||||||
"@vue/runtime-dom" "3.2.41"
|
"@vue/runtime-dom" "3.2.45"
|
||||||
"@vue/server-renderer" "3.2.41"
|
"@vue/server-renderer" "3.2.45"
|
||||||
"@vue/shared" "3.2.41"
|
"@vue/shared" "3.2.45"
|
||||||
|
|
||||||
vuex@^4.0.2:
|
vuex@^4.0.2:
|
||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ func (d *Db) ExecSql(rc *ctx.ReqCtx) {
|
|||||||
dbInstance := d.DbApp.GetDbInstance(id, db)
|
dbInstance := d.DbApp.GetDbInstance(id, db)
|
||||||
biz.ErrIsNilAppendErr(d.TagApp.CanAccess(rc.LoginAccount.Id, dbInstance.Info.TagPath), "%s")
|
biz.ErrIsNilAppendErr(d.TagApp.CanAccess(rc.LoginAccount.Id, dbInstance.Info.TagPath), "%s")
|
||||||
|
|
||||||
rc.ReqParam = fmt.Sprintf("%s -> sql: %s", dbInstance.Info.GetLogDesc(), form.Sql)
|
rc.ReqParam = fmt.Sprintf("%s -> %s", dbInstance.Info.GetLogDesc(), form.Sql)
|
||||||
biz.NotEmpty(form.Sql, "sql不能为空")
|
biz.NotEmpty(form.Sql, "sql不能为空")
|
||||||
|
|
||||||
// 去除前后空格及换行符
|
// 去除前后空格及换行符
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ type SelectDataDbVO struct {
|
|||||||
Creator *string `json:"creator"`
|
Creator *string `json:"creator"`
|
||||||
CreatorId *int64 `json:"creatorId"`
|
CreatorId *int64 `json:"creatorId"`
|
||||||
|
|
||||||
|
UpdateTime *time.Time `json:"updateTime"`
|
||||||
|
Modifier *string `json:"modifier"`
|
||||||
|
ModifierId *int64 `json:"modifierId"`
|
||||||
|
|
||||||
EnableSshTunnel *int8 `json:"enableSshTunnel"`
|
EnableSshTunnel *int8 `json:"enableSshTunnel"`
|
||||||
SshTunnelMachineId *uint64 `json:"sshTunnelMachineId"`
|
SshTunnelMachineId *uint64 `json:"sshTunnelMachineId"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ type Redis struct {
|
|||||||
CreateTime *time.Time `json:"createTime"`
|
CreateTime *time.Time `json:"createTime"`
|
||||||
Creator *string `json:"creator"`
|
Creator *string `json:"creator"`
|
||||||
CreatorId *int64 `json:"creatorId"`
|
CreatorId *int64 `json:"creatorId"`
|
||||||
|
UpdateTime *time.Time `json:"updateTime"`
|
||||||
|
Modifier *string `json:"modifier"`
|
||||||
|
ModifierId *int64 `json:"modifierId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Keys struct {
|
type Keys struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user