diff --git a/web/src/views/ExperimentsView.vue b/web/src/views/ExperimentsView.vue
index f2404ae..2d4873a 100644
--- a/web/src/views/ExperimentsView.vue
+++ b/web/src/views/ExperimentsView.vue
@@ -713,7 +713,69 @@ onMounted(async () => {
+
+
+
+
+
+
+
+
+
+ {{ row.code }} · {{ row.name }}
+ {{ row.description }}
+
+
+
+
+
+
+ 第 {{ row.scheduleEntry.projectWeek ?? `${row.scheduleEntry.startWeek}–${row.scheduleEntry.endWeek}` }} 周 · 星期 {{ row.scheduleEntry.dayOfWeek }} · 第 {{ row.scheduleEntry.startPeriod }}–{{ row.scheduleEntry.startPeriod + row.scheduleEntry.periodCount - 1 }} 节
+ {{ row.scheduleEntry.campusName }} · {{ row.scheduleEntry.buildingName }} {{ row.scheduleEntry.classroomName }}
+
+
+ {{ row.sessions.length }} 个开放场次
+ {{ row.sessions.map((session: any) => formatSessionTime(session)).join(';') }}
+
+ 尚未安排
+
+
+
+ {{ modeMeta[row.arrangementMode].label }}
+
+
+ {{ statusLabels[row.status] }}
+
+
+
+
+ 编辑
+ 删除
+ 发布
+
+ 关闭项目
+ 安排场次
+
+
+
{
.project-group-task { display: grid; justify-items: end; gap: 3px; color: #5c7481; font-size: 11px; text-align: right; }
.project-group-task b { color: #365364; font-size: 12px; }
.project-group-projects { display: grid; gap: 0; padding: 0; }
+.project-table { --el-table-border-color: #dce5ea; --el-table-header-bg-color: #f7fafb; --el-table-row-hover-bg-color: #f6fafb; width: 100%; }
+.project-table :deep(th.el-table__cell) { padding: 8px 0; color: #617986; font-size: 11px; font-weight: 650; }
+.project-table :deep(td.el-table__cell) { padding: 9px 0; vertical-align: top; }
+.table-project-name, .table-schedule { display: grid; gap: 4px; min-width: 0; }
+.table-project-name b { color: var(--lab-ink); font-size: 13px; }
+.table-project-name small, .table-schedule small { overflow: hidden; color: #667f8d; font-size: 11px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
+.table-schedule b { color: #365364; font-size: 12px; font-weight: 600; }
+.table-muted { color: #8b9aa4; font-size: 12px; }
.project-card {
overflow: hidden;
border: 0;