This commit is contained in:
Jane
2023-12-28 11:12:04 +08:00
parent 7e763d9ba2
commit 46259b98cc
57 changed files with 1324 additions and 875 deletions

View File

@@ -25,7 +25,7 @@
<el-tooltip content="密度" effect="dark" placement="top">
<el-dropdown trigger="click" @command="handleCommand">
<el-button circle size="mini">
<svg-icon class-name="size-icon" icon-class="colum-height" />
<i class="el-icon-s-grid"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="medium">正常</el-dropdown-item>
@@ -36,7 +36,7 @@
</el-tooltip>
<el-tooltip content="刷新" effect="dark" placement="top">
<el-button circle size="mini" @click="handleRefresh">
<svg-icon class-name="size-icon" icon-class="shuaxin" />
<i class="el-icon-refresh"></i>
</el-button>
</el-tooltip>
<el-tooltip content="列设置" effect="dark" placement="top">
@@ -50,7 +50,7 @@
</el-checkbox-group>
<span slot="reference">
<el-button circle size="mini">
<svg-icon class-name="size-icon" icon-class="shezhi" />
<i class="el-icon-setting"></i>
</el-button>
</span>
</el-popover>

View File

@@ -1,197 +1,22 @@
<template>
<div class="app-container">
<el-row :gutter="20">
<el-col :span="6">
<el-card class="box-card tree-wrapper" shadow="always">
<el-tree
ref="leftTree"
:data="leftTreeOptions"
node-key="id"
empty-text="加载中请稍后"
:props="leftTreeDefaultProps"
default-expand-all
highlight-current
:expand-on-click-node="false"
@node-click="handleNodeClick"
>
<span slot-scope="{ node, data }" class="custom-tree-node">
<span><i v-if="node.level === 1" class="iconfont icon-zuzhi tree-folder" />{{ node.label }}</span>
</span>
</el-tree>
</el-card>
</el-col>
<el-col :span="18">
<el-card class="box-card tree-wrapper" shadow="always">
<el-row type="flex" justify="space-between">
<el-col :span="12">
<el-button-group>
<el-button
v-hasPerm="['metadata:dataauthorize:refresh']"
type="warning"
icon="el-icon-refresh"
size="mini"
@click="handleCacheRefresh"
>刷新缓存</el-button>
</el-button-group>
</el-col>
<el-col :span="12">
<el-button-group style="float: right;">
<template v-if="showBtns">
<el-button v-if="disabled" v-hasPerm="['metadata:dataauthorize:edit']" size="mini" round @click="disabled = false">修改</el-button>
<el-button v-else v-hasPerm="['metadata:dataauthorize:edit']" size="mini" round @click="handSubmit">保存</el-button>
</template>
</el-button-group>
</el-col>
</el-row>
<el-divider />
<el-form ref="form" :model="form" :disabled="disabled">
<el-tree
ref="rightTree"
:data="rightTreeOptions"
show-checkbox
accordion
node-key="id"
empty-text="加载中请稍后"
:props="rightTreeDefaultProps"
highlight-current
:expand-on-click-node="false"
:check-strictly="checkStrictly"
>
<span slot-scope="{ node, data }" class="custom-tree-node">
<span>
<i v-if="node.level === 1" class="iconfont icon-shujuku tree-folder" />
<i v-else-if="node.level === 2" class="iconfont icon-shujubiao tree-folder" />
<i v-else-if="node.level === 3" class="iconfont icon-shujuziduan tree-folder" />
{{ data.code ? (data.name ? data.code + '(' + data.name + ')' : data.code) : data.name }}
</span>
</span>
</el-tree>
</el-form>
</el-card>
</el-col>
</el-row>
<iframe src="http://192.168.1.217:8001/modelMonitor/dataextension" width="100%" height="850px" frameborder="0" />
</div>
</template>
<script>
import { listRole } from '@/api/systemMarket/role'
import { getDataMetadataTree } from '@/api/metadata/datacolumn'
import { getAuthorizedMetadata, metadataAuthorize, refreshAuthorize } from '@/api/metadata/dataauthorize'
export default {
name: 'DataAuthorize',
data() {
return {
tableHeight: document.body.offsetHeight - 310 + 'px',
// 左侧树
leftTreeOptions: [],
leftTreeDefaultProps: {
children: 'children',
label: 'roleName'
},
// 右侧树
rightTreeOptions: [],
rightTreeDefaultProps: {
children: 'children',
label: 'label'
},
checkStrictly: false,
form: {},
disabled: true,
showBtns: false,
btnSubmitEnable: false
}
},
created() {
this.getLeftTree()
this.getRightTree()
},
methods: {
getLeftTree() {
listRole().then(response => {
if (response.success) {
const { data } = response
const tree = {}
tree.roleName = '角色组'
tree.children = data
this.leftTreeOptions = []
this.leftTreeOptions.push(tree)
}
})
},
handleNodeClick(data) {
if (data.id) {
this.form.roleId = data.id
getAuthorizedMetadata(data.id).then(response => {
if (response.success) {
this.$refs.rightTree.setCheckedKeys([])
const checkedKeys = response.data || []
if (checkedKeys && checkedKeys.length > 0) {
this.checkStrictly = true
this.$nextTick(() => {
this.$refs.rightTree.setCheckedKeys(checkedKeys)
this.checkStrictly = false
})
}
this.showBtns = true
}
})
}
},
getRightTree() {
getDataMetadataTree('column').then(response => {
if (response.success) {
const { data } = response
this.rightTreeOptions = data
}
})
},
handSubmit() {
const data = []
const checkedNodes = this.$refs.rightTree.getCheckedNodes(false, true)
checkedNodes.forEach((item, index, arr) => {
const obj = {}
obj.objectId = item.id
obj.roleId = this.form.roleId
obj.objectType = item.type
data.push(obj)
})
metadataAuthorize({ roleId: this.form.roleId, authorizeDataList: data }).then(response => {
if (response.success) {
this.$message.success('保存成功')
this.disabled = true
}
})
},
handleCacheRefresh() {
refreshAuthorize().then(response => {
if (response.success) {
this.$message.success('刷新缓存成功')
} else {
this.$message.error('刷新缓存失败')
}
})
}
}
}
</script>
<style lang="scss" scoped>
.el-card ::v-deep .el-card__body {
height: calc(100vh - 170px);
}
.tree-wrapper {
overflow-y: auto;
::v-deep .custom-tree-node {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 14px;
.tree-folder {
margin-right: 5px;
color: #f6cf07;
}
}
}
</style>

View File

@@ -48,7 +48,7 @@
<el-tooltip content="密度" effect="dark" placement="top">
<el-dropdown trigger="click" @command="handleCommand">
<el-button circle size="mini">
<svg-icon class-name="size-icon" icon-class="colum-height" />
<i class="el-icon-s-grid"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="medium">正常</el-dropdown-item>
@@ -59,7 +59,7 @@
</el-tooltip>
<el-tooltip content="刷新" effect="dark" placement="top">
<el-button circle size="mini" @click="handleRefresh">
<svg-icon class-name="size-icon" icon-class="shuaxin" />
<i class="el-icon-refresh"></i>
</el-button>
</el-tooltip>
<el-tooltip content="列设置" effect="dark" placement="top">
@@ -76,7 +76,7 @@
</el-checkbox-group>
<span slot="reference">
<el-button circle size="mini">
<svg-icon class-name="size-icon" icon-class="shezhi" />
<i class="el-icon-setting"></i>
</el-button>
</span>
</el-popover>

View File

@@ -3,66 +3,146 @@
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button v-if="active == 2" v-hasPerm="['metadata:datasource:add']" type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
<el-button v-if="active == 1" size="mini" type="primary" @click="handleNextStep">下一步</el-button>
<el-button v-if="active == 2" size="mini" type="primary" @click="handleLastStep">上一步</el-button>
<el-button v-if="active == 3" type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
<el-button v-if="active != 3" size="mini" type="primary" @click="handleNextStep">下一步</el-button>
<el-button v-if="active != 1" size="mini" type="primary" @click="handleLastStep">上一步</el-button>
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
</el-button-group>
</div>
<div class="body-wrapper">
<el-steps :active="active" finish-status="success" align-center>
<el-step title="数据源信息" />
<el-step title="连接信息" />
<el-step title="填写数据源信息" />
<el-step title="选择数据库类型" />
<el-step title="填写连接信息" />
</el-steps>
<el-form v-if="active == 1" ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="数据源类型" prop="dbType">
<el-select v-model="form.dbType">
<el-option
v-for="item in dbTypeOptions"
:key="item.id"
:label="item.itemValue"
:value="item.itemText"
/>
</el-select>
</el-form-item>
<el-form-item label="数据源名称" prop="sourceName">
<el-input v-model="form.sourceName" placeholder="请输入数据源名称" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{ dict.itemValue }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
<div style="padding: 20px 200px">
<el-form-item label="数据源名称" prop="sourceName">
<el-input v-model="form.sourceName" placeholder="请输入数据源名称" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{ dict.itemValue }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</div>
</el-form>
<el-form v-if="active == 2" ref="form2" :model="form2" :rules="rules2" label-width="80px">
<el-form-item label="主机" prop="host">
<el-input v-model="form2.host" placeholder="请输入主机" />
</el-form-item>
<el-form-item label="端口" prop="port">
<el-input v-model="form2.port" placeholder="请输入端口" />
</el-form-item>
<el-form-item v-if="form.dbType === '3' || form.dbType === '4'" label="服务名" prop="sid">
<el-input v-model="form2.sid" placeholder="请输入服务名" />
</el-form-item>
<el-form-item v-if="form.dbType !== '3' && form.dbType !== '4'" label="数据库" prop="dbName">
<el-input v-model="form2.dbName" placeholder="请输入数据库" />
</el-form-item>
<el-form-item label="用户名" prop="username">
<el-input v-model="form2.username" placeholder="请输入用户名" />
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="form2.password" placeholder="请输入密码" />
</el-form-item>
<el-form-item>
<el-button v-hasPerm="['metadata:datasource:connect']" size="mini" type="primary" @click="handleCheckConnection">连通性检测</el-button>
</el-form-item>
<el-form v-if="active == 2" ref="form" :model="form" :rules="rules" label-width="120px">
<div class="modellist" style="padding: 20px 200px">
<div :class="[form.dbType =='1' ? 'choosedDbType' : '','list']" @click="chooseDbType('1')">
<div class="limg"><img :src="databaseImg.imgMySQL"></div>
<div class="ltitle">
<el-tooltip content="mysql数据库" placement="bottom" effect="light">
<p class="title">mysql</p>
</el-tooltip>
</div>
</div>
<div :class="[form.dbType =='2' ? 'choosedDbType' : '','list']" @click="chooseDbType('2')">
<div class="limg"><img :src="databaseImg.imgMariaDB"></div>
<div class="ltitle">
<el-tooltip content="mariadb-3.0.3数据库" placement="bottom" effect="light">
<p class="title">mariadb-3.0.3</p>
</el-tooltip>
</div>
</div>
<div :class="[form.dbType =='3' ? 'choosedDbType' : '','list']" @click="chooseDbType('3')">
<div class="limg"><img :src="databaseImg.imgOracle"></div>
<div class="ltitle">
<el-tooltip content="oracle数据库" placement="bottom" effect="light">
<p class="title">oracle</p>
</el-tooltip>
</div>
</div>
<div :class="[form.dbType =='9' ? 'choosedDbType' : '','list']" @click="chooseDbType('9')">
<div class="limg"><img :src="databaseImg.imgdm8"></div>
<div class="ltitle">
<el-tooltip content="dm数据库" placement="bottom" effect="light">
<p class="title">dm</p>
</el-tooltip>
</div>
</div>
<div :class="[form.dbType =='8' ? 'choosedDbType' : '','list']" @click="chooseDbType('8')">
<div class="limg"><img :src="databaseImg.imgibmdb2"></div>
<div class="ltitle">
<el-tooltip content="db2数据库" placement="bottom" effect="light">
<p class="title">db2</p>
</el-tooltip>
</div>
</div>
<div :class="[form.dbType =='5' ? 'choosedDbType' : '','list']" @click="chooseDbType('5')">
<div class="limg"><img :src="databaseImg.imgPostgreSQL"></div>
<div class="ltitle">
<el-tooltip content="PostgreSQ数据库" placement="bottom" effect="light">
<p class="title">PostgreSQ</p>
</el-tooltip>
</div>
</div>
<div :class="[form.dbType =='6' ? 'choosedDbType' : '','list']" @click="chooseDbType('6')">
<div class="limg"><img :src="databaseImg.imgSqlserver"></div>
<div class="ltitle">
<el-tooltip content="Sqlserver数据库" placement="bottom" effect="light">
<p class="title">Sqlserver</p>
</el-tooltip>
</div>
</div>
<div :class="[form.dbType =='7' ? 'choosedDbType' : '','list']" @click="chooseDbType('7')">
<div class="limg"><img :src="databaseImg.imgkingbase"></div>
<div class="ltitle">
<el-tooltip content="kingbase数据库" placement="bottom" effect="light">
<p class="title">kingbase</p>
</el-tooltip>
</div>
</div>
<div :class="[form.dbType =='10' ? 'choosedDbType' : '','list']" @click="chooseDbType('10')">
<div class="limg"><img :src="databaseImg.imggaussdb"></div>
<div class="ltitle">
<el-tooltip content="GaussDB数据库" placement="bottom" effect="light">
<p class="title">GaussDB</p>
</el-tooltip>
</div>
</div>
<div :class="[form.dbType =='4' ? 'choosedDbType' : '','list']" @click="chooseDbType('4')">
<div class="limg"><img :src="databaseImg.imgdefault"></div>
<div class="ltitle">
<el-tooltip content="MaxCompute数据库" placement="bottom" effect="light">
<p class="title">MaxCompute</p>
</el-tooltip>
</div>
</div>
</div><!--modellist 模型监控列表-->
</el-form>
<el-form v-if="active == 3" ref="form2" :model="form2" :rules="rules2" label-width="80px">
<div style="padding: 20px 200px">
<el-form-item label="主机" prop="host">
<el-input v-model="form2.host" placeholder="请输入主机" />
</el-form-item>
<el-form-item label="端口" prop="port">
<el-input v-model="form2.port" placeholder="请输入端口" />
</el-form-item>
<el-form-item v-if="form.dbType === '3' || form.dbType === '4'" label="服务名" prop="sid">
<el-input v-model="form2.sid" placeholder="请输入服务名" />
</el-form-item>
<el-form-item v-if="form.dbType !== '3' && form.dbType !== '4'" label="数据库" prop="dbName">
<el-input v-model="form2.dbName" placeholder="请输入数据库" />
</el-form-item>
<el-form-item label="用户名" prop="username">
<el-input v-model="form2.username" placeholder="请输入用户名" />
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="form2.password" placeholder="请输入密码" />
</el-form-item>
<el-form-item>
<el-button v-hasPerm="['metadata:datasource:connect']" size="mini" type="primary" @click="handleCheckConnection">连通性检测</el-button>
</el-form-item>
</div>
</el-form>
</div>
</el-card>
@@ -70,6 +150,17 @@
<script>
import { addDataSource, checkConnection } from '@/api/metadata/datasource'
import { createDataSource } from '@/api/datamodel/model'
import imgMySQL from '@/assets/database/MySQL.svg'
import imgMariaDB from '@/assets/database/MariaDB.svg'
import imgOracle from '@/assets/database/Oracle.svg'
import imgdm8 from '@/assets/database/dm8.png'
import imgibmdb2 from '@/assets/database/ibmdb2.png'
import imgPostgreSQL from '@/assets/database/PostgreSQL.svg'
import imgSqlserver from '@/assets/database/Sqlserver.svg'
import imgdefault from '@/assets/database/default.svg'
import imgkingbase from '@/assets/database/kingbase.png'
import imggaussdb from '@/assets/database/gaussdb.png'
export default {
name: 'DataSourceAdd',
@@ -84,6 +175,19 @@ export default {
data() {
return {
title: '数据源新增',
databaseImg: {
isActive: true,
imgMySQL: imgMySQL,
imgMariaDB: imgMariaDB,
imgOracle: imgOracle,
imgdm8: imgdm8,
imgibmdb2: imgibmdb2,
imgPostgreSQL: imgPostgreSQL,
imgSqlserver: imgSqlserver,
imgdefault: imgdefault,
imgkingbase: imgkingbase,
imggaussdb: imggaussdb
},
// 展示切换
showOptions: {
data: {},
@@ -124,7 +228,8 @@ export default {
dbName: undefined,
username: undefined,
password: undefined,
sid: undefined
sid: undefined,
schema: ''
},
rules2: {
host: [
@@ -180,6 +285,9 @@ export default {
handleLastStep() {
this.active--
},
chooseDbType(type) {
this.form.dbType = type
},
/** 检测数据库连通性 */
handleCheckConnection() {
this.$refs['form2'].validate(valid => {
@@ -204,6 +312,7 @@ export default {
addDataSource(this.form).then(response => {
if (response.success) {
this.$message.success('保存成功')
this.saveModelDataSource()
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
@@ -221,6 +330,21 @@ export default {
})
}
})
},
saveModelDataSource() {
const dbType = this.form.dbType
const dataSource = {
projectId: '11111',
databaseName: this.form2.dbName,
schemaName: this.form2.schema === '' ? this.form2.dbName : this.form2.schema,
databaseType: dbType,
url: this.form2.host + this.form2.port,
username: this.form2.username,
password: this.form2.password
}
createDataSource(dataSource).then(() => {
}).catch(() => {
})
}
}
}
@@ -231,4 +355,7 @@ export default {
height: calc(100vh - 230px);
overflow-y: auto;
}
.choosedDbType{
border: 1px solid #165DFF;
}
</style>

View File

@@ -40,7 +40,7 @@
<el-tooltip content="密度" effect="dark" placement="top">
<el-dropdown trigger="click" @command="handleCommand">
<el-button circle size="mini">
<svg-icon class-name="size-icon" icon-class="colum-height" />
<i class="el-icon-s-grid"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="medium">正常</el-dropdown-item>
@@ -51,7 +51,7 @@
</el-tooltip>
<el-tooltip content="刷新" effect="dark" placement="top">
<el-button circle size="mini" @click="handleRefresh">
<svg-icon class-name="size-icon" icon-class="shuaxin" />
<i class="el-icon-refresh"></i>
</el-button>
</el-tooltip>
<el-tooltip content="列设置" effect="dark" placement="top">
@@ -65,7 +65,7 @@
</el-checkbox-group>
<span slot="reference">
<el-button circle size="mini">
<svg-icon class-name="size-icon" icon-class="shezhi" />
<i class="el-icon-setting"></i>
</el-button>
</span>
</el-popover>

View File

@@ -1,189 +1,23 @@
<template>
<div class="app-container">
<el-card class="box-card" shadow="always">
<el-row>
<el-col :span="24">
<el-form :inline="true" class="demo-form-inline">
<el-form-item label="数据源">
<el-select v-model="sqlDataSource" placeholder="请选择数据源">
<el-option
v-for="source in sourceOptions"
:key="source.id"
:label="source.sourceName"
:value="source.id"
:disabled="source.status === '0'"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button size="mini" round :disabled="sqlExecuting" @click="runData">运行</el-button>
<el-button size="mini" round :disabled="!sqlExecuting" @click="stopData">停止</el-button>
<el-button size="mini" round :disabled="sqlExecuting" @click="formaterSql">格式化</el-button>
<el-button size="mini" round :disabled="sqlExecuting" @click="refreshData">重置</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<sql-editor
ref="sqleditor"
:value="sqlText"
style="height: 300px; margin: 20px 0;"
@changeTextarea="changeTextarea($event)"
/>
</el-col>
</el-row>
<el-row>
<el-col>
<div v-if="sqlExecuting" v-loading="sqlExecuting">数据加载中...</div>
<div v-else>
<div v-if="sqlConsole.length > 0">
<el-tabs v-model="activeTabName" type="border-card">
<el-tab-pane label="信息" name="table0">
<pre>{{ executeResultInfo }}</pre>
</el-tab-pane>
<el-tab-pane v-for="(item,index) in sqlConsole" :key="(index+1)" :name="'table'+(index+1)" :label="'结果'+(index+1)">
<el-table
:data="item.dataList"
stripe
border
:max-height="300"
style="width: 100%; margin: 15px 0;"
>
<el-table-column label="序号" width="55" align="center">
<template slot-scope="scope">
<span>{{ scope.$index + 1 }}</span>
</template>
</el-table-column>
<template v-for="(column, index) in item.columnList">
<el-table-column
:key="index"
:prop="column"
:label="column"
align="center"
show-overflow-tooltip
/>
</template>
</el-table>
</el-tab-pane>
</el-tabs>
</div>
</div>
</el-col>
</el-row>
</el-card>
<iframe src="http://192.168.1.217:8001/OnlinInquiry/OnlinInquiryChildren" width="100%" height="850px" frameborder="0" />
</div>
</template>
<script>
import sqlFormatter from 'sql-formatter'
import SqlEditor from '@/components/SqlEditor'
import { listDataSource } from '@/api/metadata/datasource'
import { runSql, stopSql } from '@/api/metadata/sqlconsole'
export default {
name: 'SqlConsole',
components: {
SqlEditor
},
data() {
return {
// 数据源数据字典
sourceOptions: [],
sqlDataSource: undefined,
sqlText: undefined,
sqlExecuting: false,
activeTabName: 'table0',
sqlExecutorId: undefined,
sqlConsole: [],
executeResultInfo: undefined
}
},
created() {
this.getDataSourceList()
},
methods: {
getDataSourceList() {
listDataSource().then(response => {
if (response.success) {
this.sourceOptions = response.data
}
})
},
runData() {
if (!this.sqlDataSource) {
this.$message.error('数据源不能为空')
return
}
if (!this.sqlText) {
this.$message.error('查询SQL不能为空')
return
}
this.sqlExecuting = true
this.sqlExecutorId = (new Date()).getTime() + Math.ceil(Math.random() * 1000)
this.sqlConsole = []
const data = {}
data.sqlKey = this.sqlExecutorId
data.sourceId = this.sqlDataSource
data.sqlText = this.sqlText
runSql(data).then(response => {
if (response.success) {
const { data } = response
let resultStr = ''
for (let i = 0; i < data.length; i++) {
const item = data[i]
resultStr += item.sql
resultStr += '\n> 状态:' + ((item.success) ? '成功' : '失败')
if (item.count && item.count >= 0) {
resultStr += '\n> 影响行数:' + item.count
}
resultStr += '\n> 耗时:' + (item.time || 0) / 1000 + 's'
resultStr += '\n\n'
}
this.executeResultInfo = resultStr
this.sqlConsole = data
}
this.sqlExecuting = false
})
},
stopData() {
const data = {}
data.sqlKey = this.sqlExecutorId
stopSql(data).then(response => {
if (response.success) {
this.$message.success('停止成功')
}
this.sqlExecuting = false
})
},
changeTextarea(val) {
this.sqlText = val
},
formaterSql() {
if (!this.sqlText) {
return
}
this.$refs.sqleditor.editor.setValue(sqlFormatter.format(this.$refs.sqleditor.editor.getValue()))
},
refreshData() {
if (!this.sqlText) {
return
}
this.sqlExecuting = false
this.activeTabName = 'table0'
this.sqlExecutorId = undefined
this.sqlText = undefined
this.$refs.sqleditor.editor.setValue('')
this.sqlConsole = []
this.executeResultInfo = undefined
}
}
}
</script>
<style lang="scss" scoped>
.el-card ::v-deep .el-card__body {
height: calc(100vh - 170px);
}
</style>