关于web属性中,填报事件的问题

//设置加载结束事件, //基本逻辑:获取单元格数据,拼装json,调用第三方系统接口。 //延时1s生效,否则单元格数据无法获取。 setTimeout(function() { //获取单元格数据 var bms = _g().getWidgetsByName("bm"); var mcs = _g().getWidgetsByName("mc"); var xhs = _g().getWidgetsByName("xh"); var cws = _g().getWidgetsByName("cw"); console.log(bms); //判断bms的长度,如果只有一行,长度为undefined if (typeof bms.length == 'undefined') { var bm = bms.getValue(); var mc = mcs.getValue(); var xh = xhs.getValue(); var cw = cws.getValue(); var dataString = "[{\"creator\": \"200412\", \"fieldMap\": {\"fo24785bd6f29b4d48b97946e0a5b72916\": \"" + bm + "\", \"fo3bdcc67449644e088908673e9e0272d3\": \"" + mc + "\", \"fo704359f24523405a9e4d0e4516768855\": \"" + xh + "\", \"fo479718e19ea749d79fc6d4c1cb83384f\": \"" + cw + "\"}, \"isAnonymous\": \"0\"}]" console.log(dataString); } else { //多条数据时,拼装json var dataString = "[" for (var i = 0; i < bms.length; i++) { var bm = bms[i].getValue(); var mc = mcs[i].getValue(); var xh = xhs[i].getValue(); var cw = cws[i].getValue(); dataString += "{\"creator\": \"200412\", \"fieldMap\": {\"fo24785bd6f29b4d48b97946e0a5b72916\": \"" + bm + "\", \"fo3bdcc67449644e088908673e9e0272d3\": \"" + mc + "\", \"fo704359f24523405a9e4d0e4516768855\": \"" + xh + "\", \"fo479718e19ea749d79fc6d4c1cb83384f\": \"" + cw + "\"}, \"isAnonymous\": \"0\"}," if (i % 10 == 0 || i == bms.length - 1) { dataString = dataString.substr(0, dataString.length - 1); dataString += "]"; console.log(dataString); //调用接口,发送json fetch('http://192.168.1.9:3000/api/proxy', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://qwif.do1.com.cn/qwcgi/api/apiForm/pushFormData.do', // 实际的目标API的URL method: 'POST', // 使用GET方法,因为这是查询参数 qs: { token: token, corpId: 'wx3f99f213ef30cbc8', id: 'formb68e0958e7dd4716abbcc09db6a5a71c', isFlow: '0', data: dataString } }) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); //初始化json数据 dataString = "["; } } } }, 1000);

经过测试,发现bms长度判断并不能完全有效。并发现了一些问题。

问题:

1、打开第三方系统的数据,发现第一行数据有多条重复(换言之就是执行了很多次)

2、第一次打开报表时,会报mcs.getValue is not a function;然后刷新报表,不会报错。

备注:代码可以用notepad++或者Sublim Text打开

FineReport 技安 发布于 2024-7-9 17:54 (编辑于 2024-7-9 17:55)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2024-7-9 18:00

把1000改大点比如10000

  • 技安 技安(提问者) 还是一样报 mcs.getValue is not a function
    2024-07-09 18:03 
  • 0关注人数
  • 96浏览人数
  • 最后回答于:2024-7-9 18:00
    请选择关闭问题的原因
    确定 取消
    返回顶部