//设置加载结束事件, //基本逻辑:获取单元格数据,拼装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打开 |