fvs的js

FVS 添加了好几个标题组件,我想实现,点击不同的标题组件,实现日期区间参数的自动赋值image.pngimage.png

FineReport 猫尾巴 发布于 2025-8-20 14:43 (编辑于 2025-8-20 15:21)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
snrtuemcLv8专家互助
发布于2025-8-20 14:46(编辑于 2025-8-20 14:46)

点击事件写js

duchamp.getWidgetByName("控件名").setValue("xxx"); 

刷新的js是

duchamp.getWidgetByName("组件").refresh({a:"参数值",b:"参数值"});

最佳回答
0
农夫三拳1Lv6高级互助
发布于2025-8-20 14:53(编辑于 2025-8-20 15:32)

跟我的类似,我使用的是下拉控件赋值

var wd=duchamp.getWidgetByName("维度筛选").getValue();

if(wd=="年维度"){

duchamp.getWidgetByName("开始时间").setValue(str_n);

duchamp.getWidgetByName("结束时间").setValue(end_n);

};

if(wd=="月维度"){

duchamp.getWidgetByName("开始时间").setValue(str_y);

duchamp.getWidgetByName("结束时间").setValue(end_y);

duchamp.getWidgetByName("对比-开始时间").setValue(db_str_y);

duchamp.getWidgetByName("对比-结束时间").setValue(db_end_y);

};

if(wd=="日维度"){

duchamp.getWidgetByName("开始时间").setValue(str_r);

duchamp.getWidgetByName("结束时间").setValue(end_r);

duchamp.getWidgetByName("对比-开始时间").setValue(db_str_r);

duchamp.getWidgetByName("对比-结束时间").setValue(db_end_r);

};

image.png

---------------------------------------------------

也是两个参数,

image.png

  • 猫尾巴 猫尾巴(提问者) 你写的js用到是2个日期参数控件么,我用的是日期区间的参数
    2025-08-20 15:20 
  • 农夫三拳1 农夫三拳1 回复 猫尾巴(提问者) 看这个文档https://help.fanruan.com/finereport/doc-view-4261.html#aa4d5afff64c0b98
    2025-08-20 15:32 
  • 猫尾巴 猫尾巴(提问者) 回复 农夫三拳1 // 等待模板加载完成后执行(避免组件未初始化)
    setTimeout(function() {
    // 获取标题组件(名称:day)和日期区间组件(名称:date)
    const dayTitle = duchamp.getWidgetByName("day");
    const dateRange = duchamp.getWidgetByName("date");

    // 验证组件是否获取成功
    if (!dayTitle || !dateRange) {
    console.error("未找到名称为 'day' 或 'date' 的组件,请检查名称是否正确");
    return;
    }

    // 绑定标题组件点击事件
    dayTitle.on("click", function() {
    // 计算昨日日期
    const today = new Date();
    const yesterday = new Date(today);
    yesterday.setDate(today.getDate() - 1); // 可靠的日期减一天方式

    // 格式化日期为 yyyy-MM-dd
    const formatDate = (date) => {
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, "0"); // 月份从0开始,补零
    const day = String(date.getDate()).padStart(2, "0");
    return `${year}-${month}-${day}`;
    };

    const yesterdayStr = formatDate(yesterday);
    const dateValue = `${yesterdayStr} - ${yesterdayStr}`; // 日期区间格式

    // 给日期组件赋值(触发联动可选为 true)
    dateRange.setValue(dateValue, true);
    // 强制刷新组件确保界面更新
    dateRange.refresh && dateRange.refresh();

    console.log("日期赋值成功:", dateValue);
    });
    }, 500); // 延迟 500ms 执行,确保组件加载完成

    大佬能给看看不,没有获取到日期的值
    2025-08-20 16:33 
  • 农夫三拳1 农夫三拳1 回复 猫尾巴(提问者) 可能是格式的问题,打印一下你格式转换完是什么样的,可以先按我的截图,去在公式里使用FORMAT()转换日期格式
    2025-08-20 18:08 
  • 3关注人数
  • 44浏览人数
  • 最后回答于:2025-8-20 15:32
    请选择关闭问题的原因
    确定 取消
    返回顶部