<template> <div class="app-container"> <el-row :gutter="10"> <el-col :span="8"> <el-card style="height: calc(100vh - 125px)"> <div slot="header"> <span>缓存列表</span> <el-button style="float: right; padding: 3px 0" type="text" icon="el-icon-refresh-right" @click="refreshCacheNames()" ></el-button> </div> <el-table v-loading="loading" :data="cacheNames" :height="tableHeight" highlight-current-row @row-click="getCacheKeys" style="width: 100%" > <el-table-column label="序号" width="60" type="index" ></el-table-column> <el-table-column label="缓存名称" align="center" prop="cacheName" :show-overflow-tooltip="true" :formatter="nameFormatter" ></el-table-column> <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" /> <el-table-column label="操作" width="60" align="center" class-name="small-padding fixed-width" > <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleClearCacheName(scope.row)" ></el-button> </template> </el-table-column> </el-table> </el-card> </el-col> <el-col :span="8"> <el-card style="height: calc(100vh - 125px)"> <div slot="header"> <span>键名列表</span> <el-button style="float: right; padding: 3px 0" type="text" icon="el-icon-refresh-right" @click="refreshCacheKeys()" ></el-button> </div> <el-table v-loading="subLoading" :data="cacheKeys" :height="tableHeight" highlight-current-row @row-click="handleCacheValue" style="width: 100%" > <el-table-column label="序号" width="60" type="index" ></el-table-column> <el-table-column label="缓存键名" align="center" :show-overflow-tooltip="true" :formatter="keyFormatter" > </el-table-column> <el-table-column label="操作" width="60" align="center" class-name="small-padding fixed-width" > <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleClearCacheKey(scope.row)" ></el-button> </template> </el-table-column> </el-table> </el-card> </el-col> <el-col :span="8"> <el-card :bordered="false" style="height: calc(100vh - 125px)"> <div slot="header"> <span>缓存内容</span> <el-button style="float: right; padding: 3px 0" type="text" icon="el-icon-refresh-right" @click="handleClearCacheAll()" >清理全部</el-button > </div> <el-form :model="cacheForm"> <el-row :gutter="32"> <el-col :offset="1" :span="22"> <el-form-item label="缓存名称:" prop="cacheName"> <el-input v-model="cacheForm.cacheName" :readOnly="true" /> </el-form-item> </el-col> <el-col :offset="1" :span="22"> <el-form-item label="缓存键名:" prop="cacheKey"> <el-input v-model="cacheForm.cacheKey" :readOnly="true" /> </el-form-item> </el-col> <el-col :offset="1" :span="22"> <el-form-item label="缓存内容:" prop="cacheValue"> <el-input v-model="cacheForm.cacheValue" type="textarea" :rows="8" :readOnly="true" /> </el-form-item> </el-col> </el-row> </el-form> </el-card> </el-col> </el-row> </div> </template> <script> import { listCacheName, listCacheKey, getCacheValue, clearCacheName, clearCacheKey, clearCacheAll } from "@/api/monitor/cache"; export default { name: "CacheList", data() { return { cacheNames: [], cacheKeys: [], cacheForm: {}, loading: true, subLoading: false, nowCacheName: "", tableHeight: window.innerHeight - 200 }; }, created() { this.getCacheNames(); }, methods: { /** 查询缓存名称列表 */ getCacheNames() { this.loading = true; listCacheName().then(response => { this.cacheNames = response.data; this.loading = false; }); }, /** 刷新缓存名称列表 */ refreshCacheNames() { this.getCacheNames(); this.$modal.msgSuccess("刷新缓存列表成功"); }, /** 清理指定名称缓存 */ handleClearCacheName(row) { clearCacheName(row.cacheName).then(response => { this.$modal.msgSuccess("清理缓存名称[" + this.nowCacheName + "]成功"); this.getCacheKeys(); }); }, /** 查询缓存键名列表 */ getCacheKeys(row) { const cacheName = row !== undefined ? row.cacheName : this.nowCacheName; if (cacheName === "") { return; } this.subLoading = true; listCacheKey(cacheName).then(response => { this.cacheKeys = response.data; this.subLoading = false; this.nowCacheName = cacheName; }); }, /** 刷新缓存键名列表 */ refreshCacheKeys() { this.getCacheKeys(); this.$modal.msgSuccess("刷新键名列表成功"); }, /** 清理指定键名缓存 */ handleClearCacheKey(cacheKey) { clearCacheKey(cacheKey).then(response => { this.$modal.msgSuccess("清理缓存键名[" + cacheKey + "]成功"); this.getCacheKeys(); }); }, /** 列表前缀去除 */ nameFormatter(row) { return row.cacheName.replace(":", ""); }, /** 键名前缀去除 */ keyFormatter(cacheKey) { return cacheKey.replace(this.nowCacheName, ""); }, /** 查询缓存内容详细 */ handleCacheValue(cacheKey) { getCacheValue(this.nowCacheName, cacheKey).then(response => { this.cacheForm = response.data; }); }, /** 清理全部缓存 */ handleClearCacheAll() { clearCacheAll().then(response => { this.$modal.msgSuccess("清理全部缓存成功"); }); } }, }; </script>