Explorar o código

新增缓存管理

zhontai %!s(int64=2) %!d(string=hai) anos
pai
achega
b80b25d8e6

+ 1 - 0
gen/templates/http-client.ejs

@@ -47,6 +47,7 @@ export interface FullRequestParams extends Omit<AxiosRequestConfig, "data" | "pa
   login?: boolean
   /** 加载中 */
   loading?: boolean
+  /** 加载中选项 */
   loadingOptions?: LoadingOptions
   /** 取消重复请求 */
   cancelRepeatRequest?: boolean

+ 1 - 0
src/api/admin/http-client.ts

@@ -54,6 +54,7 @@ export interface FullRequestParams extends Omit<AxiosRequestConfig, 'data' | 'pa
   login?: boolean
   /** 加载中 */
   loading?: boolean
+  /** 加载中选项 */
   loadingOptions?: LoadingOptions
   /** 取消重复请求 */
   cancelRepeatRequest?: boolean

+ 66 - 0
src/views/admin/cache/index.vue

@@ -0,0 +1,66 @@
+<template>
+  <div style="padding: 8px">
+    <el-card shadow="never">
+      <el-table v-loading="state.loading" :data="state.cacheListData" row-key="id" style="width: 100%">
+        <el-table-column type="index" width="80" label="#" />
+        <el-table-column prop="description" label="缓存名" />
+        <el-table-column prop="name" label="键名" />
+        <el-table-column prop="value" label="键值" />
+        <el-table-column label="操作" width="180" fixed="right" header-align="center" align="center">
+          <template #default="{ row }">
+            <el-button icon="ele-Brush" size="small" text type="danger" @click="onClear(row)">清除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-card>
+  </div>
+</template>
+
+<script lang="ts" setup>
+import { reactive, onMounted, getCurrentInstance } from 'vue'
+import { Cache as CacheApi } from '/@/api/admin/Cache'
+const { proxy } = getCurrentInstance() as any
+
+defineProps({
+  title: {
+    type: String,
+    default: '',
+  },
+})
+
+const state = reactive({
+  loading: false,
+  cacheListData: [] as any,
+})
+
+onMounted(() => {
+  onQuery()
+})
+
+const onQuery = async () => {
+  state.loading = true
+  const res = await new CacheApi().getList()
+  state.cacheListData = res?.data ?? []
+  state.loading = false
+}
+
+const onClear = (row: any) => {
+  proxy.$modal
+    .confirmDelete(`确定要清除【${row.description}缓存?`, { icon: 'ele-Brush' })
+    .then(async () => {
+      await new CacheApi().clear({ cacheKey: row.value }, { loading: true, showSuccessMessage: true })
+      onQuery()
+    })
+    .catch(() => {})
+}
+</script>
+
+<script lang="ts">
+import { defineComponent } from 'vue'
+
+export default defineComponent({
+  name: 'admin/cache',
+})
+</script>
+
+<style scoped lang="scss"></style>