mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-05 23:56:42 +08:00
feat 优先级规则支持动态调整
This commit is contained in:
@@ -2,19 +2,30 @@
|
|||||||
// 输入参数
|
// 输入参数
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
pri: String,
|
pri: String,
|
||||||
|
maxpri: String,
|
||||||
rules: Array as PropType<string[]>,
|
rules: Array as PropType<string[]>,
|
||||||
width: String,
|
width: String,
|
||||||
height: String,
|
height: String,
|
||||||
})
|
})
|
||||||
|
|
||||||
// 定义触发的自定义事件
|
// 定义触发的自定义事件
|
||||||
const emit = defineEmits(['close', 'changed'])
|
const emit = defineEmits(['close', 'changed', 'levelup', 'leveldown'])
|
||||||
|
|
||||||
// 按钮点击
|
// 按钮点击
|
||||||
function onClose() {
|
function onClose() {
|
||||||
emit('close')
|
emit('close')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 上升优先级
|
||||||
|
function onLevelUp() {
|
||||||
|
emit('levelup', props.pri)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 下降优先级
|
||||||
|
function onLevelDown() {
|
||||||
|
emit('leveldown', props.pri)
|
||||||
|
}
|
||||||
|
|
||||||
// 选项变化
|
// 选项变化
|
||||||
function filtersChanged(value: string[]) {
|
function filtersChanged(value: string[]) {
|
||||||
emit('changed', props.pri, value)
|
emit('changed', props.pri, value)
|
||||||
@@ -54,6 +65,20 @@ const selectFilterOptions = ref<{ [key: string]: string }[]>([
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<VCard variant="tonal" :width="props.width" :height="props.height">
|
<VCard variant="tonal" :width="props.width" :height="props.height">
|
||||||
|
<span class="absolute top-3 right-14">
|
||||||
|
<IconBtn
|
||||||
|
v-if="props.pri !== '1'"
|
||||||
|
@click.stop="onLevelUp"
|
||||||
|
>
|
||||||
|
<VIcon icon="mdi-arrow-up" />
|
||||||
|
</IconBtn>
|
||||||
|
<IconBtn
|
||||||
|
v-if="props.pri !== props.maxpri"
|
||||||
|
@click.stop="onLevelDown"
|
||||||
|
>
|
||||||
|
<VIcon icon="mdi-arrow-down" />
|
||||||
|
</IconBtn>
|
||||||
|
</span>
|
||||||
<DialogCloseBtn @click="onClose" />
|
<DialogCloseBtn @click="onClose" />
|
||||||
<VCardItem>
|
<VCardItem>
|
||||||
<VCardTitle>优先级 {{ props.pri }}</VCardTitle>
|
<VCardTitle>优先级 {{ props.pri }}</VCardTitle>
|
||||||
|
|||||||
@@ -226,6 +226,7 @@ async function retransferBatch() {
|
|||||||
// 清空当前操作记录
|
// 清空当前操作记录
|
||||||
currentHistory.value = undefined
|
currentHistory.value = undefined
|
||||||
// 打开识别弹窗
|
// 打开识别弹窗
|
||||||
|
redoType.value = ''
|
||||||
redoDialog.value = true
|
redoDialog.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -148,6 +148,48 @@ async function saveSelectedSites() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 上调优先级
|
||||||
|
function onLevelUp(pri: string) {
|
||||||
|
// 找到当前卡片
|
||||||
|
const card = filterCards.value.find(card => card.pri === pri)
|
||||||
|
if (!card)
|
||||||
|
return
|
||||||
|
|
||||||
|
// 找到当前卡片的上一张卡片
|
||||||
|
const prevCard = filterCards.value.find(card => card.pri === (parseInt(pri) - 1).toString())
|
||||||
|
if (!prevCard)
|
||||||
|
return
|
||||||
|
|
||||||
|
// 交换两张卡片的优先级
|
||||||
|
const temp = card.pri
|
||||||
|
card.pri = prevCard.pri
|
||||||
|
prevCard.pri = temp
|
||||||
|
|
||||||
|
// 卡片重新按优先级排序
|
||||||
|
filterCards.value.sort((a, b) => parseInt(a.pri) - parseInt(b.pri))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 下调优先级
|
||||||
|
function onLevelDown(pri: string) {
|
||||||
|
// 找到当前卡片
|
||||||
|
const card = filterCards.value.find(card => card.pri === pri)
|
||||||
|
if (!card)
|
||||||
|
return
|
||||||
|
|
||||||
|
// 找到当前卡片的下一张卡片
|
||||||
|
const nextCard = filterCards.value.find(card => card.pri === (parseInt(pri) + 1).toString())
|
||||||
|
if (!nextCard)
|
||||||
|
return
|
||||||
|
|
||||||
|
// 交换两张卡片的优先级
|
||||||
|
const temp = card.pri
|
||||||
|
card.pri = nextCard.pri
|
||||||
|
nextCard.pri = temp
|
||||||
|
|
||||||
|
// 卡片重新按优先级排序
|
||||||
|
filterCards.value.sort((a, b) => parseInt(a.pri) - parseInt(b.pri))
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
queryCustomFilters()
|
queryCustomFilters()
|
||||||
querySites()
|
querySites()
|
||||||
@@ -191,9 +233,12 @@ onMounted(() => {
|
|||||||
v-for="(card, index) in filterCards"
|
v-for="(card, index) in filterCards"
|
||||||
:key="index"
|
:key="index"
|
||||||
:pri="card.pri"
|
:pri="card.pri"
|
||||||
|
:maxpri="filterCards.length.toString()"
|
||||||
:rules="card.rules"
|
:rules="card.rules"
|
||||||
@changed="updateFilterCardValue"
|
@changed="updateFilterCardValue"
|
||||||
@close="filterCardClose(card.pri)"
|
@close="filterCardClose(card.pri)"
|
||||||
|
@leveldown="onLevelDown"
|
||||||
|
@levelup="onLevelUp"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</VCardItem>
|
</VCardItem>
|
||||||
|
|||||||
@@ -165,6 +165,48 @@ function addFilterCard(ruleType: string) {
|
|||||||
cards.value.push(newCard)
|
cards.value.push(newCard)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 上调优先级
|
||||||
|
function onLevelUp(filterCards: FilterCard[], pri: string) {
|
||||||
|
// 找到当前卡片
|
||||||
|
const card = filterCards.find(card => card.pri === pri)
|
||||||
|
if (!card)
|
||||||
|
return
|
||||||
|
|
||||||
|
// 找到当前卡片的上一张卡片
|
||||||
|
const prevCard = filterCards.find(card => card.pri === (parseInt(pri) - 1).toString())
|
||||||
|
if (!prevCard)
|
||||||
|
return
|
||||||
|
|
||||||
|
// 交换两张卡片的优先级
|
||||||
|
const temp = card.pri
|
||||||
|
card.pri = prevCard.pri
|
||||||
|
prevCard.pri = temp
|
||||||
|
|
||||||
|
// 卡片重新按优先级排序
|
||||||
|
filterCards.sort((a, b) => parseInt(a.pri) - parseInt(b.pri))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 下调优先级
|
||||||
|
function onLevelDown(filterCards: FilterCard[], pri: string) {
|
||||||
|
// 找到当前卡片
|
||||||
|
const card = filterCards.find(card => card.pri === pri)
|
||||||
|
if (!card)
|
||||||
|
return
|
||||||
|
|
||||||
|
// 找到当前卡片的下一张卡片
|
||||||
|
const nextCard = filterCards.find(card => card.pri === (parseInt(pri) + 1).toString())
|
||||||
|
if (!nextCard)
|
||||||
|
return
|
||||||
|
|
||||||
|
// 交换两张卡片的优先级
|
||||||
|
const temp = card.pri
|
||||||
|
card.pri = nextCard.pri
|
||||||
|
nextCard.pri = temp
|
||||||
|
|
||||||
|
// 卡片重新按优先级排序
|
||||||
|
filterCards.sort((a, b) => parseInt(a.pri) - parseInt(b.pri))
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
querySites()
|
querySites()
|
||||||
queryCustomFilters('SubscribeFilterRules')
|
queryCustomFilters('SubscribeFilterRules')
|
||||||
@@ -209,9 +251,12 @@ onMounted(() => {
|
|||||||
v-for="(card, index) in subscribeFilterCards"
|
v-for="(card, index) in subscribeFilterCards"
|
||||||
:key="index"
|
:key="index"
|
||||||
:pri="card.pri"
|
:pri="card.pri"
|
||||||
|
:maxpri="subscribeFilterCards.length.toString()"
|
||||||
:rules="card.rules"
|
:rules="card.rules"
|
||||||
@changed="updateFilterCardValue"
|
@changed="updateFilterCardValue"
|
||||||
@close="filterCardClose('SubscribeFilterRules', card.pri)"
|
@close="filterCardClose('SubscribeFilterRules', card.pri)"
|
||||||
|
@leveldown="onLevelDown(subscribeFilterCards, card.pri)"
|
||||||
|
@levelup="onLevelUp(subscribeFilterCards, card.pri)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</VCardItem>
|
</VCardItem>
|
||||||
@@ -242,9 +287,12 @@ onMounted(() => {
|
|||||||
v-for="(card, index) in bestVersionFilterCards"
|
v-for="(card, index) in bestVersionFilterCards"
|
||||||
:key="index"
|
:key="index"
|
||||||
:pri="card.pri"
|
:pri="card.pri"
|
||||||
|
:maxpri="bestVersionFilterCards.length.toString()"
|
||||||
:rules="card.rules"
|
:rules="card.rules"
|
||||||
@changed="updateFilterCardValue2"
|
@changed="updateFilterCardValue2"
|
||||||
@close="filterCardClose('BestVersionFilterRules', card.pri)"
|
@close="filterCardClose('BestVersionFilterRules', card.pri)"
|
||||||
|
@leveldown="onLevelDown(bestVersionFilterCards, card.pri)"
|
||||||
|
@levelup="onLevelUp(bestVersionFilterCards, card.pri)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</VCardItem>
|
</VCardItem>
|
||||||
|
|||||||
Reference in New Issue
Block a user