diff --git a/apps/desktop/src/components/template/SegmentMatchingRuleEditor.tsx b/apps/desktop/src/components/template/SegmentMatchingRuleEditor.tsx index 4f67d74..895afad 100644 --- a/apps/desktop/src/components/template/SegmentMatchingRuleEditor.tsx +++ b/apps/desktop/src/components/template/SegmentMatchingRuleEditor.tsx @@ -148,42 +148,45 @@ export const SegmentMatchingRuleEditor: React.FC ); } return ( -
+
- 编辑匹配规则: -
+ 编辑匹配规则: +
-
{SegmentMatchingRuleHelper.isAiClassification(editingRule) && (
-
)}
{error && ( -
- {error} +
+ ⚠️ {error}
)} {loading && ( -
- 正在保存... +
+
+ 正在保存匹配规则...
)}
diff --git a/apps/desktop/src/components/template/TemplateDetailModal.tsx b/apps/desktop/src/components/template/TemplateDetailModal.tsx index 7ae2b8f..f793eb9 100644 --- a/apps/desktop/src/components/template/TemplateDetailModal.tsx +++ b/apps/desktop/src/components/template/TemplateDetailModal.tsx @@ -2,20 +2,46 @@ import React, { useState } from 'react'; import { X, Calendar, Clock, Monitor, Layers, FileText, Image, Video, Music, Type, Sparkles, CheckCircle, XCircle, AlertCircle, Upload, Cloud, ChevronDown, ChevronRight, Info } from 'lucide-react'; import { Template, TemplateMaterial, TemplateMaterialType, TrackType } from '../../types/template'; import { SegmentMatchingRuleEditor } from './SegmentMatchingRuleEditor'; +import { useTemplateStore } from '../../stores/templateStore'; interface TemplateDetailModalProps { template: Template; onClose: () => void; + onTemplateUpdated?: () => void; } export const TemplateDetailModal: React.FC = ({ template, onClose, + onTemplateUpdated, }) => { const [activeTab, setActiveTab] = useState<'overview' | 'materials' | 'tracks'>('overview'); const [expandedSections, setExpandedSections] = useState>({}); const [expandedMaterials, setExpandedMaterials] = useState>({}); const [expandedSegments, setExpandedSegments] = useState>({}); + const [currentTemplate, setCurrentTemplate] = useState