diff --git a/src/oj/api.ts b/src/oj/api.ts
index b46fc9d..88f3331 100644
--- a/src/oj/api.ts
+++ b/src/oj/api.ts
@@ -304,6 +304,12 @@ export function getCurrentProblemFlowchartSubmission(problemId: number) {
})
}
+export function getFlowchartSubmissionDetail(problemId: number, page = 0) {
+ return http.get("flowchart/submission/detail", {
+ params: { problem_id: problemId, page },
+ })
+}
+
// ==================== 题单相关API ====================
export function getProblemSetList(
diff --git a/src/oj/problem/components/ProblemListTitle.vue b/src/oj/problem/components/ProblemListTitle.vue
index 0051043..41dd1df 100644
--- a/src/oj/problem/components/ProblemListTitle.vue
+++ b/src/oj/problem/components/ProblemListTitle.vue
@@ -9,9 +9,6 @@ defineProps<{
{{ problem.title }}
-
+
diff --git a/src/oj/problem/components/SubmitFlowchart.vue b/src/oj/problem/components/SubmitFlowchart.vue
index 6f0102d..77a5e26 100644
--- a/src/oj/problem/components/SubmitFlowchart.vue
+++ b/src/oj/problem/components/SubmitFlowchart.vue
@@ -16,8 +16,8 @@ import {
// API 和状态管理
import {
getCurrentProblemFlowchartSubmission,
+ getFlowchartSubmissionDetail,
submitFlowchart,
- updateProblemSetProgress,
} from "oj/api"
import { useProblemStore } from "oj/store/problem"
@@ -47,7 +47,6 @@ const { problem } = toRefs(problemStore)
const { isDesktop } = useBreakpoints()
const { convertToMermaid } = useMermaidConverter()
const { renderError, renderFlowchart } = useMermaid()
-const route = useRoute()
// 状态管理
const rendering = ref(false)
@@ -64,6 +63,7 @@ const evaluation = ref({
suggestions: "",
criteria_details: {},
})
+const page = ref(1)
// ==================== WebSocket 相关函数 ====================
// 处理 WebSocket 消息
@@ -147,33 +147,56 @@ function submit() {
}
// ==================== 数据获取和处理函数 ====================
-async function getSubmission() {
+
+async function getCurrentSubmission() {
if (!problem.value?.id) return
const { data } = await getCurrentProblemFlowchartSubmission(problem.value.id)
submissionCount.value = data.count
- const submission = data.submission
- myMermaidCode.value = submission.mermaid_code
- myFlowchartZippedStr.value = submission.flowchart_data.data
- if (submission && submission.status === 2) {
- rating.value = {
- score: submission.ai_score,
- grade: submission.ai_grade,
- }
- evaluation.value = {
- score: submission.ai_score,
- grade: submission.ai_grade,
- feedback: submission.ai_feedback,
- suggestions: submission.ai_suggestions,
- criteria_details: submission.ai_criteria_details,
- }
+ rating.value = {
+ score: data.score,
+ grade: data.grade,
}
}
+async function getSubmission(submissionPage = 0) {
+ if (!problem.value?.id) return
+ const { data } = await getFlowchartSubmissionDetail(
+ problem.value.id,
+ submissionPage,
+ )
+ const submission = data.submission
+ myFlowchartZippedStr.value = submission.flowchart_data.data
+ myMermaidCode.value = submission.mermaid_code || ""
+ rating.value = {
+ score: submission.ai_score,
+ grade: submission.ai_grade,
+ }
+ evaluation.value = {
+ score: submission.ai_score,
+ grade: submission.ai_grade,
+ feedback: submission.ai_feedback,
+ suggestions: submission.ai_suggestions,
+ criteria_details: submission.ai_criteria_details,
+ }
+}
+
+async function updatePage(val: number) {
+ page.value = val
+ rendering.value = true
+ await getSubmission(val)
+ // 等待 DOM 更新
+ await nextTick()
+ await renderFlowchart(mermaidContainer.value, myMermaidCode.value)
+ rendering.value = false
+}
+
// ==================== 模态框相关函数 ====================
async function openDetailModal() {
- rendering.value = true
showDetailModal.value = true
+ rendering.value = true
await getSubmission()
+ // 等待 DOM 更新,确保弹框已经渲染
+ await nextTick()
await renderFlowchart(mermaidContainer.value, myMermaidCode.value)
rendering.value = false
}
@@ -214,9 +237,10 @@ const getPercentType = (percent: number) => {
// ==================== 生命周期钩子 ====================
// 组件挂载时连接 WebSocket 并检查状态
-onMounted(() => {
+onMounted(async () => {
connect()
- getSubmission()
+ await getCurrentSubmission()
+ page.value = submissionCount.value
})
// 组件卸载时断开连接
@@ -239,11 +263,6 @@ onUnmounted(() => {
{{ loading ? "AI 点评中..." : "提交流程图" }}
-
-
- {{ submissionCount }} 次
-
-
{
{{ rating.score }}分 {{ rating.grade }}级
-
+
@@ -266,15 +285,12 @@ onUnmounted(() => {
-
-
-
-
+
+
{{ renderError }}
-
-
-
-
+
+
+
@@ -341,6 +357,19 @@ onUnmounted(() => {
+
+
+
+
+
diff --git a/src/shared/components/MermaidEditor.vue b/src/shared/components/MermaidEditor.vue
index 8b0bfc0..cc83e72 100644
--- a/src/shared/components/MermaidEditor.vue
+++ b/src/shared/components/MermaidEditor.vue
@@ -6,7 +6,6 @@ let mermaid: any = null
const modelValue = defineModel({ default: "" })
const mermaidContainer = useTemplateRef("mermaidContainer")
-const codeEditor = useTemplateRef("codeEditor")
// 渲染状态
const renderSuccess = ref(false)