精简代码,抽取公共代码为函数,修复bug(同步更新)

This commit is contained in:
chuzhongzai 2023-02-27 22:52:36 +08:00
parent 5598a37ad4
commit 66cf457240
3 changed files with 184 additions and 164 deletions

View File

@ -213,7 +213,7 @@ function queryLocalTask(){
} }
function resetLocalQuery(){ function resetLocalQuery(){
store.commit("_searchLocalByKeyword", "") store.commit("_searchLocalByKeyword", "")
store.commit("_searchLocalByTaf", ['']) store.commit("_searchLocalByTag", [''])
param.value = "" param.value = ""
} }

View File

@ -2,7 +2,7 @@
<el-drawer v-model="isOpenHistoryPanel" direction="ltr" size="100%" @close="closeHistoryPanel" > <el-drawer v-model="isOpenHistoryPanel" direction="ltr" size="100%" @close="closeHistoryPanel" >
<div class="side"> <div class="side">
<div v-show="loadComplete" class="load_complete"> <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" width="25px"> <el-table-column type="expand" width="25px">
<template #default="props"> <template #default="props">
@ -32,7 +32,7 @@
<el-table-column label="名字" width="240px"> <el-table-column label="名字" width="240px">
<template #default="scoped"> <template #default="scoped">
<span @click="showThumbnail(scoped.row)"> <span @click="showThumbnail(scoped.row)">
{{showNameType === 'shortName' ? scoped.row.shortName: scoped.row.name}} {{galleryNameType === 'shortName' ? scoped.row.shortName: scoped.row.name}}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
@ -44,7 +44,7 @@
</el-table-column> </el-table-column>
</el-table> </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"> <el-table-column type="expand">
<template #default="props"> <template #default="props">
名字:{{props.row.name}} <br> 名字:{{props.row.name}} <br>
@ -82,24 +82,32 @@
<el-row class="pageChanger"> <el-row class="pageChanger">
<el-col> <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="gallery" label="本子"/>
<el-option value="video" label="视频"/> <el-option value="video" label="视频"/>
<el-option value="collect" label="收藏"/>
</el-select> </el-select>
</el-col> <el-select v-model="category" @change="changeCategory">
<el-col> <template #prefix>
排列顺序:<el-select v-model="sortType" @change="changeSortType" style="width: 125px"> 分类
<el-option value="name" label="名字"></el-option> </template>
<el-option value="shortName" label="简洁名字"></el-option> <el-option value="myCollect" label="我的收藏"/>
<el-option value="createTime" label="任务创建时间"></el-option> <el-option value="myDownload" label="我的下载"/>
<el-option value="total" label="全部"/>
</el-select> </el-select>
<el-select v-model="sortType" @change="changeSortType" style="width: 165px">
</el-col> <template #prefix>
<el-col> 排序
显示:<el-select v-model="showNameType" @change="changeShowNameType"> </template>
<el-option value="name" label="名字"></el-option> <el-option value="name" label="名字"/>
<el-option value="shortName" label="简洁名字"></el-option> <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-select>
</el-col> </el-col>
<el-col> <el-col>
@ -136,8 +144,8 @@
</el-footer> </el-footer>
</el-dialog> </el-dialog>
<el-dialog v-model="isOnlineReading" title="在线预览" @close="closeOnlineReader" width="90%" top="0"> <el-dialog v-model="isOnlineReading" title="在线预览" @close="closeOnlineReading" width="90%" top="0">
<el-scrollbar height="80vh"> <el-scrollbar height="80vh" ref="onlineReadingScrollbar">
<el-image v-for="(link, index) in currentLinks" :src="link" :style="{'width': 'auto', 'text-align': 'center', 'background-color': 'ghostwhite'}" <el-image v-for="(link, index) in currentLinks" :src="link" :style="{'width': 'auto', 'text-align': 'center', 'background-color': 'ghostwhite'}"
:preview-src-list="currentLinks" :initial-index="index" loading="lazy"/> :preview-src-list="currentLinks" :initial-index="index" loading="lazy"/>
</el-scrollbar> </el-scrollbar>
@ -172,29 +180,22 @@ let tempTag = ref("")
let tempGid = ref("") let tempGid = ref("")
let tempId = ref("") let tempId = ref("")
let category = ref("myDownload") //myDownload myCollect total
let showNameType = ref("shortName") // shortName fullName let galleryNameType = ref("shortName") // shortName name
let showType = ref("gallery") // gallery video collect let showType = ref("gallery") // gallery video collect
let sortType = ref("shortName") // shortName fullName createTime let sortType = ref("shortName") // shortName name createTime
let targetPage = ref(1) let targetPage = ref(1) //
let onlineReadingScrollbar = ref(null)
let loadComplete = computed(() => { let loadComplete = computed(() => {
return store.state.loadComplete return store.state.loadComplete
}) })
let galleryTasks = computed(() => { let currentTasks = computed(() => {
return store.getters.galleryTasks ? store.getters.galleryTasks: null return store.getters.currentTasks ? store.getters.currentTasks: 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 isOpenHistoryPanel = computed(() => { let isOpenHistoryPanel = computed(() => {
return store.state.isShowHistory return store.state.isShowHistory
}) })
@ -217,6 +218,13 @@ let page = computed(() => {
let isLion = computed(() => { let isLion = computed(() => {
return store.state.userId === 3 return store.state.userId === 3
}) })
let emptyText = computed(() => {
let type = showType.value === 'gallery' ? '本子': '视频'
let action = category.value === 'myDownload' ? '下载': '收藏'
return '您未' + action + type
})
//线 //线
let currentLinks = computed(() => { let currentLinks = computed(() => {
return store.state.currentLinks return store.state.currentLinks
@ -256,24 +264,19 @@ function reverseEditMode(){
} }
// //
function changeCategory(){
store.commit("_setCategory", category.value)
}
function changeShowType(){ function changeShowType(){
if(showType.value === 'video')
sortType.value = 'name'
store.commit("_setShowType", showType.value) store.commit("_setShowType", showType.value)
} }
function changeShowNameType(){ function changeGalleryNameType(){
store.commit("_setShowNameType", showNameType.value) store.commit("_setShowNameType", galleryNameType.value)
if(showNameType.value !== sortType.value){
store.commit("_setSortType", showNameType.value)
sortType.value = showNameType.value
}
} }
function changeSortType(){ function changeSortType(){
store.commit("_setSortType", sortType.value) store.commit("_setSortType", sortType.value)
if(sortType.value !== showNameType.value && sortType.value !== "createTime") {
store.commit("_setShowNameType", sortType.value)
showNameType.value = sortType.value
}
} }
//,, //,,
@ -300,7 +303,7 @@ function editVideoTag(id, tag){
isEditingTag.value = true isEditingTag.value = true
} }
function submitGalleryTag(){ function submitGalleryTag(){
store.dispatch("updateTag", {gid:tempGid.value, tag:tempTag.value}) store.dispatch("updateGalleryTag", {gid:tempGid.value, tag:tempTag.value})
tempTag.value = '' tempTag.value = ''
tempGid.value = '' tempGid.value = ''
isEditingTag.value = false isEditingTag.value = false
@ -328,8 +331,9 @@ function deleteVideo(id){
function onlineGalleryReader(gid){ function onlineGalleryReader(gid){
store.dispatch("queryOnlineLinks", gid) store.dispatch("queryOnlineLinks", gid)
} }
function closeOnlineReader(){ function closeOnlineReading(){
store.state.isOnlineReading = false store.state.isOnlineReading = false
onlineReadingScrollbar.value.setScrollTop(0)
} }
function shareGallery(data){ function shareGallery(data){
const {gid, shortName} = data const {gid, shortName} = data
@ -390,7 +394,7 @@ function closeHistoryPanel(){
margin-top: 5vh; margin-top: 5vh;
} }
.el-select{ .el-select{
width: 100px; width: 135px;
} }
.page{ .page{
display: inline-block; display: inline-block;

View File

@ -178,7 +178,7 @@ const actions = {
//初始化 //初始化
context.dispatch("loadMaskDomain").then() context.dispatch("loadMaskDomain").then()
context.dispatch("loadWeekUsedAmount").then() context.dispatch("loadWeekUsedAmount").then()
context.dispatch("updateGalleryTasks", "all").then() context.dispatch("updateGalleryTasks", "all").then(() => confirmCurrentTask(context.state))
context.dispatch("updateVideoTasks", "all").then() context.dispatch("updateVideoTasks", "all").then()
//手机不需要设置宽度 //手机不需要设置宽度
@ -418,7 +418,7 @@ const mutations = {
} }
//处理是否下载 //处理是否下载
if(task.downloader === state.username) if(task.downloader === state.userId)
state.downloadGallery.push(task) state.downloadGallery.push(task)
state.totalGalleryTask.push(task) state.totalGalleryTask.push(task)
@ -514,7 +514,7 @@ const mutations = {
} }
//处理是否下载 //处理是否下载
if(task.downloader === state.username) if(task.downloader === state.userId)
state.downloadVideo.push(task) state.downloadVideo.push(task)
state.totalVideoTask.push(task) state.totalVideoTask.push(task)
@ -564,17 +564,13 @@ const mutations = {
localStorage.removeItem("auth") localStorage.removeItem("auth")
}, },
_searchLocalByLink(state, link){ _searchLocalByLink(state, link){
let tasks let tasks = state.currentTasks
let i = 0 let i = 0
let gid = null let gid = null
let name = null let name = null
if(state.showType === "gallery") { if(state.showType === "gallery")
tasks = state.totalGalleryTask
gid = link.split("/")[4] gid = link.split("/")[4]
}
else
tasks = state.totalVideoTask
if(gid === null) if(gid === null)
for (i = 0; i < tasks.length; i++) { for (i = 0; i < tasks.length; i++) {
@ -600,11 +596,7 @@ const mutations = {
state.searchTask.splice(0) state.searchTask.splice(0)
if(keyword.trim() !== '') { if(keyword.trim() !== '') {
state.page = 1 state.page = 1
let tasks let tasks = state.currentTasks
if (state.showType === "video")
tasks = state.totalVideoTask
else
tasks = state.totalGalleryTask
tasks.forEach((task) => { tasks.forEach((task) => {
if (task.name.includes(keyword)) if (task.name.includes(keyword))
state.searchTask.push(task) state.searchTask.push(task)
@ -619,10 +611,11 @@ const mutations = {
let tagAmount = tags.length let tagAmount = tags.length
let hitAmount let hitAmount
let tasks = state.totalGalleryTask let tasks = state.currentTasks
if (tags[0].trim() !== '') { if (tags[0].trim() !== '') {
tasks.forEach((task) => { tasks.forEach((task) => {
if('tag' in task) {
hitAmount = 0 hitAmount = 0
tags.forEach((tag) => { tags.forEach((tag) => {
if (task.tag.includes(tag)) if (task.tag.includes(tag))
@ -630,6 +623,7 @@ const mutations = {
}) })
if (hitAmount === tagAmount) if (hitAmount === tagAmount)
state.searchTask.push(task) state.searchTask.push(task)
}
}) })
if (state.searchTask.length === 0) if (state.searchTask.length === 0)
@ -637,18 +631,12 @@ const mutations = {
} }
}, },
_deleteGallery(state, gid){ _deleteGallery(state, gid){
for(let i=0; i<state.totalGalleryTask.length; i++) let tasks = [state.totalGalleryTask, state.downloadGallery, state.collectGallery]
if(state.totalGalleryTask[i].gid === gid){ deleteTask(tasks, 'gid', gid)
state.totalGalleryTask.splice(i, 1)
break
}
}, },
_deleteVideo(state, id){ _deleteVideo(state, id){
for(let i=0; i<state.totalVideoTask.length; i++) let tasks = [state.totalVideoTask, state.downloadVideo, state.collectVideo]
if(state.totalGalleryTask[i].id === id){ deleteTask(tasks, 'id', id)
state.totalVideoTask.splice(i, 1)
break
}
}, },
_setChosenGallery(state,data){ _setChosenGallery(state,data){
if(data.gallery === false) { if(data.gallery === false) {
@ -672,33 +660,21 @@ const mutations = {
} }
state.chosenVideo = data.video state.chosenVideo = data.video
}, },
_setCategory(state, category){
state.category = category
confirmCurrentTask(state)
},
_setShowType(state, showType){ _setShowType(state, showType){
state.showType = showType state.showType = showType
confirmCurrentTask(state)
if(showType === 'video' && state.sortType === "shortName") {
state.sortType = 'name'
sortTasks(state)
}
}, },
_setSortType(state, sortType){ _setSortType(state, sortType){
state.sortType = sortType state.sortType = sortType
switch (sortType) { sortTasks(state)
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
})
}
}, },
_setShowNameType(state, type){ _setShowNameType(state, type){
if(type === "shortName") if(type === "shortName")
@ -743,86 +719,65 @@ const mutations = {
} }
const state = { const state = {
totalGalleryTask:[], //存放本子数据的数组 totalGalleryTask: [], //存放本子数据的数组
chosenGallery:false, //准备下载的本子 chosenGallery: false, //准备下载的本子
thumbnailGallery:{}, //预览本子 thumbnailGallery: {}, //预览本子
collectGallery:[], //收藏的本子 collectGallery: [], //收藏的本子
downloadGallery:[], //下载的本子 downloadGallery: [], //下载的本子
onlineLinks:{}, //在线本子链接 onlineLinks: {}, //在线本子链接
isOnlineReading: false, //是否在线看 isOnlineReading: false, //是否在线看
currentGid: "", //当前GID currentGid: "", //当前GID
currentLinks: [], //当前本子链接 currentLinks: [], //当前本子链接
totalVideoTask:[], //存放视频数据的数组 totalVideoTask: [], //存放视频数据的数组
chosenVideo:false, //准备下载的视频 chosenVideo: false, //准备下载的视频
collectVideo: [], //收藏的视频 collectVideo: [], //收藏的视频
downloadVideo: [], //下载的视频 downloadVideo: [], //下载的视频
page:1, //当前页数 page: 1, //当前页数
length:5, //每页能有多少个链接 length: 5, //每页能有多少个链接
defaultLength:4, //默认个数 defaultLength: 4, //默认个数
shortLength:5, //简洁个数 shortLength: 5, //简洁个数
userId:-1, //用户id userId: -1, //用户id
username: ",", //用户名 username: ",", //用户名
isAuth:false, //是否授权 isAuth: false, //是否授权
AuthCode:'', //授权码 AuthCode: '', //授权码
loadComplete:false, //是否加载完成 loadComplete: false, //是否加载完成
galleryRefreshTimer:0, //本子更新计时器id galleryRefreshTimer: 0, //本子更新计时器id
videoRefreshTimer:0, //视频更新计时器id videoRefreshTimer: 0, //视频更新计时器id
isInclude:false, //是否搜索到任务 isInclude: false, //是否搜索到任务
searchTask:[], //搜索到的任务 searchTask: [], //搜索到的任务
isShowHistory:false, //是否打开面板 isShowHistory: false, //是否打开面板
showType:"gallery", //展示类型 showType: "gallery", //展示类型
sortType:"shortName", //排序类型 category: 'myDownload', //分类
weekUsed:{}, //每周用量 sortType:'shortName', //排序类型
currentTasks: [], //当前任务
weekUsed: {}, //每周用量
maskDomain:[] //伪装域名 maskDomain: [] //伪装域名
} }
const getters = { const getters = {
galleryTasks(state){ currentTasks(state){
if(state.showType === 'collect') return state.currentTasks.slice((state.page-1)*state.length, state.page*state.length)
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
}, },
min(){ min(){
return 1 return 1
}, },
max(state){ max(state){
let max = 0 let max = 0
let tasks let tasks = state.currentTasks
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
if(!tasks) if(!tasks)
return 1 return 1
max = Math.floor(tasks.length/state.length) max = Math.floor(tasks.length/state.length)
if(tasks.length % state.length !== 0) if(tasks.length % state.length !== 0 || max === 0)
max += 1 max += 1
if(max === 0)
return 1
return max return max
} }
} }
@ -867,3 +822,64 @@ function getShortname(name){
return name 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
}
}