1.我们使用的很多软件都会有批量操作的功能,选中多个复选框,然后点击按钮进行批量操作。如下图所示:

2.绑定click事件,首先需要判断是否选中,是否是结账状态,是否审核,如果都符合那么获得选中的凭证id date num,放入到数组中去

//批量审核
$(".allcheck").on("click",function(){var _child = $(".check_list_table_container").children();var _arr=[];//选中否var _num = 0;//结账否var _flagNum=0;//审核否var _checkNum=0;_child.each(function(){var _checked = $(this).find(".dd").prop("checked");if(_checked){_num = _num+1;var _flag = $(this).attr("flag");if(_flag=="true"){_flagNum+=1;}var _checkN = $(this).find(".operate_left .li_state").html();if(_checkN=="已审核"){_checkNum+=1;}}});//判断至少有一个凭证被选中if(_num<1){alert("请至少选中一个凭证!");return;}//如果已经结账的话则不能进行批审if(_flagNum>0){alert("结账状态不能进行批审操作!");return;}//如果已经审核的话则不能批审if(_checkNum>0){alert("已审核状态不能进行批审操作");return;}//所有的判断之后:进行批审操作_child.each(function(){var _checked = $(this).find(".dd").prop("checked");if(_checked){var _pzid2 = $(this).find(".operate_right").attr("name");var _date = $(this).find(".operate_left").attr("name");var _pzNum = $(this).find(".operate_right").children(":last").attr("name");_arr.push(_pzid2,_date,_pzNum);}});   //调用批审方法checkBtn2(_arr);});

3.批审的方法需要将数组传递过来调用到后台进行处理:

//审核
function checkBtn2($arr){var token = $("#token").val();var AccountID = account_id;//将token保存到凭证表中var linkurl = "../../finance/voucher/voucherlist_updateList.zm?token="+token+"&AccountID="+AccountID;$.ajax({  type:"GET", //请求类型        url:linkurl,//请求路径  dataType:"JSON",//预期服务器返回类型  async:true,        data:{//将一个JavaScript值转换为一个JSON字符串"ids":JSON.stringify($arr)},//如果成功,回调函数  success:function(data){alert("批审成功!");//页面改为相反的审核if(data!=null && data.Status==1 ){for(var k=0;k<$arr.length;k+=3){$("li[name="+$arr[k]+"]").html("已审核");var str="<li class=\"swipes\"><i class=\"iconfont\" οnclick=\"loseBtn('"+$arr[k]+"','"+$arr[k+1]+"','"+$arr[k+2]+"');\"></i>弃审</li>";$("ul[name="+$arr[k]+"]").html(str)}}//把checkbox前的勾去掉$(".table_header .table_check").find("#checkall").prop("checked",false);$(".check_list_table_container").children().find(".dd").prop("checked",false);$(".check_list_table_container .table_form").css("borderColor","#f2f2f2");}});
}

因为数组无法传递到后台,所以需要将数据通过JSON.stringify()方法将数组变为json字符串传递

当审批成功之后将需要显示的内容进行拼接string,找到对应的id.html拼接在页面上显示

4.在后台中将ids中的id遍历保存在list集合中,然后再凭证中和凭证分录中分别update审核人名称。

因为凭证头和凭证分路的修改是同步的,所以使用到事务。

//批量操作——审批通过
public void updateList() {initData();String token = request.getParameter("token");AccountID = request.getParameter("AccountID");//获取ids的JSONArray格式String arr= request.getParameter("ids");JSONArray array = JSONArray.fromObject(arr);//三个为一组,每个的第一个都是id,遍历到list集合中去List<Object> list = new ArrayList<Object>();int i=0;for (Object object : array) {if(i%3==0){list.add(object);}i++;}//获取审核人String checkName = UserwebService.decodeToken(token);JSONObject nameObject = JSONObject.fromObject(checkName);JSONObject resultObject = nameObject.getJSONObject("result");String cName = (String) resultObject.get("TName");//获取凭证分录管理器CPZMgr pzMgr = Global.GetFinance(AccountID).getPZMgr();CPZDefMgr pzdefMgr = Global.GetFinance(AccountID).getPZDefMgr();//遍历保存for(int j=0;j<list.size();j++){//根据凭证头ID获取凭证分录List<CBaseObject> pzList = pzMgr.GetList(" Acct_PZDef_id = '"+list.get(j)+"' ");//循环将审核人名称保存到凭证表中for (CBaseObject cBaseObject : pzList) {CPZ pz= (CPZ)cBaseObject;//审核人从其他接口进行获取pz.setSHR(cName);pzMgr.Update(pz);}//将审核人保存在凭证头中CPZDef pzdef = (CPZDef)pzdefMgr.Find(Util.GetUUID(list.get(j).toString()));pzdef.setSHR(cName);pzdefMgr.Update(pzdef);}JSONObject retJson = new JSONObject();try {DB db = pzMgr.Ctx.getMainDB();db.BeginTransaction();//只要有一个没有保存则取消保存,审核失败if (!pzMgr.Save() || !pzdefMgr.Save()){db.RollbackTransaction();pzMgr.Cancel();pzdefMgr.Cancel();retJson.put("Status", 0);retJson.put("Err", "审核失败!");this.returnAjax(retJson.toString());return;}//否则审核成功,提交事务retJson.put("Status", 1);retJson.put("Err", "审核成功!");db.CommitTransaction();pzMgr.Commit();pzdefMgr.Commit();this.returnAjax(retJson.toString());} catch (SQLException e) {e.printStackTrace();retJson.put("Status", 0);retJson.put("Err", "审核失败!");this.returnAjax(retJson.toString());return;}}

小结:

批量操作虽然比较简单,但也是最常用到的一个功能,一方面是数组的传递,一方面是事务的使用,思路对了,做起来也就自然对了。

进行批量操作-审核或弃审相关推荐

  1. u8销售出库单,存货核算正常单据记账找不到,库存管理弃审提示‘表体已记账’

    财务在操作存货核算时,u8卡住,关闭后重新登录不上.登录界面提示找不到年度数据. 登录数据库服务器,发现mssqlserver服务被停止,查看日志发现有这一条 '由于出现异常 c0000005,SQL ...

  2. AppStore审核被拒:other-other,过审核、不过审的经历

    最新版Other问题,请查看我最近的一片文章 我主要开发小型应用,周期较短,提审较频,使用帐号也多,正常申请的三方购买的都有使用.提审时经常会遇到这样那样的问题,单独说other-other,也曾遇到 ...

  3. 点微同城小程序配置教程及提交审核包过审经验分享

    很多第一次接触点微同城小程序的,都觉得过程太繁琐,其实点微同城的小程序因为不会涉及太多的内容,所以配置相对比较简单. 一:配置篇 1.后台设置.主要填写小程序的APPID.APPSECRET,涉及支付 ...

  4. 变更审核时我们审什么

  5. HTML常见的扩展名,HTML文件通常带有.html或.htm的文件扩展名

    [判断题]读装配图首先要看懂部件的工作原理.装配关系和零件的结构形状. [单选题]以下哪个不是有聚合能力的基团( ) [单选题]鹿戏意守( ),可以引气周营于身,通经络.行血脉.舒展筋骨. [单选题] ...

  6. U8接口开发-五大方式对比与剖析

    U8接口开发有EAI.API.OpenAPI.SQL.CO 五种方式.其中 EAI.API.OPENAPI是官方推荐且对外提供开放的三种方式.主体功能类似,但细节还是有较大区别.每种方式都有其产生的时 ...

  7. 用友U8案例教程库存管理前台操作

    目录 一.采购入库操作 查询到货单 新增采购入库单 查询采购入库单 二.委外出库与入库操作 查询到货单 新增委外入库单 查询委外入库单 三.生产出库与入库操作 生产订单批量领料 产成品入库 四.销售出 ...

  8. PDA+VFP对接用友U8,我以为很难,直通透传实在爽,扔掉笨重的JAVA

    作者:陈冰冰 客户使用U8系统,整 个生产过程是围绕一张生产流转卡进行的,相关的成品入库,成品调拨等环节,用VFP开发程序扫码流转卡进行(需要电脑),但不方便移动,现客户计划用PDA来扫码,通过与加菲 ...

  9. 用友u8采购发票如何取消审核

    流程是应付系统---应付单据审核---过滤---选择日期+已审---选择相应发票---弃审 转载于:https://www.cnblogs.com/awakenedy/p/9132419.html

最新文章

  1. 如何设计一颗40PFLOPS量级的AI芯片?
  2. 最感动的一首现代诗(转)(修正了一点翻译)
  3. 学了python能干啥-python都可以做什么用
  4. 6,bash入门,for 循环, 编写最简单的脚本
  5. WildFly Swarm –将Java EE应用程序部署为独立的Jar
  6. 《软件需求分析(第二版)》第 16 章——需求链中的联系链 重点部分总结
  7. 如何查看docker的内核版本_查看Linux内核版本的方法有几个?你也是这样操作吗?...
  8. 拓端tecdat|r语言ggplot2误差棒图快速指南
  9. Objective-C Runtime那点事儿
  10. 思科CCNP网络工程师 CCIE考试常见问题GRE虚拟专用网络详解
  11. 连接HDMI出现没声音
  12. 【c语言】产生一个1到1000的随机整数,用户进行猜测
  13. 寒假的一点笔记《123速通》
  14. Amendment Quotation function in CLCL Plugin
  15. 2021年【大学生Python学习】社区小博主【孤寒者】的年度总结
  16. 点击扫描仪老提示操作无法完成(0x00000015 )设备未就绪
  17. 移动磁盘显示无法访问设备未就绪,里面的资料如何找到
  18. vue中import引入模块路径中@符号是什么意思
  19. LABVIEW以及各种驱动(VDM/VAS等)的安装教程
  20. bcftools学习笔记(二)

热门文章

  1. tensorflow API:tf.Variable
  2. VGG16详细实现(笨办法)
  3. Linux中的常用shell命令(一)
  4. 2023最新超强随机短视频引流程序源码+吸粉视频打赏自带/UI美观
  5. 人工智能革命:人类会永生还是灭亡(中)
  6. 侠盗飞车罪恶都市加装升级补丁-侠盗猎车手提供下载
  7. OTN光传送网(Optical Transport Network)什么是OTN
  8. 游戏鼠标的dpi测试软件,普通鼠标怎么调dpi_怎么测鼠标dpi-win7之家
  9. C语言输出0-100奇数
  10. C++设计实现日志系统