这里采用钉钉的宜搭来创建,因为普通的钉钉表单不能满足要求
1、首先建立供应商表单,这个是后面需要用到,同时基础数据需要维护好
2、创建付款流程表单
根据自己需要进行表单与子表单字段的添加与删除
同时需要上面有合计,满足批量导入,并且还能输入供应商能获取供应商的相关信息
手机端看到类似这样
3、建立数据源,因为要从供应商表单获取需要的数据
其中请求后需要返回数据
function didFetch(content) { const value = []; const data = content.data.map((item) => { let arr = { suppliercode: item.formData.suppliercode, suppliername: item.formData.suppliername, fullnameofpayee: item.formData.fullnameofpayee, bankofdeposit: item.formData.bankofdeposit, accountnumber: item.formData.accountnumber, paymentmethod: item.formData.paymentmethod, suppliernameenglish: item.formData.suppliernameenglish, } value.push(arr); }) console.log(value); let result = { "data": value, "currentPage": content.currentPage, "totalCount": content.totalCount } return result; // 重要,需返回 content }
4、因为上面的表单根据字段输入的excel文件本身就支持导入,所以可以进行批量的导入,当然供应商的详细数据可以后面进行处理
5、导入后进行供应商的数据填充
相应的代码如下:
/**
* 尊敬的用户,你好:页面 JS 面板是高阶用法,一般不建议普通用户使用,如需使用,请确定你具备研发背景,能够自我排查问题。当然,你也可以咨询身边的技术顾问或者联系宜搭平台的技术支持获得服务(可能收费)。
* 我们可以用 JS 面板来开发一些定制度高功能,比如:调用阿里云接口用来做图像识别、上报用户使用数据(如加载完成打点)等等。
* 你可以点击面板上方的 「使用帮助」了解。
*/ // 当页面渲染完毕后马上调用下面的函数,这个函数是在当前页面 - 设置 - 生命周期 - 页面加载完成时中被关联的。 export function didMount() { console.log(`「页面 JS」:当前页面地址 ${location.href}`); // console.log(`「页面 JS」:当前页面 id 参数为 ${this.state.urlParams.id}`); // 更多 this 相关 API 请参考:https://www.yuque.com/yida/support/ocmxyv#OCEXd // document.title = window.loginUser.userName + ' | 宜搭'; } /** * button onClick */ export function onClick(){ console.log('onClick'); const tabArr = []; const tabobj = {}; const tab = this.$("tableField_ksycvr4a").getValue();//获取子表单内全部数据 for (let i = 0; i < tab.length; i++) { let suppliername = tab[i].suppliername; console.log("suppliername=>", suppliername); let params = { formUuid: "FORM-NY866191N0NY920H11V6O8BEJ7EV2QQTF5M0LQ", searchFieldJson: JSON.stringify({ suppliername: suppliername }) }; let that = this; this.dataSourceMap.getDatas.load(params).then(res => {//调用数据源 console.log("res=>", res); console.log("res.data.length=>", res.data.length); if ((res.code = 200) && (res.data.length == 1)) { console.log("res.data=>", res.data); tab[i].paymentmethod = res.data[0].paymentmethod; tab[i].fullnameofpayee = res.data[0].fullnameofpayee; tab[i].bankofdeposit = res.data[0].bankofdeposit; tab[i].accountnumber = res.data[0].accountnumber; tab[i].suppliernameenglish = res.data[0].suppliernameenglish; console.log("tab[", i, "]=>", tab[i]); this.utils.toast({ title: '获取成功!', type: 'success', size: 'large', }) } else { if (res.data.length > 1) { this.utils.toast({ title: '获取失败,供应商有重复!', type: 'warning', size: 'large', }) } else { this.utils.toast({ title: '获取失败,找不到相应的供应商!', type: 'warning', size: 'large', }) } } }); tabArr.push(tab[i]) //将原始子表单内的数据放入到创建的新数组内 } var that = this; setTimeout(function () { console.log("tabArr=>", tabArr) that.$("tableField_ksycvr4a").setValue(tabArr);//子表单重新赋值 }, 600);
这样就能满足业务需要。