diff --git a/resources/catalog.json b/resources/catalog.json index af5e8ab..8cae947 100644 --- a/resources/catalog.json +++ b/resources/catalog.json @@ -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": [ diff --git a/src/renderer/src/panels/Properties.tsx b/src/renderer/src/panels/Properties.tsx index cf8deb5..1bb0b65 100644 --- a/src/renderer/src/panels/Properties.tsx +++ b/src/renderer/src/panels/Properties.tsx @@ -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; } }