深圳oa软件系统

咨询热线400-995-0017

您现在的位置:首页 > 聚焦泛微 > 泛微畅谈 >【泛微成功客户】我与泛微OA系统check框的恩怨情仇(代码篇)

【泛微成功客户】我与泛微OA系统check框的恩怨情仇(代码篇)

来源:泛微华南发布日期2020-05-25 08:41浏览:

编者按:

本篇为明细系列之代码篇作,作者根据其了解和应用过程中,作出的较为完整的说明,较原稿略有删改。若对明细的基本概念还不清楚的,可以结合前面的说明篇一起看。


代码篇目录



第一节:新增明细赋值
第二节:提示性文字
第三节:选项范围
第四节:验证提示
第五节:验证正数
第六节:固定格式赋值
第七节:校验值大小
第八节:验证明细行数量
第九节:check框控制隐藏显示
第十节:check框控制列显示隐藏
以下是明细表说明篇的目录,可点击文章底部【阅读原文】跳转至说明篇。

说明篇目录


第一节:了解明细表
第二节:明细表的控制
第三节:了解新增、删除、以及一些js操作
3.1显示模板
3.2移动模板

明细表代码篇?

**第一节 新增明细赋值**
需求来源:在供应商填写的流程里,有一个明细表是为了记录该供应商相关人员的电话号码。这时候我们需要让申请人记得填上仓库、财务、销售等人的电话,这时候我们可以设置默认行,并给默认行,预设内容。
简化需求:明细表2默认需要有三行,且默认行的字段A需要分别设置“财务”“仓库”“销售”字样。
解决过程
1. 给明细表2,设置 新增默认空明细 为3
2. 插入如下代码块(因为明细表的默认行,是在页面加载过后才加载的,如果需要改变明细行的值,需要延时)。
$(document).ready(function(){
       var _textList = ["财务","仓库","销售"];  //预置条目
       setTimeout(function(){
              for(var i = 0; i < _textList.length; i++){
                     $("#field11981_" + i).val(_textList[i]);
              }
       }, 500);
});


**第二节 提示性文字**
需求来源:明细表中某列是需要填写类似 111-222-333 的编码,不方便给这列的标题设置“编码(例如111-222-333)”。我们会直接给标题设置为“编码”,然后给明细行的这个字段设置提示文字。
简化需求:给明细表2的每行的字段 编码,设置提示文字,文字内容为“请填写编码,编码格式类似111-222-333”。
解决过程
1、取消勾选 新增默认空明细。
2、插入如下代码块。
$("button[id='$addbutton1$']").click(function(){
       var _lastIndex = parseInt($("#indexnum1").val()) - 1;
       $("#field11981_" + _lastIndex).attr("placeholder", "请填写编码,编码格式类似111-222-333");
});


**第三节 选项范围**
需求来源:录入产品编码时,会需要录入上级编码。如果上级编码只涉及,在本明细表中本次录入。我们可以在某行输入上级编码时,将除了本行外的编码放入本字段的选择区中,以便快速选择。
简化需求:当编辑明细表1的某行的上级编码字段,可以选择其他行的本机编码字段的值。
解决过程:插入如下代码块。
$(document).ready(function(){
       var _detailId = 0; //明细表id,明细表1此值为0
       var _inputId = "11985"; //上级编码 id
       var _findId = "11988";  //本机编码 id
       $("#detailDiv_" + _detailId).delegate("input[id^='field" + _inputId + "_']", "focus", function(){
              var _allCount = $("#indexnum" + _detailId).val();      //总行数
              ///创建下拉列表内容
              var _str = "";
              for(var i = 0; i < _allCount; i++){
                     if($("#field" + _findId + "_" + i).length == 0) continue; //元素被删除,则跳过
                     if($("#field" + _findId + "_" + i).val() == "") continue; //无值,也跳过
                     if(this.id == ("field" + _inputId + "_" + i)) continue;    //本行,跳过
                     _str += "";
              }
              var index = this.id.split("_")[1]; //获得序号
              //如果有下拉列表,则直接修改值;否则加入元素
              if($("#field" + _inputId + "_" + index + "List").length == 0)
                     $(this).parent().append("
" + _str + "");
              else $("#field" + _inputId + "_" + index + "List").html(_str);
             
              //将下拉列表和输入框联动
              this.setAttribute("list","field" + _inputId + "_" + index + "List");
       })
});


**第四节 验证提示**
需求来源:录入编码时,编码格式需为6位数字。
简化需求:明细表1的本机编码,值改变时,验证是否符合6位数字,不符合即弹出提示框。
解决过程:插入如下代码块。
$(document).ready(function(){
       $("#detailDiv_0").delegate("input[id^='field11988_']", "change", function(){
              var _b = /^[0-9]{6}$/.test($(this).val());
              if(_b) return;
              else { alert("请输入6位数的内部码"); $(this).val(""); }
       })
});



**第五节 验证正数**
需求来源:财务流程中,各款项应均为正数。
简化需求:提交时,验证明细表2的金额均为正数。
解决过程:插入如下代码块。
$(document).ready(function(){
       checkCustomize = function (){
              var _id = "field11993"; //金额id
              var _num = document.getElementById("indexnum1").value;
              while(_num >= 1){
                     var _ele = $("#"+_id+"_"+(_num-1));
                     if((_ele.length > 0) && (_ele.val() < 0)){
                            alert("提醒:请检查金额,金额需大于0");
                            return false;
                     }
                     _num--;
              }
              return true;
      };
});


**第六节 固定格式赋值**
需求来源:在输入编码的时候,本级编码可能是 编码1-编码2 的格式。
简化需求:让 本级编码 为 编码1-编码2 的格式。
解决过程:其实这个有多种解决方法,js 或者 字段属性。而字段属性更简单一些。给本级编码设置字段属性。
doFieldSQL(" select '$14698$-$14699$' ");



**第七节 校验值大小**
需求来源:办公用品领用流程中,之前节点填写库存数量,而本节点填写领取数量,需限制 <领取数量> 要比 <库存量> 小。
简化需求:修改 领取数量(11993) 值时,验证是否比 库存量(11981) 小。如果不是,则弹出提示。
解决过程:插入如下代码块。
$(document).ready(function(){
       $("#detailDiv_1").delegate("input[id^='field11993_']", "change", function(){
              var _thisValue = this.value;
              var _otherValue = $(this).parents("tr").eq(0).find("input[id^='field11981_']").val();
              if(parseInt(_otherValue) < parseInt(_thisValue)) {
                     alert('请领取数量不能大于库存量!');
                     this.value = "";
              }
       })
});



**第八节 验证明细行数量**
需求来源:团建申请流程,申请人必须填写2个以上活动明细,方可提交。
简化需求:提交时,验证明细表2是否含有两行明细,如果不够,则提示。
解决过程:插入如下代码块。
$(document).ready(function(){
       checkCustomize = function (){
              if($("#detailDiv_1 tr[_target='datarow']").length < 2){
                     alert("请至少填写2个活动!");
                     return false;
              }
              return true;
      };
});



**第九节 check框控制隐藏显示**
需求来源:培训流程,如果确认参加活动(勾选check框),则需要填写感想。
简化需求:申请节点,如果申请人勾选 check(field14700),则展示明细表3,否则隐藏并清空明细表3。
解决过程:
  1. 设置明细表3默认不存在空行。
  2. 插入如下代码块。
var _index = 2;//明细表序号
$(document).ready(function(){
       $("#detailDiv_" + _index).parents("tr").eq(0).hide(); //默认隐藏明细
       document.getElementById("field14700").onchange = function () {
              if($(this).is(":checked"))  hideDetail();
              else                    showDetail();
       };
});
///展示明细,并默认带出一行
function showDetail(){
       $("#detailDiv_" + _index).parents("tr").eq(0).show();//展示明细表
       $("button[id='$addbutton" + _index + "$']").click();//新增一行
}
///清空并隐藏明细表
function hideDetail(){console.log(1);
       document.getElementById("nodesnum" + _index).value = 0;
       document.getElementById("indexnum" + _index).value = 0;
       document.getElementById("submitdtlid" + _index).value = "";
       document.getElementById("deldtlid" + _index).value = "";
       $("#detailDiv_" + _index + " tr[_target='datarow']").remove();
       //隐藏明细表所在行
       $("#detailDiv_" + _index).parents("tr").eq(0).hide();
}




**第十节 check框控制列显示隐藏**
简化需求:如果勾选 check(field14700),则展示明细表3中 <感想> 所在列,否则隐藏。
解决过程:
  
1
给感想所在列设置class controlHide

  
2
插入如下代码块
$(document).ready(function(){
              document.getElementById("field14700").onchange = function () {console.log(1);
                     if(!$(this).is(":checked"))  $(".controlHide").show();
                     else                     $(".controlHide").hide();
              };
});


结语
明细表,
简单又复杂。
只要你有心,
哪怕使用最简单的东西,
也能创造出你想要的复杂的世界。


【本文标签】:泛微OA系统Check框 Check框 OA
【责任编辑】:泛微华南版权所有:http://www.hnweaver.com/ 转载请注明出处

热点新闻/ hot news

快速通道

总部-华南办事处-产品方案-客户案例-客户服务-诚聘英才-网站地图

关闭试用申请

关闭资料下载申请

扫一扫微信添加客服

试用申请

二维码 返回顶部 泛微华南大区二维码