优化订阅和整理对话框,添加剧集组选项和编号,调整布局以提升用户体验

This commit is contained in:
jxxghp
2025-04-03 18:35:21 +08:00
parent 43beb1df95
commit 50ffcc6e92
3 changed files with 89 additions and 37 deletions

View File

@@ -221,7 +221,7 @@ onUnmounted(() => {
</script>
<template>
<VDialog scrollable max-width="50rem" :fullscreen="!display.mdAndUp.value">
<VDialog scrollable max-width="45rem" :fullscreen="!display.mdAndUp.value">
<VCard :title="dialogTitle" class="rounded-t">
<DialogCloseBtn @click="emit('close')" />
<VDivider />
@@ -263,7 +263,7 @@ onUnmounted(() => {
</VCol>
</VRow>
<VRow>
<VCol cols="12" md="4">
<VCol cols="12" md="6">
<VSelect
v-model="transferForm.type_name"
label="类型"
@@ -276,7 +276,7 @@ onUnmounted(() => {
persistent-hint
/>
</VCol>
<VCol cols="12" md="4">
<VCol cols="12" md="6">
<VTextField
v-if="mediaSource === 'themoviedb'"
v-model="transferForm.tmdbid"
@@ -302,19 +302,37 @@ onUnmounted(() => {
@click:append-inner="mediaSelectorDialog = true"
/>
</VCol>
<VCol cols="12" md="4">
<VSelect
v-show="transferForm.type_name === '电视剧'"
v-model.number="transferForm.season"
label="季"
:items="seasonItems"
hint="指定季数"
</VRow>
<VRow v-show="transferForm.type_name === '电视剧'">
<VCol cols="12" md="6">
<VTextField
v-model="transferForm.episode_group"
label="剧集组编号"
placeholder="手动查询剧集组"
hint="指定剧集组"
persistent-hint
/>
</VCol>
</VRow>
<VRow>
<VCol cols="12" md="8">
<VCol cols="12" md="3">
<VSelect
v-model.number="transferForm.season"
label="季"
:items="seasonItems"
hint="第几季"
persistent-hint
/>
</VCol>
<VCol cols="12" md="3">
<VTextField
v-model="transferForm.episode_detail"
:disabled="disableEpisodeDetail"
label="集"
placeholder="起始集,终止集"
hint="集数或范围如1或1,2"
persistent-hint
/>
</VCol>
<VCol cols="12" md="6">
<VTextField
v-model="transferForm.episode_format"
label="集数定位"
@@ -323,26 +341,7 @@ onUnmounted(() => {
persistent-hint
/>
</VCol>
<VCol cols="12" md="4">
<VTextField
v-model="transferForm.episode_detail"
:disabled="disableEpisodeDetail"
label="指定集数"
placeholder="起始集,终止集如1或1,2"
hint="指定集数或范围如1或1,2"
persistent-hint
/>
</VCol>
<VCol cols="12" md="4">
<VTextField
v-model="transferForm.episode_part"
label="指定Part"
placeholder="如part1"
hint="指定Part如part1"
persistent-hint
/>
</VCol>
<VCol cols="12" md="4">
<VCol cols="12" md="6">
<VTextField
v-model="transferForm.episode_offset"
label="集数偏移"
@@ -351,7 +350,18 @@ onUnmounted(() => {
persistent-hint
/>
</VCol>
<VCol cols="12" md="4">
</VRow>
<VRow>
<VCol cols="12" md="6">
<VTextField
v-model="transferForm.episode_part"
label="指定Part"
placeholder="如part1"
hint="指定Part如part1"
persistent-hint
/>
</VCol>
<VCol cols="12" md="6">
<VTextField
v-model.number="transferForm.min_filesize"
label="最小文件大小MB"

View File

@@ -61,6 +61,17 @@ const $toast = useToast()
// 下载器选项
const downloaderOptions = ref<{ title: string; value: string }[]>([])
// 剧集组选项
const episodeGroupOptions = ref<{ title: string; subtitle: string; value: number }[]>([])
// 剧集组选项属性
function episodeGroupItemProps(item: { title: string; subtitle: string }) {
return {
title: item.title,
subtitle: item.subtitle,
}
}
async function loadDownloaderSetting() {
try {
const downloaders: DownloaderConf[] = await api.get('download/clients')
@@ -178,6 +189,19 @@ async function getSubscribeInfo() {
subscribeForm.value = result
subscribeForm.value.best_version = subscribeForm.value.best_version === 1
subscribeForm.value.search_imdbid = subscribeForm.value.search_imdbid === 1
// 从result.episode_groups中获取剧集组
if (result?.episode_groups) {
episodeGroupOptions.value = (result?.episode_groups as { id: number; name: string; episode_count: number }[]).map(
item => {
return {
title: item.name,
subtitle: `${item.episode_count}`,
value: item.id,
}
},
)
}
} catch (e) {
console.log(e)
}
@@ -317,7 +341,7 @@ onMounted(() => {
</script>
<template>
<VDialog scrollable max-width="50rem" :fullscreen="!display.mdAndUp.value">
<VDialog scrollable max-width="45rem" :fullscreen="!display.mdAndUp.value">
<VCard
:title="`${
props.default
@@ -480,7 +504,7 @@ onMounted(() => {
</VCol>
</VRow>
<VRow>
<VCol cols="12" md="6">
<VCol cols="12">
<VSelect
v-model="subscribeForm.filter_groups"
:items="filterRuleGroupOptions"
@@ -492,6 +516,16 @@ onMounted(() => {
persistent-hint
/>
</VCol>
<VCol v-if="!props.default && subscribeForm.type === '电视剧'" cols="12" md="6">
<VSelect
v-model="subscribeForm.episode_group"
:items="episodeGroupOptions"
:item-props="episodeGroupItemProps"
label="指定剧集组"
hint="按特定剧集组识别和刮削"
persistent-hint
/>
</VCol>
<VCol cols="12" md="6" v-if="!props.default">
<VTextField
v-model="subscribeForm.media_category"