精简代码,抽取公共代码为函数,修复bug(同步更新)
This commit is contained in:
parent
0e59b1aa43
commit
73d902253e
@ -208,7 +208,7 @@ function queryLocalTask(){
|
||||
}
|
||||
function resetLocalQuery(){
|
||||
store.commit("_searchLocalByKeyword", "")
|
||||
store.commit("_searchLocalByTaf", [''])
|
||||
store.commit("_searchLocalByTag", [''])
|
||||
param.value = ""
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<div class="side" style="width: 100%">
|
||||
<span v-show="loadComplete">{{showType === 'gallery' || showType === 'collect' ? '本子' : '视频'}}历史</span>
|
||||
<div v-show="loadComplete" class="load_complete">
|
||||
<el-table :data="galleryTasks" v-show="isShowGalleryHistory">
|
||||
<el-table :data="currentTasks" v-show="showType === 'gallery'" :empty-text="emptyText" :row-key="gallery=>gallery.gid">
|
||||
|
||||
<el-table-column type="expand">
|
||||
<template #default="props">
|
||||
@ -28,7 +28,7 @@
|
||||
<el-table-column label="名字" width="300vw">
|
||||
<template #default="scoped">
|
||||
<span @mouseover="showThumbnail(scoped.row)">
|
||||
{{showNameType === 'shortName' ? scoped.row.shortName: scoped.row.name}}
|
||||
{{galleryNameType === 'shortName' ? scoped.row.shortName: scoped.row.name}}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -49,7 +49,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-table :data="videoTasks" v-show="isShowVideoHistory">
|
||||
<el-table :data="currentTasks" v-show="showType === 'video'" :empty-text="emptyText" :row-key="video=>video.id">
|
||||
<el-table-column type="expand">
|
||||
<template #default="props">
|
||||
名字:{{props.row.name}} <br>
|
||||
@ -94,20 +94,33 @@
|
||||
|
||||
<el-row class="pageChanger">
|
||||
<el-col>
|
||||
筛选:<el-select v-model="showType" @change="changeShowType" class="el-select">
|
||||
<el-select v-model="showType" @change="changeShowType" class="el-select" style="width: 75px">
|
||||
<el-option value="gallery" label="本子"/>
|
||||
<el-option value="video" label="视频"/>
|
||||
<el-option value="collect" label="收藏"/>
|
||||
</el-select>
|
||||
排列顺序:<el-select v-model="sortType" @change="changeSortType">
|
||||
<el-option value="name" label="名字"/>
|
||||
<el-option value="shortName" label="简洁名字"/>
|
||||
<el-option value="createTime" label="任务创建时间"/>
|
||||
</el-select>
|
||||
显示:<el-select v-model="showNameType" @change="changeShowNameType">
|
||||
<el-option value="name" label="名字"/>
|
||||
<el-option value="shortName" label="简洁名字"/>
|
||||
</el-select>
|
||||
<el-select v-model="category" @change="changeCategory">
|
||||
<template #prefix>
|
||||
分类
|
||||
</template>
|
||||
<el-option value="myCollect" label="我的收藏"/>
|
||||
<el-option value="myDownload" label="我的下载"/>
|
||||
<el-option value="total" label="全部"/>
|
||||
</el-select>
|
||||
<el-select v-model="sortType" @change="changeSortType" style="width: 170px">
|
||||
<template #prefix>
|
||||
排序
|
||||
</template>
|
||||
<el-option value="name" label="名字"/>
|
||||
<el-option value="shortName" label="简洁名字" v-show="showType === 'gallery'"/>
|
||||
<el-option value="createTime" label="任务创建时间"/>
|
||||
</el-select>
|
||||
<el-select v-model="galleryNameType" @change="changeGalleryNameType" v-show="showType === 'gallery'">
|
||||
<template #prefix>
|
||||
显示
|
||||
</template>
|
||||
<el-option value="name" label="名字"/>
|
||||
<el-option value="shortName" label="简洁名字"/>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-button @click="toMin">{{min}}</el-button>
|
||||
@ -141,8 +154,8 @@
|
||||
</el-footer>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="isOnlineReading" title="在线预览" @close="closeOnlineReader" width="90%" style="margin-top: 0; margin-bottom: 0; padding: 0">
|
||||
<el-scrollbar height="84vh">
|
||||
<el-dialog v-model="isOnlineReading" title="在线预览" @close="closeOnlineReading" width="90%" style="margin-top: 0; margin-bottom: 0; padding: 0">
|
||||
<el-scrollbar height="84vh" ref="onlineReadingScrollbar">
|
||||
<el-image v-for="(link, index) in currentLinks" :src="link" :style="{'width': imageWidth, 'padding-right': imagePadding, 'background-color': 'ghostwhite'}"
|
||||
:preview-src-list="currentLinks" :initial-index="index" loading="lazy"/>
|
||||
</el-scrollbar>
|
||||
@ -180,10 +193,13 @@ let tempTag = ref("")
|
||||
let tempGid = ref("")
|
||||
let tempId = ref("")
|
||||
|
||||
let showNameType = ref("shortName") // shortName name
|
||||
let showType = ref("gallery") // gallery video collect
|
||||
let sortType = ref("shortName") // shortName name createTime
|
||||
let targetPage = ref(1) // 当前页数
|
||||
let category = ref("myDownload") //myDownload myCollect total
|
||||
let galleryNameType = ref("shortName") // shortName name
|
||||
let showType = ref("gallery") // gallery video collect
|
||||
let sortType = ref("shortName") // shortName name createTime
|
||||
let targetPage = ref(1) // 当前页数
|
||||
|
||||
let onlineReadingScrollbar = ref(null)
|
||||
|
||||
//防抖计时器
|
||||
let debounceTimer = 0
|
||||
@ -192,18 +208,8 @@ let loadComplete = computed(() => {
|
||||
return store.state.loadComplete
|
||||
})
|
||||
|
||||
let galleryTasks = computed(() => {
|
||||
return store.getters.galleryTasks ? store.getters.galleryTasks: null
|
||||
})
|
||||
let videoTasks = computed(() => {
|
||||
return store.getters.videoTasks ? store.getters.videoTasks: null
|
||||
})
|
||||
|
||||
let isShowVideoHistory = computed(() => {
|
||||
return store.state.showType === "video"
|
||||
})
|
||||
let isShowGalleryHistory = computed(() => {
|
||||
return store.state.showType === "gallery" || store.state.showType === "collect"
|
||||
let currentTasks = computed(() => {
|
||||
return store.getters.currentTasks ? store.getters.currentTasks: null
|
||||
})
|
||||
let isOnlineReading = computed(() => {
|
||||
return store.state.isOnlineReading
|
||||
@ -225,6 +231,12 @@ let isLion = computed(() => {
|
||||
return store.state.userId === 3
|
||||
})
|
||||
|
||||
let emptyText = computed(() => {
|
||||
let type = showType.value === 'gallery' ? '本子': '视频'
|
||||
let action = category.value === 'myDownload' ? '下载': '收藏'
|
||||
return '您未' + action + type
|
||||
})
|
||||
|
||||
//在线预览相关
|
||||
let currentLinks = computed(() => {
|
||||
return store.state.currentLinks
|
||||
@ -270,24 +282,19 @@ function reverseEditMode(){
|
||||
}
|
||||
|
||||
//改变展示类型
|
||||
function changeCategory(){
|
||||
store.commit("_setCategory", category.value)
|
||||
}
|
||||
function changeShowType(){
|
||||
if(showType.value === 'video')
|
||||
sortType.value = 'name'
|
||||
store.commit("_setShowType", showType.value)
|
||||
}
|
||||
function changeShowNameType(){
|
||||
store.commit("_setShowNameType", showNameType.value)
|
||||
|
||||
if(showNameType.value !== sortType.value){
|
||||
store.commit("_setSortType", showNameType.value)
|
||||
sortType.value = showNameType.value
|
||||
}
|
||||
function changeGalleryNameType(){
|
||||
store.commit("_setShowNameType", galleryNameType.value)
|
||||
}
|
||||
function changeSortType(){
|
||||
store.commit("_setSortType", sortType.value)
|
||||
|
||||
if(sortType.value !== showNameType.value && sortType.value !== "createTime") {
|
||||
store.commit("_setShowNameType", sortType.value)
|
||||
showNameType.value = sortType.value
|
||||
}
|
||||
}
|
||||
|
||||
//收藏,编辑标签,提交编辑
|
||||
@ -314,7 +321,7 @@ function editVideoTag(id, tag){
|
||||
isEditingTag.value = true
|
||||
}
|
||||
function submitGalleryTag(){
|
||||
store.dispatch("updateTag", {gid:tempGid.value, tag:tempTag.value})
|
||||
store.dispatch("updateGalleryTag", {gid:tempGid.value, tag:tempTag.value})
|
||||
tempTag.value = ''
|
||||
tempGid.value = ''
|
||||
isEditingTag.value = false
|
||||
@ -342,8 +349,9 @@ function deleteVideo(id){
|
||||
function onlineGalleryReader(gid){
|
||||
store.dispatch("queryOnlineLinks", gid)
|
||||
}
|
||||
function closeOnlineReader(){
|
||||
function closeOnlineReading(){
|
||||
store.state.isOnlineReading = false
|
||||
onlineReadingScrollbar.value.setScrollTop(0)
|
||||
}
|
||||
function shareGallery(data){
|
||||
const {gid, shortName} = data
|
||||
@ -401,7 +409,7 @@ function showThumbnail(gallery){
|
||||
margin-top: 5vh;
|
||||
}
|
||||
.el-select{
|
||||
width: 125px;
|
||||
width: 135px;
|
||||
}
|
||||
.page{
|
||||
display: inline-block;
|
||||
|
||||
@ -178,7 +178,7 @@ const actions = {
|
||||
//初始化
|
||||
context.dispatch("loadMaskDomain").then()
|
||||
context.dispatch("loadWeekUsedAmount").then()
|
||||
context.dispatch("updateGalleryTasks", "all").then()
|
||||
context.dispatch("updateGalleryTasks", "all").then(() => confirmCurrentTask(context.state))
|
||||
context.dispatch("updateVideoTasks", "all").then()
|
||||
|
||||
//获取图片合适长度
|
||||
@ -430,7 +430,7 @@ const mutations = {
|
||||
}
|
||||
|
||||
//处理是否下载
|
||||
if(task.downloader === state.username)
|
||||
if(task.downloader === state.userId)
|
||||
state.downloadGallery.push(task)
|
||||
|
||||
state.totalGalleryTask.push(task)
|
||||
@ -526,7 +526,7 @@ const mutations = {
|
||||
}
|
||||
|
||||
//处理是否下载
|
||||
if(task.downloader === state.username)
|
||||
if(task.downloader === state.userId)
|
||||
state.downloadVideo.push(task)
|
||||
|
||||
state.totalVideoTask.push(task)
|
||||
@ -576,17 +576,13 @@ const mutations = {
|
||||
localStorage.removeItem("auth")
|
||||
},
|
||||
_searchLocalByLink(state, link){
|
||||
let tasks
|
||||
let tasks = state.currentTasks
|
||||
let i = 0
|
||||
let gid = null
|
||||
let name = null
|
||||
|
||||
if(state.showType === "gallery") {
|
||||
tasks = state.totalGalleryTask
|
||||
if(state.showType === "gallery")
|
||||
gid = link.split("/")[4]
|
||||
}
|
||||
else
|
||||
tasks = state.totalVideoTask
|
||||
|
||||
if(gid === null)
|
||||
for (i = 0; i < tasks.length; i++) {
|
||||
@ -612,17 +608,15 @@ const mutations = {
|
||||
state.searchTask.splice(0)
|
||||
if(keyword.trim() !== '') {
|
||||
state.page = 1
|
||||
let tasks
|
||||
if (state.showType === "video")
|
||||
tasks = state.totalVideoTask
|
||||
else
|
||||
tasks = state.totalGalleryTask
|
||||
let tasks = state.currentTasks
|
||||
tasks.forEach((task) => {
|
||||
if (task.name.includes(keyword))
|
||||
state.searchTask.push(task)
|
||||
})
|
||||
if (state.searchTask.length === 0)
|
||||
ElMessage("未找到该关键字的任务")
|
||||
else
|
||||
state.currentTasks = state.searchTask
|
||||
}
|
||||
},
|
||||
_searchLocalByTag(state, tags) {
|
||||
@ -631,36 +625,34 @@ const mutations = {
|
||||
|
||||
let tagAmount = tags.length
|
||||
let hitAmount
|
||||
let tasks = state.totalGalleryTask
|
||||
let tasks = state.currentTasks
|
||||
|
||||
if (tags[0].trim() !== '') {
|
||||
tasks.forEach((task) => {
|
||||
hitAmount = 0
|
||||
tags.forEach((tag) => {
|
||||
if (task.tag.includes(tag))
|
||||
hitAmount++
|
||||
})
|
||||
if (hitAmount === tagAmount)
|
||||
state.searchTask.push(task)
|
||||
if('tag' in task) {
|
||||
hitAmount = 0
|
||||
tags.forEach((tag) => {
|
||||
if (task.tag.includes(tag))
|
||||
hitAmount++
|
||||
})
|
||||
if (hitAmount === tagAmount)
|
||||
state.searchTask.push(task)
|
||||
}
|
||||
})
|
||||
|
||||
if (state.searchTask.length === 0)
|
||||
ElMessage("未找到符合这些tag的任务")
|
||||
else
|
||||
state.currentTasks = state.searchTask
|
||||
}
|
||||
},
|
||||
_deleteGallery(state, gid){
|
||||
for(let i=0; i<state.totalGalleryTask.length; i++)
|
||||
if(state.totalGalleryTask[i].gid === gid){
|
||||
state.totalGalleryTask.splice(i, 1)
|
||||
break
|
||||
}
|
||||
let tasks = [state.totalGalleryTask, state.downloadGallery, state.collectGallery]
|
||||
deleteTask(tasks, 'gid', gid)
|
||||
},
|
||||
_deleteVideo(state, id){
|
||||
for(let i=0; i<state.totalVideoTask.length; i++)
|
||||
if(state.totalGalleryTask[i].id === id){
|
||||
state.totalVideoTask.splice(i, 1)
|
||||
break
|
||||
}
|
||||
let tasks = [state.totalVideoTask, state.downloadVideo, state.collectVideo]
|
||||
deleteTask(tasks, 'id', id)
|
||||
},
|
||||
_setChosenGallery(state,data){
|
||||
if(data.gallery === false) {
|
||||
@ -685,33 +677,21 @@ const mutations = {
|
||||
}
|
||||
state.chosenVideo = data.video
|
||||
},
|
||||
_setCategory(state, category){
|
||||
state.category = category
|
||||
confirmCurrentTask(state)
|
||||
},
|
||||
_setShowType(state, showType){
|
||||
state.showType = showType
|
||||
confirmCurrentTask(state)
|
||||
if(showType === 'video' && state.sortType === "shortName") {
|
||||
state.sortType = 'name'
|
||||
sortTasks(state)
|
||||
}
|
||||
},
|
||||
_setSortType(state, sortType){
|
||||
state.sortType = sortType
|
||||
switch (sortType) {
|
||||
case "name":
|
||||
state.totalGalleryTask = state.totalGalleryTask.sort((before, after) => {
|
||||
return before.name > after.name ? 1: -1
|
||||
})
|
||||
state.totalVideoTask = state.totalVideoTask.sort((before, after) => {
|
||||
return before.name > after.name ? 1: -1
|
||||
})
|
||||
break
|
||||
case "shortName":
|
||||
state.totalGalleryTask = state.totalGalleryTask.sort((before, after) => {
|
||||
return before.shortName > after.shortName ? 1: -1
|
||||
})
|
||||
break
|
||||
case "createTime":
|
||||
state.totalGalleryTask = state.totalGalleryTask.sort((before, after) => {
|
||||
return before.createTime - after.createTime
|
||||
})
|
||||
state.totalVideoTask = state.totalVideoTask.sort((before, after) => {
|
||||
return before.createTime - after.createTime
|
||||
})
|
||||
}
|
||||
sortTasks(state)
|
||||
},
|
||||
_setShowNameType(state, type){
|
||||
if(type === "shortName")
|
||||
@ -750,87 +730,66 @@ const mutations = {
|
||||
}
|
||||
|
||||
const state = {
|
||||
totalGalleryTask:[], //存放本子数据的数组
|
||||
chosenGallery:false, //准备下载的本子
|
||||
thumbnailGallery:{}, //缩略图链接
|
||||
collectGallery:[], //收藏的本子
|
||||
downloadGallery:[], //下载的本子
|
||||
totalGalleryTask: [], //存放本子数据的数组
|
||||
chosenGallery: false, //准备下载的本子
|
||||
thumbnailGallery: {}, //缩略图链接
|
||||
collectGallery: [], //收藏的本子
|
||||
downloadGallery: [], //下载的本子
|
||||
|
||||
onlineLinks:{}, //在线本子链接
|
||||
isOnlineReading: false, //是否在线看
|
||||
currentGid: "", //当前GID
|
||||
currentLinks: [], //当前本子链接
|
||||
imageWidth: "", //图片宽度
|
||||
imagePadding: "", //图片padding
|
||||
onlineLinks: {}, //在线本子链接
|
||||
isOnlineReading: false, //是否在线看
|
||||
currentGid: "", //当前GID
|
||||
currentLinks: [], //当前本子链接
|
||||
imageWidth: "", //图片宽度
|
||||
imagePadding: "", //图片padding
|
||||
|
||||
totalVideoTask: [], //存放视频数据的数组
|
||||
chosenVideo: false, //准备下载的视频
|
||||
collectVideo: [], //收藏的视频
|
||||
downloadVideo: [], //下载的视频
|
||||
|
||||
page:1, //当前页数
|
||||
length:10, //每页能有多少个链接
|
||||
defaultLength:7, //默认个数
|
||||
shortLength:10, //简洁个数
|
||||
page: 1, //当前页数
|
||||
length: 10, //每页能有多少个链接
|
||||
defaultLength: 7, //默认个数
|
||||
shortLength: 10, //简洁个数
|
||||
|
||||
userId:-1, //用户id
|
||||
username: "", //用户名
|
||||
isAuth:false, //是否授权
|
||||
AuthCode:'', //授权码
|
||||
loadComplete:false, //是否加载完成
|
||||
galleryRefreshTimer:0, //本子更新计时器id
|
||||
videoRefreshTimer:0, //视频更新计时器id
|
||||
userId: -1, //用户id
|
||||
username: "", //用户名
|
||||
isAuth: false, //是否授权
|
||||
AuthCode: '', //授权码
|
||||
loadComplete: false, //是否加载完成
|
||||
galleryRefreshTimer: 0, //本子更新计时器id
|
||||
videoRefreshTimer: 0, //视频更新计时器id
|
||||
|
||||
isInclude:false, //是否搜索到任务
|
||||
searchTask:[], //搜索到的任务
|
||||
showType:'gallery', //展示类型
|
||||
isInclude: false, //是否搜索到任务
|
||||
searchTask: [], //搜索到的任务
|
||||
showType:'gallery', //展示类型
|
||||
category: 'myDownload', //分类
|
||||
sortType:'shortName', //排序类型
|
||||
weekUsed:{}, //每周用量
|
||||
currentTasks: [], //当前任务
|
||||
weekUsed: {}, //每周用量
|
||||
|
||||
maskDomain:[] //伪装域名
|
||||
maskDomain: [] //伪装域名
|
||||
}
|
||||
|
||||
const getters = {
|
||||
galleryTasks(state){
|
||||
if(state.showType === 'collect')
|
||||
return state.collectGallery.slice((state.page-1)*state.length, state.page*state.length)
|
||||
if(state.searchTask.length !== 0)
|
||||
return state.searchTask.slice((state.page-1)*state.length, state.page*state.length)
|
||||
if(state.totalGalleryTask.length !== 0)
|
||||
return state.totalGalleryTask.slice((state.page-1)*state.length, state.page*state.length)
|
||||
return null
|
||||
},
|
||||
videoTasks(state){
|
||||
if(state.searchTask.length !== 0)
|
||||
return state.searchTask.slice((state.page-1)*state.length, state.page*state.length)
|
||||
if(state.totalVideoTask.length !== 0)
|
||||
return state.totalVideoTask.slice((state.page-1)*state.length, state.page*state.length)
|
||||
return null
|
||||
currentTasks(state){
|
||||
return state.currentTasks.slice((state.page-1)*state.length, state.page*state.length)
|
||||
},
|
||||
min(){
|
||||
return 1
|
||||
},
|
||||
max(state){
|
||||
let max = 0
|
||||
let tasks
|
||||
if(state.showType === 'collect')
|
||||
tasks = state.collectGallery
|
||||
else if(state.searchTask.length !== 0)
|
||||
tasks = state.searchTask
|
||||
else if(state.showType === "gallery")
|
||||
tasks = state.totalGalleryTask
|
||||
else if(state.showType === "video")
|
||||
tasks = state.totalVideoTask
|
||||
let tasks = state.currentTasks
|
||||
|
||||
if(!tasks)
|
||||
return 1
|
||||
|
||||
max = Math.floor(tasks.length/state.length)
|
||||
if(tasks.length % state.length !== 0)
|
||||
if(tasks.length % state.length !== 0 || max === 0)
|
||||
max += 1
|
||||
|
||||
if(max === 0)
|
||||
return 1
|
||||
return max
|
||||
}
|
||||
}
|
||||
@ -874,4 +833,65 @@ function getShortname(name){
|
||||
} else {
|
||||
return name
|
||||
}
|
||||
}
|
||||
|
||||
function confirmCurrentTask(state){
|
||||
if(state.showType === "gallery")
|
||||
switch (state.category){
|
||||
case 'myDownload':
|
||||
state.currentTasks = state.downloadGallery
|
||||
break
|
||||
case 'myCollect':
|
||||
state.currentTasks = state.collectGallery
|
||||
break
|
||||
case 'total':
|
||||
state.currentTasks = state.totalGalleryTask
|
||||
break
|
||||
}
|
||||
else
|
||||
switch (state.category){
|
||||
case 'myDownload':
|
||||
state.currentTasks = state.downloadVideo
|
||||
break
|
||||
case 'myCollect':
|
||||
state.currentTasks = state.collectGallery
|
||||
break
|
||||
case 'total':
|
||||
state.currentTasks = state.totalVideoTask
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
function sortTasks(state){
|
||||
switch (state.sortType) {
|
||||
case "name":
|
||||
state.currentTasks = state.currentTasks.sort((before, after) => {
|
||||
return before.name > after.name ? 1: -1
|
||||
})
|
||||
state.currentTasks = state.currentTasks.sort((before, after) => {
|
||||
return before.name > after.name ? 1: -1
|
||||
})
|
||||
break
|
||||
case "shortName":
|
||||
state.currentTasks = state.currentTasks.sort((before, after) => {
|
||||
return before.shortName > after.shortName ? 1: -1
|
||||
})
|
||||
break
|
||||
case "createTime":
|
||||
state.currentTasks = state.currentTasks.sort((before, after) => {
|
||||
return before.createTime - after.createTime
|
||||
})
|
||||
state.currentTasks = state.currentTasks.sort((before, after) => {
|
||||
return before.createTime - after.createTime
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function deleteTask(tasks, key, value){
|
||||
for(let j=0; j < tasks.length; j++)
|
||||
for(let i=0; i<tasks[j].length; i++)
|
||||
if(tasks[j][i][key] === value){
|
||||
tasks[j].splice(i, 1)
|
||||
break
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user