8c8327df92
- 重构 DesktopPreferences 为分栏式设置面板,整合连接、外观、通知、更新与诊断信息分区,并补充过渡动效与暗色主题样式 - DesktopLayout 侧边栏导航分组支持展开折叠,调整管理/项目区块顺序并统一图标与标题 - 新增 fileTaskFeedback 工具,统一 pickFiles/saveFile/openFile 的成功/取消提示,替换审计导出、权限日志、附件、文档、线程、项目配置等处的直接调用 - desktopUpdateManager 暴露更新状态快照与状态变更监听,区分检查中、安装中、已推迟、失败等状态 - DesktopServerSettings 增加连接诊断信息(检查时间、健康地址、耗时、HTTP 状态) - unified-page.css 与 ProjectMilestones 引入 CSS 变量以适配暗色主题 - WebLayout 将服务器设置入口改为打开系统偏好面板,管理菜单中邮件服务归入系统设置分组 - ProfileSettings 移除已迁入偏好面板的桌面端专属区块 - 补充 Layout.desktop 布局与偏好面板契约测试
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { ElMessage } from "element-plus";
|
|
import {
|
|
clientRuntime,
|
|
openFile,
|
|
pickFiles,
|
|
saveFile,
|
|
type FileOutput,
|
|
type FilePickerOptions,
|
|
type SaveFileResult,
|
|
} from "../runtime";
|
|
|
|
const selectedFilesMessage = (count: number) => (count > 1 ? `已选择 ${count} 个文件` : "已选择 1 个文件");
|
|
|
|
export const pickFilesWithFeedback = async (options: FilePickerOptions = {}): Promise<File[]> => {
|
|
const files = await pickFiles(options);
|
|
if (files.length) {
|
|
ElMessage.success(selectedFilesMessage(files.length));
|
|
}
|
|
return files;
|
|
};
|
|
|
|
export const saveFileWithFeedback = async (output: FileOutput): Promise<SaveFileResult> => {
|
|
const result = await saveFile(output);
|
|
if (result === "cancelled") {
|
|
ElMessage.info("已取消保存文件");
|
|
return result;
|
|
}
|
|
ElMessage.success(clientRuntime.capabilities().nativeFiles ? "文件已保存" : "文件下载已开始");
|
|
return result;
|
|
};
|
|
|
|
export const openFileWithFeedback = async (output: FileOutput): Promise<void> => {
|
|
await openFile(output);
|
|
ElMessage.success("文件已打开");
|
|
};
|