123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <template>
- <div class="app-container">
- <el-row :gutter="10">
- <el-col :span="8">
- <el-card style="height: calc(100vh - 125px)">
- <template #header>
- <Collection style="width: 1em; height: 1em; vertical-align: middle;" /> <span style="vertical-align: middle;">缓存列表</span>
- <el-button
- style="float: right; padding: 3px 0"
- link
- type="primary"
- icon="Refresh"
- @click="refreshCacheNames()"
- ></el-button>
- </template>
- <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 #default="scope">
- <el-button
- link
- type="primary"
- 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)">
- <template #header>
- <Key style="width: 1em; height: 1em; vertical-align: middle;" /> <span style="vertical-align: middle;">键名列表</span>
- <el-button
- style="float: right; padding: 3px 0"
- link
- type="primary"
- icon="Refresh"
- @click="refreshCacheKeys()"
- ></el-button>
- </template>
- <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 #default="scope">
- <el-button
- link
- type="primary"
- 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)">
- <template #header>
- <Document style="width: 1em; height: 1em; vertical-align: middle;" /> <span style="vertical-align: middle;">缓存内容</span>
- <el-button
- style="float: right; padding: 3px 0"
- link
- type="primary"
- icon="Refresh"
- @click="handleClearCacheAll()"
- >清理全部</el-button
- >
- </template>
- <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 setup name="CacheList">
- import { listCacheName, listCacheKey, getCacheValue, clearCacheName, clearCacheKey, clearCacheAll } from "@/api/monitor/cache";
- const { proxy } = getCurrentInstance();
- const cacheNames = ref([]);
- const cacheKeys = ref([]);
- const cacheForm = ref({});
- const loading = ref(true);
- const subLoading = ref(false);
- const nowCacheName = ref("");
- const tableHeight = ref(window.innerHeight - 200);
- /** 查询缓存名称列表 */
- function getCacheNames() {
- loading.value = true;
- listCacheName().then(response => {
- cacheNames.value = response.data;
- loading.value = false;
- });
- }
- /** 刷新缓存名称列表 */
- function refreshCacheNames() {
- getCacheNames();
- proxy.$modal.msgSuccess("刷新缓存列表成功");
- }
- /** 清理指定名称缓存 */
- function handleClearCacheName(row) {
- clearCacheName(row.cacheName).then(response => {
- proxy.$modal.msgSuccess("清理缓存名称[" + nowCacheName.value + "]成功");
- getCacheKeys();
- });
- }
- /** 查询缓存键名列表 */
- function getCacheKeys(row) {
- const cacheName = row !== undefined ? row.cacheName : nowCacheName.value;
- if (cacheName === "") {
- return;
- }
- subLoading.value = true;
- listCacheKey(cacheName).then(response => {
- cacheKeys.value = response.data;
- subLoading.value = false;
- nowCacheName.value = cacheName;
- });
- }
- /** 刷新缓存键名列表 */
- function refreshCacheKeys() {
- getCacheKeys();
- proxy.$modal.msgSuccess("刷新键名列表成功");
- }
- /** 清理指定键名缓存 */
- function handleClearCacheKey(cacheKey) {
- clearCacheKey(cacheKey).then(response => {
- proxy.$modal.msgSuccess("清理缓存键名[" + cacheKey + "]成功");
- getCacheKeys();
- });
- }
- /** 列表前缀去除 */
- function nameFormatter(row) {
- return row.cacheName.replace(":", "");
- }
- /** 键名前缀去除 */
- function keyFormatter(cacheKey) {
- return cacheKey.replace(nowCacheName.value, "");
- }
- /** 查询缓存内容详细 */
- function handleCacheValue(cacheKey) {
- getCacheValue(nowCacheName.value, cacheKey).then(response => {
- cacheForm.value = response.data;
- });
- }
- /** 清理全部缓存 */
- function handleClearCacheAll() {
- clearCacheAll().then(response => {
- proxy.$modal.msgSuccess("清理全部缓存成功");
- });
- }
- getCacheNames();
- </script>
|