From 1cb96a1073290f8bee00454eb3d07cba8091a91c Mon Sep 17 00:00:00 2001
From: yuetsh <517252939@qq.com>
Date: Sat, 13 Dec 2025 17:48:31 +0800
Subject: [PATCH] add flowchart dead data info
---
public/flowchart-data.html | 329 ++++++++++++++++++
.../problemset/components/ProblemSetInfo.vue | 4 +-
.../components/ProgressManagement.vue | 3 +-
.../components/ProblemSetHeader.vue | 6 +-
.../components/ProblemSetProblemsList.vue | 4 +-
.../components/UserProgressView.vue | 12 +-
src/oj/submission/list.vue | 38 ++
src/oj/user/index.vue | 12 +-
8 files changed, 389 insertions(+), 19 deletions(-)
create mode 100644 public/flowchart-data.html
diff --git a/public/flowchart-data.html b/public/flowchart-data.html
new file mode 100644
index 0000000..0dac320
--- /dev/null
+++ b/public/flowchart-data.html
@@ -0,0 +1,329 @@
+
+
+
+
+
+ Python流程图作业 - 学情分析看板
+
+
+
+
+
+
+
+
班级平均分
+
0
+
↑ 比上周For循环 +2.5分
+
+
+
S+A 级别(卓越+优秀)人数
+
0
+
占比 35.7%
+
+
+
未掌握核心难点
+
循环条件
+
需重点讲解 a<100 边界
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/admin/problemset/components/ProblemSetInfo.vue b/src/admin/problemset/components/ProblemSetInfo.vue
index 6cf73d2..58c2fb6 100644
--- a/src/admin/problemset/components/ProblemSetInfo.vue
+++ b/src/admin/problemset/components/ProblemSetInfo.vue
@@ -63,9 +63,7 @@ defineProps()
{{ problemSet.problems_count }}
- {{
- parseTime(problemSet.create_time, "YYYY-MM-DD HH:mm:ss")
- }}
+ {{ parseTime(problemSet.create_time, "YYYY-MM-DD HH:mm:ss") }}
diff --git a/src/admin/problemset/components/ProgressManagement.vue b/src/admin/problemset/components/ProgressManagement.vue
index 281e828..9f677aa 100644
--- a/src/admin/problemset/components/ProgressManagement.vue
+++ b/src/admin/problemset/components/ProgressManagement.vue
@@ -31,7 +31,8 @@ const progressColumns = [
title: "进度",
key: "progress_percentage",
width: 100,
- render: (row: ProblemSetProgress) => `${row.progress_percentage.toFixed(0)}%`,
+ render: (row: ProblemSetProgress) =>
+ `${row.progress_percentage.toFixed(0)}%`,
},
{
title: "是否完成",
diff --git a/src/oj/problemset/components/ProblemSetHeader.vue b/src/oj/problemset/components/ProblemSetHeader.vue
index b24025e..a7ea15c 100644
--- a/src/oj/problemset/components/ProblemSetHeader.vue
+++ b/src/oj/problemset/components/ProblemSetHeader.vue
@@ -12,7 +12,7 @@ interface Props {
}
interface Emits {
- (e: 'join'): void
+ (e: "join"): void
}
const props = defineProps()
@@ -40,12 +40,12 @@ function getProgressPercentage() {
}
function handleJoin() {
- emit('join')
+ emit("join")
}
-
+
diff --git a/src/oj/problemset/components/ProblemSetProblemsList.vue b/src/oj/problemset/components/ProblemSetProblemsList.vue
index 67de4f2..c36fefe 100644
--- a/src/oj/problemset/components/ProblemSetProblemsList.vue
+++ b/src/oj/problemset/components/ProblemSetProblemsList.vue
@@ -11,7 +11,7 @@ interface Props {
}
interface Emits {
- (e: 'problem-click', problemId: string): void
+ (e: "problem-click", problemId: string): void
}
const props = defineProps()
@@ -20,7 +20,7 @@ const emit = defineEmits()
const { isDesktop } = useBreakpoints()
function handleProblemClick(problemId: string) {
- emit('problem-click', problemId)
+ emit("problem-click", problemId)
}
diff --git a/src/oj/problemset/components/UserProgressView.vue b/src/oj/problemset/components/UserProgressView.vue
index 4aa89ed..4d48b60 100644
--- a/src/oj/problemset/components/UserProgressView.vue
+++ b/src/oj/problemset/components/UserProgressView.vue
@@ -48,10 +48,14 @@ async function loadUserProgress() {
// 监听分页参数变化
watch([() => query.page, () => query.limit], loadUserProgress)
// 监听班级过滤变化(防抖)
-watchDebounced(classFilter, () => {
- query.page = 1 // 重置到第一页
- loadUserProgress()
-}, { debounce: 500 })
+watchDebounced(
+ classFilter,
+ () => {
+ query.page = 1 // 重置到第一页
+ loadUserProgress()
+ },
+ { debounce: 500 },
+)
// 使用后端返回的统计数据
const stats = computed(() => {
diff --git a/src/oj/submission/list.vue b/src/oj/submission/list.vue
index 16f0dbd..4b1cd4c 100644
--- a/src/oj/submission/list.vue
+++ b/src/oj/submission/list.vue
@@ -59,6 +59,8 @@ const { query, clearQuery } = usePagination({
const submissionID = ref("")
const problemDisplayID = ref("")
const [statisticPanel, toggleStatisticPanel] = useToggle(false)
+const [flowchartStatisticPanel, toggleFlowchartStatisticPanel] =
+ useToggle(false)
const [codePanel, toggleCodePanel] = useToggle(false)
const resultOptions: SelectOption[] = [
@@ -370,6 +372,13 @@ const flowchartColumns: DataTableColumn[] = [
+
@@ -415,6 +424,28 @@ const flowchartColumns: DataTableColumn[] = [
>
+
+
+
[] = [
.todayCount {
margin: 0;
}
+
+.flowchart-iframe {
+ width: 100%;
+ height: 100%;
+ border: none;
+ display: block;
+}
diff --git a/src/oj/user/index.vue b/src/oj/user/index.vue
index fb19ee7..685a5a2 100644
--- a/src/oj/user/index.vue
+++ b/src/oj/user/index.vue
@@ -74,19 +74,19 @@ async function init() {
ac.sort()
problems.value = ac
const promises: Promise<{ data: any }>[] = []
-
+
if (profile.value.submission_number > 0) {
promises.push(getMetrics(profile.value.user.id))
}
-
- if (route.query.name) {
+
+ if (route.query.name) {
promises.push(getUserBadges(route.query.name))
} else {
promises.push(getUserBadges())
}
-
+
const results = await Promise.all(promises)
-
+
// 处理 metrics 结果
if (profile.value.submission_number > 0) {
const metricsRes = results[0]
@@ -101,7 +101,7 @@ async function init() {
metricsRes.data.latest,
)
}
-
+
// 处理 badges 结果
userBadges.value = groupBadgesByIcon(results[1].data)
} finally {