87,901
社区成员
发帖
与我相关
我的任务
分享
//提交
$("#btnSubmit").click(function(){
doSubmit(false);
});
//提交
var doSubmit = function(istemp){
if(!onSubmitBefore()){return false;}
if(isContainData()){
formatJson();
if(isSomeUnitNoData())
{
if(!confirm( istemp ? "@(confirmStrSaveLater)" : "@(confirmStr)")){return false;}
}
else {
if(!confirm("有些预算单元的数据为空,确认要提交?")){return false;}
}
getWin("winLoading").center().open();
$.post("/Project/SubmitBudget",{
jsonStr : JSON.stringify(container),
projectId : "@Model.ProjectID",
budgetUnitType : "@Model.Scale.BudgetUnitType",
sd : "@Model.Scale.StartDate",
ed : "@Model.Scale.EndDate",
isTemp : istemp
},function(d){
if(d == "1"){
window.location.href = "/Project/Budget?projectID=@(Model.ProjectID)";
}
else if(d == "-1"){
alert("System Error");
}
else{
alert(d);
}
});
}
else{
alert("@Resource.Lang.Message_Error_NoDataNeedSave");
}
};
var onSubmitBefore = function(){
var r = validDetail();
if(r){
var scaleObj = genObj();
var r = false;
for(var i=0;i<container.length;i++)
{
if(container[i].DateKey == scaleObj.DateKey)
{
r = true;
container[i] = scaleObj;
break;
}
}
if(!r){
container.push(scaleObj);
}
//除了保存当前页数据,还需要把每个预算单元的数据也构造出来(如果没有的话)
for(var i=0;i<dateRange.length;i++){
var f = false;
for(var j=0;j<container.length;j++){
if(container[j].DateKey == dateRange[i]){
f = true;
break;
}
}
if(!f){
container.push({
DateKey : dateRange[i],
HrJsonStr : new Array(),
OtherJsonStr : new Array()
});
}
}
}
return r;
};
//常规校验
var validDetail = function () {
var r = true;
var numRegex = new RegExp("^[+]?(([0-9]{1,8}\d*))$");
//var dobuleRegex = new RegExp(/^[+]?(([1-9]\d{1,7}[.]?)|(0.))(\d{0,2})?$/);
var dobuleRegex = new RegExp(/^(\d{1,8})(\.\d{1,2})?$/);
var dateRegex = new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$");
$("#tbodyHrBudget tr").each(function(){
var numTb = $(this).find("input.amount");
if(!numRegex.test(numTb.val())){
numTb.addClass("t-state-error");
r = false;
}
else {
numTb.removeClass("t-state-error");
}
if(!r){
return false;
}
});
$("#tbodyOtherBudget tr").each(function(){
var numTb = $(this).find("input.amount");
var sel = $(this).find("select.occurtype");
var dateTb = $(this).find("input.t-input");
if(!dobuleRegex.test(numTb.val())){
numTb.addClass("t-state-error");
r = false;
}
else {
numTb.removeClass("t-state-error");
}
//如果是一次性成本,需要校验日期
var dstr = dateTb.val();
if(sel.val() == "1"){
if(!dateRegex.test(dstr)){
dateTb.addClass("t-state-error");
r = false;
}
else{
//范围也需要在进度安排范围之内
var sd = ("@(budgetSd)").toDate();
var ed = ("@(budgetEd)").toDate();
var d = dstr.toDate();
if( d<sd || d>ed)
{
dateTb.addClass("t-state-error");
alert("@Resource.Lang.Message_Info_DataNeedBetween");
r = false;
}
else {
dateTb.removeClass("t-state-error");
}
}
}
if(!r){
return false;
}
});
return r;
};
var formatJson = function(){
for(var i=0;i<container.length;i++){
for(var j=0;j<container[i].OtherJsonStr.length;j++){
container[i].OtherJsonStr[j].OccurDate = formatDateStr(container[i].OtherJsonStr[j].OccurDate);
}
}
};
//是否有了待提交的数据
var isContainData = function(){
var r = false;
for(var i=0;i<container.length;i++){
if(container[i].HrJsonStr.length > 0 || container[i].OtherJsonStr.length > 0){
r = true;
break;
}
}
return r;
};
var isSomeUnitNoData = function(){
var r = true;
for(var i=0;i<container.length;i++){
if(container[i].HrJsonStr.length == 0 && container[i].OtherJsonStr.length == 0){
r = false;
break;
}
}
return r;
};
var formatDateStr = function(str){
if(str != "" && str.indexOf("Date") > -1 ){
var num = str.match(/\d+/);
eval("var dd = Date(" + num + ")");
if(typeof(dd) != "undefined")
{
var dtd = new Date(dd);
str = dtd.Format("yyyy/M/d");
}
}
return str;
};
//生成人力成本表格的JSON对象
var genHrJson = function(){
var arr = new Array();
$("#tbodyHrBudget tr").each(function(){
var obj = new Object();
obj.JobTitle = $(this).find("select.jobtitle").val();
obj.Amount = $(this).find("input.amount").val();
obj.CostType = $(this).find("select.costtype").val();
arr.push(obj);
});
return arr;
};
//生成其他成本表格的JSON对象
var genOtherJson = function(){
var arr = new Array();
$("#tbodyOtherBudget tr").each(function(){
var obj = new Object();
obj.OtherCostType = $(this).find("select.othercosttype").val();
obj.Amount = $(this).find("input.amount").val();
obj.CostType = $(this).find("select.costtype").val();
obj.OccurType = $(this).find("select.occurtype").val();
obj.OccurDate = $(this).find("input.t-input").val();
arr.push(obj);
});
return arr;
};
//当前页的整体JSON对象
var genObj = function(){
var obj = new Object();
obj.DateKey = currentDay;
obj.HrJsonStr = genHrJson();
obj.OtherJsonStr = genOtherJson();
return obj;
};