* easyui:具體組件用法可參考easyui官網demo及documentation
http://www.jeasyui.com/
當工程需要自定義easyui樣式或修改插件時可按此步驟
application.properties文件中load_custom.config.js設置為true
~~~
#是否加載本地自定義js配置
load_custom.config.js=true
~~~
${ctx}/static/resources/scripts/custom.config.js文件內容
~~~
/**
* 自定義配置
*
* 可覆蓋框架組件
*
*/
(function($) {
/**Start:easyui自定義配置****************************************************/
//參考easyloader.sea.js文件對window.easyloader進行擴展
//注意:配置自定義的js或css一定要以/打頭,反之使用框架自帶的不需要以/打頭如下示例。
$.extend(true, window.easyloader, {
customBase: ($.walk && $.walk.ctx ? $.walk.ctx:"") + "/static/resources/scripts/easyui/1.5/",
customIcon: false,//themes/icon.css是否自定義
locales:{
"zh_CN": "/easyui-lang-zh_CN.js"//本地語言自定義
}
,
modules: {
panel: {
css: "/panel.css"
},
pagination: {
css: "/pagination.css"
},
datagrid: {
css: "/datagrid.css"
}
}
});
/**End:easyui自定義配置******************************************************/
/**Start: seajs擴展配置****************************************************/
var ctx = $.walk.ctx;
seajs.config({
// 別名配置:當模塊標識很長時,可以使用 alias 來簡化。 如果不想在這配置別名可直接寫路徑,例如seajs.use(['arale/position/1.0.1/position'], function(Position) {//代碼});
// 定義規范:
// 1、jQuery插件以$開頭;
// 2、非jQuery插件首字母大寫
alias: {
//'Groupmgr': ctx + '/static/resources/scripts/common/groupmgr',
},
// 路徑配置:當目錄比較深,或需要跨目錄調用模塊時,可以使用 paths 來簡化書寫
paths: {
'scripts': ctx + '/static/resources/scripts',
'css': ctx + '/static/resources/css'
}
});
/**End: seajs擴展配置****************************************************/
})(jQuery);
~~~
在${ctx}/src/main/webapp/static/resources/scripts目錄下建立同walk-base-2.1.4-walk-webapp.jar中META-INF/component/resources/scripts/seajs/sea-modules/jquery/easyui下的相同目錄結構,然后復制jar中的原始文件到工程相同目錄下,修改即可。

* config.js:seajs方式定義各個組件
* init.js:完成walk相關組件初始化工作
* walk.js:walk框架通用函數庫
~~~
(function($){
$.walk = {
//工程根路徑
ctx : $("#pageContext").attr("contextName"),
//當前頁面
page : $("#pageContext").attr("pageName"),
//頁面ID名稱
pageIdName : "pageId",
//引用頁面ID名稱
openerPageIdName : "openerPageId",
//服務器是否支持combo。在app.properties中指定
comboAble : ($("#pageContext").attr("comboAble") == true),
//彈出信息框。 默認是從最頂層窗口彈出,但如果寫了回調方法則從調用窗口處彈出
alert : function (msg, typeOrFn, fn){
//第二個參數可能傳入回調函數
if(typeOrFn && $.isFunction(typeOrFn)){
fn = typeOrFn;
}
//第一個參數可能傳入一個json
if($.isJson(msg) && msg.type != ''){
typeOrFn = msg.type;
msg = msg.text;
}
//第一個參數可能傳入一個消息字符串 格式:<div><div id='type'>success</div><div id='text'>成功</div></div>
else{
try{
var json = this.parseMessageJSON($(msg));
if(json.type){
typeOrFn = json.type;
msg = json.text;
}
}catch(e){}
}
var title = "提示";
if(typeOrFn == "warning"){
title = "警告";
} else if(typeOrFn == "success"){
title = "成功";
} else if(typeOrFn == "error"){
title = "錯誤";
} else {
typeOrFn = "info";
}
//如果有回調函數將會從調用頁面處彈出,否則從頂層窗口彈出
if(fn && $.isFunction(fn)){
$.messager.alert(title, msg, typeOrFn, fn);
} else {
this.getTopWindow().$.messager.alert(title, msg, typeOrFn);
}
},
//確認框
confirm : function (msg, titleOrFn, fn){
//第二個參數可能傳入回調函數
if(titleOrFn && $.isFunction(titleOrFn)){
fn = titleOrFn;
titleOrFn = "確認";
}
titleOrFn = titleOrFn ? titleOrFn : "確認";
$.messager.confirm(titleOrFn, msg, fn);
},
//對話框
prompt : function (msg, titleOrFn, fn){
//第二個參數可能傳入回調函數
if(titleOrFn && $.isFunction(titleOrFn)){
fn = titleOrFn;
titleOrFn = "對話框";
}
titleOrFn = titleOrFn ? titleOrFn : "對話框";
$.messager.prompt(titleOrFn, msg, fn);
},
//進度框
progress : function (optionsOrMethod){
$.messager.progress(optionsOrMethod);
},
//show
show : function (options){
$.messager.show(options);
},
//獲取工程最頂端窗口。不用top的原因:可能會有其他工程iframe嵌套
getTopWindow : function (){
//默認最多有5級
var parents = this._getParents();
for(var i = 0; i < parents.length; i++){
try{
if(parents[i].$.walk){
return parents[i];
}
}catch(e){}
}
},
//獲取父窗口集合
_getParents : function(){
return [
window.parent.parent.parent.parent.parent,
window.parent.parent.parent.parent,
window.parent.parent.parent,
window.parent.parent,
window.parent,
window
];
},
/**
* 取當前url參數
*/
getValueByUrl : function(name, defaultValue, url) {
url = !(url) ? window.location.search : url;
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = url.substr(1).match(reg);
if (r != null) {
return decodeURIComponent(r[2]);
}
return defaultValue;
},
//獲取blockUI配置信息
getBlockDefaults : function(){
$.blockUI.defaults = {
showOverlay : true,
baseZ: 99999999,
css : {
padding : 2,
left : '20%',
top : '3%',
color : '#000',
border : 'none',
backgroundColor : 'none',
cursor : 'default'
},
overlayCSS : {
backgroundColor : '#000',
opacity : 0.3,
cursor : 'default'
}
};
return $.blockUI.defaults;
},
/**
* 取隨機數
*/
getRandomParam : function() {
var date = new Date();
return "" + date.getYear() + (date.getMonth() + 1) + date.getDate() + date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() + Math.floor(Math.random()*1000000);
},
/**
* 獲取uuid
* len長度,可不傳,默認20
* radix基數,可不傳,默認30
*
* $.walk.uuid()
* */
uuid: function (len, radix) {
len = len ? len : 20;
radix = radix ? radix : 30;
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
var uuid = [], i;
radix = radix || chars.length;
if (len) {
// Compact form
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix];
} else {
// rfc4122, version 4 form
var r;
// rfc4122 requires these characters
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
// Fill in random data. At i==19 set the high bits of clock sequence as
// per rfc4122, sec. 4.1.5
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random()*16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
},
/**
* 獲取請求URL
* 調用示例:$.walk.getRequestURL($.walk.ctx + '/example', "queryList", "roleId=1&roleCode=2");
* @param baseUrl: 頁面訪問路徑,例如$.walk.ctx + '/example'
* @param method:調用方法,例如:queryList
* @param params:傳入參數,例如:roleId=1&roleCode=2
* @return
*/
getRequestURL : function(baseUrl, method, params, conditionFormId) {
if(!baseUrl) return null;
var url = baseUrl.startsWith(this.ctx) ? baseUrl : (this.ctx + "/" + baseUrl);
var symbol = baseUrl.indexOf("?") > -1 ? "&":"?";
if (method != null) url += "/" + method;
if (params) {
if($.isJson(params)){
if(conditionFormId){
$.extend(params, this.getQueryParams(conditionFormId))
}
url += symbol + $.param(params) + "&random=" + this.getRandomParam();
} else {
url += symbol + params;
if(conditionFormId){
url += "&" + $.param(this.getQueryParams(conditionFormId));
}
url += "&random=" + this.getRandomParam();
}
} else {
url += symbol + "random=" + this.getRandomParam();
}
return url;
},
/**
* 序列化指定區域
*/
serializeArea : function(areaId){
var serializeStr = null;
if(!areaId){
alert("請指定區域Id!");
return;
}
var area = $("#" + areaId);
if(area.size() == 0){
alert("區域Id[" + areaId + "]不存在!");
return;
}
//如果指定區域是表單,則直接序列化
if(area.is("form")){
serializeStr = area.serialize()
} else {
serializeStr = $.param(area.find("input,select,textarea").serializeArray());
}
return serializeStr;
},
/**
* 參數串轉json對象
*/
param2json : function(param){
if(!param){
return {};
}
var obj = {};
var pairs = param.split('&');
var name,value;
$.each(pairs, function(i, pair) {
pair = pair.split('=');
name = decodeURIComponent(pair[0]);
if(name){
value = decodeURIComponent(pair[1]);
obj[name] = !obj[name] ? value :[].concat(obj[name]).concat(value);//若有多個同名稱的參數,則拼接
}
});
return obj;
},
/**
* 將指定form參數轉換為json對象
*/
getQueryParams : function (conditionAreaId, otherParams){
var queryParams = this.param2json(this.serializeArea(conditionAreaId));
//擴展額外參數
if(otherParams){
if($.isJson(otherParams)){
$.extend(queryParams, otherParams)
} else if($.isString(otherParams)){
$.extend(queryParams, this.param2json(otherParams))
}
}
return queryParams;
},
//獲取message信息
parseMessageJSON : function(resp){
var type = resp.find("#type").text();
var text = resp.find("#text").html();
return {
type : type,
text : text,
isSuccess : type == "success",
isInfo : type == "info",
isWarning : type == "warning",
isError : type == "error"
};
},
//釋放iframe內存
clearFrameCache : function(iframe){
try{
iframe.src = '';
iframe.contentWindow.document.write('');
iframe.contentWindow.close();
if($.isIE()){
CollectGarbage();
CollectGarbage();
}
}catch(e){}
},
//查詢
queryList : function (gridId, conditionAreaIdOrParams, otherParams){
if(!gridId){
alert("請指定第一個參數,easyUI表格Id!");
return;
}
var queryParams = {};
if(conditionAreaIdOrParams){
if($.isJson(conditionAreaIdOrParams)){
$.extend(queryParams, conditionAreaIdOrParams)
} else if($.isString(conditionAreaIdOrParams)){
queryParams = this.getQueryParams(conditionAreaIdOrParams, otherParams);
}
}
var opts = {
queryParams : queryParams,
pageNumber : 1
};
var grid = $("#" + gridId);
if(grid.hasClass("easyui-datagrid")){
grid.datagrid(opts);
} else if(grid.hasClass("easyui-treegrid")){
grid.treegrid(opts);
}
},
/**
* 綁定還未生成的元素事件并返回生成元素的ID
*
* $.walk.live("click", function(ele){
* //...
* });
* $.walk.live("click", function(ele){
* //...
* }, "div");
*/
live: function (event, callback, scope) {
scope = scope ? scope : "body";
var id = this.uuid();
var selector = "#" + id;
$(scope).delegate(selector, event, function(){
callback($(selector));
});
return id;
},
//驗證表單(form)
validateForm : function (form){
var formValidator = form.attr("validXml");
var validate = $.parseJSON(formValidator);
seajs.use(['$validate'], function(){
form.validate({
/* 設置驗證規則 */
rules: validate.rules,
/* 設置錯誤信息 */
messages: validate.messages,
/* 設置驗證觸發事件 */
focusInvalid: false,
onkeyup: false,
/* 設置錯誤信息提示DOM */
errorPlacement: function(error, element) {
error.appendTo(element.parent());
}
});
});
},
//模擬ajax方式提交form
ajaxSubmit : function (formId, action, callbackFunc){
if(!formId){
alert("請指定formId!");
return;
}
var form = $("#" + formId);
if(form.size() == 0){
//form無id有name也可
form = $("form[name='" + formId + "']");
if(form.size() == 0){
alert("form[" + formId + "]不存在!");
return;
}
}
//第二個參數可能傳入回調函數
if(action && $.isFunction(action)){
callbackFunc = action;
action = form.attr("action");
if(!action){
alert("請指定form[" + formId + "]action屬性!");
return;
}
}
//開始提交
seajs.use(['$form','$validate'], function(){
var formValidator = form.attr("validXml");
if(formValidator && !form.valid()) return false;//校驗失敗返回
form.form('submit', {
url: action,
method : "post",
onSubmit : function(){
$.walk.showLoading();
//如果后端一直未返回數據,10秒后隱藏遮罩層。
setTimeout(function(){
$.walk.hideLoading();
}, 10000);
//jquery.form請求特殊標識
if(form.find("#JQUERY_FORM_AJAX_REQUEST").size() == 0){
form.append("<input id='JQUERY_FORM_AJAX_REQUEST' name='JQUERY_FORM_AJAX_REQUEST' value='true' style='display: none'/>");
}
},
success : function(response) {
$.walk.hideLoading();
var isMessageMethod = false;
var resp = response;
if(resp){
//后端調用了message.xxx方法
if(resp.indexOf('_MESSAGE_RESPONSE') > -1){
isMessageMethod = true;
resp = $.walk.parseMessageJSON($(resp));
//如果消息類型錯誤直接彈出錯誤信息
// if(resp.isError == true){
// $.walk.alert(resp);
// return ;
// }
} else {
//嘗試轉成json
try{
resp = $.parseJSON(resp);
}catch(e){}
}
}
//如果寫了回調函數,邏輯在回調函數里自處理,否則在后端調用了message.xxx方法后前臺自動彈出消息。
if(callbackFunc && $.isFunction(callbackFunc)){
callbackFunc.call(this, resp);
} else {
//后端調用了message.xxx方法后前臺自動彈出消息
if(isMessageMethod){
$.walk.alert(resp);
}
}
}
});
});
},
/* ajax局部刷新
* url: 請求url
* params:參數
* partids:刷新區域ID,多個以逗號分隔
* callbackFunc:回調方法
*/
ajaxRefresh : function(url, params, partids, callbackFunc) {
if(params){
params._page_name = this.page;
}
$.ajax({
url : url,
data : params,
type : "POST",
dataType : "html",
cache: false,
success : function(data){
if(partids) {
var parts = partids.split(",");
for(var i=0; i<parts.length; i++){
if(parts[i] && parts[i].trim()) {
var partId = parts[i].trim();
//初始化jQuery.select2組件
if($.isIE9Under()){
$("#"+partId).replaceWith($(data).find("#"+partId));
} else {
if($("#"+partId).hasClass("w-select2")){
seajs.use('$select2',function(){
$("#"+partId).select2("destroy");
$("#"+partId).replaceWith($(data).find("#"+partId));
$("#"+partId).select2();
});
} else {
$("#"+partId).replaceWith($(data).find("#"+partId));
}
}
}
}
}
if(callbackFunc && $.isFunction(callbackFunc)){
callbackFunc.call(this, data);
}
}
});
},
//顯示遮罩層
showLoading : function (loadingTarget, top, left,iframeSrc){
seajs.use(['$blockui'], function(){
$.walk.getBlockDefaults();
top = top ? top:"50%";
left = left ? left:"50%";
iframeSrc = iframeSrc ? iframeSrc:"";
var opts = {
message : "<img src='" + $.walk.ctx +"/component/resources/images/loading/loading-4.gif'/>",
width : "45px",
css:{
top : top,
left : left
},
iframeSrc : iframeSrc,
timeout : 5000
};
if (loadingTarget) {// 指定區域顯示加載中效果
opts.css.top = (loadingTarget.height()/2) - 32;//32是loading-4.gif高度的一半
loadingTarget.block(opts);
} else {// 全頁面顯示加載中效果
$.blockUI(opts);
}
if($.isIE8Under()){
//ie6遮罩select
$(".blockOverlay").bgiframe();
}
});
},
//隱藏遮罩層
hideLoading : function(loadingTarget){
seajs.use(['$blockui'], function(){
if (loadingTarget) {// 指定區域隱藏加載中效果
loadingTarget.unblock();
} else {// 全頁面隱藏加載中效果
$.unblockUI();
}
});
},
//創建iframe
createDialogFrame : function(scrolling){
scrolling = scrolling ? scrolling:'no';
//使用iframe池,防止iframe占用內存過高
var dialogsIframePool = $("#dialogsIframePool");
if(dialogsIframePool.size() == 0){
$(document.body).append('<div id="dialogsIframePool" style="display:none"></div>');
dialogsIframePool = $("#dialogsIframePool");
}
var freeFrames = dialogsIframePool.find("iframe[free='true'][scrolling='"+scrolling+"']");
if(freeFrames.size() == 0){
dialogsIframePool.append("<div class='dialogframediv' style='display: none;overflow:hidden;'><iframe free='true' class='dialogframe' scrolling='"+scrolling+"' frameborder='0' width='100%' height='100%' allowTransparency='true'></iframe></div>");
freeFrames = dialogsIframePool.find("iframe[free='true'][scrolling='"+scrolling+"']");
}
var iframe = freeFrames.first();
iframe.attr('free','false');//標記
return iframe;
},
//回收iframe
recoveryDialogFrame : function(iframe){
this.clearFrameCache(iframe.get(0));
iframe.attr('free','true');
iframe.removeAttr($.walk.openerPageIdName);
iframe.unbind("load");
$("#dialogsIframePool").append($("<div class='dialogframediv' style='display: none;overflow:hidden;'></div>").append(iframe));
},
//添加標簽頁
openTab : function(subtitle, url, icon){
return this.openTabById(this.getRandomParam(), subtitle, url, icon);
},
//指定ID添加標簽頁
openTabById : function(subIdOrJson, subtitle, url, icon){
var subId = subIdOrJson;
if($.isJson(subIdOrJson)){
subId = subIdOrJson.subId;
subtitle = subIdOrJson.subtitle;
url = subIdOrJson.url;
icon = subIdOrJson.icon;
}
url = url.startsWith(this.ctx) ? url : (this.ctx + "/" + url);
return $.walk.getTopWindow().addTab(subId, subtitle, url, icon);
},
//默認關閉當前tab,指定了tabId,則按tabId關閉
closeTab : function(subId){
if(subId){
return $.walk.getTopWindow().closeTabById(subId);
} else {
return $.walk.getTopWindow().closeSelectedTab();
}
},
//dialog方式打開url
openUrlDialog : function(urlOrDialogJson, title, width, height, top, scrolling, onloadSuccess){
var url = urlOrDialogJson;
if($.isJson(urlOrDialogJson)){
url = urlOrDialogJson.url;
title = urlOrDialogJson.title;
width = urlOrDialogJson.width;
height = urlOrDialogJson.height;
top = urlOrDialogJson.top;
scrolling = urlOrDialogJson.scrolling;
onloadSuccess = urlOrDialogJson.onloadSuccess;
}
url = url.startsWith(this.ctx) ? url : (this.ctx + "/" + url);
$.walk.getTopWindow().$.walk._openUrlDialog(url, title, width, height, top, scrolling, onloadSuccess, this.getPageId());
},
//dialog方式打開url
_openUrlDialog : function(url, title, width, height, top, scrolling, onloadSuccess, pageId){
var dialogframe = this.createDialogFrame(scrolling);
var dialogframediv = dialogframe.parent(".dialogframediv");
dialogframediv.show();
var win = dialogframediv.window({
title: title ? title : "Dialog",
width: (width || width == 0) ? width : 800,
height: (height || height == 0) ? height : 400,
top: (top || top == 0) ? top : 80,
minimizable: false,
modal: true,
openAnimation : 'slide',
closeAnimation : 'slide',
onOpen : function(){
//加載效果...
var loadingTarget = dialogframe.parents(".window");
$.walk.showLoading(loadingTarget, null, "45%");
setTimeout(function(){
$.walk.hideLoading(loadingTarget);
}, 500);
},
onClose : function(){
//回收iframe
$.walk.recoveryDialogFrame(dialogframe);
//銷毀window
dialogframediv.window('destroy');
}
}).window("hcenter");
//設置引用頁面ID及src
url = this._wrapCas(url);
url = url.indexOf('?') > -1 ? (url + "&random=" + this.getRandomParam()) :(url + "?random=" + this.getRandomParam());
dialogframe.attr($.walk.openerPageIdName, pageId);
dialogframe.attr("src", url);
dialogframe.unbind("load").bind("load", function(){
var contents = dialogframe.contents();
if(pageId){
contents.find("#pageContext").attr($.walk.openerPageIdName, pageId);
}
if(onloadSuccess){
//第一個對象為iframe窗口對象。第二個為iframe的document的jquery對象。第三個為easyui彈窗window對象
onloadSuccess(dialogframe.get(0).contentWindow, contents, win);
}
});
//返回頁面頂部
this.pageScrollTop();
},
//關閉彈窗
closeDialog : function(win){
var w = win;
if(!w){
var parents = this._getParents().reverse();
for(var i = 0; i < parents.length; i++){
if(parents[i] && parents[i].$(".window:visible").size() > 0){
w = parents[i];
break;
}
}
}
w.$(".window:visible").last().find('.panel-tool-close').click();
},
//處理cas
_wrapCas : function(url){
var pageContext = $("#pageContext");
var fromCas = pageContext.attr("fromCas");
if(fromCas == 'true'){
var urlRouteParameterName = pageContext.attr("urlRouteParameterName") ? pageContext.attr("urlRouteParameterName"):'_authenticator';
url += (url.indexOf('?') > -1 ? '&':'?') + urlRouteParameterName + '=cas';
var casSpecialParameterName = pageContext.attr("casSpecialParameterName");
var casSpecialParameter = pageContext.attr("casSpecialParameter");
if(casSpecialParameterName && casSpecialParameter){
url += (url.indexOf('?') > -1 ? '&':'?') + casSpecialParameterName + '=' + casSpecialParameter;
}
}
return url;
},
//datagrid:將選中行的數組轉換成以特殊符號分隔的字符串,分隔符默認逗號
checkeds2str : function(checkeds, idName, divide){
if(!divide) divide = ",";
var ids = "";
$.each(checkeds, function(i, checked){
ids += eval("checked." + idName) + divide;
});
return ids.substr(0, ids.length-1);
},
//導出當前頁表格
exportData : function (url, queryParams, isAsyn){
//異步方式導出
if(isAsyn == true) {
var promptTitle = "請輸入自定義導出文件名稱!";
this.prompt(promptTitle, function(val){
val = $.trim(val);
if(!val){
$.walk.alert(promptTitle, "error");
return false;
}
if(queryParams) {
//帶&符號的字符串參數
if($.isString(queryParams)){
queryParams += "&__actionType=asynExport&asynExportName=" + val;
}
//json參數
else if ($.isJson(queryParams)) {
queryParams.asynExportName = val;
queryParams.__actionType = 'asynExport';
}
} else {
queryParams = {asynExportName : val, __actionType : 'asynExport'}
}
$.ajax({
type : "POST",
url : url,
//提交的數據
data : queryParams,
success : function(rsp, textStatus, request) {
var exportId = request.getResponseHeader("asynExportId");
if(exportId){
//提示信息
$.walk.confirm('導出任務創建成功,流水:' + exportId + '<br>您可以進入菜單“我的導出”中查看導出進度。是否立即進入“我的導出”查看進度?', function(ok){
if(ok){
$.walk.openTab("我的導出", $.walk.ctx + "/common/exportLog/toPage?exportId=" + exportId);
}
});
} else {
$.walk.alert("創建導出任務失敗!");
}
}
});
});
}
//同步方式導出
else {
this.confirm("確認導出嗎?", function(ok){
if(ok){
var hiddenElements = "";
if (queryParams) {
//如果是帶&符號的字符串參數,轉換成json
if($.isString(queryParams)){
queryParams = $.walk.param2json(queryParams);
}
//判斷是否是json
else if ($.isJson(queryParams)) {
var _params = $.extend({}, queryParams);
//轉換成元素
for (var key in _params) {
hiddenElements += '<input type="hidden" name="' + key + '" value="' + _params[key] + '"/>';
}
}
}
//提交導出
$('#tempDiv').remove();
$("<div id='tempDiv'><iframe name='IF_4down'></iframe></div>").appendTo($(document.body)).css('display', 'none').append('<form id="tempForm" action="' + url + '" target="IF_4down" method="post" accept-charset="UTF-8">' + hiddenElements + '<input type="hidden" name="__actionType" value="export"/></form>');
document.charset = "UTF-8";
$("#tempForm").submit().remove();
}
});
}
},
//導出當前頁表格
exportCurrentPage : function (exportName, table){
this.confirm("確認導出嗎?", function(ok){
if(ok){
$("<div id='expTemp'></div>").appendTo($(document.body));
$('#expTemp').css({'position': 'absolute','top': '-9000px'});
$("#expTemp").append('<iframe name="IF_4down"></iframe>').append('<form id="exportform" action="'+$.walk.ctx+'/fileserver/exportCurrentPage" method="post" target="IF_4down"><input type="hidden" id="pData" name="pData"/><input type="hidden" id="exportName" name="exportName"/></form>');
$("#pData").val("<table>" + table.html() + "</table>");
$("#exportName").val(exportName);
$("#exportform").submit().remove();
$('#expTemp').remove();
}
});
},
//返回頁面頂部
pageScrollTop : function (){
this.getTopWindow().$("html, body").animate({scrollTop:"0px"}, 400);
},
//獲取引用本頁面的iframe的jquery對象。
getOpenerIframe : function(){
var iframe;
$("iframe", parent.document).each(function(){
if($(this).get(0).contentWindow == window){
iframe = $(this);
return false;
}
});
return iframe;
},
//獲取當前頁面ID
getPageId : function(){
return $("#pageContext").attr($.walk.pageIdName);
},
//獲取引用頁面ID
getOpenerPageId : function(){
var openerPageId = $("#pageContext").attr($.walk.openerPageIdName);
if(!openerPageId){
openerPageId = this.getOpenerIframe().attr($.walk.openerPageIdName);
}
return openerPageId;
},
//獲取創建本窗口的引用窗口
openerWindow : function(){
return this.getWindowById(this.getOpenerPageId());
},
//根據pageId路徑獲取目標window對象
getWindowById : function(pageId){
var topPageId = this.getTopWindow().$.walk.getPageId();
if(pageId && topPageId && topPageId == pageId){
return this.getTopWindow();
}
return this._getWindowById(this.getTopWindow(), pageId);
},
//根據pageId路徑獲取目標window對象
_getWindowById : function(startWindow, pageId){
if(!pageId){
return undefined;
}
var targetWin;
var pageIdArr = pageId.split('.');
var isFinded = false;
startWindow.$("iframe").each(function(){
var tabframe = $(this);
var pageContext = tabframe.contents().find("#pageContext");
var pageId = pageContext.attr($.walk.pageIdName) + "";
if(pageId.indexOf(pageIdArr[0]) > -1){
isFinded = true;
targetWin = pageContext.get(0).parentNode.parentNode.parentNode.defaultView;
return;
}
});
if(isFinded && pageIdArr.length > 1){
pageIdArr.shift();
var newPageId = pageIdArr.join('.');
targetWin = this._getWindowById(targetWin, newPageId);
}
return targetWin;
},
//每個頁面標記頁面ID
//生成規則:父頁面ID+本頁面ID。父頁面不包括頂級頁面
_generatePageId : function (){
var parentPageId;
if(window.parent != $.walk.getTopWindow()){
parentPageId = $(window.parent.document).find("#pageContext").attr($.walk.pageIdName);
}
var newPageId = "p" + $.walk.getRandomParam();
var currPageId = parentPageId ? (parentPageId + "." + newPageId):newPageId;
if(!$("#pageContext").attr($.walk.pageIdName)){
$("#pageContext").attr($.walk.pageIdName, currPageId);
}
//記錄引用頁面
var topPageId = $.walk.getTopWindow().$.walk.getPageId();
if(parentPageId && parentPageId != topPageId){
if(!$("#pageContext").attr($.walk.openerPageIdName)){
$("#pageContext").attr($.walk.openerPageIdName, parentPageId);
}
}
},
//比較兩個純json對象是否相等,對象中不能有數組
comparePlainJSON : function (json1, json2){
var a = JSON.stringify(json1) == JSON.stringify($.extend($.extend({}, json1), json2));
var b = JSON.stringify(json2) == JSON.stringify($.extend($.extend({}, json2), json1));
return a == true && b == true;
}
};
})(jQuery);
~~~
- walk簡介
- 核心模塊
- walk-data
- IData
- EntityHelper
- walk-cache
- 緩存管理器
- 緩存對象
- 緩存注解
- walk-batis
- 單表操作
- 批量操作
- 列表/分頁查詢
- 所有方法列表
- sql熱部署
- 二級緩存
- 數據庫方言
- 其他使用技巧
- 實體類生成工具
- walk-mq
- 隊列管理器
- 隊列對象
- 訂閱/發布管理器
- 訂閱器
- 發布器
- walk-shiro
- 用戶認證/授權
- url動態授權/回收
- 分布式會話
- 無狀態會話支持
- walk-base
- 前端基礎框架
- 公共頁面
- 自定義標簽
- 自定義函數
- 組件及工具
- 后端基礎框架
- 基礎結構
- 表單校驗
- 數據導入
- 數據導出
- 上傳下載
- 靜態參數加載器
- 靜態參數翻譯器
- 實體類翻譯器
- sql翻譯器
- 自定義翻譯器
- 靜態參數校驗器
- 分布式任務
- 增刪改查代碼生成器
- walk-restful
- 請求報文
- 返回報文
- 節點翻譯器
- api代碼生成
- walk-activiti
- 接口封裝
- 模型管理
- 流程圖展示
- 集成方法
- walk-console
- 在線會話管理
- 靜態參數表緩存管理
- 緩存管理
- 隊列管理
- 發布/訂閱管理
- walk-boot
- 常用功能
- 持久層操作
- 分布式緩存
- 分布式會話
- 分布式任務
- 前端常用功能
- 后端常用功能
- 工作流封裝
- 多數據源支持
- 關于讀寫分離
- 常用工具類
- 代碼生成工具
- SpringCloud集成
- 阿里edas平臺支持
- 其他
- 開發規約
- 環境要求
- 工程示例
- 工程結構
- web工程
- API工程
- 后臺任務
- 常見問題
- 事務不生效
- 分布式任務不生效
- 事務鎖
- 變更歷史