dynamic ttl and limit

This commit is contained in:
Timi
2026-01-05 15:20:33 +08:00
parent bf5405143d
commit ccee81efdd
3 changed files with 23 additions and 9 deletions

View File

@ -1,5 +1,5 @@
<template> <template>
<root-layout class="root diselect" author="夜雨" icp="粤ICP备2025368555号-1" domain="imyeyu.com" text> <root-layout v-if="ready" class="root diselect" author="夜雨" icp="粤ICP备2025368555号-1" domain="imyeyu.com" text>
<router-view /> <router-view />
<t-back-top class="to-top" size="small"> <t-back-top class="to-top" size="small">
<icon name="arrow_1_n" :scale="2" /> <icon name="arrow_1_n" :scale="2" />
@ -9,7 +9,18 @@
<script lang="ts" setup> <script lang="ts" setup>
import { RootLayout } from "../../timi-tdesign-pc"; import { RootLayout } from "../../timi-tdesign-pc";
import { Icon } from "../../timi-web"; import { Icon, SettingMapper } from "../../timi-web";
const ready = ref(false);
onMounted(async () => {
await SettingMapper.loadSetting(
"TEMP_FILE_TTL_MIN",
"TEMP_FILE_TTL_MAX",
"TEMP_FILE_TTL_DEFAULT",
"TEMP_FILE_LIMIT"
);
ready.value = true;
});
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -35,10 +35,10 @@
<div class="ttl-selector" @click.stop> <div class="ttl-selector" @click.stop>
<span class="label">缓存时长</span> <span class="label">缓存时长</span>
<t-radio-group v-model="ttl" variant="primary-filled" size="small"> <t-radio-group v-model="ttl" variant="primary-filled" size="small">
<t-radio-button :value="Time.H * 3">3 小时</t-radio-button> <t-radio-button :value="ttlMin" v-text="Time.toString(ttlMin)"></t-radio-button>
<t-radio-button :value="Time.H * 6">6 小时</t-radio-button>
<t-radio-button :value="Time.D">1 </t-radio-button> <t-radio-button :value="Time.D">1 </t-radio-button>
<t-radio-button :value="Time.D * 3">3 </t-radio-button> <t-radio-button :value="ttlDef" v-text="Time.toString(ttlDef)"></t-radio-button>
<t-radio-button :value="ttlMax" v-text="Time.toString(ttlMax)"></t-radio-button>
</t-radio-group> </t-radio-group>
</div> </div>
</div> </div>
@ -83,14 +83,17 @@ import { MessagePlugin } from "tdesign-vue-next";
import TempFileAPI from "@/api/TempFileAPI.ts"; import TempFileAPI from "@/api/TempFileAPI.ts";
import { useFileHistoryStore } from "@/store/fileHistory"; import { useFileHistoryStore } from "@/store/fileHistory";
import { type Item, Status } from "@/type/TempFile.ts"; import { type Item, Status } from "@/type/TempFile.ts";
import { Icon, IOSize, Time } from "timi-web"; import { Icon, IOSize, SettingMapper, Time } from "timi-web";
const fileHistoryStore = useFileHistoryStore(); const fileHistoryStore = useFileHistoryStore();
const fileInput = ref<HTMLInputElement | null>(null); const fileInput = ref<HTMLInputElement | null>(null);
const isDragging = ref(false); const isDragging = ref(false);
const uploadList = ref<Item[]>([]); const uploadList = ref<Item[]>([]);
const ttl = ref(Time.H * 6); // 默认 6 小时 const ttlMin = Time.parseToMS(SettingMapper.getValue("TEMP_FILE_TTL_MIN")!);
const ttlMax = Time.parseToMS(SettingMapper.getValue("TEMP_FILE_TTL_MAX")!);
const ttlDef = Time.parseToMS(SettingMapper.getValue("TEMP_FILE_TTL_DEFAULT")!);
const ttl = ref(ttlDef);
/** 文件选择 */ /** 文件选择 */
function triggerFileInput() { function triggerFileInput() {

View File

@ -8,7 +8,7 @@
<li v-text="'已上传文件仅自己可见,分享 ID 可直接下载'"></li> <li v-text="'已上传文件仅自己可见,分享 ID 可直接下载'"></li>
<li> <li>
<span>每个 IP 限制缓存</span> <span>每个 IP 限制缓存</span>
<strong class="word-space pink">10 GB</strong> <strong class="word-space pink" v-text="SettingMapper.getValue('TEMP_FILE_LIMIT')"></strong>
<span>容量</span> <span>容量</span>
</li> </li>
</ul> </ul>
@ -31,7 +31,7 @@ import FileUpload from "@/components/FileUpload.vue";
import FileDownload from "@/components/FileDownload.vue"; import FileDownload from "@/components/FileDownload.vue";
import FileHistoryList from "@/components/FileHistoryList.vue"; import FileHistoryList from "@/components/FileHistoryList.vue";
import { useFileHistoryStore } from "@/store/fileHistory.ts"; import { useFileHistoryStore } from "@/store/fileHistory.ts";
import { Time } from "../../../timi-web"; import { SettingMapper, Time } from "../../../timi-web";
const fileHistoryStore = useFileHistoryStore(); const fileHistoryStore = useFileHistoryStore();
onMounted(() => setInterval(fileHistoryStore.cleanExpiredFiles, Time.S)); onMounted(() => setInterval(fileHistoryStore.cleanExpiredFiles, Time.S));