天天看點

adminLTE表格中的數字類型格式轉換

第一步:在base.js檔案中增加自定義 數字轉換方法(找不到檔案,ctrl+H按方法名全局搜)

function formatNumber(s, n) {

  if(typeof(s) == "undefined"){

  s=0;

  }

   n = n > 0 && n <= 20 ? n : 2;  

   s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";  

   var l = s.split(".")[0].split("").reverse(),  

   r = s.split(".")[1];  

   t = "";  

   for(i = 0; i < l.length; i ++ )  

   {  

      t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");  

   }  

   return t.split("").reverse().join("") + "." + r;  

}

adminLTE表格中的數字類型格式轉換

第二步:在dataTables.js  中方法: CommonTable.prototype.getServerData 中增加格式化數字

    CommonTable.prototype.getServerData = function (pageInfo, tableId) {

        var dataCache = $("#dataCache" + tableId);

        var reqParam = {

            queryId: dataCache.data("queryId"),

            pageName: window.document.location.pathname,

            pageInfo: pageInfo,

            query: null,

            sortInfo: dataCache.data("sortInfo"),

            conditions: this.fnGetConditions(this.searchDiv)

        };

        dataCache.data("pageInfo", pageInfo);

        var retData = null;

        console.log("reqObj:");

        console.log(reqParam);

        console.log(JSON);

        //注釋以上部分,統一用ajaxPost處理,以便處理session逾時(ajax請求逾時)

        ajaxPost(basePath + "/query/loadData", {"reqObj": this.toJSONString(reqParam)}, function (result, status) {

            retData = result;

        });

        var start = 0;

        if (pageInfo) {

            start = pageInfo.pageSize * (pageInfo.pageNum - 1)

        }

        var columns = retData.query.columnList;

        //通過 numberFormat render endableTooltip改變單元格的值

        //周遊 先列 後行

        for (var j = 0; j < columns.length; j++) {

            var column = columns[j];

            for (var i = 0; i < retData.rows.length; i++) {

                retData.rows[i]["rowIndex"] = start + i + 1;

                //擷取關聯對象的值如message.sendSubject

                var value_str = "retData.rows[i]." + column.key;

                var value = eval(value_str);

                // 格式化日期

                if (column.dateFormat) {

                    //retData.rows[i][column.key] = formatDate(retData.rows[i][column.key], column.dateFormat);

                    eval(value_str + "=formatDate(value, column.dateFormat)");

                    value = eval(value_str);

                }

                // 格式化數字

                if (column.numberFormat) {

                    // TODO format the number,like 0,000,000.00;

                eval(value_str + "=formatNumber(value, column.numberFormat)");

                value = eval(value_str);

                }

                //擴充enableTooltip

                if (column.enableTooltip) {

                    //重構為支援關聯對象方式

                    var title = eval("retData.rows[i]." + (column.tooltip || column.key));

                    var maxLen = parseInt(column.maxLen || 20);

                    if (value && value.length > maxLen) {

                        value = value.substring(0, maxLen) + "...";

                        eval(value_str + "=\"<span data-toggle='tooltip' data-placement='right' data-html='true'  title='\" + title + \"'>\" + value + \"</span>\"");

                        value = eval(value_str);

                    }

                }

                // 格式化render

                if (column.render) {

                    //替換通過[column.key]的參數  用于替換動态參數

                    var columnRender = this.getRenderValueByMatcher(column.render, retData.rows[i]);

                    var obj = this.getRenderObject(columnRender);

                    if (value != null) {

                        if (obj.type == "eq") {

                            //替換值 render="type=eq,0=臨時儲存,1=送出" type=eq可預設

                            //retData.rows[i][column.key] = obj[retData.rows[i][column.key]];

                            eval(value_str + "=obj[" + value_str + "]");

                            value = eval(value_str);

                        } else if (obj.type == "window") {

                            //彈出模态窗體 render="type=window,url=/message/show?id=[id],title=檢視[name],width=900

                            if (!obj.winId || !obj.url) {

                                modals.warn("render配置中type=window缺少url和winId參數");

                                return false;

                            }

                            obj.url = basePath + obj.url;

                            //retData.rows[i][column.key] = "<a href='#' οnclick='javascript:modals.openWin(" + JSON.stringify(obj) + ")'>" + retData.rows[i][column.key] + "</a>";

                            eval(value_str + "=\"<a href='#' οnclick='javascript:modals.openWin(\" + JSON.stringify(obj) + \")'>\" + retData.rows[i][column.key] + \"</a>\"");

                            value = eval(value_str);

                        } else if (obj.type == "link") {

                            //超連結,自定義方法使用,在界面要定義該方法

                            var invoke_str = "";

                            if (obj.params) {

                                var params = obj.params.replace(/;/g, ",");

                                invoke_str = obj.method + "(" + params + ")";

                            } else {

                                if (retData.rows[i][retData.query.key]) {

                                    //invoke_str = obj.method + "('" + retData.rows[i][retData.query.key] + "')";

                                    var value_key = eval("retData.rows[i]." + retData.query.key);

                                    invoke_str = obj.method + "('" + value_key + "')";

                                }

                                else {

                                    modals.error("render配置擷取" + retData.query.key + "出錯,請檢查query的key配置");

                                    return false;

                                }

                            }

                            //alert(invoke_str);

                            //retData.rows[i][column.key] = "<a href='#' οnclick=" +invoke_str+ ">" + retData.rows[i][column.key] + "</a>";

                            eval(value_str + "=\"<a href='#' οnclick=\" +invoke_str+ \">\" + value + \"</a>\"");

                            value = eval(value_str);

                        }

                    }

                }

            }

        }

        return retData;

    }

adminLTE表格中的數字類型格式轉換

第三步:在清單對應模型的xml文檔中設定 某個屬性的格式化

adminLTE表格中的數字類型格式轉換

總的來說就是在adminLTE原有的方法中  添加自定義方法  然後進行調用

繼續閱讀