企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
## 业务场景描述 用户会有一些批量操作的情况,比如批量添加、批量删除,这里是批量拆批并打印流程卡 ## 解决思路 先把业务进行分解成几个小的业务,先从功能上分 1、拆批 2、拆批结果进行打印 然后对拆批的数组进行再次拆分,因为数组可能会很大,比如数组个数是200个,就拆成20个一组,分批上传 每个web请求都要等待前一个请求结束,再发起请求 在每次请求完成后,都要出现一个提示,对于用户来说实时反馈信息,相当于没有很久的等待,可以提升用户体验 ## 代码实现 关键点在于使用 async 、await  实现等待 写法一: ~~~ vm.aa = async function () {             let mocode = [“1”,“2”,“3”]; // 批量的数据             var m = 20; // 每次拆批个数             let printData = []; //需要打印的数据 // 循环拆批             for (i = 0; i < mocode.length; i = i + m) {                 let item = mocode.slice(i, i + m); // 获取拆批子数组                 await wipNewService.getLotsList(item).then(function (response) {                     if (response.data.length > 0) {                         printData = printData.concat(response.data);                     }                     app.notify.success("已完成拆批前" + (i + m) + "个工单", "");                 });             } // 拆批结果进行打印             if (printData.length > 0) {                 vm.printLotZG(printData);             } else {                 abp.message.warn("没有可打印的流程卡");             }         } ~~~ 写法二: ``` vm.confirmAllPO = async  function () { // 查看 是否有选中项目 if (vm.kendoGrid.getSelectCount() <= 0) { abp.message.warn(abp.localization.localize("NoSelectedMessage", 'SRMBasic')); return; } // 检查选中项目是否满足条件 var nError = false; var status = vm.kendoGrid.getSelectRow('poStatus'); $.each(status, function (index, value) { if (value.poStatus.toUpperCase() != vm.poStatusSides.Accept.toUpperCase()) { nError = true; return false; } }); if (nError) { abp.message.warn("请选择“供应商接受”状态的采购订单,其他状态不能做确认操作"); return; } // 将选中项目id 取出 放入一个数组 var ids = vm.kendoGrid.getSelectRow('id'); //console.dir(ids); var idArray = []; $.each(ids, function (index, value) { idArray.push(value.id); }); // 遍历id 数组,做请求 for (i = 0; i < idArray.length; i ++ ) { await poService.confirmPurchasePO({ id: idArray[i] }).then(function (result) { app.notify.success(abp.localization.localize('ConfirmSuccessfully', 'SRMPOManage'), result.config.executeDuration); }); } vm.getPurchasePOs(); }; ```