fix: 图片路径类字段屏幕框选改为存模板截图路径, 仅搜索区域字段存区域JSON
This commit is contained in:
parent
0960be88e5
commit
52423d46a4
@ -609,13 +609,17 @@ function FieldControl({
|
||||
setPicking(true);
|
||||
try {
|
||||
const region = await window.rpa.desktop.pickRegion();
|
||||
if (field.widget === "region") {
|
||||
// 只有「搜索区域」类字段(displayType=region, 如 CV_* 的 searchRegion)存区域坐标 JSON;
|
||||
// 「屏幕截图」类字段(displayType=screenShot, 如 Image_* 的图片路径)是把截好的图当模板图用,
|
||||
// 运行时按文件路径打开该值——存 JSON 会直接 ENOENT, 所以这里存截图落盘后的路径
|
||||
const wantsRegionJson = field.widget === "region" && field.displayType !== "screenShot";
|
||||
if (wantsRegionJson) {
|
||||
// region 字段存完整信息: 坐标+尺寸+截图路径, 运行时可据此定位区域内容在屏幕上的绝对位置
|
||||
onChange(field.key, JSON.stringify({ x: region.x, y: region.y, width: region.width, height: region.height, imagePath: region.imagePath }));
|
||||
onToast("已框选区域:" + region.width + "×" + region.height + " @(" + region.x + "," + region.y + ")");
|
||||
} else {
|
||||
onChange(field.key, region.imagePath);
|
||||
onToast("已框选并截图:" + region.width + "×" + region.height);
|
||||
onToast("已截取模板图片:" + region.width + "×" + region.height);
|
||||
}
|
||||
} catch (error) {
|
||||
onToast(error instanceof Error ? error.message : String(error), "error");
|
||||
@ -670,7 +674,9 @@ function FieldControl({
|
||||
: field.widget === "folder"
|
||||
? "填写完整文件夹路径,或点右侧按钮选择"
|
||||
: field.widget === "region"
|
||||
? "填写区域坐标 JSON,或点「屏幕框选」生成"
|
||||
? field.displayType === "screenShot"
|
||||
? "填模板图片路径,或点「屏幕框选」截取屏幕上的目标图案"
|
||||
: "填写区域坐标 JSON,或点「屏幕框选」生成"
|
||||
: "";
|
||||
const hint = field.description || fallbackHint;
|
||||
|
||||
@ -772,6 +778,23 @@ function FieldControl({
|
||||
placeholder={field.placeholder || ""}
|
||||
onChange={(event) => onChange(field.key, event.target.value)}
|
||||
/>
|
||||
) : field.widget === "region" && field.displayType === "screenShot" ? (
|
||||
// 模板图片类字段(Image_* 的图片路径等): 值是文件路径, 框选是把截图存盘后填路径
|
||||
<div className="field-row">
|
||||
<input
|
||||
className="text-input"
|
||||
value={textOf(raw)}
|
||||
placeholder={field.placeholder || "填模板图片路径,或点「屏幕框选」截取"}
|
||||
onChange={(event) => onChange(field.key, event.target.value)}
|
||||
/>
|
||||
<VarMenu variables={variables} onPick={insertVariable} />
|
||||
<button type="button" className="mini-btn" onClick={() => void pickPath(false)} title="浏览">
|
||||
<FolderOpen className="icon" style={{ width: 13, height: 13 }} />
|
||||
</button>
|
||||
<button type="button" className="mini-btn" disabled={picking} onClick={() => void pickRegionToField()} title="截取屏幕区域作为模板图片">
|
||||
{picking ? "框选中" : "屏幕框选"}
|
||||
</button>
|
||||
</div>
|
||||
) : field.widget === "region" ? (
|
||||
<div className="field-row">
|
||||
<input
|
||||
|
||||
Loading…
Reference in New Issue
Block a user