dynamic calc
This commit is contained in:
@@ -14,7 +14,7 @@
|
|||||||
{
|
{
|
||||||
"title": "Windows 清理工具",
|
"title": "Windows 清理工具",
|
||||||
"width": 1400,
|
"width": 1400,
|
||||||
"height": 950
|
"height": 900
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"security": {
|
"security": {
|
||||||
|
|||||||
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 cleanResult = ref<CleanResult | null>(null);
|
||||||
const treeData = ref<FileNode[]>([]);
|
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 showModal = ref(false);
|
||||||
const modalTitle = ref("");
|
const modalTitle = ref("");
|
||||||
@@ -313,19 +328,23 @@ function splitSize(sizeStr: string | number) {
|
|||||||
<div class="result-stats">
|
<div class="result-stats">
|
||||||
<div class="stat-item">
|
<div class="stat-item">
|
||||||
<span class="stat-value">
|
<span class="stat-value">
|
||||||
{{ splitSize(fastScanResult.total_size).value }}
|
{{ splitSize(selectedStats.sizeStr).value }}
|
||||||
<span class="unit">{{ splitSize(fastScanResult.total_size).unit }}</span>
|
<span class="unit">{{ splitSize(selectedStats.sizeStr).unit }}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="stat-label">预计释放</span>
|
<span class="stat-label">预计释放</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="stat-divider"></div>
|
<div class="stat-divider"></div>
|
||||||
<div class="stat-item">
|
<div class="stat-item">
|
||||||
<span class="stat-value">{{ fastScanResult.total_count }}</span>
|
<span class="stat-value">{{ selectedStats.count }}</span>
|
||||||
<span class="stat-label">文件数量</span>
|
<span class="stat-label">文件数量</span>
|
||||||
</div>
|
</div>
|
||||||
</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 ? '正在清理...' : '立即清理' }}
|
{{ isCleaning ? '正在清理...' : '立即清理' }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user