每次访问时倒遍历十个任务的状态,未下完则开启定时刷新。优化部分foreach,性能提升。优化代码。(同步更新)

This commit is contained in:
chuzhongzai 2023-02-24 22:42:25 +08:00
parent 74256e6c3b
commit 5598a37ad4
3 changed files with 119 additions and 88 deletions

View File

@ -110,12 +110,14 @@ import store from "../store";
import {computed, ref, onMounted} from "vue"; import {computed, ref, onMounted} from "vue";
import {ElMessage} from "element-plus" import {ElMessage} from "element-plus"
//
let AuthCode = ref("") let AuthCode = ref("")
let isRemember = ref(false) let isRemember = ref(false)
let isAlterAuthCode = ref(false) let isAlterAuthCode = ref(false)
let newAuthCode = ref("") let newAuthCode = ref("")
let tempAuthCode = ref("") let tempAuthCode = ref("")
//
let type = ref("link") let type = ref("link")
let param = ref("") let param = ref("")

View File

@ -163,7 +163,7 @@ let isEditingTag = ref(false)
// //
let isPlaying = ref(false) let isPlaying = ref(false)
// //
let current_video_link = ref("") let current_video_link = ref("")
let player = ref() let player = ref()

View File

@ -14,13 +14,24 @@ const actions = {
AuthCode: state.AuthCode AuthCode: state.AuthCode
} }
}).then((res) => { }).then((res) => {
if(res.data.result === "success") if(res.data.result === "success") {
context.commit("_updateGalleryTasks", {tasks:JSON.parse(res.data.data), type}) let tasks = JSON.parse(res.data.data)
if (type === "all" && state.galleryRefreshTimer === 0) { //判断是否有未下载完成的本子以及定时更新是否开启
for (let i = tasks.length - 1; i > tasks.length - 11; i--) //从后往前遍历十个本子,查看是否有未下载完成的本子
if (tasks[i].status !== "下载完成") {
state.galleryRefreshTimer = setInterval(() => {
context.dispatch("updateGalleryTasks", "undone").then()
}, 20000)
break
}
}
context.commit("_updateGalleryTasks", {tasks, type})
}
else if(type === 'undone') { else if(type === 'undone') {
context.dispatch("updateGalleryTasks", "all").then() context.dispatch("updateGalleryTasks", "all").then()
clearInterval(state.refreshTimer) clearInterval(state.galleryRefreshTimer)
state.refreshTimer = 0 state.galleryRefreshTimer = 0
} }
}) })
}, },
@ -31,12 +42,23 @@ const actions = {
AuthCode: state.AuthCode AuthCode: state.AuthCode
} }
}).then(res => { }).then(res => {
if(res.data.result === "success") if(res.data.result === "success") {
context.commit("_updateVideoTasks", {tasks:JSON.parse(res.data.data), type}) let tasks = JSON.parse(res.data.data)
if (type === "all" && state.videoRefreshTimer === 0) { //判断是否有未下载完成的视频以及定时更新是否开启
for (let i = tasks.length - 1; i > tasks.length - 11; i--) //从后往前遍历十个本子,查看是否有未下载完成的视频
if (tasks[i].status !== "下载完成") {
state.videoRefreshTimer = setInterval(() => {
context.dispatch("updateVideoTasks", "undone").then()
}, 20000)
break
}
}
context.commit("_updateVideoTasks", {tasks, type})
}
else if(type === 'undone') { else if(type === 'undone') {
clearInterval(state.refreshTimer) clearInterval(state.videoRefreshTimer)
state.refreshTimer = 0 state.videoRefreshTimer = 0
context.dispatch("updateVideoTasks", "all").then() context.dispatch("updateVideoTasks", "all").then()
} }
}) })
@ -50,8 +72,8 @@ const actions = {
if(res.data.result === "success") { if(res.data.result === "success") {
ElMessage("提交成功") ElMessage("提交成功")
context.commit("_setChosenGallery", {gallery: false, resolution: data.targetResolution}) context.commit("_setChosenGallery", {gallery: false, resolution: data.targetResolution})
if(state.refreshTimer === 0) if(state.galleryRefreshTimer === 0)
state.refreshTimer = setInterval(() => { state.galleryRefreshTimer = setInterval(() => {
context.dispatch("updateGalleryTasks", "undone").then() context.dispatch("updateGalleryTasks", "undone").then()
}, 20000) }, 20000)
} }
@ -72,8 +94,8 @@ const actions = {
if(res.data.result === "success") { if(res.data.result === "success") {
ElMessage("提交成功") ElMessage("提交成功")
context.commit("_setChosenVideo", {video: false, resolution: data.targetResolution}) context.commit("_setChosenVideo", {video: false, resolution: data.targetResolution})
if(state.refreshTimer === 0) if(state.videoRefreshTimer === 0)
state.refreshTimer = setInterval(() => { state.videoRefreshTimer = setInterval(() => {
context.dispatch("updateVideoTasks", "undone").then() context.dispatch("updateVideoTasks", "undone").then()
}, 20000) }, 20000)
} }
@ -138,11 +160,11 @@ const actions = {
updateGallery(context, link){ updateGallery(context, link){
axios.post(GalleryManageUrl + "/update", qs.stringify({AuthCode: state.AuthCode, link})) axios.post(GalleryManageUrl + "/update", qs.stringify({AuthCode: state.AuthCode, link}))
.then((res) => { .then((res) => {
if(res.data.result === 'success' && state.refreshTimer === 0){ if(res.data.result === 'success' && state.galleryRefreshTimer === 0){
setTimeout(() => { setTimeout(() => {
context.dispatch("updateGalleryTasks", "all").then() context.dispatch("updateGalleryTasks", "all").then()
}, 5000) }, 5000)
state.refreshTimer = setInterval(() => { state.galleryRefreshTimer = setInterval(() => {
context.dispatch("updateGalleryTasks", "undone").then() context.dispatch("updateGalleryTasks", "undone").then()
}, 20000) }, 20000)
} }
@ -285,55 +307,60 @@ const actions = {
const mutations = { const mutations = {
_collectGallery(state, gid){ _collectGallery(state, gid){
state.totalGalleryTask.forEach((gallery) => { let tasks = state.totalGalleryTask
if(!gallery.isCollect && gallery.gid === gid){ for(let i=0; i< tasks.length; i++){
gallery.isCollect = true if(!tasks[i].isCollect && tasks[i].gid === gid){
state.collectGallery.push(gallery) tasks[i].isCollect = true
state.collectGallery.push(tasks[i])
}
} }
})
}, },
_collectVideo(state, id){ _collectVideo(state, id){
state.totalVideoTask.forEach((video) => { let tasks = state.totalVideoTask
if(!video.isCollect && video.id === id){ for(let i=0; i< tasks.length; i++){
video.isCollect = true if(!tasks[i].isCollect && tasks[i].id === id){
state.collectVideo.push(video) tasks[i].isCollect = true
state.collectGallery.push(tasks[i])
}
} }
})
}, },
_disCollectGallery(state, gid){ _disCollectGallery(state, gid){
state.collectGallery.splice(0) let index
state.totalGalleryTask.forEach((gallery) => { for(let i=0; i < state.collectGallery.length; i++){
if(gallery.isCollect && gallery.gid === gid) if(state.collectGallery[i].gid === gid){
gallery.isCollect = false index = i
break
else if(gallery.isCollect) }
state.collectGallery.push(gallery) }
}) state.collectGallery[index].isCollect = false
state.collectGallery.splice(index, 1)
}, },
_disCollectVideo(state, id){ _disCollectVideo(state, id){
state.collectVideo.splice(0) let index
state.totalVideoTask.forEach((video) => { for(let i=0; i < state.collectVideo.length; i++){
if(video.isCollect && video.id === id) if(state.collectVideo[i].id === id){
video.isCollect = false index = i
break
else if(video.isCollect) }
state.collectVideo.push(video) }
state.collectVideo[index].isCollect = false
}) state.collectVideo.splice(index, 1)
}, },
_updateGalleryTag(state, data){ _updateGalleryTag(state, data){
state.totalGalleryTask.forEach((gallery) => { for(let i=0; i < state.totalGalleryTask.length; i++){
if(gallery.gid === data.gid){ if(state.totalGalleryTask[i].gid === data.gid){
gallery.tag = data.tag state.totalGalleryTask[i].tag = data.tag
break
}
} }
})
}, },
_updateVideoTag(state, data){ _updateVideoTag(state, data){
state.totalVideoTask.forEach((video) => { for(let i=0; i < state.totalVideoTask.length; i++){
if(video.id === data.id){ if(state.totalVideoTask[i].gid === data.gid){
video.tag = data.tag state.totalVideoTask[i].tag = data.tag
break
}
} }
})
}, },
_updateGalleryTasks(state, data){ _updateGalleryTasks(state, data){
let {tasks, type} = data let {tasks, type} = data
@ -341,6 +368,7 @@ const mutations = {
state.totalGalleryTask.splice(0) state.totalGalleryTask.splice(0)
state.collectGallery.slice(0) state.collectGallery.slice(0)
state.downloadGallery.splice(0) state.downloadGallery.splice(0)
tasks.forEach((task) => { tasks.forEach((task) => {
//处理名字 //处理名字
task.shortName = getShortname(task.name) task.shortName = getShortname(task.name)
@ -369,22 +397,23 @@ const mutations = {
task.createTimeDisplay = new Date(task.createTime * 1000).toLocaleString("zh") task.createTimeDisplay = new Date(task.createTime * 1000).toLocaleString("zh")
//处理标签 //处理标签
if (task.tag === undefined) { if (!'tag' in task) {
task.tag = "" task.tag = ""
} }
//处理是否收藏 //处理是否收藏
if(task.collector !== undefined){ if('collector' in task){
let collector = task.collector.split(",") let collector = task.collector.split(",")
task.collector = undefined delete task.collector
collector.forEach((id) => { for(let i=0; i<collector.length; i++){
if(parseInt(id) === state.userId) { if(parseInt(collector[i]) === state.userId){
task.isCollect = true task.isCollect = true
state.collectGallery.push(task) state.collectGallery.push(task)
break
}
} }
})
if(task.isCollect === undefined) if(!'isCollect' in task)
task.isCollect = false task.isCollect = false
} }
@ -402,17 +431,16 @@ const mutations = {
tempArray.forEach((task) => { tempArray.forEach((task) => {
preDeleteIndex = -1 preDeleteIndex = -1
if(task.status !== "下载完成") if(task.status !== "下载完成")
tasks.forEach((newTask, index) => { for(let i=0; i < tasks.length; i++)
if(newTask.name === task.name){ if(tasks[i].name === task.name) {
preDeleteIndex = index preDeleteIndex = i
task.status = newTask.status task.status = tasks[i].status
task.proceeding = newTask.proceeding task.proceeding = tasks[i].proceeding
if (task.proceeding === 0) if (task.proceeding === 0)
task.progress = task.status task.progress = task.status
else else
task.progress = (Math.round((task.proceeding / task.pages) * 100)).toString() + "%" task.progress = (Math.round((task.proceeding / task.pages) * 100)).toString() + "%"
} }
})
if(preDeleteIndex !== -1) if(preDeleteIndex !== -1)
delete tasks[preDeleteIndex] delete tasks[preDeleteIndex]
@ -466,11 +494,11 @@ const mutations = {
task.createTimeDisplay = new Date(task.createTime * 1000).toLocaleString("zh") task.createTimeDisplay = new Date(task.createTime * 1000).toLocaleString("zh")
//处理标签 //处理标签
if(task.tag === undefined) if(! 'tag' in task)
task.tag = "" task.tag = ""
//处理是否收藏 //处理是否收藏
if(task.collector !== undefined){ if('collector' in task){
let collector = task.collector.split(",") let collector = task.collector.split(",")
delete task.collector delete task.collector
for(let i=0; i<collector.length; i++){ for(let i=0; i<collector.length; i++){
@ -481,7 +509,7 @@ const mutations = {
} }
} }
if(task.isCollect === undefined) if(!'isCollect' in task)
task.isCollect = false task.isCollect = false
} }
@ -499,12 +527,12 @@ const mutations = {
tempArray.forEach((task) => { tempArray.forEach((task) => {
preDeleteIndex = -1 preDeleteIndex = -1
if(task.status !== "下载完成") if(task.status !== "下载完成")
tasks.forEach((newTask, index) => { for(let i=0; i < tasks.length; i++)
if(newTask.name === task.name){ if(tasks[i].name === task.name){
task.progress = task.status task.progress = tasks[i].status
preDeleteIndex = index preDeleteIndex = i
break
} }
})
if(preDeleteIndex !== -1) if(preDeleteIndex !== -1)
delete tasks[preDeleteIndex] delete tasks[preDeleteIndex]
state.totalVideoTask.push(task) state.totalVideoTask.push(task)
@ -581,10 +609,9 @@ const mutations = {
if (task.name.includes(keyword)) if (task.name.includes(keyword))
state.searchTask.push(task) state.searchTask.push(task)
}) })
if (state.searchTask.length === 0) { if (state.searchTask.length === 0)
ElMessage("未找到该关键字的任务") ElMessage("未找到该关键字的任务")
} }
}
}, },
_searchLocalByTag(state, tags) { _searchLocalByTag(state, tags) {
state.searchTask.splice(0) state.searchTask.splice(0)
@ -610,17 +637,18 @@ const mutations = {
} }
}, },
_deleteGallery(state, gid){ _deleteGallery(state, gid){
state.totalGalleryTask.forEach((item, index, arr) => { for(let i=0; i<state.totalGalleryTask.length; i++)
if(item.gid === gid){ if(state.totalGalleryTask[i].gid === gid){
arr.splice(index, 1) state.totalGalleryTask.splice(i, 1)
break
} }
})
}, },
_deleteVideo(state, id){ _deleteVideo(state, id){
state.totalVideoTask.forEach((item, index, arr) => { for(let i=0; i<state.totalVideoTask.length; i++)
if(item.id === id) if(state.totalGalleryTask[i].id === id){
arr.splice(index, 1) state.totalVideoTask.splice(i, 1)
}) break
}
}, },
_setChosenGallery(state,data){ _setChosenGallery(state,data){
if(data.gallery === false) { if(data.gallery === false) {
@ -741,7 +769,8 @@ const state = {
isAuth:false, //是否授权 isAuth:false, //是否授权
AuthCode:'', //授权码 AuthCode:'', //授权码
loadComplete:false, //是否加载完成 loadComplete:false, //是否加载完成
refreshTimer:0, //更新计时器id galleryRefreshTimer:0, //本子更新计时器id
videoRefreshTimer:0, //视频更新计时器id
isInclude:false, //是否搜索到任务 isInclude:false, //是否搜索到任务
searchTask:[], //搜索到的任务 searchTask:[], //搜索到的任务