Commit 2d759c40 authored by 王晓铜's avatar 王晓铜

更新sql监控

parent 815f0ac8
...@@ -13,6 +13,22 @@ ...@@ -13,6 +13,22 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.icon-SQL:before {
content: "\e68c";
}
.icon-jiankong:before {
content: "\e69e";
}
.icon-jiankongkongzhiguanli:before {
content: "\e64f";
}
.icon-jiankong1:before {
content: "\ef8c";
}
.icon-explain:before { .icon-explain:before {
content: "\e6f6"; content: "\e6f6";
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -5,6 +5,34 @@ ...@@ -5,6 +5,34 @@
"css_prefix_text": "icon-", "css_prefix_text": "icon-",
"description": "", "description": "",
"glyphs": [ "glyphs": [
{
"icon_id": "2654344",
"name": "SQL",
"font_class": "SQL",
"unicode": "e68c",
"unicode_decimal": 59020
},
{
"icon_id": "3172484",
"name": "监控",
"font_class": "jiankong",
"unicode": "e69e",
"unicode_decimal": 59038
},
{
"icon_id": "12975224",
"name": "监控控制管理",
"font_class": "jiankongkongzhiguanli",
"unicode": "e64f",
"unicode_decimal": 58959
},
{
"icon_id": "18538407",
"name": "监控",
"font_class": "jiankong1",
"unicode": "ef8c",
"unicode_decimal": 61324
},
{ {
"icon_id": "7573251", "icon_id": "7573251",
"name": "explain", "name": "explain",
......
...@@ -19,7 +19,7 @@ import hljs from 'highlight.js' ...@@ -19,7 +19,7 @@ import hljs from 'highlight.js'
import 'highlight.js/styles/googlecode.css' import 'highlight.js/styles/googlecode.css'
// 引用sql编辑器(2021-12-30) // 引用sql编辑器(2021-12-30)
import AFTableColumn from 'af-table-column' import AFTableColumn from 'af-table-column'
// sql编辑器
import { codemirror } from 'vue-codemirror' import { codemirror } from 'vue-codemirror'
import 'codemirror/lib/codemirror.css' import 'codemirror/lib/codemirror.css'
......
...@@ -269,12 +269,12 @@ ...@@ -269,12 +269,12 @@
{ {
"id": 9, "id": 9,
"title": "线上监控", "title": "线上监控",
"icon": "iconfont icon-quality", "icon": "iconfont icon-jiankong",
"child": [ "child": [
{ {
"id": 1, "id": 1,
"title": "sql监控", "title": "SQL监控",
"icon": "iconfont icon-explain", "icon": "iconfont icon-SQL",
"path": "/monitor/sqlMonitorList" "path": "/monitor/sqlMonitorList"
} }
] ]
......
...@@ -10,13 +10,10 @@ ...@@ -10,13 +10,10 @@
<el-option v-for="item in dataSourceList" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option v-for="item in dataSourceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item>
<el-button @click="sqlFormat">格式化</el-button>
</el-form-item>
<el-form-item label="SQL脚本:" prop="sql"> <el-form-item label="SQL脚本:" prop="sql">
<!-- <textarea ref="mycode" v-model="sqlMonitorForm.sql" placeholder="请输入sql语句" <div style="border:1.5px solid #DCDCDC">
style="height:200px;width:600px"></textarea> --> <codemirror ref="editQuerySQL" v-model="sqlMonitorForm.sql" :options="cmOptions"></codemirror>
<codemirror ref="editQuerySQL" v-model="sqlMonitorForm.sql" :options="cmOptions" class="code"></codemirror> </div>
</el-form-item> </el-form-item>
<el-form-item style="margin-left:1000px"> <el-form-item style="margin-left:1000px">
<el-button type="primary" icon="el-icon-caret-right" @click="executeSqlBtn">执行</el-button> <el-button type="primary" icon="el-icon-caret-right" @click="executeSqlBtn">执行</el-button>
...@@ -26,7 +23,7 @@ ...@@ -26,7 +23,7 @@
<!-- 动态绑定表格数据 --> <!-- 动态绑定表格数据 -->
<el-table :data="sqlList" border style="font-size:8px;" <el-table :data="sqlList" border style="font-size:8px;"
:header-cell-style="{background:'#eee',color:'#606266'}" v-if="isShow"> :header-cell-style="{background:'#eee',color:'#606266'}" v-if="isShow">
<af-table-column v-for="(val, key) in columnArr" :label="val" :prop="val" :key="key" :fontRate="fontRate"> <af-table-column v-for="(val, key) in columnArr" :label="val" :prop="val" :key="key" class="table-dynamic">
</af-table-column> </af-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
...@@ -82,24 +79,6 @@ import { ...@@ -82,24 +79,6 @@ import {
import { getGitProjectList } from '@/api/jira' import { getGitProjectList } from '@/api/jira'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
// 编辑器引用 // 编辑器引用
// import { codemirror } from 'vue-codemirror'
// import 'codemirror/lib/codemirror.css'
// import 'codemirror/theme/base16-light.css'
// import 'codemirror/addon/hint/show-hint.css'
// import 'codemirror/theme/ambiance.css'
// let CodeMirror = require('codemirror/lib/codemirror')
// require('codemirror/mode/sql/sql.js')
// require('codemirror/addon/edit/matchbrackets')
// require('codemirror/addon/selection/active-line')
// require('codemirror/mode/sql/sql')
// require('codemirror/addon/hint/show-hint')
// require('codemirror/addon/hint/sql-hint')
// require('codemirror/addon/hint/sql-hint.js')
// require('codemirror/addon/hint/show-hint.js')
// require('codemirror/addon/selection/active-line.js')
// import sqlFormatter from 'sql-formatter'
import { codemirror } from 'vue-codemirror' import { codemirror } from 'vue-codemirror'
import 'codemirror/lib/codemirror.css' import 'codemirror/lib/codemirror.css'
...@@ -119,8 +98,13 @@ export default { ...@@ -119,8 +98,13 @@ export default {
...mapGetters({ ...mapGetters({
// 获取用户名称(可当作全局变量使用) // 获取用户名称(可当作全局变量使用)
getUserName: 'user/chineseName' getUserName: 'user/chineseName'
}) }),
// 设置编辑器
codemirror() {
return this.$refs.editQuerySQL.codemirror
}
}, },
data() { data() {
return { return {
cmOptions: { cmOptions: {
...@@ -207,11 +191,21 @@ export default { ...@@ -207,11 +191,21 @@ export default {
message: '钉钉地址不能为空!', message: '钉钉地址不能为空!',
trigger: 'blur' trigger: 'blur'
} }
],
dingText: [
{
required: true,
message: '消息内容不能为空!',
trigger: 'blur'
}
] ]
} },
tableWidth: ''
} }
}, },
watch: {
tableWidth: 'getTableWidth'
},
// 接收列表页面传递的参数 // 接收列表页面传递的参数
activated() { activated() {
var data = this.$route.query.data var data = this.$route.query.data
...@@ -235,74 +229,56 @@ export default { ...@@ -235,74 +229,56 @@ export default {
this.getSqlMonitorDataSource() this.getSqlMonitorDataSource()
}, },
mounted() { mounted() {
// let mime = 'text/x-mariadb' var editor = this.$refs.editQuerySQL.codemirror
// // let theme = 'ambiance'//设置主题,不设置的会使用默认主题 editor.on('cursorActivity', function () {
// this.editor = CodeMirror.fromTextArea(this.$refs.mycode, { editor.showHint()
// mode: mime, // 选择对应代码编辑器的语言,我这边选的是数据库,根据个人情况自行设置即可
// tabSize: 2,
// indentWithTabs: true,
// // 自动缩进
// smartIndent: true,
// // 显示行号
// lineNumbers: true,
// // 匹配结束符号
// matchBrackets: true,
// // theme: theme,
// // 自动聚焦
// autofocus: true,
// // 自定义快捷键
// // extraKeys: { Ctrl: 'autocomplete' }, // 自定义快捷键
// // hint: CodeMirror.hint.sql,
// hintOptions: {
// // 自定义提示选项
// tables: {
// users: ['name', 'score', 'birthDate'],
// countries: ['name', 'population', 'size']
// }
// // tables: window.tablewords
// }
// })
// 代码自动提示功能,记住使用cursorActivity事件不要使用change事件,这是一个坑,那样页面直接会卡死 cursorActivity
this.editQuerySQL.on('cursorActivity', function () {
console.log('iii', this.editQuerySQL)
this.editQuerySQL.showHint()
}) })
}, },
methods: { methods: {
sqlFormat() { getTableWidth() {
// let sqlContent = '' for (let i = 0; i < document.getElementsByClassName('table-dynamic').length; i++) {
// sqlContent = this.editor.getValue() var item = document.getElementsByClassName('table-dynamic')[i]
// /* 将sql内容进行格式后放入编辑器中 */ console.log(item)
// this.editor.setValue(sqlFormatter.format(sqlContent)) }
}, },
// 获取数据源列表 // 获取数据源列表
getSqlMonitorDataSource() { getSqlMonitorDataSource() {
getSqlMonitorData().then((resp) => { getSqlMonitorData().then((resp) => {
this.dataSourceList = resp.data.data this.dataSourceList = resp.data.data
// console.log('www', resp)
}) })
}, },
// 执行sqla按钮 // 执行sqla按钮
executeSqlBtn() { executeSqlBtn() {
console.log('sql值', this.sqlMonitorForm.sql)
var formData = new FormData() var formData = new FormData()
formData.set('dsId', this.sqlMonitorForm.dsId) formData.set('dsId', this.sqlMonitorForm.dsId)
formData.set('sql', this.sqlMonitorForm.sql) formData.set('sql', this.sqlMonitorForm.sql)
if (this.sqlMonitorForm.dsId === undefined) {
return this.$message.error('请选择数据源!')
}
executeSqlMonitor(formData).then((resp) => { executeSqlMonitor(formData).then((resp) => {
var data = resp.data.data if (resp.data.businessCode === '0000') {
this.sqlList = data var data = resp.data.data
if (data.length) { // 给表格绑定数据源
this.isShow = true this.sqlList = data
// 获取表格第一行数据 if (data !== null) {
const row = data[0] if (data.length) {
const columnArr = [] this.isShow = true
// 循环获取第一行的表头数据 // 获取表格第一行数据
for (let i in row) { const row = data[0]
columnArr.push(i) const columnArr = []
// 循环获取第一行的表头数据
for (let i in row) {
columnArr.push(i)
}
this.columnArr = columnArr
} else {
return this.$message.error('没有查询到任何数据!')
}
} else {
return this.$message.error('没有查询到任何数据!')
} }
this.columnArr = columnArr } else {
return this.$message.error(resp.data.msg)
} }
}) })
}, },
...@@ -339,7 +315,6 @@ export default { ...@@ -339,7 +315,6 @@ export default {
saveSqlMonitorFrom() { saveSqlMonitorFrom() {
this.sqlMonitorForm.owner = this.getUserName this.sqlMonitorForm.owner = this.getUserName
this.sqlMonitorForm.taskClass = 'SqlMonitorHandler' this.sqlMonitorForm.taskClass = 'SqlMonitorHandler'
// console.log('参数', this.sqlMonitorForm)
// 编辑接口 // 编辑接口
if (this.sqlMonitorForm.id) { if (this.sqlMonitorForm.id) {
editSqlMonitor(this.sqlMonitorForm).then((resp) => { editSqlMonitor(this.sqlMonitorForm).then((resp) => {
...@@ -378,8 +353,4 @@ export default { ...@@ -378,8 +353,4 @@ export default {
font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono,
DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;
} }
.el-table th > .cell {
white-space: nowrap;
width: fit-content;
}
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment