zoukankan      html  css  js  c++  java
  • Dynamic 工具类

    前端

    PostbirdAlertBox = {
        //=====================弹窗提示========================
        /*
         *  context:弹窗内容
         *  通过全局对象 PostbirdAlertBox 调用相关方法,三个方法为: 
         *  PostbirdAlertBox.alert({}); 提示弹窗
         *  PostbirdAlertBox.confirm({}); 确定弹窗
         *  PostbirdAlertBox.prompt({});输入弹窗
         */
        containerClass: 'postbird-box-container active',
        box: null, // 用于标识增加的div
        textTemplate: {
            title: '提示信息',
            content: '提示内容',
            okBtn: '确认',
            cancelBtn: '取消',
            contentColor: '#000000',
            okBtnColor: '#0e90d2',
            promptTitle: '请输入内容',
            promptOkBtn: "确认"
        },
        //绘制弹窗界面
        getAlertTemplate: function () {
            /* 
              PostbirdAlertBox.alert({
              'title': '提示标题',
              'content': '提示内容主体',
              'okBtn': '确认按钮',
              'contentColor': 'red(提示内容颜色)',
              'onConfirm': function () {//点击确认按钮执行回调方法
              console.log("回调触发后隐藏提示框");
              alert("回调触发后隐藏提示框");
             }
             */
            var temp =
                '<div class="postbird-box-dialog">' +
                '<div class="postbird-box-content">' +
                '<div class="postbird-box-header">' +
                '<span class="postbird-box-close-btn">×</span>' +
                '<span class="postbird-box-title">' +
                '<span >' + this.textTemplate.title + '</span>' +
                '</span>' +
                '</div>' +
                '<div class="postbird-box-text">' +
                '<span style="color:' + this.textTemplate.contentColor + ';">' + this.textTemplate.content + '</span>' +
                '</div>' +
                '<div class="postbird-box-footer">' +
                '<button class="btn-footer btn-block-footer btn-footer-ok" style="color:' + this.textTemplate.okBtnColor + ';">' + this.textTemplate.okBtn + '</button>' +
                '</div>' +
                '</div>' +
                '</div>';
            return temp;
        },
        getConfirmTemplate: function () {
            /*
            PostbirdAlertBox.confirm({
            'title': '提示标题',
            'content': '离开本页面进行跳转',
            'okBtn': '好的',
            'contentColor': 'red',
            'onConfirm': function () {
                alert("点击确认按钮触发事件");
            },
            'onCancel': function () {
                alert("点击取消按钮触发事件");
            }
        });
            }
            */
            return '<div class="postbird-box-container">' +
                '<div class="postbird-box-dialog">' +
                '<div class="postbird-box-content">' +
                '<div class="postbird-box-header">' +
                '<span class="postbird-box-close-btn">×</span>' +
                '<span class="postbird-box-title">' +
                '<span >' + this.textTemplate.title + '</span>' +
                '</span>' +
                '</div>' +
                '<div class="postbird-box-text">' +
                '<span style="color:' + this.textTemplate.contentColor + ';">' + this.textTemplate.content + '?</span>' +
                '</div>' +
                '<div class="postbird-box-footer">' +
                '<button class="btn-footer btn-left-footer btn-footer-cancel" style="color:' + this.textTemplate.cancelBtnColor + ';">' + this.textTemplate.cancelBtn + '</button>' +
                '<button class="btn-footer btn-right-footer btn-footer-ok"  style="color:' + this.textTemplate.okBtnColor + ';">' + this.textTemplate.okBtn + '</button>' +
                '</div>' +
                '</div>' +
                '</div>' +
                '</div>';
        },
        getPromptTemplate: function () {
            /*
             PostbirdAlertBox.prompt({
             'title': '请输入姓名',
             'okBtn': '提交',
             onConfirm: function (data) {
             console.log("输入框内容是:" + data);
             alert("点击确认按钮触发事件");
                 },
             onCancel: function (data) {
             console.log("输入框内容是:" + data);
             alert("点击取消按钮触发事件");
             },
             });
             */
            return '<div class="postbird-box-container">' +
                '<div class="postbird-box-dialog">' +
                '<div class="postbird-box-content">' +
                '<div class="postbird-box-header">' +
                '<span class="postbird-box-close-btn">×</span>' +
                '<span class="postbird-box-title">' +
                '<span >' + this.textTemplate.title + '</span>' +
                '</span>' +
                '</div>' +
                '<div class="postbird-box-text">' +
                '<input type="text" class="postbird-prompt-input" autofocus="true" >' +
                '</div>' +
                '<div class="postbird-box-footer">' +
                '<button class="btn-footer btn-left-footer btn-footer-cancel" style="color:' + this.textTemplate.cancelBtnColor + ';">' + this.textTemplate.cancelBtn + '</button>' +
                '<button class="btn-footer btn-right-footer btn-footer-ok"  style="color:' + this.textTemplate.okBtnColor + ';">' + this.textTemplate.okBtn + '</button>' +
                '</div>' +
                '</div>' +
                '</div>' +
                '</div>';
        },
        //执行回调方法
        alert: function (opt) {
            this.textTemplate.title = opt.title || this.textTemplate.title;
            this.textTemplate.content = opt.content || this.textTemplate.content;
            this.textTemplate.okBtn = opt.okBtn || this.textTemplate.okBtn;
            this.textTemplate.okBtnColor = opt.okBtnColor || this.textTemplate.okBtnColor;
            this.textTemplate.contentColor = opt.contentColor || this.textTemplate.contentColor;
            var box = document.createElement("div"),
                _this = this;
            box.className = this.containerClass;
            box.innerHTML = this.getAlertTemplate();
            this.box = box;
            document.body.appendChild(this.box);
            var btn = document.getElementsByClassName('btn-footer-ok');
            btn[btn.length - 1].focus();
            btn[btn.length - 1].onclick = function () {
                if (opt.onConfirm) {
                    opt.onConfirm();
                }
                _this.removeBox();
            }
        },
        confirm: function (opt) {
            this.textTemplate.title = opt.title || this.textTemplate.promptTitle;
            this.textTemplate.promptPlaceholder = opt.promptPlaceholder || this.textTemplate.promptPlaceholder;
            this.textTemplate.okBtn = opt.okBtn || this.textTemplate.promptOkBtn;
            this.textTemplate.okBtnColor = opt.okBtnColor || this.textTemplate.okBtnColor;
            this.textTemplate.cancelBtn = opt.cancelBtn || this.textTemplate.cancelBtn;
            this.textTemplate.cancelBtnColor = opt.cancelBtnColor || this.textTemplate.cancelBtnColor;
            this.textTemplate.content = opt.content || this.textTemplate.content;
            var box = document.createElement("div"),
                _this = this;
            this.box = box;
            box.className = this.containerClass;
            box.innerHTML = this.getConfirmTemplate();
            document.body.appendChild(box);
            var okBtn = document.getElementsByClassName('btn-footer-ok');
            okBtn[okBtn.length - 1].focus();
            okBtn[okBtn.length - 1].onclick = function () {
                if (opt.onConfirm) {
                    opt.onConfirm();
                }
                _this.removeBox();
            }
            var cancelBtn = document.getElementsByClassName('btn-footer-cancel');
            cancelBtn[cancelBtn.length - 1].onclick = function () {
                if (opt.onCancel) {
                    opt.onCancel();
                }
                _this.removeBox();
            }
        },
        prompt: function (opt) {
            this.textTemplate.title = opt.title || this.textTemplate.title;
            this.textTemplate.content = opt.content || this.textTemplate.content;
            this.textTemplate.contentColor = opt.contentColor || this.textTemplate.contentColor;
            this.textTemplate.okBtn = opt.okBtn || this.textTemplate.okBtn;
            this.textTemplate.okBtnColor = opt.okBtnColor || this.textTemplate.okBtnColor;
            this.textTemplate.cancelBtn = opt.cancelBtn || this.textTemplate.cancelBtn;
            this.textTemplate.cancelBtnColor = opt.cancelBtnColor || this.textTemplate.cancelBtnColor;
            var box = document.createElement("div"),
                _this = this;
            box.className = this.containerClass;
            box.innerHTML = this.getPromptTemplate();
            this.box = box;
            document.body.appendChild(box);
            var promptInput = document.getElementsByClassName('postbird-prompt-input');
            promptInput = promptInput[promptInput.length - 1];
            promptInput.focus();
            var okBtn = document.getElementsByClassName('btn-footer-ok');
            var inputData = promptInput.value;;
            okBtn[okBtn.length - 1].onclick = function () {
                if (opt.onConfirm) {
                    opt.onConfirm(promptInput.value);
                }
                _this.removeBox();
            }
            var cancelBtn = document.getElementsByClassName('btn-footer-cancel');
            cancelBtn[cancelBtn.length - 1].onclick = function () {
                if (opt.onCancel) {
                    opt.onCancel(promptInput.value);
                }
                _this.removeBox();
            }
        },
        //关闭弹窗
        colse: function () {
            this.removeBox();
        },
        removeBox: function () {
            var box = document.getElementsByClassName(this.containerClass);
            document.body.removeChild(box[box.length - 1]);
        }
    }
    DynamicHelper={
    //=================显示请求加载动画====================
     ShowLoading:function(context) {
        //context:加载提示内容
        //加载的图片路径可替换
        var tit = context || "加载中,请稍候…";
        var loadingHtml =
            "<div style=' 100%; height: 100%; position: fixed; z-index: 9999999; left: 0px; top: 0px; background: rgba(255,255,255,0.2);'><div style='position: absolute;left:50%;top:50%;transform: translate(-50%, -50%);background:white; text-align:center;'><img src='/_imgs/AdvFind/progress.gif' style='40px;height:40px;' /><br/><span style='margin-top:5px;'>" +
            tit + "</span></div></div>";
        var loadingElement = document.createElement('div');
        loadingElement.id = "myloading";
        loadingElement.innerHTML = loadingHtml;
        window.parent.parent.document.body.appendChild(loadingElement);
    },
    //=================加载请求动画关闭====================
     CloseLoading:function() {
        var element = window.parent.parent.document.getElementById("myloading");
        window.parent.parent.document.body.removeChild(element);
    },
    //=================FetchXml数据查询====================
    GetEntityDatas:function(url, fetchxml) {
        //url:请求地址,fetchxml:fetchXml语句
        var req = new XMLHttpRequest();
        var list = [];
        var erro = "";
        req.open("GET", encodeURI(url + encodeURI(fetchxml), true), false);
        req.setRequestHeader("Accept", "application/json");
        req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
        req.setRequestHeader("OData-MaxVersion", "4.0");
        req.setRequestHeader("OData-Version", "4.0");
        req.onreadystatechange = function () {
            if (this.readyState == 4) {
                req.onreadystatechange = null;
                if (this.status == 200) {
                    if (JSON.parse(this.response).value.length > 0)
                        list = JSON.parse(this.response).value;
                } else {
                    erro = JSON.parse(this.response).error;
                }
            }
        };
        req.send();
        if (erro != "") {
            return erro;
        } else {
            return list;
        }
    },
    //===================冒泡顺序排序======================
    Order:function(arr) {
        //arr:冒泡数据集合
        // 遍历数组,次数就是arr.length - 1
        if (arr.length > 1) {
            for (var j = 0; j < arr.length - 1; j++) {
                for (var i = 0; i < arr.length - 1; i++) {
                    var num_1 = arr[i];
                    var num_2 = arr[i + 1];
                    if (num_1 > num_2) {
                        var temp = arr[i];
                        arr[i] = arr[i + 1];
                        arr[i + 1] = temp;
                    }
                }
            }
        }
        return arr;
    },
    //===================冒泡倒序排序======================
    FlashbacksSort:function(arr) {
        //arr:冒泡数据集合
        // 遍历数组,次数就是arr.length - 1
        if (arr.length > 1) {
            for (var j = 0; j < arr.length - 1; j++) {
                for (var i = 0; i < arr.length - 1; i++) {
                    var num_1 = arr[i];
                    var num_2 = arr[i + 1];
                    if (num_1 < num_2) {
                        var temp = arr[i];
                        arr[i] = arr[i + 1];
                        arr[i + 1] = temp;
                    }
                }
            }
        }
        return arr;
        },
    //==================金额小写转大写=====================
    changeNumMoneyToChinese:function(money) {
        //money:十进制数据
        var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //汉字的数字
        var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位
        var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位
        var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位
        var cnInteger = "整"; //整数金额时后面跟的字符
        var cnIntLast = "元"; //整型完以后的单位
        var maxNum = 999999999999999.9999; //最大处理的数字
        var IntegerNum; //金额整数部分
        var DecimalNum; //金额小数部分
        var ChineseStr = ""; //输出的中文金额字符串
        var parts; //分离金额后用的数组,预定义
        var Symbol = "";//正负值标记
        if (money == "") {
            return "";
        }
    
        money = parseFloat(money);
        if (money >= maxNum) {
            alert('超出最大处理数字');
            return "";
        }
        if (money == 0) {
            ChineseStr = cnNums[0] + cnIntLast + cnInteger;
            return ChineseStr;
        }
        if (money < 0) {
            money = -money;
            Symbol = "负 ";
        }
        money = money.toString(); //转换为字符串
        if (money.indexOf(".") == -1) {
            IntegerNum = money;
            DecimalNum = '';
        } else {
            parts = money.split(".");
            IntegerNum = parts[0];
            DecimalNum = parts[1].substr(0, 4);
        }
        if (parseInt(IntegerNum, 10) > 0) { //获取整型部分转换
            var zeroCount = 0;
            var IntLen = IntegerNum.length;
            for (var i = 0; i < IntLen; i++) {
                var n = IntegerNum.substr(i, 1);
                var p = IntLen - i - 1;
                var q = p / 4;
                var m = p % 4;
                if (n == "0") {
                    zeroCount++;
                }
                else {
                    if (zeroCount > 0) {
                        ChineseStr += cnNums[0];
                    }
                    zeroCount = 0; //归零
                    ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
                }
                if (m == 0 && zeroCount < 4) {
                    ChineseStr += cnIntUnits[q];
                }
            }
            ChineseStr += cnIntLast;
            //整型部分处理完毕
        }
        if (DecimalNum != '') { //小数部分
            var decLen = DecimalNum.length;
            for (var i = 0; i < decLen; i++) {
                var n = DecimalNum.substr(i, 1);
                if (n != '0') {
                    ChineseStr += cnNums[Number(n)] + cnDecUnits[i];
                }
            }
        }
        if (ChineseStr == '') {
            ChineseStr += cnNums[0] + cnIntLast + cnInteger;
        } else if (DecimalNum == '') {
            ChineseStr += cnInteger;
        }
        ChineseStr = Symbol + ChineseStr;
        return ChineseStr;
    },
    //========判断当前操作人员的安全角色是否符合===========
    CallerPermissionsIsAre:function(list) {
        //list:安全角色名称集合
        //获取当前操作者权限id集合
        var RoleId = Xrm.Page.context.getUserRoles();//获取当前的权限id
        var bool = false;
        for (var i = 0; i < RoleId.length; i++) {
            //之所以用for是因为当前的用户可能不止一个角色,我们需要将他遍历出来。
            var req = new XMLHttpRequest();
            req.open("GET", "/api/data/v9.0/roles(" + RoleId[i] + ")?$select=name", false);//true是异步,false是同步
            req.setRequestHeader("OData-MaxVersion", "4.0");
            req.setRequestHeader("OData-Version", "4.0");
            req.setRequestHeader("Accept", "application/json");
            req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            req.setRequestHeader("Prefer", "odata.include-annotations="*"");
            req.onreadystatechange = function () {
                if (this.readyState === 4) {
                    req.onreadystatechange = null;
                    if (this.status === 200) {//200执行成功且有返回值
                        var result = JSON.parse(this.response);
                        var name = result["name"];
                        if (list.indexOf(name) != -1) {
                            bool = true;
                        }
    
                    } else {
                        var error = JSON.parse(this.response).error;
                        Xrm.Utility.alertDialog(this.statusText + error.message + "错误");
                    }
                }
            };
            req.send();
        }
        return bool;
    },
    //============获取指定用户的安全角色名称===============
    GetUserRolesName:function (UserID) {
        //UserID:用户的Guid,带{}
        var ServerUrl = Xrm.Page.context.getClientUrl();
        if (ServerUrl.match(//$/)) {
            ServerUrl = ServerUrl.substring(0, ServerUrl.length - 1);
        }
        var retrieveReq = new XMLHttpRequest();
        retrieveReq.open("GET", ServerUrl + "/XRMServices/2011/OrganizationData.svc/SystemUserSet?$select=systemuserroles_association/Name&$expand=systemuserroles_association&$filter=SystemUserId eq guid'" + UserID + "'", false);
        retrieveReq.setRequestHeader("Accept", "application/json");
        retrieveReq.setRequestHeader("Content-Type", "application/json;charset=utf-8");
        retrieveReq.send();
        var ODataResult = JSON.parse(retrieveReq.responseText).d;
        var rolesNameList = [];
        if (ODataResult != null && ODataResult.results.length == 1 && ODataResult.results[0].systemuserroles_association.results.length > 0) {
            var oDataRoles = ODataResult.results[0].systemuserroles_association.results;
            for (var i = 0; i < oDataRoles.length; i++) {
                rolesNameList.push(oDataRoles[i]["Name"]);
            }
        }
        return rolesNameList;
    },
    //==================实体字段赋值=======================
    FileldsSetValue:function(list, obj) {
        //list:实体字段集合,obj需要赋值的信息
        //循环添加信息,查找类型不予添加
        for (var key in list) {
            var filedName = list[key];
            //验证字段是否存在
            if (Xrm.Page.getAttribute(list[key]) == null) {
                return list[key] + ":字段不存在!";
            }
            //判断当前字段类型
            var type = Xrm.Page.getControl(filedName).getControlType();
            switch (type) {
                case "standard"://文本格式,日期格式,十进制格式,两个选项
                    var DateType = new Date(Xrm.Page.getAttribute(filedName).getValue());
                    if (DateType == "Invalid Date") {
                        //文本格式
                        Xrm.Page.getAttribute(filedName).setValue(obj[filedName]);
                    }
                    else {
                        //日期
                        Xrm.Page.getAttribute(filedName).setValue(new Date(obj[filedName]));
                    }
                    break;
                case "multiselectoptionset"://多选选项集
                    //获取选项集值
                    var multi_select_value = obj[filedName].split(',');
                    //将文本类型的信息转化为数字类型进行数据赋值
                    var multiSelectList = [];
                    for (var i in multi_select_value) {
                        multiSelectList.push(multi_select_value[i]);
                    }
                    //信息赋值
                    Xrm.Page.getAttribute(filedName).setValue(multiSelectList);
                    break;
                case "optionset"://单选选项集
                    Xrm.Page.getAttribute(filedName).setValue(obj[filedName]);
                    break;
                default:
            }
        }
    },
    //================实体字段隐藏显示=====================
    FileldsSetVisible:function(list, isHiddon) {
        //list:字段集合,isHiddon:是否隐藏 true隐藏 false显示
        //判断是隐藏还是显示
        if (isHiddon) {
            //隐藏
            for (var i in list) {
                //验证字段是否存在
                if (Xrm.Page.getAttribute(list[i]) == null) {
                    return list[i] + ":字段不存在!";
                }
                //隐藏字段
                Xrm.Page.getControl(list[i]).setVisible(false)
            }
        } else {
            //显示
            for (var i in list) {
                //验证字段是否存在
                if (Xrm.Page.getAttribute(list[i]) == null) {
                    return list[i] + ":字段不存在!";
                }
                //显示字段
                Xrm.Page.getControl(list[i]).setVisible(true)
            }
        }
    },
    //===============-实体字段是否必填=====================
    FileldsSetRequiredLevel:function(list, isRequired) {
        //list:字段集合,isRequired:是否必填 true必填 false非必填
        //判断是隐藏还是显示
        if (isRequired) {
            //必填
            for (var i in list) {
                //验证字段是否存在
                if (Xrm.Page.getAttribute(list[i]) == null) {
                    return list[i] + ":字段不存在!";
                }
                //字段必填
                Xrm.Page.getAttribute(list[i]).setRequiredLevel('required');
            }
        } else {
            //非必填
            for (var i in list) {
                //验证字段是否存在
                if (Xrm.Page.getAttribute(list[i]) == null) {
                    return list[i] + ":字段不存在!";
                }
                //字段非必填
                Xrm.Page.getAttribute(list[i]).setRequiredLevel('none');
            }
        }
    },
    //================实体字段是否锁定=====================
    FileldsSetDisabled:function(list, isLock) {
        //list:字段集合,isLock:是否锁定 true锁定 false非锁定
        //判断是隐藏还是显示
        if (isLock) {
            //锁定
            for (var i in list) {
                //验证字段是否存在
                if (Xrm.Page.getAttribute(list[i]) == null) {
                    return list[i] + ":字段不存在!";
                }
                //字段锁定
                Xrm.Page.getControl(list[i]).setDisabled(true)
            }
        } else {
            //非锁定
            for (var i in list) {
                //验证字段是否存在
                if (Xrm.Page.getAttribute(list[i]) == null) {
                    return list[i] + ":字段不存在!";
                }
                //字段非锁定
                Xrm.Page.getControl(list[i]).setDisabled(false)
            }
        }
    },
    //=============子网格数据自定义筛选显示================
    SubGridScreening:function (SubGridName, fetchXml) {
        //SubGridName:子网格名称;fetchXml:筛选的fetchXml语句
        if (Xrm.Page.data.entity.getId()) {
            Xrm.Page.getControl(SubGridName).addOnLoad(function (){
                //SubGridName:子网格名称;fetchXml:筛选的fetchXml语句 
                var grid = window.parent.document.getElementById(SubGridName).control;
                if (grid.SetParameter) {
                    grid.SetParameter("fetchXml", fetchXml);
                    grid.Refresh();
                }
                else grid.get_innerControl().setParameter("fetchXml", fetchXML);
            });
        }
    },
    //======子网格增删改信息对应主窗体个别字段信息刷新=====
    SubGridloadRefreshPage: function (list,fetchXml,SubGridName) {
        //list:需要刷新页面字段集合,fetchXml:主窗体信息,SubGridName:子网格名称
        //防止在未保存数据情况下进行操作
        if (Xrm.Page.data.entity.getId()) {
            Xrm.Page.getControl(SubGridName).addOnLoad(function () {
                //获取当前实体复数形式
                var entityName = Xrm.Page.data.entity.getEntitySetName();
                var list = GetEntityDatas("/api/data/v9.0/" + entityName + "?fetchXml=", fetchXml);
                var obj = list[0];
                //刷新页面数据
                DynamicHelper.FileldsSetValue(list, obj);
                Xrm.Page.data.save();
            });
        }
    },
    //==============判断当前字段是否被修改================= 
    IsFileldsGetIsDirty: function (filelsdName) {
        //fileldName:字段名称集合
        var list = [];//将修改字段信息放入集合之中
        for (var i in filelsdName) {
            //默认该字段是未修改状态
            var bool = false;
            //验证字段是否存在
            if (Xrm.Page.getAttribute(filelsdName[i]) == null) {
                return filelsdName[i] + ":字段不存在!";
            }
            //判断字段是否被修改(ture值被修改,false值未被修改)
            bool = Xrm.Page.getAttribute(filelsdName[i]).getIsDirty();
            //当值被修改,将修改字段添加值list集合中
            if (bool == true) list.push(filelsdName[i]);
        }
        //返回被修改字段信息
        return list;
        },
    //===============去除文本数据左右空格==================
    ClearTrim: function (Value) {
         //value:string类型数据
         return Value.replace(/(^s*)|(s*$)/g, "");
        },
    //=========比较不同信息字段数据是否信息一致============
    FieldInfoComparison: function (list, obj) {
    //list:字段信息,obj:比较信息
    if (obj) {
        for (var key in list) {
            var filedName = list[key];
            //验证字段是否存在
            if (!Xrm.Page.getAttribute(list[key])) {
                return list[key] + ":字段不存在!";
            }
            //当前数据字段
            var targetFieldKey = list[key];
            //上一次数据
            var sourceVal = data[targetFieldKey];
            if (!sourceVal) {
                sourceVal = null;
            }
            //当前数据
            var targetVal = Xrm.Page.getAttribute(targetFieldKey).getValue();
            //判断当前字段类型
            var type = Xrm.Page.getControl(filedName).getControlType();
            switch (type) {
                case "standard"://文本格式,日期格式,十进制格式,两个选项
                    var DateType = new Date(Xrm.Page.getAttribute(filedName).getValue());
                    if (DateType != "Invalid Date") {
                        //日期格式
                        targetVal = new Date(targetVal).getTime();
                        sourceVal = new Date(sourceVal).getTime();
                    }
                    break;
                case "multiselectoptionset"://多选选项集
                    if (targetVal) {
                        var centerValue = "";
                        for (var i in targetVal) {
                            centerValue += targetVal[i] + ","
                        }
                        targetVal = centerValue.replace(/(.*),/, '$1');;
                    }
                    else {
                        targetVal = null;
                    }
                    break;
                case "lookup"://查找字段
                    if (targetVal) {
                        targetVal = targetVal[0].id.replace("{", "").replace("}", "").toLowerCase();
                    } else {
                        targetVal = "";
                    }
                    sourceVal = data["_" + targetFieldKey + "_value"];
                    if (sourceVal) {
                        sourceVal = sourceVal.toLowerCase();
                    }
                    break;
                default:
            }
            if (!compare(sourceVal, targetVal)) {
                parent.$("#" + targetFieldKey + "_cl").css("cssText", "color:red!important");
            }
        }
    }
        }
    }

    这个是弹窗样式

    /**
     * PostbirdAlertBox.js
     * -    原生javascript弹框插件
     * Author:  Postbird 
     * License: MIT
     * Date:    2017-09-23
     */
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    
    .postbird-box-container {
        width: 100%;
        height: 100%;
        overflow: hidden;
        position: fixed;
        top: 0;
        left: 0;
        z-index: 9999;
        background-color: rgba(0, 0, 0, 0.2);
        display: block;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
    }
    
        .postbird-box-container.active {
            display: block;
        }
    
    .postbird-box-content {
        width: 400px;
        max-width: 90%;
        min-height: 150px;
        background-color: #fff;
        border: solid 1px #dfdfdf;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        /* margin-top: -100px; */
    }
    
    .postbird-box-header {
        width: 100%;
        padding: 10px 15px;
        position: relative;
        font-size: 1.1em;
        letter-spacing: 2px;
    }
    
    .postbird-box-close-btn {
        cursor: pointer;
        font-weight: 700;
        color: #000;
        float: right;
        opacity: 0.5;
        font-size: 1.3em;
        margin-top: -3px;
        display: none;
    }
    
        .postbird-box-close-btn:hover {
            opacity: 1;
        }
    
    .postbird-box-text {
        width: 100%;
        padding: 0 10%;
        text-align: center;
        line-height: 40px;
        font-size: 20px;
        letter-spacing: 1px;
    }
    
    .postbird-box-footer {
        width: 100%;
        position: absolute;
        bottom: 0;
        padding: 0;
        margin: 0;
        display: flex;
        display: -webkit-flex;
        justify-content: space-around;
        border-top: solid 1px #dfdfdf;
        align-items: flex-end;
    }
    
        .postbird-box-footer .btn-footer {
            line-height: 44px;
            border: 0;
            cursor: pointer;
            background-color: #fff;
            color: #0e90d2;
            font-size: 1.1em;
            letter-spacing: 2px;
            transition: background-color .5s;
            -webkit-transition: background-color .5s;
            -o-transition: background-color .5s;
            -moz-transition: background-color .5s;
            outline: 0;
        }
    
            .postbird-box-footer .btn-footer:hover {
                background-color: #e5e5e5;
            }
    
        .postbird-box-footer .btn-block-footer {
            width: 100%;
        }
    
        .postbird-box-footer .btn-left-footer,
        .postbird-box-footer .btn-right-footer {
            position: relative;
            width: 100%;
        }
    
            .postbird-box-footer .btn-left-footer::after {
                content: "";
                position: absolute;
                right: 0;
                top: 0;
                background-color: #e5e5e5;
                height: 100%;
                width: 1px;
            }
    
        .postbird-box-footer .btn-footer-cancel {
            color: #333333;
        }
    
    .postbird-prompt-input {
        width: 100%;
        font-size: 16px;
        border: 1px solid #cccccc;
        outline: none;
        padding: 5px 10px 5px 10px;
    }

    后端

    //===================================================
    //  Copyright @  优文途新科技(上海)有限公司 2021
    //  作者:杨海
    //  时间:2021-07-31
    //  说明:Dynamic工具类
    //===================================================
    using Microsoft.Crm.Sdk.Messages;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Query;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net;
    using System.Text;
    
    namespace DLL
    {
        public class DynamicHelper
        {
            /// <summary>
            /// 共享记录
            /// </summary>
            /// <param name="service"></param>
            /// <param name="teamOrSystem">要共享给用户或者团队</param>
            /// <param name="target">要共享的记录</param>
            public void Grant(IOrganizationService service, EntityReference teamOrSystem, EntityReference target)
            {
                GrantAccessRequest grantAccessRequest = new GrantAccessRequest
                {
                    PrincipalAccess = new PrincipalAccess
                    {
                        Principal = teamOrSystem,
                        //共享的权限 读、写、共享、追加、追加到
                        AccessMask = AccessRights.ReadAccess | AccessRights.WriteAccess | AccessRights.ShareAccess | AccessRights.AppendAccess | AccessRights.AppendToAccess
                    },
                    Target = target,
                };
                service.Execute(grantAccessRequest);
            }
            /// <summary>
            /// 清除共享记录
            /// </summary>
            /// <param name="service"></param>
            /// <param name="teamOrSystems">要取消共享给用户或者团队集合</param>
            /// <param name="target">取消共享记录</param>
            public void ClearGrant(IOrganizationService service, List<EntityReference> teamOrSystems, EntityReference target)
            {
                foreach (EntityReference item in teamOrSystems)
                {
                    RevokeAccessRequest revokeAccessRequest = new RevokeAccessRequest
                    {
                        Revokee = item,
                        Target = target,
                    };
                    service.Execute(revokeAccessRequest);
                }
            }
            /// <summary>
            /// 验证用户对实体是否有读写权限
            /// </summary>
            /// <param name="service"></param>
            /// <param name="entityER">验证实体的信息</param>
            /// <returns>需要在页面上配置【两个选项】类型,名为【new_test_right_control】的字段</returns>
            public bool PermissionsValidation(IOrganizationService service, EntityReference entityER)
            {
                //定义返回信息
                bool mes = false;
                try
                {
                    //验证用户查找权限
                    QueryExpression q = new QueryExpression();
                    q.EntityName = entityER.LogicalName;
                    q.ColumnSet = new ColumnSet(true);
                    q.Criteria.AddCondition(entityER.LogicalName+"id", ConditionOperator.Equal, entityER.Id);
                    EntityCollection e2 = service.RetrieveMultiple(q);//获取实体信息
                    if (e2.Entities.Count == 0)
                    {
                        //没有查找权限返回false
                        mes = false;
                    }
                    else
                    {
                        //查找权限存在,验证用户是否存在写权限,在页面配置一个两个选项字段,改变其值来测试用户是否存在数据的写权限
                        Entity e = e2.Entities[0];
                        //判断字段是否存在信息
                        if (!e.Attributes.Contains("new_test_right_control"))
                        {
                            e["new_test_right_control"] = false;
                        }
                        else
                        {
                            //判断页面上的值是true还是false,来改变其信息
                            if (Convert.ToBoolean(e.Attributes["new_test_right_control"])) e["new_test_right_control"] = false;
                            else e["new_test_right_control"] = true;
                        }
                        service.Update(e);
                        mes= true;
                    }
                }
                catch (Exception)
                {
                    mes = false;
                }
                return mes;
            }
            /// <summary>
            /// 后端GET方式调取数据
            /// </summary>
            /// <param name="url">请求地址</param>
            /// <param name="headerValue">请求数据</param>
            /// <returns>"name:value,name1:value1"</returns>
            public string GetRequest(string url,string headerValue)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                // 设置请求头信息
                WebHeaderCollection headers = new WebHeaderCollection();
                string[] data_1 = headerValue.Split(',');
                foreach (string item in data_1)
                {
                    string[] data_2 = item.Split(':');
                    headers.Add(data_2[0],data_2[1]);
                }
                //数据传输
                request.UserAgent = null;
                request.Headers = headers;
                request.Method = "GET";
                // 返回请求数据
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                // 返回的状态码
                var httpStatusCode = (int)response.StatusCode;
                // 访问成功,返回数据
                if (httpStatusCode == 200)
                {
                    Stream myResponseStream = response.GetResponseStream();
                    //数据格式
                    StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                    //读取返回数据
                    string retString = myStreamReader.ReadToEnd();
                    myStreamReader.Close();
                    myResponseStream.Close();
                    return retString;
                }
                else
                {   // todo 可以通过返回码判断处理
                    throw new Exception("未获取到返回值!");
                }
            }
            /// <summary>
            /// 后端POST方式调取数据
            /// </summary>
            /// <param name="postUrl">请求地址</param>
            /// <param name="paramData">请求数据</param>
            /// <param name="dataEncode">编码格式</param>
            /// <returns>var data=new { vin = car_vin, level = car_level, new_name = car_name };——》传输数据</returns>
            /// <returns>JsonConvert.SerializeObject(data):转化为——》字符串类型</returns>
            public string PostRequest(string postUrl, string paramData, Encoding dataEncode)
            {
                //定义返回信息
                string ret = string.Empty;
                try
                {
                    //将信息转化为base64格式数据
                    byte[] byteArray = dataEncode.GetBytes(paramData); //转化
                    //请求地址
                    HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
                    //请求方式post
                    webReq.Method = "POST";
                    //请求类型json类型
                    webReq.ContentType = "application/json";
                    //请求数据
                    webReq.ContentLength = byteArray.Length;
                    //保存信息
                    Stream newStream = webReq.GetRequestStream();
                    //写入参数
                    newStream.Write(byteArray, 0, byteArray.Length);
                    //关闭写入流
                    newStream.Close();
                    //请求数据
                    HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
                    //获取返回数据
                    StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
                    ret = sr.ReadToEnd();
                    //关闭流,请求
                    sr.Close();
                    response.Close();
                    newStream.Close();
                }
                catch (Exception e)
                {
                    ret = e.Message;
                }
                return ret;
            }
        }
    }
  • 相关阅读:
    负载均衡器部署方式和工作原理
    Android 有关于* daemon not running.starting it now on port 5037 *ADB
    微信开发常用文档及参考资料
    XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象
    XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容
    XML解析之SAX解析过程代码详解
    通过PHP current()函数获取未知字符键名数组第一个元素的值
    PHP检测链接是否是SSL连接 ,也就是判断HTTPS
    PHP反射ReflectionClass、ReflectionMethod 入门教程
    PHP 反射API说明
  • 原文地址:https://www.cnblogs.com/LanHai12/p/15257952.html
Copyright © 2011-2022 走看看