mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-05-31 21:30:33 +08:00
优化缓存管理页面
This commit is contained in:
@@ -1395,9 +1395,11 @@ export default {
|
||||
settingsSaveFailed: 'Failed to save subscription basic settings!',
|
||||
},
|
||||
cache: {
|
||||
title: 'Cache',
|
||||
description: 'Site cache and media recognition data cache management',
|
||||
subtitle: 'Manage cached site resources',
|
||||
title: 'Cache Management',
|
||||
subtitle: 'Manage torrent cache data',
|
||||
filterByTitle: 'Filter by Title',
|
||||
filterBySite: 'Filter by Site',
|
||||
selectSite: 'Select Site',
|
||||
refresh: 'Refresh Cache',
|
||||
deleteSelected: 'Delete Selected',
|
||||
clearAll: 'Clear All Cache',
|
||||
|
||||
@@ -1375,9 +1375,11 @@ export default {
|
||||
settingsSaveFailed: '订阅基础设置保存失败!',
|
||||
},
|
||||
cache: {
|
||||
title: '缓存',
|
||||
description: '种子缓存、图片文件缓存管理',
|
||||
title: '缓存管理',
|
||||
subtitle: '管理缓存的站点资源',
|
||||
filterByTitle: '按标题筛选',
|
||||
filterBySite: '按站点筛选',
|
||||
selectSite: '选择站点',
|
||||
refresh: '刷新缓存',
|
||||
deleteSelected: '删除选中',
|
||||
clearAll: '清空缓存',
|
||||
|
||||
@@ -1379,6 +1379,9 @@ export default {
|
||||
title: '緩存',
|
||||
description: '種子緩存、圖片文件緩存管理',
|
||||
subtitle: '管理緩存的站點資源',
|
||||
filterByTitle: '按標題篩選',
|
||||
filterBySite: '按站點篩選',
|
||||
selectSite: '選擇站點',
|
||||
refresh: '刷新緩存',
|
||||
deleteSelected: '刪除選中',
|
||||
clearAll: '清空緩存',
|
||||
|
||||
@@ -29,6 +29,30 @@ const cacheData = ref<TorrentCacheData>({
|
||||
data: [],
|
||||
})
|
||||
|
||||
// 筛选条件
|
||||
const titleFilter = ref('')
|
||||
const siteFilter = ref('')
|
||||
|
||||
// 获取所有站点选项
|
||||
const siteOptions = computed(() => {
|
||||
const sites = new Set<string>()
|
||||
cacheData.value.data.forEach(item => {
|
||||
if (item.site_name) {
|
||||
sites.add(item.site_name)
|
||||
}
|
||||
})
|
||||
return Array.from(sites).sort()
|
||||
})
|
||||
|
||||
// 筛选后的数据
|
||||
const filteredData = computed(() => {
|
||||
return cacheData.value.data.filter(item => {
|
||||
const titleMatch = item.title.toLowerCase().includes(titleFilter.value.toLowerCase())
|
||||
const siteMatch = !siteFilter.value || item.site_name === siteFilter.value
|
||||
return titleMatch && siteMatch
|
||||
})
|
||||
})
|
||||
|
||||
// 选中的缓存项
|
||||
const selectedItems = ref<string[]>([])
|
||||
|
||||
@@ -43,8 +67,8 @@ const doubanId = ref<string | undefined>()
|
||||
|
||||
const tableStyle = computed(() => {
|
||||
return appMode
|
||||
? 'height: calc(100vh - 17rem - env(safe-area-inset-bottom) - 6.5rem)'
|
||||
: 'height: calc(100vh - 17rem - env(safe-area-inset-bottom)'
|
||||
? 'height: calc(100vh - 20rem - env(safe-area-inset-bottom) - 6.5rem)'
|
||||
: 'height: calc(100vh - 20rem - env(safe-area-inset-bottom)'
|
||||
})
|
||||
|
||||
// 调用API加载缓存数据
|
||||
@@ -197,6 +221,11 @@ function getMediaTypeColor(type: string): string {
|
||||
}
|
||||
}
|
||||
|
||||
// 打开详情页面
|
||||
function openPageUrl(url: string) {
|
||||
window.open(url, '_blank')
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
loadCacheData()
|
||||
})
|
||||
@@ -236,6 +265,32 @@ onMounted(() => {
|
||||
</template>
|
||||
</VCardItem>
|
||||
|
||||
<!-- 筛选框 -->
|
||||
<VCardText>
|
||||
<VRow>
|
||||
<VCol cols="12" md="6">
|
||||
<VTextField
|
||||
v-model="titleFilter"
|
||||
:label="t('setting.cache.filterByTitle')"
|
||||
prepend-inner-icon="mdi-magnify"
|
||||
clearable
|
||||
density="compact"
|
||||
/>
|
||||
</VCol>
|
||||
<VCol cols="12" md="6">
|
||||
<VSelect
|
||||
v-model="siteFilter"
|
||||
:label="t('setting.cache.filterBySite')"
|
||||
:items="siteOptions"
|
||||
prepend-inner-icon="mdi-web"
|
||||
clearable
|
||||
density="compact"
|
||||
:placeholder="t('setting.cache.selectSite')"
|
||||
/>
|
||||
</VCol>
|
||||
</VRow>
|
||||
</VCardText>
|
||||
|
||||
<!-- 缓存列表 -->
|
||||
<VDataTable
|
||||
v-model="selectedItems"
|
||||
@@ -249,7 +304,7 @@ onMounted(() => {
|
||||
{ title: t('setting.cache.recognitionResult'), key: 'media_info', sortable: false, width: '200px' },
|
||||
{ title: t('setting.cache.actions'), key: 'actions', sortable: false, width: '150px' },
|
||||
]"
|
||||
:items="cacheData.data"
|
||||
:items="filteredData"
|
||||
:loading="loading"
|
||||
item-value="hash"
|
||||
show-select
|
||||
@@ -345,7 +400,7 @@ onMounted(() => {
|
||||
size="small"
|
||||
color="info"
|
||||
variant="text"
|
||||
:href="item.page_url"
|
||||
@click="openPageUrl(item.page_url || '')"
|
||||
target="_blank"
|
||||
>
|
||||
<VIcon size="16">mdi-open-in-new</VIcon>
|
||||
|
||||
Reference in New Issue
Block a user