3767 lines
114 KiB
JavaScript
Executable File
3767 lines
114 KiB
JavaScript
Executable File
var Public = Public || {};
|
||
var Business = Business || {};
|
||
Public.isIE6 = !window.XMLHttpRequest; //ie6
|
||
|
||
define(["jquery", "plugins", "grid", "dialog", "datepicker"], function(require, exports){
|
||
var $ = require("jquery");
|
||
|
||
// 加载jQuery插件
|
||
require("plugins");
|
||
require("grid");
|
||
require("dialog");
|
||
//require("datepicker");
|
||
|
||
$(function(){
|
||
//菜单按钮
|
||
$('.ui-btn-menu .menu-btn').on('mouseenter.menuEvent',function(e){
|
||
if($(this).hasClass("ui-btn-dis")) {
|
||
return false;
|
||
}
|
||
$(this).parent().addClass('ui-btn-menu-cur');
|
||
$(this).blur();
|
||
e.preventDefault();
|
||
});
|
||
$(document).on('click.menu',function(e){
|
||
var target = e.target || e.srcElement;
|
||
$('.ui-btn-menu').each(function(){
|
||
var menu = $(this);
|
||
if($(target).closest(menu).length == 0 && $('.con',menu).is(':visible')){
|
||
menu.removeClass('ui-btn-menu-cur');
|
||
}
|
||
})
|
||
});
|
||
});
|
||
|
||
//设置表格宽高
|
||
Public.setGrid = function(adjustH, adjustW){
|
||
var defaultPage = Public.getDefaultPage();
|
||
if(defaultPage.SYSTEM.skin === 'green'){
|
||
var adjustH = adjustH || 70;
|
||
} else {
|
||
var adjustH = adjustH || 65;
|
||
};
|
||
var adjustW = adjustW || 20;
|
||
var gridW = $(window).width() - adjustW, gridH = $(window).height() - $(".grid-wrap").offset().top - adjustH;
|
||
return {
|
||
w : gridW,
|
||
h : gridH
|
||
}
|
||
};
|
||
//重设表格宽高
|
||
Public.resizeGrid = function(adjustH, adjustW){
|
||
var grid = $("#grid");
|
||
var gridWH = Public.setGrid(adjustH, adjustW);
|
||
grid.jqGrid('setGridHeight', gridWH.h);
|
||
grid.jqGrid('setGridWidth', gridWH.w);
|
||
};
|
||
//表格宽度自适应
|
||
Public.autoGrid = function($grid){
|
||
$grid.jqGrid('setGridWidth', $grid.closest('.grid-wrap').innerWidth() -2 );//去掉border的宽度
|
||
}
|
||
//自定义报表宽高初始化以及自适应
|
||
Public.initCustomGrid = function(tableObj){
|
||
//去除报表原始定义的宽度
|
||
$(tableObj).css("width") && $(tableObj).attr("width","auto");
|
||
//获取报表宽度当做最小宽度
|
||
var _minWidth = $(tableObj).outerWidth();
|
||
$(tableObj).css("min-width",_minWidth+"px");
|
||
//获取当前window对象的宽度作为报表原始的宽度
|
||
$(tableObj).width($(window).width() - 74);
|
||
$(tableObj).closest('.mod-report').height($(window).height() - 66);
|
||
//设置resize事件
|
||
var _throttle = function(method,context){
|
||
clearTimeout(method.tid);
|
||
method.tid = setTimeout(function(){
|
||
method.call(context);
|
||
},100)
|
||
};
|
||
var _resize = function(){
|
||
$(tableObj).width($(window).width() - 74);
|
||
$(tableObj).closest('.mod-report').height($(window).height() - 66);
|
||
};
|
||
$(window).resize(function() {
|
||
_throttle(_resize);
|
||
});
|
||
}
|
||
/**
|
||
* 节点赋100%高度
|
||
*
|
||
* @param {object} obj 赋高的对象
|
||
*/
|
||
Public.setAutoHeight = function(obj){
|
||
if(!obj || obj.length < 1){
|
||
return ;
|
||
}
|
||
|
||
Public._setAutoHeight(obj);
|
||
$(window).bind('resize', function(){
|
||
Public._setAutoHeight(obj);
|
||
});
|
||
|
||
}
|
||
|
||
Public._setAutoHeight = function(obj){
|
||
obj = $(obj);
|
||
//parent = parent || window;
|
||
var winH = $(window).height();
|
||
var h = winH - obj.offset().top - (obj.outerHeight() - obj.height());
|
||
obj.height(h);
|
||
}
|
||
//操作项格式化,适用于有“修改、删除”操作的表格
|
||
Public.operFmatter = function (val, opt, row) {
|
||
var html_con = '<div class="operating" data-id="' + row.id + '"><span class="ui-icon ui-icon-pencil" title="修改"></span><span class="ui-icon ui-icon-trash" title="删除"></span></div>';
|
||
return html_con;
|
||
};
|
||
|
||
Public.billsOper = function (val, opt, row) {
|
||
var html_con = '<div class="operating" data-id="' + opt.rowId + '"><span class="ui-icon ui-icon-plus" title="新增行"></span><span class="ui-icon ui-icon-trash" title="删除行"></span></div>';
|
||
return html_con;
|
||
};
|
||
Public.billsOper_goods = function (val, opt, row) {
|
||
var html_con = '<div class="operating" data-id="' + opt.rowId + '"><span class="ui-icon ui-icon-plus" title="新增行"></span><span class="ui-icon ui-icon-trash" title="删除行"></span><span class="ui-icon ui-icon-cart" title="商品库存查询"></span></div>';
|
||
return html_con;
|
||
};
|
||
Public.dateCheck = function(){
|
||
$('.ui-datepicker-input').bind('focus', function(e){
|
||
$(this).data('original', $(this).val());
|
||
}).bind('blur', function(e){
|
||
var reg = /((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/;
|
||
var _self = $(this);
|
||
setTimeout(function(){
|
||
if(!reg.test(_self.val())) {
|
||
parent.Public.tips({type:1, content : '日期格式有误!如:2013-08-08。'});
|
||
_self.val(_self.data('original'));
|
||
};
|
||
}, 10)
|
||
|
||
});
|
||
}
|
||
//日期格式化
|
||
Date.prototype.format = function(format){
|
||
if(!format){
|
||
format = 'yyyy-MM-dd';//默认1997-01-01这样的格式
|
||
}
|
||
var o = {
|
||
"M+" : this.getMonth()+1, //month
|
||
"d+" : this.getDate(), //day
|
||
"h+" : this.getHours(), //hour
|
||
"m+" : this.getMinutes(), //minute
|
||
"s+" : this.getSeconds(), //second
|
||
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
|
||
"S" : this.getMilliseconds() //millisecond
|
||
}
|
||
|
||
if(/(y+)/.test(format)) {
|
||
format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
|
||
}
|
||
|
||
for(var k in o) {
|
||
if(new RegExp("("+ k +")").test(format)) {
|
||
format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
|
||
}
|
||
}
|
||
return format;
|
||
}
|
||
Date.prototype.addMonths= function(m)
|
||
{
|
||
var d = this.getDate();
|
||
this.setMonth(this.getMonth() + m);
|
||
if (this.getDate() < d)
|
||
this.setDate(0);
|
||
};
|
||
Date.prototype.addDays = function(d)
|
||
{
|
||
this.setDate(this.getDate() + d);
|
||
};
|
||
Public.getHostName = function(){
|
||
var defaultPage = Public.getDefaultPage();
|
||
var result = defaultPage.location.hostname;
|
||
if(!/.com/.test(result)){
|
||
//是IP形式的,兼容内网
|
||
result += ':'+defaultPage.location.port;
|
||
}
|
||
return result
|
||
};
|
||
//根据之前的编码生成下一个编码
|
||
Public.getSuggestNum = function(prevNum){
|
||
if (prevNum == '' || !prevNum) {
|
||
return '';
|
||
}
|
||
var reg = /^([a-zA-Z0-9\-_]*[a-zA-Z\-_]+)?(\d+)$/;
|
||
var match = prevNum.match(reg);
|
||
if (match) {
|
||
var prefix = match[1] || '';
|
||
var prevNum = match[2];
|
||
var num = parseInt(prevNum, 10) + 1;
|
||
var delta = prevNum.toString().length - num.toString().length;
|
||
if (delta > 0) {
|
||
for (var i = 0; i < delta; i++) {
|
||
num = '0' + num;
|
||
}
|
||
}
|
||
return prefix + num;
|
||
} else {
|
||
return '';
|
||
}
|
||
};
|
||
|
||
Public.bindEnterSkip = function(obj, func){
|
||
var args = arguments;
|
||
$(obj).on('keydown', 'input:visible:not(:disabled)', function(e){
|
||
if (e.keyCode == '13') {
|
||
var inputs = $(obj).find('input:visible:not(:disabled)');
|
||
var idx = inputs.index($(this));
|
||
idx = idx + 1;
|
||
if (idx >= inputs.length) {
|
||
if (typeof func == 'function') {
|
||
var _args = Array.prototype.slice.call(args, 2 );
|
||
func.apply(null,_args);
|
||
}
|
||
} else {
|
||
inputs.eq(idx).focus();
|
||
}
|
||
}
|
||
});
|
||
};
|
||
|
||
/*获取URL参数值*/
|
||
Public.getRequest = Public.urlParam = function() {
|
||
var param, url = location.search, theRequest = {};
|
||
if (url.indexOf("?") != -1) {
|
||
var str = url.substr(1);
|
||
strs = str.split("&");
|
||
for(var i = 0, len = strs.length; i < len; i ++) {
|
||
param = strs[i].split("=");
|
||
theRequest[param[0]]=decodeURIComponent(param[1]);
|
||
}
|
||
}
|
||
return theRequest;
|
||
};
|
||
/**
|
||
* [ajax description]
|
||
* @param {[type]} ajaxOpts [description]
|
||
* 默认json格式
|
||
* 默认post方式
|
||
* @return {[type]} [description]
|
||
*/
|
||
Public.ajax = function(ajaxOpts){
|
||
var opts = {
|
||
type: "POST",
|
||
dataType: "json",
|
||
error: function(err){
|
||
parent.Public.tips({type: 1, content : '服务端响应错误!'});
|
||
}
|
||
};
|
||
$.extend(true, opts, ajaxOpts);
|
||
var success = ajaxOpts.success;
|
||
opts.success = function(data, status){
|
||
/*if(data.status != 200){
|
||
var defaultPage = Public.getDefaultPage();
|
||
var msg = data.msg || '出错了=. =||| ,请点击这里拷贝错误信息 :)';
|
||
var errorStr = msg;
|
||
if(data.data.error){
|
||
var errorStr = '<a id="myText" href="javascript:window.clipboardData.setData("Text",data.error);alert("详细信息已经复制到剪切板,请拷贝给管理员!");"'+msg+'</a>'
|
||
}
|
||
defaultPage.Public.tips({type:1, content:errorStr});
|
||
return;
|
||
}*/
|
||
success && success(data, status);
|
||
}
|
||
$.ajax(opts);
|
||
};
|
||
/*
|
||
通用post请求,返回json
|
||
url:请求地址, params:传递的参数{...}, callback:请求成功回调
|
||
*/
|
||
Public.ajaxPost = function(url, params, callback, errCallback){
|
||
$.ajax({
|
||
type: "POST",
|
||
url: url,
|
||
data: params,
|
||
dataType: "json",
|
||
success: function(data, status){
|
||
/*if(data.status != 200){
|
||
var defaultPage = Public.getDefaultPage();
|
||
var msg = data.msg || '出错了=. =||| ,请点击这里拷贝错误信息 :)';
|
||
var errorStr = msg;
|
||
if(data.data.error){
|
||
var errorStr = '<a id="myText" href="javascript:window.clipboardData.setData("Text",data.error);alert("详细信息已经复制到剪切板,请拷贝给管理员!");"'+msg+'</a>'
|
||
}
|
||
defaultPage.Public.tips({type:1, content:errorStr});
|
||
return;
|
||
}*/
|
||
callback(data);
|
||
},
|
||
error: function(err,ms){
|
||
parent.Public.tips({type: 1, content : '服务端响应错误!'});
|
||
errCallback && errCallback(err);
|
||
}
|
||
});
|
||
};
|
||
//扩展对象方法
|
||
$.fn.extend({
|
||
//为对象新增ajaxPost方法
|
||
ajaxPost:function(url, params, callback, errCallback){
|
||
var $this = $(this);
|
||
var loading;
|
||
var myTimer;
|
||
var preventTooFast = 'ui-btn-dis';
|
||
var ajaxOpts = {
|
||
type: "POST",
|
||
url: url,
|
||
data: params,
|
||
dataType: "json",
|
||
success: function(data, status){
|
||
callback(data);
|
||
},
|
||
error: function(err){
|
||
parent.Public.tips({type: 1, content : '服务端响应错误!'});
|
||
errCallback && errCallback(err);
|
||
}
|
||
}
|
||
$.extend(true, ajaxOpts, {
|
||
timeout : 20000,
|
||
beforeSend : function(){
|
||
$this.addClass(preventTooFast);
|
||
myTimer = setTimeout(function(){
|
||
$this.removeClass(preventTooFast);
|
||
},2000)
|
||
loading = $.dialog.tips('提交中,请稍候...', 1000, 'loading.gif', true);
|
||
},
|
||
success : function(data){
|
||
/*if(data.status != 200){
|
||
var defaultPage = Public.getDefaultPage();
|
||
var msg = data.msg || '出错了=. =||| ,请点击这里拷贝错误信息 :)';
|
||
var errorStr = msg;
|
||
if(data.data.error){
|
||
var errorStr = '<a id="myText" href="javascript:window.clipboardData.setData("Text",data.error);alert("详细信息已经复制到剪切板,请拷贝给管理员!");"'+msg+'</a>'
|
||
}
|
||
defaultPage.Public.tips({type:1, content:errorStr});
|
||
return;
|
||
}*/
|
||
callback(data);
|
||
},
|
||
complete : function(){
|
||
loading.close();
|
||
},
|
||
error: function(err){
|
||
parent.Public.tips({type: 2, content : '操作无法成功,请稍后重试!'});
|
||
errCallback && errCallback(err);
|
||
}
|
||
});
|
||
if($this.hasClass(preventTooFast)){
|
||
return;
|
||
}
|
||
$.ajax(ajaxOpts);
|
||
}
|
||
});
|
||
Public.ajaxGet = function(url, params, callback, errCallback){
|
||
$.ajax({
|
||
type: "GET",
|
||
url: url,
|
||
dataType: "json",
|
||
data: params,
|
||
success: function(data, status){
|
||
/*if(data.status != 200){
|
||
var defaultPage = Public.getDefaultPage();
|
||
var msg = data.msg || '出错了=. =||| ,请点击这里拷贝错误信息 :)';
|
||
var errorStr = msg;
|
||
if(data.data.error){
|
||
var errorStr = '<a id="myText" href="javascript:window.clipboardData.setData("Text",data.error);alert("详细信息已经复制到剪切板,请拷贝给管理员!");"'+msg+'</a>'
|
||
}
|
||
defaultPage.Public.tips({type:1, content:errorStr});
|
||
return;
|
||
}*/
|
||
callback(data);
|
||
},
|
||
error: function(err){
|
||
parent.Public.tips({type: 1, content : '服务端响应错误!'});
|
||
errCallback && errCallback(err);
|
||
}
|
||
});
|
||
};
|
||
/*操作提示*/
|
||
Public.tips = function(options){ return new Public.Tips(options); }
|
||
Public.Tips = function(options){
|
||
var defaults = {
|
||
renderTo: 'body',
|
||
type : 0,
|
||
autoClose : true,
|
||
removeOthers : true,
|
||
time : undefined,
|
||
top : 10,
|
||
onClose : null,
|
||
onShow : null
|
||
}
|
||
this.options = $.extend({},defaults,options);
|
||
this._init();
|
||
|
||
!Public.Tips._collection ? Public.Tips._collection = [this] : Public.Tips._collection.push(this);
|
||
|
||
}
|
||
|
||
Public.Tips.removeAll = function(){
|
||
try {
|
||
for(var i=Public.Tips._collection.length-1; i>=0; i--){
|
||
Public.Tips._collection[i].remove();
|
||
}
|
||
}catch(e){}
|
||
}
|
||
|
||
Public.Tips.prototype = {
|
||
_init : function(){
|
||
var self = this,opts = this.options,time;
|
||
if(opts.removeOthers){
|
||
Public.Tips.removeAll();
|
||
}
|
||
|
||
this._create();
|
||
|
||
if(opts.autoClose){
|
||
time = opts.time || opts.type == 1 ? 5000 : 3000;
|
||
window.setTimeout(function(){
|
||
self.remove();
|
||
},time);
|
||
}
|
||
|
||
},
|
||
|
||
_create : function(){
|
||
var opts = this.options, self = this;
|
||
if(opts.autoClose) {
|
||
this.obj = $('<div class="ui-tips"><i></i></div>').append(opts.content);
|
||
} else {
|
||
this.obj = $('<div class="ui-tips"><i></i><span class="close"></span></div>').append(opts.content);
|
||
this.closeBtn = this.obj.find('.close');
|
||
this.closeBtn.bind('click',function(){
|
||
self.remove();
|
||
});
|
||
};
|
||
|
||
switch(opts.type){
|
||
case 0 :
|
||
this.obj.addClass('ui-tips-success');
|
||
break ;
|
||
case 1 :
|
||
this.obj.addClass('ui-tips-error');
|
||
break ;
|
||
case 2 :
|
||
this.obj.addClass('ui-tips-warning');
|
||
break ;
|
||
default :
|
||
this.obj.addClass('ui-tips-success');
|
||
break ;
|
||
}
|
||
|
||
this.obj.appendTo('body').hide();
|
||
this._setPos();
|
||
if(opts.onShow){
|
||
opts.onShow();
|
||
}
|
||
|
||
},
|
||
|
||
_setPos : function(){
|
||
var self = this, opts = this.options;
|
||
if(opts.width){
|
||
this.obj.css('width',opts.width);
|
||
}
|
||
var h = this.obj.outerHeight(),winH = $(window).height(),scrollTop = $(window).scrollTop();
|
||
//var top = parseInt(opts.top) ? (parseInt(opts.top) + scrollTop) : (winH > h ? scrollTop+(winH - h)/2 : scrollTop);
|
||
var top = parseInt(opts.top) + scrollTop;
|
||
this.obj.css({
|
||
position : Public.isIE6 ? 'absolute' : 'fixed',
|
||
left : '50%',
|
||
top : top,
|
||
zIndex : '9999',
|
||
marginLeft : -self.obj.outerWidth()/2
|
||
});
|
||
|
||
window.setTimeout(function(){
|
||
self.obj.show().css({
|
||
marginLeft : -self.obj.outerWidth()/2
|
||
});
|
||
},150);
|
||
|
||
if(Public.isIE6){
|
||
$(window).bind('resize scroll',function(){
|
||
var top = $(window).scrollTop() + parseInt(opts.top);
|
||
self.obj.css('top',top);
|
||
})
|
||
}
|
||
},
|
||
|
||
remove : function(){
|
||
var opts = this.options;
|
||
this.obj.fadeOut(200,function(){
|
||
$(this).remove();
|
||
if(opts.onClose){
|
||
opts.onClose();
|
||
}
|
||
});
|
||
}
|
||
};
|
||
//数值显示格式转化
|
||
Public.numToCurrency = function(val, dec) {
|
||
val = parseFloat(val);
|
||
dec = dec || 2; //小数位
|
||
if(val === 0 || isNaN(val)){
|
||
return '';
|
||
}
|
||
val = val.toFixed(dec).split('.');
|
||
var reg = /(\d{1,3})(?=(\d{3})+(?:$|\D))/g;
|
||
return val[0].replace(reg, "$1,") + '.' + val[1];
|
||
};
|
||
//数值显示
|
||
Public.currencyToNum = function(val){
|
||
var val = String(val);
|
||
if ($.trim(val) == '') {
|
||
return '';
|
||
}
|
||
val = val.replace(/,/g, '');
|
||
val = parseFloat(val);
|
||
return isNaN(val) ? 0 : val;
|
||
};
|
||
//只允许输入数字
|
||
Public.numerical = function(e){
|
||
var allowed = '0123456789.-', allowedReg;
|
||
allowed = allowed.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
||
allowedReg = new RegExp('[' + allowed + ']');
|
||
var charCode = typeof e.charCode != 'undefined' ? e.charCode : e.keyCode;
|
||
var keyChar = String.fromCharCode(charCode);
|
||
if(!e.ctrlKey && charCode != 0 && ! allowedReg.test(keyChar)){
|
||
e.preventDefault();
|
||
};
|
||
};
|
||
|
||
//限制只能输入允许的字符,不支持中文的控制
|
||
Public.limitInput = function(obj, allowedReg){
|
||
var ctrlKey = null;
|
||
obj.css('ime-mode', 'disabled').on('keydown',function(e){
|
||
ctrlKey = e.ctrlKey;
|
||
}).on('keypress',function(e){
|
||
allowedReg = typeof allowedReg == 'string' ? new RegExp(allowedReg) : allowedReg;
|
||
var charCode = typeof e.charCode != 'undefined' ? e.charCode : e.keyCode;
|
||
var keyChar = $.trim(String.fromCharCode(charCode));
|
||
if(!ctrlKey && charCode != 0 && charCode != 13 && !allowedReg.test(keyChar)){
|
||
e.preventDefault();
|
||
}
|
||
});
|
||
};
|
||
//限制输入的字符长度
|
||
Public.limitLength = function(obj, count){
|
||
obj.on('keyup',function(e){
|
||
if(count < obj.val().length){
|
||
e.preventDefault();
|
||
obj.val(obj.val().substr(0,count));
|
||
}
|
||
});
|
||
};
|
||
/*批量绑定页签打开*/
|
||
Public.pageTab = function() {
|
||
$(document).on('click', '[rel=pageTab]', function(e){
|
||
e.preventDefault();
|
||
var right = $(this).data('right');
|
||
if (right && !Business.verifyRight(right)) {
|
||
return false;
|
||
};
|
||
var tabid = $(this).attr('tabid'), url = $(this).attr('href'), showClose = $(this).attr('showClose'), text = $(this).attr('tabTxt') || $(this).text(),parentOpen = $(this).attr('parentOpen');
|
||
if(parentOpen){
|
||
parent.tab.addTabItem({tabid: tabid, text: text, url: url, showClose: showClose});
|
||
} else {
|
||
tab.addTabItem({tabid: tabid, text: text, url: url, showClose: showClose});
|
||
}
|
||
});
|
||
};
|
||
|
||
$.fn.artTab = function(options) {
|
||
var defaults = {};
|
||
var opts = $.extend({}, defaults, options);
|
||
var callback = opts.callback || function () {};
|
||
this.each(function(){
|
||
var $tab_a =$("dt>a",this);
|
||
var $this = $(this);
|
||
$tab_a.bind("click", function(){
|
||
var target = $(this);
|
||
target.siblings().removeClass("cur").end().addClass("cur");
|
||
var index = $tab_a.index(this);
|
||
var showContent = $("dd>div", $this).eq(index);
|
||
showContent.siblings().hide().end().show();
|
||
callback(target, showContent, opts);
|
||
});
|
||
if(opts.tab)
|
||
$tab_a.eq(opts.tab).trigger("click");
|
||
if(location.hash) {
|
||
var tabs = location.hash.substr(1);
|
||
$tab_a.eq(tabs).trigger("click");
|
||
}
|
||
});
|
||
};
|
||
|
||
//文本列表滚动
|
||
Public.txtSlide = function(opt){
|
||
var def = {
|
||
notice: '#notices > ul',
|
||
size: 1, //显示出来的条数
|
||
pause_time: 3000, //每次滚动后停留的时间
|
||
speed: 'fast', //滚动动画执行的时间
|
||
stop: true //鼠标移到列表时停止动画
|
||
};
|
||
opt = opt || {};
|
||
opt = $.extend({}, def, opt);
|
||
|
||
var $list = $(opt.notice),
|
||
$lis = $list.children(),
|
||
height = $lis.eq(0).outerHeight() * opt.size,
|
||
interval_id;
|
||
if($lis.length <= opt.size) return;
|
||
interval_id = setInterval(begin, opt.pause_time);
|
||
|
||
opt.stop && $list.on({
|
||
'mouseover': function(){
|
||
clearInterval(interval_id);
|
||
$list.stop(true,true);
|
||
},
|
||
'mouseleave': function(){
|
||
interval_id = setInterval(begin, opt.pause_time);
|
||
}
|
||
});
|
||
|
||
function begin(){
|
||
$list.stop(true, true).animate({marginTop: -height}, opt.speed, function(){
|
||
for(var i=0; i<opt.size; i++){
|
||
$list.append($list.find('li:first'));
|
||
}
|
||
$list.css('margin-top', 0);
|
||
});
|
||
}
|
||
};
|
||
|
||
$.fn.enterKey = function() {
|
||
this.each(function() {
|
||
$(this).keydown(function(e) {
|
||
if (e.which == 13) {
|
||
var ref = $(this).data("ref");
|
||
if (ref) {
|
||
$('#' + ref).select().focus().click();
|
||
}
|
||
else {
|
||
eval($(this).data("enterKeyHandler"));
|
||
}
|
||
}
|
||
});
|
||
});
|
||
};
|
||
|
||
|
||
//input占位符
|
||
$.fn.placeholder = function(){
|
||
this.each(function() {
|
||
$(this).focus(function(){
|
||
if($.trim(this.value) == this.defaultValue){
|
||
this.value = '';
|
||
}
|
||
$(this).removeClass('ui-input-ph');
|
||
}).blur(function(){
|
||
var val = $.trim(this.value);
|
||
if(val == '' || val == this.defaultValue){
|
||
$(this).addClass('ui-input-ph');
|
||
}
|
||
val == '' && $(this).val(this.defaultValue);
|
||
});
|
||
});
|
||
};
|
||
|
||
//单选框插件
|
||
$.fn.cssRadio = function(opts){
|
||
var opts = $.extend({}, opts);
|
||
var $_radio = $('label.radio', this), $_this = this;
|
||
$_radio.each(function() {
|
||
var self = $(this);
|
||
if (self.find("input")[0].checked) {
|
||
self.addClass("checked");
|
||
};
|
||
|
||
}).hover(function() {
|
||
$(this).addClass("over");
|
||
}, function() {
|
||
$(this).removeClass("over");
|
||
}).click(function(event) {
|
||
$_radio.find("input").removeAttr("checked");
|
||
$_radio.removeClass("checked");
|
||
$(this).find("input").attr("checked", "checked");
|
||
$(this).addClass("checked");
|
||
opts.callback($(this));
|
||
});
|
||
return {
|
||
getValue: function() {
|
||
return $_radio.find("input[checked]").val();
|
||
},
|
||
setValue: function(index) {
|
||
return $_radio.eq(index).click();
|
||
}
|
||
}
|
||
};
|
||
//复选框插件
|
||
$.fn.cssCheckbox = function() {
|
||
var $_chk = $(".chk", this);
|
||
$_chk.each(function() {
|
||
if ($(this).find("input")[0].checked) {
|
||
$(this).addClass("checked");
|
||
};
|
||
if ($(this).find("input")[0].disabled) {
|
||
$(this).addClass("dis_check");
|
||
};
|
||
}).hover(function() {
|
||
$(this).addClass("over")
|
||
}, function() {
|
||
$(this).removeClass("over")
|
||
}).click(function(event) {
|
||
if ($(this).find("input")[0].disabled) {
|
||
return;
|
||
};
|
||
$(this).toggleClass("checked");
|
||
$(this).find("input")[0].checked = !$(this).find("input")[0].checked;
|
||
event.preventDefault();
|
||
});
|
||
|
||
return {
|
||
chkAll:function(){
|
||
$_chk.addClass("checked");
|
||
$_chk.find("input").attr("checked","checked");
|
||
},
|
||
chkNot:function(){
|
||
$_chk.removeClass("checked");
|
||
$_chk.find("input").removeAttr("checked");
|
||
},
|
||
chkVal:function(){
|
||
var val = [];
|
||
$_chk.find("input:checked").each(function() {
|
||
val.push($(this).val());
|
||
});
|
||
return val;
|
||
}
|
||
}
|
||
};
|
||
|
||
Public.getDefaultPage = function(){
|
||
var win = window.self;
|
||
var i = 20;//最多20层,防止无限嵌套
|
||
try{
|
||
do{
|
||
if (/default.jsp/.test(win.location.href)) {
|
||
return win;
|
||
}
|
||
win = win.parent;
|
||
i--;
|
||
} while(i>0);
|
||
}catch(e){
|
||
return win;
|
||
}
|
||
return win;
|
||
};
|
||
|
||
//权限验证
|
||
Business.verifyRight = function(right){
|
||
var system = Public.getDefaultPage().SYSTEM;
|
||
var isAdmin = system.isAdmin;
|
||
var siExperied = system.siExpired;
|
||
var rights = system.rights;
|
||
if (isAdmin && !siExperied) {
|
||
return true;
|
||
};
|
||
|
||
if(siExperied) {
|
||
if(rights[right]) {
|
||
return true;
|
||
} else {
|
||
var html = [
|
||
'<div class="ui-dialog-tips">',
|
||
'<p>谢谢您使用本产品,您的当前服务已经到期,到期3个月后数据将被自动清除,如需继续使用请购买/续费!</p>',
|
||
'<p style="color:#AAA; font-size:12px;">(续费后请刷新页面或重新登录。)</p>',
|
||
'</div>'
|
||
].join('');
|
||
$.dialog({
|
||
width: 280,
|
||
title: '系统提示',
|
||
icon: 'alert.gif',
|
||
fixed: true,
|
||
lock: true,
|
||
resize: false,
|
||
ok: true,
|
||
content: html
|
||
});
|
||
return false;
|
||
}
|
||
} else {
|
||
if (rights[right]) {
|
||
return true;
|
||
} else {
|
||
var html = [
|
||
'<div class="ui-dialog-tips">',
|
||
'<h4 class="tit">您没有该功能的使用权限哦!</h4>',
|
||
'<p>请联系管理员为您授权!</p>',
|
||
'</div>'
|
||
].join('');
|
||
$.dialog({
|
||
width: 240,
|
||
title: '系统提示',
|
||
icon: 'alert.gif',
|
||
fixed: true,
|
||
lock: true,
|
||
resize: false,
|
||
ok: true,
|
||
content: html
|
||
});
|
||
return false;
|
||
}
|
||
};
|
||
};
|
||
|
||
//获取文件
|
||
Business.getFile = function(url, args, isNewWinOpen){
|
||
if (typeof url != 'string') {
|
||
return ;
|
||
}
|
||
var url = url.indexOf('?') == -1 ? url += '?' : url;
|
||
if(args.id) {
|
||
url += '&id=' + args.id + '&random=' + new Date().getTime();
|
||
} else {
|
||
url += '&random=' + new Date().getTime();
|
||
};
|
||
|
||
var downloadForm = parent.$('form#downloadForm');
|
||
if (downloadForm.length == 0) {
|
||
downloadForm = parent.$('<form method="post" />').attr('id', 'downloadForm').hide().appendTo('body');
|
||
} else {
|
||
downloadForm.empty();
|
||
}
|
||
downloadForm.attr('action', url);
|
||
for( k in args){
|
||
$('<input type="hidden" />').attr({name: k, value: args[k]}).appendTo(downloadForm);
|
||
}
|
||
if (isNewWinOpen) {
|
||
downloadForm.attr('target', '_blank');
|
||
} else{
|
||
var downloadIframe = $('iframe#downloadIframe');
|
||
if (downloadIframe.length == 0) {
|
||
downloadIframe = $('<iframe />').attr('id', 'downloadIframe').hide().appendTo('body');
|
||
}
|
||
downloadForm.attr('target', 'downloadIframe');
|
||
}
|
||
downloadForm.trigger('submit');
|
||
};
|
||
Business.billCustomerCombo = function($_obj, opts){
|
||
var defaultPage = Public.getDefaultPage();
|
||
opts = $.extend(true, {
|
||
data: function(){
|
||
if(defaultPage.SYSTEM.customerInfo) {
|
||
var usingData = []//获取启用状态的;
|
||
|
||
for (var i = 0; i < defaultPage.SYSTEM.customerInfo.length; i++) {
|
||
var g = defaultPage.SYSTEM.customerInfo[i];
|
||
if(!g['delete']){
|
||
usingData.push(g);
|
||
}
|
||
};
|
||
return usingData;
|
||
} else {
|
||
return '../basedata/contact?action=list$simple=1';
|
||
}
|
||
}
|
||
}, opts);
|
||
return Business.customerCombo($_obj, opts);
|
||
}
|
||
Business.customerCombo = function($_obj, opts){
|
||
if ($_obj.length == 0) { return };
|
||
var defaultPage = Public.getDefaultPage();
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
return defaultPage.SYSTEM.customerInfo;
|
||
},
|
||
ajaxOptions: {
|
||
formatData: function(data){
|
||
defaultPage.SYSTEM.customerInfo = data.data.rows; //更新
|
||
return data.data.rows;
|
||
}
|
||
},
|
||
width: 200,
|
||
height: 300,
|
||
formatText: function(row){
|
||
return row.number + ' ' + row.name;
|
||
},
|
||
//formatResult: 'name',
|
||
text: 'name',
|
||
value: 'id',
|
||
defaultSelected: 0,
|
||
editable: true,
|
||
extraListHtml: '<a href="javascript:void(0);" id="quickAddCustomer" class="quick-add-link"><i class="ui-icon-add"></i>新增客户</a>',
|
||
maxListWidth: 500,
|
||
cache: false,
|
||
forceSelection: false,
|
||
maxFilter: 100,
|
||
trigger: false,
|
||
callback: {
|
||
onChange: function(data){
|
||
if(data) {
|
||
$_obj.data('contactInfo', data);
|
||
} else {
|
||
$_obj.removeData('contactInfo');
|
||
$_obj.removeData('priceList');
|
||
}
|
||
},
|
||
onEnter:function(e){
|
||
//e.stopPropagation();
|
||
var skey = $_obj.find('input').val();
|
||
if(!$_obj.data('contactInfo')){
|
||
$_obj.find('.ui-icon-ellipsis').data('skey',skey).data('type','customerInfo').trigger('click');
|
||
}
|
||
}
|
||
}
|
||
}, opts);
|
||
|
||
var customerCombo = $_obj.combo(opts).getCombo();
|
||
//新增客户
|
||
$('#quickAddCustomer').on('click', function(e){
|
||
e.preventDefault();
|
||
if (!Business.verifyRight('BU_ADD')) {
|
||
return ;
|
||
};
|
||
$.dialog({
|
||
title : '新增客户',
|
||
content : 'url:../settings/customer_manage',
|
||
data: {oper: 'add', callback: function(data, oper, dialogWin){
|
||
//parent.getCustomer();
|
||
//_self.customerCombo.selectByValue(data.id, false);
|
||
//customerCombo.loadData('/basedata/contact.do?action=list', ['id', data.id]);
|
||
if(data && data.id) {
|
||
$_obj.data('contactInfo', data); //存储
|
||
$_obj.find('input').val(data.number + ' ' + data.name); //回填数据
|
||
defaultPage.SYSTEM.customerInfo.push(data); //增加进缓存
|
||
customerCombo.collapse(); //关闭下拉
|
||
}
|
||
dialogWin && dialogWin.api.close();
|
||
}},
|
||
width : 640,
|
||
height : 460,
|
||
max : false,
|
||
min : false,
|
||
cache : false,
|
||
lock: true
|
||
});
|
||
});
|
||
|
||
customerCombo.input.focus(function() {
|
||
var $_this = $(this);
|
||
setTimeout(function(){
|
||
$_this.select();
|
||
}, 15);
|
||
});
|
||
|
||
return customerCombo;
|
||
};
|
||
Business.billSalesCombo = function($_obj, opts){
|
||
var defaultPage = Public.getDefaultPage();
|
||
opts = $.extend(true, {
|
||
data: function(){
|
||
if(defaultPage.SYSTEM.salesInfo) {
|
||
var usingData = []//获取启用状态的;
|
||
for (var i = 0; i < defaultPage.SYSTEM.salesInfo.length; i++) {
|
||
var g = defaultPage.SYSTEM.salesInfo[i];
|
||
if(!g['delete']){
|
||
usingData.push(g);
|
||
}
|
||
};
|
||
return usingData;
|
||
} else {
|
||
return '../basedata/employee?action=list';
|
||
}
|
||
}
|
||
}, opts);
|
||
return Business.salesCombo($_obj, opts);
|
||
}
|
||
Business.salesCombo = function($_obj, opts){
|
||
if ($_obj.length == 0) { return };
|
||
var defaultPage = Public.getDefaultPage();
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
if(defaultPage.SYSTEM.salesInfo) {
|
||
return defaultPage.SYSTEM.salesInfo;
|
||
} else {
|
||
return '../basedata/employee?action=list';
|
||
}
|
||
},
|
||
ajaxOptions: {
|
||
formatData: function(data){
|
||
defaultPage.SYSTEM.salesInfo = data.data.items; //更新
|
||
return data.data.items;
|
||
}
|
||
},
|
||
width: 120,
|
||
height: 300,
|
||
text: 'name',
|
||
value: 'id',
|
||
defaultSelected: 0,
|
||
defaultFlag: false,
|
||
cache: false,
|
||
editable: true,
|
||
emptyOptions: true,
|
||
callback: {
|
||
onChange: function(data){
|
||
}
|
||
},
|
||
extraListHtml: '<a href="javascript:void(0);" id="quickAddSales" class="quick-add-link"><i class="ui-icon-add"></i>新增职员</a>'
|
||
}, opts);
|
||
|
||
var salesCombo = $_obj.combo(opts).getCombo();
|
||
//新增客户
|
||
$('#quickAddSales').on('click', function(e){
|
||
e.preventDefault();
|
||
if (!Business.verifyRight('BU_ADD')) {
|
||
return ;
|
||
};
|
||
$.dialog({
|
||
title : '新增职员',
|
||
content : 'url:../settings/staff_manage',
|
||
data: {oper: 'add', callback: function(data, oper, dialogWin){
|
||
//parent.getCustomer();
|
||
//_self.customerCombo.selectByValue(data.id, false);
|
||
salesCombo.loadData('../basedata/employee?action=list', ['id', data.id]);
|
||
dialogWin && dialogWin.api.close();
|
||
}},
|
||
width : 400,
|
||
height : 160,
|
||
max : false,
|
||
min : false,
|
||
cache : false,
|
||
lock: true
|
||
});
|
||
});
|
||
return salesCombo;
|
||
};
|
||
Business.billSupplierCombo = function($_obj, opts){
|
||
var defaultPage = Public.getDefaultPage();
|
||
opts = $.extend(true, {
|
||
data: function(){
|
||
if(defaultPage.SYSTEM.supplierInfo) {
|
||
var usingData = []//获取启用状态的;
|
||
for (var i = 0; i < defaultPage.SYSTEM.supplierInfo.length; i++) {
|
||
var g = defaultPage.SYSTEM.supplierInfo[i];
|
||
if(!g['delete']){
|
||
usingData.push(g);
|
||
}
|
||
};
|
||
return usingData;
|
||
} else {
|
||
return '../basedata/contact?action=listt&simple=1&type=10';
|
||
}
|
||
}
|
||
}, opts);
|
||
return Business.supplierCombo($_obj, opts);
|
||
}
|
||
Business.supplierCombo = function($_obj, opts){
|
||
if ($_obj.length == 0) { return };
|
||
var defaultPage = Public.getDefaultPage();
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
return defaultPage.SYSTEM.supplierInfo;;
|
||
},
|
||
ajaxOptions: {
|
||
formatData: function(data){
|
||
defaultPage.SYSTEM.supplierInfo = data.data.rows; //更新
|
||
return data.data.rows;
|
||
}
|
||
},
|
||
width: 200,
|
||
height: 300,
|
||
formatText: function(row){
|
||
return row.number + ' ' + row.name;
|
||
},
|
||
//formatResult: 'name',
|
||
text: 'name',
|
||
value: 'id',
|
||
defaultSelected: 0,
|
||
editable: true,
|
||
extraListHtml: '<a href="javascript:void(0);" id="quickAddVendor" class="quick-add-link"><i class="ui-icon-add"></i>新增供应商</a>',
|
||
maxListWidth: 500,
|
||
cache: false,
|
||
forceSelection: false,
|
||
maxFilter: 10,
|
||
trigger: false,
|
||
callback: {
|
||
onChange: function(data){
|
||
if(data) {
|
||
$_obj.data('contactInfo', data);
|
||
} else {
|
||
$_obj.removeData('contactInfo');
|
||
}
|
||
},
|
||
onEnter:function(e){
|
||
//e.stopPropagation();
|
||
var skey = $_obj.find('input').val();
|
||
if(!$_obj.data('contactInfo')){
|
||
$_obj.find('.ui-icon-ellipsis').data('skey',skey).data('type','supplierInfo').trigger('click');
|
||
}
|
||
}
|
||
}
|
||
}, opts);
|
||
|
||
var supplierCombo = $_obj.combo(opts).getCombo();
|
||
//新增供应商
|
||
$('#quickAddVendor').on('click', function(e){
|
||
e.preventDefault();
|
||
if (!Business.verifyRight('PUR_ADD')) {
|
||
return ;
|
||
};
|
||
$.dialog({
|
||
title : '新增供应商',
|
||
content : 'url:../settings/vendor_manage',
|
||
data: {oper: 'add', callback: function(data, oper, dialogWin){
|
||
//parent.getCustomer();
|
||
//_self.customerCombo.selectByValue(data.id, false);
|
||
supplierCombo.loadData('../basedata/contact?type=10&action=list', ['id', data.id]);
|
||
dialogWin && dialogWin.api.close();
|
||
}},
|
||
width : 640,
|
||
height : 460,
|
||
max : false,
|
||
min : false,
|
||
cache : false,
|
||
lock: true
|
||
});
|
||
});
|
||
|
||
supplierCombo.input.focus(function() {
|
||
var $_this = $(this);
|
||
setTimeout(function(){
|
||
$_this.select();
|
||
}, 15);
|
||
});
|
||
return supplierCombo;
|
||
};
|
||
Business.billSettlementAccountCombo = function($_obj, opts){
|
||
var defaultPage = Public.getDefaultPage();
|
||
opts = $.extend(true, {
|
||
data: function(){
|
||
if(defaultPage.SYSTEM.settlementAccountInfo) {
|
||
var usingData = []//获取启用状态的;
|
||
for (var i = 0; i < defaultPage.SYSTEM.settlementAccountInfo.length; i++) {
|
||
var g = defaultPage.SYSTEM.settlementAccountInfo[i];
|
||
if(!g['delete']){
|
||
usingData.push(g);
|
||
}
|
||
};
|
||
return usingData;
|
||
} else {
|
||
return '../basedata/settAcct?action=list';
|
||
}
|
||
}
|
||
}, opts);
|
||
return Business.settlementAccountCombo($_obj, opts);
|
||
}
|
||
//结算账户下拉框初始化
|
||
Business.settlementAccountCombo = function($_obj, opts){
|
||
if ($_obj.length == 0) { return };
|
||
var defaultPage = Public.getDefaultPage();
|
||
var getInfo=(function(){
|
||
Public.ajaxGet('../basedata/settAcct?action=list', {}, function(data){
|
||
if(data.status === 200) {
|
||
defaultPage.SYSTEM.settlementAccountInfo = data.data.items;
|
||
} else if (data.status === 250){
|
||
defaultPage.SYSTEM.settlementAccountInfo = [];
|
||
} else {
|
||
Public.tips({type: 1, content : data.msg});
|
||
}
|
||
});
|
||
})();
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
return defaultPage.SYSTEM.settlementAccountInfo || [];
|
||
},
|
||
ajaxOptions: {
|
||
formatData: function(data){
|
||
defaultPage.SYSTEM.settlementAccountInfo = data.data.items; //更新
|
||
return data.data.items;
|
||
}
|
||
},
|
||
width: 200,
|
||
height: 300,
|
||
/* formatText: function(row){
|
||
return row.number + ' ' + row.name;
|
||
},*/
|
||
//formatResult: 'name',
|
||
text: 'name',
|
||
value: 'id',
|
||
defaultSelected: -1,
|
||
defaultFlag: false,
|
||
cache: false,
|
||
editable: true,
|
||
callback: {
|
||
onChange: function(data){
|
||
}
|
||
},
|
||
extraListHtml: '<a href="javascript:void(0);" id="quickAddVendor" class="quick-add-link"><i class="ui-icon-add"></i>新增结算账户</a>'
|
||
}, opts);
|
||
|
||
var settlementAccountCombo = $_obj.combo(opts).getCombo();
|
||
//新增结算账户
|
||
$('#quickAddVendor').on('click', function(e){
|
||
e.preventDefault();
|
||
if (!Business.verifyRight('SettAcct_ADD')) {
|
||
return ;
|
||
};
|
||
$.dialog({
|
||
title : '新增结算账户',
|
||
content : 'url:../settings/settlementAccount_manage',
|
||
data: {oper: 'add', callback: function(data, oper, dialogWin){
|
||
defaultPage.SYSTEM.settlementAccountInfo.push(data);
|
||
settlementAccountCombo.loadData('../basedata/settAcct/query?action=query', ['id', data.id]);
|
||
dialogWin && dialogWin.api.close();
|
||
}},
|
||
width : 640,
|
||
height : 205,
|
||
max : false,
|
||
min : false,
|
||
cache : false,
|
||
lock: true
|
||
});
|
||
});
|
||
return settlementAccountCombo;
|
||
};
|
||
Business.formatGoodsName = function(good){
|
||
var number = good.number;
|
||
var name = good.name;
|
||
var spec = good.spec ? '_' + good.spec : '';
|
||
return number + ' ' + name + spec;
|
||
}
|
||
Business.cacheManage = {
|
||
init : function(){
|
||
if(this.inited) return;
|
||
this.inited = 1;//只启用一次
|
||
this.defaultPage = Public.getDefaultPage();
|
||
this.goodsInfo = this.defaultPage.SYSTEM.goodsInfo;
|
||
},
|
||
getGoodInfo:function(params, callback, effective){
|
||
if(!params)return;
|
||
var defaultPage = Public.getDefaultPage();
|
||
var _self = this;
|
||
_self.init();
|
||
var _prop = '';
|
||
var val = '';
|
||
switch(params.action){
|
||
case 'queryByMatchCon':_prop = 'number';val = params.matchCon; break;
|
||
case 'queryByBarcode':_prop = 'barCode';val = params.barCode; break;
|
||
default:return;
|
||
}
|
||
if(!val){
|
||
callback({});
|
||
return {};
|
||
};
|
||
//本地匹配多一次
|
||
for (var i = _self.goodsInfo.length - 1; i >= 0; i--) {
|
||
var good = _self.goodsInfo[i];
|
||
delete good.amount;
|
||
if(good[_prop] === val){
|
||
/*$('#' + rowid).data('goodsInfo',good);
|
||
var number = good.number;
|
||
var name = good.name;
|
||
var spec = good.spec ? '_' + good.spec : '';
|
||
var barCode = good.barCode ? '_' + good.barCode : '';
|
||
return number + name + spec;*/
|
||
if(good['delete'] && effective){
|
||
defaultPage.Public.tips({type:2 , content:'该商品已经被禁用!'});
|
||
return {};
|
||
}
|
||
if(typeof callback === 'function'){
|
||
callback(good);
|
||
}
|
||
return good;
|
||
}
|
||
};
|
||
//本地匹配不到,则去后端查找
|
||
defaultPage.$.ajax({
|
||
url: '../basedata/inventory',
|
||
type: 'post',
|
||
dataType: 'json',
|
||
data: params,
|
||
async:false,//勿修改该属性
|
||
success:function(data){
|
||
if(data.status === 200 && data.data){
|
||
var good = {};
|
||
if(data.data.items){
|
||
if(data.data.items.length == 1){//精确匹配到的才需要,这个接口后面需要改成精确匹配编码&名称
|
||
good = data.data.items[0];
|
||
}else{
|
||
return good;
|
||
}
|
||
}else{
|
||
good = data.data;
|
||
}
|
||
delete good.amount;
|
||
good.unitId = good.unitId || good.baseUnitId;
|
||
if(good.unitId){
|
||
for (var i = _self.defaultPage.SYSTEM.unitInfo.length - 1; i >= 0; i--) {
|
||
var unit = _self.defaultPage.SYSTEM.unitInfo[i];
|
||
if(unit.id == good.unitId){
|
||
good.mainUnit = unit.name;
|
||
good.unitName = unit.name;
|
||
}
|
||
};
|
||
}
|
||
// 加入缓存
|
||
defaultPage.SYSTEM.goodsInfo.push(good);
|
||
if(good['delete'] && effective){
|
||
defaultPage.Public.tips({type:2 , content:'该商品已经被禁用!'});
|
||
return {};
|
||
}
|
||
//_self.goodsInfo.push(good);
|
||
if(typeof callback === 'function'){
|
||
callback(good);
|
||
}
|
||
return good;
|
||
}else{
|
||
//_self.defaultPage.Public.tips({type: 1, content : data.msg});
|
||
}
|
||
}
|
||
})
|
||
.done(function() {
|
||
//console.log("success");
|
||
})
|
||
.fail(function() {
|
||
// console.log("error");
|
||
})
|
||
.always(function() {
|
||
// console.log("complete");
|
||
});
|
||
},
|
||
getGoodsInfoByNumber:function(number, callback,effective){
|
||
this.getGoodInfo({
|
||
action:'queryByMatchCon',
|
||
matchCon:number
|
||
},callback, effective);
|
||
},
|
||
getGoodsInfoByBarCode:function(barCode, callback,effective){
|
||
this.getGoodInfo({
|
||
action:'queryByBarcode',
|
||
barCode:barCode
|
||
},callback, effective);
|
||
}
|
||
}
|
||
Business.serNumManage = function(opts){
|
||
var parentTr = opts.row,
|
||
data = opts.data,
|
||
serNumUsedList = opts.serNumUsedList,
|
||
creatable = opts.creatable,
|
||
enableStorage = opts.enableStorage,
|
||
view = opts.view,
|
||
$grid = parentTr.closest('table'),
|
||
defaultPage = Public.getDefaultPage();
|
||
|
||
|
||
var oldData = {
|
||
goodsInfo: parentTr.data('goodsInfo'),
|
||
storageInfo : parentTr.data('storageInfo') || {},
|
||
unitInfo : parentTr.data('unitInfo')||{}
|
||
}
|
||
if(!view){
|
||
//非查询模式
|
||
$grid.jqGrid("restoreCell", curRow, curCol);
|
||
parentTr.data('goodsInfo', null).data('storageInfo', null).data('unitInfo', null);
|
||
}
|
||
var params = {
|
||
width: 650,
|
||
height: 400,
|
||
title: (serNumUsedList ? '修改' : '录入') + '【'+data.name+'】的序列号',
|
||
content: 'url:/settings/serNumBatch.jsp',
|
||
data: {
|
||
invId: data.id,
|
||
creatable:creatable,
|
||
enableStorage : enableStorage,
|
||
serNumUsedList : serNumUsedList,
|
||
storageInfo : oldData.storageInfo,
|
||
view : view,
|
||
callback: function(serNumList,win){
|
||
var curID = THISPAGE.curID;
|
||
$grid.jqGrid("restoreCell", curRow, curCol);
|
||
//根据仓库分组
|
||
var storageList = {};
|
||
if(!$.isArray(serNumList)){
|
||
var _serNumList = [];
|
||
for(var item in serNumList){
|
||
_serNumList.push(serNumList[item]);
|
||
}
|
||
serNumList = _serNumList;
|
||
}
|
||
for (var i = 0; i < serNumList.length; i++) {
|
||
if(creatable && !$.isEmptyObject(oldData.storageInfo)){
|
||
//新增的时候检查,不新增分录
|
||
//如果已经指定的仓库,序列号全部入到当前仓库
|
||
var locationId = oldData.storageInfo.id || 0;
|
||
|
||
}else{
|
||
var locationId = serNumList[i].locationId || -1;
|
||
}
|
||
storageList[locationId] = storageList[locationId] || [];
|
||
storageList[locationId].push(serNumList[i]);
|
||
};
|
||
for(item in storageList){
|
||
if(item ==='function') continue;
|
||
var serNums = storageList[item];
|
||
var addId = curID || THISPAGE.newId;
|
||
if(curID) {
|
||
$('#'+curID).data('goodsInfo', null).data('storageInfo',null).data('unitInfo',null);
|
||
var su = $grid.jqGrid('setRowData', Number(curID), {});
|
||
} else {
|
||
var su = $grid.jqGrid('addRowData', Number(THISPAGE.newId), {}, 'last');
|
||
THISPAGE.newId++;
|
||
};
|
||
var rowData = $grid.jqGrid('getRowData',curID);
|
||
var tempRowData = $.extend(true, {}, data);//克隆对象,不然会污染combo的数据
|
||
tempRowData.goods = data.number + ' ' + data.name + (data.spec ? '_' + data.spec: '');
|
||
tempRowData.qty = serNums.length;
|
||
tempRowData.serNumList = serNums;
|
||
//计算金额和税率start
|
||
if(tempRowData.qty >0 && rowData.goods){
|
||
var _qty = parseFloat(tempRowData.qty);
|
||
var _price = parseFloat(rowData.price);
|
||
var _discountRate = parseFloat(rowData.discountRate);
|
||
if($.isNumeric(_price)) {
|
||
if($.isNumeric(_discountRate)) {
|
||
tempRowData.deduction = _qty * _price * _discountRate / 100;//重新计算折扣额会导致PROJECT-15589
|
||
tempRowData.amount = _qty * _price - tempRowData.deduction;
|
||
} else {
|
||
tempRowData.amount = _qty * _price;
|
||
};
|
||
};
|
||
//tempRowData.amount = rowData.price * tempRowData.qty;
|
||
var amount = Number(tempRowData.amount);
|
||
if(defaultPage.SYSTEM.taxRequiredCheck) {
|
||
var taxRate = rowData.taxRate;
|
||
var tax = amount * taxRate / 100;
|
||
var taxAmount = amount + tax;
|
||
tempRowData.tax = tax;
|
||
tempRowData.taxAmount = taxAmount;
|
||
};
|
||
}
|
||
//计算金额和税率end
|
||
if(!creatable){
|
||
tempRowData.locationId = serNums[0].locationId;
|
||
tempRowData.locationName = serNums[0].locationName;
|
||
}else{
|
||
tempRowData.locationId = oldData.storageInfo.id;
|
||
tempRowData.locationName = oldData.storageInfo.name;
|
||
}
|
||
if(typeof opts.beforeSet === 'function'){
|
||
opts.beforeSet(tempRowData);
|
||
}
|
||
if(su){
|
||
$('#' + addId).data('goodsInfo',tempRowData)
|
||
.data('storageInfo', {
|
||
id: tempRowData.locationId,
|
||
name: tempRowData.locationName
|
||
}).data('unitInfo',{
|
||
unitId: tempRowData.unitId,
|
||
name: tempRowData.unitName
|
||
});
|
||
}
|
||
$grid.jqGrid('setRowData', addId, tempRowData);
|
||
if(serNumUsedList){
|
||
//有使用过的说明是修改状态
|
||
}else{
|
||
curRow && curRow++;
|
||
}
|
||
var $_nextTr = $('#' + curID).next();
|
||
if($_nextTr.length > 0) {
|
||
curID = $('#' + curID).next().attr('id');
|
||
} else {
|
||
curID = '';
|
||
};
|
||
if(curID === '') {
|
||
if($grid[0].id === 'fixedGrid'){
|
||
//组装拆卸单的特殊处理,不需要新增一行
|
||
win.close();
|
||
return;
|
||
}
|
||
$grid.jqGrid('addRowData', THISPAGE.newId, {}, 'last');
|
||
THISPAGE.newId = THISPAGE.newId + 1;
|
||
};
|
||
THISPAGE.calTotal();
|
||
if(serNumUsedList){
|
||
//有使用过的说明是修改状态
|
||
setTimeout( function() { $grid.jqGrid("nextCell") }, 10);
|
||
}else{
|
||
setTimeout( function() { $grid.jqGrid("editCell", curRow, 2, true) }, 10);
|
||
}
|
||
}
|
||
win.close();
|
||
}
|
||
},
|
||
init:function(){
|
||
},
|
||
lock: true,
|
||
ok:false,
|
||
focus:false,//很奇葩,不设置这个按回车会触发该控件上close按钮的click事件~~~
|
||
cancel:function(){
|
||
$('#' + THISPAGE.curID).data('goodsInfo',oldData.goodsInfo)
|
||
.data('storageInfo', {
|
||
id: oldData.storageInfo.id,
|
||
name: oldData.storageInfo.name
|
||
}).data('unitInfo',{
|
||
unitId: oldData.unitInfo.unitId,
|
||
name: oldData.unitInfo.name
|
||
});
|
||
},
|
||
esc:false,//插件的BUG,esc不触发cancel事件
|
||
onClose:function(){
|
||
//console.log(111)
|
||
}
|
||
};
|
||
if(enableStorage){
|
||
//如果是销售单等使用序列号新增商品时, 或者改变仓库时
|
||
params.title = '选择【'+data.name+'】的序列号',
|
||
params.content = 'url:/settings/serNumList.jsp';
|
||
params.button = [{name: '确认',defClass:'ui_state_highlight', callback: function () {
|
||
this.content.callback();
|
||
//this.close();
|
||
return false;
|
||
}}];
|
||
params.width = 640;
|
||
params.height = 460;
|
||
params.data.enableStorage = true;
|
||
}
|
||
if(view){
|
||
//查询模式
|
||
params.cancel = true;
|
||
params.cancelVal = '关闭';
|
||
params.ok = false;
|
||
}
|
||
$.dialog(params);
|
||
}
|
||
/**
|
||
* isSkuSingle 可以为回调的执行函数
|
||
*/
|
||
Business.billSkuManage = function(parentTr , data, isSkuSingle){
|
||
var $grid = parentTr.closest('table');
|
||
var defaultPage = Public.getDefaultPage();
|
||
$grid.jqGrid("restoreCell", curRow, curCol);
|
||
parentTr.data('goodsInfo', null);
|
||
$.dialog({
|
||
width: 470,
|
||
height: 410,
|
||
title: '选择【'+data.name+'】的属性',
|
||
content: 'url:http://'+Public.getHostName()+'/settings/assistingProp-batch.jsp',
|
||
data: {
|
||
//skey:_self.skey,
|
||
isSingle : isSkuSingle,
|
||
skuClassId:data.skuClassId,
|
||
callback: function(goodsPropList,win){
|
||
var curID = THISPAGE.curID;
|
||
$grid.jqGrid("restoreCell", curRow, curCol);
|
||
if(isSkuSingle){
|
||
var tempData = goodsPropList[0];
|
||
var addId = curID;
|
||
var tempRowData = $.extend(true, {}, data);//克隆对象,不然会污染combo的数据
|
||
if(typeof isSkuSingle === 'function'){
|
||
isSkuSingle(addId,tempRowData,tempData);
|
||
}else{
|
||
tempRowData.qty = tempData.qty;
|
||
tempRowData.skuName = tempData.skuName;
|
||
tempRowData.skuId = tempData.skuId;
|
||
$('#' + addId).data('goodsInfo',tempRowData)
|
||
.data('storageInfo', {
|
||
id: tempRowData.locationId,
|
||
name: tempRowData.locationName
|
||
}).data('unitInfo',{
|
||
unitId: tempRowData.unitId,
|
||
name: tempRowData.unitName
|
||
});
|
||
var goodsData = $.extend(true, {}, tempRowData);
|
||
delete goodsData.id;
|
||
$grid.jqGrid('setRowData', addId, goodsData);
|
||
}
|
||
}else{
|
||
for(var i = 0 ,len = goodsPropList.length; i<len; i++){
|
||
var addId = curID || THISPAGE.newId;
|
||
var tempData = goodsPropList[i];
|
||
if(curID) {
|
||
$('#'+curID).data('goodsInfo', null).data('storageInfo',null).data('unitInfo',null);
|
||
var su = $grid.jqGrid('setRowData', Number(curID), {});
|
||
} else {
|
||
var su = $grid.jqGrid('addRowData', Number(THISPAGE.newId), {}, 'last');
|
||
THISPAGE.newId++;
|
||
};
|
||
var tempRowData = $.extend(true, {}, data);//克隆对象,不然会污染combo的数据
|
||
tempRowData.goods = data.number + ' ' + data.name + (data.spec ? '_' + data.spec: '');
|
||
tempRowData.qty = tempData.qty;
|
||
tempRowData.skuName = tempData.skuName;
|
||
tempRowData.skuId = tempData.skuId;
|
||
if(su){
|
||
$('#' + addId).data('goodsInfo',tempRowData)
|
||
.data('storageInfo', {
|
||
id: tempRowData.locationId,
|
||
name: tempRowData.locationName
|
||
}).data('unitInfo',{
|
||
unitId: tempRowData.unitId,
|
||
name: tempRowData.unitName
|
||
});
|
||
}
|
||
$grid.jqGrid('setRowData', addId, tempRowData);
|
||
curRow && curRow++;
|
||
var $_nextTr = $('#' + curID).next();
|
||
if($_nextTr.length > 0) {
|
||
curID = $('#' + curID).next().attr('id');
|
||
} else {
|
||
curID = '';
|
||
};
|
||
if($grid[0].id === 'fixedGrid'){
|
||
//组装拆卸单的特殊处理,只要处理第一条
|
||
break;
|
||
}
|
||
}
|
||
if(curID === '') {
|
||
if($grid[0].id === 'fixedGrid'){
|
||
//组装拆卸单的特殊处理,不需要新增一行
|
||
win.close();
|
||
return;
|
||
}
|
||
$grid.jqGrid('addRowData', THISPAGE.newId, {}, 'last');
|
||
THISPAGE.newId = THISPAGE.newId + 1;
|
||
};
|
||
THISPAGE.calTotal();
|
||
setTimeout( function() { $grid.jqGrid("editCell", curRow, 2, true) }, 10);
|
||
}
|
||
win.close();
|
||
}
|
||
},
|
||
init:function(){
|
||
//_self.skey = '';
|
||
$grid.jqGrid("editCell", curRow, 2, true);
|
||
},
|
||
close:function(){
|
||
//console.log(123)
|
||
},
|
||
lock: true,
|
||
ok:false,
|
||
focus:false,//很奇葩,不设置这个按回车会触发该控件上close按钮的click事件~~~
|
||
cancle:false
|
||
});
|
||
}
|
||
Business.billGoodsCombo = function($_obj, opts , isSkuSingle){
|
||
var defaultPage = Public.getDefaultPage();
|
||
opts = $.extend(true, {
|
||
// autoSelectFirst:false//变来变去的。。。
|
||
data: function(){
|
||
if(defaultPage.SYSTEM.goodsInfo) {
|
||
var usingData = []//获取启用状态的;
|
||
for (var i = 0; i < defaultPage.SYSTEM.goodsInfo.length; i++) {
|
||
var g = defaultPage.SYSTEM.goodsInfo[i];
|
||
if(!g['delete']){
|
||
usingData.push(g);
|
||
}
|
||
};
|
||
return usingData;
|
||
} else {
|
||
return '../basedata/inventory?action=list';
|
||
}
|
||
}
|
||
}, opts);
|
||
opts.callback = {
|
||
onChange : function(data){
|
||
var _self = this;
|
||
_self.addQuery = true;
|
||
var defaultPage = Public.getDefaultPage();
|
||
var SYSTEM = defaultPage.SYSTEM;
|
||
var parentTr = this.input.parents('tr');
|
||
var $thisTd = this.input.closest('td');
|
||
var $grid = parentTr.closest('table');
|
||
var goodsInfo = parentTr.data('goodsInfo')||{};
|
||
opts.userData = opts.userData || {};
|
||
if(data) {
|
||
if(data.id != goodsInfo.id){
|
||
//如果有商品信息
|
||
delete data.amount;//商品的amount标示的是期初总额,这个字段没用
|
||
if(!opts.disSerNum && SYSTEM.ISSERNUM && data.isSerNum){
|
||
//如果启用序列号
|
||
parentTr.find('td:gt('+$thisTd.index()+')').html('');
|
||
Business.serNumManage({
|
||
row : parentTr,
|
||
data : data,
|
||
creatable : opts.userData.creatable,
|
||
beforeSet : opts.userData.beforeSet
|
||
});
|
||
}
|
||
else{
|
||
parentTr.data('goodsInfo', data);
|
||
parentTr.data('storageInfo', { id: data.locationId, name: data.locationName});
|
||
parentTr.data('unitInfo', { unitId: data.unitId, name: data.unitName});
|
||
parentTr.data('skuInfo',null);
|
||
}
|
||
}
|
||
}else{
|
||
parentTr.data('goodsInfo', null);
|
||
parentTr.data('storageInfo',null);
|
||
parentTr.data('unitInfo',null);
|
||
parentTr.data('skuInfo',null);
|
||
}
|
||
}
|
||
};
|
||
return Business.goodsCombo($_obj, opts);
|
||
}
|
||
Business.goodsCombo = function($_obj, opts){
|
||
var defaultPage = Public.getDefaultPage();
|
||
if ($_obj.length == 0) { return };
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
if(defaultPage.SYSTEM.goodsInfo) {
|
||
return defaultPage.SYSTEM.goodsInfo;
|
||
} else {
|
||
return '../basedata/inventory?action=list';
|
||
}
|
||
},
|
||
ajaxOptions: {
|
||
formatData: function(data){
|
||
defaultPage.SYSTEM.goodsInfo = data.data.rows; //更新
|
||
return data.data.rows;
|
||
}
|
||
},
|
||
formatText: function(data){
|
||
return Business.formatGoodsName(data);
|
||
},
|
||
value: 'id',
|
||
defaultSelected: -1,
|
||
editable: true,
|
||
extraListHtml: '<a href="javascript:void(0);" class="quick-add-link quickAddGoods"><i class="ui-icon-add"></i>新增商品</a>',
|
||
maxListWidth: 500,
|
||
cache: false,
|
||
forceSelection: true,
|
||
trigger: false,
|
||
listHeight: 182,
|
||
listWrapCls: 'ui-droplist-wrap',
|
||
customMatch:function(item,query){
|
||
var reg = new RegExp(query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'), 'i');
|
||
var text = item.text + (item.rawData.pinYin || '');
|
||
if(text.search(reg) == -1){
|
||
return false;
|
||
}
|
||
return true;
|
||
},
|
||
callback: {
|
||
onChange: function(data){
|
||
var _self = this;
|
||
_self.addQuery = true;
|
||
var parentTr = this.input.parents('tr');
|
||
var goodsInfo = parentTr.data('goodsInfo')||{};
|
||
if(data) {
|
||
if(data.id != goodsInfo.id){
|
||
parentTr.data('goodsInfo', data);
|
||
parentTr.data('storageInfo', { id: data.locationId, name: data.locationName});
|
||
parentTr.data('unitInfo', { unitId: data.unitId, name: data.unitName});
|
||
}
|
||
}else{
|
||
parentTr.data('goodsInfo', null);
|
||
parentTr.data('storageInfo',null);
|
||
parentTr.data('unitInfo',null);
|
||
}
|
||
},
|
||
incrementalSearch: function(pos, callback){
|
||
var _self = this;
|
||
var query = $_obj.val()
|
||
Public.ajaxGet('../basedata/inventory?action=list', { rows: 20, skey: query }, function(data){
|
||
if(data.status === 200 || data.status === 250) {
|
||
//SYSTEM.goodsInfo.push(data.data.rows);
|
||
_self.rawData = _self.addData = data.data.rows;
|
||
if(data.data.rows.length < _self.opts.maxFilter) {
|
||
_self.addQuery = false;
|
||
} else {
|
||
_self.addQuery = true;
|
||
};
|
||
callback.call(_self);
|
||
var addId = [];
|
||
$.each(data.data.rows, function(i, n){
|
||
addId.push(n.id);
|
||
});
|
||
$.each(pos, function(i, n){
|
||
if($.inArray(n.value, addId) !== -1) {
|
||
if(i === 0) {
|
||
defaultPage.SYSTEM.goodsInfo.splice(i, 1);
|
||
} else {
|
||
defaultPage.SYSTEM.goodsInfo.splice(i - 1, 1);
|
||
};
|
||
};
|
||
});
|
||
$.merge(defaultPage.SYSTEM.goodsInfo, data.data.rows);
|
||
var goodsInfo = defaultPage.SYSTEM.goodsInfo;
|
||
if(goodsInfo.length > 100) {
|
||
goodsInfo.splice(0, goodsInfo.length - 100);
|
||
}
|
||
};
|
||
});
|
||
},
|
||
onListClick: function(){
|
||
|
||
},
|
||
onEnter:function(){
|
||
setTimeout(function(){
|
||
if(goodsCombo.isExpanded){
|
||
goodsCombo.collapse();
|
||
}
|
||
},50)
|
||
}
|
||
},
|
||
forceSelection : false,
|
||
queryDelay: 0,
|
||
inputCls: 'edit_subject',
|
||
wrapCls: 'edit_subject_wrap',
|
||
focusCls: '',
|
||
disabledCls: '',
|
||
activeCls: ''
|
||
}, opts);
|
||
|
||
var goodsCombo = $_obj.combo(opts).getCombo();
|
||
|
||
//新增商品
|
||
$('.quickAddGoods').unbind('click').on('click', function(e){
|
||
e.preventDefault();
|
||
if (!Business.verifyRight('INVENTORY_ADD')) {
|
||
return ;
|
||
};
|
||
var _w = 1020,
|
||
_h = defaultPage.SYSTEM.enableStorage?480:370;
|
||
_h = defaultPage.SYSTEM.enableAssistingProp?_h:_h-100;
|
||
_h = defaultPage.SYSTEM.ISSERNUM?_h + 40:_h;
|
||
$.dialog({
|
||
title : '新增商品',
|
||
content : 'url:../settings/goods_manage',
|
||
data: {oper: 'add', callback: function(data, oper, dialogWin){
|
||
var goodID = data.id;
|
||
//_self.goodsCombo.getAllRawData().push(data);
|
||
defaultPage.SYSTEM.goodsInfo.push(data);
|
||
data.unitId = data.unitId || data.baseUnitId;
|
||
dialogWin && dialogWin.api.close();
|
||
//var allRawData = _self.goodsCombo.getAllRawData();
|
||
goodsCombo.loadData(defaultPage.SYSTEM.goodsInfo, '-1', false);
|
||
setTimeout( function() {
|
||
//$("#grid").jqGrid("editCell", editRow, 2, true)
|
||
goodsCombo.selectByValue(goodID, true);
|
||
$_obj.focus();
|
||
}, 10);
|
||
|
||
}},
|
||
width : _w,
|
||
height : _h,
|
||
max : false,
|
||
min : false,
|
||
cache : false,
|
||
lock: true
|
||
});
|
||
});
|
||
return goodsCombo;
|
||
};
|
||
Business.categoryCombo = function($_obj, opts, type){
|
||
if ($_obj.length == 0) { return };
|
||
var typeNumber = type||'';
|
||
if(typeof opts != 'object'){
|
||
typeNumber = opts;
|
||
opts = {};
|
||
}
|
||
if(!typeNumber) { return };
|
||
var defaultPage = Public.getDefaultPage();
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
if(defaultPage.SYSTEM.categoryInfo && defaultPage.SYSTEM.categoryInfo[typeNumber]) {
|
||
return defaultPage.SYSTEM.categoryInfo[typeNumber];
|
||
} else {
|
||
return '../basedata/assist?action=list&isDelete=2&typeNumber='+typeNumber;
|
||
}
|
||
},
|
||
ajaxOptions: {
|
||
formatData: function(data){
|
||
defaultPage.SYSTEM.categoryInfo = defaultPage.SYSTEM.categoryInfo ||{};
|
||
defaultPage.SYSTEM.categoryInfo[typeNumber] = data.data.items; //更新
|
||
return data.data.items;
|
||
}
|
||
},
|
||
text: 'name',
|
||
value: 'id',
|
||
defaultSelected: -1,
|
||
editable: true,
|
||
extraListHtml: '<a href="javascript:void(0);" id="quickAddCategory" class="quick-add-link"><i class="ui-icon-add"></i>新增类别</a>',
|
||
maxListWidth: 500,
|
||
cache: false,
|
||
forceSelection: true,
|
||
maxFilter: 10,
|
||
trigger: false,
|
||
callback: {
|
||
onChange: function(data){
|
||
var parentTr = this.input.parents('tr');
|
||
if(data) {
|
||
parentTr.data('categoryInfo', data);
|
||
}
|
||
},
|
||
onListClick: function(){
|
||
|
||
}
|
||
},
|
||
queryDelay: 0
|
||
}, opts);
|
||
|
||
var categoryCombo = $_obj.combo(opts).getCombo();
|
||
var rights = {
|
||
'customertype' : 'BUTYPE_ADD',// '客户',
|
||
'supplytype' : 'SUPPLYTYPE_ADD',// '供应商',
|
||
'trade' : 'TRADETYPE_ADD'// '商品'
|
||
};
|
||
//新增分类
|
||
$('#quickAddCategory').on('click', function(e){
|
||
e.preventDefault();
|
||
if (rights[typeNumber] && !Business.verifyRight(rights[typeNumber])) {
|
||
return ;
|
||
};
|
||
var callback=function(data,dialogWin){
|
||
categoryCombo.loadData(function(){return defaultPage.SYSTEM.categoryInfo[typeNumber]}, '-1', false);
|
||
dialogWin.close();
|
||
setTimeout( function() {
|
||
categoryCombo.selectByValue(data.id, true);
|
||
$_obj.focus();
|
||
}, 10);
|
||
};
|
||
Public.categoryPop(typeNumber,window.parent,callback);
|
||
});
|
||
return categoryCombo;
|
||
};
|
||
Business.forSearch = function(id, text){
|
||
if(id) {
|
||
$.dialog({
|
||
width: 470,
|
||
height: 410,
|
||
title: '商品库存查询',
|
||
content: 'url:../inventory',
|
||
data: { id: id, text: text},
|
||
cancel: true,
|
||
lock: true,
|
||
cancelVal: '关闭'
|
||
|
||
});
|
||
//goodsCombo.removeSelected(false);
|
||
} else {
|
||
parent.Public.tips({type: 2, content : '请先选择一个商品!'});
|
||
};
|
||
};
|
||
Business.billStorageCombo = function($_obj, opts){
|
||
var defaultPage = Public.getDefaultPage();
|
||
opts = $.extend(true, {
|
||
data: function(){
|
||
if(defaultPage.SYSTEM.storageInfo) {
|
||
var usingData = []//获取启用状态的;
|
||
for (var i = 0; i < defaultPage.SYSTEM.storageInfo.length; i++) {
|
||
var g = defaultPage.SYSTEM.storageInfo[i];
|
||
if(!g['delete']){
|
||
usingData.push(g);
|
||
}
|
||
};
|
||
return usingData;
|
||
} else {
|
||
return '../basedata/invlocation?action=list&isDelete=2';
|
||
}
|
||
}
|
||
}, opts);
|
||
return Business.storageCombo($_obj, opts);
|
||
}
|
||
Business.storageCombo = function($_obj, opts){
|
||
var defaultPage = Public.getDefaultPage();
|
||
if ($_obj.length == 0) { return };
|
||
var opts = $.extend(true, {
|
||
//data: parent.SYSTEM.storageInfo/*'/basedata/invlocation.do?action=list&isEnable=1'*/,
|
||
data: function(){
|
||
return defaultPage.SYSTEM.storageInfo;
|
||
},
|
||
/* ajaxOptions: {
|
||
formatData: function(data){
|
||
return data.data.items;
|
||
}
|
||
},*/
|
||
text: 'name',
|
||
value: 'id',
|
||
defaultSelected: 0,
|
||
cache: false,
|
||
editable: true,
|
||
trigger: false,
|
||
defaultFlag: false,
|
||
callback: {
|
||
onChange: function(data){
|
||
var parentTr = this.input.parents('tr');
|
||
//var storageInfo = parentTr.data('storageInfo');
|
||
//console.log(parentTr.data('storageInfo'))
|
||
/* if(!storageInfo) {
|
||
storageInfo = {};
|
||
};*/
|
||
if(data) {
|
||
parentTr.data('storageInfo', {id: data.id, name: data.name});
|
||
//storageInfo.id = data.id;
|
||
//storageInfo.name = data.name;
|
||
}
|
||
}
|
||
}
|
||
}, opts);
|
||
|
||
var storageCombo = $_obj.combo(opts).getCombo();
|
||
return storageCombo;
|
||
};
|
||
Business.billskuCombo = function($_obj, opts){
|
||
var defaultPage = Public.getDefaultPage();
|
||
opts = $.extend(true, {
|
||
data: function(){
|
||
if(!this.input) return [];
|
||
var parentTr = this.input.closest('tr');
|
||
var goodsInfo = parentTr.data('goodsInfo');
|
||
if(!goodsInfo)return;
|
||
return goodsInfo.invSkus || [];
|
||
},
|
||
callback: {
|
||
onChange: function(data){
|
||
if(data){
|
||
var parentTr = this.input.closest('tr');
|
||
var goodsInfo = parentTr.data('goodsInfo');
|
||
if(!goodsInfo)return;
|
||
parentTr.data('skuInfo',{
|
||
name:data.skuName,
|
||
id: data.skuId
|
||
});
|
||
}else{
|
||
|
||
}
|
||
}
|
||
}
|
||
}, opts);
|
||
return Business.skuCombo($_obj, opts);
|
||
}
|
||
Business.skuCombo = function($_obj, opts){
|
||
var defaultPage = Public.getDefaultPage();
|
||
if ($_obj.length == 0) { return };
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
return defaultPage.SYSTEM.skuInfo || [];
|
||
},
|
||
text: 'skuName',
|
||
value: 'skuId',
|
||
defaultSelected: 0,
|
||
cache: false,
|
||
editable: true,
|
||
trigger: false,
|
||
defaultFlag: false,
|
||
callback: {
|
||
onChange: function(data){
|
||
|
||
}
|
||
}
|
||
}, opts);
|
||
|
||
var skuCombo = $_obj.combo(opts).getCombo();
|
||
return skuCombo;
|
||
};
|
||
Business.batchCombo = function($_obj, opts){
|
||
var defaultPage = Public.getDefaultPage();
|
||
if ($_obj.length == 0) { return };
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
return defaultPage.SYSTEM.batchInfo;
|
||
},
|
||
text: 'name',
|
||
value: 'id',
|
||
defaultSelected: 0,
|
||
cache: false,
|
||
editable: true,
|
||
trigger: false,
|
||
defaultFlag: false,
|
||
forceSelection:false,
|
||
callback: {
|
||
onChange: function(data){
|
||
}
|
||
}
|
||
}, opts);
|
||
|
||
var batchCombo = $_obj.combo(opts).getCombo();
|
||
return batchCombo;
|
||
};
|
||
Business.unitCombo = function($_obj, opts){
|
||
if ($_obj.length == 0) { return };
|
||
var defaultPage = Public.getDefaultPage();
|
||
var opts = $.extend(true, {
|
||
//data: parent.SYSTEM.storageInfo/*'/basedata/invlocation.do?action=list&isEnable=1'*/,
|
||
data: function(){
|
||
return (defaultPage.SYSTEM || opts.userData.system).unitInfo;
|
||
},
|
||
/* ajaxOptions: {
|
||
formatData: function(data){
|
||
return data.data.items;
|
||
}
|
||
},*/
|
||
text: 'name',
|
||
value: 'id',
|
||
defaultSelected: 0,
|
||
cache: false,
|
||
editable: true,//这个会在grid.celledit.js里面的//edit 修复自定义编辑获取焦点 --arenp 这里导致页面一次录很多分录之后出现页面定位错误
|
||
trigger: false,
|
||
defaultFlag: false,
|
||
forceSelection:false,
|
||
callback: {
|
||
onChange: function(data){
|
||
var parentTr = this.input.parents('tr');
|
||
//var storageInfo = parentTr.data('storageInfo');
|
||
//console.log(parentTr.data('storageInfo'))
|
||
/* if(!storageInfo) {
|
||
storageInfo = {};
|
||
};*/
|
||
if(data) {
|
||
data.id = data.id || data.unitId;
|
||
parentTr.data('unitInfo', {unitId: data.id, name: data.name});
|
||
//storageInfo.id = data.id;
|
||
//storageInfo.name = data.name;
|
||
}
|
||
}
|
||
}
|
||
}, opts);
|
||
|
||
var unitCombo = $_obj.combo(opts).getCombo();
|
||
return unitCombo;
|
||
};
|
||
Business.accountCombo = function($_obj, opts){
|
||
if ($_obj.length == 0) { return };
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
if(SYSTEM.accountInfo) {
|
||
return SYSTEM.accountInfo;
|
||
} else {
|
||
return '../basedata/settAcct?action=list';
|
||
}
|
||
},
|
||
ajaxOptions: {
|
||
formatData: function(data){
|
||
SYSTEM.accountInfo = data.data.items; //更新
|
||
return data.data.items;
|
||
}
|
||
},
|
||
formatText: function(data){
|
||
return data.number + ' ' + data.name;
|
||
},
|
||
value: 'id',
|
||
defaultSelected: 0,
|
||
defaultFlag: false,
|
||
cache: false,
|
||
editable: true
|
||
}, opts);
|
||
var accountCombo = $_obj.combo(opts).getCombo();
|
||
return accountCombo;
|
||
};
|
||
|
||
Business.paymentCombo = function($_obj, opts){
|
||
if ($_obj.length == 0) { return };
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
if(SYSTEM.paymentInfo) {
|
||
return SYSTEM.paymentInfo;
|
||
} else {
|
||
return '../basedata/assist?action=list&typeNumber=PayMethod&isDelete=2';
|
||
}
|
||
},
|
||
ajaxOptions: {
|
||
formatData: function(data){
|
||
SYSTEM.paymentInfo = data.data.items; //更新缓存
|
||
return data.data.items;
|
||
}
|
||
},
|
||
emptyOptions: true,
|
||
text: 'name',
|
||
value: 'id',
|
||
defaultSelected: 0,
|
||
cache: false,
|
||
editable: false,
|
||
trigger: false,
|
||
defaultFlag: false
|
||
|
||
}, opts);
|
||
var paymentCombo = $_obj.combo(opts).getCombo();
|
||
return paymentCombo;
|
||
};
|
||
/*
|
||
* 网店下拉框
|
||
*/
|
||
Business.storeCombo = function($_obj, opts){
|
||
if ($_obj.length == 0) { return };
|
||
var defaultPage = Public.getDefaultPage();
|
||
var SYSTEM = SYSTEM || defaultPage.SYSTEM || opts.system;
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
if(SYSTEM.storeInfo) {
|
||
return SYSTEM.storeInfo;
|
||
} else {
|
||
return '/bs/cloudStore.do?action=list';
|
||
}
|
||
},
|
||
ajaxOptions: {
|
||
formatData: function(data){
|
||
SYSTEM.storeInfo = data.data.items; //更新
|
||
return data.data.items;
|
||
}
|
||
},
|
||
formatText: function(data){
|
||
return data.name;
|
||
},
|
||
value: 'id',
|
||
defaultSelected: 0,
|
||
addOptions : {text : '(所有)',value : -1 },
|
||
defaultFlag: false,
|
||
cache: false,
|
||
editable: true
|
||
}, opts);
|
||
var storeCombo = $_obj.combo(opts).getCombo();
|
||
return storeCombo;
|
||
};
|
||
/*
|
||
* 物流公司下拉框
|
||
*/
|
||
Business.logisticCombo = function($_obj, opts){
|
||
if ($_obj.length == 0) { return };
|
||
var defaultPage = Public.getDefaultPage();
|
||
var SYSTEM = SYSTEM || defaultPage.SYSTEM || opts.system;
|
||
var opts = $.extend(true, {
|
||
data: function(){
|
||
if(SYSTEM.logisticInfo) {
|
||
return SYSTEM.logisticInfo;
|
||
} else {
|
||
return '/bs/express.do?action=list';
|
||
}
|
||
},
|
||
ajaxOptions: {
|
||
formatData: function(data){
|
||
SYSTEM.logisticInfo = data.data.items; //更新
|
||
return data.data.items;
|
||
}
|
||
},
|
||
formatText: function(data){
|
||
return data.number + ' ' + data.name;
|
||
},
|
||
value: 'id',
|
||
defaultSelected: 0,
|
||
addOptions : {text : '(空)',value : 0 },
|
||
defaultFlag: false,
|
||
cache: false,
|
||
editable: true
|
||
}, opts);
|
||
var logisticCombo = $_obj.combo(opts).getCombo();
|
||
return logisticCombo;
|
||
};
|
||
Business.billsEvent = function(obj, type, flag){
|
||
var _self = obj;
|
||
var defaultPage = Public.getDefaultPage();
|
||
//新增分录
|
||
$('.grid-wrap').on('click', '.ui-icon-plus', function(e){
|
||
var rowId = $(this).parent().data('id');
|
||
var newId = $('#grid tbody tr').length;
|
||
var datarow = { id: _self.newId };
|
||
var su = $("#grid").jqGrid('addRowData', _self.newId, datarow, 'before', rowId);
|
||
if(su) {
|
||
$(this).parents('td').removeAttr('class');
|
||
$(this).parents('tr').removeClass('selected-row ui-state-hover');
|
||
$("#grid").jqGrid('resetSelection');
|
||
_self.newId++;
|
||
}
|
||
});
|
||
//删除分录
|
||
$('.grid-wrap').on('click', '.ui-icon-trash', function(e){
|
||
if($('#grid tbody tr').length === 2) {
|
||
parent.Public.tips({type: 2, content: '至少保留一条分录!'});
|
||
return false;
|
||
}
|
||
var rowId = $(this).parent().data('id');
|
||
var su = $("#grid").jqGrid('delRowData', rowId);
|
||
if(su) {
|
||
_self.calTotal();
|
||
};
|
||
});
|
||
//查询库存
|
||
$('.grid-wrap').on('click', '.ui-icon-cart', function(e){
|
||
e.preventDefault();
|
||
var goodsInfo = $(this).closest('tr').data('goodsInfo');
|
||
if(!goodsInfo){
|
||
parent.Public.tips({type: 2, content: '请先录入商品!'});
|
||
return;
|
||
}
|
||
Business.forSearch(goodsInfo.id, '');
|
||
});
|
||
|
||
//区分组装拆卸单
|
||
if(type !== 'assemble') {
|
||
$('#customer').on('click', '.ui-icon-ellipsis', function(e){
|
||
var skey = $(this).data('skey');
|
||
var lable = $('#customer').prev().text().slice(0, -1);
|
||
var title = '选择' + lable;
|
||
if(lable === '供应商' || lable === '购货单位') {
|
||
var content = 'url:../settings/select_customer?type=10';
|
||
} else {
|
||
var content = 'url:../settings/select_customer';
|
||
}
|
||
_self.customerDialog = $.dialog({
|
||
width: 775,
|
||
height: 510,
|
||
title: title,
|
||
content: content,
|
||
data: {
|
||
skey : skey
|
||
},
|
||
lock: true,
|
||
ok: function(){
|
||
if(typeof this.content.callback === 'function'){
|
||
this.content.callback();
|
||
this.close();
|
||
}
|
||
return false;
|
||
},
|
||
cancel: function(){
|
||
return true;
|
||
}
|
||
});
|
||
});
|
||
|
||
//批量添加
|
||
$('.grid-wrap').on('click', '.goods .ui-icon-ellipsis', function(e){
|
||
var skuMult = false;
|
||
if(!$(this).hasClass('disableSku')){
|
||
skuMult = $(this).data('skuMult') || defaultPage.SYSTEM.enableAssistingProp;
|
||
}
|
||
$.dialog({
|
||
width: 775,
|
||
height: 510,
|
||
title: '选择商品',
|
||
content: 'url:../settings/goods_batch',
|
||
data: {
|
||
skuMult: skuMult,
|
||
skey:_self.skey,
|
||
callback: function(newId, curID, curRow){
|
||
if(curID === '') {
|
||
$("#grid").jqGrid('addRowData', newId, {}, 'last');
|
||
_self.newId = newId + 1;
|
||
};
|
||
setTimeout( function() { $("#grid").jqGrid("editCell", curRow, 2, true) }, 10);
|
||
_self.calTotal();
|
||
}
|
||
},
|
||
lock: true,
|
||
button:[{name: '选中',defClass:'ui_state_highlight fl', callback: function () {
|
||
this.content.callback(type);
|
||
return false;
|
||
}},
|
||
{name: '选中并关闭',defClass:'ui_state_highlight', callback: function () {
|
||
this.content.callback(type);
|
||
this.close();
|
||
return false;
|
||
}},
|
||
{name: '关闭', callback: function () {
|
||
return true;
|
||
}}]
|
||
});
|
||
$(this).data('hasInstance', true);
|
||
});
|
||
|
||
//取消分录编辑状态
|
||
$(document).bind('click.cancel', function(e){
|
||
if(!$(e.target).closest(".ui-jqgrid-bdiv").length > 0 && $(e.target).closest(".pika-single").length == 0 && curRow !== null && curCol !== null){
|
||
$("#grid").jqGrid("saveCell", curRow, curCol);
|
||
curRow = null;
|
||
curCol = null;
|
||
};
|
||
});
|
||
};
|
||
//批量添加批次
|
||
$('.grid-wrap').on('click', '.batch .ui-icon-ellipsis', function(e){
|
||
var _$this = $(this);
|
||
var _$grid = _$this.closest('.ui-jqgrid-btable');
|
||
var _$tr = _$this.closest('tr');
|
||
var goodsInfo = _$tr.data('goodsInfo');
|
||
var storageInfo = _$tr.data('storageInfo');
|
||
var isSingle = _$this.closest('td').hasClass('isSingle');
|
||
if(!goodsInfo){
|
||
defaultPage.Public.tips({type:2, content:"请先选择一个商品!"});
|
||
return;
|
||
}
|
||
$.dialog({
|
||
width: 570,
|
||
height: 500,
|
||
title: '选择商品【'+ goodsInfo.number +' ' + goodsInfo.name +'】的批号',
|
||
content: 'url:../settings/batch_batch',
|
||
data: {
|
||
isSingle: isSingle,
|
||
skey:_self.skey,
|
||
goodsInfo:goodsInfo,
|
||
storageInfo:storageInfo,
|
||
callback: function(batchList){
|
||
if(!batchList)return;
|
||
var rowId = _$tr[0].id;
|
||
var isfirst = true;
|
||
var firstItem = _$grid.jqGrid('getRowData', rowId);
|
||
for (batchId in batchList){
|
||
var batchData = batchList[batchId];
|
||
if(batchId != 'function'){
|
||
if(isfirst){
|
||
storageInfo = {
|
||
id: batchData.locationId,
|
||
name: batchData.locationName
|
||
};
|
||
var editData = $.extend(true, {
|
||
batch: batchData.batch,
|
||
prodDate: batchData.prodDate,
|
||
safeDays: goodsInfo.safeDays,
|
||
validDate: batchData.validDate,
|
||
locationId: batchData.locationId,
|
||
locationName: batchData.locationName,
|
||
outLocationId: batchData.locationId, //调拨单中使用
|
||
outLocationName: batchData.locationName //调拨单中使用
|
||
});
|
||
_$grid.jqGrid('setRowData', rowId, editData);
|
||
_$tr.data('storageInfo',storageInfo);
|
||
var _lastId = rowId;
|
||
isfirst = false;
|
||
}else{
|
||
var nextId = (function(rowId){
|
||
var $nextRow = $('#'+rowId).next();
|
||
if($nextRow.length){
|
||
if($nextRow.data('goodsInfo')){
|
||
return arguments.callee($nextRow[0].id);
|
||
}else{
|
||
return $nextRow[0].id;
|
||
}
|
||
}else{
|
||
var newId = Number(rowId) + 1;
|
||
_$grid.jqGrid('addRowData', newId, 'last');
|
||
_$grid.jqGrid('addRowData', newId + 1, {}, 'last');
|
||
_self.newId = newId + 2;
|
||
return newId;
|
||
}
|
||
})(rowId);
|
||
firstItem.locationId = batchData.locationId;
|
||
firstItem.locationName = batchData.locationName;
|
||
firstItem.outLocationId = batchData.locationId;//调拨单中使用
|
||
firstItem.outLocationName = batchData.locationName;//调拨单中使用
|
||
var _rowData = $.extend(true, goodsInfo, firstItem );
|
||
$.extend(true, _rowData, {
|
||
batch: batchData.batch,
|
||
prodDate: batchData.prodDate,
|
||
safeDays: goodsInfo.safeDays,
|
||
validDate: batchData.validDate
|
||
});
|
||
_$grid.jqGrid('setRowData', nextId, _rowData);
|
||
$('#'+nextId).data('goodsInfo',_rowData)
|
||
.data('storageInfo', {
|
||
id: _rowData.locationId,
|
||
name: _rowData.locationName
|
||
}).data('unitInfo',{
|
||
unitId: _rowData.unitId,
|
||
name: _rowData.unitName
|
||
});
|
||
_lastId = nextId;
|
||
}
|
||
}
|
||
}
|
||
if(isSingle){
|
||
//_$grid.jqGrid('editCellByColName', Number(_lastId) + 1, 'goods');
|
||
}else{
|
||
_$grid.jqGrid('editCellByColName', Number(_lastId) + 1, 'goods');
|
||
_self.calTotal && _self.calTotal();
|
||
}
|
||
}
|
||
},
|
||
lock: true,
|
||
button:[{name: '选中',defClass:'ui_state_highlight fl', callback: function () {
|
||
this.content.callback(type);
|
||
return false;
|
||
}},
|
||
{name: '选中并关闭',defClass:'ui_state_highlight', callback: function () {
|
||
this.content.callback(type);
|
||
this.close();
|
||
return false;
|
||
}},
|
||
{name: '关闭', callback: function () {
|
||
return true;
|
||
}}]
|
||
});
|
||
$(this).data('hasInstance', true);
|
||
});
|
||
initStorage();
|
||
|
||
function initStorage() {
|
||
var data = []//获取启用状态的;
|
||
for (var i = 0; i < defaultPage.SYSTEM.storageInfo.length; i++) {
|
||
var g = defaultPage.SYSTEM.storageInfo[i];
|
||
if(!g['delete']){
|
||
data.push(g);
|
||
}
|
||
};
|
||
var list = '<ul>';
|
||
for(var i = 0, len = data.length; i < data.length; i++) {
|
||
list += '<li data-id="' + data[i].id + '" data-name="' + data[i].name + '" >' + data[i].locationNo + ' ' +data[i].name + '</li>';
|
||
};
|
||
list += '</ul>';
|
||
$("#storageBox").html(list);
|
||
};
|
||
|
||
if(type === 'transfers') {
|
||
return;
|
||
};
|
||
|
||
$("#batchStorage").powerFloat({
|
||
eventType: "click",
|
||
hoverHold: false,
|
||
reverseSharp: true,
|
||
target: function(){
|
||
if(curRow !== null && curCol !== null){
|
||
$("#grid").jqGrid("saveCell", curRow, curCol);
|
||
curRow = null;
|
||
curCol = null;
|
||
};
|
||
return $("#storageBox");
|
||
}
|
||
});
|
||
|
||
$('.wrapper').on('click', '#storageBox li', function(e){
|
||
var stoId = $(this).data('id');
|
||
var stoName = $(this).data('name');
|
||
var ids = $("#grid").jqGrid('getDataIDs');
|
||
var batName = 'locationName';
|
||
var batInfo = 'storageInfo';
|
||
for(var i = 0, len = ids.length; i < len; i++){
|
||
var id = ids[i], itemData;
|
||
var row = $("#grid").jqGrid('getRowData',id);
|
||
var $_id = $('#' + id);
|
||
if(row.goods === '' || $_id.data('goodsInfo') === undefined) {
|
||
continue; //跳过无效分录
|
||
};
|
||
var setData = {};
|
||
setData[batName] = stoName;
|
||
$("#grid").jqGrid('setRowData', id, setData);
|
||
$('#' + id).data(batInfo, { id: stoId, name: stoName });
|
||
};
|
||
$.powerFloat.hide();
|
||
});
|
||
|
||
};
|
||
|
||
Business.filterCustomer = function(){
|
||
Business.customerCombo($('#customerAuto'), {
|
||
width: '',
|
||
formatText: function(data){
|
||
return data.number + ' ' + data.name;
|
||
},
|
||
trigger: false,
|
||
forceSelection: false,
|
||
noDataText: '',
|
||
extraListHtmlCls: '',
|
||
extraListHtml: '',
|
||
callback: {
|
||
onChange: function(data){
|
||
if(data) {
|
||
//this.input.data('ids', data.id);
|
||
this.input.val(data.number);
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
//客户
|
||
$('#filter-customer .ui-icon-ellipsis').on('click', function(){
|
||
var $input = $(this).prev('input');
|
||
$.dialog({
|
||
width: 570,
|
||
height: 500,
|
||
title: '选择客户',
|
||
content: 'url:../settings/customer_batch',
|
||
data:{isDelete:2},
|
||
lock: true,
|
||
ok: function(){
|
||
Business.setFilterData(this.content, $input);
|
||
},
|
||
cancel: function(){
|
||
return true;
|
||
}
|
||
});
|
||
});
|
||
};
|
||
|
||
Business.filterSupplier = function(){
|
||
Business.supplierCombo($('#supplierAuto'), {
|
||
width: '',
|
||
formatText: function(data){
|
||
return data.number + ' ' + data.name;
|
||
},
|
||
trigger: false,
|
||
forceSelection: false,
|
||
noDataText: '',
|
||
extraListHtmlCls: '',
|
||
extraListHtml: '',
|
||
callback: {
|
||
onChange: function(data){
|
||
if(data) {
|
||
//this.input.data('ids', data.id);
|
||
this.input.val(data.number);
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
//客户
|
||
$('#filter-customer .ui-icon-ellipsis').on('click', function(){
|
||
var $input = $(this).prev('input');
|
||
$.dialog({
|
||
width: 570,
|
||
height: 500,
|
||
title: '选择供应商',
|
||
content: 'url:../settings/supplier_batch',
|
||
data:{isDelete:2},
|
||
lock: true,
|
||
ok: function(){
|
||
Business.setFilterData(this.content, $input);
|
||
},
|
||
cancel: function(){
|
||
return true;
|
||
}
|
||
});
|
||
});
|
||
};
|
||
//结算账户查询区域下拉框初始化
|
||
Business.filterSettlementAccount = function(){
|
||
Business.settlementAccountCombo($('#settlementAccountAuto'), {
|
||
width: '',
|
||
formatText: function(data){
|
||
return data.number + ' ' + data.name;
|
||
},
|
||
trigger: false,
|
||
forceSelection: false,
|
||
noDataText: '',
|
||
extraListHtmlCls: '',
|
||
extraListHtml: '',
|
||
callback: {
|
||
onChange: function(data){
|
||
if(data) {
|
||
//this.input.data('ids', data.id);
|
||
this.input.val(data.number);
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
//结算账户
|
||
$('#filter-settlementAccount .ui-icon-ellipsis').on('click', function(){
|
||
var $input = $(this).prev('input');
|
||
$.dialog({
|
||
width: 470,
|
||
height: 500,
|
||
title: '选择结算账户',
|
||
content: 'url:../settings/settlementAccount_batch',
|
||
data:{isDelete:2},
|
||
lock: true,
|
||
ok: function(){
|
||
Business.setFilterData(this.content, $input);
|
||
},
|
||
cancel: function(){
|
||
return true;
|
||
}
|
||
});
|
||
});
|
||
};
|
||
|
||
Business.filterGoods = function(){
|
||
Business.goodsCombo($('#goodsAuto'), {
|
||
forceSelection: false,
|
||
noDataText: '',
|
||
extraListHtmlCls: '',
|
||
extraListHtml: '',
|
||
forceSelection: false,
|
||
callback: {
|
||
onChange: function(data){
|
||
if(data) {
|
||
this.input.data('ids', data.number);
|
||
this.input.val(data.number);
|
||
}
|
||
}
|
||
}
|
||
});
|
||
//商品
|
||
$('#filter-goods .ui-icon-ellipsis').on('click', function(){
|
||
var $input = $(this).prev('input');
|
||
$.dialog({
|
||
width: 775,
|
||
height: 500,
|
||
title: '选择商品',
|
||
content: 'url:../settings/goods_batch',
|
||
data:{
|
||
isDelete:2//获取全部商品要传2。。。
|
||
},
|
||
lock: true,
|
||
ok: function(){
|
||
Business.setFilterGoods(this.content, $input);
|
||
},
|
||
cancel: function(){
|
||
return true;
|
||
}
|
||
});
|
||
});
|
||
};
|
||
Business.filterStorage = function(){
|
||
var defaultPage = Public.getDefaultPage();
|
||
Business.storageCombo($('#storageAuto'), {
|
||
data: function(){
|
||
return defaultPage.SYSTEM.storageInfo;
|
||
},
|
||
formatText: function(data){
|
||
return data.locationNo + ' ' + data.name;
|
||
},
|
||
editable: true,
|
||
defaultSelected: -1,
|
||
forceSelection: false,
|
||
callback: {
|
||
onChange: function(data){
|
||
if(data) {
|
||
//this.input.data('ids', data.id);
|
||
this.input.val(data.locationNo);
|
||
}
|
||
}
|
||
}
|
||
});
|
||
//仓库
|
||
$('#filter-storage .ui-icon-ellipsis').on('click', function(){
|
||
var $input = $(this).prev('input');
|
||
$.dialog({
|
||
width: 510,
|
||
height: 500,
|
||
title: '选择仓库',
|
||
content: 'url:../settings/storage_batch',
|
||
data:{isDelete:2},
|
||
lock: true,
|
||
ok: function(){
|
||
Business.setFilterData(this.content, $input);
|
||
},
|
||
cancel: function(){
|
||
return true;
|
||
}
|
||
});
|
||
});
|
||
};
|
||
Business.filterSaler = function(){
|
||
Business.salesCombo($('#salerAuto'), {
|
||
defaultSelected: -1,
|
||
editable: true,
|
||
extraListHtml: '',
|
||
width:0,
|
||
emptyOptions:false,
|
||
forceSelection: false,
|
||
formatText: function(row){
|
||
return row.number + ' ' + row.name;
|
||
},
|
||
callback: {
|
||
onChange: function(data){
|
||
if(data) {
|
||
//this.input.data('ids', data.id);
|
||
this.input.val(data.number);
|
||
}
|
||
}
|
||
},
|
||
trigger:false
|
||
});
|
||
//销售员
|
||
$('#filter-saler .ui-icon-ellipsis').on('click', function(){
|
||
var $input = $(this).prev('input');
|
||
$.dialog({
|
||
width: 510,
|
||
height: 500,
|
||
title: '选择销售员',
|
||
content: 'url:../settings/saler_batch',
|
||
data:{isDelete:2},
|
||
lock: true,
|
||
ok: function(){
|
||
Business.setFilterData(this.content, $input);
|
||
},
|
||
cancel: function(){
|
||
return true;
|
||
}
|
||
});
|
||
});
|
||
};
|
||
|
||
//将弹窗中返回的数据记录到相应的input中
|
||
Business.setFilterData = function(dialogCtn, $input){
|
||
var numbers = [];
|
||
var ids = [];
|
||
for(rowid in dialogCtn.addList){
|
||
var row = dialogCtn.addList[rowid];
|
||
ids.push(rowid);
|
||
numbers.push(row.number || row.locationNo || row.serNum);
|
||
}
|
||
$input.data('ids', ids.join(',')).val(numbers.join(','));
|
||
};
|
||
|
||
Business.setFilterGoods = function(dialogCtn, $input){
|
||
var numbers = [];
|
||
var ids = [];
|
||
for(rowid in dialogCtn.addList){
|
||
var row = dialogCtn.addList[rowid];
|
||
ids.push(rowid);
|
||
numbers.push(row.number || row.locationNo);
|
||
}
|
||
$input.data('ids', ids.join(',')).val(numbers.join(','));
|
||
};
|
||
|
||
Business.moreFilterEvent = function(){
|
||
$('#conditions-trigger').on('click', function(e){
|
||
e.preventDefault();
|
||
if (!$(this).hasClass('conditions-expand')) {
|
||
$('#more-conditions').stop().slideDown(200, function(){
|
||
$('#conditions-trigger').addClass('conditions-expand').html('收起更多<b></b>');
|
||
$('#filter-reset').css('display', 'inline');
|
||
});
|
||
} else {
|
||
$('#more-conditions').stop().slideUp(200, function(){
|
||
$('#conditions-trigger').removeClass('conditions-expand').html('更多条件<b></b>');
|
||
$('#filter-reset').css('display', 'none');
|
||
});
|
||
};
|
||
});
|
||
};
|
||
|
||
Business.gridEvent = function(){
|
||
$('.grid-wrap').on('mouseenter', '.list tbody tr', function(e){
|
||
$(this).addClass('tr-hover');
|
||
if($_curTr) {
|
||
$_curTr.removeClass('tr-hover');
|
||
$_curTr = null;
|
||
}
|
||
}).on('mouseleave', '.list tbody tr', function(e){
|
||
$(this).removeClass('tr-hover');
|
||
});
|
||
};
|
||
|
||
//判断:当前元素是否是被筛选元素的子元素
|
||
$.fn.isChildOf = function(b){
|
||
return (this.parents(b).length > 0);
|
||
};
|
||
|
||
//判断:当前元素是否是被筛选元素的子元素或者本身
|
||
$.fn.isChildAndSelfOf = function(b){
|
||
return (this.closest(b).length > 0);
|
||
};
|
||
|
||
//数字输入框
|
||
$.fn.digital = function() {
|
||
this.each(function(){
|
||
$(this).keyup(function() {
|
||
this.value = this.value.replace(/\D/g,'');
|
||
})
|
||
});
|
||
};
|
||
|
||
/**
|
||
1. 设置cookie的值,把name变量的值设为value
|
||
example $.cookie(’name’, ‘value’);
|
||
2.新建一个cookie 包括有效期 路径 域名等
|
||
example $.cookie(’name’, ‘value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});
|
||
3.新建cookie
|
||
example $.cookie(’name’, ‘value’);
|
||
4.删除一个cookie
|
||
example $.cookie(’name’, null);
|
||
5.取一个cookie(name)值给myvar
|
||
var account= $.cookie('name');
|
||
**/
|
||
$.cookie = function(name, value, options) {
|
||
if (typeof value != 'undefined') { // name and value given, set cookie
|
||
options = options || {};
|
||
if (value === null) {
|
||
value = '';
|
||
options.expires = -1;
|
||
}
|
||
var expires = '';
|
||
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
|
||
var date;
|
||
if (typeof options.expires == 'number') {
|
||
date = new Date();
|
||
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
|
||
} else {
|
||
date = options.expires;
|
||
}
|
||
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
|
||
}
|
||
var path = options.path ? '; path=' + options.path : '';
|
||
var domain = options.domain ? '; domain=' + options.domain : '';
|
||
var secure = options.secure ? '; secure' : '';
|
||
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
|
||
} else { // only name given, get cookie
|
||
var cookieValue = null;
|
||
if (document.cookie && document.cookie != '') {
|
||
var cookies = document.cookie.split(';');
|
||
for (var i = 0; i < cookies.length; i++) {
|
||
var cookie = jQuery.trim(cookies[i]);
|
||
// Does this cookie string begin with the name we want?
|
||
if (cookie.substring(0, name.length + 1) == (name + '=')) {
|
||
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
return cookieValue;
|
||
}
|
||
};
|
||
Public.print = function (opt){
|
||
var voucherIds = opt.$grid.jqGrid('getGridParam','selarrrow').join();
|
||
var pdfUrl = opt.pdf;
|
||
var sidx = opt.$grid.jqGrid('getGridParam','sortname');
|
||
var sord = opt.$grid.jqGrid('getGridParam','sortorder');
|
||
var billType = opt.billType;
|
||
var data = {
|
||
sidx: sidx,
|
||
sord: sord,
|
||
op: 2
|
||
};
|
||
if(opt.filterConditions){
|
||
data = $.extend(true, data, opt.filterConditions);
|
||
};
|
||
if(voucherIds) {
|
||
data.id = voucherIds;
|
||
};
|
||
$.dialog({
|
||
title: opt.title,
|
||
content : 'url:../prints/print_settings_voucher',
|
||
data: {taodaData: data, pdfData: data, pdfUrl: pdfUrl, billType:billType ,opt:opt},
|
||
width: 520,
|
||
height: 400,
|
||
min: false,
|
||
max: false,
|
||
lock: true,
|
||
ok: function(){
|
||
this.content.doPrint();
|
||
return false;
|
||
},
|
||
okVal: '打印',
|
||
cancel: true
|
||
});
|
||
};
|
||
//生成树
|
||
Public.zTree = {
|
||
zTree: {},
|
||
opts:{
|
||
showRoot:true,
|
||
defaultClass:'',
|
||
disExpandAll:false,//showRoot为true时无效
|
||
callback:'',
|
||
rootTxt:'全部'
|
||
},
|
||
setting: {
|
||
view: {
|
||
dblClickExpand: false,
|
||
showLine: true,
|
||
selectedMulti: false
|
||
},
|
||
data: {
|
||
simpleData: {
|
||
enable: true,
|
||
idKey: "id",
|
||
pIdKey: "parentId",
|
||
rootPId: ""
|
||
}
|
||
},
|
||
callback: {
|
||
//beforeClick: function(treeId, treeNode) {}
|
||
}
|
||
},
|
||
_getTemplate: function(opts) {
|
||
this.id = 'tree'+parseInt(Math.random()*10000);
|
||
var _defaultClass = "ztree";
|
||
if (opts) {
|
||
if(opts.defaultClass){
|
||
_defaultClass += ' ' + opts.defaultClass;
|
||
}
|
||
}
|
||
return '<ul id="'+this.id+'" class="' + _defaultClass + '"></ul>';
|
||
},
|
||
init: function($target, opts, setting ,callback) {
|
||
if ($target.length === 0) {
|
||
return;
|
||
}
|
||
var self = this;
|
||
self.opts = $.extend(true, self.opts, opts);
|
||
self.container = $($target);
|
||
self.obj = $(self._getTemplate(opts));
|
||
self.container.append(self.obj);
|
||
setting = $.extend(true, self.setting, setting);
|
||
Public.ajaxPost(opts.url || '../basedata/assist?action=list&typeNumber=trade&isDelete=2', {}, function(data) {
|
||
if (data.status === 200 && data.data) {
|
||
self._callback(data.data.items);
|
||
} else {
|
||
Public.tips({
|
||
type: 2,
|
||
content: "加载失败!"
|
||
});
|
||
}
|
||
});
|
||
return self;
|
||
},
|
||
_callback: function(data){
|
||
var self = this;
|
||
var callback = self.opts.callback;
|
||
if(self.opts.showRoot){
|
||
data.unshift({name:self.opts.rootTxt,id:0});
|
||
self.obj.addClass('showRoot');
|
||
}
|
||
if(!data.length) return;
|
||
self.zTree = $.fn.zTree.init(self.obj, self.setting, data);
|
||
//self.zTree.selectNode(self.zTree.getNodeByParam("id", 101));
|
||
self.zTree.expandAll(!self.opts.disExpandAll);
|
||
if(callback && typeof callback === 'function'){
|
||
callback(self, data);
|
||
}
|
||
}
|
||
};
|
||
//分类下拉框
|
||
Public.categoryTree = function($obj, opts) {
|
||
if ($obj.length === 0) {
|
||
return;
|
||
}
|
||
opts = opts ? opts : opts = {};
|
||
var opts = $.extend(true, {
|
||
inputWidth:'145',
|
||
width:'',//'auto' or int
|
||
height:'240',//'auto' or int
|
||
trigger:true,
|
||
defaultClass:'ztreeCombo',
|
||
disExpandAll:false,//展开全部
|
||
defaultSelectValue:0,
|
||
showRoot:true,//显示root选择
|
||
rootTxt:'全部',
|
||
treeSettings : {
|
||
callback:{
|
||
beforeClick: function(treeId, treeNode) {
|
||
if(_Combo.obj){
|
||
_Combo.obj.val(treeNode.name);
|
||
_Combo.obj.data('id', treeNode.id);
|
||
_Combo.hideTree();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}, opts);
|
||
var _Combo = {
|
||
container:$('<span class="ui-tree-wrap" style="width:'+opts.inputWidth+'px"></span>'),
|
||
obj : $('<input type="text" class="input-txt" style="width:'+(opts.inputWidth-26)+'px" id="'+$obj.attr('id')+'" autocomplete="off" readonly value="'+($obj.val()||$obj.text())+'">'),
|
||
trigger : $('<span class="trigger"></span>'),
|
||
data:{},
|
||
init : function(){
|
||
var _parent = $obj.parent();
|
||
var _this = this;
|
||
$obj.remove();
|
||
this.obj.appendTo(this.container);
|
||
if(opts.trigger){
|
||
this.container.append(this.trigger);
|
||
}
|
||
this.container.appendTo(_parent);
|
||
opts.callback = function(publicTree ,data){
|
||
_this.zTree = publicTree;
|
||
//_this.data = data;
|
||
if(publicTree){
|
||
publicTree.obj.css({
|
||
'max-height' : opts.height
|
||
});
|
||
for ( var i = 0, len = data.length; i < len; i++){
|
||
_this.data[data[i].id] = data[i];
|
||
};
|
||
if(opts.defaultSelectValue !== ''){
|
||
_this.selectByValue(opts.defaultSelectValue);
|
||
};
|
||
_this._eventInit();
|
||
}
|
||
};
|
||
this.zTree = Public.zTree.init($('body'), opts , opts.treeSettings);
|
||
return this;
|
||
},
|
||
showTree:function(){
|
||
if(!this.zTree)return;
|
||
if(this.zTree){
|
||
var offset = this.obj.offset();
|
||
var topDiff = this.obj.outerHeight();
|
||
var w = opts.width? opts.width : this.obj.width();
|
||
var _o = this.zTree.obj.hide();
|
||
_o.css({width:w, top:offset.top + topDiff,left:offset.left-1});
|
||
}
|
||
var _o = this.zTree.obj.show();
|
||
this.isShow = true;
|
||
this.container.addClass('ui-tree-active');
|
||
},
|
||
hideTree:function(){
|
||
if(!this.zTree)return;
|
||
var _o = this.zTree.obj.hide();
|
||
this.isShow = false;
|
||
this.container.removeClass('ui-tree-active');
|
||
},
|
||
_eventInit: function(){
|
||
var _this = this;
|
||
if(opts.trigger){
|
||
_this.trigger.on('click',function(e){
|
||
e.stopPropagation();
|
||
if(_this.zTree && !_this.isShow){
|
||
_this.showTree();
|
||
}else{
|
||
_this.hideTree();
|
||
}
|
||
});
|
||
};
|
||
_this.obj.on('click',function(e){
|
||
e.stopPropagation();
|
||
if(_this.zTree && !_this.isShow){
|
||
_this.showTree();
|
||
}else{
|
||
_this.hideTree();
|
||
}
|
||
});
|
||
if(_this.zTree){
|
||
_this.zTree.obj.on('click',function(e){
|
||
e.stopPropagation();
|
||
});
|
||
}
|
||
$(document).click(function(){
|
||
_this.hideTree();
|
||
});
|
||
},
|
||
getValue:function(){
|
||
var id = this.obj.data('id') || '';
|
||
if(!id){
|
||
var text = this.obj.val();
|
||
if(this.data){
|
||
for(var item in this.data){
|
||
if(this.data[item].name === text){
|
||
id = this.data[item].id;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return id;
|
||
},
|
||
getText:function(){
|
||
if(this.obj.data('id'))
|
||
return this.obj.val();
|
||
return '';
|
||
},
|
||
selectByValue:function(value){
|
||
if(value !== ''){
|
||
if(this.data){
|
||
this.obj.data('id', value);
|
||
this.obj.val(this.data[value].name);
|
||
}
|
||
}
|
||
return this;
|
||
}
|
||
};
|
||
return _Combo.init();
|
||
};
|
||
/*
|
||
* 分类新增弹窗
|
||
* 不支持多级结构(树)
|
||
* type string 分类类型
|
||
* parentWin object 父窗口对象,决定弹窗的覆盖范围,默认当前窗口的parent
|
||
*/
|
||
Public.categoryPop = function(type,targetWin,callback){
|
||
var defaultPage = Public.getDefaultPage();
|
||
var self = {
|
||
init:function(){
|
||
var myParent = targetWin || parent;
|
||
var showParentCategory = false;
|
||
var content = $(['<form id="manage-form" action="" style="width: 282px;">',
|
||
'<ul class="mod-form-rows manage-wrap" id="manager">',
|
||
'<li class="row-item">',
|
||
'<div class="label-wrap"><label for="category">类别:</label></div>',
|
||
'<div class="ctn-wrap"><input type="text" value="" class="ui-input" name="category" id="category" style="width:190px;"></div>',
|
||
'</li>',
|
||
'</ul>',
|
||
'</form>'].join(''));
|
||
var height = 90;
|
||
var dialog = myParent.$.dialog({
|
||
title : '新增类别',
|
||
content : content,
|
||
//data: data,
|
||
width : 400,
|
||
height : height,
|
||
max : false,
|
||
min : false,
|
||
cache : false,
|
||
lock: true,
|
||
okVal:'确定',
|
||
ok:function(){
|
||
var category = $.trim(content.find('#category').val());
|
||
if(!category){
|
||
defaultPage.Public.tips({content : '请输入类别名称!'});
|
||
category.focus();
|
||
return false;
|
||
}
|
||
var oper = 'add';
|
||
var params = { name: category ,typeNumber: type};
|
||
var msg = '新增类别';
|
||
Public.ajaxPost('../basedata/assist/' + oper, params, function(data){
|
||
if (data.status == 200) {
|
||
defaultPage.Public.tips({content : msg + '成功!'});
|
||
defaultPage.SYSTEM.categoryInfo[type].push(data.data);
|
||
if(typeof callback ==='function'){
|
||
callback(data.data,dialog);
|
||
}
|
||
} else {
|
||
defaultPage.Public.tips({type:1, content : msg + '失败!' + data.msg});
|
||
}
|
||
});
|
||
return false;
|
||
},
|
||
cancelVal:'取消',
|
||
cancel:function(){
|
||
return true;
|
||
}
|
||
});
|
||
}
|
||
};
|
||
self.init();
|
||
};
|
||
/*
|
||
* 兼容IE8 数组对象不支持indexOf()
|
||
* create by guoliang_zou ,20140812
|
||
*/
|
||
if (!Array.prototype.indexOf)
|
||
{
|
||
Array.prototype.indexOf = function(elt /*, from*/)
|
||
{
|
||
var len = this.length >>> 0;
|
||
var from = Number(arguments[1]) || 0;
|
||
from = (from < 0)
|
||
? Math.ceil(from)
|
||
: Math.floor(from);
|
||
if (from < 0)
|
||
from += len;
|
||
for (; from < len; from++)
|
||
{
|
||
if (from in this &&
|
||
this[from] === elt)
|
||
return from;
|
||
}
|
||
return -1;
|
||
};
|
||
}
|
||
$(function(){
|
||
//菜单按钮
|
||
$('.ui-btn-menu .menu-btn').on('mouseenter.menuEvent',function(e){
|
||
if($(this).hasClass("ui-btn-dis")) {
|
||
return false;
|
||
}
|
||
$(this).parent().addClass('ui-btn-menu-cur');
|
||
$(this).blur();
|
||
e.preventDefault();
|
||
});
|
||
|
||
$(document).on('click.menu',function(e){
|
||
var target = e.target || e.srcElement;
|
||
$('.ui-btn-menu').each(function(){
|
||
var menu = $(this);
|
||
if($(target).closest(menu).length == 0 && $('.con',menu).is(':visible')){
|
||
menu.removeClass('ui-btn-menu-cur');
|
||
}
|
||
})
|
||
});
|
||
|
||
/**
|
||
* 页面配置模块
|
||
* @param {string} id 页面ID ,标识
|
||
* @return {[type]} [description]
|
||
*/
|
||
Public.mod_PageConfig = (function(mod) {
|
||
var inited = false,//模块启动开关
|
||
defaultPage = Public.getDefaultPage(),
|
||
SYSTEM = defaultPage.SYSTEM,
|
||
conf;//当前页配置
|
||
|
||
mod.init = function(id){
|
||
inited = true;
|
||
mod.pageId = id;
|
||
SYSTEM.pageConfigInfo = SYSTEM.pageConfigInfo || {};
|
||
SYSTEM.pageConfigInfo[''+ id] = SYSTEM.pageConfigInfo[''+ id] || {};
|
||
conf = SYSTEM.pageConfigInfo[''+ id];
|
||
_eventReg();//页面事件注册
|
||
mod.gridReg = _gridReg;
|
||
mod.conf = conf;
|
||
mod.config = _config;
|
||
mod.updatePageConfig = _updatePageConfig;
|
||
mod.setGridWidthByIndex = _setGridWidthByIndex;
|
||
return mod;
|
||
};
|
||
function _config(){
|
||
var content = [
|
||
'<div class="content">',
|
||
'<ul class="c_wrapper" id="c_wrapper">',
|
||
'</ul>',
|
||
'</div>'
|
||
];
|
||
$.dialog({
|
||
title: '页面配置',
|
||
content: content.join(''),
|
||
width: 500,
|
||
height: 300,
|
||
lock:true,
|
||
init: function (){
|
||
var $_tab = $('<ul class="ui-tab" id="c_tab" style="border-bottom: 1px solid #EBEBEB; position: relative; top: -10px; left: -10px; margin-right: -20px;"></ul>');
|
||
var $_wrapper = $('#c_wrapper');
|
||
for(var gridId in conf.grids){
|
||
var conf_grid = conf.grids[gridId] || {};
|
||
if(typeof conf.grids[gridId] != 'function' && conf_grid.isReg){
|
||
var $grid = $('#' + gridId);
|
||
var configGridId = 'c_'+gridId;
|
||
var _caption = conf_grid.caption ? '('+conf_grid.caption+')' : '';
|
||
$_tab.append('<li style="border-top: none; border-bottom: none; border-color: #EBEBEB;">表格'+_caption+'</li>');
|
||
$_wrapper.append([
|
||
'<li class="grid-wrap dn">',
|
||
'<table id="'+configGridId+'">',
|
||
'</table>',
|
||
'</li>'
|
||
].join(''));
|
||
var dataArr = conf_grid.colModel;//缓存里的配置信息
|
||
var _dataArr=[];
|
||
for (var i = 0; i < dataArr.length; i++) {
|
||
var col = dataArr[i];
|
||
if(!col)continue;
|
||
if($.trim(col['label']) && !col.defhidden && !col.disConfigured){
|
||
_dataArr.push(col);
|
||
}
|
||
};
|
||
var $configGrid = $('#'+configGridId);
|
||
$configGrid.jqGrid({
|
||
data:_dataArr,
|
||
datatype: "clientSide",
|
||
width:480,
|
||
// autowidth:true,
|
||
height: 290,
|
||
rownumbers: true,
|
||
gridview: true,
|
||
onselectrow: false,
|
||
idPrefix: 'c_gridId_', //表格id前缀
|
||
colModel: [
|
||
{name:'name', label:'列名' ,hidden: true},
|
||
{name:'defLabel', label:'列名称' , width:100},
|
||
{name:'label', label:'列名称' , width:100 ,hidden:true},
|
||
{name:'aname', label:'别名' , width:100 , editable:true ,formatter:function(val ,opts, row){
|
||
if(!val){
|
||
val = row['label'];
|
||
}
|
||
return val;
|
||
}},
|
||
{name:'hidden', label:'是否显示' , width:50, align:'center', formatter:function(val ,opts, row){
|
||
var text = val == true ? '已隐藏' : '已显示';
|
||
var cls = val == true ? 'ui-label-default' : 'ui-label-success';
|
||
return '<span class="set-status ui-label ' + cls + '" data-delete="' + val + '" data-id="' + row.id + '">' + text + '</span>';
|
||
}}
|
||
],
|
||
shrinkToFit: true,
|
||
forceFit: true,
|
||
cellEdit: true,
|
||
cellsubmit: 'clientArray',
|
||
afterSaveCell: function(rowid,name,val,iRow,iCol) {
|
||
switch(name){
|
||
case 'aname':
|
||
if(!$.trim(val)) {
|
||
defaultPage.Public.tips({type:2 , content:'请输入别名!'});
|
||
return;
|
||
}else{
|
||
var rowData = $configGrid.jqGrid('getRowData',rowid);
|
||
$grid.jqGrid('setColProp',rowData['name'], { label : rowData.aname });
|
||
$configGrid.jqGrid('setRowData',rowid,{ label : rowData.aname });
|
||
var $th = $('#jqgh_'+ $grid[0].id + '_' + rowData['name']);
|
||
$th.html($th.html().replace(rowData['label'], rowData.aname));
|
||
_updatePageConfig($grid[0].id, ['label' ,rowData.name, rowData['aname']]);
|
||
return val;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
});
|
||
(function($grid, $configGrid){
|
||
$configGrid.on('click', '.set-status', function(event) {
|
||
event.preventDefault();
|
||
/* Act on the event */
|
||
var $this = $(this);
|
||
var id = $this.closest('tr')[0].id;
|
||
var rowData = $configGrid.jqGrid('getRowData',id);
|
||
if($this.hasClass('ui-label-success')){
|
||
_updatePageConfig($grid[0].id,['hidden',rowData.name,true]);
|
||
$configGrid.jqGrid('setCell', id, 'hidden', true);
|
||
$grid.jqGrid('hideCol', rowData['name']);
|
||
}else{
|
||
_updatePageConfig($grid[0].id,['hidden',rowData.name,false]);
|
||
$configGrid.jqGrid('setCell', id, 'hidden', false);
|
||
$grid.jqGrid('showCol', rowData['name']);
|
||
}
|
||
});
|
||
})($grid, $configGrid);
|
||
}
|
||
};
|
||
$('.ui_content').prepend($_tab);
|
||
$_tab.on('click', 'li', function(event) {
|
||
event.preventDefault();
|
||
/* Act on the event */
|
||
var $this = $(this);
|
||
var _index = $this.index();
|
||
$this.addClass('cur').siblings('.cur').removeClass('cur');
|
||
$_wrapper.find('li:eq('+_index+')').show().siblings().hide();
|
||
});
|
||
//第一个tab选中
|
||
$_tab.find('li:eq(0)').addClass('cur');
|
||
$_wrapper.find('li:eq(0)').show();
|
||
},
|
||
button:[
|
||
{name: '恢复默认设置',defClass:'ui_state_highlight fl', callback: function () {
|
||
var thisPop = this;
|
||
_cancelGridEdit();
|
||
$.dialog.confirm('该操作会刷新当前页签,是否继续?', function(){
|
||
SYSTEM.pageConfigInfo[''+ mod.pageId] = null;
|
||
_deleteConfig();
|
||
$(window).unbind('unload');
|
||
location.reload();
|
||
thisPop.close();
|
||
})
|
||
return false;
|
||
}},
|
||
{name: '完成', callback: function () {
|
||
_cancelGridEdit();
|
||
return true;
|
||
}}
|
||
]
|
||
});
|
||
};
|
||
function _cancelGridEdit(){
|
||
for(var gridId in conf.grids){
|
||
var conf_grid = conf.grids[gridId] || {};
|
||
if(typeof conf.grids[gridId] != 'function' && conf_grid.isReg){
|
||
var $grid = $('#' + gridId);
|
||
var configGridId = 'c_'+gridId;
|
||
var $confGrid = $('#'+configGridId);
|
||
if($confGrid[0].p.savedRow.length != 0){
|
||
$confGrid.jqGrid("saveCell", $confGrid[0].p.savedRow[0].id, $confGrid[0].p.savedRow[0].ic);
|
||
}
|
||
}
|
||
}
|
||
};
|
||
function _updatePageConfig(gridId, prop){
|
||
//为了区分用户修改,必须精确到每个字段的每个属性 prop = [propName, colName, propValue];
|
||
if(!conf.grids || !conf.grids[gridId] || !conf.grids[gridId].isReg || !prop || prop.length != 3){
|
||
return ;
|
||
}
|
||
prop = {
|
||
propName : prop[0],
|
||
colName : prop[1],
|
||
propValue : prop[2]
|
||
}
|
||
var g = conf.grids[gridId];
|
||
for (var i = 0; i < g.colModel.length; i++) {
|
||
var c1 = g.colModel[i];
|
||
if(c1.name == prop.colName){
|
||
c1[prop.propName] = prop.propValue;
|
||
}
|
||
};
|
||
conf.curTime = Date.parse(new Date());
|
||
};
|
||
function _gridReg(gridId , defColModel, caption){//表格一定要注册默认配置信息
|
||
if(!defColModel){
|
||
return;
|
||
}
|
||
conf.grids = conf.grids || {};
|
||
conf.grids[gridId] = conf.grids[gridId] || {};
|
||
var g = conf.grids[gridId];
|
||
g.caption = caption;
|
||
g.defColModel = defColModel;//保存默认配置,这里会保存到服务器,暂时不屏蔽
|
||
g.colModel = g.colModel || defColModel;
|
||
//将用户配置合并到默认配置里面去,使得默认配置可以扩展新的字段
|
||
for (var i = 0; i < defColModel.length; i++) {
|
||
if(!defColModel[i]) continue;
|
||
defColModel[i].defLabel = defColModel[i]['label'];
|
||
defColModel[i].defhidden = defColModel[i].hidden;
|
||
c1 = defColModel[i];
|
||
if(g.colModel){
|
||
for (var j = 0; j < g.colModel.length; j++) {
|
||
var c = g.colModel[j];
|
||
var c2 = {
|
||
name: c[0] || c['name']
|
||
,label: c[1] || c['label']
|
||
,hidden: c.defhidden ? c1.hidden : (c[2] || c['hidden']) //c有defhidden 就是从缓存取的,因为数据库没有存def配置,处理因为缓存导致刷新子页面而把新放开/权限的字段给默认隐藏了
|
||
,width: c[3] || c['width']
|
||
};
|
||
if(c1['name'] === c2['name']){
|
||
// c1 = $.extend(true, c1, c2); //这里不能用这个方法,如果拷贝了里面的方法会造成页面执行的方法不一样
|
||
_modelClone(c1 , c2);
|
||
}
|
||
};
|
||
}
|
||
};
|
||
g.colModel = defColModel;//用户列配置扩展
|
||
g.isReg = true;
|
||
};
|
||
function _modelClone(c1, c2 , propName){
|
||
if(propName){
|
||
c1[propName] = c2[propName];
|
||
}else{
|
||
// $.extend(true, c1, {//开放修改的列属性
|
||
// label: c2['label']//列名
|
||
// ,hidden: c2['hidden']//显示与隐藏
|
||
// ,width: c2['width']//宽度
|
||
// });
|
||
$.extend(true, c1, c2);
|
||
}
|
||
return c1;
|
||
}
|
||
function _eventReg(){
|
||
//列配置
|
||
$(window).on('unload',function(){
|
||
if(conf && conf.curTime && conf.modifyTime != conf.curTime){
|
||
conf.modifyTime = conf.curTime;
|
||
_updateConfig(_formatPostData());
|
||
}
|
||
});
|
||
}
|
||
function _updateConfig(value){
|
||
//defaultPage.Public.tips({type:2, content:'保存配置中,请稍候...'});
|
||
defaultPage.$.ajax({
|
||
url: '../basedata/userSetting/update?action=update',
|
||
type: 'POST',
|
||
dataType: 'json',
|
||
data: {
|
||
key : mod.pageId,
|
||
value : value
|
||
},
|
||
async:false,//同步执行,防止出现执行不成功的问题
|
||
timeout:3000
|
||
})
|
||
.done(function(data) {
|
||
//console.log("success");
|
||
//defaultPage.Public.tips({type:0, content:'保存配置成功'});
|
||
})
|
||
.fail(function(data) {
|
||
//console.log("error");
|
||
//defaultPage.Public.tips({type:1, content:'保存配置失败!'});
|
||
})
|
||
.always(function() {
|
||
//console.log("complete");
|
||
});
|
||
}
|
||
function _deleteConfig(key){
|
||
defaultPage.$.post('../basedata/userSetting/delete?action=delete',{
|
||
key : mod.pageId
|
||
})//关闭页面之后回调函数被释放,所以这里不要写回调函数, ie7下会报错
|
||
}
|
||
function _formatPostData(){//表格的列配置转成数组类型减少数据量
|
||
var _conf = $.extend(true, {}, conf);//克隆conf
|
||
for(var gridId in _conf.grids){
|
||
var g = _conf.grids[gridId];
|
||
if(typeof g != 'function' && g.isReg){
|
||
var colModel = g.colModel;
|
||
var tmpArr = [];
|
||
for (var i = 0; i < colModel.length; i++) {
|
||
var col = colModel[i];
|
||
if(!col)continue;
|
||
tmpArr.push([
|
||
col['name']//列名,唯一标识
|
||
,col['label']//列名
|
||
,col.defhidden ? null : col['hidden']//显示与隐藏//默认是隐藏的就不受列配置的显影控制
|
||
,col['width']//宽度
|
||
])
|
||
};
|
||
g.colModel = tmpArr;
|
||
delete g.defColModel;//删除克隆对象中的defColModel,这部分没不要存入数据库
|
||
}
|
||
}
|
||
return JSON.stringify(_conf);
|
||
}
|
||
function _setGridWidthByIndex(newwidth, index, gridId){
|
||
_updatePageConfig(gridId,['width', conf.grids[gridId].defColModel[index-1]['name'] , newwidth]);
|
||
}
|
||
return mod;
|
||
})(Public.mod_PageConfig || {})
|
||
});
|
||
|
||
/**
|
||
* 省市区
|
||
* 省下拉框ID:provinceCombo
|
||
* 市下拉框ID:cityCombo
|
||
* 区下拉框ID:areaCombo
|
||
* 需要搭配COMBO插件
|
||
* 默认值放在data('defaultValue')
|
||
*/
|
||
var mod_AreasCombo = (function(mod) {
|
||
var _areasList = [],
|
||
_capable = false,//模块启动开关
|
||
_provinceList = [],
|
||
_cityList = [],
|
||
_areasCahe = {},
|
||
_pCombo,_cCombo,_aCombo;
|
||
|
||
mod.init = function(_provinceCombo,_cityCombo,_areaCombo ,callback){
|
||
_pCombo = _provinceCombo;
|
||
_cCombo = _cityCombo;
|
||
_aCombo = _areaCombo;
|
||
//缓存省市数据
|
||
if(!(_provinceCombo&&_cityCombo&&_areaCombo)){
|
||
return;
|
||
}
|
||
Public.ajaxPost('../js/common/areasData.php', {}, function(data){
|
||
if(data) {
|
||
_capable = true;
|
||
_areasList = data.areas_get_response.areas.area;
|
||
for (i = 0,len = _areasList.length; i < len; i++) {
|
||
if (_areasList[i].type === 2 && _areasList[i].parent_id === 1) {
|
||
_provinceList.push({name:_areasList[i].name,id:_areasList[i].id, type:2, parent_id:1});
|
||
} //中国的省
|
||
if (_areasList[i].type === 3) {
|
||
_cityList.push({name:_areasList[i].name,id:_areasList[i].id,type:_areasList[i].type,parent_id:_areasList[i].parent_id});
|
||
} //中国的市
|
||
}
|
||
mod.provinceCombo = _getCombo( _pCombo,_getProvinceData());
|
||
mod.cityCombo = _getCombo( _cCombo,[]);
|
||
mod.areaCombo = _getCombo( _aCombo,[]);
|
||
//mod.provinceCombo.loadData(_getProvinceData(),-1,false);
|
||
callback();
|
||
} else {
|
||
Public.tips({type: 1, content : '初始化省市区失败!'});
|
||
}
|
||
});
|
||
return mod;
|
||
};
|
||
function _getCombo(obj,data){
|
||
var _disabled = $(obj).hasClass('disabled');
|
||
return obj.combo({
|
||
data: data,
|
||
text: 'name',
|
||
value: 'id',
|
||
width: 112,
|
||
defaultSelected: -1,
|
||
//addOptions: {text:'', value: -1},
|
||
cache: false,
|
||
editable:true,
|
||
disabled: _disabled,
|
||
callback: {
|
||
onFocus: null,
|
||
onBlur: null,
|
||
beforeChange: null,
|
||
onChange: function(){
|
||
switch(this){
|
||
case mod.provinceCombo :
|
||
mod.cityCombo.loadData(_getCityData(mod.provinceCombo.getValue()),-1,false);
|
||
mod.areaCombo.loadData([],-1,false);
|
||
break;
|
||
case mod.cityCombo :
|
||
mod.areaCombo.loadData(_getAreaData(mod.cityCombo.getValue()),-1,false);
|
||
break;
|
||
case mod.areaCombo :
|
||
break;
|
||
default:break;
|
||
}
|
||
},
|
||
onExpand: null,
|
||
onCollapse: null
|
||
}
|
||
}).getCombo();
|
||
};
|
||
function _getProvinceData (){
|
||
var _data = [];
|
||
for (i = 0,len = _provinceList.length; i < len; i++) {
|
||
if (_provinceList[i].type === 2 && _provinceList[i].parent_id === 1) {
|
||
_data.push({name:_provinceList[i].name,id:_provinceList[i].id});
|
||
}
|
||
}
|
||
return _data;
|
||
};
|
||
function _getCityData (PID){
|
||
var _data = [];
|
||
for (i = 0,len = _cityList.length; i < len; i++) {
|
||
if (_cityList[i].parent_id === PID) {
|
||
_data.push({name:_cityList[i].name,id:_cityList[i].id});
|
||
}
|
||
}
|
||
return _data;
|
||
};
|
||
function _getAreaData (PID){
|
||
var _data = [];
|
||
//查找缓存
|
||
if(_areasCahe[PID]){
|
||
_data = _areasCahe[PID].areaData;
|
||
}
|
||
//没有缓存则全表查找
|
||
else{
|
||
for (i = 0, len = _areasList.length; i < len; i++) {
|
||
if (_areasList[i].type === 4 && _areasList[i].parent_id === PID) {
|
||
_data.push({name:_areasList[i].name,id:_areasList[i].id});
|
||
}
|
||
}
|
||
//缓存该次查找结果
|
||
_areasCahe[PID] ={areaData : _data} ;
|
||
}
|
||
return _data;
|
||
};
|
||
return mod;
|
||
})(mod_AreasCombo || {})
|
||
|
||
/**
|
||
* 报表联查方法
|
||
* @param {[type]} params [description] 必填
|
||
* params.transferType 业务类型ID 必填
|
||
* params.id 单据ID 必填
|
||
* params.callback 执行之后的回调
|
||
* template gotoDetailItem({transferType:'001', id: 1, callback:fn})
|
||
* @return void
|
||
*/
|
||
Public.gotoDetailItem = function(params){
|
||
if(!params)return;
|
||
if(!params.transferType)return;
|
||
if(!params.id)return;
|
||
var urls = {
|
||
//SALE
|
||
'150601' : {tabid : 'sales-sales',text : '销货单',right:'SA_QUERY', url : '/sales/sales.jsp?id='},
|
||
//SALEBACK
|
||
'150602' : {tabid : 'sales-salesBack',text : '销货退货单',right:'SA_QUERY', url : '/sales/sales.jsp?transType=150602&id='},
|
||
//PUR
|
||
'150501' : {tabid : 'purchase-purchase',text : '购货单',right:'PU_QUERY',url : '/purchase/purchase.jsp?id='},
|
||
//PUR
|
||
'150502' : {tabid : 'purchase-purchaseBack',text : '购货退货单',right:'PU_QUERY',url : '/purchase/purchase.jsp?transType=150502&id='},
|
||
//TRANSFER
|
||
'103091' : {tabid : 'storage-transfers',text : '调拨单',right:'TF_QUERY',url : '/storage/transfers.jsp?id='},
|
||
//OO
|
||
'150806' : {tabid : 'storage-otherOutbound',text : '其它出库 ',right:'OO_QUERY',url : '/storage/other-outbound.jsp?id='},
|
||
//OI
|
||
'150706' : {tabid : 'storage-otherWarehouse',text : '其它入库 ',right:'IO_QUERY',url : '/storage/other-warehouse.jsp?id='},
|
||
//OO
|
||
'150801' : {tabid : 'storage-otherOutbound',text : '盘亏',right:'OO_QUERY',url : '/storage/other-outbound.jsp?id='},
|
||
//OI
|
||
'150701' : {tabid : 'storage-otherWarehouse',text : '盘盈',right:'IO_QUERY',url : '/storage/other-warehouse.jsp?id='},
|
||
//CADJ
|
||
'150807' : {tabid : 'storage-adjustment',text : '成本调整',right:'CADJ_QUERY',url : '/storage/adjustment.jsp?id='},
|
||
//PAYMENT
|
||
'153101' : {tabid : 'money-payment',text : '付款单',right:'PAYMENT_QUERY',url : '/money/payment.jsp?id='},
|
||
//RECEIPT
|
||
'153001' : {tabid : 'money-receipt',text : '收款单',right:'RECEIPT_QUERY',url : '/money/receipt.jsp?id='},
|
||
//PAYMENT
|
||
'153301' : {tabid : 'storage-assemble',text : '组装单',right:'ZZD_QUERY',url : '/storage/assemble.jsp?id='},
|
||
//RECEIPT
|
||
'153302' : {tabid : 'storage-disassemble',text : '拆卸单',right:'CXD_QUERY',url : '/storage/disassemble.jsp?id='}
|
||
//VERIFICA //核销太恶心了,包含5种单据类型。。。
|
||
//VERIFICA //核销太恶心了,包含5种单据类型。。。
|
||
// : {tabid : 'money-verifica',text : '核销单 ',right:'VERIFICA_QUERY',url : '/money/verification.jsp?id='}
|
||
};
|
||
var item = urls[params.transferType + ''] ;
|
||
if(item && Business.verifyRight(item.right)){
|
||
parent.tab.addTabItem({
|
||
tabid : item.tabid,
|
||
text : item.text,
|
||
url : item.url + params.id
|
||
});
|
||
typeof params.callback === 'function' && params.callback();
|
||
}
|
||
}
|
||
|
||
|
||
});
|
||
|
||
|
||
|