Skip to content

Commit 76e3c73

Browse files
committed
feat(path-mapping): 添加路径启用/禁用开关功能
在路径映射项中添加Switch组件,支持动态启用/禁用路径功能。新增onToggleEnabled回调处理状态变更,并保留编辑时的原有启用状态。
1 parent eeab83b commit 76e3c73

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

web/app/dashboard/config/PathMappingItem.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { useState } from "react"
22
import { Card, CardContent } from "@/components/ui/card"
33
import { Button } from "@/components/ui/button"
44
import { Badge } from "@/components/ui/badge"
5+
import { Switch } from "@/components/ui/switch"
56
import { Edit, Trash2, Database, Shield, FileText, ChevronDown, ChevronUp, Eraser } from "lucide-react"
67
import PathStatsCard from "./PathStatsCard"
78
import PathCacheConfigDialog from "./PathCacheConfigDialog"
@@ -68,6 +69,7 @@ interface PathMappingItemProps {
6869
isSystemPath?: boolean
6970
onEdit: (path: string) => void
7071
onDelete: (path: string) => void
72+
onToggleEnabled: (path: string, enabled: boolean) => void
7173
onCacheConfigUpdate: (path: string, config: CacheConfig | null) => void
7274
onExtensionMapEdit?: (path: string) => void
7375
onExtensionRuleEdit?: (path: string, index?: number, rule?: ExtRuleConfig) => void
@@ -83,6 +85,7 @@ export default function PathMappingItem({
8385
isSystemPath = false,
8486
onEdit,
8587
onDelete,
88+
onToggleEnabled,
8689
onCacheConfigUpdate,
8790
onExtensionMapEdit,
8891
onExtensionRuleEdit,
@@ -135,9 +138,16 @@ export default function PathMappingItem({
135138
系统路径
136139
</Badge>
137140
)}
138-
{!isEnabled && (
139-
<Badge variant="secondary">已禁用</Badge>
140-
)}
141+
<div className="flex items-center gap-2">
142+
<Switch
143+
checked={isEnabled}
144+
onCheckedChange={(checked) => onToggleEnabled(path, checked)}
145+
className="data-[state=checked]:bg-[#518751]"
146+
/>
147+
<span className="text-xs text-muted-foreground">
148+
{isEnabled ? "已启用" : "已禁用"}
149+
</span>
150+
</div>
141151
{mappingObj.RedirectMode && (
142152
<Badge variant="outline">302重定向</Badge>
143153
)}

web/app/dashboard/config/page.tsx

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,13 +385,15 @@ export default function ConfigPage() {
385385
const pathConfig: PathMapping = {
386386
DefaultTarget: defaultTarget,
387387
RedirectMode: data.redirectMode,
388+
Enabled: true, // 新建路径默认启用
388389
ExtensionMap: []
389390
}
390391

391-
// 如果是编辑现有路径,保留原有的扩展名映射
392+
// 如果是编辑现有路径,保留原有的扩展名映射和启用状态
392393
if (editingPathData && typeof config.MAP[path] === 'object') {
393394
const existingConfig = config.MAP[path] as PathMapping
394395
pathConfig.ExtensionMap = existingConfig.ExtensionMap
396+
pathConfig.Enabled = existingConfig.Enabled !== false // 保留原有启用状态
395397
}
396398

397399
newConfig.MAP[path] = pathConfig
@@ -563,6 +565,28 @@ export default function ConfigPage() {
563565
updateConfig(newConfig)
564566
}
565567

568+
const handleToggleEnabled = (path: string, enabled: boolean) => {
569+
if (!config) return
570+
const newConfig = { ...config }
571+
const mapping = newConfig.MAP[path]
572+
573+
if (typeof mapping === 'string') {
574+
// 将字符串格式转换为对象格式
575+
newConfig.MAP[path] = {
576+
DefaultTarget: mapping,
577+
Enabled: enabled,
578+
}
579+
} else {
580+
// 更新对象格式的启用状态
581+
newConfig.MAP[path] = {
582+
...mapping,
583+
Enabled: enabled,
584+
}
585+
}
586+
587+
updateConfig(newConfig)
588+
}
589+
566590
const handleExtensionMapEdit = (path: string) => {
567591
// 将添加规则的操作重定向到handleExtensionRuleEdit
568592
handleExtensionRuleEdit(path);
@@ -1017,6 +1041,7 @@ export default function ConfigPage() {
10171041
isSystemPath={isSystemPath}
10181042
onEdit={(p) => handleEditPath(p, mapping)}
10191043
onDelete={deletePath}
1044+
onToggleEnabled={handleToggleEnabled}
10201045
onCacheConfigUpdate={handleCacheConfigUpdate}
10211046
onExtensionMapEdit={handleExtensionMapEdit}
10221047
onExtensionRuleEdit={handleExtensionRuleEdit}

0 commit comments

Comments
 (0)