/**
* Created by admin on 2017/1/3.
*/
var fileSize = 3000000; //文件上传大小限制
window.z = (function ($) {
});
jQuery(document).ready(function () {
// if (typeof bootbox != 'undefined') {
// bootbox.setDefaults({
// /**
// * @optional String
// * @default: en
// * which locale settings to use to translate the three
// * standard button labels: OK, CONFIRM, CANCEL
// */
// locale: "zh_CN",
//
// });
// //bootbox设置语言不起作用,修改了源码
// // bootbox.removeLocale('zh_CN');
// // bootbox.setLocale('zh_CN', {OK:"好",CANCEL:"取消",CONFIRM:"确认"
// // })
// }
//点击缩略图,弹出显示大图
$(".thumbnail").on('click', "img[data-trigger='openImage']", function () {
if (self.frameElement && self.frameElement.tagName == "IFRAME") {
parent.z.showImage(z.thumbnailToHeight($(this).attr('src')));
} else {
z.showImage(z.thumbnailToHeight($(this).attr('src')));
}
var type = $(this).parent().siblings().attr('data-type');
if(type)
{
switch (type)
{
case '1':
$('.bigImage').css('width', '180px');
$('.bigImage').css('height', '180px');
$('.bigImage').find('img').css('width', '170px');
$('.bigImage').find('img').css('height', '170px');
break;
case '2':
$('.bigImage').css('width', '160px');
$('.bigImage').css('height', '130px');
$('.bigImage').find('img').css('width', '150px');
$('.bigImage').find('img').css('height', '120px');
break;
}
}
})
$(".fileinput").on('click', "div[data-trigger='openDivImage']", function () {
if (self.frameElement && self.frameElement.tagName == "IFRAME") {
parent.z.showImage($(this).find('img').attr('src'));
} else {
z.showImage($(this).find('img').attr('src'));
}
var type = $(this).attr('data-type');
if(type)
{
switch (type)
{
case '1':
$('.bigImage').css('width', '180px');
$('.bigImage').css('height', '180px');
$('.bigImage').find('img').css('width', '170px');
$('.bigImage').find('img').css('height', '170px');
break;
case '2':
$('.bigImage').css('width', '160px');
$('.bigImage').css('height', '130px');
$('.bigImage').find('img').css('width', '150px');
$('.bigImage').find('img').css('height', '120px');
break;
}
}
})
$("._image").on('click', "img[data-trigger='openImage']", function () {
if (self.frameElement && self.frameElement.tagName == "IFRAME") {
parent.z.showImage(z.thumbnailToHeight($(this).attr('src')));
} else {
z.showImage(z.thumbnailToHeight($(this).attr('src')));
}
})
$("body").on('click', ".bigDivImage", function () {
$(".bigDivImage").remove();
})
$('.loading-form').on('beforeValidate', function (e) {
loading();
return true;
}).on('beforeSubmit', function (e) {
loading();
return true;
}).on('ajaxComplete', function (e) {
closeLoading();
return true;
}).on('afterValidate', function (e) {
closeLoading();
return true;
});
//如果使用了pajx,重载后,需要closeLoading()
$(document).on('click', '.zLoading', function (e) {
loading();
if ($(this).attr('type') !== undefined && $(this).attr('type').toLowerCase() === 'submit') {
$('form').submit();
}
return true;
});
$(document).on('pjax:success', '[data-pjax-container]', function () {
closeLoading();
});
if (typeof initFlag !== 'undefined' && initFlag === true)
z.init();
});
//在iframe中,如果需要新窗口中打开某链接
//@param location 主窗口 URL,一般就是module名,例如 hotel motorcade zzcs
//@param url iframe中实际 URL
//@param data_role 导航选中id
//@param path_role 左侧菜单激活id
function zNewWin(location, url, data_role, path_role) {
// parent.window.open('/' + location + "?iframeURL=" + encodeURIComponent(url));
if(location === 'CS'){
$.cookie('path_url', url, {domain: domain_path, path: "/"});
$.cookie('user_path', "2", {path: "/", domain: domain_path});
}else{
$.cookie('fo_url', url, {domain: domain_path, path: "/"});
$.cookie('home_page_show', 'hide', {domain: domain_path, path: "/"});
}
if (typeof path_role !== 'undefined') {
$.cookie('path_role', path_role, {path: "/", domain: domain_path});
}
if (typeof data_role !== 'undefined') {
$.cookie('data-role', data_role, {path: "/", domain: domain_path});
}
window.open(parent.window.location.href);
}
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = window.location.search.substring(1),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
};
//由于没有标题只有内容,以双竖线分隔||,message要包含1、类型、2、标题、3、内容
yii.confirm = function (message, okCallback, cancelCallback) {
data = message.split('||');
var title = '操作确认';
if (data.length > 1) {
title = data[1] !== '' ? data[1] : '操作确认';
message = data[2];
message = (data[0] !== '' ? '' : '') + message;
}
if (self.frameElement && self.frameElement.tagName == "IFRAME") {
parent.bootbox.confirm({
title: title,
message: message,
buttons: {
confirm: {
label: '确定'
},
cancel: {
label: '取消'
}
},
callback: function (result) {
if (result) {
okCallback();
} else {
if (typeof cancelCallback === 'function')
cancelCallback();
}
}
});
} else {
bootbox.confirm({
title: title,
message: message,
buttons: {
confirm: {
label: '确定'
},
cancel: {
label: '取消'
}
},
callback: function (result) {
if (result) {
okCallback();
} else {
if (typeof cancelCallback === 'function')
cancelCallback();
}
}
});
}
};
yii.alert = function (message, title, type) {
if (typeof title == 'undefined')
title = '提示';
//根据type在modal body前添加图标
// if (typeof type != 'undefined') {
message = '' + message;
// message += ''
// }
if (self.frameElement && self.frameElement.tagName == "IFRAME") {
parent.bootbox.alert({
title: title,
message: message
})
} else {
bootbox.alert({
title: title,
message: message
})
}
}
//info,error,success,warning
//显示右上角提示 http://plnkr.co/edit/6W9URNyyp2ItO4aUWzBB?p=preview,官方文档,可以自定义显示图标及位置,
//必须要用setTimeout,否则新页面无法显示
z.showTip = function (type, message) {
setTimeout(function () {
if (self.frameElement && self.frameElement.tagName == "IFRAME") {
parent.toastr[type](message);
} else {
toastr[type](message);
}
}, 0)
};
//点击图片,弹出显示大图
//如果是默认图片,不显示大图, 包含字符串 default-thumbnail
z.showImage = function (src, width, height) {
if (src.indexOf('default-thumbnail') === -1) {
var str = '';
str += '
';
$('body .bigDivImage').remove();
$('body').append(str);
}
};
//弹出框,显示一个表格
//如果没有data 有callData参数,数据都从callData获取
//type 如果为null,就是直接调用函数callData,如果type==ajax,就用ajax获取数据
//attr是ajax返回时候,data对应的键名
//data_attr是需要显示td的字段名,如果需要作函数处理,函数名+空格+字段名
//将tr 中的数据作一次处理,比如有时为0时不显示名显示为‘-’,
z.showTable = function (title, head, data, type, callData, params, attr, data_attr, formatData) {
if (data == "" && typeof callData != "undefined") {
//ajax获取数据
if (typeof type != 'undefined' && type == 'ajax') {
$.ajax({
type: 'POST',
url: callData,
async: false,
data: params,
success: function (res) {
data = JSON.parse(res);
},
error: function (msg) {
}
});
} else { //callData函数获取数据
var strParam = '';
$.each(params, function (k, e) {
if (k != 0) {
strParam += ',';
}
strParam += e;
})
data = eval(callData + "(" + strParam + ")");
}
if (typeof attr != "undefined") {
$.each(attr, function (k, e) {
data = data[e];
})
}
}
var strTHead = '';
$.each(head, function (k, e) {
strTHead += '' + e + ' | ';
})
var strTable = "" + strTHead + "
";
$.each(data, function (k, e) {
strTable += '';
if (typeof data_attr == "undefined") {
data_attr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
}
if (typeof formatData != 'undefined') {
e = eval(formatData + "(e)");
}
$.each(data_attr, function (k, f) {
//td字段处理
var pos = f.indexOf(' ');
if (pos > -1) {
f = eval(f.substring(0, pos) + "(" + e[f.substring(pos + 1)] + ")");
strTable += '' + f + ' | ';
} else {
strTable += '' + e[f] + ' | ';
}
})
strTable += '
';
})
strTable += "
";
//显示表格
parent.bootbox.dialog({
title: title,
message: strTable,
buttons: {
cancel: {
label: '关闭'
}
},
callback: function (result) {
// console.log(result);
}
});
}
z.showModal = function (target, url, param, callback) {
var csrfToken = yii.getCsrfToken();
$(target).on('pjax:success', function () {
if (typeof callback !== 'undefined' && callback.call)
callback();
closeLoading();
});
$.pjax.reload({
container: target,
url: url,
data: {param: param, _csrf: csrfToken},
timeout: false,
replace: false
})
};
z.init = function (prefix) {
var selectorDate, selectSelect;
if (typeof prefix === 'string') {
selectorDate = '.' + prefix + '_form_date';
selectSelect = '.' + prefix + '_select_screen';
} else {
selectorDate = '.form_date';
selectSelect = '.select_screen';
}
var form_date = $(selectorDate);
if (form_date.length > 0 && typeof form_date.datetimepicker === 'function') {
$(form_date).datetimepicker({
format: 'yyyy-mm-dd',
autoclose: true,
minView: 2,
pickerPosition: "bottom-left"
});
}
var select_screen = $(selectSelect);
if (select_screen.length > 0 && typeof select_screen.comboSelect === 'function') {
$(select_screen).removeClass('form-control').comboSelect();
}
};
z.hideModal = function (target) {
$(target).modal('hide');
};
z.thumbnailToHeight = function ($url) {
var reg = /\d+x\d+_/;
return $url.replace(reg, '');
};
z.removeComboSelect = function () {
var t_class = '.comboSelect';
if (typeof target !== 'undefined')
t_class = target;
$(t_class).parent('.combo-select').children(':not(select)').remove();
$('.combo-select').find(t_class).unwrap();
};
z.pjaxOne = function (url) {
$.ajax({
url: url, //'/motorcade/order-finance/cancel-finance?id='+ id,
method: 'post',
success: function (data) {
data = JSON.parse(data);
if (data.code === 0) {
z.showTip('success', data.msg);
} else {
z.showTip('error', data.msg)
}
if (typeof data.callback === 'string') {
eval(data.callback);
}
},
error: function (data) {
console.log(data.responseText);
}
});
};
z.pjaxFinish = function (type, msg, target) {
z.showTip(type, msg);
//z.hideModal需要有延时,执行顺序问题会导致无法隐藏弹出框
setTimeout(function () {
z.hideModal(target)
}, 0);
closeLoading();
};
//和上面yii.confirm重复,上面不好再改
z.confirm = function (message, okCallback, cancelCallback) {
data = message.split('||');
var title = '操作确认';
if (data.length > 1) {
title = data[1] !== '' ? data[1] : '操作确认';
message = data[2];
message = (data[0] !== '' ? '' : '') + message;
}
if (self.frameElement && self.frameElement.tagName == "IFRAME") {
parent.bootbox.confirm({
title: title,
message: message,
buttons: {
confirm: {
label: '确定'
},
cancel: {
label: '取消'
}
},
callback: function (result) {
if (result) {
eval(okCallback);
} else {
eval(cancelCallback);
// if (typeof cancelCallback === 'function')
// cancelCallback();
}
}
});
} else {
bootbox.confirm({
title: title,
message: message,
buttons: {
confirm: {
label: '确定'
},
cancel: {
label: '取消'
}
},
callback: function (result) {
if (result) {
okCallback();
} else {
if (typeof cancelCallback === 'function')
cancelCallback();
}
}
});
}
};
/**
* 批量操作,传回后台的都是id,ajax返回的数据格式 ['code'=> 0|1, 'msg'=> '提示信息']
* @param url 后台url
* @param checkboxSelector 选中checkbox
* @param emptyWarnTip 没有选中checkbox的提示
* @param title 提示框的标题
* @param message 提示确认内容
* @param callback 回调函数
* @returns {boolean}|{void}
*/
z.multiAction = function (url, checkboxSelector, emptyWarnTip, title, message, callback) {
var id_array = [];
$(checkboxSelector).each(function () {
if ($(this).is(":checked")) {
id_array.push($(this).val());
}
});
var id_str = id_array.join(',');
if (id_str === '') {
parent.toastr["warning"](emptyWarnTip === '' ? '请选择要操作的数据' : emptyWarnTip);
return false;
}
var csrfToken = yii.getCsrfToken();
parent.bootbox.dialog({
title: title,
message: message,
buttons: {
cancel: {
label: "取消",
callback: function () {
}
},
sure: {
label: '确认',
callback: function () {
$.ajax({
url: url,
dataType: 'json',
type: 'post',
data: {id: id_str, _csrf: csrfToken},
success: function (res_data) {
parent.toastr[res_data.code === 0 ? "success" : "error"](res_data.msg);
eval(callback);
if (typeof res_data.callback === 'string') {
eval(res_data.callback);
}
},
error: function (e) {
parent.toastr["warning"](title + "失败");
console.log(e)
}
})
}
}
}
})
};
z.timePicker = function () {
var hour_temp = "";
var minute_temp = "";
var i;
for (i = 0; i < 24; i++) {
if (i < 10) {
if (i === 0) {
hour_temp += '0' + i + '
'
} else {
hour_temp += '0' + i + '
'
}
} else {
hour_temp += '' + i + '
'
}
}
for (i = 0; i < 60; i++) {
if (i < 10) {
if (i === 0) {
minute_temp += '0' + i + '
'
} else {
minute_temp += '0' + i + '
'
}
} else {
minute_temp += '' + i + '
'
}
}
$(".select_hour_box").html(hour_temp);
$(".select_minute_box").html(minute_temp);
$(".select_hour").on("click", function () {
var time_id = $(this).closest(".timepicker_box").attr("id");
var selector = $("#" + time_id);
var parent_height = $(selector).find(".timepicker_select").offset().top;
var this_height = $(this).offset().top;
var scroll_height = $(selector).find(".select_hour_box").scrollTop();
var move_height = this_height - parent_height + scroll_height;
$(selector).find(".select_hour_box").animate({scrollTop: move_height}, 200);
$(selector).find(".select_hour_box").children().removeClass("select_option");
$(this).addClass("select_option");
var times = $(selector).find(".select_hour_box .select_option").text() + ':' + $(selector).find(".select_minute_box .select_option").text();
$(selector).find(".timepicker input").val(times);
});
$(".select_minute").on("click", function () {
var time_id = $(this).closest(".timepicker_box").attr("id");
var selector = $("#" + time_id);
var parent_height = $(selector).find(".timepicker_select").offset().top;
var this_height = $(this).offset().top;
var scroll_height = $(selector).find(".select_minute_box").scrollTop();
var move_height = this_height - parent_height + scroll_height;
$(selector).find(".select_minute_box").animate({scrollTop: move_height}, 200);
$(selector).find(".select_minute_box").children().removeClass("select_option");
$(this).addClass("select_option");
var times = $(selector).find(".select_hour_box .select_option").text() + ':' + $(selector).find(".select_minute_box .select_option").text();
$(selector).find(".timepicker input").val(times);
});
$(".timepicker_box").on("click", function (e) {
var time_id = this.id;
$(".timepicker_select").not("#" + time_id + " .timepicker_select").animate({
height: 'hide'
}, 200);
$("#" + this.id).find(".timepicker_select").animate({
height: 'show'
}, 200);
e.stopPropagation();
});
};
z.pager = function (pagination, max_page, obj) {
var li = $(obj).closest('.bottom_nav').find("." + pagination + ' a:first');
var pager = $(obj).closest('.zPagerGo').find('.pager-go');
if(li.length <= 0){
li = $('.pagination a:first');
pager = $('.zPagerGo').find('.pager-go');
}
if (li.length > 0) {
var page = $(pager).val();
if (page <= 0) {
page = 1;
} else if ($(pager).val() > max_page) {
page = max_page;
}
loading();
var href = $(li).attr('href');
href = href.replace(/page\=\d+/, 'page=' + page);
$(li).attr('href', href);
var a = $(li)[0];
a.click();
}
};
//导出或者某些查询的时候可以用到,导出功能,都是根据查询的条件获取数据的
z.exportExcel = function (form_container, url) {
var form = document.querySelector(form_container);
var action = form.action;
form.action = url;
form.submit();
form.action = action;
};
//::todo 不符合规则,没有重置图片
function checkSize(obj) {
var reset = false, msg = '';
if (typeof $(obj)[0].files[0] !== 'undefined' && $(obj)[0].files[0].size > fileSize) {
$(obj).val('');
z.showTip('warning', '图片大小不能超过3M');
return false;
}
if($(obj)[0].files.length === 0){
return true;
}
if ($(obj)[0].files[0].size < 0) {
$(obj).val('');
z.showTip('warning', '图片无法使用,请重新选择');
return false;
}
var _URL = window.URL || window.webkitURL;
if ((file = $(obj)[0].files[0])) {
img = new Image();
img.onload = function () {
if ((this.width * this.height * 32) >= 128000000) {
reset = true;
msg = '图片分辨率太高,请编辑后上传';
// $(obj).val('');
z.showTip('warning', msg);
$(obj).parent().next('a').click()
return false;
}
};
img.onerror = function () {
reset = true;
msg = '图片无法使用,请重新选择';
// $(obj).val('');
z.showTip('warning', msg);
$(obj).parent().next('a').click()
return false;
};
img.src = _URL.createObjectURL(file);
}
}
//为了减少数据库连接查询次数,dictType表中的部分数据,可以在这里进行简单查询
function getDictType(res_id) {
var arr = [];
arr[108] = {text: '上'};
arr[109] = {text: '上下'};
arr[110] = {text: '下'};
arr[114] = {text: '不停靠'};
if (typeof arr[res_id] === 'undefined') {
return '';
} else {
return arr[res_id].text;
}
}
function getDictName(res_id, type) {
var arr = [];
arr[108] = {text: '仅上客', tag: '上'};
arr[109] = {text: '同时上下客', tag: '上下'};
arr[110] = {text: '仅下客', tag: '下'};
arr[114] = {text: '不停靠', tag: '不停靠'};
if (typeof type === "undefined") {
return arr[res_id].text;
} else {
return arr[res_id].tag;
}
}
function passengerData(trData) {
if (trData['station_inout_type'] == 108)
trData['people_down_all_num'] = '-';
if (trData['station_inout_type'] == 110)
trData['people_up_all_num'] = '-';
if (trData['station_inout_type'] == 114) {
trData['people_down_all_num'] = '-';
trData['people_up_all_num'] = '-';
}
return trData;
}
function startTimeToEndTime(trData) {
if (trData['bus_no'] == null) {
trData['bus_no'] = ''
}
if (trData['driver_name'] == null) {
trData['driver_name'] = ''
}
trData['start_time'] = trData['start_time'] + '-' + trData['end_time'];
return trData;
}
function loading(time) {
//注释提交按钮的禁用,既然已经有加载动画了,提交按钮肯定已经被遮住,有可能loading时需要手动提交
// $("button[type='submit']").attr('disabled', true);
var newDiv = '';
if (typeof $("#screen-cover") != 'undefined')
$("#screen-cover").remove();
/*$("")
.attr({ rel: "stylesheet",
type: "text/css",
href: "/css/loader.css"
})
.appendTo("head");*/
$("html").append(newDiv);
var screenTop = $(document).scrollTop();
$("#screen-cover").css('padding-top', screenTop + $(window).height() / 2 - 55);
// if(typeof time == 'undefined')
// time = 15000;
// setTimeout('closeLoading()',time);
}
function closeLoading() {
$("button[type='submit']").attr('disabled', false);
if ($("#screen-cover").length > 0)
$("#screen-cover").remove();
}
//提交按钮统一需要加载loading动画,完成提交后,需要手动关闭动画closeLoading()
function loadingForm(target, item) {
$(target).on('beforeValidate', item, function (e) {
loading();
return true;
}).on('beforeSubmit', item, function (e) {
loading();
return true;
}).on('ajaxComplete', item, function (e) {
closeLoading();
return true;
}).on('afterValidate', item, function (e) {
closeLoading();
return true;
});
}
function postDisable(url, target) {
$.ajax({
url: url, //'/motorcade/order-finance/cancel-finance?id='+ id,
method: 'post',
success: function (data) {
data = JSON.parse(data);
if (data.code === 0) {
z.showTip('success', data.msg);
} else {
z.showTip('error', data.msg)
}
},
error: function (data) {
console.log(data.responseText);
}
});
//更新当前页面
$(target).trigger('click');
}