var panMain = {};// 存放多个面板集合键为panIndx var panIndex = "0";// 面板索引,作为全局变量 已确定执行哪一个面板 var gridToPanel = true;// 解决grid之后不触发事件 var getBackBool = true;// 解决面板带值之后不触发带出值事件 var getBackElse = false;// 不是回车或tab键也触发 var openTree = true; var musChoies = false;// 是否为多选 var setPanel301 = false;// 值发生改变时 var hasShezhiZiduan = true; var pbId = ""; var hasButton = false;// 是否有通过驳回按钮 var isAddLong = true; var no_load_first = false;//只有加载时触发此事件,表明其为加载时,防止程序未知处把其值改了 var gtss="0"; var panelFormId="0";//当前面板的功能号 var isInspection = false;//是否禁止必录检查。 var seltboo=false; var pandex496="0";//解决496多个面板正在执行的那个面板panIndex var maxCols=[];//默认面板有4列 var select2Options=[];//43控件调用31控件查询值存放的集合 var fileupload_config={}; var qrCode;//单据二维码 var OAButonEvnt=null;//新的OA审核界面用到 fileupload_config.browseOnZoneClick=false; //---------------------------------------- ( function() {// 处理json 待处理 String.prototype.Trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } String.prototype.LTrim = function() { return this.replace(/(^\s*)/g, ""); } String.prototype.RTrim = function() { return this.replace(/(\s*$)/g, ""); } pbjson = { toJson : function(jsonStr, fen) { jsonStr = jsonStr.Trim(); if (jsonStr.indexOf("{") == 0) { jsonStr = jsonStr.substring(1, jsonStr.length - 1); } var vsd = jsonStr.split(fen); var map = {}; var vs = (":").split(":"); for ( var i = 0; i < vsd.length; i++) { vs[0] = vsd[i].substring(0, vsd[i].indexOf(":")); vs[1] = vsd[i].substring(vsd[i].indexOf(":") + 1); if (vs[0].indexOf("\"") == 0 || vs[0].indexOf("'") == 0) { vs[0] = vs[0].substring(1, vs[0].length - 1); } if (vs[1].indexOf("\"") == 0 || vs[1].indexOf("'") == 0) { vs[1] = vs[1].substring(1, vs[1].length - 1); } map[vs[0]] = vs[1]; } return map; } }; pb = { json :pbjson }; sortObj=function (obj) { const keys = Object.keys(obj).sort(function(a, b) { return (obj[a]> obj[b]?1:-1) }) // const keysss = keys.sort(function(a, b) { return (obj[a]> obj[b]?1:-1) }) var newObj = {} for (var i = 0; i < keys.length; i++) { const key = keys[i] newObj[key] = obj[key] } return newObj }; //EasyUI Tabs 标签页/选项卡(496窗体用的多 ,没用 需要删除) getTabs = function(id,falg,isp,creates,num){ } //EasyUI Tabs 标签页/选项卡(496窗体用的多) xin 2019-10-8 15:50:10 Tabs = function(falg,isp){ try{ var only={};//选中集合 $('.istabs').each(function(){//遍历面板上的tabs var evn=this; $(this).tabs({ width:top.tabWidth,//这里获取外层tab的宽度,如果不设置有时候会出现页卡宽度为0。 onSelect:function(title,index){//当用户选择一个标签页面板(tab panel)时触发。 var id= $(this).tabs('getSelected').attr('id');//获取选中的标签页面板; if(only[id]) return; if(id.indexOf('create')!=-1){//页卡里面是格线 eval(id+'("'+js_where[id]+'",falg,iscp)'); } if(id.indexOf('panl')!=-1){//面板 //panIndex=id.split('-')[1];//当前面板索引 } only[id]=true;//已经被选中返回true //页卡里带有下拉菜单按钮 try{ if($('#mb'+id).html().Trim()!=''){ var mb = $(this).tabs('tabs')[index].panel('options').tab.find('a.tabs-inner'); mb.menubutton({ menu:'#mb'+id // iconCls:''//带图标 }).click(function(){//单击 $(evn).tabs('select',index); }); } }catch(e){$.messager.alert('子功能号超链接获取出错:'+e);} } }); }); //这里是为了页卡有格线但是第一次加载一次也没选中到 for(var w in js_where){//格线条件结合 if(only[w]==null){//选中集合里没有格线,js_where里有值。这时候需要加载一个,不加载会导致保存时候grid获取不到数据。 eval(w+'("'+js_where[w]+'",falg,iscp)'); }else{ break; } } }catch(e){ $.messager.alert("操作提示","选项卡加载格线数据出现了错误,尝试重新生成!"+e,"warning"); } } //旧的单据信息 showInfo=function(){ } /** * 复制链接 2018-9-4 17:51:14 xin */ copyLink=function(){ var oInput = document.createElement('input'); oInput.value = top.copyLink[top.tabindex]; document.body.appendChild(oInput);oInput.select(); // 选择对象 document.execCommand("Copy"); // 执行浏览器复制命令 oInput.className = // 'oInput'; oInput.style.display='none'; $.messager.show({ height:60, msg:'
链接复制成功?
', showType:'fade', timeout:2000, style:{} }); } //31控件新的加载方式 xin 2020-9-18 16:45:00 getSelect31=function(id){//id为面板上的控件id var initial = panIndex; for (var p in panMain) {//多面板的情况需要遍历(496窗体) var json = panMain[p].select;//得到有关联的字段集合 if (json[id] != null) { var filed = json[id].split(";"); for (var i = 0; i < filed.length; i++) { panPar.getControlValue(filed[i], 31, filed[i], 0, p); } } } panIndex = initial; } $doc = function(id) { var d = { doc :$('#panIndex' + panIndex).find('#' + id)[0], onPropertyChange : function(v) { let to = ((v == null) ? false : ((v == "value") ? true : false)); if ($.browser != null && !$.browser.msie && to) {// 不是IE浏览器 js赋值也触发函数 pro = $(this.doc).attr("onPropertyChange"); if (typeof pro != "undefined") { eval(pro.replace("event", "null")); } } }, css : function(style, v) { $(this.doc).css(style, v); }, src : function(v){//40控件类型 -xin 2020-6-15 17:19:20 if (v == null) { let value = $(this.doc).data('value'); if (value == null) { value = $(this.doc).val(); } return value || '';//$(this.doc)[0].src; } // if (!v.toLowerCase().startsWith('https:') && !v.toLowerCase().startsWith('http:')) { // $(this.doc).attr('src', '/getImage.do?type=1&uuid=' + v); // } else { // $(this.doc).attr('src', v); // } }, attr : function(attr, v) { $(this.doc).attr(attr, v); this.onPropertyChange(attr); }, disabled:function(v){ if(v==null){ return ($(this.doc).is(":disabled")?1:0); }else{ $(this.doc).prop("disabled",v); } }, html : function(v) { if (v == null) { return $(this.doc).html(); } else { $(this.doc).html(v); } }, val : function(v) { if (v == null) { return $(this.doc).val(); } else { $(this.doc).val(v); this.onPropertyChange("value"); } }, optionsAdd : function(text, value) { if (this.doc.options != null) { this.doc.options.add(new Option(text, value)); } } }; return d; } })(); //--------------------【panPar】 //包含面板信息,与必要函数 var panPar = { getOrder : function(id) {// 得到本来应该的字段,单独为10类型增加 var col_ = id; if(typeof(gridInt)!='undefined'){ if (gridInt != null && gridInt.InitValue != '') { var cols_ = gridInt.InitValue; var cols = cols_.split("&p&"); var c = null;// 当前字段信息 for ( var i = 0; i < cols.length; i++) { c = cols[i].split("#"); if (c[1] != "" && c[1].toLowerCase() == id.toLowerCase()) { col_ = c[0]; gridInt.mastercode += id + ',' + col_ + ':' break; } } } } return col_; }, id :"", value :"", noCopy : function(col) {// 不要复制的字段 col += ";EnterCode;EnterName;EnterDate;ModifyName;ModifyDate;PostName;PostDate;CreateUsercode;CreateUsername";// 添加默认去除的字段 col = col.toLowerCase(); var cols = col.split(";"); for (i = 0; i < cols.length; i++) { // 字段为空需排除,不然报错 if (cols[i] != "" && cols[i] != 'docstatus') { if (getDoc(cols[i], '') != null) { // 添加默认字段的屏蔽措施 setDoc(cols[i], ".value='" + this.panInfo[cols[i]].initValue + "'"); } } var link = getDoc(cols[i] + '_show_link', ''); if (link != null) { var vvv = getDoc(cols[i], '.value'); $('#' + cols[i] + '_Link').html(vvv); $('#' + cols[i] + '_show_link').hide(); $('#' + cols[i] + '_show_type').show(); } } setInvDate(); }, // SQL参数控件,获得动态控件(31类型控件和43类型控件调用) getControlValue : function(field, fieldtype, targetControl, callback, pindex) { url = document.URL; url = url.substring(0, url.lastIndexOf("/") + 1); try{ var params=panPar.getParameter()//获取面板控件所有值 var state=$doc(field).disabled();//当前控件的状态 如:1只读 ,0可编辑 panIndex=pindex;//还原当前控件所在的索引 let fieldName=panMain[panIndex].panInfo[field]!=null?panMain[panIndex].panInfo[field].title:''; // 执行返回31,2类型控件的数据集合 $.ajax({url:url + panMain[panIndex].controlUrl,// 跳转到对应功能号的panelControlxxxxxx.jsp data:{ 'field' :field, 'fieldname':fieldName || '', 'fieldtype' :fieldtype, 'callback' :callback, 'params' :params, 'state':state }, type:"POST", async:false, dataType:'json', success:function(data) { if (data.status == 0) { var cols; var panl; var option=data.info; switch (fieldtype) { case 35: case 31: case 2: field=(fieldtype==35?field+'_35':field); var Evn=$doc(field);//获取控件对象 // 原先的值 2019-4-2 14:50:53 var original=$doc(field+'text').val(); if(original=='' || original==null){ //有值的情况赋值 original=$(Evn.doc).val(); //针对38特殊窗体 xin 2019-11-21 09:38:05 if(original=='' && formType==38){ original=panMain[panIndex].SpecialType[field]; } } Evn.doc.length=0; // 添加一个空值 Evn.optionsAdd('',''); // 下拉控件赋值 xin 2019-5-24 17:55:31 var isEm=false; for(var o=0;o -1){// 针对谷歌浏览器 Evn.doc.blur(); } break; case 43://返回给43控件处理 select2Options=option; break; } //getSelect31(field);//递归,看是否还有和这字段级联的控件 } else if (data.status == 1) { if (data.info != "") { $.messager.alert("操作提示",data.info,"warning"); } } } }); }catch(e){ $.messager.alert("操作提示","获取31控件下拉数据出错!"+e,"warning"); } }, //43控件加载数据-xin 2017-11-2 14:59:44 getSelect2 : function(field, fieldtype, targetControl, callback, pindex,css){ panIndex=pindex;//还原当前控件所在的索引 try{ var Evn=$doc(field);//获取控件对象 //调用31控件查询值 getControlValue(field, fieldtype, targetControl, callback, pindex); //43控件初始化 $(Evn.doc).select2({ placeholder: "---请选择---" , allowClear: true, language: "zh-CN", tags: true,//这个参数的效果应该是,自定义内容选项卡 closeOnSelect: false, multiple:true, containerCssClass: css, //自定义css data:select2Options,// 加载到的数据赋值 minimumResultsForSearch: 3//当下拉数量大于等于10时显示刷选框,设置了multiple=true无效 }).on('select2:open',function(e){//43控件单击事件 //调用31控件查询值 getControlValue(field, fieldtype, targetControl, callback, pindex); // 原先的值 2019-4-2 14:50:53 var original=$(this).select2('val'); $(this).empty();//清空之前的option值 //循环option赋值 for(var i=0;i'+select2Options[i].text+''); } //选中之前的值 $(this).val(original).trigger('change'); }).on("select2:select", function (evt) { var element = evt.params.data.element; var $element = $(element); $element.detach(); $(this).append($element); $(this).trigger("change"); getSelect31(field);//43控件关联31控件 xin 2022-4-1 17:06:04 }).on("select2:unselect", function (evt) { var element = evt.params.data.element; var $element = $(element); $element.remove(); }); //有值的情况赋值 var valt=$doc(field+'text').val(); if(valt=='' && formType==38){ valt = panMain[panIndex].SpecialType[field] != null ? panMain[panIndex].SpecialType[field] : ''; } if(valt!=''){ valt=valt.replace(/,/g,";").split(';'); } $(Evn.doc).val(valt).trigger('change'); }catch(e){ $.messager.alert("操作提示","获取43控件下拉数据出错!"+e,"warning"); } }, // 针对多面板情况进行获取参数值 getParameter : function(){ var item={}; var info=[]; try{ // 循环页面面板 for(var p in panMain ){ panIndex=p; this.panInfo=panMain[p].panInfo;//获取每一个面板控件集合 info.push(this.getPanMap_All()); } // 有相同的属性则略过 if(info.length>1){ for (var i = 0; i < info.length; i++) { for (var k in info[i]) { if (item.hasOwnProperty(k)) { continue; } item[k] = info[i][k]; } } }else{ item=info[0]; } return obj2str(item); }catch(e){ $.messager.alert("操作提示","31控件下拉查询参数出错"+e,"warning"); return; } }, getWhere : function(ben, wai, zi, g, p, id) { var where = this.getOutWhere(ben, wai, zi, ' and ', id, true); var where2 = ""; if (where.indexOf("|") == -1 && openTree) { where2 = this.getOutWhere(g, p, '', ' and ', id, false); } where += where2; return where; }, // 条件(本身,外表,自定义,连接符,是否强制录入) getOutWhere : function(ben, wai, zi, addFuHao, id, qianzhi) { openTree = true; var bens = ben.split(";"); var wais = wai.split(";"); var where = ""; var col = ""; var value = ""; var colDan = ""; for (i = 0; i < bens.length; i++) { col = bens[i].toLowerCase(); if (col.Trim() != "") { value = getDoc(col, ".value"); // 针对 300029 资金帐户 if (value == null) { value = col; } if (qianzhi) { // 强制判断 if (id != col) { if (value != "") { where += wais[i] + " like '" + "@~"+ value + "@~'" + addFuHao;// and } else { $.messager.alert("操作提示", this.panInfo[col].title + "没有录入!","warning"); openTree = false; break; } } else { // by danaus 2017-7-21 替换^ colDan = "@G@" + wais[i] + " like '" + "@~"+ value + "@~'"; } } else { if (id == col && value != "" && value != "pb_xinzen") { // 是当前字段且不为空才操作 colDan = "@G@" + wais[i].toLowerCase() + " like '"+ "@~"+ value + "@~'"; } } } } if (zi.Trim() != "") { where += zi + addFuHao;// 追加自定义条件 } where = where.substring(0, where.length - addFuHao.length); where += colDan; return where; }, //38;238;18;7;19;77窗体进入where条件取值查询 keyWhere : function(boo, cols, colsInDate) { var where = "";//组装语句 var fieldId=null;//字段Id var value = null;//字段值 var fieldType=0;//控件类型 xin 2019-12-9 16:54:53 try{ for ( var i = 0; i < cols.length; i++) { if (cols[i] != "") { fieldId=cols[i]; if(panMain[panIndex]!=null && panMain[panIndex].panInfo[fieldId]!=null){ fieldType=panMain[panIndex].panInfo[fieldId].controltype;//获取类型 } value = doc(fieldId).value.Trim();//获取值 // 43控件获值 if(fieldType==43){ value=$("#"+fieldId).val(); if(value!=null && value!=""){ if(value instanceof Array){ value=value.join(";"); } } } //19窗体xxxDate获值 if (parent.form_type == 19) { if (doc(fieldId + "Date") != null) { value = value.split(" ")[0] + " 00:00:00"; } } where += colsInDate[i] + "='" + value + "' and "; } } }catch(e){ $.messager.alert("操作提示", "字段:"+fieldId+"在获取值进行查询的时候出现了错误。检查页面是否存在这个字段或检查设置是否出现控件位置重叠。","warning"); } return where; }, // 获得sql参数 这个函数应该是为了31,43等类型控件获取动态sql调用的,但好像又不调用这个函数反而调用下面面板的了。 getSqlMap : function() {//获取是496窗体这里获取不到全部面板控件的值 调用getPanMap_All比较好 var value = ""; var item = {}; var inMap = null; var noCol = ""; var panInfo = this.panInfo; for ( var i = 0; i < panMain[panIndex].sqlParam.length; i++) { inMap = panInfo[panMain[panIndex].sqlParam[i]]; switch (parseInt(inMap.controltype)) {// 针对不同类型有不同的货值方法?赋值方法! case 37: value = get37Value(key); // 添加触发空间值 set_37ckChang(key); break; case 34: case 38: value = "******";// 借助这个值不保存 break; case 43: value=$("#"+key).val(); if(value!=null && value!=""){ if(value instanceof Array){ value=value.join(";"); } } break; default: value = getDoc(key, '.value'); break; } if (typeof value == 'undefined') { noCol += key + "," } value = (value != null) ? value.Trim() : null; item[key] = value; // 权限控制是否能修改 xin 2018-12-9 11:23:32 if($('#'+key+'_expr').length>0 && $('#'+key+'_expr').val()=='0'){ delete item[key]; } } if (noCol != "") { $.messager.alert("操作提示", noCol + "这些字段在页面上没有,区分大小写,请检查!","warning"); } return item; }, // 获得面板集合 参数获取面板值都在这里执行 getPanMap_All : function() { var value = ""; var item = {}; var inMap = null; var noCol = ""; var panInfo =this.panInfo; try{ for ( var key in panInfo) { inMap = panInfo[key]; switch (parseInt(inMap.controltype)) {// 针对不同类型有不同的货值方法 case 6://复选框 value=$('#'+key).val(); break; case 37: value = get37Value(key); // 添加触发空间值 set_37ckChang(key); break; case 34: case 38: value = "******";// 借助这个值不保存 break; case 40://图片浏览控件获取值 -xin 2020-6-15 17:25:30 value = $doc(key).src(); break; case 41: continue; case 43: value=$("#"+key).val(); if(value!=null && value!=""){ if(value instanceof Array){ value=value.join(";"); } }else{ value=""; } break; default: //多表的情况 if(panMain[1] != undefined){ value = $doc(key).val();// 根据索引控件来取值 if(value==''){ value = getDoc(key, '.value'); } }else{ value = getDoc(key, '.value'); } break; } if (typeof value == 'undefined') { noCol += key + "," } value = (value != null) ? value.Trim() : null; item[key] = value; //感应字段或特殊字段不需要提交到后台的处理 xin 2021-3-10 09:40:42 this.specialInductionFields(item,key,inMap.datalink); } }catch(e){ $.messager.alert("操作提示", '获得面板集合出现字段获取错误:'+e,"warning"); return; } if (noCol != "") { $.messager.alert("操作提示", noCol + "这些字段在页面上未能发现,检查是否区分大小写或检查是否重叠了控件位置!","warning"); } return item; }, //这个函数对单据类型窗体的一些感应字段或特殊字段不需要提交到后台的处理;xin 2021-3-10 09:28:52 specialInductionFields : function(item,key,datalink){ try { //处理不勾选感应的字段(个别窗体如:22类型 10类型需要排除) // 0表示不需要对该字段进行提交处理 // 1表示需要提交该字段。 if (datalink != null && datalink == 0 && formType != 22 && formType != 10) { delete item[key]; } // 权限控制是否能修改 xin 2018-12-9 11:23:32 if ($('#' + key + '_expr').length > 0 && $('#' + key + '_expr').val() == '0') { delete item[key]; } //是单据类型窗体进入(特殊字段处理)xin 2021-3-10 10:00:26 if (';5;8;16;496;'.indexOf(';' + formType + ';') != -1) { key = key.toLowerCase();//转小写 switch (key) { case 'qrcode' ://特殊字段,如果还有其他字段则在这个下面添加 // case 'xxx' : delete item[key]; break; default: break; } } } catch (e) { $.messager.alert("操作提示", key + "字段进行感应过滤时出现问题。", "warning"); } }, getBack : function(e, id) { if (getBackBool) { var pi = this.panInfo[id]; var biao = pi.ft; var col = id; var waiziduan = pi.fk; var benziduan = pi.seekgroupid.toLowerCase(); var tjz = pi.spremissfield; var tjw = pi.dpremissfield; var tjd = pi.efilter; var event = $.event.fix(e); var v_ = getDoc(col, '.value'); if (this.id != id || this.value != v_ || event.keyCode ==13 ) { this.id = id; this.value = v_; if ((";8;".indexOf(";" + event.keyCode + ";") == -1)) {// 不是退格键 if ((getBackElse && v_ != "") || (";13;9;".indexOf(";" + event.keyCode + ";") != -1)) {// 是三点弹出,非MASTERCODE只有这两种情况触发 var tiaojian = this.getWhere(tjz, tjw, tjd, benziduan, waiziduan, col); var url = "/inv.do?id=" + biao + "&where=" + replacePageValue(tiaojian) + "&sel=" + waiziduan + "&get=" + benziduan; // 添加event.keyCode==13是为了防止三点弹出进入两次页卡。-2017-4-26 -xin if (openTree && event.keyCode ==13) { url = encodeURI(encodeURI(url));// 必须两次 $.post(url, '', function(date) { getBackElse = false; callBack(col, date); }); } } } getBackElse = false; } } }, getBackAll : function(e, id) { if (getBackBool) { var pi = this.panInfo[id]; var biao = pi.ft; var col = id; var waiziduan = pi.fk; var benziduan = pi.seekgroupid; var tjz = pi.spremissfield; var tjw = pi.dpremissfield; var tjd = pi.efilter; var event = $.event.fix(e); var v_ = getDoc(col, '.value'); if (this.id != id || this.value != v_) { this.id = id; this.value = v_; if ((";8;".indexOf(";" + event.keyCode + ";") == -1)) {// 不是退格键 if ((getBackElse && v_ != "") || (";13;9;".indexOf(";" + event.keyCode + ";") != -1)) {// 是MASTERCODE可以让其多出一种方式带出值 var tiaojian = this.getWhere(tjz, tjw, tjd, benziduan, waiziduan, col); var url = "/invAll.do?id=" + biao + "&where=" + replacePageValue(tiaojian); if (openTree) { url = encodeURI(encodeURI(url));// 必须两次 $.post(url, '', function(date) { getBackElse = false; callBack(col, date,waiziduan,benziduan); if(panMain[panIndex].formtypeOne==10 && event.keyCode ==13){//针对10窗体个别操作不保存 xin 2020-10-13 14:38:01 panMain[panIndex].isChange=0; } if(event.keyCode ==13){ getSelect31(id); } }); } } } getBackElse = false; } } }, // 非加载才进入//,colStr,guanColStr ////每一个控件的onChang事件进入 set_upSub : function(op) { var pi = this.panInfo[op]; if(pi==undefined){ pi=panMain[gtss].panInfo[op]; } shx=true; top.myFresh.panel[top.tabindex+'-t']=true;// 页卡关闭获取面板是否有内容改变。 var xinzen_v = $doc(op).val(); if (xinzen_v == "pb_xinzen") {// 为下拉控件的<<新增>>处理 (2控件或31控件) if (pi.ft < 0) { parent.addTab("", 9815, 10, "wherePan=dictid=" + pi.ft); } else { this.windowOpen(pi, true);// 三点回带值 } } else {// if (no_load_first) { this.isChange = 1;// 分为两个面板,可有是在另个面板赋值给第个面板(已经加载完) 则会触发 // 要不让起触发 var value = ""; var pi = this.panInfo[op]; if(pi==undefined){ pi=panMain[gtss].panInfo[op]; } var guanCol = ""; if(pi!=undefined){ guanCol= pi.emptyrefdata.toLowerCase(); if(pi.controltype==31){//31类型特殊处理。 value=$doc(op).val(); $doc(op+'text').val(value); } if(pi.controltype==2){//处理2类型关联字段问题 xin 2021-4-19 15:52:10 if (this.select[op]!=null){//有关联字段 getSelect31(op); } } } var szc = null; // 后添加与表格的处理 var hasB = null; value = getDoc(op, ".value"); if (this.formtypeOne == 1) { setPanel301 = true; } if (setPanel301 && gridToPanel) { var st = []; var val = []; st.push(op); val.push(value); if (Grids.length > 0) { mygrid.recalPanel301(st, val); } setPanel301 = false; } if (guanCol != "") { if (guanCol.indexOf('|') != -1) {// 后加 hasB = guanCol.split('|'); if (hasB[0] == 'recalcuitem' && gridToPanel) { // mygrid.recalcuitem(cols[i],value);//改变时调用 } szc = hasB[1].split(";"); // 多加判断 } else { if (guanCol == 'recalcuitem#' && gridToPanel) {// #号是特别加 // 的,以此判断页面是否有这个变量 // mygrid.recalcuitem(cols[i],value);//改变时调用 szc = "".split(";"); } else { szc = guanCol.split(";"); } } if (value == "") { for ( var j = 0; j < szc.length; j++) { if (szc[j].indexOf("#") == -1) {// 是3类型控件才执行 no_load_first = false;// 不要让底下赋值再进入此方法,避免死循环 if(formType != 496)// 这条件是如果496的其他页卡文本框填写信息后,光标离开导致主面板42类型控件的信息清空。 setDoc(szc[j], ".value=''");// 解决三点弹出清空关联 } else { $.messager.alert("操作提示", cols[i] + "字段的清空关联字段" + szc[j] .substring(0, szc[j].length - 1) + "在页面上没有!","warning"); } } no_load_first = true;// 但还是还原,以被后面程序使用 } } } } }, // 设置只读,加载用 set_read_load : function(readList, docstatePan, isnew, db, info) { // reads拆分0:【0不是只读;pb#用docstatus控制是否可编辑|多值用分号(;)隔开;pb#字段Id;pb#是否设置了按钮;pb#控件类型 // 】 // redds拆分1:【1是只读;pb#字段Id;pb#控件类型】 // redds拆分2:【2是OA审核按钮;pb#有按钮的字段Id;pb#buttonID按钮的Id;pb#OA审核按钮设置用docstatus控制是否可显示|多值用分号(;)隔开】 // var readList = reads;//reads.split(";fen#"); var readIs = null; var buttonHid = false;// 按钮隐藏 var pan = false; var buttonId = ""; var oacopy=""; var getBool = no_load_first; no_load_first = false;// 只有加载时触发此事件,表明其为加载时,防止程序未知处把其值改了 var filedIs = null; var bzc = true; var sto = true;// 检查用到 //如果是496类型的话,docstatePan有可能在子表的时候获取不到值,导致状态值不对,所以在这样获取主表里的docstaePan值 xin 2021-12-20 10:22:33 docstatePan=getDoc("docstatus",".value");// 获取单据的单据状态 docstatePan=(docstatePan==""?0:docstatePan); if (readList != null && readList.length > 0) { for ( var i = 0; i < readList.length; i++) { sto = true; if (readList[i] != "") { readIs = readList[i];// .split(";pb#"); // readIs[0]:0不是只读 ,1是只读,2有OA审核按钮设置 switch (parseInt(readIs[0])) { case 0: if (this.formtypeOne != 1) { if (getDoc(readIs[2] + '_expr', '') != null && getDoc(readIs[2] + '_expr', '.value') != ""// 少了==1会导致9902设置权限得不到控制。 && (panMain[panIndex].bolCopy !=1 ||(getDoc(readIs[2] + '_expr', '.value') == 0))) {// panMain[panIndex].bolCopy检查是否是复单,是就不进入。 sto = false; } if (getDoc(readIs[2] + '_expr', '') != null && getDoc(readIs[2] + '_expr', '.value') != "" && getDoc(readIs[2] + '_expr', '.value') == 2) { break; } if (sto) { this.setRead(readIs[1], docstatePan, isnew, readIs[2], readIs[3], 'curchecker', db, parseInt(readIs[4])); }else{ // if(getDoc(readIs[2] + '_expr', // '.value') != 1){ this.setReadOnly(readIs[2],parseInt(readIs[4]));// readIs[3] // setDoc(readIs[2], // ".disabled=disabled");// 不能进行操作 // } } if(getDoc(readIs[2] + '_css', '') != null && getDoc(readIs[2] + '_css', '.value') != ""){// css样式 var css=getDoc(readIs[2],".style");// 控件样式 var cssz=""; for(var r=0;r 0) { for ( var j = 0; j < info.length; j++) { if (info[j].filed == filedIs) {// 查看此按钮的设置 bzc = (info[j].value == "1") ? true : false; if (info[j].value == "1") {//这里判断把,放在下面bzc判断有问题。xin 2021-11-20 11:19:03 //显示审核按钮 xin 2021-10-21 17:23:17 $(".OAVerify").css("display", "inline-block"); } break; } } } if (bzc) { // pan = this.zhuYi(filedIs, readIs[3], // docstatePan, // 'curchecked', db); } else { bzc = true; pan = true;// 则为隐藏 setDoc(filedIs, ".style.display='none'"); } if (buttonId == readIs[1]) {// 第一个判断按钮是不会进入的 buttonHid = buttonHid ? pan : false;// 当有一个按钮显示,则控件为原长 } else { set_buttonHid(buttonHid, buttonId);// 进入这为第二个控件按钮了 buttonId = readIs[1]; buttonHid = pan;// 这总为是控件的第一个按钮 } // 处理不是审核人 这个id还是显示的是可编辑状态 // 。不是审核人,有OA审核的控件应该是只读状态 if(!isNaN(readIs[2])){ if(readIs[1]!=oacopy){ // 查找面板在这个id里面是否有审核按钮ID没有说明这个id在这个账号没权限编辑 只能是只读状态 if(doc(readIs[2]) == null){ setDoc(readIs[1], ".readOnly =true");// 设置为只读 setDoc(readIs[1], ".style.backgroundColor ='#CCC'"); }else{ setDoc(readIs[1], ".readOnly =false"); setDoc(readIs[1], ".style.backgroundColor ='#FFFFFF'"); oacopy=readIs[1]; //审核按钮过长情况,设置控件宽度 var widthId=$("#"+readIs[1]).width(); if(widthId!=null && widthId>0){ $("#"+readIs[1]).width(widthId/2+200); } } } } break; } } } set_buttonHid(buttonHid, buttonId);// 按钮全隐藏的 // 这可能是最后一个有按钮的控件没有判断到 } //31控件新的加载方式 xin 2020-9-18 16:45:00 try{ var panc = panMain[panIndex].panInfo; if (panc != undefined) { for (var k in panc) {//遍历每一个控件是否关联有下拉需要到的替换值 //if(panc[k].controltype==31 || panc[k].controltype==2){ var v = $doc(k).val(); if (v != null) { getSelect31(k); } //} } } }catch(e){} if(top.myFresh!=null){ top.myFresh.panel[top.tabindex+'-t']=false;// 页卡关闭获取面板是否有内容改变。 } no_load_first = getBool;// 当然事情完了,还是还原其本来值 }, hasIn : function(str, strs) { var strti; for ( var j = 0; j < strs.length; j++) { strti = strs[j].toLowerCase().Trim();// alert(strti+"----"+usercode); if (strti != "" && strti == str) { return true; } } return false; }, zhuYi : function(id, statepan, docstatePan, idpan, usercode) {// ,NeedRelease,CurChecked,CurChecker var states = statepan.split(";"); var may = true; var mayHas = this.isHasTo(idpan, usercode, false);// 是否检查过 var curHas = false;// 是否是检查人 if (getDoc('curchecker', '.value') == "all") { curHas = true; } else { // curHas = this.isHasTo('curchecker', usercode, false);// // 是否是检查人 注释时间:2014-6-12 10:13:03 } for ( var i = 0; i < states.length; i++) {// isNewOpen参数已经没有作用,程序未改动(保留) if (states[i] != "" && docstatePan == parseInt(states[i])) {// 符合一个状态就进入 var isZhu = (getDoc('needrelease', "") == null || getDoc( 'needrelease', ".value") == "1") ? true : false; var cured = (getDoc('curchecked', "") == null) ? "" : getDoc( 'curchecked', ".value"); var cur = (getDoc('curchecker', "") == null) ? "" : getDoc( 'curchecker', ".value"); if (isZhu && curHas) {// 如果是逐一审核,并且是检查人 var shenS = cur.split(','); for ( var i = 0; i < shenS.length; i++) { if (cured.indexOf(shenS[i]) == -1) {// 需审核人在已审核人中不存在则未全部审核 may = false;// 返回假停留,显示按钮 // setDoc(id,".style.display = 'block'");// break; } } } else {// 不是逐一审核默认就可以吧 // 后加让当前状态,属于可以检查的人时的按钮显示 if (curHas) {// 是检查人 may = false; // setDoc(id,".style.display = 'block'");// } } break;// 有一个符合就可了,不跳出可能又把它隐藏了 } } if (id != '') { if (may) {// 不符合还是把它隐藏 setDoc(id, ".style.display = 'none'");// } else { setDoc(id, ".style.display = 'block'"); } } else { if (statepan == "") { may = false; } } return may; }, // 1,登陆人状态2为控件状态3是否新单4是否有按钮 setRead : function(statepan, docstatePan, isNewOpen, id, hasbutton, idpan, usercode, type) {// 判断按钮以及是否可以输入状态(301101) hasButton = hasbutton; var states = statepan.split(";"); var may = false;// false就执行匹配 if (getDoc('curchecker', '.value') == "all") { may = true; } else { may = this.isHasTo(idpan, usercode, false);//审核填写审核信息。 } // var creater = this.isHasTo('createusercode', usercode, false); // false就执行匹配 //注释掉是因为已经没了那个字段。 for ( var i = 0; i < states.length; i++) {// isNewOpen参数已经没有作用,程序未改动(保留) if (docstatePan == states[i]) { this.setNotReadOnly(id, type);// 不为只读 setDoc(id, ".disabled =false");// 没有被设置就启用 if (docstatePan != 0 && !may) {// 这等于已经还原按钮之后,看看当前人是否为可以使用按钮 seltboo=true;// 修改权限 2015-5-19 18:05:41 --- xin this.setReadOnly(id, type);// 这中无审核权力的也为只读 if (doc('tpSave') != null) { doc('tpSave').style.display = 'none';// 保存按钮隐藏 } } break; } else { this.setReadOnly(id, type); // 设置只读,里面包含控制按钮 } } if (docstatePan < 0) {// 驳回时,隐藏保存按钮 if (document.getElementById('tpSave') != null) { document.getElementById('tpSave').style.display = 'none';// 保存按钮隐藏 } } hasButton = false;// 还原,这样写这是为在生成静态页面避免传太多参数 },// id 与控件类型 只读 setReadOnly : function(id, type) {// 添加一个在生成静态页面时的只读,(很多在生成页面考虑不完全,直接到js中添加吧) this.setReadOK(id, type, true) },// id 与控件类型 反过来设置为不为只读 setNotReadOnly : function(id, type) {// 添加一个在生成静态页面时的只读,(很多在生成页面考虑不完全,直接到js中添加吧) this.setReadOK(id, type, false) }, checkDocStatus : function(id,boo,type) { if(formType&&(formType==5||formType==9 ||formType==15||formType==8 ||formType==496||formType==497 ||formType==16||formType==17)){ docstatePan=getDoc("docstatus",".value");// 获取单据的单据状态 var stats = panMain[panIndex].picState[id]; if(stats) { var temp=stats.split("pb#"); if ((";" + temp[1] + ";").indexOf(";" + docstatePan + ";") > -1) boo = false; else boo = true; } } if(boo){ try{ fileupload_config.browseOnZoneClick=false; // true为只读状态 }catch(e){alert(e);} $("#"+id).attr("data-readonly",boo);//是否只读 } if(type==19){ var container = $("#"+id + "_dynamic"); // 隐藏上传浏览框 var uploadDiv = container.find(".file-caption-main"); if (uploadDiv != null && uploadDiv != undefined){ uploadDiv.hide(); } } return boo; }, setReadOK : function(id, type, boo) { // 后加把 *****显示的变只读 // boo = (getDoc(id, '.value') == "******") ? true : // boo;//如果值就是******的话这写法不成立。 xin 2019-5-25 14:30:54 switch (parseInt(type)) { case 6:// 复选框 this.setNotReadOnly(id + "CheckBox", ""); setDoc(id + "CheckBox", ".disabled =" + boo);// 没办法只能用这个了 break; case 2:// 下拉 case 31:// 下拉 var setl=getDoc(id, '.readOnly'); if(typeof setl =='undefined'){ // 修改权限 2015-5-19 // 18:05:41 --- // xin if(boo && !seltboo){setDoc(id, ".disabled =true"); }else{setDoc(id, ".disabled =false");seltboo=false; } }else{ setDoc(id, ".disabled =" + boo); } break; case 3:// 三点弹出 setDoc(id + "Tree", ".value = " + (boo ? "0" : "1")); break; case 5:// 日期控件 setDoc(id + "Date", ".value = " + (boo ? "0" : "1")); break; case 7:// 多文本控件 setDoc(id + "Text", ".value = " + (boo ? "0" : "1")); break; case 9:// 图片类型 seltboo=this.checkDocStatus(id,boo,9); break; case 19:// 上传附件 seltboo=this.checkDocStatus(id,boo,19); break; case 30:// 多选复选框 setDoc(id + "Span", ".disabled = " + boo); checkboxDisabled(id,boo); break; case 32:// 单选按钮组 var radios = document.getElementsByName(id + 'Radio'); for ( var i = 0; i < radios.length; i++) { setDoc(radios[i].id, ".disabled = " + boo); } break; case 35:// 下拉加可输入 setDoc(id + "_35", ".disabled = " + boo); break; case 37:// 富文本 setDoc(id + "_spanHid2", ".style.display=" + boo ? "'none'" : "'block'"); // setHidOrNot(id+'_hid',id+'_spanHid'); break; case 42:// setDoc(id, ".disabled = " + boo); break; case 43:// $(".js-"+id).prop("disabled", boo); break; default: break; } if(getDoc(id, '.style.backgroundColor')==""){ setDoc(id, ".style.backgroundColor =" + (boo ? "'#CCC'" : "'#FFFFFF'")); // 设置背景色 } setDoc(id, ".style.color ='#000000'");// 设置字体颜色 setDoc(id, ".readOnly = " + boo);// 设置为只读 if(seltboo){ setDoc(id, ".readOnly =false");// 设置为只读 特殊 前人是否为可以使用按钮2015-5-20 // 10:50:26 --xin setDoc(id, ".style.backgroundColor ='#FFFFFF'"); seltboo=false; } if (boo) { setDoc(id+"_click",".style.display='none'");// 设置控件只读的时候右边图标隐藏 var link = getDoc(id + '_show_link', ''); if (link != null) { var vvv = getDoc(id, '.value'); if (vvv != "") { $doc(id + '_Link').html(vvv); $('#' + id + '_show_link').show(); $('#' + id + '_show_type').hide(); } } }else{ setDoc(id+"_click",".style.display='inline'");// 复单的时候右边图标显示 } },// 设置读者域:1.读者域(按个人)2.读者域(按角色)3.读者域(按组织架构)4.登录usercode isReadTo : function(ReaderUsercodes, ReaderRoles, ReaderOrganizations) { if (isNew != 1 && ";" == panMain[panIndex].upDoc && ";" == panMain[panIndex].nextDoc) {// 不为新开单,且无数据为无权限 // closeme("抱歉您没有权限查看该单据!"); return; } var mayOpen = false; // 检查注释时间 2014-7-4 10:37:46 mayOpen = this.isHasTo('readerusercodes', ReaderUsercodes, mayOpen); // 注释时间 2014-7-4 10:37:46 mayOpen = this.isHasTo('readerroles', ReaderRoles, mayOpen); // 检查注释时间 2014-7-4 10:37:46 mayOpen = this.isHasTo('readerorganizations', ReaderOrganizations,mayOpen); if (hasShezhiZiduan) { var reUsercode = getDoc('readerusercodes', ".value"); var reRol = getDoc('readerroles', ".value"); var regan = getDoc('readerorganizations', ".value"); if (reUsercode == "" && reRol == "" && regan == "") { mayOpen = true; } } else {// 无权限设置字段默认也可看此文档 mayOpen = true; } if (isSuperUser!=null){//超级管理员 mayOpen = (isSuperUser=='1'?true:mayOpen); } if (!mayOpen) {// 没有权限看的人直接关闭当前页面,不再提示 hasShezhiZiduan = true; Close = true;// 让页面可以直接关闭 document.getElementById("scroller").style.display="none";// 隐藏 $.messager.alert('提示','你没有权限查看!','info',function(){ // 返回 top.$('#home-tabs').tabs('close',top.tabindex); }); $(".panel-tool-close").css("display","none"); } return mayOpen; }, //加载初始值 新单进入 setDefaultAll : function() { var info =panMain[panIndex].panInfo;//this.panInfo;注释:多表情况 var hcol = this.html_Col;//复单后字段 var colid = null; var type = null; var initv = ""; var dat=[]; var typ=[]; var t=0; var d=0; let format=""; for ( var i = 0; i < hcol.length; i++) { colid = hcol[i].fileid; type = info[colid].controltype; if (info[colid].initValue != "") { initv = info[colid].initValue; } format = info[colid].format; format = format == null ? "" : format; if(initv.indexOf("!")!=-1){ dat[t]=colid; typ[t]=type; t++; // by danaus 2018-4-22 修改提交方式,适应新tomcat $.ajax({ url:"/gtGrid.do", type:"post", async:false, data:"m=heand&_pop_json={"+"'parm':\"" + encodeText(initv.replace(/\\/g,"").replace("!",""))+"\"}" + "&controltype="+type+"&format="+format, dataType:'text', success :function(data){ if (data.indexOf("error")!=-1 ) { $.messager.alert("操作提示", data,"warning"); } else { if(data==null){data="";} if($doc(colid).val()==''){//解决18窗体传31控件值过来,被有!号的初始值替换了的问题。xin 2020-3-11 14:52:31 setDoc(dat[d], ".value='" + data + "'"); } if(parseInt(typ[d])==31 || parseInt(typ[d])==2){ if($("#"+colid).find("option:selected").val()==undefined){ setDoc(dat[d], ".value='" + data + "'"); } } if(type==43){ $("#"+dat[d]).val(eval('('+data+')')).trigger('change'); panMain[panIndex].panInfo[colid].initValue=eval('('+data+')'); } setLoadEven(dat[d], parseInt(typ[d])); d++; } }}); }else{ switch(parseInt(type)) { case 2: case 31: if (getDoc(colid, ".length") == 0) { setDoc(colid, ".length=0"); $doc(colid).optionsAdd(initv,initv); } if (getDoc(colid, ".value") == "") { select_toValue(initv, colid) setLoadEven(colid, parseInt(type)); } if($doc(colid+'text').val()==''){//多表 $doc(colid+'text').val(initv); } break; case 41: if($doc(colid).html()==''){ $doc(colid).html(initv); } break; case 43: if($doc(colid+'text').val()==''){ $doc(colid + 'text').val(initv); if (initv != null && initv != "") { try { let value = ""; if (initv.indexOf(";") != -1) { value = initv.split(";"); } else { value = eval('(' + initv + ')'); } $("#" + colid).val(value).trigger('change');//43控件初始值的赋值 xin 2021-10-19 11:40:30 } catch (e) { break; } } } break; default: if(panMain[1] != undefined){//多表 if($doc(colid).val()==''){ $doc(colid).val(initv); setLoadEven(colid, parseInt(type)); } }else{ if (getDoc(colid, ".value") == "") { setDoc(colid, ".value='" + initv + "'"); setLoadEven(colid, parseInt(type)); } } break; } } initv='';//清空 } }, htmlGet : function(id) { var valCol = null; var hc = this.html_Col; if (hc != "") { var col = null; for ( var i = 0; i < hc.length; i++) { col = hc[i].fileid; if (id == col) { if (doc(col) != null) { valCol = doc(col).value; } break; } } } return valCol; }, panInfoSet : function(c, vS, boo) { var p = this.panInfo; if (c != "") { var valueS = vS; if (boo) { valueS = vS.split(";pb#"); } var v_ = ""; var col = ""; var type = null; var colCom = null; for ( var i = 0; i < c.length; i++) { col = c[i].fileid; type = p[col].controltype if (boo) { v_ = valueS[i]; } else { v_ = valueS[col].toString(); } v_ = v_.replace(/'+/g, "\\'").Trim(); if ((type == "2" || type == "31") && getDoc(col, ".length") == 0) { setDoc(col, ".length=0"); $doc(col).optionsAdd(v_, v_); } setDoc(col, ".value='" + v_ + "'"); setLoadEven(col, type); } } }, windowLink : function(id) { id = id.toLowerCase(); var pm =this.panInfo[id]; if(pm==undefined){ // 循环p是针对选项卡嵌套多个面板里面的值。 for(var p=1;p<7;p++){ pm=panMain[p].panInfo[id]; if(pm!=undefined){break; } } } var bh = pm.hyperlinkft; var bx = pm.hyperlinkftformtype; var bb = pm.hyperlinkspremissfield.split(';'); var wb = pm.hyperlinkdpremissfield.split(';'); var linkmode=pm.Hyperlinkmode;//操作模式 var isAutoRefresh=pm.isAutoRefresh;//执行后刷新 var zd = pm.hyperlinkefilter; var paUs = parent.document.URL.split("/"); // by danaus 2016-3-29 if(bh==""||bh==undefined){$.messager.alert("操作提示", "9802的超链接|外表功能号不能为空","warning");return;}; bh = isNaN(bh) ? getDoc(bh.toLowerCase(), '.value') : bh; bx = isNaN(bx) ? getDoc(bx.toLowerCase(), '.value') : bx; var no1=new Array(); // by danaus 2019-7-4,解决bb[n].toLowerCase()不是字段名,而是值的情况 for(var n=0;n 0) { no1[n] = getDoc(bb[n].toLowerCase(), '.value'); } else {// 不存在表示传原值 no1[n] = bb[n].toLowerCase(); } }catch (e) { no1[n] = bb[n].toLowerCase(); } } if(linkmode==1){//直接执行 $.post('/execProc.do',{'formid':bh,'param':no1.join(';'),'disableDuplicateSubmitUUID':systemUuid.uuid },function(data){ if(data == null || data == ""){ $.messager.show({ title: '提示', msg: '
执行完毕!
', showType: 'fade', timeout: 1000, style: { right: '', bottom: '' } }); }else{ var t=JSON.parse(data); $.messager.alert("操作提示", t.msg,"warning"); return; } if(isAutoRefresh){ setTimeout(function(){location.reload();}, 3000);//三秒后自动刷新 } }) return; } if(wb!=""){ var wh_ = "wherePan=" + wb[0] + "='" + no1[0] + "' and " + (wb[1]!=null?wb[1]:wb[0]) + "='" + (no1[1]!=null?no1[1]:no1[0]) + "'"; } if(zd!=""){ wh_+=" and ("+zd+")"; } if(linkmode==3){//弹出执行界面 var url = "/app" + spellPath + bh + "/" + bx + "/index.jsp?"+encodeURL(wh_); showLayerGrid(url,null); return; } //跳转页面 // by danaus 2016-3-29 if(bh==""||bh==null||bh==undefined){$.messager.alert("操作提示", "页面找不到"+pm.hyperlinkft+",请查看它所在9802中的[加载到页面]选项是否已选上","warning");return;}; parent.formNum(getDoc(bb[0].toLowerCase(),'.value')); parent.addTab("", bh, bx, wh_); }, // 3类型弹出框 windowOpen : function(obj, showBoo,onlyOne) { var pi = null; var id = ""; shx=true; top.myFresh.panel[top.tabindex+'-t']=true;// 页卡关闭获取面板是否有内容改变。 var flag = checkSession();// session失效后弹出登录框,flag为true时表示已经失效 if(flag){ return; } if(typeof obj =='string'){ var flcode=$('#'+obj).data('flcode'); var flag=$('#'+obj).data('flag'); // 是否有会计科目设置 if(flcode!=undefined && flag!=undefined){ var code=$('#'+flcode).val(); if(code==undefined || code == ''){ $.messager.alert("操作提示", panMain[panIndex].panInfo[flcode].title+",不能为空!","warning"); return false; } $.post('/gtGrid.do?m=gl',{'_pop_json':JSON.stringify({'parm':code,'flag':flag})},function(data){ if(data!=undefined && data!=''){ var st=data.split(","); var sf=""; if(st[3]!=""&&st[3]!="null" && st[2]!=""&&st[2]!="null"){ var fk=st[2].split(";"); var sd=st[3].split(";"); for(var i=0;i 1) ? true : false; // 解决多面板如496多个分页存在相同input标签ID的控件 if(panMain[1]!=undefined){//表示多表情况 value = $doc(col[0]).val();// 根据索引控件来取值 }else{ value = getDoc(col[0], '.value'); } if(this.panInfo[col[0]]!=null ){ var type = this.panInfo[col[0]].controltype;//控件类型 if (type == 37) { value = get37Value(col[0]); } if (value == "") { if (type == 43) { value = ($("#" + col[0]).val() == null || $("#" + col[0]).val() == "") ? "" : (($("#" + col[0]).val() instanceof Array) ? $("#" + col[0]).val().join(";") : $("#" + col[0]).val());// 43控件集合 } } } if ((value == "" || value == "null" || value == null || value=="pb_xinzen")) { // 在编辑状态下必录 if ((hasSta && isHasValue(col[1], "" + statu + "", ";")) || !hasSta) { try{ layer.msg(this.panInfo[col[0]].title +'--不能为空!'); }catch (e) { $.messager.alert(this.panInfo[col[0]].title +'--不能为空!'); } // try{ // $.messager.show({ // height:50, // msg:'
'+this.panInfo[col[0]].title +'--不能为空!
', // showType:'fade', // timeout:2000, // style:{} // }); // }catch(e){ // $.messager.alert('设置了'+col[0]+'必录,但是没有在panInfo(设置加载到页面)里找到'+col[0]); // } return false; } } } } } } return true; }, upImage : function(id, el) { // 图片控件处理 var url = ""; var th = id + "_UpImage"; if(el==3){ var bol=window.confirm("是否真的删除?"); if(!bol){return;} } switch (el) { case 1: url = "/general/picupload.jsp"; break; case 2: url = "/general/picupdate.jsp"; break; case 3: url = "/picDelete.do"; break; case 4: url = "/general/picshow.jsp"; break; } var open = true; var formid = getDoc('formid', '.value'); if (formid == "" || formid==null) { formid = getDoc('formIdHid', '.value'); } if(pandex496 !=0){ if(isNaN(pandex496)){ pandex496=0; } var bolpan=false; for(var p in panMain ){ if(bolpan)break; for(var c in panMain[p].html_Col ){ bolpan=panMain[p].html_Col[c].fileid==id; pandex496=(bolpan?p:pandex496); if(bolpan)break; } } formid = panMain[pandex496].tableIs.split(";")[0]; } var doccode = getDoc('doccode', '.value'); var entercode = getDoc('entercode', '.value'); var usercode = getDoc('createusercode', '.value'); var rowId=getDoc('rowid', '.value'); rowId=((el==4||el==2)?getDoc(id, '.value'):rowId);// 4类型的页面是查看大图片。只需要对应id值 // 不需要rowid. var code = entercode; if (code == "") code = usercode; var bens =""; try{ bens= this.panInfo[id].seekgroupid.split(";"); }catch(e){ if(pandex496!=0){// 496特殊有多个面板 pandex496为当前执行的面板 try{ bens=panMain[pandex496].panInfo[id].seekgroupid.split(";"); }catch(e1){ bens=""; } } } var where = ""; var col = ""; var value = ""; for (i = 0; i < bens.length; i++) { col = bens[i].toLowerCase(); if (col != "") { where += getDoc(col, '.value') + ";"; } } where = where.substring(0, where.length - 1); url += "?ishd=" + this.isPrimaryPan + "&fieldid=" + id + "&formid=" + formid + "&doccode=" + doccode + "&usercode=" + code+"&rowid="+rowId; showWindow_Grid(url, '', function(obj) { if (obj != "" && obj != undefined) { setDoc(id, ".value='" + obj + "'");// 赋字段值 setDoc(th, ".src='" + obj + "'"); } }, { dialogWidth :375, dialogHeight :375 },null,{pid:id,th:id + "_UpImage"}); } }; panPar.isChange = 0; //--------------------【panPar】 //--------------------------------------------------------------------function--------------------------------------------------------------------- function closeme(fun) { document.body.style.display = "none"; parent.closeTab(fun); // 添加关页卡 } function setHidOrNot(hidId, notId) {// 这个放最前吧 //添加注释时间:2012-07-04 曾文杰 显示/隐藏指定控件. setDoc(hidId, ".style.display='none'"); setDoc(notId, ".style.display='block'"); } //9802 style css样式字段设置 function stylecss(v,d,t,dat,typ,col,type){ if(v!=undefined&&v.indexOf("!")!=-1){ if(v.indexOf("&")!=-1){// 判断是否存在&xxx& var vv=""; var v2=""; while (v.indexOf("&") != -1) {// 循环v中的&xxx&会话值进行替换。 vv=v.substring(0,v.indexOf("&"));// 第一个&前面的信息 v = v.substring(v.indexOf("&") + 1);// 第一个&后面的信息 if (v.indexOf("&") != -1) {// 第二个&判断 // 获取两个&中间的字段名 &xxx&中的xxx v2 = v.substring(0, v.indexOf("&")); if (v2!="") { var vVal; try{ vVal = getValue(v2);// 获取页面值,面板没有到格线获取。 }catch(e){// 当找不到getValue()方法时直接用getDoc获取值。 vVal= getDoc(v2.toLowerCase(), '.value');// 获取页面值。 } if(typeof (vVal) !='undefined'){ if(isNaN(vVal) && vVal!=null){ vVal="'"+vVal+"'";// 判断不是数字值的处理。 } v = vv+vVal+v.substring(v.indexOf("&") + 1); // 重新把第一个&前面的信息+字段获取值(xxx的页面值)+第二个&后面的信息组装起来 // 然后再次while寻找v是否还有第二个&xxx&的会话值。 }else{ $.messager.alert("操作提示", "该界面没有发现你写的会话字段"+v2+",请检查9802是否设置了该字段。","warning"); return; } } } } }else{ v=v.substring(1,v.length);// 没有会话值就直接传 } dat[t]=col; typ[t]=type; var D = "{"; D +="'parm':\"" + encodeText(v.replace(/\\/g,"").replace("!",""))+"\"}"; var cur="/gtGrid.do?m=heand&_pop_json="+D; // $.post()方法调用不能同步所以改成了$.ajax()来执行。async: false时作为同步 2014-9-15 $.ajax({url:cur,type:"POST",async:false,dataType:'text',success :function(data){ if (data.indexOf("error")!=-1 ) { $.messager.alert("操作提示", data,"warning"); } else { if(data==null){data="";} var wdcss="width:"+getDoc(dat[d],".style.width")+";"; var htcss="height:"+getDoc(dat[d],".style.height")+";"; if(data.indexOf(";")!=-1){}else{data=data+";";} data=data+wdcss+htcss; setDoc(dat[d], ".style='" + data+"'"); } } }); } } function getImage(id) {//9类型上传图片显示事件 var UpImage=doc(id+'_UpImage'); if(typeof (UpImage) != 'undefined'){ var uuid=getDoc(id,'.value'); if(typeof (uuid) != 'undefined'&& uuid!=""){ if(uuid.indexOf('uploads')!=-1){ document.getElementById(id+'_UpImage').src =uuid; }else{ document.getElementById(id+'_UpImage').src ="/getImage.do?type=0&uuid="+uuid; //小图片 } }else{ document.getElementById(id+'_UpImage').src =""; } UpImage.onerror=null; //控制不要一直跳动 } } function clone(myObj) { if (typeof (myObj) != 'object') return myObj; if (myObj == null) return myObj; var myNewObj = new Object(); for ( var i in myObj) myNewObj[i] = clone(myObj[i]); return myNewObj; } //对象 xin 2019-11-15 10:58:00 function doc(id) { return document.getElementById(id); } // 获得对象值 xin 2019-11-15 10:58:08 function getDoc(id, property) { var rv_ = null; try{ if (doc(id) != null) { rv_ = eval("document.getElementById('" + id + "')" + property); } }catch (e) { //ipad上不兼容eval和 document.get..(id)+property(property是需要获取的属性值如:.value或.style.color等)。所以用到下面的方法取值 //循环控件对象获取属性值 ,针对ipad上获值的问题 if(property!=""){ var prop=property.split("."); try{ for(var s in doc(id)){ if(property.indexOf(s)!=-1){ rv_=doc(id)[s]; if(prop.length>2){ rv_=rv_[prop[2]]; } break; } } }catch(e){ rv_=""; } }else{ rv_=doc(id); } } return rv_; } // 赋值对象 xin 2019-11-15 10:58:44 function setDoc(id, property) { if (doc(id) != null) { var s = ""; var v = null; var p = property.split("="); var t = p[0].substring(1, p[0].length).split("."); var v_ = ""; //=========lqc======= for ( var i = 1; i < p.length; i++) { if (i == p.length - 1) { let pv = p[i].Trim(); if (pv.indexOf("'") == 0 && pv.lastIndexOf("'") == pv.length - 1) {//在第一个位置 pv = pv.substring(1, pv.length); pv = pv.substring(0, pv.length - 1); if (pv.indexOf("'") == 0 && pv.lastIndexOf("'") == pv.length - 1) {//去掉后还在第一个位置 pv = pv.substring(1, pv.length); pv = pv.substring(0, pv.length - 1); } // v_ += pv; // } else { // v_ += pv;//.replace(/'+/g, ""); } //处理值里有”=“的情况 if (v_ != "" && v_.indexOf("=") != -1 && pv.lastIndexOf("'") == pv.length - 1) { pv = pv.substring(0, pv.length - 1); } v_ += pv; } else { v_ += p[i].Trim().replace(/'+/g, "") + "="; } }//==========end======== //var v_ = p[1].Trim().replace(/'+/g, ""); if (t.length > 1) { s = t[1]; v = v_; try{ $('#panIndex' + panIndex).find('#' + id).css($.trim(s), v); }catch(e){ $.messager.alert("操作提示", id+"字段样式出错:"+e,"warning"); } } else { s = t[0]; if (v_ == "false" || v_ == "true") { v = eval(v_) } else { v = v_; } try{ $('#panIndex' + panIndex).find('#' + id).attr($.trim(s), v); }catch(e){ $.messager.alert("操作提示", id+"字段赋值出错:"+e,"warning"); } } if ($.browser!=null && !$.browser.msie && property.indexOf(".value") != -1) { // 不是IE浏览器 pro = $("#" + id, document).attr("onPropertyChange"); if (typeof pro != "undefined"&& pro.indexOf("event")!=-1) { // && pro.indexOf("event")!=-1 eval(pro.replace("event", "null")); } } } } var set_buttonHid = function(buttonHid, buttonId) { if (buttonHid) {// 按钮全隐藏的 if (!no_load_first && isAddLong) { // var chan=getDoc(buttonId,".style.width"); // if(chan!=""){//居然有上下面板都没有的,多做个判断吧 // //topIs=topIsTi; // //setDoc(buttonId,".style.width="+(parseInt(chan)+110)+";"); // // topIs=2; // } } } } function RPolish(RPolishArray) {// 计算逆波兰表达式的值 var result = 0; var tempArray = new Array(100); var tempNum = -1; for (i = 0; i < RPolishArray.length; i++) { if (RPolishArray[i].match(/\d/)) { tempNum++; tempArray[tempNum] = RPolishArray[i]; } else { switch (RPolishArray[i]) { case '+': result = (tempArray[tempNum - 1] * 1) + (tempArray[tempNum] * 1); tempNum--; tempArray[tempNum] = result; break; case '-': result = (tempArray[tempNum - 1] * 1) - (tempArray[tempNum] * 1); tempNum--; tempArray[tempNum] = result; break; case '*': result = (tempArray[tempNum - 1] * 1) * (tempArray[tempNum] * 1); tempNum--; tempArray[tempNum] = result; break; case '/': result = (tempArray[tempNum - 1] * 1) / (tempArray[tempNum] * 1); tempNum--; tempArray[tempNum] = result; break; } } } result = tempArray[tempNum]; return result; } function callBack(col, data,waiziduan,benziduan) { if (data == "many") { var pro = null; if (getDoc(col, '') != null) { pro = $("#" + col + "_click", document).click(); } } else { getBackBool = false;// 改为假先,避免触发 var strs = data.split(";pb#"); var colVal = getDoc(col, '.value'); var xinxi; for (i = 0; i < strs.length; i++) { xinxi = strs[i].split(";fen#"); // 必须用特殊的 if (xinxi[0] != "") { if (xinxi[0] == col && xinxi[1] == "") { setDoc(xinxi[0], ".value= '" + colVal + "'");// 当触发列无值时,必须还原啊,(如用户还没输入完就触发没了) } else { setDoc(xinxi[0], ".value= '" + xinxi[1] + "'"); } panMain[panIndex].isChange=1; } if( waiziduan!=undefined && benziduan!=undefined){//自身字段和外表字段不相同的时候进行判断赋值 2015-6-2 17:55:15 --xin if(waiziduan!=benziduan){ var ben10=benziduan.split(";"); var bwai10=waiziduan.split(";"); if(ben10.length==bwai10.length){ for(j = 0; j < ben10.length; j++){ if(xinxi[0] == bwai10[j] && xinxi[1] != ""){ setDoc(ben10[j], ".value= '" + xinxi[1] + "'"); } } }else{//抛出提示 $.messager.alert("操作提示", "9082的接收数据里【外表字段】和【自身字段】不对应或缺少 请检查修改。","warning"); return } } } } getBackBool = true;// 还原让程序继续运作 } } //触发相应控件事件,js赋值时不触发,直接调用一次 function setLoadEven(id, type) { if (type == null) {// 考虑对方不知道type的情况 可以不用 pi = panMain[panIndex].panInfo[id]; type = pi.controltype; } switch (parseInt(type)) { case 6:// 复选框单选 cheeckValueChan(id);// 以初始值控制复选框的勾选 break; case 9:// 图片占位显示 // upImageChange(id); break; case 30:// 复选框多选 cheeckSValueChan(id);// 以初始值控制复选框的勾选 break; case 32:// 单选按钮 radioValueChan(id);// 以初始值控制单选按钮的勾选 break; case 35: toSelect35(id);// break; case 37:// 富文本 set_37ck(id); break; default: break; } } function get37Value(id) { try{ var ck_html =CKEDITOR.instances[id].getData(); ck_html = ck_html.replace(/(\r|\n|\r\n)+/g, '').replace(new RegExp( '&' , 'g' ),'&');// 替换换行 }catch(e){ ck_html=null; } return ck_html; } function set_37ckChang(id) { var v = get37Value(id); $doc(id + '_spanHid').html(v); $doc(id).val(v); } function set_37ck(id) {// 给富文本框赋值 try { if (no_load_first) { panMain[panIndex].isChange = 1; } setHidOrNot(id + '_spanHid', id + '_hid'); var ck_html = $doc(id).val(); ck_html=ck_html.replace(/'); return; } if (id != "") {// 如果不为空则为三点弹出 var isShow = getDoc(id + "Tree", ".value"); openTree = (isShow == "1") ? true : false;// 处理三点弹出控件的只读设置,禁止点击事件 } if (openTree) { var where = getWhere(ben, wai, zi, g, p, id); if (url.indexOf('?') != -1) { url = url + "&wherePan=" + where; } else { url = url + "?wherePan=" + where; } var r = Math.round(Math.random() * 10000); url = url + "&r=" + r; url = url.replace(/%+/g, "@~"); url = encodeURI(url); url = encodeURI(url);// 必须两次 if (openTree) {// 决定是否打开窗,这个必须,虽然上面有一个,但意义不同 parent.panelToPost = p; parent.postToThis = g; parent.changFrame = inThisFrame; parent.addTab('按钮事件', '', '', '', url, '', { isFlowChart :true }); } } openTree = true; } var urlBtn; // huicode:回填到页面上审核人code的ID;huiname:回填到页面审核人name的ID,hasPaw // :是否包含按钮;formid:功能号IDurl:项目路径 function createPopSelect(huicode, huiname, hasPaw, formid, url, th,ExternalURL,UrlShowLocation) {// 这里包含要弹出密码,解决执行速度需要提出全局参数 hasPawBtn = hasPaw; formidBtn = formid; // execSqlBtn = execSql; th.disabled = true; urlBtn = url; var formID1 = getDoc('formid', ".value"); var doccode = getDoc('doccode', ".value"); createPopSelect(formID1, formid, doccode, function(leaderHRcode, name) { parent.btnId = th.id; popupSet(leaderHRcode, name, huicode, huiname, true); th.disabled = false; }, url); //这里是新OA审核界面用到 xin 2021-2-23 15:48:07 if(OAButonEvnt!=null){ //关闭 layer.close(OAButonEvnt); $("body").removeClass("bodyScrollOA"); } } //审计功能处理 操作时间:2014-3-26 15:52:04 ——辛煜波 function shenji(panIndex,plane,doc,type){// panindex为面板元素,plane为面板信息,doc为单号,type参数针对2类型考虑的(具体看2类型js里面的simple.tree.js) var oldValue = panMain[panIndex].panelAuditValue;// 原始字段值(没改过前的字段值) if (this.formType == 496) { oldValue = []; } var newValue = [];// 需要审计的字段 修改后的值 if (oldValue != null) {// 处理是否是审计的字段 。操作时间: 2014-3-25 :辛煜波 var auditField = panMain[panIndex].auditFiled;// 9802设置需要审计的字段名 try { for (var i = 0; i < auditField.length; i++) { var name = auditField[i][0];//字段名 var old = (oldValue[name] != null ? oldValue[name] : '');//旧值 var news = (plane[name] != null ? plane[name] : '');//新值 if (old != news) { var auditJson = {}; auditJson.fieldname = name; auditJson.oldvalue = old; auditJson.newvalue = news; auditJson.usercode = ''; auditJson.username = ''; auditJson.auditType = (typeof (type) == 'undefined' ? ((isNew == 1 && doc == "") ? "add" : "update") : (type == "2add" ? "add" : "update")); auditJson.formid = formId; auditJson.doccode = doc; auditJson.auditIndex = ',' + news + ',' + old + ','; auditJson.fielddescr = auditField[i][2]; newValue.push(auditJson); } } } catch (e) { $.messager.alert("操作提示", "审计出现异常,审计字段未能记录", "warning"); } return newValue; } } //9810面板大图标控件的选择按钮界面 function bigimages(){ var url="/FangYuanAdmin/myImagejsp/bigImage.jsp"; parent.deskTopShow('大图标图片',url,500,520,function(obj){ if(!obj)return; if(obj.code=="error"){ $.messager.alert("操作提示", obj.info,"warning");return; } }) } //解决面板控件自适应宽度问题 function autoColWidthByTable(rightWidth, leftWidth) { try{ // rightWidth, leftWidth 适用于2,20类型窗体的左边和右边的宽度 var width = document.body.clientWidth - 50 - (leftWidth > 0?leftWidth:0); //网页可见区域宽 width=(rightWidth > 0)?rightWidth:width;//针对2,20窗体 width=(maxCols.length>1?width-20:width);//针对多面板。 var maxColss=Math.max.apply(null, maxCols); for(var i=0;i0&&c!=undefined){ gtss=c; panMain[c].getBack(a, b); }else{ panMain[panIndex].getBack(a, b); } } function windowOpen(a,panindex,onlyOne) { return panMain[panindex].windowOpen(a,panindex,onlyOne); } function copy() { panMain[panIndex].copy(); } function loadSet(a) { panMain[panIndex].loadSet(a); } function windowLink(a) { panMain[panIndex].windowLink(a); } function htmlGet(a) { panMain[panIndex].htmlGet(a); } function upImage(id, el) { panMain[panIndex].upImage(id, el); } function getControlValue(field, fieldtype, targetControl, callback, pindex) { panMain[panIndex].getControlValue(field, fieldtype, targetControl, callback, pindex); }; function getSelect2(field, fieldtype, targetControl, callback, pindex, css) { panMain[panIndex].getSelect2(field, fieldtype, targetControl, callback, pindex, css); }; function getWhere(ben, wai, zi, g, p, id) { return panMain[panIndex].getWhere(ben, wai, zi, g, p, id); } //新增的44控件:静态图标控件 xin 2022-1-24 17:11:20 function openIcon(id){ $.getScript("/layui/layui.js").done(function() { layer.open({ type: 2, area :['calc(100% - 400px)','calc(100% - 80px)'], title: false, content: '/general/bigIconControl.jsp?id='+id, cancel :function(index, layero){ layer.close(index); } }); }).fail(function() { $.messager.alert("操作提示","界面没找到","warning"); }); } //新的OA审核按钮 xin 2021-1-30 10:01:56 function OAVerifyMethod(formId,docstate,doccode){ $.getScript("/layui/layui.js").done(function() { OAButonEvnt=layer.open({ type: 2, area :['calc(100% - 400px)','calc(100% - 80px)'], title: false, content: '/general/approval.jsp?formId='+formId+'&docstate='+docstate+'&doccode='+doccode, success :function(){ $("body").addClass("bodyScrollOA"); }, cancel :function(index, layero){ layer.close(index); $("body").removeClass("bodyScrollOA"); } }); }).fail(function() { $.messager.alert("操作提示","OA审核界面没找到","warning"); }); } $(function(){ if(panMain[panIndex]!=null) { var panelValue = panMain[panIndex].panelAuditValue; if (panelValue != null) { var shippercode = panelValue.shippercode; var logisticscode = panelValue.logisticscode; if (shippercode != null && shippercode != '' && logisticscode != null && logisticscode != '') { $('#Traces').css('display', 'inline-block');//显示物流信息图标 var shipperName = panelValue.shippername; var receiptertelephone = panelValue.receiptertelephone; receiptertelephone = (receiptertelephone != null ? receiptertelephone : ""); var logisticsstate = panelValue.logisticsstate; logisticsstate = (logisticsstate != null ? logisticsstate : ""); var doccode = panelValue.doccode; var formid = panelValue.formid; var parm = 'shippercode=' + shippercode + '&logisticscode=' + logisticscode + '&shippername=' + shipperName + '&receiptertelephone=' + receiptertelephone + '&logisticsstate=' + logisticsstate + '&doccode=' + doccode + '&formid=' + formid; $('#Traces').on('click', function () {//点击事件 layer.open({ type: 2, area: ['800px', '500px'], title: false, content: '/general/LogisticsDetails.jsp?' + encodeURL(parm), cancel: function (index) { layer.close(index); } }); }) } } } if(qrCode!=null && qrCode!=''){ $.get('/qr/showQrCode.do?qrCode=' + qrCode, function (res) { let ent = $('#tpqrCodeDoc'); if (ent.length > 0) { try{ //bootstrap5版本 new bootstrap.Popover(ent[0], { trigger: 'hover focus',//focus,click 触发方式 placement: 'bottom',//显示方向 html: true, title: '',//设置 弹出框 的标题 customClass: 'qrCode-class', content: '' }) }catch (e) { ent.popover({ trigger: 'hover focus',//focus,click 触发方式 placement: 'bottom',//显示方向 html:true, //title:'单据二维码',//设置 弹出框 的标题 content: '' }); } } }, 'json'); }else{ $('#tpqrCodeDoc').hide(); } //top页面info按钮执行函数 try{ $.ajax({ url: '/showInfo.do', data: {'formid': panelFormId, 'doccode': getDoc('doccode', '.value')}, type: "POST", async: true, dataType: 'text', success: function (mes) { if (mes == "") { $("#tpinfoDoc").hide(); return; } let ent = $('#tpinfoDoc'); if (ent.length > 0) { try{ //bootstrap5版本 new bootstrap.Popover(ent[0], { trigger: 'hover focus',//manual,click 触发方式 placement: 'bottom',//显示方向 html: true, customClass: 'info-class-panle', title: '单据信息',//设置 弹出框 的标题 content: mes }) }catch (e) { ent.popover({ trigger: 'hover focus',//manual,click 触发方式 placement: 'bottom',//显示方向 html:true, title: '单据信息',//设置 弹出框 的标题 content: mes }); }finally { //复制链接用到 xin ent.on('shown.bs.popover', function () { $('.info-class-panle .popover-body ul li a').on('click', function () { copyLink(); }); $('#tpUpDownDoc .popover-content ul li a').on('click', function () { copyLink(); }); }) } } } }); }catch(e){ //options.content='加载信息失败【失败原因:'+e+'】'; } //处理40控件浏览图片,遍历40控件 $('.isViewer40').each(function(){ var that = this; var v = $(this).data('value'); var path = '/images/help/fenlei_right.png'; if (v != null && v != '') { if (v.toLowerCase().startsWith('https:') && v.toLowerCase().startsWith('http:')) { $(that).append('
  • ' + '
  • '); new Viewer(that, { title: false, // url: 'src', shown: function () { $('.viewer-container').css('margin-top', '70'); } }); return; } var type = 9; type = (v.split(';') != null ? (v.split(';').length > 2 ? 19 : type) : type); var data = { unid: v, controltype: type, fieldid: this.id, formid: formId, doccode: $("#doccode").val(), headflag: 0 } $.post('/attachment/getAttachmentList.do', {'pant': JSON.stringify(data)}, function (data) { if (data != null) { var width = '97%'; width = (data.length > 1 ? '150px' : width); for (var i = 0; i < data.length; i++) { path = data[i].domain + "/uploads/attachment/" + data[i].dbid + "/" + data[i].formid + "/" + data[i].unid + "@p@" + data[i].seq + "." + data[i].orgFileType; $(that).append('
  • '); } new Viewer(that, { title: false, // url: 'src', shown: function () { $('.viewer-container').css('margin-top', '70'); } }); } else { $(that).append('
  • '); } }); } else { $(that).append('
  • '); } }) })