From 36e05896e52c0f94a2a02b7306e0baf13c14a852 Mon Sep 17 00:00:00 2001
From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com>
Date: Mon, 6 Jul 2026 22:45:16 +0800
Subject: [PATCH] refactor: remove redundant template import dialog, keep only
quick-add dropdown
Quick-add dropdown already serves the same purpose with fewer clicks
---
web/src/views/RiskRules.vue | 68 -------------------------------------
1 file changed, 68 deletions(-)
diff --git a/web/src/views/RiskRules.vue b/web/src/views/RiskRules.vue
index b3675c0..c2773e9 100644
--- a/web/src/views/RiskRules.vue
+++ b/web/src/views/RiskRules.vue
@@ -35,7 +35,6 @@
{{ parsed.length }} 条规则
- 从模板导入
保存
上传
返回列表
@@ -189,33 +188,6 @@
-
-
-
-
-
规则体系:等级豁免 → 账号存活 → 新人考核 → 流量监控 → H&R 惩罚 → 分享率
-
满足豁免条件的用户不受任何规则影响。系统会自动根据风险百分比触发告警(riskPct > 80%)。
-
-
-
{{ cat.title }}
-
-
-
- {{ p.name }}
-
- {{ p.type==='EXEMPT' ? '保号' : p.type==='RATIO'||p.type==='DRATIO' ? '缓刑7天' : '封号' }}
- {{ presetDesc(p) }}
- (已添加)
-
-
-
-
- 取消
- 导入选中 ({{ selectedPresets.length }})
-
-
@@ -350,31 +322,10 @@ const presets = [
{ name:'等级豁免', type:'EXEMPT', permRank:'Elite User', sealExemptRank:'Power User', description:'达到等级的账号可豁免清理' },
]
-const presetCategories = [
- { title:'四、账号存活策略', items: presets.filter(p => p.name.includes('不登录') || p.name.includes('账号清理')) },
- { title:'五、零活跃新用户清理', items: presets.filter(p => p.name.includes('零活跃')) },
- { title:'流量监控', items: presets.filter(p => p.type === 'TRAFFIC') },
- { title:'H&R 惩罚', items: presets.filter(p => p.type === 'HD') },
- { title:'新人考核', items: presets.filter(p => p.type === 'TASK') },
- { title:'分享率', items: presets.filter(p => p.type === 'DRATIO') },
- { title:'等级豁免', items: presets.filter(p => p.type === 'EXEMPT') },
-]
-
-const presetDesc = (p) => {
- if (p.type === 'TASK') return `考核周期 ${p.threshold||30} 天,需满足上传/下载/魔力值/做种积分/做种时间要求`
- if (p.type === 'DRATIO') return `下载量 ≥ ${p.threshold||100}GB 时分享率 ≥ ${p.minRatio||1.0}`
- if (p.type === 'EXEMPT') return `永久保留 ≥ ${rankDisplay(p.permRank)} / 封存豁免 ≥ ${rankDisplay(p.sealExemptRank)}`
- const condLabel = condOptions.find(c => c.value === p.condition)?.label || p.condition
- const appLabel = applicableOptions.find(a => a.value === p.applicable)?.label || ''
- return `${metricOptions.find(m=>m.value===p.metric)?.label||p.metric} ${condLabel} ${p.threshold}${p.unit||''}${appLabel?' ('+appLabel+')':''}`
-}
-
// ============ 状态 ============
const loading = ref(false), saving = ref(false), uploading = ref(false)
const sites = ref([]), rulesMap = ref({})
const editType = ref(''), editorJson = ref('[]')
-const showPresets = ref(false)
-const selectedPresets = ref([])
const dragIdx = ref(null)
const fmt = (t) => t ? (t.substring(0,19)||'').replace('T',' ') : '-'
@@ -487,25 +438,6 @@ const addPreset = (p) => {
parsed.value = [...parsed.value, r]
}
-const importPresets = () => {
- const items = presets.filter(p => selectedPresets.value.includes(p.name)).map(p => {
- const r = { ...p, _fold: false }
- ensureTaskReqs(r)
- return r
- })
- const dupes = items.filter(r => existsRule(r))
- if (dupes.length) {
- ElMessage.warning(`跳过 ${dupes.length} 条重复规则`)
- }
- const newItems = items.filter(r => !existsRule(r))
- if (newItems.length) {
- parsed.value = [...parsed.value, ...newItems]
- ElMessage.success(`已导入 ${newItems.length} 条规则`)
- }
- selectedPresets.value = []
- showPresets.value = false
-}
-
// 拖拽排序
const onDragStart = (e, idx) => { dragIdx.value = idx; e.dataTransfer.effectAllowed = 'move' }
const onDragOver = (e, idx) => {