import { defineComponent, ref } from 'vue' import { useWorkflowStore } from '../../store/workflow' import { UploadNodeData } from '../../types' import configStyles from './Config.module.css' export default defineComponent({ name: 'UploadNodeConfig', props: { nodeId: { type: String, required: true, }, nodeData: { type: Object as () => UploadNodeData, required: true, }, }, setup(props) { const workflowStore = useWorkflowStore() const certificateContent = ref(props.nodeData.certificateContent || '') const uploadStatus = ref<'idle' | 'uploading' | 'success' | 'error'>('idle') const errorMessage = ref('') // 更新节点标签 const updateNodeLabel = (value: string) => { workflowStore.updateNodeData(props.nodeId, { label: value }) } // 更新证书内容 const updateCertificateContent = (value: string) => { certificateContent.value = value } // 上传证书 const uploadCertificate = () => { if (!certificateContent.value.trim()) { errorMessage.value = '请输入证书内容' return } // 模拟上传过程 uploadStatus.value = 'uploading' errorMessage.value = '' setTimeout(() => { uploadStatus.value = 'success' workflowStore.updateNodeData(props.nodeId, { certificateContent: certificateContent.value, }) }, 1000) } // 处理文件上传 const handleFileUpload = (event: Event) => { const fileInput = event.target as HTMLInputElement const file = fileInput.files?.[0] if (file) { const reader = new FileReader() reader.onload = (e) => { const content = e.target?.result as string certificateContent.value = content } reader.readAsText(file) } } return () => (