diff --git a/src/oj/problem/components/SubmitFlowchart.vue b/src/oj/problem/components/SubmitFlowchart.vue index 7eb90fe..032a7cf 100644 --- a/src/oj/problem/components/SubmitFlowchart.vue +++ b/src/oj/problem/components/SubmitFlowchart.vue @@ -36,8 +36,13 @@ interface Evaluation extends Rating { } // ==================== 组合式函数和响应式变量 ==================== +interface FlowchartEditorInstance { + getFlowchartData: () => { nodes: unknown[]; edges: unknown[] } + setFlowchartData: (data: { nodes: unknown[]; edges: unknown[] }) => void +} + // 通过inject获取FlowchartEditor组件的引用 -const flowchartEditorRef = inject("flowchartEditorRef") +const flowchartEditorRef = inject>("flowchartEditorRef") const mermaidContainer = useTemplateRef("mermaidContainer") // 基础组合式函数 @@ -94,7 +99,7 @@ function subscribeToSubmission(submissionId: string) { // ==================== 提交相关函数 ==================== // 提交流程图 -async function submitFlowchartData(flowchartEditorRef: any) { +async function submitFlowchartData() { if (!flowchartEditorRef?.value) return // 获取流程图的JSON数据 @@ -138,7 +143,7 @@ async function submitFlowchartData(flowchartEditorRef: any) { // 提交函数 function submit() { - submitFlowchartData(flowchartEditorRef) + submitFlowchartData() } // ==================== 数据获取和处理函数 ==================== diff --git a/src/shared/composables/useMermaid.ts b/src/shared/composables/useMermaid.ts index 35f0f57..71eaaba 100644 --- a/src/shared/composables/useMermaid.ts +++ b/src/shared/composables/useMermaid.ts @@ -269,6 +269,7 @@ async function loadMermaid() { export function useMermaid() { const renderError = ref(null) const renderSuccess = ref(false) + let renderGeneration = 0 const renderFlowchart = async ( container: HTMLElement | null, @@ -281,14 +282,17 @@ export function useMermaid() { if (!container || !mermaidCode?.trim()) return + const gen = ++renderGeneration try { const m = await loadMermaid() const id = `mermaid-${getRandomId()}` const { svg } = await m.render(id, mermaidCode) + if (gen !== renderGeneration) return container.innerHTML = svg applyFlowchartDisplayStyle(container) renderSuccess.value = true } catch (error) { + if (gen !== renderGeneration) return renderError.value = error instanceof Error ? error.message