feat: 添加规则组选择功能

为规则测试页面添加了规则组选择功能,用户可以从下拉列表中选择规则组进行测试。

- 添加了规则组选择表单项
- 加载规则组列表的函数
- 调用API识别时传递规则组名称

Fixes #209
This commit is contained in:
jxxghp
2024-10-23 15:35:42 +08:00
parent cd714d954f
commit 02334489ed
+38 -49
View File
@@ -2,15 +2,17 @@
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import { requiredValidator } from '@/@validators' import { requiredValidator } from '@/@validators'
import api from '@/api' import api from '@/api'
import { FilterRuleGroup } from '@/api/types'
import { title } from 'process'
// 识别结果 // 识别结果
const ruleTestResult = ref('') const ruleTestResult = ref('')
// 名称识别表单 // 名称识别表单
const ruleTestForm = reactive({ const ruleTestForm = reactive({
title: '', title: null,
subtitle: '', subtitle: null,
ruletype: '1', rulegroup: null,
}) })
// 识别按钮状态 // 识别按钮状态
@@ -22,10 +24,27 @@ const ruleTestText = ref('测试')
// 是否显示结果 // 是否显示结果
const showResult = ref(false) const showResult = ref(false)
// 所有规则组列表
const filterRuleGroups = ref<FilterRuleGroup[]>([])
// 规则组选项
const filterRuleGroupItems = computed(() => {
return filterRuleGroups.value.map(item => ({ title: item.name, value: item.name }))
})
// 加载规则组
async function queryFilterRuleGroups() {
try {
const result: { [key: string]: any } = await api.get('system/setting/UserFilterRuleGroups')
filterRuleGroups.value = result.data?.value ?? []
} catch (error) {
console.log(error)
}
}
// 调用API识别 // 调用API识别
async function ruleTest() { async function ruleTest() {
if (!ruleTestForm.title) if (!ruleTestForm.title) return
return
try { try {
ruleTestLoading.value = true ruleTestLoading.value = true
@@ -35,69 +54,41 @@ async function ruleTest() {
params: { params: {
title: ruleTestForm.title, title: ruleTestForm.title,
subtitle: ruleTestForm.subtitle, subtitle: ruleTestForm.subtitle,
ruletype: ruleTestForm.ruletype, rulegroup_name: ruleTestForm.rulegroup,
}, },
}) })
if (result.success) if (result.success) ruleTestResult.value = `优先级:${result.data.priority}`
ruleTestResult.value = `优先级:${result.data.priority}` else ruleTestResult.value = '未命中任何优先级规则!'
else
ruleTestResult.value = '未命中任何优先级规则!'
ruleTestLoading.value = false ruleTestLoading.value = false
ruleTestText.value = '重新测试' ruleTestText.value = '重新测试'
showResult.value = true showResult.value = true
} } catch (error) {
catch (error) {
console.error(error) console.error(error)
} }
} }
onMounted(() => {
queryFilterRuleGroups()
})
</script> </script>
<template> <template>
<VForm @submit.prevent="() => {}"> <VForm @submit.prevent="() => {}">
<VRow class="pt-2"> <VRow class="pt-2">
<VCol cols="12" md="8"> <VCol cols="12" md="8">
<VTextField <VTextField v-model="ruleTestForm.title" label="标题" :rules="[requiredValidator]" />
v-model="ruleTestForm.title"
label="标题"
:rules="[requiredValidator]"
/>
</VCol> </VCol>
<VCol cols="12" md="4"> <VCol cols="12" md="4">
<VSelect <VSelect v-model="ruleTestForm.rulegroup" label="规则组" :items="filterRuleGroupItems" />
v-model="ruleTestForm.ruletype"
label="规则类型"
:items="[{
title: '订阅优先级',
value: '1',
}, {
title: '洗版优先级',
value: '2',
}, {
title: '搜索优先级',
value: '3',
}]"
/>
</VCol> </VCol>
<VCol cols="12"> <VCol cols="12">
<VTextarea <VTextarea v-model="ruleTestForm.subtitle" label="副标题" rows="2" auto-grow />
v-model="ruleTestForm.subtitle"
label="副标题"
rows="2"
auto-grow
/>
</VCol> </VCol>
</VRow> </VRow>
<VRow> <VRow>
<VCol <VCol cols="12" class="text-center">
cols="12" <VBtn :disabled="ruleTestLoading" @click="ruleTest">
class="text-center"
>
<VBtn
:disabled="ruleTestLoading"
@click="ruleTest"
>
<template #prepend> <template #prepend>
<VIcon icon="mdi-filter-check-outline" /> <VIcon icon="mdi-filter-check-outline" />
</template> </template>
@@ -109,9 +100,7 @@ async function ruleTest() {
<VExpandTransition> <VExpandTransition>
<div v-show="showResult"> <div v-show="showResult">
<VCol> <VCol>
<VAlert <VAlert icon="mdi-alert-circle-outline">
icon="mdi-alert-circle-outline"
>
{{ ruleTestResult }} {{ ruleTestResult }}
</VAlert> </VAlert>
</VCol> </VCol>