mirror of
https://github.com/ProudMuBai/GoFilm.git
synced 2026-02-27 15:24:40 +08:00
developing
This commit is contained in:
1
client/components.d.ts
vendored
1
client/components.d.ts
vendored
@@ -55,6 +55,7 @@ declare module '@vue/runtime-core' {
|
|||||||
FilmList: typeof import('./src/components/index/FilmList.vue')['default']
|
FilmList: typeof import('./src/components/index/FilmList.vue')['default']
|
||||||
Footer: typeof import('./src/components/index/Footer.vue')['default']
|
Footer: typeof import('./src/components/index/Footer.vue')['default']
|
||||||
Header: typeof import('./src/components/index/Header.vue')['default']
|
Header: typeof import('./src/components/index/Header.vue')['default']
|
||||||
|
History: typeof import('./src/components/index/History.vue')['default']
|
||||||
ImageViewer: typeof import('./src/components/Global/ImageViewer.vue')['default']
|
ImageViewer: typeof import('./src/components/Global/ImageViewer.vue')['default']
|
||||||
Loading: typeof import('./src/components/Loading/Loading.vue')['default']
|
Loading: typeof import('./src/components/Loading/Loading.vue')['default']
|
||||||
ManageHeader: typeof import('./src/components/Manage/ManageHeader.vue')['default']
|
ManageHeader: typeof import('./src/components/Manage/ManageHeader.vue')['default']
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<meta name="referrer" content="never">
|
<meta name="referrer" content="never">
|
||||||
<meta charset="UTF-8"/>
|
<meta charset="UTF-8"/>
|
||||||
<title>(╥﹏╥)</title>
|
<title>(╥﹏╥)</title>
|
||||||
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_3992367_cesmizkmqka.css">
|
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_3992367_mevt6vhsvc.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|||||||
@@ -96,7 +96,7 @@
|
|||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
.play-link{
|
.play-link{
|
||||||
padding: 3px;
|
padding: 6px 3px 0 3px;
|
||||||
border: 1px solid rgba(255,255,255,0.28);
|
border: 1px solid rgba(255,255,255,0.28);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
@@ -113,3 +113,47 @@
|
|||||||
background: #b36d3824;
|
background: #b36d3824;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*film item loading style */
|
||||||
|
.loading-wave {
|
||||||
|
height: 8px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-bar {
|
||||||
|
width: 3px;
|
||||||
|
margin: 0 1px;
|
||||||
|
background-color: #FFB22C;
|
||||||
|
border-radius: 2px 2px 0 0;
|
||||||
|
animation: loading-wave-animation 1s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-bar:nth-child(2) {
|
||||||
|
animation-delay: 0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-bar:nth-child(3) {
|
||||||
|
animation-delay: 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-bar:nth-child(4) {
|
||||||
|
animation-delay: 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes loading-wave-animation {
|
||||||
|
0% {
|
||||||
|
height: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
height: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
height: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,82 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="custom-footer">
|
<div class="custom-footer">
|
||||||
本站所有内容均来自互联网分享站点所提供的公开引用资源,未提供资源上传、存储服务。
|
<!--Mobile bottom Btn Group-->
|
||||||
|
<div v-if="global.isMobile" class="nav-bottom">
|
||||||
|
<a href="/"><b class="iconfont icon-ziyuan"/>首页</a>
|
||||||
|
<a href="javascript:void(0)"><b class="iconfont icon-gengxin"/>更新</a>
|
||||||
|
<a href="/history"><b class="iconfont icon-lishi"/>历史</a>
|
||||||
|
<a href="javascript:void(0)"><b class="iconfont icon-shoucang2"/>收藏</a>
|
||||||
|
<a href="/manage"><b class="iconfont icon-ziyuan-copy"/>我的</a>
|
||||||
</div>
|
</div>
|
||||||
|
<p>本站所有内容均来自互联网分享站点所提供的公开引用资源,未提供资源上传、存储服务。</p>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
|
||||||
|
// 获取全局状态对象
|
||||||
|
import {inject} from "vue";
|
||||||
|
|
||||||
|
const global = inject('global')
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
|
|
||||||
.custom-footer {
|
.custom-footer {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
text-align: center;
|
margin-top: 25px;
|
||||||
line-height: 15px;
|
|
||||||
font-size: 15px;
|
|
||||||
color: #888888;
|
|
||||||
margin-top: 25px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.custom-footer p {
|
||||||
|
line-height: 15px;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #888888;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*底部导航*/
|
||||||
|
.nav-bottom {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
background: rgba(0, 0, 0, 0.65);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-bottom > a {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
color: var(--content-text-color);
|
||||||
|
flex-basis: 20%;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-ziyuan {
|
||||||
|
color: #B1AFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-gengxin {
|
||||||
|
color: #5AB2FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-lishi {
|
||||||
|
color: #FFBE98;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-shoucang2 {
|
||||||
|
color: #6AD4DD;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-ziyuan-copy {
|
||||||
|
color: #E89ABEFF;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
@@ -49,20 +49,14 @@
|
|||||||
</el-icon>
|
</el-icon>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<!--Mobile bottom Btn Group-->
|
|
||||||
<div v-if="global.isMobile" class="nav-bottom" >
|
|
||||||
<a href=""></a>
|
|
||||||
<a href=""></a>
|
|
||||||
<a href=""></a>
|
|
||||||
<a href=""></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<!--弹窗模块,显示按钮对应信息-->
|
<!--弹窗模块,显示按钮对应信息-->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import {inject, onMounted, reactive, ref, watch} from "vue";
|
import { onMounted, reactive, ref, watch} from "vue";
|
||||||
import {useRouter} from "vue-router";
|
import {useRouter} from "vue-router";
|
||||||
import {Search, CircleClose} from '@element-plus/icons-vue'
|
import {Search, CircleClose} from '@element-plus/icons-vue'
|
||||||
import {ElMessage} from "element-plus";
|
import {ElMessage} from "element-plus";
|
||||||
@@ -78,8 +72,7 @@ const data = reactive({
|
|||||||
nav: Array,
|
nav: Array,
|
||||||
site: Object,
|
site: Object,
|
||||||
})
|
})
|
||||||
// 获取全局状态对象
|
|
||||||
const global = inject('global')
|
|
||||||
|
|
||||||
// 加载观看历史记录信息
|
// 加载观看历史记录信息
|
||||||
const handleHistory = (flag: boolean) => {
|
const handleHistory = (flag: boolean) => {
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import FileUpload from "../views/manage/file/FileUpload.vue";
|
|||||||
import FilmAdd from "../views/manage/film/FilmAdd.vue";
|
import FilmAdd from "../views/manage/film/FilmAdd.vue";
|
||||||
import CustomPlay from "../views/index/CustomPlay.vue";
|
import CustomPlay from "../views/index/CustomPlay.vue";
|
||||||
import Banners from "../views/manage/system/Banners.vue";
|
import Banners from "../views/manage/system/Banners.vue";
|
||||||
|
import FilmHistory from "../views/index/FilmHistory.vue";
|
||||||
|
|
||||||
|
|
||||||
// 2. 定义一个路由
|
// 2. 定义一个路由
|
||||||
@@ -42,6 +43,7 @@ const routes = [
|
|||||||
{path: 'filmClassify', component: FilmClassify},
|
{path: 'filmClassify', component: FilmClassify},
|
||||||
{path: 'filmClassifySearch', component: FilmClassifySearch},
|
{path: 'filmClassifySearch', component: FilmClassifySearch},
|
||||||
{path: '/custom/player', component: CustomPlay},
|
{path: '/custom/player', component: CustomPlay},
|
||||||
|
{path: '/history', component: FilmHistory},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{path: '/login', component: Login},
|
{path: '/login', component: Login},
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ provide('global', {isMobile: isMobile})
|
|||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep(.el-footer) {
|
||||||
|
--el-footer-padding: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
.el-main {
|
.el-main {
|
||||||
|
|||||||
@@ -82,7 +82,6 @@
|
|||||||
<a class="play-link" v-for="(v,i) in item.linkList" href="javascript:;"
|
<a class="play-link" v-for="(v,i) in item.linkList" href="javascript:;"
|
||||||
@click="play({source: item.id, episode: i})">{{ v.episode }}</a>
|
@click="play({source: item.id, episode: i})">{{ v.episode }}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -401,3 +400,4 @@ onBeforeMount(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
57
client/src/views/index/FilmHistory.vue
Normal file
57
client/src/views/index/FilmHistory.vue
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<template>
|
||||||
|
<div class="container">
|
||||||
|
<div class="card" v-for="item in data.historyList">
|
||||||
|
<div class="card-left">
|
||||||
|
<a :href="item.link"></a>
|
||||||
|
</div>
|
||||||
|
<div class="card-right">
|
||||||
|
<h5>{{item.name}}</h5>
|
||||||
|
<span>{{item.episode}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {onMounted, reactive} from "vue";
|
||||||
|
import {COOKIE_KEY_MAP, cookieUtil} from "../../utils/cookie";
|
||||||
|
|
||||||
|
const data = reactive({
|
||||||
|
historyList: [{}]
|
||||||
|
})
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
// 获取cookie中的filmHistory
|
||||||
|
let historyMap = cookieUtil.getCookie(COOKIE_KEY_MAP.FILM_HISTORY) ? JSON.parse(cookieUtil.getCookie(COOKIE_KEY_MAP.FILM_HISTORY)) : null
|
||||||
|
let arr = []
|
||||||
|
if (historyMap) {
|
||||||
|
for (let k in historyMap) {
|
||||||
|
arr.push(historyMap[k])
|
||||||
|
}
|
||||||
|
arr.sort((item1, item2) => item2.timeStamp - item1.timeStamp)
|
||||||
|
}
|
||||||
|
data.historyList = arr
|
||||||
|
console.log(arr)
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
.card {
|
||||||
|
border: 1px solid red;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-left {
|
||||||
|
flex-basis: 20%;
|
||||||
|
border: 1px solid greenyellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-right {
|
||||||
|
flex-basis: 80%;
|
||||||
|
border: 1px solid deepskyblue;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -49,7 +49,15 @@
|
|||||||
<div class="play-list">
|
<div class="play-list">
|
||||||
<div class="play-list-item" v-show="data.currentTabId == item.id" v-for="item in data.detail.list">
|
<div class="play-list-item" v-show="data.currentTabId == item.id" v-for="item in data.detail.list">
|
||||||
<a :class="`play-link ${v.link == data.current.link?'play-link-active':''}`" v-for="(v,i) in item.linkList"
|
<a :class="`play-link ${v.link == data.current.link?'play-link-active':''}`" v-for="(v,i) in item.linkList"
|
||||||
href="javascript:;" @click="playChange({sourceId: item.id, episodeIndex: i, target: this})">{{ v.episode }}</a>
|
href="javascript:;" @click="playChange({sourceId: item.id, episodeIndex: i, target: this})">{{ v.episode }}
|
||||||
|
<div class="loading-wave" v-if="v.link == data.current.link" >
|
||||||
|
<div class="loading-bar"></div>
|
||||||
|
<div class="loading-bar"></div>
|
||||||
|
<div class="loading-bar"></div>
|
||||||
|
<div class="loading-bar"></div>
|
||||||
|
</div>
|
||||||
|
<div class="loading-wave" v-else></div>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -539,3 +547,8 @@ onBeforeMount(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user