fix: 保存对话框预填文件名并自动补扩展名; 截图组件隐藏图像来源字段
- Properties.tsx: 输出类字段保存框按过滤器预填默认文件名(未命名.png 等), 不再是空文件名没法直接点保存; 保存结果无扩展名时自动补所选类型扩展名(Windows 保存框不会自动补) - catalog: Image_Screenshot 的 pictureSource(图像来源) 界面隐藏, 实现默认截当前屏幕; 历史流程存有 2(指定图片文件) 仍按原逻辑生效
This commit is contained in:
1 parent
88d5e61c5b
commit
29f3443110
2 files changed
+24
-5
No files matched your search
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user