2021-05-12 23:37:34 +08:00

714 lines
20 KiB
JavaScript

/* for datagrid queryParams*/
function dataGridQueryParams(params) {
var postData={};
if($("#basic_search_form")){//o.length>0
postData=$("#basic_search_form").serializeObject();
}
if($("#advanced_search")){//o.length>0
postData=$.extend(postData,$("#advanced_search_form").serializeObject()||{});
}
params=$.extend(params,postData);
return params;
}
//jquery begin
$(function(){
$.datetimepicker.setLocale(webLocale.substring(0, 2));
$(".datetimepicker").datetimepicker({format:'Y-m-d H:i'});
$(".datepicker").datetimepicker({timepicker:false,format:'Y-m-d'});
$(".timepicker").datetimepicker({datepicker:false,format:'H:i',step:10});
$(".multipleselect").multipleSelect({});
//on captcha image click ,new a captcha code
$('.captcha-image').click(function () {//
$(this).attr("src", webContextPath + "/captcha?"+(new Date()).getTime());
});
/*side-nav-menu*/
$(".sidenav-fold-toggler").on("click",function(e) {
$(".app").toggleClass("side-nav-folded");
e.preventDefault();
});
$('.side-nav-menu').each(function(){
var href = $(this).attr('href');
if(window.location.href.indexOf(href) > 0){
$(this).parents("li").addClass("mm-active");
}
});
/** switch_tab*/
$(".switch_tab_class").on("click",function(){
if($(".switch_tab_current").attr("id")==(this.id)){
return;
}
$(".switch_tab .switch_tab_class").removeClass("switch_tab_current");
$(this).addClass("switch_tab_current");
$(".switch_tab li").each(function(){
$("#"+$(this).attr("value")).hide();
});
$("#"+$(this).attr("value")).show();
if (typeof(switchTab) == "function"){
switchTab($(this).attr("value"));//user define after switch Tab
}
});
//document forward
$.forward=function(config){
if(config.target){
window.open(config.url,"_blank")
return;
}
if(config.url){//to url
document.location.href=config.url;
}else if(config.href){//to href
document.location.href=config.href;
}else if(config.elem){//to elem by url attr
if($("#"+config.elem).attr("wurl")){
document.location.href=$("#"+config.elem).attr("wurl");
}
}else{
document.location.href=config;
}
};
//ajax loading...,mask with loading icon
$.loading=function(){
$.blockUI({
message: "<div class='ajaxloading'></div>",
css: {
top : ($(window).height() - 80) /2 + 'px',
left : ($(window).width() - 80) /2 + 'px',
width : '78px',
border : 0,
backgroundColor : 'transparent'
},
overlayCSS: {
opacity : 0
}
});
};
//cancel $.loading()'s mask
$.unloading=function(){
$.unblockUI();
};
//document mask
$.mask=function(){
$.blockUI({
message: "",
css: {
top : ($(window).height()) /2 + 'px',
left : ($(window).width()) /2 + 'px',
border : 0.1,
backgroundColor : 'transparent'
},
overlayCSS: {
opacity : 0
}
});
};
//unmask $.mask()'s mask
$.unmask=function(){
$.unblockUI();
};
//define message
$.extend($.platform.messages, {
messageType : {
information : "information",
error : "error",
question : "question",
warning : "warning",
succeed : "succeed",
//
success : "succeed",
fail : "error",
info : "information",
prompt : "information"
}
});
$(".checkbox").each(function(){
$(this).after("<span class='checkboxspan icon_checkbox' for='"+this.id+"'></span>");
$(this).hide();
});
//add button
$(".form_checkbox_label").click(function(){
var checkboxElem=$(this).find(".checkboxspan");
var forElem=checkboxElem.attr("for");
if(checkboxElem.hasClass("icon_checkbox")){
$("#"+forElem).prop("checked",true);
checkboxElem.removeClass("icon_checkbox");
checkboxElem.addClass("icon_checkbox_selected");
}else{
checkboxElem.removeClass("icon_checkbox_selected");
checkboxElem.addClass("icon_checkbox");
$("#"+forElem).prop("checked",false);
}
});
//window
$.window=function(settings){
var settings=$.extend({
title : $.platform.messages.window.title,
width : 400,
height : 340,
lock : true,
background : "eeeeee",
opacity : 0.1 ,
init: function () {
$.mask();
},
close: function(){
$.unmask();
}
}, settings || {});
var winContent="<iframe " +
"scrolling='yes' " +
"frameborder='0' " +
"width='"+settings.width+"' " +
"height='"+settings.height+"' " +
"src='"+settings.url+"'" +
"></iframe>";
$.dialog({//open iframe
title : settings.title,
content : winContent,
width : settings.width,
height : settings.height,
icon : settings.type,
init : settings.init,
lock : true,
background : "eeeeee",
padding : '0px 25px',
opacity : 0.1,
ok : function () {},
cancel : function () {},
button : [{
value : settings.closeText,
callback : settings.callback,
disabled : false,
focus : true
}]
});
$(".d-footer").hide();
};
//close window
$.closeWindow=function(){
$(".d-buttons", window.parent.document).find("[value=cancel]").click();
};
//alert dialog
$.alert=function(settings){
var settings=$.extend({
title : $.platform.messages.alert.title,
type : "warning",//alert type
width : 300,
height : 80,
callback : function(){},
init : null,
closeText : $.platform.messages.alert.closeText//close text
}, settings || {});
$.dialog({//open
title : settings.title,
content : settings.content,
width : settings.width,
height : settings.height,
icon : settings.type,
init : settings.init,
lock : true,
background : "eeeeee",
opacity : 0.1,
okValue : null,
cancelValue : null,
button : [{
value : settings.closeText,
callback : settings.callback,
disabled : false,
focus : true
}]
});
$(".d-footer").show();
};
//conform dialog
$.conform=function(settings){
var settings=$.extend({
title : $.platform.messages.alert.title,
content : "",
type : "question",//default type
width : 300,
height : 80,
callback : function (){},//callback function
init : null//init function
}, settings || {});
$.dialog({
title : settings.title,
content : settings.content,
width : settings.width,
height : settings.height,
icon : settings.type,
lock : true,
background : "eeeeee",
opacity : 0.1,
okValue : $.platform.messages.conform.yes,//yes
cancelValue : $.platform.messages.conform.no,//no
ok : settings.callback,
cancel : function (){}
});
$(".d-footer").show();
};
//get Selections Rows Data
$.dataGridSelRowsData=function(dataGridElement){
return $(dataGridElement).bootstrapTable('getSelections');
};
//get Selections Rows Data
$.gridSelectedData=function(dataGridElement){
return $(dataGridElement).bootstrapTable('getSelections');
};
//get Selections Rows Ids
$.gridSelectedIds=function(dataGridElement){
var selectIds="";
if($(dataGridElement).length>0){//get grid list selected ids
var selRows = $(dataGridElement).bootstrapTable('getSelections');
for (var i=0;i<selRows.length; i++){
selectIds=selectIds+","+selRows[i].id;
}
selectIds=selectIds.substring(1);
}
return selectIds;
};
// Fetch all the forms we want to apply custom Bootstrap validation styles to
// For actionForm use ajax submit
var forms = $(".needs-validation");
// Loop over them and prevent submission
Array.prototype.filter.call(forms, function (form) {
form.addEventListener('submit', function (event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}else{
if($("#actionForm")[0]){//ajaxSubmit
$("#actionForm").ajaxSubmit({//form ajax submit
dataType : 'json',//json type
success : function(data) { //success return
$.unloading();
var formErrorType=$("#actionForm").attr("type");//error alert type
if(data.errors && formErrorType){//have error field return
if(formErrorType=="alert"){//alert dialog
var errorMessage=data.message+"<br>";
for (var elem in data.errors){
errorMessage+=data.errors[elem].message+"<br>";
}
$.alert({content:errorMessage,type:"error"});
}else{//label tip
for (var elem in data.errors){
$("label[for='"+data.errors[elem].field+"']").html(data.errors[elem].message);
}
if(formErrorType!="label"){
$("#"+formErrorType).show();
}
}
return;
} else {//no error,alert result message
$.alert({content:data.message,type:$.platform.messages.messageType[data.messageType],
callback:function(){
if($("#actionForm").attr("autoclose")) {//auto close button
if($("#backBtn").attr("id")){
$("#backBtn").click();
}else{
$.closeWindow();
}
return;
}
if($("#actionForm").attr("forward")){//auto forwar to actionForm forward attr
document.location.href=$("#actionForm").attr("forward");
}
}
});
}
// refresh datagrid after Submit
if($("#datagrid")[0]){
$("#datagrid").bootstrapTable("refresh");
}
//self define afterSubmit
if (typeof(afterSubmit) == "function"){
afterSubmit(data);//call back
}
},
beforeSubmit: function(arr, $form, options) { //before submit
$.loading();//loading icon
if (typeof(beforeSubmit) == "function"){
return beforeSubmit();//callback
}
},
error : function(a, b, c) {//submit error
$.unloading();
$.alert({content:$.platform.messages.submit.errorText,type:"error"});
}
});
event.preventDefault();
event.stopPropagation();
}
}
form.classList.add('was-validated');
}, false);
});
//window open by element is window style
$(".window").on("click",function(){
//before open action
if (typeof(beforeWindow) == "function"){
beforeWindow();
}
var url=$(this).attr("wurl");
var refObject = $(this).attr("ref");
var refData = "";
if(refObject){
if(refObject=="datagrid" && $.gridSelectedData("#datagrid").length>0){
refData= $.gridSelectedData("#datagrid")[0].id;
}else if($("#"+refObject).val()!=""){
refData = $("#"+refObject).val();
}
if( refData == null || refData == ""){
$.alert({content:$.platform.messages.select.alertText});
return;
}
url = url + "/"+ refData;
}
$.window({
url : url,//window url
title : $(this).attr("wtitle"),//title
width : $(this).attr("wwidth"),//width
height : $(this).attr("wheight")//height
});//open window
});
//click Btn Submit data to server
$(".sendBtn").on("click",function(){
var url=$(this).attr("wurl");
var refObject = $(this).attr("ref");
if(refObject){
if(refObject=="datagrid"){
var selectIds= $.gridSelectedIds("#datagrid");
if(selectIds == null || selectIds == "") {
return;
}
url = url+"?id="+selectIds;
}else if($("#"+refObject).val()!=""){
url=url+"/"+$("#"+refObject).val();
}else{
$.alert({content:$.platform.messages.select.alertText});
return;
}
}
$.post(url, {currTime:(new Date()).getTime()}, function(data) {
//alert result
$.alert({content:data.message,type:$.platform.messages.messageType[data.messageType]});
//refresh grid list
if($("#datagrid")[0]){
$("#datagrid").bootstrapTable("refresh");
}
});
});
//forward to url, by forward style
$(".forward").on("click",function(){
var settings={
url : $(this).attr("wurl"),//current element url
href : $(this).attr("wurl")//current element href
};
$.forward(settings);
});
//advanced_search toggle
$("#advancedSearchExpandBtn").click(function(){
$("#advanced_search").toggle();
if($("#advanced_search").is(":visible")){
$(this).val($(this).attr("collapseValue"));
}else{
$(this).val($(this).attr("expandValue"));
$("#advanced_search_form").resetForm();
}
});
//search button
$("#searchBtn").on("click",function(){
$("#list_pager").show();
if (typeof(beforeSearch) == "function"){
beforeSearch();///before Search action
}
//query for grid list
$('#datagrid').bootstrapTable('refresh', {});
if (typeof(afterSearch) == "function"){
afterSearch();//call back
}
});
//close button
$("#closeBtn").click(function(){
$.closeWindow();
});
//add button
$("#addBtn").click(function(){
if (typeof(addAction) == "function"){
document.location.href=addAction(this);//user define forward
}else {
if (typeof(beforeAdd) == "function"){
beforeAdd(this);
}
if($(this).attr("target")&&$(this).attr("target")=="forward"){
if($(this).attr("ref")){
if($("#"+$(this).attr("ref")+"").val()==""){
$.alert({content:$.platform.messages.select.alertText});
return;
}else{
$.forward($(this).attr("wurl")+"/"+$("#"+$(this).attr("ref")+"").val());
}
}else{
$.forward($(this).attr("wurl"));
}
}else{
var settings={
url : $(this).attr("wurl"),//window url
title : $(this).attr("wtitle"),//title
width : $(this).attr("wwidth"),//width
height : $(this).attr("wheight")//height
};
if($(this).attr("ref")){
if($("#"+$(this).attr("ref")+"").val()==""){
$.alert({content:$.platform.messages.select.alertText});
return;
}else{
settings.url=$(this).attr("wurl")+"/"+$("#"+$(this).attr("ref")+"").val();
}
}else{
settings.url=$(this).attr("wurl");
}
$.window(settings);//open window
}
}
});
//modify button
$("#modifyBtn").click(function(){
if (typeof(updateAction) == "function"){
document.location.href=updateAction(this);//自定义跳转
}else {
if (typeof(beforeUpdate) == "function"){
beforeUpdate(this);
}
var selectId= $.gridSelectedIds("#datagrid");
if(selectId == null || selectId == "") {
$.alert({content:$.platform.messages.select.alertText});
return;
}
if($(this).attr("target")&&$(this).attr("target")=="forward"){
$.forward($(this).attr("wurl")+"/"+selectId);
}if($(this).attr("target")&&$(this).attr("target")=="_blank"){
window.open($(this).attr("wurl")+"/"+selectId);
}else{
var settings={
url : $(this).attr("wurl")+"/"+selectId,//window url
title : $(this).attr("wtitle"),//title
width : $(this).attr("wwidth"),//width
height : $(this).attr("wheight")//height
};
$.window(settings);//open window
};
};
});
//delete and batch delete button
$("#deleteBtn").click(function(){
if (typeof(beforeDelete) == "function"){
beforeDelete(this);//before function
}
var selectIds=$.gridSelectedIds("#datagrid");
if(selectIds == null || selectIds == "") {
$.alert({content:$.platform.messages.select.alertText});
return;
}
var _this=this;
$.conform({//conform action
content : $.platform.messages.del.conformText,
callback : function () {
//delete action post to url with ids
$.post($(_this).attr("wurl")+"?id="+selectIds, {_method:"delete",currTime:(new Date()).getTime()}, function(data) {
if (typeof(afterDelete) == "function"){
afterDelete(data);//call back action
}
//alert delete result
$.alert({content:data.message,type:$.platform.messages.messageType[data.messageType]});
//refresh grid list
if($("#datagrid")[0]){
$("#datagrid").bootstrapTable("refresh");
}
});
}
});
});
//back button
$("#backBtn").click(function(){
//is need auto close
if($("#actionForm").attr("autoclose")) {
// try to refresh parent grid list
if($.dialog.parent) {
$.dialog.close();
return;
}
}
if($("form")){//#Form attr forward
if($("form").attr("closeWindow")){
window.close();
return;
}
if($("form").attr("forward")){
document.location.href=$("form").attr("forward");
return;
}
}
if (typeof(beforeBack) == "function"){
document.location.href=beforeBack();//call back
}else {
document.location.href=$(this).attr("wurl");//back #actionForm attr url
}
});
var curExpandNode = null;
$.tree=function (treeSettings){
function singlePath(newNode) {
if (newNode === curExpandNode) return;
if (curExpandNode && curExpandNode.open==true) {
var zTree = $.fn.zTree.getZTreeObj(treeSettings.element);
if (newNode.parentTId === curExpandNode.parentTId) {
zTree.expandNode(curExpandNode, false);
} else {
var newParents = [];
while (newNode) {
newNode = newNode.getParentNode();
if (newNode === curExpandNode) {
newParents = null;
break;
} else if (newNode) {
newParents.push(newNode);
}
}
if (newParents!=null) {
var oldNode = curExpandNode;
var oldParents = [];
while (oldNode) {
oldNode = oldNode.getParentNode();
if (oldNode) {
oldParents.push(oldNode);
}
}
if (newParents.length>0) {
for (var i = Math.min(newParents.length, oldParents.length)-1; i>=0; i--) {
if (newParents[i] !== oldParents[i]) {
zTree.expandNode(oldParents[i], false);
break;
}
}
} else {
zTree.expandNode(oldParents[oldParents.length-1], false);
}
}
}
}
curExpandNode = newNode;
};
function beforeExpand(treeId, treeNode) {
var pNode = curExpandNode ? curExpandNode.getParentNode():null;
var treeNodeP = treeNode.parentTId ? treeNode.getParentNode():null;
var zTree = $.fn.zTree.getZTreeObj(""+treeSettings.element);
for(var i=0, l=!treeNodeP ? 0:treeNodeP.children.length; i<l; i++ ) {
if (treeNode !== treeNodeP.children[i]) {
zTree.expandNode(treeNodeP.children[i], false);
}
}
while (pNode) {
if (pNode === treeNode) {
break;
}
pNode = pNode.getParentNode();
}
if (!pNode) {
singlePath(treeNode);
}
};
$.fn.zTree.init(
$("#"+treeSettings.element), //element
{//json object
check : {
enable : treeSettings.checkbox
},
async : {
enable : true,
url : treeSettings.url,
autoParam : ["id", "name=n", "level=lv"],
otherParam : {"otherParam":"zTreeAsyncTest",id:treeSettings.rootId},
dataFilter : function (treeId, parentNode, childNodes) {
if (!childNodes) return null;
for (var i=0, l=childNodes.length; i<l; i++) {
childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
}
return childNodes;
}
},
data : {
simpleData : {
enable : true
}
},
callback: {
onClick : treeSettings.onClick,
onDblClick : treeSettings.onDblClick,
beforeAsync : function(treeId, treeNode){
$.loading();
},
onAsyncSuccess : function(event, treeId, treeNode, msg){
$.unloading();
},
//beforeExpand : beforeExpand,
onExpand : function onExpand(event, treeId, treeNode) {
curExpandNode = treeNode;
}
}
}
);
};//end tree
});//jquery end