mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-06 16:16:42 +08:00
fix
This commit is contained in:
@@ -18,22 +18,28 @@ function handleImport() {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<VCard
|
<VDialog
|
||||||
:title="props.title"
|
width="40rem"
|
||||||
class="rounded-t"
|
scrollable
|
||||||
|
max-height="85vh"
|
||||||
>
|
>
|
||||||
<DialogCloseBtn @click="emit('close')" />
|
<VCard
|
||||||
<VCardText class="pt-2">
|
:title="props.title"
|
||||||
<VTextarea v-model="codeString" />
|
class="rounded-t"
|
||||||
</VCardText>
|
>
|
||||||
<VCardActions>
|
<DialogCloseBtn @click="emit('close')" />
|
||||||
<VSpacer />
|
<VCardText class="pt-2">
|
||||||
<VBtn
|
<VTextarea v-model="codeString" />
|
||||||
variant="tonal"
|
</VCardText>
|
||||||
@click="handleImport"
|
<VCardActions>
|
||||||
>
|
<VSpacer />
|
||||||
导入
|
<VBtn
|
||||||
</VBtn>
|
variant="tonal"
|
||||||
</VCardActions>
|
@click="handleImport"
|
||||||
</VCard>
|
>
|
||||||
|
导入
|
||||||
|
</VBtn>
|
||||||
|
</VCardActions>
|
||||||
|
</VCard>
|
||||||
|
</VDialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -266,164 +266,169 @@ onMounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<VCard
|
<VDialog
|
||||||
:title="`${props.default ? `${props.type}默认订阅规则` : `编辑订阅 - ${subscribeForm.name} ${subscribeForm.season ? `第 ${subscribeForm.season} 季` : ''}`}`"
|
scrollable
|
||||||
class="rounded-t"
|
max-width="60rem"
|
||||||
>
|
>
|
||||||
<VCardText class="pt-2">
|
<VCard
|
||||||
<DialogCloseBtn @click="emit('close')" />
|
:title="`${props.default ? `${props.type}默认订阅规则` : `编辑订阅 - ${subscribeForm.name} ${subscribeForm.season ? `第 ${subscribeForm.season} 季` : ''}`}`"
|
||||||
<VForm @submit.prevent="() => {}">
|
class="rounded-t"
|
||||||
<VRow>
|
>
|
||||||
<VCol
|
<VCardText class="pt-2">
|
||||||
cols="12"
|
<DialogCloseBtn @click="emit('close')" />
|
||||||
md="8"
|
<VForm @submit.prevent="() => {}">
|
||||||
>
|
<VRow>
|
||||||
<VTextField
|
<VCol
|
||||||
v-if="!props.default"
|
cols="12"
|
||||||
v-model="subscribeForm.keyword"
|
md="8"
|
||||||
label="搜索关键词"
|
>
|
||||||
hint="设定搜索关键词后,将使用此关键词搜索站点资源,否则自动使用themoviedb中的名称搜索"
|
<VTextField
|
||||||
/>
|
v-if="!props.default"
|
||||||
</VCol>
|
v-model="subscribeForm.keyword"
|
||||||
<VCol
|
label="搜索关键词"
|
||||||
v-if="subscribeForm.type === '电视剧'"
|
hint="设定搜索关键词后,将使用此关键词搜索站点资源,否则自动使用themoviedb中的名称搜索"
|
||||||
cols="12"
|
/>
|
||||||
md="2"
|
</VCol>
|
||||||
>
|
<VCol
|
||||||
<VTextField
|
v-if="subscribeForm.type === '电视剧'"
|
||||||
v-model="subscribeForm.total_episode"
|
cols="12"
|
||||||
label="总集数"
|
md="2"
|
||||||
:rules="[numberValidator]"
|
>
|
||||||
hint="设定剧集的总集数,以应对themoviedb中剧集信息未维护完整,导致提前结束订阅的情况"
|
<VTextField
|
||||||
/>
|
v-model="subscribeForm.total_episode"
|
||||||
</VCol>
|
label="总集数"
|
||||||
<VCol
|
:rules="[numberValidator]"
|
||||||
v-if="subscribeForm.type === '电视剧'"
|
hint="设定剧集的总集数,以应对themoviedb中剧集信息未维护完整,导致提前结束订阅的情况"
|
||||||
cols="12"
|
/>
|
||||||
md="2"
|
</VCol>
|
||||||
>
|
<VCol
|
||||||
<VTextField
|
v-if="subscribeForm.type === '电视剧'"
|
||||||
v-model="subscribeForm.start_episode"
|
cols="12"
|
||||||
label="开始集数"
|
md="2"
|
||||||
:rules="[numberValidator]"
|
>
|
||||||
hint="只订阅下载此集数及之后的剧集"
|
<VTextField
|
||||||
/>
|
v-model="subscribeForm.start_episode"
|
||||||
</VCol>
|
label="开始集数"
|
||||||
</VRow>
|
:rules="[numberValidator]"
|
||||||
<VRow>
|
hint="只订阅下载此集数及之后的剧集"
|
||||||
<VCol
|
/>
|
||||||
cols="12"
|
</VCol>
|
||||||
md="4"
|
</VRow>
|
||||||
>
|
<VRow>
|
||||||
<VSelect
|
<VCol
|
||||||
v-model="subscribeForm.quality"
|
cols="12"
|
||||||
label="质量"
|
md="4"
|
||||||
:items="qualityOptions"
|
>
|
||||||
/>
|
<VSelect
|
||||||
</VCol>
|
v-model="subscribeForm.quality"
|
||||||
<VCol
|
label="质量"
|
||||||
cols="12"
|
:items="qualityOptions"
|
||||||
md="4"
|
/>
|
||||||
>
|
</VCol>
|
||||||
<VSelect
|
<VCol
|
||||||
v-model="subscribeForm.resolution"
|
cols="12"
|
||||||
label="分辨率"
|
md="4"
|
||||||
:items="resolutionOptions"
|
>
|
||||||
/>
|
<VSelect
|
||||||
</VCol>
|
v-model="subscribeForm.resolution"
|
||||||
<VCol
|
label="分辨率"
|
||||||
cols="12"
|
:items="resolutionOptions"
|
||||||
md="4"
|
/>
|
||||||
>
|
</VCol>
|
||||||
<VSelect
|
<VCol
|
||||||
v-model="subscribeForm.effect"
|
cols="12"
|
||||||
label="特效"
|
md="4"
|
||||||
:items="effectOptions"
|
>
|
||||||
/>
|
<VSelect
|
||||||
</VCol>
|
v-model="subscribeForm.effect"
|
||||||
</VRow>
|
label="特效"
|
||||||
<VRow>
|
:items="effectOptions"
|
||||||
<VCol
|
/>
|
||||||
cols="12"
|
</VCol>
|
||||||
md="4"
|
</VRow>
|
||||||
>
|
<VRow>
|
||||||
<VTextField
|
<VCol
|
||||||
v-model="subscribeForm.include"
|
cols="12"
|
||||||
label="包含(关键字、正则式)"
|
md="4"
|
||||||
hint="支持正则表达式,多个关键字用 | 分隔表示或"
|
>
|
||||||
/>
|
<VTextField
|
||||||
</VCol>
|
v-model="subscribeForm.include"
|
||||||
<VCol
|
label="包含(关键字、正则式)"
|
||||||
cols="12"
|
hint="支持正则表达式,多个关键字用 | 分隔表示或"
|
||||||
md="4"
|
/>
|
||||||
>
|
</VCol>
|
||||||
<VTextField
|
<VCol
|
||||||
v-model="subscribeForm.exclude"
|
cols="12"
|
||||||
label="排除(关键字、正则式)"
|
md="4"
|
||||||
hint="支持正则表达式,多个关键字用 | 分隔表示或"
|
>
|
||||||
/>
|
<VTextField
|
||||||
</VCol>
|
v-model="subscribeForm.exclude"
|
||||||
<VCol
|
label="排除(关键字、正则式)"
|
||||||
cols="12"
|
hint="支持正则表达式,多个关键字用 | 分隔表示或"
|
||||||
md="4"
|
/>
|
||||||
>
|
</VCol>
|
||||||
<VSelect
|
<VCol
|
||||||
v-model="subscribeForm.sites"
|
cols="12"
|
||||||
:items="selectSitesOptions"
|
md="4"
|
||||||
chips
|
>
|
||||||
label="订阅站点"
|
<VSelect
|
||||||
multiple
|
v-model="subscribeForm.sites"
|
||||||
hint="只订阅选中的订阅站点,不选则订阅所有可订阅站点"
|
:items="selectSitesOptions"
|
||||||
/>
|
chips
|
||||||
</VCol>
|
label="订阅站点"
|
||||||
</VRow>
|
multiple
|
||||||
<VRow>
|
hint="只订阅选中的订阅站点,不选则订阅所有可订阅站点"
|
||||||
<VCol
|
/>
|
||||||
cols="12"
|
</VCol>
|
||||||
>
|
</VRow>
|
||||||
<VTextField
|
<VRow>
|
||||||
v-model="subscribeForm.save_path"
|
<VCol
|
||||||
label="保存路径"
|
cols="12"
|
||||||
hint="指定该订阅的下载保存路径,留空自动使用设定的下载目录"
|
>
|
||||||
/>
|
<VTextField
|
||||||
</VCol>
|
v-model="subscribeForm.save_path"
|
||||||
</VRow>
|
label="保存路径"
|
||||||
<VRow>
|
hint="指定该订阅的下载保存路径,留空自动使用设定的下载目录"
|
||||||
<VCol
|
/>
|
||||||
cols="12"
|
</VCol>
|
||||||
md="4"
|
</VRow>
|
||||||
>
|
<VRow>
|
||||||
<VSwitch
|
<VCol
|
||||||
v-model="subscribeForm.best_version"
|
cols="12"
|
||||||
label="洗版"
|
md="4"
|
||||||
hint="开启后不管媒体库是否存在,均会根据洗版优先级进行过滤下载,直到下载到了最高优先级的资源为止"
|
>
|
||||||
/>
|
<VSwitch
|
||||||
</VCol>
|
v-model="subscribeForm.best_version"
|
||||||
<VCol
|
label="洗版"
|
||||||
cols="12"
|
hint="开启后不管媒体库是否存在,均会根据洗版优先级进行过滤下载,直到下载到了最高优先级的资源为止"
|
||||||
md="4"
|
/>
|
||||||
>
|
</VCol>
|
||||||
<VSwitch
|
<VCol
|
||||||
v-model="subscribeForm.search_imdbid"
|
cols="12"
|
||||||
label="使用 ImdbID 搜索"
|
md="4"
|
||||||
hint="开启后将使用 ImdbID 搜索资源,搜索结果更精确,但不是所有站点都支持"
|
>
|
||||||
/>
|
<VSwitch
|
||||||
</VCol>
|
v-model="subscribeForm.search_imdbid"
|
||||||
</VRow>
|
label="使用 ImdbID 搜索"
|
||||||
</VForm>
|
hint="开启后将使用 ImdbID 搜索资源,搜索结果更精确,但不是所有站点都支持"
|
||||||
</VCardText>
|
/>
|
||||||
|
</VCol>
|
||||||
|
</VRow>
|
||||||
|
</VForm>
|
||||||
|
</VCardText>
|
||||||
|
|
||||||
<VCardActions>
|
<VCardActions>
|
||||||
<VBtn v-if="!props.default" color="error" @click="removeSubscribe">
|
<VBtn v-if="!props.default" color="error" @click="removeSubscribe">
|
||||||
取消订阅
|
取消订阅
|
||||||
</VBtn>
|
</VBtn>
|
||||||
<VSpacer />
|
<VSpacer />
|
||||||
<VBtn
|
<VBtn
|
||||||
variant="tonal"
|
variant="tonal"
|
||||||
@click="`${props.default ? saveDefaultSubscribeConfig() : updateSubscribeInfo()}`"
|
@click="`${props.default ? saveDefaultSubscribeConfig() : updateSubscribeInfo()}`"
|
||||||
>
|
>
|
||||||
保存
|
保存
|
||||||
</VBtn>
|
</VBtn>
|
||||||
</VCardActions>
|
</VCardActions>
|
||||||
</VCard>
|
</VCard>
|
||||||
|
</VDialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -105,93 +105,99 @@ const dropdownItems = ref([
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<VCard
|
<VDialog
|
||||||
class="mx-auto"
|
scrollable
|
||||||
width="100%"
|
max-width="50rem"
|
||||||
:title = "props.type + '订阅历史'"
|
|
||||||
>
|
>
|
||||||
<DialogCloseBtn @click="() => { emit('close') }" />
|
<VCard
|
||||||
<div
|
class="mx-auto"
|
||||||
v-if="!isRefreshed"
|
width="100%"
|
||||||
class="mt-12 w-full text-center text-gray-500 text-sm flex flex-col items-center"
|
:title = "props.type + '订阅历史'"
|
||||||
>
|
>
|
||||||
<VProgressCircular
|
<DialogCloseBtn @click="() => { emit('close') }" />
|
||||||
size="48"
|
<div
|
||||||
indeterminate
|
v-if="!isRefreshed"
|
||||||
color="primary"
|
class="mt-12 w-full text-center text-gray-500 text-sm flex flex-col items-center"
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<VList
|
|
||||||
lines="two"
|
|
||||||
>
|
|
||||||
<VInfiniteScroll
|
|
||||||
mode="intersect"
|
|
||||||
side="end"
|
|
||||||
:items="historyList"
|
|
||||||
class="overflow-hidden"
|
|
||||||
@load="loadHistory"
|
|
||||||
>
|
>
|
||||||
<template #loading />
|
<VProgressCircular
|
||||||
<template v-for="(item, i) in historyList" :key="i">
|
size="48"
|
||||||
<VListItem>
|
indeterminate
|
||||||
<template #prepend>
|
color="primary"
|
||||||
<VImg
|
/>
|
||||||
height="75"
|
</div>
|
||||||
width="50"
|
<VList
|
||||||
:src="item.poster"
|
lines="two"
|
||||||
aspect-ratio="2/3"
|
>
|
||||||
class="object-cover rounded shadow ring-gray-500 me-3"
|
<VInfiniteScroll
|
||||||
cover
|
v-if="historyList.length > 0"
|
||||||
>
|
mode="intersect"
|
||||||
<template #placeholder>
|
side="end"
|
||||||
<div class="w-full h-full">
|
:items="historyList"
|
||||||
<VSkeletonLoader class="object-cover aspect-w-2 aspect-h-3" />
|
class="overflow-hidden"
|
||||||
</div>
|
@load="loadHistory"
|
||||||
</template>
|
>
|
||||||
</VImg>
|
<template #loading />
|
||||||
</template>
|
<template v-for="(item, i) in historyList" :key="i">
|
||||||
<VListItemTitle v-if="item.type == '电视剧'">
|
<VListItem>
|
||||||
{{ item.name }} <span class="text-sm">第 {{ item.season }} 季</span>
|
<template #prepend>
|
||||||
</VListItemTitle>
|
<VImg
|
||||||
<VListItemTitle v-else>
|
height="75"
|
||||||
{{ item.name }}
|
width="50"
|
||||||
</VListItemTitle>
|
:src="item.poster"
|
||||||
<VListItemSubtitle class="mt-2">{{ formatDateDifference(item.date) }}</VListItemSubtitle>
|
aspect-ratio="2/3"
|
||||||
<VListItemSubtitle class="mt-2">{{ item.description }}</VListItemSubtitle>
|
class="object-cover rounded shadow ring-gray-500 me-3"
|
||||||
<template #append>
|
cover
|
||||||
<div class="me-n3">
|
>
|
||||||
<IconBtn>
|
<template #placeholder>
|
||||||
<VIcon
|
<div class="w-full h-full">
|
||||||
icon="mdi-dots-vertical"
|
<VSkeletonLoader class="object-cover aspect-w-2 aspect-h-3" />
|
||||||
/>
|
</div>
|
||||||
<VMenu
|
</template>
|
||||||
activator="parent"
|
</VImg>
|
||||||
close-on-content-click
|
</template>
|
||||||
>
|
<VListItemTitle v-if="item.type == '电视剧'">
|
||||||
<VList>
|
{{ item.name }} <span class="text-sm">第 {{ item.season }} 季</span>
|
||||||
<VListItem
|
</VListItemTitle>
|
||||||
v-for="(item, i) in dropdownItems"
|
<VListItemTitle v-else>
|
||||||
:key="i"
|
{{ item.name }}
|
||||||
variant="plain"
|
</VListItemTitle>
|
||||||
:base-color="item.color"
|
<VListItemSubtitle class="mt-2">{{ formatDateDifference(item.date) }}</VListItemSubtitle>
|
||||||
@click="item.props.click"
|
<VListItemSubtitle class="mt-2">{{ item.description }}</VListItemSubtitle>
|
||||||
>
|
<template #append>
|
||||||
<template #prepend>
|
<div class="me-n3">
|
||||||
<VIcon :icon="item.props.prependIcon" />
|
<IconBtn>
|
||||||
</template>
|
<VIcon
|
||||||
<VListItemTitle v-text="item.title" />
|
icon="mdi-dots-vertical"
|
||||||
</VListItem>
|
/>
|
||||||
</VList>
|
<VMenu
|
||||||
</VMenu>
|
activator="parent"
|
||||||
</IconBtn>
|
close-on-content-click
|
||||||
</div>
|
>
|
||||||
</template>
|
<VList>
|
||||||
</VListItem>
|
<VListItem
|
||||||
</template>
|
v-for="(item, i) in dropdownItems"
|
||||||
</VInfiniteScroll>
|
:key="i"
|
||||||
</VList>
|
variant="plain"
|
||||||
<VCardText v-if="historyList.length == 0 && isRefreshed" class="text-center">
|
:base-color="item.color"
|
||||||
没有数据
|
@click="item.props.click"
|
||||||
</VCardText>
|
>
|
||||||
</VCard>
|
<template #prepend>
|
||||||
|
<VIcon :icon="item.props.prependIcon" />
|
||||||
|
</template>
|
||||||
|
<VListItemTitle v-text="item.title" />
|
||||||
|
</VListItem>
|
||||||
|
</VList>
|
||||||
|
</VMenu>
|
||||||
|
</IconBtn>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</VListItem>
|
||||||
|
</template>
|
||||||
|
</VInfiniteScroll>
|
||||||
|
</VList>
|
||||||
|
<VCardText v-if="historyList.length == 0 && isRefreshed" class="text-center">
|
||||||
|
没有数据
|
||||||
|
</VCardText>
|
||||||
|
</VCard>
|
||||||
|
</VDialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -118,31 +118,21 @@ const filteredDataList = computed(() => {
|
|||||||
@click="historyDialog = true"
|
@click="historyDialog = true"
|
||||||
/>
|
/>
|
||||||
<!-- 订阅编辑弹窗 -->
|
<!-- 订阅编辑弹窗 -->
|
||||||
<VDialog
|
<SubscribeEditForm
|
||||||
v-if="subscribeEditDialog"
|
v-if="subscribeEditDialog"
|
||||||
v-model="subscribeEditDialog"
|
v-model="subscribeEditDialog"
|
||||||
scrollable
|
:default="true"
|
||||||
max-width="60rem"
|
:type="props.type"
|
||||||
>
|
@save="subscribeEditDialog = false"
|
||||||
<SubscribeEditForm
|
@close="subscribeEditDialog = false"
|
||||||
:default="true"
|
/>
|
||||||
:type="props.type"
|
|
||||||
@save="subscribeEditDialog = false"
|
|
||||||
@close="subscribeEditDialog = false"
|
|
||||||
/>
|
|
||||||
</VDialog>
|
|
||||||
<!-- 历史记录弹窗 -->
|
<!-- 历史记录弹窗 -->
|
||||||
<VDialog
|
<SubscribeHistory
|
||||||
v-if="historyDialog"
|
v-if="historyDialog"
|
||||||
v-model="historyDialog"
|
v-model="historyDialog"
|
||||||
scrollable
|
:type="props.type"
|
||||||
max-width="50rem"
|
@close="historyDialog = false"
|
||||||
>
|
/>
|
||||||
<SubscribeHistory
|
|
||||||
:type="props.type"
|
|
||||||
@close="historyDialog = false"
|
|
||||||
/>
|
|
||||||
</VDialog>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|||||||
Reference in New Issue
Block a user