feat(web): 新增控制台布局切换并完善状态与磁盘交互

新增经典、悬浮和侧栏布局,保存用户偏好,并调整工具栏、状态摘要及窄屏交互。
统一控制台弹层外观、焦点行为和中英文文案。
根据虚拟磁盘文件访问能力显示浏览入口、容量信息和不可用状态。

验证:npm run build 通过(vue-tsc 类型检查和 Vite 生产构建)。
This commit is contained in:
mofeng-git
2026-09-05 20:59:15 +08:00
parent db9d79554a
commit ece4f303ce
29 changed files with 1027 additions and 191 deletions

View File

@@ -583,6 +583,16 @@ export interface DriveFile {
size: number
}
export type DriveFileAccess = 'available' | 'unsupported' | 'blocked_while_connected' | 'unknown'
export interface DriveInfo {
size: number
used: number | null
free: number | null
initialized: boolean
file_access: DriveFileAccess
}
export type DiskMode = 'single' | 'multi'
export type MountedMediaKind = 'drive' | 'image'
@@ -604,12 +614,7 @@ export const msdApi = {
slot_capacity: number
mounted_count: number
mounted_media: MountedMedia[]
drive_info: {
size: number
used: number
free: number
initialized: boolean
} | null
drive_info: DriveInfo | null
usb_reenumerating: boolean
}
}>('/msd/status', {}, { toastOnError: false }),
@@ -650,20 +655,10 @@ export const msdApi = {
request<{ success: boolean }>('/msd/drive/mount', { method: 'DELETE' }, { errorTitleKey: 'msd.operations.unmountDrive' }),
driveInfo: () =>
request<{
size: number
used: number
free: number
initialized: boolean
}>('/msd/drive', {}, { toastOnError: false }),
request<DriveInfo>('/msd/drive', {}, { toastOnError: false }),
initDrive: (sizeMb?: number) =>
request<{
size: number
used: number
free: number
initialized: boolean
}>(
request<DriveInfo>(
'/msd/drive/init',
{
method: 'POST',