Files
dypid/web/src/views/TokenDetailView.vue
YGXB_net 78d496ae72
All checks were successful
构建上传工具 / build-tool (push) Successful in 56s
部署开发环境 / deploy-dev (push) Successful in 1m39s
refactor(controller): 优化Redis去重和缓存删除逻辑
2025-09-14 22:51:04 +08:00

198 lines
5.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script setup lang="ts">
import {useCounterStore} from "@/stores/counter.ts";
import {ref, watch} from 'vue'
import axios from "@/axios.ts";
import {useRoute} from "vue-router"
// 创建响应式引用用于存储API请求结果
const result = ref()
// 创建响应式引用用于存储当前选中的token值
const value = ref('')
value.value = useCounterStore().token
// 创建响应式引用,用于存储下拉选项列表
const options = ref([] as string[])
// 控制删除指定Redis键的确认对话框的显示状态
const deleteSpecifyDataVisible = ref(false)
const inputSpecifyData = ref('')
const deleteSpecifyDedupVisible = ref(false)
const inputSpecifyDedup = ref('')
const deleteSpecifyRawVisible = ref(false)
const inputSpecifyRaw = ref('')
const getInfo = () => {
if (value.value != '') {
axios.get('/api/token/info', {
params: {
token: value.value
}
}).then(res => {
if (res.status == 200) {
result.value = res.data.result
}
})
}
}
const deleteDedup = () => {
axios.delete('/api/token/info', {
params: {
token: value.value,
dedup_bf: "all"
}
}).then(res => {
getInfo()
})
}
const deleteRedis = () => {
axios.delete('/api/token/info', {
params: {
token: value.value,
cache_list: "all",
}
}).then(res => {
getInfo()
})
}
getInfo()
setInterval(getInfo, 5000)
watch(value, (newValue) => {
getInfo()
})
axios.get('/api/token').then(res => {
if (res.status == 200) {
res.data.result.forEach((item: any) => {
options.value.push(item.token)
})
}
})
const deleteSpecifyData = () => {
axios.delete('/api/token/info', {
params: {
token: value.value,
both_number: inputSpecifyData.value,
}
}).then(res => {
getInfo()
deleteSpecifyDataVisible.value = false
})
}
const deleteSpecifyDedup = () => {
axios.delete('/api/token/info', {
params: {
token: value.value,
dedup_bf: inputSpecifyDedup.value,
}
}).then(res => {
getInfo()
deleteSpecifyDedupVisible.value = false
})
}
const deleteSpecifyRaw = () => {
axios.delete('/api/token/info', {
params: {
token: value.value,
cache_list: inputSpecifyRaw.value,
}
}).then(res => {
getInfo()
deleteSpecifyRawVisible.value = false
})
}
</script>
<template>
<div v-if="!useCounterStore().isAdmin">
<el-alert title="您没有权限访问此页面" type="error" center show-icon/>
</div>
<div v-if="useCounterStore().isAdmin">
<b>当前Token</b>
<el-select v-model="value" placeholder="选择Token" style="width: 240px">
<el-option
v-for="item in options"
:key="item"
:value="item"
/>
</el-select>
<el-divider/>
<b>Token信息每5秒刷新</b>
<el-button type="primary" plain @click="getInfo">手动刷新</el-button>
<el-descriptions
direction="vertical"
:column="4"
border
>
<el-descriptions-item label="去重对象" label-width="150px">
<el-tag>{{ result?.dedup_object }}</el-tag>
</el-descriptions-item>
<el-descriptions-item label="上传数据格式" label-width="150px">
{{ result?.data_format }}
</el-descriptions-item>
<el-descriptions-item label="去重参考值数量" label-width="150px">
{{ result?.dedup_items_number }}
</el-descriptions-item>
<el-descriptions-item label="原始数据数量" label-width="150px">
{{ result?.cache_list_number }}
</el-descriptions-item>
</el-descriptions>
<p><b>管理</b></p>
<el-button type="danger" @click="deleteDedup">删除全部去重参考值</el-button>
<el-button type="danger" @click="deleteRedis">删除全部原始数据</el-button>
<div style="margin-top: 10px">
<el-button type="danger" @click="deleteSpecifyDedupVisible=true">删除指定数量去重参考值</el-button>
<el-button type="danger" @click="deleteSpecifyRawVisible=true">删除指定数量原始数据</el-button>
</div>
<div style="margin-top: 10px">
<el-button type="danger" @click="deleteSpecifyDataVisible=true">
删除指定数量的数据去重参考值+原始数据
</el-button>
</div>
<!--弹窗输入-->
<el-dialog v-model="deleteSpecifyDedupVisible" title="删除指定数量去重参考值" width="400">
<el-input v-model="inputSpecifyDedup" style="width: 200px" placeholder="请输入删除数量"/>
<template #footer>
<el-button type="primary" @click="deleteSpecifyDedup">
确定
</el-button>
</template>
</el-dialog>
<el-dialog v-model="deleteSpecifyRawVisible" title="删除指定数量原始数据" width="400">
<el-input v-model="inputSpecifyRaw" style="width: 200px" placeholder="请输入删除数量"/>
<template #footer>
<el-button type="primary" @click="deleteSpecifyRaw">
确定
</el-button>
</template>
</el-dialog>
<el-dialog v-model="deleteSpecifyDataVisible" title="删除指定数量的数据" width="400">
<el-input v-model="inputSpecifyData" style="width: 200px" placeholder="请输入删除数量"/>
<template #footer>
<el-button type="primary" @click="deleteSpecifyData">
确定
</el-button>
</template>
</el-dialog>
</div>
</template>
<style scoped>
</style>