/** * 命名空间与全局方法 * @author life */ // 命名空间 var dk = order = shipment = gis = party = contract = network = equip = manual = reason = payment = auth = cron = {}; // 全局配置 G_CONFIG = { defaultCountryId: "402895853e3bd7a5013e3bd7b2c20000", split: "/" }; // cache dk.cache = { countries: {}, regions: {}, cities: {}, towns: {} }; // 公用方法 // 除公用方法外, 其它方法必须在命名空间下 //----------- // 国际化 //----------- /** * 得到国际化 * @param key String 键名 * @param data Array 替换的值 * @param [source] Object 数据源 * @returns String 国际化后的值 */ function getText(key, data, source) { // 判断key有无'.', 比如 msg.title.info // 得到最终的value var keyArr = key.split('.'); var value = source ? source : i18n; for(var i = 0; i < keyArr.length; ++i) { value = value[keyArr[i]]; } if(!data) return value; // 替换之 // 防止{1}/{1}, 里面的数字是有意义的! var i = 0; var str = value.replace(/{[0-9]+}/g, function(each) { // 从{11}中得到11 var index = each.substr(1, each.length-2); return data[index]; }); return str; } /** * * @param key * @param data * @returns */ function getMsgText(key, data) { return getText(key, data, i18n.msg); } function getMsgTitleText(key, data) { return getText(key, data, i18n.msg.title); } function getWinText(key, data) { return getText(key, data, i18n.win); } function getWinTitleText(key, data) { return getText(key, data, i18n.win.title); } //--------------- // dataGrid 表格 //--------------- /** * 检查是否选中了 * * @return Object row */ function checkSelectOne(gridId) { var datagrid = $('#' + gridId); if(!datagrid) return false; var rows = datagrid.datagrid('getChecked'); if(rows.length < 1) { msgAlert('info', 'selectOne', 'info'); return false; } if(rows.length > 1) { msgAlert('info', 'selectOnlyOne', 'info'); return false; } return rows[0]; } /** * 可以选中多行 */ function checkSelects(gridId) { var datagrid = $('#' + gridId); if(!datagrid) return false; var rows = datagrid.datagrid('getChecked'); if(rows.length < 1) { msgAlert('info', 'select', 'info'); return false; } return rows; } /** * 表格移除多条 * @param gridId String * @param rows Array[Object] */ function deleteRows(gridId, rows) { for(var i = 0; i < rows.length; ++i) { deleteRow(gridId, rows[i]); } } /** * 表格移除一条 * @param gridId String * @param row Object */ function deleteRow(gridId, row) { var index = $('#' + gridId).datagrid('getRowIndex', row); $('#' + gridId).datagrid('deleteRow', index); } /** * 表格添加多条 * @param gridId String * @param rows Array[Object] */ function appendRows(gridId, rows) { for(var i = 0; i < rows.length; ++i) { appendRow(gridId, rows[i]); } } /** * 表格添加一条 * @param gridId String * @param row Object */ function appendRow(gridId, row) { $("#" + gridId).datagrid('appendRow', row); } /** * 得到多行记录的主键列表 * @param rows * @param fieldId 主键字段名 * @returns {Array} */ function getRowsIds(rows, fieldId) { var ids = []; for(var i in rows) { ids.push(rows[i][fieldId]); } return ids; } /** * 刷新dataGrid * @param gridId */ function reloadGrid(gridId) { $('#' + gridId).datagrid('reload'); } /** * 为grid加载数据 * @param gridId * @param queryParams * @param [url] */ function loadGrid(gridId, queryParams, url) { var gridObj = $('#' + gridId); if(url) { gridObj.datagrid('options').url = url; } gridObj.datagrid('options').queryParams = queryParams; gridObj.datagrid('load'); } /** * 表格添加标题 * 显示数据用 * @param title * @returns {String} */ function addTitle(title) { return '' + title + ''; } /** * 将true/false转成是/否 * @param bool true or false * @returns */ function getYesOrNo(bool) { return bool ? getText('yes') : getText('no'); } //------------ // 弹框 //------------ // 弹框默认配置 dk.winDefaultConfig = { minimizable: false, // 不可最小化 resizable: true, collapsible: false, // 不能折叠 modal: true, // 遮罩 closed: false, onClose : function() { $(this).window('destroy'); } }; // 得到grid 宽度 // 传过来的winWidth是win的宽度, 根据win宽度调整grid宽度 // min是否有下拉滚动条, 有会减少grid宽度 function getGridWidth(winWidth, min) { var borderWidth = 16; var borderWidthm = 36; if(min) { return winWidth - borderWidthm; } return winWidth - borderWidth; } // 得到win的宽度 // size是规格大小, selfWidth是自定义的大小, 如果有该值, 表示最大规格是size // selfWidth超过它将用size function getWinWidth(size, selfWidth) { var width = $('body').width() * 0.1 * size; if(typeof selfWidth != 'undefined') { if(width > selfWidth) return selfWidth; } return width; } // 得到win的高度 function getWinHeight(size, selfHeight) { // 这里之前是$('body').height(), 有bug, 当最大化win后, 该值为0 var height = $(window).height() * 0.1 * size; if(typeof selfHeight != 'undefined') { if(height > selfHeight) return selfHeight; } return height; } /** * 打开win弹框 * @param winVar bool 是否自定义win, 如果为false, 则用g_custom_win, 否则用winVar * @param winId string [不要使用, 将会弃用] */ dk.win = {}; function openWin(config, winVar, winId) { config = $.extend({}, dk.winDefaultConfig, config); if(!winId) winId = 'newWin'; // + (new Date().getTime()); // win的标题 config.title = getWinTitleText(config.title); // 调整宽度和高度 config.width = getWinWidth(9, config.width); config.height = getWinHeight(9, config.height); var win = $('
').window(config); if(!winVar) { // 用全局的 dk.win['g_custom_win'] = win; } else { dk.win[winVar] = win; // 避免不是由自己的子来关闭的情况, 其它可以控制关闭 // window[winVar] = win; } } // 关闭弹框 // 空 or target Object或创建时定义的全局变量名 function closeWin(target) { if(target == undefined) { var theEvent = window.event || arguments.callee.caller.arguments[0]; var theObj = theEvent.target || theEvent.srcElement; closeWin(theObj); } else if(typeof target == "object") { // 向上找class="newWin"的div var obj = $(target).parents("div.newWin"); if(obj) { $(obj).window('destroy'); } } else if(typeof target == "string") { if(dk.win[target]){ dk.win[target].window('destroy'); } } } /** * 关闭win, 更新grid * @param winVar * @param gridId */ function closeWinAndReloadGrid(winVar, gridId) { closeWin(winVar); reloadGrid(gridId); } //--------- // 表单 //--------- /** * 提交数据 * @param formId string