fix: 保存对话框预填文件名并自动补扩展名; 截图组件隐藏图像来源字段

- Properties.tsx: 输出类字段保存框按过滤器预填默认文件名(未命名.png 等), 不再是空文件名没法直接点保存; 保存结果无扩展名时自动补所选类型扩展名(Windows 保存框不会自动补)
- catalog: Image_Screenshot 的 pictureSource(图像来源) 界面隐藏, 实现默认截当前屏幕; 历史流程存有 2(指定图片文件) 仍按原逻辑生效
This commit is contained in:
yu committed 2026-11-02 15:01:44 +08:00
1 parent 88d5e61c5b
commit 29f3443110
2 files changed
+24 -5

No files matched your search

+22 -3
View File
@@ -481,6 +481,21 @@ function fileFiltersFor(componentId: string, field: CatalogField): FileFilterOpt
return filters;
}
/** 输出字段的保存框默认文件名:取第一个非「全部文件」过滤器的首个扩展名 */
function defaultSaveFilename(filters: FileFilterOption[]): string {
const ext = filters.find((f) => !f.extensions.includes("*"))?.extensions[0];
return ext ? `未命名.${ext}` : "";
}
/** 保存结果没有扩展名时补上所选类型的扩展名(Windows 保存框不会自动补) */
function ensureSaveExtension(filePath: string, filters: FileFilterOption[]): string {
const exts = filters.find((f) => !f.extensions.includes("*"))?.extensions ?? [];
if (!exts.length) return filePath;
const clean = filePath.trim();
if (/\.[A-Za-z0-9]+$/.test(clean)) return clean;
return `${clean}.${exts[0]}`;
}
function FieldControl({
field,
node,
@@ -533,12 +548,16 @@ function FieldControl({
`${field.key} ${field.label ?? ""}`
);
if (isOutputField) {
const filters = fileFiltersFor(node.componentId, field);
// 预填默认文件名(按过滤器推断扩展名),避免弹出的保存框文件名为空没法直接点保存
const defaultPath = textOf(raw) || defaultSaveFilename(filters);
const selected = await window.rpa.dialog.save({
title: field.label,
defaultPath: textOf(raw) || undefined,
filters: fileFiltersFor(node.componentId, field)
defaultPath: defaultPath || undefined,
filters
});
if (selected) onChange(field.key, selected);
// Windows 保存框不会按所选类型自动补扩展名,这里补上
if (selected) onChange(field.key, ensureSaveExtension(selected, filters));
return;
}
}