fix: 保存对话框预填文件名并自动补扩展名; 截图组件隐藏图像来源字段
- Properties.tsx: 输出类字段保存框按过滤器预填默认文件名(未命名.png 等), 不再是空文件名没法直接点保存; 保存结果无扩展名时自动补所选类型扩展名(Windows 保存框不会自动补) - catalog: Image_Screenshot 的 pictureSource(图像来源) 界面隐藏, 实现默认截当前屏幕; 历史流程存有 2(指定图片文件) 仍按原逻辑生效
This commit is contained in:
parent
88d5e61c5b
commit
29f3443110
@ -61895,13 +61895,13 @@
|
||||
{
|
||||
"key": "pictureSource",
|
||||
"label": "图像来源",
|
||||
"widget": "radio",
|
||||
"widget": "hidden",
|
||||
"type": "string",
|
||||
"displayType": "buttonGroup",
|
||||
"required": false,
|
||||
"defaultValue": "1",
|
||||
"placeholder": "",
|
||||
"description": "选择要截图的图像来源,可以是当前屏幕,也可以是指定的图片文件。",
|
||||
"description": "【界面已隐藏】实现默认截取当前屏幕;历史流程如存有 2(指定图片文件) 仍按原逻辑生效",
|
||||
"advanced": false,
|
||||
"valueTypes": [],
|
||||
"options": [
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user