| | |
| | | if (jsonStr.indexOf("{") == 0) { |
| | | jsonStr = jsonStr.substring(1, jsonStr.length - 1); |
| | | } |
| | | var vsd = jsonStr.split(fen); |
| | | var map = {}; |
| | | var vsd = jsonStr.split(fen); |
| | | var vs = (":").split(":"); |
| | | for ( var i = 0; i < vsd.length; i++) { |
| | | vs[0] = vsd[i].substring(0, vsd[i].indexOf(":")); |
| | |
| | | $(select2Evt).val(original).trigger('change'); |
| | | }); |
| | | }).on("select2:select", function (evt) { |
| | | if (evt.params.data.id == -1) { //新增全部 xin 2023-6-2 14:29:54 |
| | | $("#" + field).select2("val", [-1]); //清空其他选项 |
| | | $("#" + field).val(allValue).trigger("change"); |
| | | var data =evt.params.data; |
| | | if (data.id == -1) { //新增全部 xin 2023-6-2 14:29:54 |
| | | $(this).select2("val", [-1]); //清空其他选项 |
| | | $(this).val(allValue).trigger("change"); |
| | | return; |
| | | } |
| | | var element = evt.params.data.element; |
| | | var $element = $(element); |
| | | $element.detach(); |
| | | $(this).append($element); |
| | | $(this).trigger("change"); |
| | | var original = $(this).select2('val') || [];//已经被选中的值.不存在就实例化 |
| | | original.push(data.id);//添加进去 |
| | | $(this).val(original).trigger("change"); |
| | | getSelect31(field);//43控件关联31控件 xin 2022-4-1 17:06:04 |
| | | panMain[panIndex].isChange = 1; |
| | | }).on("select2:unselect", function (evt) { |
| | | var element = evt.params.data.element; |
| | | var $element = $(element); |
| | | $element.remove(); |
| | | var original = $(this).select2('val');//已经被选中的值 |
| | | if (original == null) { |
| | | return; |
| | | } |
| | | var data =evt.params.data; |
| | | if (data.id == -1) { //新增全部 xin 2023-6-2 14:29:54 |
| | | $(this).select2("val", [-1]); //清空其他选项 |
| | | $(this).val([]).trigger("change"); |
| | | return; |
| | | } |
| | | original = $.grep(original, function (value) { |
| | | return value !== data.id; // 删除值为data.id的元素 |
| | | }) |
| | | $(this).val(original).trigger("change");// |
| | | panMain[panIndex].isChange = 1; |
| | | }); |
| | | //这里异步加载数据回来填充 xin 2023-7-18 15:41:13 |
| | |
| | | } |
| | | if (qianzhi) { // 强制判断 |
| | | // if (id != col) { //注释 注释原因:在18窗体执行三点弹出过到另一个18窗体会导致获取字段在另一个18窗体查询不到 xin 2023-6-7 16:24:32 |
| | | if (value != "") { |
| | | where += wais[i] + " like '" + "@~"+ value + "@~'" |
| | | + addFuHao;// and |
| | | } else { |
| | | $.messager.alert("操作提示", this.panInfo[col].title + "没有录入!","warning"); |
| | | openTree = false; |
| | | break; |
| | | } |
| | | // if (value != "") {//注释原因:强制判断进入时候 值是空值也进行组装,空值不应该出现页面提示 xin 2024-7-2 14:52:27 |
| | | if (value != null) { |
| | | where += wais[i] + " like '" + "@~" + value + "@~'" |
| | | + addFuHao;// and |
| | | } else { |
| | | // $.messager.alert("操作提示", this.panInfo[col].title + "没有录入!", "warning"); |
| | | $.messager.alert("操作提示", this.panInfo[col].title + "控件不存在,请检查。", "warning"); |
| | | openTree = false; |
| | | break; |
| | | } |
| | | // } else { |
| | | // // by danaus 2017-7-21 替换^ |
| | | // colDan = "@G@" + wais[i] + " like '" + "@~"+ value + "@~'"; |
| | |
| | | } |
| | | // 权限控制是否能修改 xin 2018-12-9 11:23:32 |
| | | if ($('#' + key + '_expr').length > 0 && $('#' + key + '_expr').val() == '0') { |
| | | delete item[key]; |
| | | if ($('#' + key + '_expr_val') != null) {//是加密的需要提交 |
| | | item[key] = $('#' + key + '_expr_val').val(); |
| | | item[key + '_expr'] = 0; |
| | | } else { |
| | | delete item[key]; |
| | | } |
| | | } |
| | | //是单据类型窗体进入(特殊字段处理)xin 2021-3-10 10:00:26 |
| | | if (';5;8;16;496;'.indexOf(';' + formType + ';') != -1) { |
| | |
| | | $.post(url, '', function(date) { |
| | | getBackElse = false; |
| | | callBack(col, date); |
| | | getSelect31(col);//关联有31需要执行 |
| | | }); |
| | | } |
| | | } |
| | |
| | | no_load_first = false;// 只有加载时触发此事件,表明其为加载时,防止程序未知处把其值改了 |
| | | var filedIs = null; |
| | | var bzc = true; |
| | | var is_expr = true;//默认可编辑状态,检查用到(权限表达式 0隐藏,1显示,2可编辑) |
| | | var hasExpr = false;//表达式值 |
| | | //如果是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++) { |
| | | is_expr = true; |
| | | hasExpr = false; |
| | | if (readList[i] != "") { |
| | | readIs = readList[i];// .split(";pb#"); |
| | | // readIs[0]的值:0是可编辑 ,1是只读,2有OA审核按钮设置 |
| | | switch (parseInt(readIs[0])) { |
| | | case 0://可编辑状态 |
| | | if (this.formtypeOne != 1) { |
| | | //权限表达式 0隐藏,1显示,2可编辑 |
| | | // if (getDoc(readIs[2] + '_expr', '') != null |
| | | // && getDoc(readIs[2] + '_expr', '.value') != ""// 少了==1会导致9902设置权限得不到控制。 |
| | | // && (panMain[panIndex].bolCopy !=1 ||(getDoc(readIs[2] + '_expr', '.value') == 0))) { |
| | | // is_expr = false; |
| | | // } |
| | | // if (getDoc(readIs[2] + '_expr', '') != null |
| | | // && getDoc(readIs[2] + '_expr', '.value') != "" |
| | | // && getDoc(readIs[2] + '_expr', '.value') == 2) { |
| | | // is_expr = true; |
| | | // } |
| | | let has_expr = getDoc(readIs[2] + '_expr', '.value');//表达式值 |
| | | if (has_expr != null && has_expr != "") {//有设置到表达式 |
| | | if (parseInt(has_expr) != 2) { |
| | | is_expr = false;//有设置表达式,但不是可编辑状态 |
| | | let exprValue = getDoc(readIs[2] + '_expr', '.value');//权限表达式 0隐藏,1显示,2可编辑 |
| | | if (exprValue != null) {//有设置到表达式 |
| | | if (exprValue == "") { |
| | | hasExpr = true;//可编辑状态 |
| | | } else if (exprValue == 2) { |
| | | hasExpr = true;//可编辑状态 |
| | | } |
| | | // if (panMain[panIndex].bolCopy != 1 || parseInt(has_expr) == 0) {// bolCopy检查是否是复单,是就只读。 |
| | | // is_expr = false;//有设置表达式,但不是可编辑状态 |
| | | // } |
| | | } else { |
| | | hasExpr = true |
| | | } |
| | | if (is_expr) {//权限表达式 true值表示可编辑状态 |
| | | if (hasExpr) {//权限表达式 true可编辑状态 |
| | | //这个curchecker字段表示当前审核人字段 |
| | | this.setRead(readIs[1], docstatePan, isnew,readIs[2], readIs[3], 'curchecker', db,parseInt(readIs[4])); |
| | | }else{//false表示只读 |
| | | this.setReadOnly(readIs[2],parseInt(readIs[4]));// readIs[3] |
| | | this.setRead(readIs[1], docstatePan, isnew, readIs[2], readIs[3], 'curchecker', db, parseInt(readIs[4])); |
| | | } else {//false表示只读 |
| | | this.setReadOnly(readIs[2], parseInt(readIs[4]));// readIs[3] |
| | | } |
| | | this.hasStyleCss(readIs[2]);//stylecss处理 |
| | | } |
| | |
| | | no_load_first = getBool;// 当然事情完了,还是还原其本来值 |
| | | }, |
| | | hasStyleCss:function(id){//处理stylecss |
| | | let cssArray = ""; |
| | | let css = getDoc(id, ".style");// 控件样式 |
| | | if (getDoc(id + '_css', '') != null && getDoc(id + '_css', '.value') != "") {// css样式 |
| | | let css = getDoc(id, ".style");// 控件样式 |
| | | let cssz = ""; |
| | | for (var r = 0; r < css.length; r++) { |
| | | cssz += css[r] + ":" + css[css[r]] + ";";// 组装 |
| | | cssArray += css[r] + ":" + css[css[r]] + ";";// 组装 |
| | | } |
| | | cssz += getDoc(id + '_css', '.value');// 获取9802设置的控件样式 |
| | | setDoc(id, ".style='" + cssz + "'");// 赋值最新的控件样式css |
| | | cssArray += getDoc(id + '_css', '.value'); |
| | | setDoc(id, ".style='" + cssArray + "'");// 赋值最新的控件样式css |
| | | } else { |
| | | let cssm = panMain[panIndex].panInfo[id]; |
| | | if (cssm != null) { |
| | | cssm = cssm.stylecss; |
| | | } |
| | | if (cssm != null && cssm != '') { |
| | | for (var r = 0; r < css.length; r++) { |
| | | cssArray += css[r] + ":" + css[css[r]] + ";";// 组装 |
| | | } |
| | | cssArray += cssm; |
| | | setDoc(id, ".style='" + cssArray + "'");// 赋值最新的控件样式css |
| | | } |
| | | } |
| | | }, |
| | | hasIn : function(str, strs) { |
| | |
| | | } |
| | | return false; |
| | | }, |
| | | zhuYi : function(id, statepan, docstatePan, idpan, usercode) {// ,NeedRelease,CurChecked,CurChecker |
| | | zhuYi : function(id, statepan, docstatePan, curchecker, usercode) {// ,NeedRelease,CurChecked,CurChecker |
| | | var states = statepan.split(";"); |
| | | var may = true; |
| | | var mayHas = this.isHasTo(idpan, usercode, false);// 是否检查过 |
| | | var mayHas = this.isHasTo(curchecker, usercode, false);// 是否检查过 |
| | | var curHas = false;// 是否是检查人 |
| | | if (getDoc('curchecker', '.value') == "all") { |
| | | curHas = true; |
| | |
| | | return may; |
| | | }, |
| | | // 1,登陆人状态2为控件状态3是否新单4是否有按钮 |
| | | setRead : function(statepan, docstatePan, isNewOpen, id, hasbutton, idpan, |
| | | setRead : function(statepan, docstatePan, isNewOpen, id, hasbutton, curchecker, |
| | | usercode, type) {// 判断按钮以及是否可以输入状态(301101) |
| | | hasButton = hasbutton; |
| | | var states = statepan.split(";"); |
| | | var may = false;// false就执行匹配 |
| | | //获取当前审核人字段值 |
| | | if (getDoc('curchecker', '.value') == "all") { |
| | | if (getDoc(curchecker, '.value') == "all") { |
| | | may = true; |
| | | } else { |
| | | may = this.isHasTo(idpan, usercode, false);//审核填写审核信息。 |
| | | may = this.isHasTo(curchecker, usercode, false);//审核填写审核信息。 |
| | | } |
| | | // var creater = this.isHasTo('createusercode', usercode, false); |
| | | // false就执行匹配 //注释掉是因为已经没了那个字段。 |
| | |
| | | } |
| | | format = info[colid].format; |
| | | format = format == null ? "" : format; |
| | | if(initv.indexOf("!")!=-1){ |
| | | if(initv.indexOf("!") == 0){//出现在最开头0位置就执行查询 |
| | | dat[t]=colid; |
| | | typ[t]=type; |
| | | t++; |
| | |
| | | // 在编辑状态下必录 |
| | | if ((hasSta && isHasValue(col[1], "" + statu + "", ";")) || !hasSta) { |
| | | if (this.panInfo[col[0]] == null) {//没有检查到此字段的存在。 |
| | | layer.msg('页面存在必录字段没有录入,必录的字段是:' + col[0]); |
| | | $.messager.alert("操作提示",'页面存在必录字段没有录入,必录的字段是:' + col[0]); |
| | | return false; |
| | | } |
| | | try { |
| | | layer.msg(this.panInfo[col[0]].title + '--不能为空!'); |
| | | } catch (e) { |
| | | $.messager.alert(this.panInfo[col[0]].title + '--不能为空!'); |
| | | let title = this.panInfo[col[0]].title; |
| | | if (title.indexOf("!") != -1) { |
| | | title = col[0];//是动态的描述直接显示id好了。 |
| | | } |
| | | // try { |
| | | $.messager.alert("操作提示",'<div style="text-align: center">'+title + '-不能为空!</div>'); |
| | | // } catch (e) { |
| | | // $.messager.alert("操作提示",title + '--不能为空!'); |
| | | // } |
| | | // try{ |
| | | // $.messager.show({ |
| | | // height:50, |
| | |
| | | return boolreturn; |
| | | } |
| | | // 1.数组2.自身字段(数组值与自身字段一一匹配)3true替换,反之则为追加 |
| | | function openSetValue(st, get, boo) { |
| | | //newExpr是弹出页面返回的数据,表示里面的字段内容是密文,需要根据当前页面是否需要解密做相应的处理 |
| | | //格式:newExpr={"字段名称":"密文"} by danaus 2024-06-28 17:08 |
| | | function openSetValue(st, get, boo,newExpr) { |
| | | var col; |
| | | if (st != undefined && st != null) { |
| | | var encrypt = new JSEncrypt(); |
| | | encrypt.setPublicKey(rsakey.pubkey); |
| | | var dataJson=null; |
| | | if (newExpr != null && JSON.stringify(newExpr) !== "{}"){//&& typeof newExpr == 'object') {//有密文 |
| | | $.ajax({ |
| | | url: "/api/decrypt.do", |
| | | type: "POST", |
| | | data: JSON.stringify(newExpr), |
| | | async: false, |
| | | dataType: 'json', |
| | | contentType: 'application/json', |
| | | success: function (res) { |
| | | if (res.state == 0) { |
| | | //获取明文 |
| | | dataJson = res.data; |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | for ( var n = 0; n < st.length; n++) { |
| | | if (getDoc(get[n], "") == null) { |
| | | console.log("三点弹出设置的自身字段:" + get[n] + "在页面上不存在!"); |
| | |
| | | } |
| | | } |
| | | } |
| | | setDoc(get[n], ".value ='" +(st[n]=="undefined"?"":st[n])+ "'"); |
| | | var v = (st[n] == "undefined" ? "" : st[n]); |
| | | if (dataJson != null) {//有解密的明文值 |
| | | v = dataJson[get[n]]; |
| | | } |
| | | if (getDoc(n + "_expr", ".value") != "" && getDoc(n + "_expr", ".value") == 0) {//权限控制 显示星号 xin 2024-6-24 10:22:43 |
| | | setDoc(n + "_expr_val", ".value='" + encrypt.encrypt(v) + "'");//加密值 |
| | | v = "******"; |
| | | } |
| | | setDoc(get[n], ".value ='" + v + "'"); |
| | | } else { |
| | | col = getDoc(get[n], ".value"); |
| | | if (!isHasValue(col, st[n], ",")) {// 在有的情况下不追加 |
| | |
| | | } |
| | | panMain[panIndex].isChange=1; |
| | | top.myFresh.Type=panMain[panIndex].formtypeOne; |
| | | if(panMain[panIndex].formtypeOne==10){//10类型 |
| | | panMain[panIndex].keyDown('123','');//三点弹出返回后 再次出发回车事件 组装where条件。2014-11-14 |
| | | if(panMain[panIndex].formtypeOne==10 || panMain[panIndex].formtypeOne==20 || panMain[panIndex].formtypeOne==30){//10 20 30类型 |
| | | panMain[panIndex].keyDown('123','');//三点弹出返回后 再次触发回车事件 组装where条件。2014-11-14 |
| | | panMain[panIndex].isChange=0;//10窗体返回的值不在保存防范,所以isChange改为0 |
| | | } |
| | | } else { |
| | |
| | | function shenji(panIndex,plane,doc,type){// panindex为面板元素,plane为面板信息,doc为单号,type参数针对2类型考虑的(具体看2类型js里面的simple.tree.js) |
| | | var newValue = [];// 需要审计的字段 修改后的值 |
| | | var oldValue = panMain[panIndex].panelAuditValue;// 原始字段值(没改过前的字段值) |
| | | var auditFormId=formId;//审计的功能号 |
| | | var auditFormId = formId;//审计的功能号 |
| | | if (this.formType == 496) { |
| | | plane = $.isFunction(plane.getPanMap) ? plane.getPanMap(panIndex) : plane; |
| | | auditFormId = oldValue.formid; |
| | |
| | | var auditField = panMain[panIndex].auditFiled;// 9802设置需要审计的字段名 |
| | | try { |
| | | for (var i = 0; i < auditField.length; i++) { |
| | | var type = auditField[i][1];//类型(1:审计+查询。2:审计) |
| | | if (type == 1) {//单单是(审计+查询)不计算到表里面去 |
| | | continue; |
| | | } |
| | | var name = auditField[i][0];//字段名 |
| | | var old = (oldValue[name] != null ? oldValue[name] : '');//旧值 |
| | | var news = (plane[name] != null ? plane[name] : '');//新值 |
| | | if (old != news) { |
| | | if (type == 2 && (old != news)) { |
| | | var auditJson = {}; |
| | | var array = [];//添加(审计+查询) |
| | | for (var a = 0; a < auditField.length; a++) {//把是 1(审计+查询)类型的字段添加到集合里 |
| | | if (auditField[a][1] == 1) { |
| | | array.push((plane[auditField[a][0]] != null ? plane[auditField[a][0]] : '')); |
| | | } |
| | | } |
| | | auditJson.auditIndex = news + ',' + old + ',' + array.join(','); |
| | | let auditType="update"; |
| | | if (isNew == 1 && doc == "") { |
| | | auditType = 'add'; |
| | | } |
| | | if (typeof (type) != 'undefined' && type == '2add') { |
| | | auditType = "add"; |
| | | } |
| | | auditJson.auditType = auditType; |
| | | auditJson.usercode = ''; |
| | | auditJson.username = ''; |
| | | auditJson.fieldId = name; |
| | | auditJson.fieldname = auditField[i][2]; |
| | | 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 = auditFormId; |
| | | auditJson.doccode = doc; |
| | | auditJson.auditIndex = ',' + news + ',' + old + ','; |
| | | auditJson.mainFormId=formId;//主功能号,在三表或多表时MainFormId取主功能号,其他情况取值和formid相同取当前功能号 |
| | | auditJson.headFlag=0;//主表为0 从表为1 |
| | | // auditJson.fielddescr = auditField[i][2];//这个不用了 |
| | | auditJson.mainFormId = formId;//主功能号,在三表或多表时MainFormId取主功能号,其他情况取值和formid相同取当前功能号 |
| | | auditJson.headFlag = 0;//主表为0 从表为1 |
| | | if ($doc(name + "_expr").val() != null && $doc(name + "_expr").val() == 0) { |
| | | var encrypt = new JSEncrypt(); |
| | | encrypt.setPublicKey(rsakey.pubkey); |
| | | news=encrypt.encrypt(news);//加密 |
| | | auditJson.oldvalue_expr = 0; |
| | | auditJson.newvalue_expr = 0; |
| | | auditJson.oldvalue = $doc(name + "_expr_val").val(); |
| | | auditJson.newvalue = news; |
| | | auditJson.auditIndex_expr = news;//处理加密 |
| | | } |
| | | newValue.push(auditJson); |
| | | } |
| | | } |