新增数据重置功能:管理员可一键清空所有行情数据,需输入确认文字防误操作
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, ref } from 'vue'
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { useAuthStore } from '@/stores/auth'
|
||||
import { useThemeStore } from '@/stores/theme'
|
||||
import { useMobile } from '@/composables/useMobile'
|
||||
import { resetAllData } from '@/api/admin'
|
||||
|
||||
const auth = useAuthStore()
|
||||
const theme = useThemeStore()
|
||||
@@ -12,6 +14,7 @@ const route = useRoute()
|
||||
const { isMobile } = useMobile()
|
||||
|
||||
const drawerOpen = ref(false)
|
||||
const resetting = ref(false)
|
||||
|
||||
const showLayout = computed(() => route.meta.layout !== 'blank' && !!auth.token)
|
||||
|
||||
@@ -29,6 +32,26 @@ function logout() {
|
||||
function closeDrawer() {
|
||||
drawerOpen.value = false
|
||||
}
|
||||
|
||||
async function handleReset() {
|
||||
closeDrawer()
|
||||
try {
|
||||
await ElMessageBox.prompt('此操作将清空所有行情数据(candles + scores),不可恢复。请输入"确认重置"后继续:', '数据重置', {
|
||||
confirmButtonText: '确认重置',
|
||||
cancelButtonText: '取消',
|
||||
inputPattern: /^确认重置$/,
|
||||
inputErrorMessage: '请输入"确认重置"',
|
||||
type: 'warning',
|
||||
})
|
||||
resetting.value = true
|
||||
await resetAllData()
|
||||
ElMessage.success('已清空所有行情数据')
|
||||
} catch {
|
||||
// user cancelled
|
||||
} finally {
|
||||
resetting.value = false
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -47,6 +70,9 @@ function closeDrawer() {
|
||||
<el-menu-item index="/chart">K 线 / 持仓</el-menu-item>
|
||||
<el-menu-item index="/run">手动打分</el-menu-item>
|
||||
<el-menu-item v-if="auth.isAdmin" index="/admin/users">用户管理</el-menu-item>
|
||||
<el-menu-item v-if="auth.isAdmin" :index="() => {}" @click="handleReset" :disabled="resetting">
|
||||
数据重置
|
||||
</el-menu-item>
|
||||
</el-menu>
|
||||
</el-aside>
|
||||
|
||||
|
||||
5
web/frontend/src/api/admin.ts
Normal file
5
web/frontend/src/api/admin.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import client from './client'
|
||||
|
||||
export function resetAllData() {
|
||||
return client.post('/admin/reset-data').then((r) => r.data)
|
||||
}
|
||||
Reference in New Issue
Block a user