function getTabWindow() {
var curTabWin = null;
if (topJUI.config.aloneUse) {
curTabWin = window;
} else {
var curTab = parent.$('#index_tabs').tabs('getSelected');
// var curTab = $('#index_tabs').tabs('getSelected');
if (curTab && curTab.find('iframe').length > 0) {
curTabWin = curTab.find('iframe')[0].contentWindow;
}
}
return curTabWin;
}
//采用jquery easyui loading css效果
function showMask() {
$("<div class=\"datagrid-mask\"></div>").css({
display: "block",
width: "100%",
height: $(window).height()
}).appendTo("body");
$("<div class=\"datagrid-mask-msg\"></div>").html("正在处理,请稍候。。。").appendTo("body").css({
display: "block",
left: ($(document.body).outerWidth(true) - 190) / 2,
top: ($(window).height() - 45) / 2
});
}
function hideMask() {
$(".datagrid-mask").remove();
$(".datagrid-mask-msg").remove();
}
//在主框架内打开Tab页,如点击左边的菜单打开Tab窗口
function addTab(params) {
var iframe = '<iframe src="' + params.url + '" scrolling="auto" frameborder="0" style="width:100%;height:100%;"></iframe>';
var t = $('#index_tabs');
var opts = {
id: Math.random(),
title: params.text,
closable: typeof(params.closable) != "undefined" ? params.closable : true,
iconCls: params.iconCls ? params.iconCls : 'fa fa-page',
content: iframe,
//href: params.url,
border: params.border || false,
fit: true
//cls: 'leftBottomBorder'
};
if (t.tabs('exists', opts.title)) {
t.tabs('select', opts.title);
} else {
var lastMenuClickTime = $.cookie("menuClickTime");
var nowTime = new Date().getTime();
if ((nowTime - lastMenuClickTime) >= 1000) {
$.cookie("menuClickTime", new Date().getTime());
t.tabs('myAdd', opts);
} else {
$.messager.show({
title: '温馨提示',
msg: '操作过快,请稍后重试!'
});
}
}
}
addParentTab = function (options) {
var src, title;
if (typeof options.grid == "object") {
if (options.grid.checkboxSelect == true) {
var rows = getCheckedRowsData(options.grid.type, options.grid.id);
if (rows.length == 0) {
$.messager.alert(
topJUI.language.message.title.operationTips,
topJUI.language.message.msg.checkSelfGrid,
topJUI.language.message.icon.warning
);
return;
}
if (rows[0]["UUID"]) {
src = options.tab.href.indexOf("?") >= 0 ? options.tab.href + "&UUID=" + getMultiRowsFieldValue(rows, "UUID") : options.tab.href + "?UUID=" + getMultiRowsFieldValue(rows, "UUID");
} else {
src = options.tab.href.indexOf("?") >= 0 ? options.tab.href + "&uuid=" + getMultiRowsFieldValue(rows, "uuid") : options.tab.href + "?uuid=" + getMultiRowsFieldValue(rows, "uuid");
}
} else {
//var unselectedMsg = options.grid.unselectedMsg;
var row = getSelectedRowData(options.grid.type, options.grid.id);
if (!row) {
$.messager.alert(
topJUI.language.message.title.operationTips,
topJUI.language.message.msg.selectSelfGrid,
topJUI.language.message.icon.warning
);
return;
}
src = replaceUrlParamValueByBrace(options.tab.href, row);
}
title = options.tab.title;
} else {
src = options.href;
title = options.title;
}
var iframe = '<iframe src="' + src + '" frameborder="0" style="border:0;width:100%;height:100%;"></iframe>';
parent.$('#index_tabs').tabs("add", {
title: title,
content: iframe,
closable: true,
iconCls: 'fa fa-th'
});
}
/**
* 打开新窗口
* @param options
*/
openWindow = function (options) {
var href;
if (typeof options.grid == "object") {
if (options.grid.checkboxSelect == true) {
var rows = getCheckedRowsData(options.grid.type, options.grid.id);
if (rows.length == 0) {
$.messager.alert(
topJUI.language.message.title.operationTips,
topJUI.language.message.msg.checkSelfGrid,
topJUI.language.message.icon.warning
);
return;
}
href = replaceUrlParamValueByBrace(options.href, rows, "multiple");
} else {
var row = getSelectedRowData(options.grid.type, options.grid.id);
if (!row) {
$.messager.alert(
topJUI.language.message.title.operationTips,
topJUI.language.message.msg.selectSelfGrid,
topJUI.language.message.icon.warning
);
return;
}
href = replaceUrlParamValueByBrace(options.href, row);
}
} else {
href = options.href;
}
window.open(href);
}
/**
* 绑定按钮点击事件
* @param options
*/
function bindMenuClickEvent($element, options) {
//if (typeof options.grid != "object") {
var toolbarOptions = getOptionsJson($element.closest("div"));
options = $.extend(true, toolbarOptions, options);
//}
var defaults = {};
// 打开dialog事件
if (options.clickEvent == "openDialog") {
defaults = {
iconCls: 'fa fa-plus',
parentGridUnselectedMsg: '请先选中一条主表数据!',
dialog: {
title: '数据详情',
width: 700,
height: 450
}
}
options.dialog.width = options.dialog.width ? options.dialog.width : 700;
options.dialog.height = options.dialog.height ? options.dialog.height : 'auto';
options = $.extend(defaults, options);
if (typeof options.dialog == "object") {
generateDialogDoc(options);
}
/*var extendDoc = "";
// 判断是否存在父grid
if (typeof options.parentGrid == "object") {
extendDoc += ',parentGrid:{type:\'' + options.parentGrid.type + '\',id:\'' + options.parentGrid.id + '\',params:\'' + options.parentGrid.params + '\',unselectedMsg:\'' + options.parentGrid.unselectedMsg + '\'}';
}
// 判断是否存在自身grid
if (typeof options.grid == "object") {
extendDoc += ',grid:{type:\'' + options.grid.type + '\',id:\'' + options.grid.id + '\',pkName:\'' + options.grid.pkName + '\',parentIdField:\'' + options.grid.parentIdField + '\',unselectedMsg:\'' + options.grid.unselectedMsg + '\',uncheckedMsg:\'' + options.grid.uncheckedMsg + '\'}';
}
// 判断dialog中是否存在editor编辑器
if (typeof options.dialog.editor == "object") {
var editorStr = "";
var dh = "";
for (var i = 0; i < options.dialog.editor.length; i++) {
if (i != options.dialog.editor.length - 1)
dh = ",";
editorStr += '{id:\'' + options.dialog.editor[i].id + '\',type:\'' + options.dialog.editor[i].type + '\',field:\'' + options.dialog.editor[i].field + '\'}' + dh;
}
extendDoc += ',editor:[' + editorStr + ']';
}
// 如果未设置dialog标题,直接调用按钮名称
!options.dialog.title ? options.dialog.title = $element.text().replace(/[\r\n]/g, "") : '';
!options.dialog.url ? options.dialog.url = "" : '';
!options.dialog.beforeOpenCheckUrl ? options.dialog.beforeOpenCheckUrl = "" : options.dialog.beforeOpenCheckUrl;
var userDefineDialogId = true;
if (options.dialog.id == "" || options.dialog.id == null) {
userDefineDialogId = false;
options.dialog.id = "dialog-" + parseInt(Math.random() * 99999999 + 1);
}
var dialogDom = "";
var divOrForm = options.form == false ? "div" : "form";
dialogDom = '<' + divOrForm + ' data-toggle="topjui-dialog" data-options="id:\'' + options.dialog.id + '\',href:\'' + options.dialog.href + '\',url:\'' + options.dialog.url + '\',title:\'' + options.dialog.title + '\',beforeOpenCheckUrl:\'' + options.dialog.beforeOpenCheckUrl + '\'' + extendDoc + '"></' + divOrForm + '>';
// 判断dialog是否存在linkbutton按钮组
var buttonsDom = "";
if (typeof options.dialog.buttonsGroup == "object") {
var buttonsArr = options.dialog.buttonsGroup;
var btLength = buttonsArr.length;
if (btLength > 0) {
for (var i = 0; i < btLength; i++) {
// 默认为ajaxForm提交方式
if (!buttonsArr[i].handler) {
buttonsArr[i].handler = 'ajaxForm';
}
// 传递本grid参数
var gridDoc = "";
if (typeof options.grid == "object") {
gridDoc = ',grid:{type:\'' + options.grid.type + '\',id:\'' + options.grid.id + '\'}';
}
// 传递其它grid参数
if (typeof buttonsArr[i].reload == "object") {
var reloadStr = "";
var dh2 = "";
for (var j = 0; j < buttonsArr[i].reload.length; j++) {
if (j != buttonsArr[i].reload.length - 1)
dh2 = ",";
reloadStr += '{type:\'' + buttonsArr[i].reload[j].type + '\', id:\'' + buttonsArr[i].reload[j].id + '\', clearQueryParams:\'' + buttonsArr[i].reload[j].clearQueryParams + '\'}' + dh2;
}
extendDoc += ',reload:[' + reloadStr + ']';
}
buttonsDom += '<a href="#" data-toggle="topjui-linkbutton" data-options="handlerBefore:\'' + buttonsArr[i].handlerBefore + '\',handler:\'' + buttonsArr[i].handler + '\',dialog:{id:\'' + options.dialog.id + '\'},url:\'' + buttonsArr[i].url + '\',iconCls:\'' + buttonsArr[i].iconCls + '\'' + extendDoc + '">' + buttonsArr[i].text + '</a>';
}
}
}
getTabWindow().$('body').append(
dialogDom +
'<div id="' + options.dialog.id + '-buttons" style="display:none">' +
buttonsDom +
'<a href="#" data-toggle="topjui-linkbutton" data-options="iconCls:\'icon-no\'" onclick="javascript:$(\'#' + options.dialog.id + '\').dialog(\'close\')">关闭</a>' +
'</div>'
)*/
/*$element.on("click", function () {
options.dialog.leftMargin = ($(document.body).width() * 0.5) - (options.dialog.width * 0.5);
options.dialog.topMargin = ($(document.body).height() * 0.5) - (options.dialog.height * 0.5);
if (typeof options.parentGrid == "object") {
openDialogAndloadDataByParentGrid(options);
} else if (options.dialog.url) {
openDialogAndloadDataByUrl(options);
} else {
if (options.grid.uncheckedMsg) {
var rows = getCheckedRowsData(options.grid.type, options.grid.id);
if (rows.length == 0) {
$.messager.alert(
topJUI.language.message.title.operationTips,
options.grid.uncheckedMsg,
topJUI.language.message.icon.warning
);
return;
}
}
if (options.dialog.onBeforeOpen != "undefined") {
// 回调执行传入的自定义函数
executeCallBackFun(options.dialog.onBeforeOpen, options);
}
var $dialogObj = $("#" + options.dialog.id);
$dialogObj.dialog({
width: options.dialog.width,
height: options.dialog.height,
maximized: options.dialog.maximized,
maximizable: options.dialog.maximizable,
left: options.dialog.leftMargin,
top: options.dialog.topMargin,
buttons: options.dialog.buttons
});
//$dialogObj.dialog('refresh', appendSourceUrlParam(options.dialog.href)); //加载两次href指定的页面
$dialogObj.dialog({
href: appendSourceUrlParam(options.dialog.href)
});
$dialogObj.dialog('open');
}
});*/
} else if (options.clickEvent == "openTab") {
defaults = {
iconCls: 'fa fa-th'
}
options = $.extend(defaults, options);
/*$element.on("click", function () {
addParentTab(options);
});*/
} else if (options.clickEvent == "openWindow") {
defaults = {
iconCls: 'fa fa-link'
}
options = $.extend(defaults, options);
/*$element.on("click", function () {
openWindow(options);
});*/
} else if (options.clickEvent == "edatagrid") {
defaults = {
iconCls: 'fa fa-plus'
}
options = $.extend(defaults, options);
$element.on("click", function () {
if (options.type == "addRow")
$('#' + options.grid.id).edatagrid('addRow', 0);
if (options.type == "saveRow")
$('#' + options.grid.id).edatagrid('saveRow');
if (options.type == "cancelRow")
$('#' + options.grid.id).edatagrid('cancelRow');
});
} else if (options.clickEvent == "doAjax") {
defaults = {
iconCls: 'fa fa-cog'
}
options = $.extend(defaults, options);
/*$element.on("click", function () {
//doAjaxHandler(options);
});*/
} else if (options.clickEvent == "request") {
defaults = {
iconCls: 'fa fa-cog'
}
options = $.extend(defaults, options);
/*$element.on("click", function () {
requestHandler(options);
});*/
} else if (options.clickEvent == "delete") {
defaults = {
iconCls: 'fa fa-trash'
}
options = $.extend(defaults, options);
/* $element.on("click", function () {
deleteHandler(options);
});*/
} else if (options.clickEvent == "filter") {
defaults = {
iconCls: 'fa fa-filter'
}
options = $.extend(defaults, options);
/*$element.on("click", function () {
filterHandler(options);
});*/
} else if (options.clickEvent == "search") {
defaults = {
iconCls: 'fa fa-search'
}
options = $.extend(defaults, options);
/*$element.on("click", function () {
searchHandler(options);
});*/
} else if (options.clickEvent == "export") {
defaults = {
iconCls: 'fa fa-file'
}
options = $.extend(defaults, options);
/*$element.on("click", function () {
exportHandler(options);
});*/
} else if (options.clickEvent == "import") {
defaults = {
iconCls: 'fa fa-file',
href: '/system/excel/excelImport'
}
options = $.extend(defaults, options);
/*$element.on("click", function () {
importHandler(options);
});*/
}
return options;
}
/**
* 打开dialog,加载选中的表格数据到dialog中
* @param options
*/
function openDialogAndloadDataByParentGrid(options) {
var parentGridUnselectedMsg = "";
var parentGridParam = "";
if (typeof options.parentGrid == "object") {
parentGridUnselectedMsg = options.parentGrid.unselectedMsg;
parentGridParam = options.parentGrid.params;
if (options.parentGrid.type == "datagrid") {
} else if (options.parentGrid.type == "treegrid") {
}
}
//判断父表数据是否被选中
var parentRow = getSelectedRowData(options.parentGrid.type, options.parentGrid.id);
if (!parentRow) {
$.messager.alert(
topJUI.language.message.title.operationTips,
options.parentGrid.unselectedMsg || topJUI.language.message.msg.selectParentGrid,
topJUI.language.message.icon.warning
);
return;
}
//打开dialog前判断是否还有其它操作限制
if (options.dialog.beforeOpenCheckUrl) {
if (!beforeOpenCheck(replaceUrlParamValueByBrace(options.dialog.beforeOpenCheckUrl, parentRow))) return;
}
var $dialogObj = $("#" + options.dialog.id);
$dialogObj.iDialog(options);
// 保存原始href,以便在占位参数替换后还原
var oriHref = options.dialog.href;
var newHref = oriHref;
if (options.dialog.href.indexOf("{") != -1) {
if (options.dialog.href.indexOf("{parent.") != -1) {
// 替换父表中选中行占位值
newHref = replaceUrlParamValueByBrace(appendSourceUrlParam(oriHref), parentRow, "parent");
}
if (newHref.indexOf("{") != -1) {
// 替换本表中选中行占位值
var row = getSelectedRowData(options.grid.type, options.grid.id);
newHref = replaceUrlParamValueByBrace(appendSourceUrlParam(newHref), row);
}
$dialogObj.dialog({
href: newHref
});
$dialogObj.dialog('open');
} else {
$dialogObj.dialog('open');
}
}
/**
* 通过dialog的url参数加载数据到dialog中
* @param options
*/
function openDialogAndloadDataByUrl(options) {
//判断本表数据是否被选中
var row = getSelectedRowData(options.grid.type, options.grid.id);
if (!row) {
$.messager.alert(
topJUI.language.message.title.operationTips,
topJUI.language.message.msg.selectSelfGrid,
topJUI.language.message.icon.warning
);
return;
}
//打开dialog前判断是否还有其它操作限制
if (options.dialog.beforeOpenCheckUrl) {
if (!beforeOpenCheck(replaceUrlParamValueByBrace(options.dialog.beforeOpenCheckUrl, row))) return;
}
var $dialogObj = $("#" + options.dialog.id);
$dialogObj.iDialog(options);
// 保存原始url,以便在占位参数替换后还原
var oriHref = options.dialog.href;
if (options.dialog.href.indexOf("{") != -1) {
// 替换本表中选中行占位值
var newHref = replaceUrlParamValueByBrace(appendSourceUrlParam(oriHref), row);
$dialogObj.dialog({
href: newHref
});
//$dialogObj.dialog('open').dialog("refresh", newHref); //加载两次href指定的页面
$dialogObj.dialog('open');
} else {
$dialogObj.dialog('open');
}
}
/**
* 打开一个对话框窗口
* @param options
*/
function dialogHandler(options) {
if (options.component == "loadData") {
editHandler(options);
} else if (options.action == "loadParentData") {
addChildHandler(options);
} else {
addHandler(options);
}
}
/**
* 新增表格数据
* @param options
*/
function addHandler(options) {
var controllerUrl = getUrl("controller");
var defaults = {
gridId: 'datagrid'
//dialogId : 'addDialog',
//dialogHref : options.dialogHref ? options.dialogHref : controllerUrl + "edit"
};
options = $.extend(defaults, options);
//clearDialogHrefKeyValue(options.addDialogId, "action,uuid");
var dialogObj = $("#" + options.dialogId);
dialogObj.dialog({
//title : '新增数据',
iconCls: 'fa fa-plus',
toolbar: '#' + options.dialogId + '-toolbar',
buttons: '#' + options.dialogId + '-buttons'
});
if (options.dialogHref != undefined) {
dialogObj.dialog('refresh', options.dialogHref);
}
dialogObj.dialog('open');
}
/**
* 检查授权
* @param resource 资源值,可以是url也可以是标识
*/
function authCheck(resource) {
if (topJUI.config.authUrl == "") {
return true;
} else {
var isAuth = false;
$.ajax({
type: 'post',
url: ctx + "/system/authAccess/getAuthByRoleIdAndUrl",
data: {url: resource},
async: false,
success: function (data) {
if (data == 0) {
var msgJson = {
title: topJUI.language.message.title.operationTips,
msg: topJUI.language.message.msg.permissionDenied,
icon: topJUI.language.message.icon.warning
};
$.messager.alert(msgJson);
isAuth = false;
} else {
isAuth = true;
}
}
});
return isAuth;
}
}
function beforeOpenCheck($checkUrl) {
var isAuth = false;
$.ajax({
type: 'get',
url: $checkUrl,
async: false,
success: function (data) {
if (data.statusCode == 300) {
var msgJson = {
title: topJUI.language.message.title.operationTips,
msg: data.message
};
$.messager.alert(msgJson);
isAuth = false;
} else {
isAuth = true;
}
}
});
return isAuth;
}
//新增子表数据
function addChildHandler(options) {
var row = $("#" + options.parentGridId).treegrid('getSelected') ? $("#" + options.parentGridId).treegrid('getSelected') : $("#" + options.parentGridId).datagrid('getSelected');
if (row) {
var controllerUrl = getUrl("controller");
var defaults = {
gridId: 'datagrid',
//dialogId : 'addDialog',
dialogHref: options.dialogHref ? options.dialogHref : controllerUrl + "edit"
}
options = $.extend(defaults, options);
//clearDialogHrefKeyValue(options.addDialogId, "action,uuid");
var dialogObj = $("#" + options.dialogId);
dialogObj.dialog({
//title : '新增数据',
iconCls: 'fa fa-plus',
toolbar: '#' + options.dialogId + '-toolbar',
buttons: '#' + options.dialogId + '-buttons'
});
if (options.dialogHref != undefined) {
dialogObj.dialog('refresh', options.dialogHref);
}
dialogObj.dialog('open');
setTimeout(function () {
getTabWindow().$("#" + options.dialogId + " iframe").each(function (i) {
this.contentWindow.document.body.innerHTML = '';
});
var jsonData = {};
if (options.gridParam) {
var gridParamArr = options.gridParam.split(",");
//传递给dialog输入框的参数
for (var i = 0; i < gridParamArr.length; i++) {
jsonData[gridParamArr[i]] = row[gridParamArr[i]];
}
}
jsonData.puuid = row.uuid;
dialogObj.form('load', jsonData);
}, 500);
} else {
$.messager.alert(
topJUI.language.message.title.operationTips,
topJUI.language.message.msg.selectParentGrid,
topJUI.language.message.icon.warning
);
}
}
//编辑表格数据
function editHandler(options) {
var controllerUrl = getUrl("controller");
var defaults = {
gridId: 'datagrid',
//dialogId : 'editDialog',
dialogHref: options.dialogHref ? options.dialogHref : controllerUrl + "edit",
dialogUrl: options.dialogUrl ? options.dialogUrl : controllerUrl + "getDetailByUuid?uuid={uuid}"
}
options = $.extend(defaults, options);
loadDialogData(options);
}
/**
* 在复选框被选中的时候返回所有行
* @param gridType
* @param gridId
* @returns {jQuery}
*/
function getCheckedRowsData(gridType, gridId) {
return $("#" + gridId).treegrid('getChecked');
}
/**
* 获得选中的datagrid或treegrid一行数据
* @param options
* @returns {*}
*/
function getSelectedRowData(gridType, gridId) {
return getRowsDataBySelected(gridType, gridId, false);
}
/**
* 获得选中的datagrid或treegrid多行数据
* @param options
* @returns {*}
*/
function getSelectedRowsData(gridType, gridId) {
return getRowsDataBySelected(gridType, gridId, true);
}
/**
* 获得选中的datagrid或treegrid一行或多行数据
* @param options
* @returns {*}
*/
function getRowsDataBySelected(gridType, gridId, multiple) {
var rows = multiple ? $("#" + gridId).datagrid('getSelections') : $("#" + gridId).datagrid('getSelected');
/*
var rows;
if (gridType == "datagrid") {
rows = multiple ? $("#" + gridId).datagrid('getSelections') : $("#" + gridId).datagrid('getSelected');
} else if (gridType == "treegrid") {
rows = multiple ? $("#" + gridId).treegrid('getSelections') : $("#" + gridId).treegrid('getSelected');
}
*/
return rows;
}
function getRowsDataBySelected2(options, multiple) {
var rows;
var gridId;
if (typeof options.parentGrid == "object") {
gridId = options.parentGrid.id;
if (options.parentGrid.type == "datagrid") {
rows = multiple ? $("#" + gridId).datagrid('getSelections') : $("#" + gridId).datagrid('getSelected');
} else if (options.parentGrid.type == "treegrid") {
rows = multiple ? $("#" + gridId).treegrid('getSelections') : $("#" + gridId).treegrid('getSelected');
}
} else if (typeof options.grid == "object") {
gridId = options.grid.id;
if (options.grid.type == "datagrid") {
rows = multiple ? $("#" + gridId).datagrid('getSelections') : $("#" + gridId).datagrid('getSelected');
} else if (options.grid.type == "treegrid") {
rows = multiple ? $("#" + gridId).treegrid('getSelections') : $("#" + gridId).treegrid('getSelected');
}
}
return rows;
}
/**
* 刷新多个表格
* @param gridObj
*/
function refreshGrids(gridObj) {
// 重新加载Grid数据
if (typeof gridObj == 'object') {
for (var i = 0; i < gridObj.length; i++) {
var obj = gridObj[i];
// 通过闭包嵌套和不同时序的执行来刷新grid
(function (i) {
setTimeout(function () {
refreshGrid(obj.type, obj.id, obj.clearQueryParams);
}, i * 100);
})(i);
}
}
}
/**
* 刷新一个datagrid或treegrid
* @param options
*/
function refreshGrid(gridType, gridId, clearQueryParams) {
if (gridType == "datagrid") {
if (clearQueryParams == true) {
$("#" + gridId).datagrid({
queryParams: {
clearQueryParams: ''
}
});
}
$("#" + gridId).datagrid('reload');
$("#" + gridId).datagrid('unselectAll');
} else if (gridType == "treegrid") {
// 刷新整合表格
//$("#" + options.treegrid.id).treegrid('reload');
// 只刷新当前节点
$("#" + gridId).treegrid('reload');
$("#" + gridId).treegrid('unselectAll');
}
}
/**
* Ajax操作
* @param options
*/
function doAjaxHandler(options) {
var defaults = {
gridId: 'datagrid',
iconCls: 'fa fa-cog',
comfirmMsg: topJUI.language.message.msg.comfirmMsg,
grid: {
uncheckedMsg: topJUI.language.message.msg.checkSelfGrid
}
}
options = $.extend({}, defaults, options);
options.url = appendSourceUrlParam(options.url);
// 替换父表的占位数据
if (options.url.indexOf("{parent") != -1) {
var parentRow = getSelectedRowData(options.parentGrid.type, options.parentGrid.id);
if (!parentRow) {
$.messager.alert(
topJUI.language.message.title.operationTips,
topJUI.language.message.msg.selectParentGrid,
topJUI.language.message.icon.warning
);
return;
}
options.url = replaceUrlParamValueByBrace(options.url, parentRow, "parent");
}
if (typeof options.grid == "object") {
var dgOpts = $("#" + options.grid.id).datagrid('options');
if (options.grid.multiCheck == true || options.grid.uncheckedMsg != undefined) {
// 勾选复选框提交多条数据
$("#" + options.grid.id).datagrid('multiCheckedAjax', options);
} else {
if (dgOpts.singleSelect == false) {
$("#" + options.grid.id).datagrid('multiSelectedAjax', options);
} else { // 提交单条记录
$("#" + options.grid.id).datagrid('singleSelectedAjax', options);
}
}
}
}
/**
* 普通请求操作
* @param options
*/
function requestHandler(options) {
options.url = appendSourceUrlParam(options.url);
if (typeof options.grid == "object") {
// 替换本表的占位数据
var row = getSelectedRowData(options.grid.type, options.grid.id);
if (row == null) {
$.messager.alert(
topJUI.language.message.title.operationTips,
topJUI.language.message.msg.selectSelfGrid,
topJUI.language.message.icon.warning
);
return;
}
// 替换本表中选择的单行字段值
options.newUrl = replaceUrlParamValueByBrace(options.url, row);
} else {
options.newUrl = options.url;
}
window.location.href = options.newUrl;
}
/**
* 删除表格数据
* @param options
*/
function deleteHandler(options) {
// 权限控制
var oriUrl = options.url ? options.url : getUrl("controller") + "delete"
var defaults = {
gridId: 'datagrid',
url: options.url ? appendSourceUrlParam(options.url) : getUrl("controller") + "delete" + location.search
}
options = $.extend(defaults, options);
var rows = getCheckedRowsData(options.grid.type, options.grid.id);
if (rows.length == 0) {
$.messager.alert(
topJUI.language.message.title.operationTips,
topJUI.language.message.msg.checkSelfGrid,
topJUI.language.message.icon.warning
);
return;
}
$.messager.confirm(
topJUI.language.message.title.confirmTips,
topJUI.language.message.msg.confirmDelete,
function (flag) {
if (flag) {
options.ajaxData = {
uuid: getMultiRowsFieldValue(rows, "uuid"),
uuids: getMultiRowsFieldValue(rows, "uuid")
};
if (doAjax(options)) {
refreshGrid(options.grid.type, options.grid.id);
}
}
});
}
/**
* 过滤表格数据
* @param options
*/
function filterHandler(options) {
if (typeof options.grid == "object") {
var gridId = options.grid.id;
var gridOptions = $("#" + gridId).datagrid("options");
var filter = gridOptions.filter ? gridOptions.filter : [];
if (options.grid.type == "datagrid") {
if ($(".datagrid-filter-row").length > 0) {
$("#" + gridId).datagrid('disableFilter');
} else {
$("#" + gridId).datagrid('enableFilter', filter);
}
} else if (options.grid.type == "treegrid") {
if ($(".datagrid-filter-row").length > 0) {
$("#" + gridId).treegrid('disableFilter');
} else {
$("#" + gridId).treegrid('enableFilter', filter);
}
}
}
}
/**
* 高级查询表格数据
* @param options
*/
function searchHandler(options) {
// 获得查询字段信息
if (typeof options.grid == "object") {
getColumnsNameAndField(options.grid.type, options.grid.id);
}
// 组合查询对话框内容
var searchContent = '<table id="advanceSearchTable" class="editTable">';
searchContent += '<tr>';
searchContent += '<td style="font-weight: bold;">方式</td>';
searchContent += '<td style="font-weight: bold;">左括号</td>';
searchContent += '<td style="font-weight: bold;">字段</td>';
searchContent += '<td style="font-weight: bold;">条件</td>';
searchContent += '<td style="font-weight: bold;">数值</td>';
searchContent += '<td style="font-weight: bold;">右括号</td>';
searchContent += '<td style="font-weight: bold;">操作</td>';
searchContent += '</tr>';
searchContent += '<tr>';
searchContent += '<td><input type="text" class="join" name="join"></td>';
searchContent += '<td><input type="text" class="lb" name="lb"></td>';
searchContent += '<td><input type="text" class="field" name="field"></td>';
searchContent += '<td><input type="text" class="op" name="op"></td>';
searchContent += '<td><input type="text" class="value" name="value"></td>';
searchContent += '<td><input type="text" class="rb" name="rb"></td>';
searchContent += '<td><a id="addCondition" href="javascript:void(0)"></a>';
searchContent += '</td>';
searchContent += '</tr>';
searchContent += '</table>';
// 组合查询对话框默认属性
var defaults = {
dialog: {
id: 'advanceSearchDialog',
title: '组合查询',
width: 700,
height: 300,
modal: false,
collapsible: true,
minimizable: false,
maximized: false,
resizable: true,
closed: false,
closable: true,
zIndex: 10,
iconCls: 'fa fa-search',
//href: '/html/search/form.html',
content: searchContent,
buttons: '#advanceSearchDialog-buttons',
onOpen: function () {
//窗口打开时,触发事件
$(this).trigger(topJUI.eventType.initUI.advanceSearchForm);
}
}
};
options = $.extend(defaults, options);
// 组合查询对话框
var searchForm = '<form id="advanceSearchDialog"></form>';
searchForm += '<div id="advanceSearchDialog-buttons" style="display:none">';
searchForm += '<a href="#" id="resetAdvanceSearchForm" data-toggle="easyui-linkbutton" data-options="iconCls:\'icon-reload\'">清空</a>';
searchForm += '<a href="#" id="submitAdvanceSearchForm" data-toggle="topjui-linkbutton" data-options="iconCls:\'icon-search\'">查询</a>';
searchForm += '<a href="#" id="closeAdvanceSearchDialog">关闭</a>';
searchForm += '</div>';
getTabWindow().$('body').append(searchForm);
// 打开组合查询对话框
var dialogObj = $("#" + options.dialog.id);
dialogObj.dialog(options.dialog);
// 重置查询条件
$('#resetAdvanceSearchForm').linkbutton({
iconCls: 'fa fa-refresh',
onClick: function () {
var formDataArr = [];
loadGrid(formDataArr);
}
});
// 提交查询请求
$('#submitAdvanceSearchForm').linkbutton({
iconCls: 'fa fa-search',
onClick: function () {
var formDataArr = [];
var formData = $("#" + options.dialog.id).serializeArray();
var num = formData.length / 6;
for (var i = 0; i < num; i++) {
var join = formData[i * 6 + 0].name;
var joinValue = formData[i * 6 + 0].value;
var lb = formData[i * 6 + 1].name;
var lbValue = formData[i * 6 + 1].value;
var field = formData[i * 6 + 2].name;
var fieldValue = formData[i * 6 + 2].value;
var op = formData[i * 6 + 3].name;
var opValue = formData[i * 6 + 3].value;
var value = formData[i * 6 + 4].name;
var valValue = formData[i * 6 + 4].value;
var rb = formData[i * 6 + 5].name;
var rbValue = formData[i * 6 + 5].value;
formDataArr.push({
join: joinValue,
lb: lbValue,
field: fieldValue,
op: opValue,
value: valValue,
rb: rbValue
});
}
// console.log(JSON.stringify(formDataArr));
loadGrid(formDataArr);
}
});
// 关闭查询对话框
$('#closeAdvanceSearchDialog').linkbutton({
iconCls: 'fa fa-close',
onClick: function () {
$("#" + options.dialog.id).dialog('close');
//$(this).closest(".window-body").dialog("destroy");
}
});
// 新增查询条件
var html = '<tr>';
html += '<td><input type="text" class="join" name="join"></td>';
html += '<td><input type="text" class="lb" name="lb"></td>';
html += '<td><input type="text" class="field" name="field"></td>';
html += '<td><input type="text" class="op" name="op"></td>';
html += '<td><input type="text" class="value" name="value"></td>';
html += '<td><input type="text" class="rb" name="rb"></td>';
html += '<td><a class="deleteCondition" href="javascript:void(0)"></a></td></tr>';
$("#addCondition").on('click', function () {
$("#advanceSearchTable").append(html);
$(this).trigger(topJUI.eventType.initUI.advanceSearchForm);
});
}
/**
* 导入表格数据
* @param options
*/
function importHandler(options) {
if (typeof options.grid == "object") {
getColumnsNameAndField(options.grid.type, options.grid.id);
var dialogObj = $("#importExcelDialog");
dialogObj.dialog({
title: '导入Excel数据',
iconCls: 'icon-find',
toolbar: '#importDialog-toolbar',
buttons: '#importDialog-buttons'
});
dialogObj.dialog('open');
}
}
/**
* 获得grid的中文列名及字段名
* @param gridType
* @param gridId
*/
function getColumnsNameAndField(gridType, gridId) {
var frozenFieldName = [];
var liveFieldName = [];
var fieldName = [];
var colName = [];
if (gridType == "datagrid") {
frozenFieldName = $("#" + gridId).datagrid('getColumnFields', true);
liveFieldName = $("#" + gridId).datagrid('getColumnFields');
fieldName = frozenFieldName.concat(liveFieldName);
for (var i = 0; i < fieldName.length; i++) {
var col = $("#" + gridId).datagrid("getColumnOption", fieldName[i]);
colName.push(col.title);
}
} else if (gridType == "treegrid") {
frozenFieldName = $("#" + gridId).treegrid('getColumnFields', true);
liveFieldName = $("#" + gridId).treegrid('getColumnFields');
fieldName = frozenFieldName.concat(liveFieldName);
for (var j = 0; j < fieldName.length; j++) {
var col = $("#" + gridId).treegrid("getColumnOption", fieldName[j]);
colName.push(col.title);
}
}
var colNameStr = colName.join(',').replace(/,操作/g, "").replace(/操作,/g, "");
var fieldNameStr = fieldName.join(',').replace(/,handle/g, "").replace(/handle,/g, "");
$.cookie('gridId', gridId);
$.cookie('gridType', gridType);
$.cookie('colNameStr', colNameStr);
$.cookie('fieldNameStr', fieldNameStr);
}
/**
* 导出表格数据
* @param options
*/
function exportHandler(options) {
var controllerUrl = getUrl("controller");
var defaults = {
gridId: 'datagrid',
//url: '/system/index/requestSuccess',
excelTitle: parent.$('#index_tabs').tabs('getSelected').panel('options').title + "_导出数据_" + getCurrentDatetime("YmdHis"),
url: options.url ? options.url : controllerUrl + "exportExcel"
}
options = $.extend(defaults, options);
var gridId;
var frozenFieldName;
var liveFieldName;
var fieldName;
var columnOption;
var colName = [];
var hiddenMark = [];
if (typeof options.grid == "object") {
gridId = options.grid.id;
if (options.grid.type == "datagrid") {
frozenFieldName = $("#" + gridId).datagrid('getColumnFields', true);
liveFieldName = $("#" + gridId).datagrid('getColumnFields');
fieldName = frozenFieldName.concat(liveFieldName);
for (var i = 0; i < fieldName.length; i++) {
columnOption = $("#" + gridId).datagrid("getColumnOption", fieldName[i]);
colName.push(columnOption.title);
if (columnOption.hidden == true || columnOption.checkbox == true)
hiddenMark.push(true);
else
hiddenMark.push(false);
}
} else if (options.grid.type == "treegrid") {
frozenFieldName = $("#" + gridId).treegrid('getColumnFields', true);
liveFieldName = $("#" + gridId).treegrid('getColumnFields');
fieldName = frozenFieldName.concat(liveFieldName);
for (var j = 0; j < fieldName.length; j++) {
columnOption = $("#" + gridId).treegrid("getColumnOption", fieldName[j]);
colName.push(columnOption.title);
if (columnOption.hidden == true || columnOption.checkbox == true)
hiddenMark.push(true);
else
hiddenMark.push(false);
}
}
}
// 去除隐藏的列
for (var h = 0; h < hiddenMark.length; h++) {
if (hiddenMark[h]) {
colName.splice(h, 1);
fieldName.splice(h, 1);
hiddenMark.splice(h, 1);
h--;
}
}
var colNameStr = colName.join(',').replace(/,操作/g, "").replace(/操作,/g, "");
var fieldNameStr = fieldName.join(',').replace(/,handle/g, "").replace(/handle,/g, "");
options.ajaxData = {
excelTitle: options.excelTitle,
colName: colNameStr,
fieldName: fieldNameStr
};
//if (doAjax(options)) {
window.location.href = options.url + '?excelTitle=' + options.excelTitle + '&colName=' + colNameStr + '&fieldName=' + fieldNameStr;
//}
}
//撤销表格数据
function redoHandler() {
$(options.gridId).datagrid('rejectChanges');
$(options.gridId).datagrid('unselectAll');
}
// ajax操作
function doAjax(options) {
var result = false;
var defaults = {
//confirmMsg: '确定要进行该操作吗?'
}
options = $.extend(defaults, options);
$.ajax({
//url: options.url + location.search,
url: options.url,
type: 'post',
data: options.ajaxData,
dataType: "json",
async: false,
contentType: "application/x-www-form-urlencoded;charset=utf-8",
beforeSend: function () {
$.messager.progress({text: '正在操作...'});
},
success: function (data, response, status) {
$.messager.progress('close');
showMessage(data);
// 重新加载指定的Grid数据
refreshGrids(options.reload);
if (data.statusCode == 1 || data.statusCode == 100 || data.statusCode == 200) {
result = true;
} else {
result = false;
}
}
});
return result;
}
/**
* 设置对话框href附加参数及值
* @param dialogId
*/
function setDialogHrefKeyValue(dialogId, paramStr, paramValueStr) {
var paramArr = paramStr.split(",");
var paramValueArr = paramValueStr.split(",");
var dialogHref = $(dialogId).dialog('options').href;
var keyValue = "";
for (i = 0; i < paramArr.length; i++) {
if (dialogHref.indexOf("?") > 0) {
if (dialogHref.indexOf(paramArr[i] + "=" + paramValueArr[i]) == -1) {
keyValue += "&" + paramArr[i] + "=" + paramValueArr[i];
}
} else {
if (i == 0) {
keyValue = "?" + paramArr[i] + "=" + paramValueArr[i];
} else {
keyValue += "&" + paramArr[i] + "=" + paramValueArr[i];
}
}
}
$(dialogId).dialog('options').href = dialogHref + keyValue;
}
function clearDialogHrefKeyValue(dialogId, paramStr) {
var paramArr = paramStr.split(",");
var dialogHref = $(dialogId).dialog('options').href;
if (dialogHref.indexOf("?") > 0) {
var newUrlParam = ""
var urlMain = dialogHref.substring(0, dialogHref.indexOf("?") + 1);
var urlParam = dialogHref.substring(dialogHref.indexOf("?") + 1);
var urlParamArray = urlParam.split("&");
for (i = 0; i < urlParamArray.length; i++) {
for (j = 0; j < paramArr.length; j++) {
if (urlParamArray[i].indexOf(paramArr[j] + "=") >= 0) {
urlParamArray.remove(i);
}
}
}
if (urlParamArray.length == 1) {
newUrlParam = urlParamArray[0];
} else if (urlParamArray.length > 1) {
newUrlParam = urlParamArray.join("&");
}
var newUrl = "";
newUrl = urlMain + newUrlParam;
var lastStr = newUrl.substring(newUrl.length - 1);
if (lastStr == "?") {
newUrl = newUrl.substring(0, newUrl.length - 1);
}
} else {
newUrl = dialogHref;
}
$(dialogId).dialog('options').href = newUrl;
}
// 表单提交返回提示信息判断
// msgCode为1或200时,右下弹出自动关闭提示
// msgCode为100时,中间弹出手动关闭提示
function msgFn(data) {
var msgJson = {};
var msgCode = "";
if (typeof(data) == "object") {
msgCode = data.code;
msgJson = {
title: data.title,
msg: data.message
};
} else {
msgCode = data;
if (data == 1) {
msgJson = {
title: '温馨提示',
msg: '操作成功'
};
} else {
msgJson = {
title: '温馨提示',
msg: '操作失败!未知错误,请重试!'
};
}
}
if (msgCode == 1 || msgCode == 100 || msgCode == 200) {
if (msgCode == 1 || msgCode == 200)
$.messager.show(msgJson);
else
$.messager.alert(msgJson);
//$(options.currentDialogId).dialog('close').form('reset');
//$(options.gridId).datagrid('reload');
/*if(options.refreshTreeId) {
var node = $(options.refreshTreeId).tree('getSelected');
var parentNode = $(options.refreshTreeId).tree('getParent', node.target);
$(options.refreshTreeId).tree('reload', parentNode.target);
//$(options.refreshTreeId).tree('reload', node.target);
}*/
} else {
$.messager.alert(msgJson);
}
}
/**
* 显示提供信息
* @param data
*/
function showMessage(data) {
var messageJson = {};
var statusCode = "";
if (typeof(data) == "object") {
statusCode = data.statusCode;
if (data.icon == undefined) {
data.icon = topJUI.language.message.icon.info;
}
messageJson = {
showType: topJUI.language.message.showType.slide,
title: data.title,
msg: data.message,
icon: data.icon
};
} else {
statusCode = data;
if (data == 1) {
messageJson = {
showType: topJUI.language.message.showType.slide,
title: topJUI.language.message.title.operationTips,
msg: topJUI.language.message.msg.success,
icon: topJUI.language.message.icon.info
};
} else {
messageJson = {
showType: topJUI.language.message.showType.slide,
title: topJUI.language.message.title.operationTips,
msg: topJUI.language.message.msg.failed,
icon: topJUI.language.message.icon.error
};
}
}
if (statusCode == 1 || statusCode == 100 || statusCode == 200) {
if (statusCode == 1 || statusCode == 200) {
//showMask();
//setTimeout(hideMask, 1000);
messageJson.timeout = 1000;
$.messager.show(messageJson); //状态码为1和200时,屏幕中上部弹出操作成功提示框
} else {
$.messager.alert(messageJson); //状态码为100时,屏幕中央弹出操作成功提示框
}
} else {
$.messager.alert(messageJson); //状态码为300时,屏幕中央弹出操作失败提示框
}
}
/**
* 替换url中的{}占位符值
* @param url
* @param dataObj
* @param prefix
* @returns {*}
*/
function replaceUrlParamValueByBrace(url, dataObj, prefix) {
var newUrl = url;
if (url && url.indexOf("{") >= 0) {
// 如果是多维对象,则取第一条记录,用于替换选中的单选记录值
var newDataObj = isMultiObj(dataObj) ? dataObj[0] : dataObj;
// var regExp = /{([\s\S]*?)}/g;
var newPrefix = isNull(prefix) ? "" : prefix + ".";
var regExp = new RegExp("{" + newPrefix + "(.*?)}", "g");
var paramArr = url.match(regExp);
if (paramArr.length > 0) {
for (var i = 0; i < paramArr.length; i++) {
var field = paramArr[i].replace("{" + newPrefix, "").replace("}", "");
if (prefix == "multiple") {
newUrl = newUrl.replace(paramArr[i], getMultiRowsFieldValue(dataObj, field));
} else {
newUrl = newUrl.replace(paramArr[i], newDataObj[field]);
}
}
}
}
return newUrl;
}
function convertParamValue2Object(url, dataObj, prefix) {
var newUrl = url;
if (url && url.indexOf("{") >= 0) {
var obj = {};
// 如果是多维对象,则取第一条记录,用于替换选中的单选记录值
var newDataObj = isMultiObj(dataObj) ? dataObj[0] : dataObj;
// var regExp = /{([\s\S]*?)}/g;
var newPrefix = isNull(prefix) ? "" : prefix + ".";
var regExp = new RegExp("{" + newPrefix + "(.*?)}", "g");
var paramArr = url.match(regExp);
if (paramArr.length > 0) {
for (var i = 0; i < paramArr.length; i++) {
var field = paramArr[i].replace("{" + newPrefix, "").replace("}", "");
if (prefix == "multiple") {
obj[field] = newUrl.replace(paramArr[i], getMultiRowsFieldValue(dataObj, field));
} else {
obj[field] = newUrl.replace(paramArr[i], newDataObj[field]);
}
}
}
}
return obj;
}
/**
* 根据传递过来的paramObj,替换其中对应的值
* @param paramObj
* @param dataObj
* @returns {{}} 返回带实际值的对象数据
*/
function convertParamObj2ObjData(paramObj, dataObj) {
var obj = {};
var param, field;
for (param in paramObj) {
field = paramObj[param];
if (isMultiObj(dataObj)) {
obj[param] = getMultiRowsFieldValue(dataObj, field);
} else {
obj[param] = "'" + dataObj[field] + "'";
}
}
return obj;
}
/**
* 根据选中的多行记录,获得多行记录的以逗号分隔的某个字段值组合
* @param rowsData
* @param field
* @returns {string}
*/
function getMultiRowsFieldValue(rowsData, field) {
var fieldArr = [];
for (var i = 0; i < rowsData.length; i++) {
fieldArr.push("'" + rowsData[i][field] + "'");
}
return fieldArr.join(',');
}
/**
* 将表单数据序列化为json数据
* $("#form").serializeObject();
* @returns {{}}
*/
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};