22import { ref } from ' vue'
33import { API } from ' ./net'
44import { Cache } from ' ./cache'
5+ import { ElMessage } from ' element-plus'
56
6- const sqlQuery = ref (' ' )
7+ const sqlQuery = ref (' select * from t_sys_global_config ' )
78const queryResult = ref ([])
9+ const columns = ref ([])
810
911const executeQuery = async () => {
1012 Cache .SetCurrentStore (' mysql' );
1113
12- API .DataQuery (sqlQuery .value , (data ) => {
13- queryResult .value = data .data
14+ API .DataQuery (sqlQuery .value , (data ) => {
15+ const result = []
16+ const cols = new Set ()
17+
18+ data .items .forEach (e => {
19+ const obj = {}
20+ e .data .forEach (item => {
21+ obj [item .key ] = item .value
22+ cols .add (item .key )
23+ })
24+ result .push (obj )
1425 })
26+
27+ queryResult .value = result
28+ columns .value = Array .from (cols )
29+ }, (e ) => {
30+ ElMessage ({
31+ showClose: true ,
32+ message: e .message ,
33+ type: ' error'
34+ });
35+ })
1536}
1637 </script >
1738
1839<template >
1940 <div >
2041 <el-form @submit.prevent =" executeQuery" >
21- <el-form-item >
22- <el-input v-model =" sqlQuery" placeholder =" Enter SQL query" ></el-input >
23- </el-form-item >
24- <el-form-item >
25- <el-button type =" primary" @click =" executeQuery" >Execute</el-button >
26- </el-form-item >
42+ <el-row :gutter =" 10" >
43+ <el-col :span =" 20" >
44+ <el-form-item >
45+ <el-input v-model =" sqlQuery" placeholder =" Enter SQL query" ></el-input >
46+ </el-form-item >
47+ </el-col >
48+ <el-col :span =" 4" >
49+ <el-form-item >
50+ <el-button type =" primary" @click =" executeQuery" >Execute</el-button >
51+ </el-form-item >
52+ </el-col >
53+ </el-row >
2754 </el-form >
2855 <el-table :data =" queryResult" >
29- <el-table-column v-for =" (value, key) in queryResult[0] " :key =" key " :prop =" key " :label =" key " ></el-table-column >
56+ <el-table-column v-for =" col in columns " :key =" col " :prop =" col " :label =" col " ></el-table-column >
3057 </el-table >
3158 </div >
3259</template >
0 commit comments