diff --git a/src/renderer/components/TemplateCard.vue b/src/renderer/components/TemplateCard.vue new file mode 100644 index 0000000..4955aca --- /dev/null +++ b/src/renderer/components/TemplateCard.vue @@ -0,0 +1,100 @@ + + + \ No newline at end of file diff --git a/src/renderer/screens/CreateTemplateScreen.vue b/src/renderer/screens/CreateTemplateScreen.vue index e2569b3..e45f793 100644 --- a/src/renderer/screens/CreateTemplateScreen.vue +++ b/src/renderer/screens/CreateTemplateScreen.vue @@ -62,7 +62,7 @@ @@ -166,7 +166,6 @@ const { getTemplateById } = templateStore const formValid = ref(false) const templateName = ref('') const templateDescription = ref('') -const hasChanges = ref(false) // Dialogs const showFileDialog = ref(false) @@ -195,14 +194,6 @@ const isEditMode = computed(() => !!route.params.id) const requiredRule = (fieldName: string) => (v: string | null | undefined) => !!v || `${fieldName}为必填项` -// Watch for changes to detect unsaved changes -watch( - [templateName, templateDescription, treeStructure], - () => { - hasChanges.value = true - }, - { deep: true } -) // Lifecycle onMounted(async () => { @@ -223,7 +214,6 @@ onMounted(async () => { templateName.value = template.name templateDescription.value = template.description treeStructure.value = [...template.treeStructure] - hasChanges.value = false } else { router.push('/templates') } @@ -431,21 +421,7 @@ const handleFileDialogConfirm = (data: { path: string; sourcePath?: string; sour } const goBack = async () => { - if (hasChanges.value) { - const confirmed = await ConfirmDialogService.confirm({ - title: '确认离开', - message: '您有未保存的更改,确定要离开吗?', - confirmText: '离开', - cancelText: '取消', - confirmColor: 'warning' - }) - - if (confirmed) { - router.push('/templates') - } - } else { router.push('/templates') - } } @@ -540,7 +516,6 @@ const saveTemplate = () => { templateStore.addTemplate(templateData) } - hasChanges.value = false router.push('/templates') } diff --git a/src/renderer/screens/TemplateListScreen.vue b/src/renderer/screens/TemplateListScreen.vue index 1cb4af0..07e5471 100644 --- a/src/renderer/screens/TemplateListScreen.vue +++ b/src/renderer/screens/TemplateListScreen.vue @@ -28,62 +28,13 @@
- - - {{ template.name }} - {{ template.description }} - - - - - - 节点: {{ countTreeNodes(template.treeStructure).files }} - - - 目录: {{ countTreeNodes(template.treeStructure).directories }} - - - - - - - -
- - 查看 - - - 执行 - -
- - - - - - - - 修改 - - - - - - - 删除 - - - -
-
+
@@ -141,6 +92,7 @@ import { useRouter } from 'vue-router' import { useTemplateStore, TreeNode } from '@/renderer/store/template' import { Template } from '@/renderer/store/template' import TemplateTree from '@/renderer/components/TemplateTree.vue' +import TemplateCard from '@/renderer/components/TemplateCard.vue' import { ConfirmDialogService } from '@/renderer/utils/confirm-dialog-service' const router = useRouter() @@ -166,28 +118,7 @@ const executePath = ref('') const baseDirNames = ref('') const executeFormValid = ref(false) -// Count files and directories in tree structure -const countTreeNodes = (nodes: TreeNode[]) => { - let files = 0; - let directories = 0; - const count = (nodeList: TreeNode[]) => { - nodeList.forEach(node => { - if (node.type === 'file') { - files++; - } else if (node.type === 'directory') { - directories++; - if (node.children) { - count(node.children); - } - } - }); - }; - - count(nodes || []); - - return { files, directories }; -} const templateTree = computed(() => { if (!selectedTemplate.value) return []