fix: pin settings savebar to viewport

This commit is contained in:
2026-04-30 19:34:39 +08:00
parent 9b99cd7e98
commit 242b419875
+30 -11
View File
@@ -10,10 +10,14 @@ import type {
} from "@/types"; } from "@/types";
import { outputFormatLabelMap, recordingTemplateLabelMap, saveModeLabelMap } from "@/types"; import { outputFormatLabelMap, recordingTemplateLabelMap, saveModeLabelMap } from "@/types";
import { useAuthStore } from "@/stores/auth"; import { useAuthStore } from "@/stores/auth";
import { useViewport } from "@/composables/useViewport";
import { useUiPreferences } from "@/composables/useUiPreferences";
type ScriptEventType = "live_started" | "live_ended" | "segment_completed"; type ScriptEventType = "live_started" | "live_ended" | "segment_completed";
const authStore = useAuthStore(); const authStore = useAuthStore();
const { isMobile } = useViewport();
const { sidebarCollapsed } = useUiPreferences();
const loading = ref(false); const loading = ref(false);
const saving = ref(false); const saving = ref(false);
@@ -39,6 +43,22 @@ const retentionCleanupResult = ref<RetentionCleanupResult | null>(null);
const loadError = ref(""); const loadError = ref("");
const activeSettingTab = ref("recording"); const activeSettingTab = ref("recording");
const savebarStyle = computed(() => {
if (isMobile.value) {
return {
left: "16px",
right: "16px",
bottom: "12px"
};
}
return {
left: sidebarCollapsed.value ? "120px" : "304px",
right: "28px",
bottom: "18px"
};
});
const form = reactive<SystemSettings>({ const form = reactive<SystemSettings>({
ffmpegPath: "ffmpeg", ffmpegPath: "ffmpeg",
outputRoot: "records", outputRoot: "records",
@@ -1488,13 +1508,13 @@ onMounted(loadSettings);
</el-tabs> </el-tabs>
</div> </div>
<div class="settings-savebar"> <div class="settings-savebar" :style="savebarStyle">
<div class="settings-savebar__content"> <div class="settings-savebar__content">
<div class="settings-savebar__copy"> <div class="settings-savebar__copy">
<div class="settings-savebar__title">当前修改不会自动保存</div> <div class="settings-savebar__title">当前修改不会自动保存</div>
<div class="settings-savebar__subtitle">滚动到页面任何位置都可以直接保存当前设置</div> <div class="settings-savebar__subtitle">滚动到页面任何位置都可以直接保存当前设置</div>
</div> </div>
<el-button type="primary" :loading="saving" @click="saveSettings">淇濆瓨璁剧疆</el-button> <el-button type="primary" :loading="saving" @click="saveSettings">保存设置</el-button>
</div> </div>
</div> </div>
</div> </div>
@@ -1504,7 +1524,7 @@ onMounted(loadSettings);
.page-stack { .page-stack {
display: grid; display: grid;
gap: 24px; gap: 24px;
padding-bottom: 28px; padding-bottom: 132px;
} }
.page-error-alert { .page-error-alert {
@@ -1832,10 +1852,13 @@ onMounted(loadSettings);
} }
.settings-savebar { .settings-savebar {
position: sticky; position: fixed;
bottom: 18px; z-index: 60;
z-index: 24;
pointer-events: none; pointer-events: none;
transition:
left 0.2s ease,
right 0.2s ease,
bottom 0.2s ease;
} }
.settings-savebar__content { .settings-savebar__content {
@@ -1925,7 +1948,7 @@ onMounted(loadSettings);
@media (max-width: 768px) { @media (max-width: 768px) {
.page-stack { .page-stack {
padding-bottom: 20px; padding-bottom: 112px;
} }
.settings-tabs :deep(.el-tabs__nav-wrap) { .settings-tabs :deep(.el-tabs__nav-wrap) {
@@ -1958,10 +1981,6 @@ onMounted(loadSettings);
padding: 16px 16px 2px; padding: 16px 16px 2px;
} }
.settings-savebar {
bottom: 12px;
}
.settings-savebar__content { .settings-savebar__content {
padding: 12px 14px; padding: 12px 14px;
border-radius: 12px; border-radius: 12px;