es lint fix

This commit is contained in:
thofx
2023-07-22 16:09:07 +08:00
parent 48749b29fe
commit 018778488a
80 changed files with 3994 additions and 2981 deletions
+4 -4
View File
@@ -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
+32 -18
View File
@@ -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
View File
@@ -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>
+2 -3
View File
@@ -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
View File
@@ -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 -1
View File
@@ -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 -2
View File
@@ -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
View File
@@ -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 -1
View File
@@ -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
View File
@@ -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>
+9 -5
View File
@@ -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
View File
@@ -1,5 +1,5 @@
<script setup lang="ts">
import SiteListView from "@/views/site/SiteCardListView.vue";
import SiteListView from '@/views/site/SiteCardListView.vue'
</script>
<template>
+2 -3
View File
@@ -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>
+2 -3
View File
@@ -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>