mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-05 15:36:49 +08:00
es lint fix
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
<script setup lang="ts">
|
||||
import NoDataFound from '@/components/NoDataFound.vue';
|
||||
import NoDataFound from '@/components/NoDataFound.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<NoDataFound
|
||||
errorCode="404"
|
||||
errorTitle="页面不存在 ⚠️"
|
||||
errorDescription="您想要访问的页面不存在,请检查地址是否正确。"
|
||||
error-code="404"
|
||||
error-title="页面不存在 ⚠️"
|
||||
error-description="您想要访问的页面不存在,请检查地址是否正确。"
|
||||
>
|
||||
<template #button>
|
||||
<VBtn
|
||||
|
||||
@@ -1,36 +1,50 @@
|
||||
<script lang="ts" setup>
|
||||
import AccountSettingAccount from "@/views/account-setting/AccountSettingAccount.vue";
|
||||
import AccountSettingNotification from "@/views/account-setting/AccountSettingNotification.vue";
|
||||
import AccountSettingRule from "@/views/account-setting/AccountSettingRule.vue";
|
||||
import AccountSettingSite from "@/views/account-setting/AccountSettingSite.vue";
|
||||
import AccountSettingWords from "@/views/account-setting/AccountSettingWords.vue";
|
||||
import { useRoute } from "vue-router";
|
||||
import { useRoute } from 'vue-router'
|
||||
import AccountSettingAccount from '@/views/account-setting/AccountSettingAccount.vue'
|
||||
import AccountSettingNotification from '@/views/account-setting/AccountSettingNotification.vue'
|
||||
import AccountSettingRule from '@/views/account-setting/AccountSettingRule.vue'
|
||||
import AccountSettingSite from '@/views/account-setting/AccountSettingSite.vue'
|
||||
import AccountSettingWords from '@/views/account-setting/AccountSettingWords.vue'
|
||||
|
||||
const route = useRoute();
|
||||
const route = useRoute()
|
||||
|
||||
const activeTab = ref(route.params.tab);
|
||||
const activeTab = ref(route.params.tab)
|
||||
|
||||
// tabs
|
||||
const tabs = [
|
||||
{ title: "用户", icon: "mdi-account", tab: "account" },
|
||||
{ title: "站点", icon: "mdi-web", tab: "site" },
|
||||
{ title: "规则", icon: "mdi-filter-cog", tab: "filter" },
|
||||
{ title: "通知", icon: "mdi-bell", tab: "notification" },
|
||||
{ title: "自定义词表", icon: "mdi-file-word-box", tab: "words" },
|
||||
];
|
||||
{ title: '用户', icon: 'mdi-account', tab: 'account' },
|
||||
{ title: '站点', icon: 'mdi-web', tab: 'site' },
|
||||
{ title: '规则', icon: 'mdi-filter-cog', tab: 'filter' },
|
||||
{ title: '通知', icon: 'mdi-bell', tab: 'notification' },
|
||||
{ title: '自定义词表', icon: 'mdi-file-word-box', tab: 'words' },
|
||||
]
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<VTabs v-model="activeTab" show-arrows>
|
||||
<VTab v-for="item in tabs" :key="item.icon" :value="item.tab">
|
||||
<VIcon size="20" start :icon="item.icon" />
|
||||
<VTabs
|
||||
v-model="activeTab"
|
||||
show-arrows
|
||||
>
|
||||
<VTab
|
||||
v-for="item in tabs"
|
||||
:key="item.icon"
|
||||
:value="item.tab"
|
||||
>
|
||||
<VIcon
|
||||
size="20"
|
||||
start
|
||||
:icon="item.icon"
|
||||
/>
|
||||
{{ item.title }}
|
||||
</VTab>
|
||||
</VTabs>
|
||||
<VDivider />
|
||||
|
||||
<VWindow v-model="activeTab" class="mt-5 disable-tab-transition">
|
||||
<VWindow
|
||||
v-model="activeTab"
|
||||
class="mt-5 disable-tab-transition"
|
||||
>
|
||||
<!-- Account -->
|
||||
<VWindowItem value="account">
|
||||
<AccountSettingAccount />
|
||||
|
||||
+33
-30
@@ -1,58 +1,61 @@
|
||||
<script setup lang="ts">
|
||||
import MediaCardListView from "@/views/discover/MediaCardListView.vue";
|
||||
import MediaCardListView from '@/views/discover/MediaCardListView.vue'
|
||||
|
||||
// 输入参数
|
||||
const props = defineProps({
|
||||
type: Array as PropType<string[]> | PropType<string>,
|
||||
});
|
||||
})
|
||||
|
||||
// 路由参数
|
||||
const route = useRoute();
|
||||
const route = useRoute()
|
||||
|
||||
// 面包屑标题定义
|
||||
const titles: { [key: string]: any } = {
|
||||
tmdb: {
|
||||
trending: "流行趋势",
|
||||
movies: "热门电影",
|
||||
tvs: "热门电视剧",
|
||||
trending: '流行趋势',
|
||||
movies: '热门电影',
|
||||
tvs: '热门电视剧',
|
||||
},
|
||||
douban: {
|
||||
movies: "最新电影",
|
||||
tvs: "最新电视剧",
|
||||
tv_weekly_chinese: "华语剧集榜",
|
||||
tv_weekly_global: "全球剧集榜",
|
||||
movie_top250: "电影TOP250",
|
||||
movies: '最新电影',
|
||||
tvs: '最新电视剧',
|
||||
tv_weekly_chinese: '华语剧集榜',
|
||||
tv_weekly_global: '全球剧集榜',
|
||||
movie_top250: '电影TOP250',
|
||||
},
|
||||
media: {
|
||||
search: "搜索",
|
||||
search: '搜索',
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
// 计算API路径
|
||||
const getApiPath = (types: string[] | string) => {
|
||||
if (Array.isArray(types)) {
|
||||
return types.join("/");
|
||||
} else {
|
||||
return types;
|
||||
}
|
||||
};
|
||||
function getApiPath(types: string[] | string) {
|
||||
if (Array.isArray(types))
|
||||
return types.join('/')
|
||||
else
|
||||
return types
|
||||
}
|
||||
|
||||
// 面包屑标题
|
||||
const getTitle = (types: string[] | string, title: any = "") => {
|
||||
function getTitle(types: string[] | string, title: any = '') {
|
||||
if (Array.isArray(types)) {
|
||||
if (title) {
|
||||
return [titles[types[0]][types[1]], title];
|
||||
}
|
||||
return ["推荐", titles[types[0]][types[1]]];
|
||||
} else {
|
||||
return ["发现"];
|
||||
if (title)
|
||||
return [titles[types[0]][types[1]], title]
|
||||
|
||||
return ['推荐', titles[types[0]][types[1]]]
|
||||
}
|
||||
};
|
||||
else {
|
||||
return ['发现']
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<VBreadcrumbs :items="getTitle(props.type || '', route.query?.title)"></VBreadcrumbs>
|
||||
<MediaCardListView :apipath="getApiPath(props.type || '')" :params="route.query" />
|
||||
<VBreadcrumbs :items="getTitle(props.type || '', route.query?.title)" />
|
||||
<MediaCardListView
|
||||
:apipath="getApiPath(props.type || '')"
|
||||
:params="route.query"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
<script setup lang="ts">
|
||||
import FullCalendarView from '@/views/subscribe/FullCalendarView.vue';
|
||||
|
||||
import FullCalendarView from '@/views/subscribe/FullCalendarView.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<FullCalendarView/>
|
||||
<FullCalendarView />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
+26
-11
@@ -1,31 +1,46 @@
|
||||
<script setup lang="ts">
|
||||
import AnalyticsMediaStatistic from "@/views/dashboard/AnalyticsMediaStatistic.vue";
|
||||
import AnalyticsProcesses from "@/views/dashboard/AnalyticsProcesses.vue";
|
||||
import AnalyticsScheduler from "@/views/dashboard/AnalyticsScheduler.vue";
|
||||
import AnalyticsSpeed from "@/views/dashboard/AnalyticsSpeed.vue";
|
||||
import AnalyticsStorage from "@/views/dashboard/AnalyticsStorage.vue";
|
||||
import AnalyticsWeeklyOverview from "@/views/dashboard/AnalyticsWeeklyOverview.vue";
|
||||
import AnalyticsMediaStatistic from '@/views/dashboard/AnalyticsMediaStatistic.vue'
|
||||
import AnalyticsProcesses from '@/views/dashboard/AnalyticsProcesses.vue'
|
||||
import AnalyticsScheduler from '@/views/dashboard/AnalyticsScheduler.vue'
|
||||
import AnalyticsSpeed from '@/views/dashboard/AnalyticsSpeed.vue'
|
||||
import AnalyticsStorage from '@/views/dashboard/AnalyticsStorage.vue'
|
||||
import AnalyticsWeeklyOverview from '@/views/dashboard/AnalyticsWeeklyOverview.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<VRow class="match-height">
|
||||
<VCol cols="12" md="4">
|
||||
<VCol
|
||||
cols="12"
|
||||
md="4"
|
||||
>
|
||||
<AnalyticsStorage />
|
||||
</VCol>
|
||||
|
||||
<VCol cols="12" md="8">
|
||||
<VCol
|
||||
cols="12"
|
||||
md="8"
|
||||
>
|
||||
<AnalyticsMediaStatistic />
|
||||
</VCol>
|
||||
|
||||
<VCol cols="12" md="4">
|
||||
<VCol
|
||||
cols="12"
|
||||
md="4"
|
||||
>
|
||||
<AnalyticsWeeklyOverview />
|
||||
</VCol>
|
||||
|
||||
<VCol cols="12" md="4">
|
||||
<VCol
|
||||
cols="12"
|
||||
md="4"
|
||||
>
|
||||
<AnalyticsSpeed />
|
||||
</VCol>
|
||||
|
||||
<VCol cols="12" md="4">
|
||||
<VCol
|
||||
cols="12"
|
||||
md="4"
|
||||
>
|
||||
<AnalyticsScheduler />
|
||||
</VCol>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import DownloadingListView from "@/views/reorganize/DownloadingListView.vue";
|
||||
import DownloadingListView from '@/views/reorganize/DownloadingListView.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import TransferHistoryView from '@/views/reorganize/TransferHistoryView.vue';
|
||||
|
||||
import TransferHistoryView from '@/views/reorganize/TransferHistoryView.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
+75
-57
@@ -1,105 +1,109 @@
|
||||
<script setup lang="ts">
|
||||
import { requiredValidator } from "@/@validators";
|
||||
import api from "@/api";
|
||||
import router from "@/router";
|
||||
import logo from "@images/logo.svg?raw";
|
||||
import type { VForm } from "vuetify/components/VForm";
|
||||
import { useStore } from "vuex";
|
||||
import { VForm } from 'vuetify/components/VForm'
|
||||
import { useStore } from 'vuex'
|
||||
import { requiredValidator } from '@/@validators'
|
||||
import api from '@/api'
|
||||
import router from '@/router'
|
||||
import logo from '@images/logo.svg?raw'
|
||||
|
||||
// Vuex Store
|
||||
const store = useStore();
|
||||
const store = useStore()
|
||||
|
||||
// 表单
|
||||
const form = ref({
|
||||
username: "",
|
||||
password: "",
|
||||
username: '',
|
||||
password: '',
|
||||
remember: true,
|
||||
});
|
||||
const refForm = ref<InstanceType<typeof VForm> | null>(null);
|
||||
})
|
||||
|
||||
const refForm = ref<InstanceType<typeof VForm> | null>(null)
|
||||
|
||||
// 密码输入
|
||||
const isPasswordVisible = ref(false);
|
||||
const isPasswordVisible = ref(false)
|
||||
|
||||
// 错误信息
|
||||
const errorMessage = ref("");
|
||||
const errorMessage = ref('')
|
||||
|
||||
// 背景图片
|
||||
const backgroundImageUrl = ref("");
|
||||
const backgroundImageUrl = ref('')
|
||||
|
||||
// 背景图片加载状态
|
||||
const isImageLoaded = ref(false);
|
||||
const isImageLoaded = ref(false)
|
||||
|
||||
// 获取背景图片
|
||||
const fetchBackgroundImage = async () => {
|
||||
async function fetchBackgroundImage() {
|
||||
api
|
||||
.get("/login/tmdb")
|
||||
.get('/login/tmdb')
|
||||
.then((response: any) => {
|
||||
backgroundImageUrl.value = response.message;
|
||||
backgroundImageUrl.value = response.message
|
||||
})
|
||||
.catch((error: any) => {
|
||||
console.log(error);
|
||||
});
|
||||
};
|
||||
console.log(error)
|
||||
})
|
||||
}
|
||||
|
||||
// 登录获取token事件
|
||||
const login = () => {
|
||||
errorMessage.value = "";
|
||||
function login() {
|
||||
errorMessage.value = ''
|
||||
|
||||
// 进行表单校验
|
||||
if (!form.value.username || !form.value.password) {
|
||||
return;
|
||||
}
|
||||
if (!form.value.username || !form.value.password)
|
||||
return
|
||||
|
||||
// 用户名密码
|
||||
const formData = new FormData();
|
||||
const formData = new FormData()
|
||||
|
||||
formData.append("username", form.value.username);
|
||||
formData.append("password", form.value.password);
|
||||
formData.append('username', form.value.username)
|
||||
formData.append('password', form.value.password)
|
||||
|
||||
// 请求token
|
||||
api
|
||||
.post("/login/access-token", formData, {
|
||||
.post('/login/access-token', formData, {
|
||||
headers: {
|
||||
Accept: "application/json", // 设置 Accept 类型
|
||||
Accept: 'application/json', // 设置 Accept 类型
|
||||
},
|
||||
})
|
||||
.then((response: any) => {
|
||||
// 获取token
|
||||
const token = response.access_token;
|
||||
const token = response.access_token
|
||||
|
||||
// 更新token和remember状态到Vuex Store
|
||||
store.dispatch("auth/updateToken", token);
|
||||
store.dispatch("auth/updateRemember", form.value.remember);
|
||||
store.dispatch('auth/updateToken', token)
|
||||
store.dispatch('auth/updateRemember', form.value.remember)
|
||||
|
||||
// 跳转到首页
|
||||
router.push("/");
|
||||
router.push('/')
|
||||
})
|
||||
.catch((error: any) => {
|
||||
// 登录失败,显示错误提示
|
||||
if (!error.response) errorMessage.value = "登录失败,请检查网络连接";
|
||||
if (!error.response)
|
||||
errorMessage.value = '登录失败,请检查网络连接'
|
||||
else if (error.response.status === 401)
|
||||
errorMessage.value = "登录失败,请检查用户名和密码是否正确";
|
||||
errorMessage.value = '登录失败,请检查用户名和密码是否正确'
|
||||
else if (error.response.status === 403)
|
||||
errorMessage.value = "登录失败,您没有权限访问";
|
||||
else if (error.response.status === 500) errorMessage.value = "登录失败,服务器错误";
|
||||
errorMessage.value = '登录失败,您没有权限访问'
|
||||
else if (error.response.status === 500)
|
||||
errorMessage.value = '登录失败,服务器错误'
|
||||
else
|
||||
errorMessage.value = `登录失败 ${error.response.status},请检查用户名和密码是否正确`;
|
||||
});
|
||||
};
|
||||
errorMessage.value = `登录失败 ${error.response.status},请检查用户名和密码是否正确`
|
||||
})
|
||||
}
|
||||
|
||||
// 自动登录
|
||||
onMounted(() => {
|
||||
// 从Vuex Store中获取token和remember状态
|
||||
const token = store.state.auth.token;
|
||||
const remember = store.state.auth.remember;
|
||||
const token = store.state.auth.token
|
||||
const remember = store.state.auth.remember
|
||||
|
||||
// 如果token存在,且保持登录状态为true,则跳转到首页
|
||||
if (token && remember) {
|
||||
router.push("/");
|
||||
} else {
|
||||
// 获取背景图片
|
||||
fetchBackgroundImage();
|
||||
router.push('/')
|
||||
}
|
||||
});
|
||||
else {
|
||||
// 获取背景图片
|
||||
fetchBackgroundImage()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -107,8 +111,8 @@ onMounted(() => {
|
||||
aspect-ratio="4/3"
|
||||
:src="backgroundImageUrl"
|
||||
class="w-full h-full overflow-hidden"
|
||||
@load="isImageLoaded = true"
|
||||
cover
|
||||
@load="isImageLoaded = true"
|
||||
>
|
||||
<div class="auth-wrapper d-flex align-center justify-center pa-4">
|
||||
<VCard
|
||||
@@ -130,7 +134,10 @@ onMounted(() => {
|
||||
</VCardItem>
|
||||
|
||||
<VCardText>
|
||||
<VForm @submit.prevent="() => {}" ref="refForm">
|
||||
<VForm
|
||||
ref="refForm"
|
||||
@submit.prevent="() => {}"
|
||||
>
|
||||
<VRow>
|
||||
<!-- username -->
|
||||
<VCol cols="12">
|
||||
@@ -155,19 +162,30 @@ onMounted(() => {
|
||||
@click:append-inner="isPasswordVisible = !isPasswordVisible"
|
||||
/>
|
||||
|
||||
<div v-if="errorMessage" class="text-error mt-1">
|
||||
<div
|
||||
v-if="errorMessage"
|
||||
class="text-error mt-1"
|
||||
>
|
||||
{{ errorMessage }}
|
||||
</div>
|
||||
|
||||
<!-- remember me checkbox -->
|
||||
<div
|
||||
class="d-flex align-center justify-space-between flex-wrap mt-1 mb-4"
|
||||
>
|
||||
<VCheckbox v-model="form.remember" label="保持登录" required />
|
||||
<div class="d-flex align-center justify-space-between flex-wrap mt-1 mb-4">
|
||||
<VCheckbox
|
||||
v-model="form.remember"
|
||||
label="保持登录"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- login button -->
|
||||
<VBtn block type="submit" @click="login"> 登录 </VBtn>
|
||||
<VBtn
|
||||
block
|
||||
type="submit"
|
||||
@click="login"
|
||||
>
|
||||
登录
|
||||
</VBtn>
|
||||
</VCol>
|
||||
</VRow>
|
||||
</VForm>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import PluginCardListView from "@/views/setting/PluginCardListView.vue";
|
||||
import PluginCardListView from '@/views/setting/PluginCardListView.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
+97
-25
@@ -1,15 +1,24 @@
|
||||
<script setup lang="ts">
|
||||
import MediaCardSlideView from '@/views/discover/MediaCardSlideView.vue';
|
||||
import MediaCardSlideView from '@/views/discover/MediaCardSlideView.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<MediaCardSlideView apipath="tmdb/trending">
|
||||
<template #title="{ loaded }">
|
||||
<div class="slider-header ms-1" v-if="loaded">
|
||||
<RouterLink to="/browse/tmdb/trending" class="slider-title">
|
||||
<div
|
||||
v-if="loaded"
|
||||
class="slider-header ms-1"
|
||||
>
|
||||
<RouterLink
|
||||
to="/browse/tmdb/trending"
|
||||
class="slider-title"
|
||||
>
|
||||
<span>流行趋势</span>
|
||||
<VIcon icon="mdi-arrow-right-circle-outline" class="ms-1" />
|
||||
<VIcon
|
||||
icon="mdi-arrow-right-circle-outline"
|
||||
class="ms-1"
|
||||
/>
|
||||
</RouterLink>
|
||||
</div>
|
||||
</template>
|
||||
@@ -17,10 +26,19 @@ import MediaCardSlideView from '@/views/discover/MediaCardSlideView.vue';
|
||||
|
||||
<MediaCardSlideView apipath="tmdb/movies">
|
||||
<template #title="{ loaded }">
|
||||
<div class="slider-header mt-3 ms-1" v-if="loaded">
|
||||
<RouterLink to="/browse/tmdb/movies" class="slider-title">
|
||||
<div
|
||||
v-if="loaded"
|
||||
class="slider-header mt-3 ms-1"
|
||||
>
|
||||
<RouterLink
|
||||
to="/browse/tmdb/movies"
|
||||
class="slider-title"
|
||||
>
|
||||
<span>热门电影</span>
|
||||
<VIcon icon="mdi-arrow-right-circle-outline" class="ms-1" />
|
||||
<VIcon
|
||||
icon="mdi-arrow-right-circle-outline"
|
||||
class="ms-1"
|
||||
/>
|
||||
</RouterLink>
|
||||
</div>
|
||||
</template>
|
||||
@@ -28,10 +46,19 @@ import MediaCardSlideView from '@/views/discover/MediaCardSlideView.vue';
|
||||
|
||||
<MediaCardSlideView apipath="tmdb/tvs">
|
||||
<template #title="{ loaded }">
|
||||
<div class="slider-header mt-3 ms-1" v-if="loaded">
|
||||
<RouterLink to="/browse/tmdb/tvs" class="slider-title">
|
||||
<div
|
||||
v-if="loaded"
|
||||
class="slider-header mt-3 ms-1"
|
||||
>
|
||||
<RouterLink
|
||||
to="/browse/tmdb/tvs"
|
||||
class="slider-title"
|
||||
>
|
||||
<span>热门电视剧</span>
|
||||
<VIcon icon="mdi-arrow-right-circle-outline" class="ms-1" />
|
||||
<VIcon
|
||||
icon="mdi-arrow-right-circle-outline"
|
||||
class="ms-1"
|
||||
/>
|
||||
</RouterLink>
|
||||
</div>
|
||||
</template>
|
||||
@@ -39,10 +66,19 @@ import MediaCardSlideView from '@/views/discover/MediaCardSlideView.vue';
|
||||
|
||||
<MediaCardSlideView apipath="douban/movies">
|
||||
<template #title="{ loaded }">
|
||||
<div class="slider-header mt-3 ms-1" v-if="loaded">
|
||||
<RouterLink to="/browse/douban/movies" class="slider-title">
|
||||
<div
|
||||
v-if="loaded"
|
||||
class="slider-header mt-3 ms-1"
|
||||
>
|
||||
<RouterLink
|
||||
to="/browse/douban/movies"
|
||||
class="slider-title"
|
||||
>
|
||||
<span>最新电影</span>
|
||||
<VIcon icon="mdi-arrow-right-circle-outline" class="ms-1" />
|
||||
<VIcon
|
||||
icon="mdi-arrow-right-circle-outline"
|
||||
class="ms-1"
|
||||
/>
|
||||
</RouterLink>
|
||||
</div>
|
||||
</template>
|
||||
@@ -50,10 +86,19 @@ import MediaCardSlideView from '@/views/discover/MediaCardSlideView.vue';
|
||||
|
||||
<MediaCardSlideView apipath="douban/tvs">
|
||||
<template #title="{ loaded }">
|
||||
<div class="slider-header mt-3 ms-1" v-if="loaded">
|
||||
<RouterLink to="/browse/douban/tvs" class="slider-title">
|
||||
<div
|
||||
v-if="loaded"
|
||||
class="slider-header mt-3 ms-1"
|
||||
>
|
||||
<RouterLink
|
||||
to="/browse/douban/tvs"
|
||||
class="slider-title"
|
||||
>
|
||||
<span>最新电视剧</span>
|
||||
<VIcon icon="mdi-arrow-right-circle-outline" class="ms-1" />
|
||||
<VIcon
|
||||
icon="mdi-arrow-right-circle-outline"
|
||||
class="ms-1"
|
||||
/>
|
||||
</RouterLink>
|
||||
</div>
|
||||
</template>
|
||||
@@ -61,10 +106,19 @@ import MediaCardSlideView from '@/views/discover/MediaCardSlideView.vue';
|
||||
|
||||
<MediaCardSlideView apipath="douban/movie_top250">
|
||||
<template #title="{ loaded }">
|
||||
<div class="slider-header mt-3 ms-1" v-if="loaded">
|
||||
<RouterLink to="/browse/douban/movie_top250" class="slider-title">
|
||||
<div
|
||||
v-if="loaded"
|
||||
class="slider-header mt-3 ms-1"
|
||||
>
|
||||
<RouterLink
|
||||
to="/browse/douban/movie_top250"
|
||||
class="slider-title"
|
||||
>
|
||||
<span>电影TOP250</span>
|
||||
<VIcon icon="mdi-arrow-right-circle-outline" class="ms-1" />
|
||||
<VIcon
|
||||
icon="mdi-arrow-right-circle-outline"
|
||||
class="ms-1"
|
||||
/>
|
||||
</RouterLink>
|
||||
</div>
|
||||
</template>
|
||||
@@ -72,10 +126,19 @@ import MediaCardSlideView from '@/views/discover/MediaCardSlideView.vue';
|
||||
|
||||
<MediaCardSlideView apipath="douban/tv_weekly_chinese">
|
||||
<template #title="{ loaded }">
|
||||
<div class="slider-header mt-3 ms-1" v-if="loaded">
|
||||
<RouterLink to="/browse/douban/tv_weekly_chinese" class="slider-title">
|
||||
<div
|
||||
v-if="loaded"
|
||||
class="slider-header mt-3 ms-1"
|
||||
>
|
||||
<RouterLink
|
||||
to="/browse/douban/tv_weekly_chinese"
|
||||
class="slider-title"
|
||||
>
|
||||
<span>国产剧集榜</span>
|
||||
<VIcon icon="mdi-arrow-right-circle-outline" class="ms-1" />
|
||||
<VIcon
|
||||
icon="mdi-arrow-right-circle-outline"
|
||||
class="ms-1"
|
||||
/>
|
||||
</RouterLink>
|
||||
</div>
|
||||
</template>
|
||||
@@ -83,10 +146,19 @@ import MediaCardSlideView from '@/views/discover/MediaCardSlideView.vue';
|
||||
|
||||
<MediaCardSlideView apipath="douban/tv_weekly_global">
|
||||
<template #title="{ loaded }">
|
||||
<div class="slider-header mt-3 ms-1" v-if="loaded">
|
||||
<RouterLink to="/browse/douban/tv_weekly_global" class="slider-title">
|
||||
<div
|
||||
v-if="loaded"
|
||||
class="slider-header mt-3 ms-1"
|
||||
>
|
||||
<RouterLink
|
||||
to="/browse/douban/tv_weekly_global"
|
||||
class="slider-title"
|
||||
>
|
||||
<span>全球剧集榜</span>
|
||||
<VIcon icon="mdi-arrow-right-circle-outline" class="ms-1" />
|
||||
<VIcon
|
||||
icon="mdi-arrow-right-circle-outline"
|
||||
class="ms-1"
|
||||
/>
|
||||
</RouterLink>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,17 +1,21 @@
|
||||
<script setup lang="ts">
|
||||
import TorrentCardListView from "@/views/discover/TorrentCardListView.vue";
|
||||
import TorrentCardListView from '@/views/discover/TorrentCardListView.vue'
|
||||
|
||||
// 路由参数
|
||||
const route = useRoute();
|
||||
const route = useRoute()
|
||||
|
||||
// 查询TMDBID或标题
|
||||
const keyword = route.query?.keyword?.toString() ?? "";
|
||||
const keyword = route.query?.keyword?.toString() ?? ''
|
||||
|
||||
// 查询类型
|
||||
const type = route.query?.type?.toString() ?? "";
|
||||
const type = route.query?.type?.toString() ?? ''
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<TorrentCardListView :keyword="keyword" :type="type" />
|
||||
<TorrentCardListView
|
||||
:keyword="keyword"
|
||||
:type="type"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import SiteListView from "@/views/site/SiteCardListView.vue";
|
||||
import SiteListView from '@/views/site/SiteCardListView.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
<script setup lang="ts">
|
||||
import SubscribeListView from '@/views/subscribe/SubscribeListView.vue';
|
||||
|
||||
import SubscribeListView from '@/views/subscribe/SubscribeListView.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<SubscribeListView type="电影"/>
|
||||
<SubscribeListView type="电影" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
<script setup lang="ts">
|
||||
import SubscribeListView from '@/views/subscribe/SubscribeListView.vue';
|
||||
|
||||
import SubscribeListView from '@/views/subscribe/SubscribeListView.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<SubscribeListView type="电视剧"/>
|
||||
<SubscribeListView type="电视剧" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user