admin update

This commit is contained in:
jeremygan2021
2026-02-17 12:17:23 +08:00
parent a4475e743d
commit f6c361dd13
3 changed files with 101 additions and 228 deletions

View File

@@ -171,24 +171,38 @@
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="bg-white rounded-lg shadow p-6">
<h3 class="text-lg font-bold mb-4 text-gray-700">自动清理配置</h3>
<div class="space-y-3">
<div class="flex justify-between border-b pb-2">
<span class="text-gray-600">状态</span>
<span class="font-mono bg-green-100 text-green-800 px-2 rounded text-sm">运行中</span>
<div class="space-y-4">
<div class="flex justify-between items-center border-b pb-2">
<span class="text-gray-600">启用自动清理</span>
<label class="relative inline-flex items-center cursor-pointer">
<input type="checkbox" v-model="cleanupConfig.enabled" class="sr-only peer">
<div class="w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-600"></div>
</label>
</div>
<div class="flex justify-between border-b pb-2">
<span class="text-gray-600">文件保留时长</span>
<span class="font-mono">3600 秒 (1小时)</span>
<div class="border-b pb-2">
<div class="flex justify-between items-center mb-1">
<span class="text-gray-600">文件保留时长 (秒)</span>
<span class="text-xs text-gray-500">{{ (cleanupConfig.lifetime / 3600).toFixed(1) }} 小时</span>
</div>
<input type="number" v-model.number="cleanupConfig.lifetime" class="w-full border rounded px-2 py-1 text-sm">
</div>
<div class="flex justify-between border-b pb-2">
<span class="text-gray-600">检查间隔</span>
<span class="font-mono">600 秒 (10分钟)</span>
<div class="border-b pb-2">
<div class="flex justify-between items-center mb-1">
<span class="text-gray-600">检查间隔 (秒)</span>
<span class="text-xs text-gray-500">{{ (cleanupConfig.interval / 60).toFixed(1) }} 分钟</span>
</div>
<input type="number" v-model.number="cleanupConfig.interval" class="w-full border rounded px-2 py-1 text-sm">
</div>
<div class="mt-4">
<button @click="triggerCleanup" :disabled="cleaning" class="w-full bg-yellow-500 hover:bg-yellow-600 text-white font-bold py-2 px-4 rounded transition">
<i class="fas fa-broom mr-2"></i> {{ cleaning ? '清理中...' : '立即执行清理' }}
<div class="flex gap-2 mt-4">
<button @click="saveCleanupConfig" class="flex-1 bg-blue-500 hover:bg-blue-600 text-white font-bold py-2 px-4 rounded transition text-sm">
<i class="fas fa-save mr-2"></i> 保存配置
</button>
<button @click="triggerCleanup" :disabled="cleaning" class="flex-1 bg-yellow-500 hover:bg-yellow-600 text-white font-bold py-2 px-4 rounded transition text-sm">
<i class="fas fa-broom mr-2"></i> {{ cleaning ? '清理中...' : '立即清理' }}
</button>
<p class="text-xs text-gray-500 mt-2 text-center">将删除所有超过保留时长的文件</p>
</div>
</div>
</div>
@@ -247,6 +261,11 @@
const deviceInfo = ref('Loading...');
const currentModel = ref('');
const availableModels = ref([]);
const cleanupConfig = ref({
enabled: true,
lifetime: 3600,
interval: 600
});
// 检查登录状态
const checkLogin = () => {
@@ -306,11 +325,28 @@
deviceInfo.value = res.data.device;
currentModel.value = res.data.current_qwen_model;
availableModels.value = res.data.available_qwen_models;
if (res.data.cleanup_config) {
cleanupConfig.value = res.data.cleanup_config;
}
} catch (e) {
console.error(e);
}
};
const saveCleanupConfig = async () => {
try {
const formData = new FormData();
formData.append('enabled', cleanupConfig.value.enabled);
formData.append('lifetime', cleanupConfig.value.lifetime);
formData.append('interval', cleanupConfig.value.interval);
const res = await axios.post('/admin/api/config/cleanup', formData);
alert(res.data.message);
} catch (e) {
alert('保存配置失败: ' + (e.response?.data?.detail || e.message));
}
};
const updateModel = async () => {
try {
const formData = new FormData();
@@ -415,7 +451,8 @@
enterDir, navigateUp, deleteFile, triggerCleanup,
viewResult, previewImage, isImage, previewUrl,
formatDate, getTypeBadgeClass, cleaning, deviceInfo,
currentModel, availableModels, updateModel
currentModel, availableModels, updateModel,
cleanupConfig, saveCleanupConfig
};
}
}).mount('#app');