admin update
This commit is contained in:
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user