/**
* Created by chen on 2017/8/1.
*/
var feeRateObject={
mainViews:null,
datas:null,
canEdit:false,
activateFeeRate:null,
needCascadeSet:false,
selectionLoad:false,
changeInfo:null,
columns: [
{
id: 'name',
caption: '专业名称',
dataField: 'name',
width: 450,
allowEditing: false
},
{
id: 'rate',
caption: '值%',
dataField: 'rate',
format: '0.000',
width: 120,
minWidth: 50,
allowEditing: true
},
{
id: 'memo',
caption: '备注',
dataField: 'memo',
minWidth: 120,
allowEditing: true
},
{
id: 'ID',
caption: 'ID',
dataField: 'ID',
width: 80,
visible: false,
allowEditing: false
},
{
id: 'subFeeRate',
caption: '子费率',
dataField: 'subFeeRate',
width: 80,
visible: false,
allowEditing: false
},
{
id: '_id',
caption: '自动ID',
dataField: '_id',
width: 80,
visible: false,
allowEditing: false
},
{
id: 'ParentID',
caption: '父结点ID',
dataField: 'ParentID',
width: 80,
visible: false,
allowEditing: false
}
],
options :{
allowSorting: false,
showRowHeader: true,
colMinWidth: 80,
rowHeight: 30,
allowEditing: true,
editMode: 'inline',
editUnit: 'cell',
selectionUnit: "row",
hierarchy: {
keyField: 'ID',
parentField: 'ParentID',
collapsed: false,
column: 'name'
}
},
dataSource : {
loadRange: function(params) {
params.success(feeRateObject.datas);
},
update: function(params) {
if(!params.hasOwnProperty('sourceIndex')){
var selected = feeRateObject.mainViews.getSelections()[0];
params.sourceIndex = selected.sourceRow;
}
if(!$('#cascadeSet').prop('checked')||params.hasOwnProperty('viewIndex')){
projectObj.project.FeeRate.updateFeeRateByEdit(params,feeRateObject.activateFeeRate);
}
params.success();
}
},
createSpreadView:function () {
if (this.mainViews) {
this.mainViews.destroy();
this.mainViews = null;
}
this.activateFeeRate = projectObj.project.FeeRate.getActivateFeeRate();
this.datas = this.activateFeeRate.rates;
this.mainViews = new GC.Spread.Views.DataView($('#divFee')[0],
this.dataSource, this.columns, new GC.Spread.Views.Plugins.GridLayout(this.options));
this.mainViews["rowClick"].addHandler(subRateObject.reFreshRateViews);
this.mainViews .invalidate();
document.querySelector('#divFee').focus();
},
reFreshRateViews:function() {
if(this.mainViews){
this.mainViews.refresh()
}else {
feeRateObject.createSpreadView();
//setTimeout("feeRateObject.createSpreadView()",100);
}
},
updateBySelect:function (rate,selectMap,mapID) {
var selected = this.mainViews.getSelections()[0];
var item = this.datas[selected.sourceRow];
item.rate = rate;
_.forEach(selectMap,function (value,key) {
var recode = item.subFeeRate.recodes[key];
var optionList = recode.optionList;
_.forEach(optionList,function (o) {
if(o.value==value){
o.selected=true;
}else {
o.selected = false;
}
})
})
if($('#cascadeSet').prop('checked')){
this.cascadeSetRates(item,selected.sourceRow,mapID,selectMap)
}else {
this.mainViews.data.updateItem(selected.sourceRow,item);
}
projectObj.project.FeeRate.synchronizeFeeRate();
//this.views.data.updateItem()
},
cascadeSetRates:function(selectedItem,sourceRow,mapID,selectMap){
var items=[];
items.push({rateIndex:sourceRow,rate:selectedItem});
_.forEach(this.datas,function (recode,Index) {
if(Index!=sourceRow&&recode.subFeeRate){
var valueMaps = recode.subFeeRate.valueMaps;
var valueMap = _.find(valueMaps,{ID:mapID});
if(valueMap){//选项完全一样的情况
if(valueMap.value==recode.rate){
return;
}else {
recode.rate = valueMap.value;
_.forEach(selectMap,function (value,key) {
var tempRecode = recode.subFeeRate.recodes[key];
var optionList = tempRecode.optionList;
_.forEach(optionList,function (o) {
if(o.value==value){
o.selected=true;
}else {
o.selected = false;
}
})
})
items.push({rateIndex:Index,rate:recode});
}
}else {//某条选项一样的情况
var needUpdate = false;
var selectList = mapID.split('-');
var newList=[];
_.forEach(recode.subFeeRate.recodes,function (r) {
var oList = r.optionList;
var oldSelectIndex=0;
var hasChange=false;
_.forEach(oList,function (o,key) {
if(o.selected){
oldSelectIndex = key;
}
if(_.includes(selectList,o.value)){
needUpdate=true;
o.selected=true;
hasChange=true;
newList.push(o.value);
}else {
o.selected=false;
}
})
if(!hasChange){
oList[oldSelectIndex].selected=true;
newList.push(oList[oldSelectIndex].value)
}
})
if(needUpdate){
var newValue = _.find(valueMaps,{ID:newList.join("-")})//取出费率值并更新
if(newValue){
if(recode.rate != newValue.value){
recode.rate = newValue.value
items.push({rateIndex:Index,rate:recode});
}
}
}
}
}
})
_.forEach(items,function (t) {
feeRateObject.mainViews.data.updateItem(t.rateIndex,t.rate);
})
projectObj.project.FeeRate.batchUpdateFeeRate(items,feeRateObject.activateFeeRate);
},
loadPageContent:function(){
var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
var usageProjects = feeRateFile.usageProjects;
$('#feeRateFileName').text(feeRateFile.name);
$('#feeRateLibName').text(feeRateFile.libName);
$('#projectCount').text(usageProjects.length);
},
loadFeeRateSelection:function() {
if(!this.selectionLoad){
var selectedID=0;
_.forEach(projectObj.project.FeeRate.datas,function (data) {
var option = $("