dynamic calc
This commit is contained in:
27
src/App.vue
27
src/App.vue
@@ -29,6 +29,21 @@ const fastScanResult = ref<FastScanResult | null>(null);
|
||||
const cleanResult = ref<CleanResult | null>(null);
|
||||
const treeData = ref<FileNode[]>([]);
|
||||
|
||||
// --- 动态汇总计算 ---
|
||||
import { computed } from "vue";
|
||||
|
||||
const selectedStats = computed(() => {
|
||||
if (!fastScanResult.value) return { sizeStr: "0 B", count: 0, hasSelection: false };
|
||||
const enabledItems = fastScanResult.value.items.filter(i => i.enabled);
|
||||
const totalBytes = enabledItems.reduce((acc, i) => acc + i.size, 0);
|
||||
const totalCount = enabledItems.reduce((acc, i) => acc + i.count, 0);
|
||||
return {
|
||||
sizeStr: formatItemSize(totalBytes),
|
||||
count: totalCount,
|
||||
hasSelection: enabledItems.length > 0
|
||||
};
|
||||
});
|
||||
|
||||
// --- 弹窗状态 ---
|
||||
const showModal = ref(false);
|
||||
const modalTitle = ref("");
|
||||
@@ -313,19 +328,23 @@ function splitSize(sizeStr: string | number) {
|
||||
<div class="result-stats">
|
||||
<div class="stat-item">
|
||||
<span class="stat-value">
|
||||
{{ splitSize(fastScanResult.total_size).value }}
|
||||
<span class="unit">{{ splitSize(fastScanResult.total_size).unit }}</span>
|
||||
{{ splitSize(selectedStats.sizeStr).value }}
|
||||
<span class="unit">{{ splitSize(selectedStats.sizeStr).unit }}</span>
|
||||
</span>
|
||||
<span class="stat-label">预计释放</span>
|
||||
</div>
|
||||
<div class="stat-divider"></div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-value">{{ fastScanResult.total_count }}</span>
|
||||
<span class="stat-value">{{ selectedStats.count }}</span>
|
||||
<span class="stat-label">文件数量</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn-primary main-btn" @click="startFastClean" :disabled="isCleaning">
|
||||
<button
|
||||
class="btn-primary main-btn"
|
||||
@click="startFastClean"
|
||||
:disabled="isCleaning || !selectedStats.hasSelection"
|
||||
>
|
||||
{{ isCleaning ? '正在清理...' : '立即清理' }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user