xinyb
2024-09-19 18ffbca9acaccd5099a7a63652f52210f59a7e40
WebRoot/js/hotkey.js
@@ -138,40 +138,43 @@
    try {
        if (top.myFresh.formType == 3 && !top.myFresh.clickNode) {
            alert("请先选择左边分类再执行导出");
            closeLoading();
            return;
        }
    } catch (e) {
    }
    if (typeof (mygrid) != "undefined") {
        if (typeof (panMain) != "undefined" && typeof (panMain[panIndex]) != "undefined")
            mygrid.excelTitle = new Base64().encode((panMain[panIndex].panelTitle == undefined ? "" : panMain[panIndex].panelTitle) + "~" + mygrid.gridTitle);// 面板+格线的动态标题
            mygrid.excelTitle = new Base64().encode((panMain[panIndex].panelTitle == undefined ? "" : panMain[panIndex].panelTitle) + "~" + mygrid.gridTitlefun());// 面板+格线的动态标题
        else
            mygrid.excelTitle = new Base64().encode("~" + mygrid.gridTitle);// a面板+格线的动态标题
            mygrid.excelTitle = new Base64().encode("~" + mygrid.gridTitlefun());// a面板+格线的动态标题
        var str = mygrid.exportExcl();
        excelurl = str.split("&p&")[0];
        if (excelurl.indexOf("flag=") < 0) {
            excelurl += "flag=-1";
        }
        TGData = str.split("&p&")[1].replace("TGData=", "");
    } else {
        if (typeof (panMain) != "undefined")
            excelTitle = new Base64().encode((panMain[panIndex].panelTitle == undefined ? "" : panMain[panIndex].panelTitle) + "~" + "");// 面板+格线的动态标题
        TGData = '{"Cfg":{"Sort":"","SortCols":"","SortTypes":"0","Group":"","GroupCols":"","SearchAction":"","TimeZone":"-480","ScrollLeft":"0","LeftScrollLeft":"0","ScrollTop":"0"},"CutFilter":{"Filter":""},"rowspan":"","Filters":[],"IO":{},"Fields":{"FieldsName":"" },"CutFilter":{"Filter":"" },"Exprs":{"expr":"" },"Cps":{"cp":"" },"rowspan":"","excelTitle":"fg==","Body":[{"Pos":"0"}]}';
        TGData = '{"Cfg":{"Sort":"","SortCols":"","SortTypes":"0","Group":"","GroupCols":"","SearchAction":"","TimeZone":"-480","ScrollLeft":"0","LeftScrollLeft":"0","ScrollTop":"0"},"CutFilter":{"Filter":""},"rowspan":"","Filters":[],"IO":{},"Fields":{"FieldsName":""},"CutFilter":{"Filter":""},"Exprs":{"expr":""},"Cps":{"cp":""},"rowspan":"","excelTitle":"fg==","Body":[{"Pos":"0"}]}';
        if (panMain[panIndex].panelTitle == null || panMain[panIndex].panelTitle == "") {
            var doccode = $("#doccode").val();
            if (doccode != null && doccode != "") {
                panMain[panIndex].panelTitle = "doccode='" + doccode + "'";
            }
        }
        excelurl = "/gtGrid.do?m=load&where=" + (panMain[panIndex].panelTitle == undefined ? "" : panMain[panIndex].panelTitle) + "&formID=" + formId + "&winType=" + (formType == 16 ? 17 : formType) + "|0&flag=-1&autopaging=3&cp=0&formdatafilters=&pageSize=100&picFild=";
        //16类型单独处理
        excelurl = "/gtGrid.do?m=load&where=" + (panMain[panIndex].panelTitle == undefined ? "" : panMain[panIndex].panelTitle) + "&formID=" + formId + "&winType=" +  (formType == 496?497:formType)+ "|0&flag=-1&autopaging=3&cp=0&formdatafilters=&pageSize=100&picFild=";
    }
    var obj = toJson(excelurl);
    // 创建一个隐藏的iframe,用于接收Excel文件
    // var iframe = $("<iframe>");
    //iframe.attr('style', 'display:none');
    //$('body').append(iframe);
    var obj = toJson(excelurl);
    var form = $("<form>");
    form.attr('style', 'display:none');
    form.attr('target', '');
    form.attr('method', 'post');
    form.attr('action', "/gtGrid.do?m=" + obj.m);
    form.attr('action', "/gtGrid.do?m="+ obj.m);
    var input1 = $('<input>');
    input1.attr('type', 'hidden');
    input1.attr('name', 'autopaging');
@@ -185,12 +188,12 @@
    var input3 = $('<input>');
    input3.attr('type', 'hidden');
    input3.attr('name', 'flag');
    input3.attr('value', obj.flag);
    input3.attr('value', -1);
    form.append(input3);
    var input4 = $('<input>');
    input4.attr('type', 'hidden');
    input4.attr('name', 'formID');
    input4.attr('value', obj.formID);
    input4.attr('value', formType==496?formId:obj.formID);
    form.append(input4);
    var input5 = $('<input>');
    input5.attr('type', 'hidden');
@@ -220,50 +223,55 @@
    var input10 = $('<input>');
    input10.attr('type', 'hidden');
    input10.attr('name', 'isExportExcel');
    input10.attr('value', obj.isExportExcel);
    input10.attr('value', obj.isExportExcel==undefined?"0":obj.isExportExcel);
    form.append(input10);
    var input11 = $('<input>');
    input11.attr('type', 'hidden');
    input11.attr('name', 'TGData');
    input11.attr('value', TGData);
    form.append(input11);
    var input12 = $('<input>');
    input12.attr('type', 'hidden');
    input12.attr('name', 'tbCols');
    input12.attr('value', obj.tbCols==undefined?"":obj.tbCols);
    form.append(input12);
    $('body').append(form);
    form.submit();
    form.remove();
    if (typeof (mygrid) != "undefined") mygrid.ReloadBody();
    top.myFresh.clickNode = false;
    closeLoading();
}
function refalshGridOfColse() {
    var p_frame = parent.frames[inChangFrame];
    if (p_frame) {
        if (C_Grid != "") {
            var gr = eval('(' + C_Grid + ')');//弹出的父页面传过来的信息
            var pa = p_frame.Grids[gr.gridID];//得到grid
            if (pa.clickDb) {
                pa.clickDb = false;
                return;
            }
            if (pa && gr.clickGrid) {
                if (gr.toP == undefined || gr.toP == null || gr.toP == "null" || gr.toP == "") return;//没有需要返回字段,不作处理
                //增加如果当前页面是31类型弹出作选择用则需要判断是否已保存了数据才给返回
                if (gr.is31 && (this.getInsertedRecords().length > 0 || this.getUpdatedRecords().length > 0 || this.getDeletedRecords().length > 0)) {
                    alert(this.GetText("isSave"));
                    return;
                }
                var ower = gr.toP.split(";");//自表
                var temp = [];
                var row = pa.Rows[gr.rowIDp];//三点弹出的所在行
                for (var i = 0; i < ower.length; i++) {
                    temp[i] = row[ower[i]];
                }
                pa.threePop(temp, ower, row, null, -1);
                pa.EndEdit(0);
            }
        }
    }
    return;
//--下面代码没用,因为取得的数据为空。再更新没意义了 by danaus 2024-03-20 15:59
    /* var p_frame = parent.frames[inChangFrame];
     if (p_frame) {
         if (C_Grid != "") {
             var gr = eval('(' + C_Grid + ')');//弹出的父页面传过来的信息
             var pa = p_frame.Grids[gr.gridID];//得到grid
             if (pa.clickDb) {
                 pa.clickDb = false;
                 return;
             }
             if (pa && gr.clickGrid) {
                 if (gr.toP == undefined || gr.toP == null || gr.toP == "null" || gr.toP == "") return;//没有需要返回字段,不作处理
                 //增加如果当前页面是31类型弹出作选择用则需要判断是否已保存了数据才给返回
                 if (gr.is31 && (this.getInsertedRecords().length > 0 || this.getUpdatedRecords().length > 0 || this.getDeletedRecords().length > 0)) {
                     alert(this.GetText("isSave"));
                     return;
                 }
                 var ower = gr.toP.split(";");//自表
                 var temp = [];
                 var row = pa.Rows[gr.rowIDp];//三点弹出的所在行
                 for (var i = 0; i < ower.length; i++) {
                     temp[i] = row[ower[i]];
                 }
                 pa.threePop(temp, ower, row, null, -1);
                 pa.EndEdit(0);
             }
         }
     }*/
}
function postCheck(y, grid) {//由直接按确认后才调用
@@ -430,10 +438,10 @@
function Base64() {
    // private property
    // private property
    _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    // public method for encoding
    // public method for encoding
    this.encode = function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
@@ -459,7 +467,7 @@
        return output;
    }
    // public method for decoding
    // public method for decoding
    this.decode = function (input) {
        var output = "";
        var chr1, chr2, chr3;
@@ -486,7 +494,7 @@
        return output;
    }
    // private method for UTF-8 encoding
    // private method for UTF-8 encoding
    _utf8_encode = function (string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";
@@ -507,7 +515,7 @@
        return utftext;
    }
    // private method for UTF-8 decoding
    // private method for UTF-8 decoding
    _utf8_decode = function (utftext) {
        var string = "";
        var i = 0;
@@ -982,7 +990,7 @@
                if (item.indexOf("_expr") > 0) continue;
                var cell = row.insertCell(i);
                var vlu = ob[item] == 'null' ? "" : ob[item];
                if (ob[item + "_expr"] == 0) {
                if (ob[item + "_expr"]=== 0) {
                    vlu = "***";
                    cell.hd = ob[item];
                }
@@ -1192,16 +1200,16 @@
        },
        close: function () {
            layer.close(this.layIndex);
                //by danaus 2021/4/8 14:45
                if(this._flg_ == 2) {
                    if (mygrid)
                        mygrid.ReloadBody();
                }else if(this._flg_ == -1){
                    //表示是序列号扫码入库调用,不需要刷新页面
                }else {
                    if (location)
                        location.reload();
                }
            //by danaus 2021/4/8 14:45
            if(this._flg_ == 2) {
                if (mygrid)
                    mygrid.ReloadBody();
            }else if(this._flg_ == -1){
                //表示是序列号扫码入库调用,不需要刷新页面
            }else {
                if (location)
                    location.reload();
            }
        }
@@ -1210,7 +1218,15 @@
}
function codeScanning(state,formid,formtype,type){
    var url = "/general/SerialNumber/" + (type == "out" ? "deliveryPage.jsp?" : "warehousing.jsp?");
    var page = "";
    if (type == "out") {
        page = "deliveryPage.jsp?";
    } else if (type == "in") {
        page = "warehousing.jsp?";
    } else if (type == "cyc") {
        page = "inventory.jsp?";
    }
    var url = "/general/SerialNumber/" + page;
    var parm = "formid=" + formid + "&formtype=" + formtype + "&doccode=" + getDoc("doccode", ".value");
    var isEdit = false;
    if (state != null) {
@@ -1262,7 +1278,7 @@
                gr.EndEdit(true);
                var rowids = value.rowids;
                for (var r in rowids) {
                    gr.setSerialNumber("serialnumbers", (rowids[r] != "" ? rowids[r].join(";") : ""), r);
                    gr.setSerialNumber("serialnumbers", (rowids[r] != "" ? rowids[r].join(";")  : ""), r);
                }
                if(isSave){//有改动过是需要保存
                    //处理保存自动执行事件
@@ -1356,46 +1372,67 @@
    return lay;
}
function delemptyrefdata() {
   return;
    return;
}
//解决格线高度问题
function gridHeight() {
    try {
        var panelHeight = (top.panelHeight == 0 ? document.documentElement.clientHeight : top.panelHeight);// 获取页面的总高度
        var panelType = top.myFresh.panel[top.tabindex];// 获取面板的类型
        if (';2;3;4;20;30;301;302;303;304;'.indexOf(';' + panelType + ';') != -1) {// 有树形的特殊窗体处理
        // let panelControlDiv=$('.panelControlDiv');
        // if(panelControlDiv && panelControlDiv.eq(0)){//是否有这个div层 xin 2023-8-22 15:59:36
        //     //固定这个层的最大高度为自适应获取的高度,如果不固定为最大高度,在有42控件显示层的时候,如果42控件显示层大于这个层的高度话会把他撑高。
        //     panelControlDiv.eq(0).css("max-height",panelControlDiv.outerHeight(true));
        // }
        // 有树形的特殊窗体处理
        if (';2;3;4;20;30;301;302;303;304;'.indexOf(';' + panelType + ';') != -1) {
            if (gridId.length == 0) return;
            var panelWidth = document.documentElement.clientWidth;
            var treeWidth = $('#wrappers').outerWidth(true);// 树形的宽度
            var treeHeight = $('#tplt-panels').outerHeight(true);// 树形的高度
            $('#' + gridId[0]).css('height', (treeHeight - 30) + 'px');// 减去30是因为margin和padding的值
            $('#' + gridId[0]).css('height', (treeHeight - 30 - 20) + 'px');// 减去30是因为margin和padding的值
            $('#' + gridId[0]).css('width', (panelWidth - treeWidth - 30) + 'px');
            return;
        }
        if (';1;9;10;15;17;18;497;499;'.indexOf(';' + panelType + ';') != -1 && typeof (formId) != 'undefined') {// 清单列表页面
            var topPanelHeight = $('#top_table').outerHeight(true);
        // 清单列表页面
        if (';1;9;10;15;17;18;19;497;499;'.indexOf(';' + panelType + ';') != -1 && typeof (formId) != 'undefined') {
            var topPanelHeight = $('#top_table').outerHeight(true);//这个是头部状态栏高度
            if (topPanelHeight == null) {// 没有标题的高度
                topPanelHeight = $('#tplt-top').outerHeight(true)+10;
                topPanelHeight = $('#tplt-top').outerHeight(true) + 10;
            }
            panelHeight = (panelHeight - topPanelHeight);//总高度 - 状态栏高度
            if (panelType == 1) {
                $('#' + gridId[0]).css('height', (panelHeight - topPanelHeight - 50) + 'px');// 减去50是因为margin和padding的值
                $('#' + gridId[0]).css('height', (panelHeight - 50) + 'px');// 减去50是因为margin和padding的值
                return;
            }
            if (panelType == 10 || panelType == 18) {
            panelHeight = (panelHeight - 60);//文字颜色说明占了50高
            if (panelType == 10 || panelType == 18 || panelType == 19) {
                var panelTable0Height = $('#panelTable0').outerHeight(true);
                $('#' + gridId[0]).css('height', (panelHeight - topPanelHeight - panelTable0Height - 50) + 'px');// 减去50是因为margin和padding的值
                panelHeight = panelHeight - panelTable0Height + 5;
                $('#' + gridId[0]).css('margin-bottom', '0').css('margin-top', '0');
                $('#' + gridId[0]).css('height', panelHeight + 'px');// 减去25是因为margin和padding的值
                return;
            }
            var panelFormIdHeight = $('#panel_' + formId).outerHeight(true);
            if(panelFormIdHeight==null){
            var panelFormIdHeight = $('#panel_' + formId).outerHeight(true);//面板控件占用的高度
            if (panelFormIdHeight == null) {
                panelFormIdHeight = $('.main_talbe').outerHeight(true);
            }
            $('#' + gridId[0]).css('height', (panelHeight - topPanelHeight - panelFormIdHeight - 50) + 'px');// 减去50是因为margin和padding的值
            panelHeight = (panelHeight - panelFormIdHeight);//总高度 - 面板控件占用的高度
            panelHeight = (panelHeight - 25);//总高度 - 其他pdding等因素;
            //文字颜色说明高度
            // let colorDescriptionContainer = $('.colorDescriptionContainer').outerHeight(true);
            // if (colorDescriptionContainer != null) {
            //     colorDescriptionContainer = 40;
            // }
            // panelHeight = (panelHeight - colorDescriptionContainer);//总高度 - 文字颜色说明高度
            $('#' + gridId[0]).css('height', panelHeight + 'px');// 减去50是因为margin和padding的值
            return;
        }
        return;
    } catch (e) {
        //$.messager.alert("操作提示","获取格线高度出现了错误!"+e,"warning");
        console.log("调节格线高度出现错误异常。"+e);
    }
}
@@ -1418,6 +1455,7 @@
        if (this.Collection[Cid] == null) {//第一次时进入
            this.getPanelParam(elem, Info, rod, Cid);//获取通用属性
        }
        this.PremissField(Info,this.Collection[Cid].wheres);//个别窗体需要添加条件进去 如 18窗体表号 xin 2023-2-8 08:46:12
        // var scrollTop = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
        this.Collection[Cid].top = elem.offsetTop + 26;//elem.offsetParent.offsetParent.offsetTop + elem.offsetParent.offsetTop + 28 - scrollTop;// 42控件div的top控制
        this.Collection[Cid].left = elem.offsetLeft;//elem.offsetParent.offsetParent.offsetLeft + elem.offsetParent.offsetLeft + 118;// 42类型div的left控制
@@ -1428,10 +1466,13 @@
    }
    , ShowDivForGrid: function (tg, elem, col,callback) {//格线数据加载
        var Cid = 'grid_table_' + col.rand;
        var value = tg.Edit.Tag.value + "";
        if(value =='' || this.inputValue==value){
            return;
        }
        var value="";
        try {
            value = tg.Edit.Tag.value + "";
            if (value == '' || this.inputValue == value) {
                return;
            }
        }catch (e){}
        this.inputValue=value;
        value = value.replace(/'/g, "''");
        value = value == "" ? "''" : value;
@@ -1476,11 +1517,28 @@
            list.wheres.sugg = Info.fk;
        }
        list.fk=Info.fk.toLowerCase().split(';');
        list.seekgroupid=Info.seekgroupid.toLowerCase().split(';');
        list.seekgroupid=Info.seekgroupid.toLowerCase().split(';');//接收自身字段名
        list._pop_json={};
        list.parm=list.wheres.sugg.split(';');
        list.wheres.ft = Info.ft;
        this.Collection[Cid] = list;
    }
    ,PremissField:function (Info,wheres) {//个别窗体需要 如:18类型表号
        if (wheres != null && wheres != '') {
            let sPremissField = Info.spremissfield || '';//自身条件字段名
            let dPremissField = Info.dpremissfield || '';//外表条件字段名
            wheres.formType = Info.ftformtype || 0;//表号的窗体类型
            wheres.parameter = "";
            if (sPremissField != '' && dPremissField != '') {
                let a = [];
                sPremissField = sPremissField.split(";");
                dPremissField = dPremissField.split(";");
                for (let d = 0; d < dPremissField.length; d++) {
                    a.push(dPremissField[d] + "=" + $("#" + sPremissField[d]).val() || '');
                }
                wheres.parameter = a.join(";");
            }
        }
    }
    , getGrideParam: function (tg, elem, col, Cid,callback) {//格线需要到的属性
        var list = {};
@@ -1515,8 +1573,8 @@
        list.array = [];
        var array = $('#' + list.id).data('title');//显示的字段名
        if (typeof  array == 'undefined'){//不是最新生成的界面
             list.isOld=true;
             callback(false);
            list.isOld=true;
            callback(false);
        }else{
            if (array != null && array.length>0) {
                array = eval('(' + array + ')');
@@ -1572,6 +1630,9 @@
        for (i = 0; i < bens.length; i++) {
            col = bens[i].toLowerCase();
            if (col.Trim() != "") {
                if (getDoc(col + "_expr", ".value") == 0) {//权限控制就不需要带入进去做条件 xin 2024-6-24 10:10:06
                    continue;
                }
                value = getDoc(col, ".value");
                // 针对 300029 资金帐户
                if (value == null) {
@@ -1640,6 +1701,31 @@
                            "data": '',//.data.item //解析数据列表
                        };
                    }
                    for(var i=0;i<res.count;i++){
                        var obj=res.data[i];
                        for(var o in obj) {
                            if (obj[o] != null && obj[o] != "" && isNaN(obj[o])) {
                                //console.log(obj[o]);
                                if ((obj[o] + "").match(/<("[^"]*"|'[^']*'|[^'">])*>/g) && (obj[o] + "").match(/<a[^>]*>|<img[^>]*>/g) == null) {
                                    obj[o + "_escape"] = obj[o];
                                    obj[o] = (obj[o] + "").replace(/</g, "&lt;").replace(/>/g, "&gt;");
                                }
                            }
                            //--- by danaus 2023-07-27 14:43
                            list.array.forEach(function (item, index) {
                                //处理5类型日期格式显示
                                if (item.field == o && (item.controlType != undefined && item.controlType == 5)) {
                                    var format = "yyyy-MM-dd";
                                    if (item.displayformat != undefined && item.displayformat != null && item.displayformat != "") {
                                        format = item.displayformat;
                                    }
                                    if (typeof (formatDate) == "function") {
                                        obj[o] = formatDate(obj[o], format);
                                    }
                                }
                            });
                        }
                    }
                    if (res instanceof Array) {
                        return {
                            "code": 0,//res.status, //解析接口状态
@@ -1687,7 +1773,7 @@
        } else {
            //执行重载
            this.Env42table[list.id].reload({
                 cols: [cols]//标题数组
                cols: [cols]//标题数组
                ,page: {
                    curr: 1 //重新从第 1 页开始
                }
@@ -1726,9 +1812,19 @@
        if (list.type == 0) {//面板
            var fk = list.fk;
            var p=panMain[panIndex];
            var encrypt = new JSEncrypt();
            encrypt.setPublicKey(rsakey.pubkey);
            for (var i = 0; i < fk.length; i++) {//赋值给页面
                if (typeof data[fk[i]] != 'undefined') {
                    var v = (data[fk[i]] == null ? "" : data[fk[i]]);
                    //处理值是html标签格式: 169 123<H 455>W 123,因为显示时候做了转义,这里取值就需要还原 by danaus 2023-07-04 09:34
                    if(data[fk[i]+"_escape"]!=undefined){
                        v=data[fk[i]+"_escape"];
                    }
                    if (getDoc(list.seekgroupid[i] + "_expr", ".value") != "" && getDoc(list.seekgroupid[i] + "_expr", ".value") == 0) {//权限控制 显示星号 xin 2024-6-24 10:22:43
                        setDoc(list.seekgroupid[i] + "_expr_val", ".value='" + encrypt.encrypt(v) + "'");//加密值
                        v = "******";
                    }
                    setDoc(list.seekgroupid[i], ".value='" + v + "'");
                    if (p.select[list.seekgroupid[i]] != null) {//有级联到31控件的字段需要加载 xin 2021-5-10 14:55:33
                        getSelect31(list.seekgroupid[i]);
@@ -1739,19 +1835,51 @@
                }
            }
        } else if (list.type == 1) {//格线
            //debugger;
            var fileds = list.formfileds;
            var V = [];
            let arrayExpr = {};
            let newExpr = {};
            for (let name in data) {
                //取出有权限字段
                if (data[name + "_expr"] != undefined && data[name + "_expr"] === 0) {
                    arrayExpr[name] = 1;
                }
            }
            for (var r = 0; r < fileds.length; r++) {
                if (typeof data[fileds[r]] != 'undefined') {
                    V.push((data[fileds[r]] != null ? data[fileds[r]] : ''));
                    //处理值是html标签格式: 169 123<H 455>W 123,因为显示时候做了转义,这里取值就需要还原 by danaus 2023-07-04 09:34
                    var value = data[fileds[r]] != null ? data[fileds[r]] : '';
                    if (data[fileds[r] + "_escape"] != undefined) {
                        value = data[fileds[r] + "_escape"];
                    }
                    if (arrayExpr[fileds[r]] != undefined) {
                        //表示这个值是加密了,需要注明
                        newExpr[list.to[r]] = value;
                    }
                    V.push(value);
                } else {
                    V.push('');
                }
            }
            if (list.gridIndex != null) {
                var gd = Grids[list.gridIndex];
                // var row=gd.Rows[list.rowid];//三点弹出的所在行
                gd.threePop(V, list.to, GT.rowIDp, null, -1, null, null, list.Tfield);//赋值给页面
                // var row=gd.Rows[list.rowid];//三点弹出的所在行,
                // by danaus 2024-02-07 10:24   TODO 需要增加返回有权限表达式的字段,更新对应的字段为有权限表达式,像3点弹出,42选择出来的数据返回是有权限为0的字段,则相应回填的字段也要设置成有权限为0的属性
                //清空关联
                if (gd.Cols[list.Tfield] != undefined && gd.Cols[list.Tfield].emptyrefdata != undefined
                    && gd.Cols[list.Tfield].emptyrefdata != "") {
                    var ed = gd.Cols[list.Tfield].emptyrefdata.toLowerCase().split(";");
                    for (var i = 0; i < ed.length; i++) {
                        gd.SetValue(GT.rowIDp, ed[i], "", 0);
                        gd.RefreshCell(GT.rowIDp, ed[i]);
                    }
                }
                //增加传expr=0的字段,把权限属性更新到对应的字段 by danaus 2024-02-23 10:07
                gd.threePop(V, list.to, GT.rowIDp, null, -1, null, null, list.Tfield, newExpr);//赋值给页面
                gd.EndEdit(0);
                this.inputValue = "";
            }
@@ -1778,20 +1906,26 @@
            this.table42 = layui.table;
            this.isControl42();
        } else {
            var that=this;
            $("<link>").attr({
                rel: "stylesheet",
                type: "text/css",
                href: "/layui/css/layui.css"
            }).appendTo("head");
            $.getScript('/layui/layui.all.js', function () {
                if (typeof layui == 'undefined') {
                    console.log('获取42控件插件层失败!');
                    return null;
                }
                that.table42 = layui.table;
                that.isControl42();
            })
            // var that=this;
            // let u=location.hostname;
            // let url=location.port;
            // try {
            //     $("<link>").attr({
            //         rel: "stylesheet",
            //         type: "text/css",
            //         href: u+":"+url + "/layui/css/layui.css"
            //     }).appendTo("head");
            //     $.getScript(u+":"+url + '/layui/layui.all.js', function () {
            //         if (typeof layui == 'undefined') {
            //             console.log('获取42控件插件层失败!');
            //             return null;
            //         }
            //         that.table42 = layui.table;
            //         that.isControl42();
            //     })
            // }catch (e) {
            //     console.log('获取layui插件信息出现错误');
            // }
        }
    }
    , isControl42: function () {
@@ -1814,7 +1948,7 @@
                var empty = panInfo[elem.id].emptyrefdata.toLowerCase();//清空关联字段
                empty = empty.split(';');
                for (var e = 0; e < empty.length; e++) {
                    if (panInfo[empty[e]].controltype == 43) {//43控件清空
                    if (panInfo[empty[e]]!=null && panInfo[empty[e]].controltype == 43) {//43控件清空
                        $("#" + empty[e]).val('').trigger('change');
                        continue;
                    }
@@ -1831,44 +1965,45 @@
};
//执行收款显示二维码或退款
function OpenPayAndRefund(doccode,type,formid){
        if(type=="pay"){//显示二维码
            let doc=doccode;
            var url = "/general/onlinePayment/payment.jsp?orderNo=" + doc+"&formId="+formid;
            layui.layer.open({
                type: 2,
                area: ['700px', '500px'],
                title: false,
                content: url,
                cancel: function (index, layero) {
                    var envt = $(layero).find("iframe")[0].contentWindow;
                    if (envt != null) {
                        if (!envt.isChang) {
                            if (!confirm("还没有支付,确定关闭吗?")) {
                                return false;
                            }
                        }
                        if (envt.ws != null) {
                            envt.ws.close();
    if(type=="pay"){//显示二维码
        let doc=doccode;
        var url = "/general/onlinePayment/payment.jsp?orderNo=" + doc+"&formId="+formid;
        layui.layer.open({
            type: 2,
            area: ['700px', '500px'],
            title: false,
            content: url,
            cancel: function (index, layero) {
                var envt = $(layero).find("iframe")[0].contentWindow;
                if (envt != null) {
                    if (!envt.isChang) {
                        if (!confirm("还没有支付,确定关闭吗?")) {
                            return false;
                        }
                    }
                    layer.closeAll();
                    getReductionURL(doc);
                }
            });
        }else{//确定
            $.ajax({
                url: "/gtGrid.do?m=newTran&formid="+formid+"&docCode="+doccode,
                type: "get",
                async: false,
                success: function (res) {
                    if(res.state==-1) {
                        layer.alert(res.msg,function (){location.reload();});
                    if (envt.ws != null) {
                        envt.ws.close();
                    }
                }, error: function (e, h, a) {
                    layer.alert(e.responseText,function (){location.reload();} );
                }
            });
                layer.closeAll();
                getReductionURL(doc);
            }
        });
    }else{//确定
        $.ajax({
            url: "/gtGrid.do?m=newTran&formid="+formid+"&docCode="+doccode,
            type: "get",
            async: false,
            success: function (res) {
                if(res.state==-1) {
                    layer.alert(res.msg,function (){location.reload();});
                }else{
                    location.reload();
                }
            }, error: function (e, h, a) {
                layer.alert(e.responseText,function (){location.reload();} );
            }
        });
    }
}
//针对收款二维码界面关闭的处理 xin 2021-9-8 10:09:33
@@ -1903,12 +2038,6 @@
    });
}
function colorisLoading(e) {
    Coloris({
        el: e
    });
}
function progressBar(e,value){
    top.$(e).jQMeter({
        goal: '100',
@@ -1917,6 +2046,112 @@
        barColor:'#6699cc',
        bgColor: '#CCC'
    });
}
function formatDate  (str, format) {
    var d = new Date(toDate(str));//4位的数字不作为日期处理,直接返回
    if (d==null||d.getFullYear() == '1970') return str;
    var o = {
        "M+": d.getMonth() + 1, //month
        "d+": d.getDate(),    //day
        "H+": d.getHours(),   //hour
        "m+": d.getMinutes(), //minute
        "s+": d.getSeconds(), //second
        "q+": Math.floor((d.getMonth() + 3) / 3),  //quarter
        "S+": d.getMilliseconds() //millisecond
    }
    var format = format ? format : "yyyy-MM-dd HH:mm";
    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            if (RegExp.$1 == "S") {
                format = format.replace(RegExp.$1, "000");
            } else {
                format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
            }
        }
    }
    return format;
};
function toDate  (dateStr) {
    var regex1 = /^\d{4}\/\d{1,2}\/\d{1,2}$|^\d{1,2}\/\d{1,2}\/\d{4}$|^\d{4}\/\d{1,2}\/\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}$|^\d{1,2}\/\d{1,2}\/\d{4} \d{1,2}:\d{1,2}:\d{1,2}:\d{1,3}$/;
    var regex2 = /^\d{4}-\d{1,2}-\d{1,2}$/;
    var regex3 = /^\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}$/;
    var regex4 = /^\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}$/;
    var regex5 = /^\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}.\d{1,3}$/;
    var regex6 = /^\d{4}-\d{1,2}$/;
    var regex7 = /^\d{4}$/;
    if (regex1.test(dateStr)) {
        return new Date(dateStr);
    } else if (regex2.test(dateStr)) {
        var arr = dateStr.split("-");
        return new Date(arr[0], arr[1] - 1, arr[2]);
    } else if (regex3.test(dateStr)) {
        var arr1 = dateStr.split(" ");
        var arr2 = arr1[0].split("-");
        var arr3 = arr1[1].split(":");
        return new Date(arr2[0], arr2[1] - 1, arr2[2], arr3[0], arr3[1])
    } else if (regex4.test(dateStr)) {
        var arr1 = dateStr.split(" ");
        var arr2 = arr1[0].split("-");
        var arr3 = arr1[1].split(":");
        return new Date(arr2[0], arr2[1] - 1, arr2[2], arr3[0], arr3[1], arr3[2])
    } else if (regex5.test(dateStr)) {
        var arr1 = dateStr.split(" ");
        var arr2 = arr1[0].split("-");
        var arr3 = arr1[1].split(":");
        return new Date(arr2[0], arr2[1] - 1, arr2[2], arr3[0], arr3[1], arr3[2].replace(/\.\d+/g, ""));
    } else if (regex6.test(dateStr)) {
        var arr2 = dateStr.split("-");
        return new Date(arr2[0], arr2[1] - 1)
    } else {
        var art2= timeFormat(dateStr,"yyyy-MM-dd HH:mm");
        return art2;
    }
};
function timeFormat(timeStr,formatStr){
    if(timeStr==""||timeStr==null||!isNaN(timeStr)){
        return null;
    }
    var arr = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    var arrtime = timeStr.split(" ");
    var str = arrtime[2];//年
    str += "-";
    var flag=false;
    for(var i=0;i<arr.length;i++){//月
        if(timeStr.indexOf(arr[i])!=-1){
            str += (i+1)>=10?(i+1):"0"+(i+1);
            flag=true;
        }
    }
    if(!flag){//不存在月份,表示不是这种格式的日期
        return timeStr;
    }
    str += "-";
    str += arrtime[1].substring(0,2);//日
    if(formatStr == "yyyy-MM-dd"){
        return str;
    }
    str += " ";
    var hh = arrtime[3].substring(0,2);//小时
    if(formatStr == "yyyy-MM-dd HH:mm"){//小时分钟
        if(timeStr.indexOf("PM")!=-1){
            str += (parseInt(hh)+12);
            str += arrtime[3].substring(2,5);
        }else{
            str += arrtime[3].substring(0,5);
        }
    }
    if(formatStr == "yyyy-MM-dd HH:mm:ss"){//小时分钟秒
        if(timeStr.indexOf("PM")!=-1){
            str += (parseInt(hh)+12);
            str += arrtime[3].substring(2,9);
        }else{
            str += arrtime[3].substring(0,9);
        }
    }
    return str;
}
$(function () {
    //单据窗体头部固定 xin 2020-10-26 17:23:58
@@ -1934,12 +2169,6 @@
    control42DivData.loading();
    //---end---关于42控件的处理结束------
    //--------46控件类型加载----------- xin 2022-4-26 15:51:38
    $(".coloris46").each(function () {
        colorisLoading('.coloris46');
    })
    //---------47控件类型加载---------- xin 2022-4-27 10:58:12
    $(".progressBar47").each(function () {
        let id = $(this).data("id");
@@ -1948,10 +2177,7 @@
        if (isNaN(value) || value == "") {//不全是数字
            value = 0;
        }
        if (value >= 1) {
            value = 100;
        }
        if (value > 0 && value < 1) {//这种情况是1表示100%的值,那么0.1*100=10
        if (value > 0 ) {//这种情况是1表示100%的值,那么0.1*100=10 //  && value < 1
            value = value * 100;
        }
        progressBar(this, value);