feat: 统一侧栏折叠动画并收口拆解页

This commit is contained in:
GJ
2026-09-04 20:06:40 +08:00
parent 278874e3ee
commit a37b0b613f
7 changed files with 70 additions and 74 deletions
+9 -15
View File
@@ -145,10 +145,7 @@ function exportResult() {
>抽取 {{ summary.completed }} / {{ summary.total }} · 失败 {{ summary.failed }}</span
>
<span>主体 {{ subjects.length }} · 分镜剧集 {{ shots.length }} / {{ plans.length }}</span>
</div>
<div v-if="snapshot || project?.episodes.length" class="toolbar-actions">
<StatusBadge
v-if="snapshot"
:status="execution?.status || 'unknown'"
:label="
execution?.status === 'completed'
@@ -158,12 +155,9 @@ function exportResult() {
: '执行状态待确认'
"
/>
<WorkspaceTools
v-if="project?.episodes.length"
v-model:open="toolsOpen"
title="拆解设置与恢复"
label="拆解设置与恢复"
>
</div>
<div v-if="project?.episodes.length" class="toolbar-actions">
<WorkspaceTools v-model:open="toolsOpen" title="拆解设置与恢复" label="拆解设置与恢复">
<section class="panel breakdown-settings-panel p-5 lg:p-6">
<div class="mb-5 flex flex-wrap items-start justify-between gap-3">
<div>
@@ -423,14 +417,14 @@ function exportResult() {
<!-- 所有结果标签共用有界的内容滚动切换标签回到顶部不继承上一列表的位置 -->
<NScrollbar :key="tab" class="panel-scroll breakdown-results-scroll">
<template v-for="option in moduleOptions" :key="option.value"
><div v-if="tab === option.value">
><div v-if="tab === option.value" class="breakdown-result-pad">
<SubjectList
:project-id="project?.id"
:subjects="subjects.filter(item => item.module === option.value)"
:forms="forms"
/></div
></template>
<div v-if="tab === 'storyboard'">
<div v-if="tab === 'storyboard'" class="breakdown-result-pad">
<StoryboardList :plans="plans" :episodes="shots">
<template #actions>
<RouterLink :to="`/projects/${project?.id}/storyboard`" class="text-button"
@@ -439,7 +433,7 @@ function exportResult() {
</template>
</StoryboardList>
</div>
<div v-if="tab === 'tasks'" class="p-5">
<div v-if="tab === 'tasks'" class="breakdown-result-pad">
<NScrollbar x-scrollable v-if="snapshot?.tasks?.length" class="table-scroll">
<NTable :bordered="false" :single-line="true" striped class="project-table"
><thead>
@@ -588,6 +582,9 @@ function exportResult() {
.breakdown-results-scroll .n-scrollbar-content {
@apply wrap-anywhere;
}
.breakdown-result-pad {
@apply p-4;
}
.breakdown-results-section > .content-with-history.history-hidden {
@apply grid-cols-[minmax(0,_1fr)] grid-rows-[minmax(0,_1fr)];
}
@@ -618,9 +615,6 @@ function exportResult() {
.breakdown-workspace-page .toolbar-actions > * {
@apply shrink-0;
}
.breakdown-workspace-page .toolbar-actions .n-tag {
@apply hidden;
}
.breakdown-workspace-page .workspace-tools-label {
@apply hidden;
}
@@ -131,7 +131,7 @@ const purposeLabels: Record<string, string> = {
}
}
.breakdown-storyboard {
@apply pt-4 px-5 pb-5;
@apply min-w-0;
}
.breakdown-storyboard-toolbar {
@apply flex items-center justify-between flex-wrap gap-y-3 gap-x-6 mb-4;
@@ -140,14 +140,6 @@ const filtered = computed(() =>
.subject-details[open] summary svg {
@apply rotate-180;
}
.subject-list {
@apply p-5;
}
@media (min-width: 1024px) {
.subject-list {
@apply p-7;
}
}
.subject-list-toolbar {
@apply flex flex-wrap items-center justify-start gap-y-2.5 gap-x-3 mb-5;
}
@@ -158,9 +150,6 @@ const filtered = computed(() =>
@apply shrink-0 text-muted text-xs whitespace-nowrap;
}
@media (max-width: 800px) {
.subject-list {
@apply p-3;
}
.subject-list-toolbar {
@apply flex-nowrap gap-2 mb-3;
}