xinyb
2024-04-25 af17cd0295df0b28cfdfca7ca3b17ef6bfb1e440
WebRoot/js/index/funcLink.js
@@ -1,17 +1,28 @@
var version = 0;// 版本号
var pwdCallBack = null;// 密码输入点击确定后回调函数
var obj22 = null;// 22类型传值对象
var shx=false;
var leftWidth="0";
var gridId=[];
var shx = false;
var leftWidth = "0";
var gridId = [];
//var uploadObj = null;
//var edit='';
var pic={};// 格线附件上传参数属性
var rsakey={
    pubkey:"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkRupiYcKVGGUtDBDoR1t/1zm3ZtZgnte39iTJW6hlqjdY0UagKjpNiIv7J6XjtgfX7SgsR4AWnivqQHAICIvdPKfGZZzIs62OQ19MqrDTMoB/LvK5teNWhClv23WMUfRbP+EHgprT6hTw8U5apw1IB6i/y57NkLav792wiYBYRU4X45NoTaT+aiTSLFEflbfm94EXnhSS3vFkBmrZGy5BRNI8gmzafroslGx2Hk90CqlNdeKYxgZQ6xtvj+u33yrszWvPT6F9fsJT8aMjtvH050iYKRVct+x6Q7VRJgCI4MgvAexnTKdxW54YzvXCuO5bDiy5la7CgerWkTAq9dzXwIDAQAB"
var pic = {};// 格线附件上传参数属性
var rsakey = {
    pubkey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkRupiYcKVGGUtDBDoR1t/1zm3ZtZgnte39iTJW6hlqjdY0UagKjpNiIv7J6XjtgfX7SgsR4AWnivqQHAICIvdPKfGZZzIs62OQ19MqrDTMoB/LvK5teNWhClv23WMUfRbP+EHgprT6hTw8U5apw1IB6i/y57NkLav792wiYBYRU4X45NoTaT+aiTSLFEflbfm94EXnhSS3vFkBmrZGy5BRNI8gmzafroslGx2Hk90CqlNdeKYxgZQ6xtvj+u33yrszWvPT6F9fsJT8aMjtvH050iYKRVct+x6Q7VRJgCI4MgvAexnTKdxW54YzvXCuO5bDiy5la7CgerWkTAq9dzXwIDAQAB"
};
let arrayFileType_Panel = {};//保存上传返回的附件uuid;seq及文件类型
let arrayFileSeq_Panel = {};//保存上传返回的附件uuid;seq及文件名称,用于删除时根据文件名称匹配到seq
let fileUploadCount_Panel = 0;//保存附件总数
let formid_Panel;
let paramExprs = [];//保存功能链接参数值是密文的参数名称
function encryptFun(value) {
    var encrypt = new JSEncrypt();
    encrypt.setPublicKey(rsakey.pubkey);
    return encrypt.encrypt(value);
}
//拼接附件url
function getAttachmentUrl(staticUrl,formid,unid,domain,dbid,isShowOrgPic,width,height,fileExt,isDownLoad){
function getAttachmentUrl(staticUrl, formid, unid, domain, dbid, isShowOrgPic, width, height, fileExt, isDownLoad) {
    // if (staticUrl != null && staticUrl != "") {
    //     if (isDownLoad) {
    //         return unid + "_" + dbid + "_" + formid + "_" + fileExt;
@@ -108,12 +119,13 @@
            uploadAsync: false,   // bool是否多文件批量上传将并行异步/。默认为true
            showCaption: false,//是否显示被选文件的简介
            showBrowse: false,//是否显示文件浏览按钮
            showBatchDownload:true,//显示批量下载按钮
            showBatchDownload: true,//显示批量下载按钮
            showUpload: false,//是否显示上传按钮
            showCancel: false,//是否显示取消按钮
            showRemove: false,//是否显示移除按钮
            showDrag:false,//是否显示拖动按钮
            showDrag: false,//是否显示拖动按钮
            showClose: false,//是否显示关闭按钮
            multiple: id.type == 9 ? false : true,//by danaus 2024-02-19 17:39
            dropZoneEnabled: true,   //是否显示拖拽区域
            browseOnZoneClick: false,   //布尔值,是否在点击预览区域时触发文件浏览/选择。默认为false
            showUploadedThumbs: true,   // 是否在预览窗口中持续显示已经上传的文件缩略图(用于ajax上传),直到按下删除/清除按钮
@@ -122,8 +134,8 @@
            isNine: false,   // 19类型就为false,9类型就为true,下面有判断
            validateInitialCount: false,   // 是否包括初始预览文件数(服务器上传文件)验证minfilecount和maxfilecount。默认为false.
            overwriteInitial: true,   // 是否要覆盖初始预览内容和标题设置
            initialPreviewAsData:true,
            allowedFileExtensions:null,//允许上传的文件扩展名列表。默认情况下设置为 null
            initialPreviewAsData: true,
            allowedFileExtensions: null,//允许上传的文件扩展名列表。默认情况下设置为 null
            dropZoneTitle:'点击或拖拽文件',
            dropZoneClickTitle:'',
            layoutTemplates : {
@@ -238,16 +250,19 @@
                fileInputId.fileinput('upload');
            }).on('filebatchuploadsuccess', function(event, data) {
                // 此事件仅在ajax上传且文件批量上传成功之后触发
                let tmp={};
                let oldKey=id.val();// 旧的值
                let newKey=data.response.uuid?data.response.uuid+";":"";   // 新的值
                if(oldKey!=""){
                    var keys=oldKey.split(";");
                    for(var i=1;i<keys.length;i++){
                        newKey=newKey.replace(";"+keys[i]+";",";");
                fileUploadCount_Panel += data.files.length;
                arrayFileSeq_Panel = JSON.parse(data.response.seqMap);
                arrayFileType_Panel = JSON.parse(data.response.fileExtMap);
                let tmp = {};
                let oldKey = id.val();// 旧的值
                let newKey = data.response.uuid ? data.response.uuid + ";" : "";   // 新的值
                if (oldKey != "") {
                    var keys = oldKey.split(";");
                    for (var i = 1; i < keys.length; i++) {
                        newKey = newKey.replace(";" + keys[i] + ";", ";");
                    }
                }
                tmp.key=newKey;
                tmp.key = newKey;
                tmp.type=data.response.type;
                tmp.filedId=name;
                tmp.oldKey=oldKey;
@@ -257,10 +272,10 @@
                    data.thumbs.attr("data-key",JSON.stringify(tmp));
                }
                // 格线调用
                if(g){
                    let grid=g.id;
                    let obj=unid+";"+data.response.fileType;// by by danaus 2020/4/30 11:32
                    grid.SetValue(g.row, g.col,obj,0);
                if(g) {
                    let grid = g.id;
                    let obj = unid + ";" + data.response.fileType;// by danaus 2020/4/30 11:32
                    grid.SetValue(g.row, g.col, obj, 0);
                    grid.RefreshCell(g.row, g.col);
                }
            }).on('filebeforedelete', function(event, params) {
@@ -270,6 +285,8 @@
            }).on('filedeleted', function(event, key) {
                // 在删除initialPreview内容集中的每个缩略图文件之后触发此事件
                // 格线调用
                debugger;
                fileUploadCount_Panel--;
                if (isGrid != null && isGrid == 'grid') {
                    if (g) {
                        let grid = g.id;
@@ -280,6 +297,7 @@
                } else {   // 面板
                    let va = id.val();
                    key = key.split(";")[1];
                    delete arrayFileType_Panel[key];
                    va = va.replace(";" + key, "");
                    if (va.indexOf(";") < 0) {
                        va = "";
@@ -289,20 +307,21 @@
                }
            }).on('filesuccessremove', function(event, val) {
                // 使用缩略图删除按钮删除成功上传的缩略图后,会触发此事件
                if(val!=null && val.key!=null){
                    let vals = val.key.split(";");
                    let uuid;
                    let seq = 0;
                    if (vals.length > 1) {
                        uuid = val.key.split(";")[0];
                        seq = val.key.split(";")[1];
                    }
                debugger;
                if(val!=null && val.key!=null) {
                    let title = val.title;//文件名称,用于查找对应的seq
                    let delSeq = arrayFileSeq_Panel[title];//对应删除的seq
                    let uuid = val.key.split(";")[0];
                    $.ajax({
                        type: "POST",
                        dataType: 'json',
                        url: '/attachment/deleteOwnerAttachment.do?type=' + val.type + '&unid=' + uuid + '&seq=' + seq,   // 删除路径
                        url: '/attachment/deleteOwnerAttachment.do?formid=' + formid_Panel + '&fieldid=' + val.filedId + '&ishd=1&type=' + val.type + '&unid=' + uuid + '&seq=' + delSeq,   // 删除路径
                        success: function (data) {
                            let newUid = val.oldKey == "" ? "" : val.oldKey.replace(";" + seq, "");
                            fileUploadCount_Panel--;
                            delete arrayFileSeq_Panel[title];
                            delete arrayFileType_Panel[uuid + ";" + delSeq];
                            // let newUid = val.oldKey == "" ? "" : val.oldKey.replace(";" + delSeq, "");
                            let newUid = val.key == "" ? "" : val.key.replace(";" + delSeq, "");//by danaus 2024-02-21 16:56
                            id.val(newUid);
                        }
                    });
@@ -427,6 +446,7 @@
    var isReadOnly = false;
    try {
        // 上传附件需要的参数
        formid_Panel = formid;
        var param = {};
        var panelautoSave = "";//标记是否为单据
        var readerUserCodes = $('#readerusercodes').val();
@@ -1394,8 +1414,8 @@
       //$.messager.defaults = { ok: "是", cancel: "否" };
        $.messager.confirm('提示', mes, function(r) {
            if (r) {
                funcLink$(f, t, sfs, lfs, lk, sd, ld, isp, ef, ref, clo,
                    autoSave, sortid, messageTip, mes,rowid);
                    funcLink$(f, t, sfs, lfs, lk, sd, ld, isp, ef, ref, clo,
                        autoSave, sortid, messageTip, mes, rowid);
                $('.panel-tool-close').show();
            }else {
               closeLoading(); //更新客户状态的取消
@@ -1671,6 +1691,7 @@
                "formid": f,
                "param": paramVa,
                "paramFields": lfs.join(";"),//值对应该的字段列表
                "paramExprs": paramExprs.join(";"),//值对应该的字段权限=0列表
                "disableDuplicateSubmitUUID": systemUuid.uuid //by danaus 2019/11/22 11:12
            },
            beforeSend: function (XMLHttpRequest) {
@@ -1836,6 +1857,14 @@
                // console.log("faceswip:"+JSON.stringify(obj))
                top.layIframeWindow.faceSwipingInit(data);
                top.layeerFace=layero;
            }
        });
    } else if (data.errcode != null && data.errcode == 0) {
        $.messager.confirm('提示', "拉取企业微信标签已同步", function(r) {
            if(r){
                location.reload();
            }else{
                location.reload();
            }
        });
    }else {
@@ -2081,10 +2110,13 @@
function editCustomControl(){
    let formid = formId;
    let formtype = formType;
    let docCode = getDoc("doccode", ".value");
    let docCode = '';
    if (typeof getDoc !="undefined") {
        getDoc("doccode", ".value");
    }
    let queryString = "";
    let url = "/general/CustomControl/editLayout.html?formId=" + formid + "&formType=" + formtype + "&docCode=" + docCode;
    top.addTab('自定义控件布局', '', '', '', url, '', '');
    let url = "/general/CustomControl/editLayout.html?formId=" + formid + "&formType=" + formtype + "&docCode=" + docCode+"&tabIndex="+top.tabindex;
    top.addTab(top.layoutTitle+'布局', '', '', '', url, '', '');
}
/**
 * top页面info按钮执行函数
@@ -2234,39 +2266,54 @@
    }
    return str;
}
function getValue(str,format,row) { // 获取页面值
    var t;
function getValue(fieldId, format, row) { // 获取页面值
    let value;
    try {
        t = getDoc(str.toLowerCase(), ".value");
        //TODO 是实现面板需要根据权限是否为0取不同的值 by danaus 2024-03-08 14:53
        value = getDoc(fieldId.toLowerCase(), ".value");
        let value_expr = getDoc(fieldId.toLowerCase() + "_expr", ".value");
        let value_expr_val = getDoc(fieldId.toLowerCase() + "_expr_val", ".value");
        if (value_expr != undefined && value_expr == 0) {
            value = value_expr_val;
            paramExprs.push(fieldId.toLowerCase());
        }
    } catch (e) {
        t=undefined; // by danaus  出现异常赋值   作为判断识别
        value = undefined; // by danaus  出现异常赋值   作为判断识别
    }
    if(t==null){ // 只有是这种情况才需要继续向下查找 by danaus 原则:如果页面上有这个字段定义,不管它是什么值,都把它替换,如果没有这个字段,就继续向下查找,直到没有 则不用替(传什么就是什么)
    if (value == null) { // 只有是这种情况才需要继续向下查找 by danaus 原则:如果页面上有这个字段定义,不管它是什么值,都把它替换,如果没有这个字段,就继续向下查找,直到没有 则不用替(传什么就是什么)
        if (typeof (mygrid) != "undefined") {
            try {
                if(row==undefined){
                    var tempRow=mygrid.getFristRow(1);//再判断一次,以确定这个字段是否存在于表格,存在才需要提示
                    if(tempRow!=null&&tempRow[str.toLowerCase()]!=undefined) {
                if (row == undefined) {
                    var tempRow = mygrid.getFristRow(1);//再判断一次,以确定这个字段是否存在于表格,存在才需要提示
                    if (tempRow != null && tempRow[fieldId.toLowerCase()] != undefined) {
                        alert("请从表格选中需要执行的行");
                        return false;
                    }
                }
                var d=t; // 保存原值
                if(row!=undefined){
                    t = (row[str.toLowerCase()+"Link"]!==undefined)?row[str.toLowerCase()+"Link"]:((row[str.toLowerCase()]==undefined)?null:row[str.toLowerCase()]);
                }else{
                    t=mygrid.getField(str.toLowerCase());
                let orgValue = value; // 保存原值
                if (row != undefined) {
                    value = (row[fieldId.toLowerCase() + "Link"] !== undefined) ? row[fieldId.toLowerCase() + "Link"] : ((row[fieldId.toLowerCase()] == undefined) ? null : row[fieldId.toLowerCase()]);
                    if (row[fieldId.toLowerCase() + "_expr"] != undefined && row[fieldId.toLowerCase() + "_expr"] == 0) {
                        //密文,取_expr_val的值
                        value = row[fieldId.toLowerCase() + "_expr_val"];
                        paramExprs.push(fieldId.toLowerCase());
                    }
                } else {
                    value = mygrid.getField(fieldId.toLowerCase());
                }
                if (t==null&&d==null) return str;
                if (value == null && orgValue == null) return fieldId;
            } catch (e) {
                return str;
                return fieldId;
            }
        }
        return t;
    }else{
        if(t=='null'){t="";}
        return t;
        return value;
    }else {
        if (value == 'null') {
            value = "";
        }
        return value;
    }
}
@@ -2778,6 +2825,63 @@
    },'json')
})
/**
 * css样式编辑器 xin 2024-1-29 10:34:34
 * @param grid
 * @param panel
 */
//getTextCssEdit(option)//option是格线当前行触发的对象可以获取值和返回
var textCssOption={};
function getTextCssEdit(option){
    if (option && option.close) {//关闭
        if (option.type == 1 && option.value != null) {//给面板赋值
            $doc(textCssOption.id).val(option.value);
        }
        layer.closeAll();
        return false;
    }
    let cssText = "";
    let type = 0;
    let pindex = 0;
    if (typeof (panIndex) != "undefined") {
        pindex = panIndex;
    }
    textCssOption = option;
    if (option && option.id) {//获取值(面板)
        if (option.index != null) {//取对应元素的控件值
            panIndex = option.index;
            cssText = $doc(option.id).val();
        } else {
            cssText = $("#" + option.id).val();
        }
        type = 1;//面板控件
    }
    if(option.grid || option.value){//获取值(格线)
        cssText=option.value;
    }
    layer.open({
        type: 2,
        area: ['400px', '780px'],
        closeBtn: 0,
        isOutAnim: false,
        title: false,
        resize: false,
        fixed: false,
        shade: 0.6,
        skin: 'layui-layer-molv',
        shadeClose: false, // 点击遮罩区域,关闭弹层,
        content: encodeURL('/general/textCssEdit/textCssEdit.html?cssText=' + cssText + '&type=' + type + '&grid=' + option.grid),//cssText有值时候可以传过去
        move: false,
        success: function (layero, index) {
            // createFormElement();
        }, cancel: function (index, layero) {
            panIndex = pindex;
        }, end: function () {
            panIndex = pindex;
        }
    });
}
function checkVersion(){
    setTimeout(checkVersion, 86400000);
    setTimeout(checkVersion2, 86400000);//24小时调用一次