下面列表
This commit is contained in:
parent
0e15d393a6
commit
330a44fc98
@ -58,19 +58,187 @@
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="mt-3">
|
||||
<el-col :span="24" class="card-box" shadow="hover">
|
||||
<el-card>
|
||||
<el-table v-loading="keyListLoad" :data="keyList" row-key="id" @row-click="openKeyTemplate">
|
||||
<el-table-column prop="keyTemplate" label="Key 模板" width="200" />
|
||||
<el-table-column prop="keyType" label="Key 类型" width="100" />
|
||||
<el-table-column prop="valueType" label="Value 类型" />
|
||||
<el-table-column prop="timeoutType" label="超时时间" width="200">
|
||||
<template #default="{ row }">
|
||||
<DictTag :type="DICT_TYPE.INFRA_REDIS_TIMEOUT_TYPE" :value="row?.timeoutType" />
|
||||
<span v-if="row?.timeout > 0">({{ row?.timeout / 1000 }} 秒)</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="memo" label="备注" />
|
||||
</el-table>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-scrollbar>
|
||||
<XModal v-model="dialogVisible" :title="keyTemplate + ' 模板'">
|
||||
<el-row>
|
||||
<el-col :span="14" class="mt-3">
|
||||
<el-card shadow="always">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>键名列表</span>
|
||||
</div>
|
||||
</template>
|
||||
<el-table :data="cacheKeys" style="width: 100%" @row-click="handleKeyValue">
|
||||
<el-table-column label="缓存键名" align="center" :show-overflow-tooltip="true">
|
||||
<template #default="{ row }">
|
||||
{{ row }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="right" width="60">
|
||||
<template #default="{ row }">
|
||||
<XTextButton preIcon="ep:delete" @click="handleDeleteKey(row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="10" class="mt-3">
|
||||
<el-card shadow="always">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>缓存内容</span>
|
||||
<XTextButton preIcon="ep:refresh" title="清理全部" @click="handleDeleteKeys(keyTemplate)"
|
||||
class="float-right p-1" />
|
||||
</div>
|
||||
</template>
|
||||
<el-descriptions :column="1">
|
||||
<el-descriptions-item label="缓存键名:">{{ cacheForm.key }}</el-descriptions-item>
|
||||
<el-descriptions-item label="缓存内容:">{{ cacheForm.value }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</XModal>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
// import * as echarts from 'echarts'
|
||||
import * as RedisApi from '@/api/infra/redis'
|
||||
import { RedisMonitorInfoVO } from '@/api/infra/redis/types'
|
||||
import { RedisKeyInfo, RedisMonitorInfoVO } from '@/api/infra/redis/types'
|
||||
import { DICT_TYPE } from '@/utils/dict'
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
const keyListLoad = ref(true)
|
||||
const keyList = ref<RedisKeyInfo[]>([])
|
||||
const cache = ref<RedisMonitorInfoVO>()
|
||||
|
||||
// 基本信息
|
||||
const readRedisInfo = async () => {
|
||||
const data = await RedisApi.getCacheApi()
|
||||
cache.value = data
|
||||
// loadEchartOptions(data.commandStats)
|
||||
const redisKeysInfo = await RedisApi.getKeyDefineListApi()
|
||||
keyList.value = redisKeysInfo
|
||||
keyListLoad.value = false //加载完成
|
||||
}
|
||||
// 图表
|
||||
// const commandStatsRef = ref<HTMLElement>()
|
||||
// const usedmemory = ref<HTMLDivElement>()
|
||||
// const loadEchartOptions = (stats) => {
|
||||
// const commandStats = [] as any[]
|
||||
// const nameList = [] as string[]
|
||||
// stats.forEach((row) => {
|
||||
// commandStats.push({
|
||||
// name: row.command,
|
||||
// value: row.calls
|
||||
// })
|
||||
// nameList.push(row.command)
|
||||
// })
|
||||
|
||||
// const commandStatsInstance = echarts.init(commandStatsRef.value!, 'macarons')
|
||||
|
||||
// commandStatsInstance.setOption({
|
||||
// title: {
|
||||
// text: '命令统计',
|
||||
// left: 'center'
|
||||
// },
|
||||
// tooltip: {
|
||||
// trigger: 'item',
|
||||
// formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||
// },
|
||||
// legend: {
|
||||
// type: 'scroll',
|
||||
// orient: 'vertical',
|
||||
// right: 30,
|
||||
// top: 10,
|
||||
// bottom: 20,
|
||||
// data: nameList,
|
||||
// textStyle: {
|
||||
// color: '#a1a1a1'
|
||||
// }
|
||||
// },
|
||||
// series: [
|
||||
// {
|
||||
// name: '命令',
|
||||
// type: 'pie',
|
||||
// radius: [20, 120],
|
||||
// center: ['40%', '60%'],
|
||||
// data: commandStats,
|
||||
// roseType: 'radius',
|
||||
// label: {
|
||||
// show: true
|
||||
// },
|
||||
// emphasis: {
|
||||
// label: {
|
||||
// show: true
|
||||
// },
|
||||
// itemStyle: {
|
||||
// shadowBlur: 10,
|
||||
// shadowOffsetX: 0,
|
||||
// shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// ]
|
||||
// })
|
||||
|
||||
// const usedMemoryInstance = echarts.init(usedmemory.value!, 'macarons')
|
||||
// usedMemoryInstance.setOption({
|
||||
// title: {
|
||||
// text: '内存使用情况',
|
||||
// left: 'center'
|
||||
// },
|
||||
// tooltip: {
|
||||
// formatter: '{b} <br/>{a} : ' + cache.value!.info.used_memory_human
|
||||
// },
|
||||
// series: [
|
||||
// {
|
||||
// name: '峰值',
|
||||
// type: 'gauge',
|
||||
// min: 0,
|
||||
// max: 100,
|
||||
// progress: {
|
||||
// show: true
|
||||
// },
|
||||
// detail: {
|
||||
// formatter: cache.value!.info.used_memory_human
|
||||
// },
|
||||
// data: [
|
||||
// {
|
||||
// value: parseFloat(cache.value!.info.used_memory_human),
|
||||
// name: '内存消耗'
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
// })
|
||||
// }
|
||||
const dialogVisible = ref(false)
|
||||
const keyTemplate = ref('')
|
||||
const cacheKeys = ref()
|
||||
const cacheForm = ref<{
|
||||
key: string
|
||||
value: string
|
||||
}>({
|
||||
key: '',
|
||||
value: ''
|
||||
})
|
||||
// 内存使用情况
|
||||
const usedmemoryEchartChika = reactive<any>({
|
||||
title: {
|
||||
@ -263,4 +431,24 @@ onMounted(() => {
|
||||
// 加载数据
|
||||
getSummary()
|
||||
})
|
||||
const openKeyTemplate = async (row: RedisKeyInfo) => {
|
||||
keyTemplate.value = row.keyTemplate
|
||||
cacheKeys.value = await RedisApi.getKeyListApi(row.keyTemplate)
|
||||
dialogVisible.value = true
|
||||
}
|
||||
const handleDeleteKey = async (row) => {
|
||||
RedisApi.deleteKeyApi(row)
|
||||
message.success(t('common.delSuccess'))
|
||||
}
|
||||
const handleDeleteKeys = async (row) => {
|
||||
RedisApi.deleteKeysApi(row)
|
||||
message.success(t('common.delSuccess'))
|
||||
}
|
||||
const handleKeyValue = async (row) => {
|
||||
const res = await RedisApi.getKeyValueApi(row)
|
||||
cacheForm.value = res
|
||||
}
|
||||
onBeforeMount(() => {
|
||||
readRedisInfo()
|
||||
})
|
||||
</script>
|
||||
|
Loading…
Reference in New Issue
Block a user