新增简洁名字(仅限本子),大幅度优化手机端体验,可选择显示全名以及简称,切换时每页的本子数会变化。排序新增简洁名字排序,并且与显示绑定。优化代码结构,去除部分无用代码。修复查找任务bug(同步更新) 更新vite至3.x
This commit is contained in:
parent
3daff3b8fc
commit
0eb89e98e2
15
src/App.vue
15
src/App.vue
@ -1,3 +1,8 @@
|
||||
<script setup>
|
||||
import Side from "./components/Side.vue";
|
||||
import DashBoard from "./components/DashBoard.vue";
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="app">
|
||||
<el-container>
|
||||
@ -11,16 +16,6 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import Side from "./components/Side.vue";
|
||||
import DashBoard from "./components/DashBoard.vue";
|
||||
|
||||
export default {
|
||||
name: 'App',
|
||||
components:{Side, DashBoard}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.app{
|
||||
background-color: #c6e2ff;
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
<tr v-if="chosenGallery.availableResolution">
|
||||
目标分辨率:<el-select v-model="targetResolution">
|
||||
<el-option v-for="(fileSize, resolution) in chosenGallery.availableResolution" :value="resolution"
|
||||
:label="modify(resolution, fileSize)">
|
||||
:label="resolution + ' ' + fileSize">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</tr>
|
||||
@ -80,12 +80,12 @@ import {ElMessage} from "element-plus"
|
||||
export default {
|
||||
name: "DashBoard",
|
||||
setup(){
|
||||
const link = ref("")
|
||||
const AuthCode = ref("")
|
||||
const keyword = ref("")
|
||||
const isRemember = ref(false)
|
||||
const targetResolution = ref("")
|
||||
const showTips = ref(false)
|
||||
let AuthCode = ref("")
|
||||
let isRemember = ref(false)
|
||||
let keyword = ref("")
|
||||
let link = ref("")
|
||||
let showTips = ref(false)
|
||||
let targetResolution = ref("")
|
||||
|
||||
let chosenGallery = computed(() => {
|
||||
return store.state.chosenGallery
|
||||
@ -95,14 +95,14 @@ export default {
|
||||
return store.state.chosenVideo
|
||||
})
|
||||
|
||||
let maskDomain = computed(() => {
|
||||
return store.state.maskDomain
|
||||
})
|
||||
|
||||
let loadComplete = computed(() => {
|
||||
return store.state.loadComplete
|
||||
})
|
||||
|
||||
let maskDomain = computed(() => {
|
||||
return store.state.maskDomain
|
||||
})
|
||||
|
||||
let weekUsed = computed(() => {
|
||||
return store.state.weekUsed
|
||||
})
|
||||
@ -111,10 +111,6 @@ export default {
|
||||
store.dispatch("loadWeekUsedAmount")
|
||||
}
|
||||
|
||||
function modify(str1, str2){
|
||||
return str1 + " " + str2
|
||||
}
|
||||
|
||||
function postTask(){
|
||||
if(!validateLink(link.value)){
|
||||
ElMessage("链接错误")
|
||||
@ -170,6 +166,29 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
function validateLink(rawLink){
|
||||
if(rawLink.trim() === "")
|
||||
return false
|
||||
if(rawLink.includes("hentai")){
|
||||
return rawLink.includes("/g/")
|
||||
}
|
||||
else if(rawLink.includes("xvideos.com")){
|
||||
return true
|
||||
}
|
||||
else if(rawLink.includes("pornhub.com")){
|
||||
return rawLink.includes("view_video.php")
|
||||
}
|
||||
}
|
||||
|
||||
function coverLink(rawLink){
|
||||
let url = new URL(rawLink)
|
||||
maskDomain.value.forEach((mask) => {
|
||||
if(url.host === mask['raw'])
|
||||
rawLink = rawLink.replace(mask['raw'], mask['mask'])
|
||||
})
|
||||
return rawLink;
|
||||
}
|
||||
|
||||
function searchByLink() {
|
||||
if(!validateLink(link.value)){
|
||||
ElMessage("请检查输入的链接")
|
||||
@ -188,29 +207,6 @@ export default {
|
||||
store.dispatch("searchRemoteByKeyword", keyword.value)
|
||||
}
|
||||
|
||||
function coverLink(rawLink){
|
||||
let url = new URL(rawLink)
|
||||
maskDomain.value.forEach((mask) => {
|
||||
if(url.host === mask['raw'])
|
||||
rawLink = rawLink.replace(mask['raw'], mask['mask'])
|
||||
})
|
||||
return rawLink;
|
||||
}
|
||||
|
||||
function validateLink(rawLink){
|
||||
if(rawLink.trim() === "")
|
||||
return false
|
||||
if(rawLink.includes("hentai")){
|
||||
return rawLink.includes("/g/")
|
||||
}
|
||||
else if(rawLink.includes("xvideos.com")){
|
||||
return true
|
||||
}
|
||||
else if(rawLink.includes("pornhub.com")){
|
||||
return rawLink.includes("view_video.php")
|
||||
}
|
||||
}
|
||||
|
||||
function onlineGalleryReader(name){
|
||||
window.open("http://zfile.lionwebsite.xyz/1/gallery/" + encodeURI(name))
|
||||
}
|
||||
@ -222,7 +218,7 @@ export default {
|
||||
}
|
||||
})
|
||||
|
||||
return {postTask, queryTask, validate, searchByLink, searchLocalByKeyword, searchRemoteByKeyword, modify,
|
||||
return {postTask, queryTask, validate, searchByLink, searchLocalByKeyword, searchRemoteByKeyword,
|
||||
queryWeekUsedAmount, deleteVideo, deleteGallery, onlineGalleryReader,
|
||||
link, loadComplete, AuthCode, keyword, isRemember, chosenGallery, chosenVideo, targetResolution, weekUsed,
|
||||
showTips,
|
||||
|
||||
@ -18,16 +18,16 @@
|
||||
|
||||
<el-table-column label="名字" width="300">
|
||||
<template #default="scoped">
|
||||
{{scoped.row.name}}
|
||||
{{showNameType === 'shortName' ? scoped.row.shortName: scoped.row.name}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="250">
|
||||
<template #default="scoped">
|
||||
<span>
|
||||
<el-button @click="downloadTask(scoped.row.download)" :disabled="operational(scoped.row.download)">下载</el-button>
|
||||
<el-button @click="deleteGallery(scoped.row.gid)" :disabled="operational(scoped.row.download)">删除</el-button>
|
||||
<el-button @click="onlineGalleryReader(scoped.row.name)" :disabled="operational(scoped.row.download)">在线看</el-button>
|
||||
<el-button @click="downloadTask(scoped.row.download)" :disabled="scoped.row.download === undefined">下载</el-button>
|
||||
<el-button @click="deleteGallery(scoped.row.gid)" :disabled="scoped.row.download === undefined">删除</el-button>
|
||||
<el-button @click="onlineGalleryReader(scoped.row.name)" :disabled="scoped.row.download === undefined">在线看</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -60,9 +60,9 @@
|
||||
<el-table-column label="操作" width="250">
|
||||
<template #default="scoped">
|
||||
<span>
|
||||
<el-button @click="downloadTask(scoped.row.download)" :disabled="operational(scoped.row.download)">下载</el-button>
|
||||
<el-button @click="deleteVideo(scoped.row.id)" :disabled="operational(scoped.row.download)">删除</el-button>
|
||||
<el-button @click="onlineVideoViewer()" :disabled="operational(scoped.row.download)">在线看</el-button>
|
||||
<el-button @click="downloadTask(scoped.row.download)" :disabled="scoped.row.download === undefined">下载</el-button>
|
||||
<el-button @click="deleteVideo(scoped.row.id)" :disabled="scoped.row.download === undefined">删除</el-button>
|
||||
<el-button @click="onlineVideoViewer()" :disabled="scoped.row.download === undefined">在线看</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -77,8 +77,13 @@
|
||||
<el-row class="pageChanger">
|
||||
<el-col>
|
||||
排列顺序:<el-select v-model="sortType" @change="changeSortType">
|
||||
<el-option value="name" label="名字"></el-option>
|
||||
<el-option value="time" label="任务创建时间"></el-option>
|
||||
<el-option value="fullName" label="名字"></el-option>
|
||||
<el-option value="shortName" label="简洁名字"></el-option>
|
||||
<el-option value="createTime" label="任务创建时间"></el-option>
|
||||
</el-select>
|
||||
显示:<el-select v-model="showNameType" @change="changeShowNameType">
|
||||
<el-option value="fullName" label="名字"></el-option>
|
||||
<el-option value="shortName" label="简洁名字"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col>
|
||||
@ -87,10 +92,10 @@
|
||||
<el-input v-model="targetPage"
|
||||
@change="changePage"
|
||||
v-show="isEditing"
|
||||
@blur="reverse()"
|
||||
@blur="reverseEditMode"
|
||||
class="page"
|
||||
ref="inputNode"></el-input>
|
||||
<span @click="reverse" v-show="!isEditing" class="page">{{page}}</span>
|
||||
<span @click="reverseEditMode" v-show="!isEditing" class="page">{{page}}</span>
|
||||
<el-button @click="next">+</el-button>
|
||||
<el-button @click="toMax">{{max}}</el-button>
|
||||
</el-col>
|
||||
@ -109,13 +114,16 @@ import {computed, ref} from "vue";
|
||||
export default {
|
||||
name: "Side",
|
||||
setup(){
|
||||
|
||||
const targetPage = ref(1)
|
||||
const isEditing = ref(false)
|
||||
|
||||
let inputNode = ref(null)
|
||||
let showType = ref("gallery")
|
||||
let sortType = ref("name")
|
||||
let isEditing = ref(false)
|
||||
let showNameType = ref("shortName") // shortName fullName
|
||||
let showType = ref("gallery") // gallery video
|
||||
let sortType = ref("shortName") // shortName fullName createTime
|
||||
let targetPage = ref(1)
|
||||
|
||||
let loadComplete = computed(() => {
|
||||
return store.state.loadComplete
|
||||
})
|
||||
|
||||
let galleryTasks = computed(() => {
|
||||
if(store.getters.galleryTasks)
|
||||
@ -154,10 +162,6 @@ export default {
|
||||
return store.state.page
|
||||
})
|
||||
|
||||
let loadComplete = computed(() => {
|
||||
return store.state.loadComplete
|
||||
})
|
||||
|
||||
function next() {
|
||||
if(targetPage.value < max.value) {
|
||||
targetPage.value++
|
||||
@ -182,13 +186,41 @@ export default {
|
||||
targetPage.value = min.value
|
||||
}
|
||||
|
||||
|
||||
function changePage(){
|
||||
if(targetPage.value >= min.value && targetPage.value <= max.value)
|
||||
store.commit("_changePage", targetPage.value)
|
||||
}
|
||||
|
||||
function reverse(){
|
||||
function changeShowType(){
|
||||
if(isShowVideoHistory.value){
|
||||
store.commit("_setShowType", "gallery")
|
||||
showType.value = "gallery"
|
||||
}
|
||||
else{
|
||||
store.commit("_setShowType", "video")
|
||||
showType.value = "video"
|
||||
}
|
||||
}
|
||||
|
||||
function changeShowNameType(){
|
||||
store.commit("_setShowNameType", showNameType.value)
|
||||
|
||||
if(showNameType.value !== sortType.value){
|
||||
store.commit("_setSortType", showNameType.value)
|
||||
sortType.value = showNameType.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
|
||||
}
|
||||
}
|
||||
|
||||
function reverseEditMode(){
|
||||
isEditing.value = !isEditing.value
|
||||
if(isEditing){
|
||||
inputNode.value.focus()
|
||||
@ -216,30 +248,10 @@ export default {
|
||||
window.open("http://zfile.lionwebsite.xyz/1/video/")
|
||||
}
|
||||
|
||||
function changeShowType(){
|
||||
if(isShowVideoHistory.value){
|
||||
store.commit("_setShowType", "gallery")
|
||||
showType.value = "gallery"
|
||||
}
|
||||
else{
|
||||
store.commit("_setShowType", "video")
|
||||
showType.value = "video"
|
||||
}
|
||||
}
|
||||
|
||||
function changeSortType(sortType){
|
||||
store.commit("_setSortType", sortType)
|
||||
}
|
||||
|
||||
function operational(download){
|
||||
return download === undefined
|
||||
}
|
||||
|
||||
|
||||
return {galleryTasks, videoTasks, min, max, targetPage, loadComplete, page, isEditing, inputNode, isShowVideoHistory,
|
||||
isShowGalleryHistory, showType, sortType,
|
||||
reverse, changePage, changeShowType, changeSortType, toMax, toMin, previous, next, downloadTask, deleteGallery,
|
||||
deleteVideo, onlineGalleryReader, onlineVideoViewer, operational,
|
||||
isShowGalleryHistory, showType, showNameType, sortType,
|
||||
reverseEditMode, changePage, changeShowType, changeShowNameType, changeSortType, toMax, toMin, previous, next, downloadTask, deleteGallery,
|
||||
deleteVideo, onlineGalleryReader, onlineVideoViewer,
|
||||
store
|
||||
}
|
||||
}
|
||||
@ -257,7 +269,6 @@ export default {
|
||||
.pageChanger{
|
||||
position: absolute;
|
||||
top: 85vh;
|
||||
left: 75px;
|
||||
}
|
||||
.page{
|
||||
display: inline-block;
|
||||
|
||||
@ -17,12 +17,8 @@ const actions = {
|
||||
AuthCode
|
||||
}
|
||||
}).then((res) => {
|
||||
let temp = []
|
||||
context.commit("_emptyGalleryTasks")
|
||||
JSON.parse(res.data.data).forEach((task) => {
|
||||
temp.push(task)
|
||||
})
|
||||
context.commit("_updateGalleryTasks", temp)
|
||||
context.commit("_updateGalleryTasks", JSON.parse(res.data.data))
|
||||
|
||||
})
|
||||
},
|
||||
@ -35,12 +31,8 @@ const actions = {
|
||||
AuthCode
|
||||
}
|
||||
}).then(res => {
|
||||
let temp = []
|
||||
context.commit("_emptyVideoTasks")
|
||||
JSON.parse(res.data.data).forEach(task => {
|
||||
temp.push(task)
|
||||
})
|
||||
context.commit("_updateVideoTasks", temp)
|
||||
context.commit("_updateVideoTasks", JSON.parse(res.data.data))
|
||||
})
|
||||
},
|
||||
postGalleryTask(context, data){
|
||||
@ -239,6 +231,23 @@ const mutations = {
|
||||
},
|
||||
_updateGalleryTasks(state, tasks){
|
||||
tasks.forEach((task) => {
|
||||
let name = task.name
|
||||
let lastIndex = name.lastIndexOf("[")
|
||||
name = name.substring(0, lastIndex)
|
||||
while(name.includes("[") && name.includes("]")){
|
||||
let start = name.indexOf("[")
|
||||
let end = name.indexOf("]") + 1
|
||||
let temp = name.substring(start, end)
|
||||
name = name.replace(temp, "")
|
||||
}
|
||||
while(name.includes("(") && name.includes(")")){
|
||||
let start = name.indexOf("(")
|
||||
let end = name.indexOf(")") + 1
|
||||
let temp = name.substring(start, end)
|
||||
name = name.replace(temp, "")
|
||||
}
|
||||
task.shortName = name.trim()
|
||||
|
||||
if(task.status === "已提交"){
|
||||
task.progress = "已提交"
|
||||
}
|
||||
@ -332,19 +341,21 @@ const mutations = {
|
||||
},
|
||||
_searchLocalByKeyword(state, keyword){
|
||||
state.searchTask.splice(0)
|
||||
if(keyword.trim() !== '') {
|
||||
state.page = 1
|
||||
let tasks
|
||||
if(state.showType === "video")
|
||||
if (state.showType === "video")
|
||||
tasks = state.totalVideoTask
|
||||
else
|
||||
tasks = state.totalGalleryTask
|
||||
tasks.forEach((task) => {
|
||||
if(task.name.includes(keyword))
|
||||
if (task.name.includes(keyword))
|
||||
state.searchTask.push(task)
|
||||
})
|
||||
if(state.searchTask.length === 0){
|
||||
if (state.searchTask.length === 0) {
|
||||
ElMessage("未找到该关键字的任务")
|
||||
}
|
||||
}
|
||||
},
|
||||
_deleteGallery(state, gid){
|
||||
state.totalGalleryTask.forEach((item, index, arr) => {
|
||||
@ -385,18 +396,34 @@ const mutations = {
|
||||
},
|
||||
_setSortType(state, sortType){
|
||||
state.sortType = sortType
|
||||
switch (sortType) {
|
||||
case "fullName":
|
||||
state.totalGalleryTask = state.totalGalleryTask.sort((before, after) => {
|
||||
if(sortType === 'name')
|
||||
return before.name > after.name ? 1: -1
|
||||
else
|
||||
})
|
||||
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) => {
|
||||
if(sortType === 'name')
|
||||
return before.name > after.name ? 1: -1
|
||||
else
|
||||
return before.createTime - after.createTime
|
||||
})
|
||||
}
|
||||
},
|
||||
_setShowNameType(state, type){
|
||||
if(type === "shortName")
|
||||
state.length = state.shortLength
|
||||
else
|
||||
state.length = state.defaultLength
|
||||
},
|
||||
_setMaskDomain(state, maskDomain){
|
||||
state.maskDomain = maskDomain
|
||||
@ -411,7 +438,9 @@ const state = {
|
||||
chosenVideo:false, //准备下载的视频
|
||||
|
||||
page:1, //当前页数
|
||||
length:8, //每页能有多少个链接
|
||||
length:7, //每页能有多少个链接
|
||||
defaultLength:7, //默认个数
|
||||
shortLength:10, //简洁个数
|
||||
|
||||
isAuth:false, //是否授权
|
||||
AuthCode:'', //授权码
|
||||
@ -422,9 +451,9 @@ const state = {
|
||||
showHistory:'', //是否打开面板
|
||||
showType:'gallery', //展示类型
|
||||
sortType:'name', //排序类型
|
||||
weekUsed:{},
|
||||
weekUsed:{}, //每周用量
|
||||
|
||||
maskDomain:[]
|
||||
maskDomain:[] //伪装域名
|
||||
}
|
||||
|
||||
const getters = {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user