add 洗版规则

This commit is contained in:
jxxghp
2023-07-25 15:47:05 +08:00
parent ad4577f86b
commit 6b11fd50ab

View File

@@ -31,16 +31,20 @@ const TorrentPriorityItems = [
// 规则卡片列表
const filterCards = ref<FilterCard[]>([])
// 洗版规则卡片列表
const filterCards2 = ref<FilterCard[]>([])
// 查询已设置过滤规则
async function queryCustomFilters() {
async function queryCustomFilters(ruleType: string) {
try {
const result: { [key: string]: any } = await api.get('system/setting/FilterRules')
const result: { [key: string]: any } = await api.get(`system/setting/${ruleType}`)
if (result.success) {
// 保存的是个字符串,需要分割成数组
const groups = result.data?.value.split('>')
// 生成规则卡片
filterCards.value = groups?.map((group: string, index: number) => {
const cards = ruleType === 'FilterRules' ? filterCards : filterCards2
cards.value = groups?.map((group: string, index: number) => {
return {
pri: (index + 1).toString(),
rules: group.split('&'),
@@ -68,29 +72,32 @@ async function queryTorrentPriority() {
}
}
// 保存用户设置的识别词
async function saveCustomFilters() {
// 保存用户设置的规则
async function saveCustomFilters(ruleType: string) {
try {
// 有值才处理
if (filterCards.value.length === 0)
return
// 将卡片规则接装为字符串
const value = filterCards.value
const cards = ruleType === 'FilterRules' ? filterCards : filterCards2
const value = cards.value
.filter(card => card.rules.length > 0)
.map(card => card.rules.join('&'))
.join('>')
// 保存
const result: { [key: string]: any } = await api.post(
'system/setting/FilterRules',
`system/setting/${ruleType}`,
value,
)
const msg = ruleType === 'FilterRules' ? '过滤规则' : '洗版规则'
if (result.success)
$toast.success('过滤规则保存成功')
$toast.success(`${msg}保存成功`)
else
$toast.error('过滤规则保存失败!')
$toast.error(`${msg}保存失败!`)
}
catch (error) {
console.log(error)
@@ -123,13 +130,21 @@ function updateFilterCardValue(pri: string, rules: string[]) {
card.rules = rules
}
// 更新洗版规则卡片的值
function updateFilterCardValue2(pri: string, rules: string[]) {
const card = filterCards2.value.find(card => card.pri === pri)
if (card)
card.rules = rules
}
// 移除卡片
function filterCardClose(pri: string) {
function filterCardClose(ruleType: string, pri: string) {
// 将卡片从列表中删除,并更新剩余卡片的序号
const index = filterCards.value.findIndex(card => card.pri === pri)
const cards = ruleType === 'FilterRules' ? filterCards : filterCards2
const index = cards.value.findIndex(card => card.pri === pri)
if (index !== -1) {
// 创建新的数组,然后使用 splice 方法来删除元素
const updatedCards = [...filterCards.value]
const updatedCards = [...cards.value]
updatedCards.splice(index, 1)
@@ -139,25 +154,27 @@ function filterCardClose(pri: string) {
})
// 更新 filterCards.value
filterCards.value = updatedCards
cards.value = updatedCards
}
}
// 增加卡片
function addFilterCard() {
function addFilterCard(ruleType: string) {
const cards = ruleType === 'FilterRules' ? filterCards : filterCards2
// 优先级
const pri = (filterCards.value.length + 1).toString()
const pri = (cards.value.length + 1).toString()
// 新卡片
const newCard: FilterCard = { pri, rules: [], visible: true }
// 添加到列表
filterCards.value.push(newCard)
cards.value.push(newCard)
}
onMounted(() => {
queryTorrentPriority()
queryCustomFilters()
queryCustomFilters('FilterRules')
queryCustomFilters('FilterRules2')
})
</script>
@@ -175,7 +192,7 @@ onMounted(() => {
:rules="card.rules"
:visible="card.visible"
@changed="updateFilterCardValue"
@close="filterCardClose(card.pri)"
@close="filterCardClose('FilterRules', card.pri)"
/>
</div>
</VCardItem>
@@ -183,14 +200,49 @@ onMounted(() => {
<VBtn
type="submit"
class="me-2"
@click="saveCustomFilters"
@click="saveCustomFilters('FilterRules')"
>
保存
</VBtn>
<VBtn
color="success"
variant="tonal"
@click="addFilterCard"
@click="addFilterCard('FilterRules')"
>
<VIcon icon="mdi-plus" />
<span class="d-none d-sm-block">增加规则</span>
</VBtn>
</VCardItem>
</VCard>
</VCol>
<VCol cols="12">
<VCard title="洗版规则">
<VCardSubtitle> 设置在订阅洗版时使用的过滤规则匹配优先级1时洗版完成 </VCardSubtitle>
<VCardItem>
<div class="grid gap-3 grid-filterrule-card">
<FilterRuleCard
v-for="(card, index) in filterCards2"
:key="index"
:pri="card.pri"
:rules="card.rules"
:visible="card.visible"
@changed="updateFilterCardValue2"
@close="filterCardClose('FilterRules2', card.pri)"
/>
</div>
</VCardItem>
<VCardItem>
<VBtn
type="submit"
class="me-2"
@click="saveCustomFilters('FilterRules2')"
>
保存
</VBtn>
<VBtn
color="success"
variant="tonal"
@click="addFilterCard('FilterRules2')"
>
<VIcon icon="mdi-plus" />
<span class="d-none d-sm-block">增加规则</span>