|
@@ -8,7 +8,7 @@ let installationFeeObj={
|
|
|
header: [
|
|
|
{headerName: "按统一设置", headerWidth: 80, dataCode: "unifiedSetting", dataType: "String",cellType: "checkBox"},
|
|
|
{headerName: "费用项", headerWidth: 160, dataCode: "itemName", dataType: "String"},
|
|
|
- {headerName: "费用规则", headerWidth: 300, dataCode: "rule", hAlign: "left", dataType: "String"/*,getText:'forRule'*/},
|
|
|
+ {headerName: "费用规则", headerWidth: 300, dataCode: "ruleId", hAlign: "left", dataType: "String",getText:'forRule'},
|
|
|
{headerName: "编码", headerWidth: 70, dataCode: "code", hAlign: "left", dataType: "String"},
|
|
|
{headerName: "基数", headerWidth: 150, dataCode: "base", hAlign: "left", dataType: "String",cellType:'comboBox',options:installSectionBase},
|
|
|
{headerName: "费率(%)", headerWidth: 80, dataCode: "feeRate", hAlign: "right", dataType: "String"},
|
|
@@ -16,10 +16,22 @@ let installationFeeObj={
|
|
|
{headerName: "其中材料(%)", headerWidth: 100, dataCode: "material", hAlign: "right", dataType: "String"},
|
|
|
{headerName: "其中机械(%)", headerWidth: 100, dataCode: "machine", hAlign: "right", dataType: "String"},
|
|
|
{headerName: "费用类型", headerWidth: 100, dataCode: "feeType", hAlign: "center", dataType: "String",cellType:'comboBox',options:installFeeType},
|
|
|
- {headerName: "记取位置", headerWidth: 100, dataCode: "position", hAlign: "left", dataType: "String",cellType:'selectButton'}
|
|
|
+ {headerName: "记取位置", headerWidth: 200, dataCode: "position", hAlign: "left", dataType: "String",cellType:'selectButton',getText:'forPosition'}
|
|
|
],
|
|
|
view: {
|
|
|
- lockColumns: [0, 2]
|
|
|
+ lockColumns: [0,1,3,4,5,6,7,8,9]
|
|
|
+ },
|
|
|
+ getText:{
|
|
|
+ forPosition:function (item,val) {//记取位置转换
|
|
|
+ return installationFeeObj.getDisplayText(item);
|
|
|
+ },
|
|
|
+ forRule:function (item,val) {//
|
|
|
+ let feeRule = projectObj.project.installation_fee.getFeeRuleByID(item.libID,val);
|
|
|
+ if(feeRule){
|
|
|
+ return feeRule.rule;
|
|
|
+ }
|
|
|
+ return val;
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
feeItemSpread:null,
|
|
@@ -308,7 +320,7 @@ let installationFeeObj={
|
|
|
let feeItem = this.feeItemData[this.feeItemSheet.getSelections()[0].row];
|
|
|
for(let i =0;i<this.feeDetailData.length;i++){
|
|
|
this.feeDetailSheet.autoFitRow(i);
|
|
|
- this.setDetailRuleCell(i,this.feeDetailData[i]);//设置费用规则下拉选项
|
|
|
+ this.setComboRuleCell(i,1,this.feeDetailData[i],this.feeDetailSheet);//设置费用规则下拉选项
|
|
|
this.lockDetailSheet(i,this.feeDetailData[i],feeItem);
|
|
|
}
|
|
|
this.feeDetailSheet.resumeEvent();
|
|
@@ -330,7 +342,23 @@ let installationFeeObj={
|
|
|
installationList = _.filter(ration_installation.datas, {'projectID': ration.projectID, 'rationID': ration.ID})
|
|
|
}
|
|
|
this.rationInstallData = installationList;
|
|
|
+ this.rationInstallSheet.setRowCount(0);
|
|
|
sheetCommonObj.showData(this.rationInstallSheet, this.rationInstallSetting,this.rationInstallData);
|
|
|
+ if(this.rationInstallData.length>0){
|
|
|
+ this.rationInstallSheet.suspendPaint();
|
|
|
+ this.rationInstallSheet.suspendEvent();
|
|
|
+ for(let i = 0;i< this.rationInstallData.length;i++){
|
|
|
+ let impactRules = projectObj.project.installation_fee.getFeeRuleBySection({libID:this.rationInstallData[i].libID,ID:this.rationInstallData[i].sectionId});
|
|
|
+ this.setComboRuleCell(i,2,{impactRules:impactRules},this.rationInstallSheet);//设置费用规则下拉选项
|
|
|
+ }
|
|
|
+ this.rationInstallSheet.resumeEvent();
|
|
|
+ this.rationInstallSheet.resumePaint();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ refreshRationInstallationRow:function (row) {
|
|
|
+ let ri = this.rationInstallData[row];
|
|
|
+ this.rationInstallData[row] = projectObj.project.ration_installation.getByID(ri.ID);
|
|
|
+ sheetCommonObj.showRowData(this.rationInstallSheet, this.rationInstallSetting,row,this.rationInstallData);
|
|
|
},
|
|
|
refreshFeeDetailRow:function (row) {
|
|
|
let detail = this.feeDetailData[row];
|
|
@@ -356,7 +384,7 @@ let installationFeeObj={
|
|
|
this.feeDetailSheet.getRange(row, 3, 1, this.feeDetailSetting.header.length-3, GC.Spread.Sheets.SheetArea.viewport).locked(true);
|
|
|
}
|
|
|
},
|
|
|
- setDetailRuleCell:function(row,detail){
|
|
|
+ setComboRuleCell:function(row,col,detail,sheet){
|
|
|
let options=[{text:"无",value:""}];
|
|
|
for(let ir of detail.impactRules){
|
|
|
options.push({text:ir.rule,value:ir.ID});
|
|
@@ -365,7 +393,7 @@ let installationFeeObj={
|
|
|
let dynamicCombo = sheetCommonObj.getDynamicCombo();//new GC.Spread.Sheets.CellTypes.ComboBox();
|
|
|
dynamicCombo.items(options);
|
|
|
dynamicCombo.editorValueType(GC.Spread.Sheets.CellTypes.EditorValueType.value);
|
|
|
- this.feeDetailSheet.setCellType(row, 1, dynamicCombo, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
+ sheet.setCellType(row, col, dynamicCombo, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
},
|
|
|
getFeeItemData:function (datas) {
|
|
|
let feeItemShowArray = [];
|
|
@@ -389,7 +417,7 @@ let installationFeeObj={
|
|
|
return feeItemShowArray;
|
|
|
},
|
|
|
getDisplayText:function (item) {
|
|
|
- if(item.billID){
|
|
|
+ if(item.billID&&item.billID!=''){
|
|
|
let node = projectObj.project.mainTree.getNodeByID(item.billID);
|
|
|
if(node){
|
|
|
return node.data.code +" "+node.data.name;
|
|
@@ -409,8 +437,16 @@ let installationFeeObj={
|
|
|
},
|
|
|
getMoreFeeRuleData:function () {
|
|
|
let me = installationFeeObj;
|
|
|
- let fee_select = me.feeItemSheet.getSelections()[0];
|
|
|
- let feeItem = me.feeItemData[fee_select.row];
|
|
|
+ let feeItem = null;
|
|
|
+ let from = $("#more_from").val();
|
|
|
+ if(from =='feeDetail'){//在计取安装费那里点击更多
|
|
|
+ let fee_select = me.feeItemSheet.getSelections()[0];
|
|
|
+ feeItem = me.feeItemData[fee_select.row];
|
|
|
+ }else if(from == 'rationInstallation'){//在定额安装增加费那里点击更多
|
|
|
+ let ri_select = me.rationInstallSheet.getSelections()[0];
|
|
|
+ let ri = me.rationInstallData[ri_select.row];
|
|
|
+ feeItem = {ID:ri.feeItemId,libID:ri.libID};
|
|
|
+ }
|
|
|
let feeRules = projectObj.project.installation_fee.getFeeRuleByFeeItem(feeItem);
|
|
|
return feeRules;
|
|
|
},
|
|
@@ -464,10 +500,33 @@ let installationFeeObj={
|
|
|
this.moreFeeRuleSheet.name('moreFeeRuleSheet');
|
|
|
},
|
|
|
initRationInstallSheet:function (sheet) {
|
|
|
+ let me = this;
|
|
|
this.rationInstallSheet = sheet;
|
|
|
this.initSheet( this.rationInstallSheet,this.rationInstallSetting);
|
|
|
+ sheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onRationSheetSelectionChange);
|
|
|
+ sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
|
|
|
+ if(args.row>=me.rationInstallData.length){
|
|
|
+ args.cancel = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
this.rationInstallSheet.name("rationInstallSheet");
|
|
|
},
|
|
|
+ onRationSheetSelectionChange: function (sender, args) {
|
|
|
+ let me = installationFeeObj;
|
|
|
+ let row = args.newSelections[0].row;
|
|
|
+ let col = args.newSelections[0].col;
|
|
|
+ let dataCode = me.rationInstallSetting.header[col].dataCode;
|
|
|
+ if(row<me.rationInstallData.length&&dataCode=='position'){
|
|
|
+ let locked = false;
|
|
|
+ if(me.rationInstallData[row].feeType=='子目费用'){
|
|
|
+ locked = true;
|
|
|
+ }else if(me.rationInstallData[row].unifiedSetting==1){
|
|
|
+ locked = true;
|
|
|
+ }
|
|
|
+ installationFeeObj.rationInstallSheet.getCell(row,col).locked(locked);
|
|
|
+ }
|
|
|
+ me.rationInstallSheet.repaint();
|
|
|
+ },
|
|
|
onFeeRuleDoubleClick:function (e,info) {
|
|
|
if(info.row!=undefined||info!=null){
|
|
|
installationFeeObj.updateFeeRuleToSection(info.row);
|
|
@@ -550,28 +609,29 @@ let installationFeeObj={
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- getBillDataForSelect:function () {
|
|
|
+ getBillDataForSelect:function () {//这里有三个地方共用
|
|
|
let controller = projectObj.mainController, project = projectObj.project;
|
|
|
- let selection = this.feeItemSheet.getSelections()[0];
|
|
|
let from = $('#calc_position_from').val();
|
|
|
- let feeItem = this.feeItemData[selection.row];
|
|
|
- let rootNode = null;
|
|
|
- let allNodes = [];
|
|
|
- let datas = [];
|
|
|
- let billID = null;
|
|
|
- if(from =="feeItemSheet"){
|
|
|
- if(feeItem.billID){
|
|
|
- billID = feeItem.billID;
|
|
|
- }
|
|
|
- }
|
|
|
- if(from =="feeDetailSheet") {
|
|
|
- let detailSelection = this.feeDetailSheet.getSelections()[0];
|
|
|
- let detail = this.feeDetailData[detailSelection.row];
|
|
|
- if(detail.billID){
|
|
|
- billID = detail.billID;
|
|
|
+ let rootNode = null,allNodes = [],datas = [],billID = null,feeItem=null;
|
|
|
+ if(from=="rationInstallSheet"){
|
|
|
+ let riSelection = this.rationInstallSheet.getSelections()[0];
|
|
|
+ feeItem = this.rationInstallData[riSelection.row];
|
|
|
+ billID = feeItem.billID;
|
|
|
+ }else {
|
|
|
+ let selection = this.feeItemSheet.getSelections()[0];
|
|
|
+ feeItem = this.feeItemData[selection.row];
|
|
|
+ if(from =="feeItemSheet"){
|
|
|
+ if(feeItem.billID){
|
|
|
+ billID = feeItem.billID;
|
|
|
+ }
|
|
|
+ }else if(from =="feeDetailSheet") {
|
|
|
+ let detailSelection = this.feeDetailSheet.getSelections()[0];
|
|
|
+ let detail = this.feeDetailData[detailSelection.row];
|
|
|
+ if(detail.billID){
|
|
|
+ billID = detail.billID;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
if(feeItem.feeType=='措施费用'){
|
|
|
rootNode = project.Bills.getMeasureNode(controller);
|
|
|
}else if(feeItem.feeType=='分项费用'){
|
|
@@ -616,10 +676,30 @@ let installationFeeObj={
|
|
|
this.updateFeeItemPosition(pobj.recode);
|
|
|
}else if(from=='feeDetailSheet'){
|
|
|
this.updateFeeRulePosition(pobj.recode);
|
|
|
+ }else if(from=='rationInstallSheet'){
|
|
|
+ this.updateRationInstallPosition(pobj.recode);
|
|
|
}
|
|
|
}
|
|
|
$("#calc_position").modal('hide');
|
|
|
},
|
|
|
+ updateRationInstallPosition:function(recode){
|
|
|
+ let me = this;
|
|
|
+ let riselection = me.rationInstallSheet.getSelections()[0];
|
|
|
+ let rationInstall = me.rationInstallData[riselection.row];
|
|
|
+ if(rationInstall.billID == recode.ID){//和原来的位置没变
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let updateData = {
|
|
|
+ projectID:rationInstall.projectID,
|
|
|
+ ID:rationInstall.ID,
|
|
|
+ position:recode.code,
|
|
|
+ billID:recode.ID
|
|
|
+ };
|
|
|
+ projectObj.project.ration_installation.update(updateData,function (data) {
|
|
|
+ me.refreshRationInstallationRow(riselection.row);
|
|
|
+ });
|
|
|
+
|
|
|
+ },
|
|
|
updateFeeRulePosition:function (recode) {
|
|
|
let me = this;
|
|
|
let itemSelection = this.feeItemSheet.getSelections()[0];
|
|
@@ -667,6 +747,20 @@ let installationFeeObj={
|
|
|
$.bootstrapLoading.end();
|
|
|
});
|
|
|
},
|
|
|
+ updateFeeRuleToRInstall:function (row) {
|
|
|
+ let me = this;
|
|
|
+ let feeRule = me.moreFeeRuleData[row];
|
|
|
+ let ri_row = me.rationInstallSheet.getSelections()[0].row;
|
|
|
+ let raInstallation = me.rationInstallData[ri_row];
|
|
|
+ if(feeRule.ID ==raInstallation.ruleId ){
|
|
|
+ me.refreshRationInstallationRow(ri_row);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let updateData = me.getRIRuleUpdateData(feeRule.ID,raInstallation);
|
|
|
+ projectObj.project.ration_installation.update(updateData,function (data) {
|
|
|
+ me.refreshRationInstallationRow(ri_row);
|
|
|
+ });
|
|
|
+ },
|
|
|
updateFeeItemPosition:function(recode){
|
|
|
let me = this;
|
|
|
let selection = this.feeItemSheet.getSelections()[0];
|
|
@@ -713,6 +807,9 @@ let installationFeeObj={
|
|
|
if(info.sheetName == 'feeDetailSheet'){
|
|
|
installationFeeObj.onFeeDetailValueChange(e,info);
|
|
|
}
|
|
|
+ if(info.sheetName == 'rationInstallSheet'){
|
|
|
+ installationFeeObj.onRationInstallValueChange(e,info);
|
|
|
+ }
|
|
|
},
|
|
|
onFeeItemValueChange:function (e,info) {
|
|
|
let me = installationFeeObj;
|
|
@@ -729,6 +826,38 @@ let installationFeeObj={
|
|
|
$.bootstrapLoading.end();
|
|
|
});
|
|
|
},
|
|
|
+ onRationInstallValueChange:function (e,info) {
|
|
|
+ let me = installationFeeObj;
|
|
|
+ if(info.newValue==info.oldValue){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let updateData = null;
|
|
|
+ let raInstallation = me.rationInstallData[info.row];
|
|
|
+ let fieldID = me.rationInstallSetting.header[info.col].dataCode;
|
|
|
+ if(fieldID=='ruleId'){//选择新的规则项
|
|
|
+ if(info.newValue=="more"){//选择的是更多
|
|
|
+ $("#more_from").val("rationInstallation");
|
|
|
+ $("#more_feeRule").modal({show:true});
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(info.newValue == null){
|
|
|
+ me.refreshRationInstallationRow(info.row);
|
|
|
+ }else if(info.newValue == raInstallation.rule){
|
|
|
+ return;
|
|
|
+ }else {
|
|
|
+ updateData = me.getRIRuleUpdateData(info.newValue,raInstallation);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ updateData = {
|
|
|
+ projectID:raInstallation.projectID,
|
|
|
+ ID: raInstallation.ID
|
|
|
+ };
|
|
|
+ updateData[fieldID] = info.newValue;
|
|
|
+ }
|
|
|
+ projectObj.project.ration_installation.update(updateData,function (data) {
|
|
|
+ me.refreshRationInstallationRow(info.row);
|
|
|
+ });
|
|
|
+ },
|
|
|
onFeeDetailValueChange:function (e,info) {
|
|
|
if(info.newValue==info.oldValue){
|
|
|
return;
|
|
@@ -740,6 +869,7 @@ let installationFeeObj={
|
|
|
let updateData = null;
|
|
|
if(fieldID == 'rule'){//选择新的规则项
|
|
|
if(info.newValue=="more"){//选择的是更多
|
|
|
+ $("#more_from").val("feeDetail");
|
|
|
$("#more_feeRule").modal({show:true});
|
|
|
return;
|
|
|
}
|
|
@@ -833,6 +963,38 @@ let installationFeeObj={
|
|
|
}
|
|
|
return canChange;
|
|
|
},
|
|
|
+ getRIRuleUpdateData:function (newRuleID,rationInstallation) {
|
|
|
+ let data={
|
|
|
+ ID:rationInstallation.ID,
|
|
|
+ projectID:rationInstallation.projectID,
|
|
|
+ ruleId:newRuleID,
|
|
|
+ unifiedSetting:0
|
|
|
+ };
|
|
|
+ if(newRuleID==''){//选择的是无
|
|
|
+ data.code = '';
|
|
|
+ data.rule = '';
|
|
|
+ data.base = '';
|
|
|
+ data.feeRate = '';
|
|
|
+ data.labour = '';
|
|
|
+ data.material = '';
|
|
|
+ data.machine = '';
|
|
|
+ data.position = '';
|
|
|
+ data.billID = '';
|
|
|
+ }
|
|
|
+ let feeRule = projectObj.project.installation_fee.getFeeRuleByID(rationInstallation.libID,newRuleID);
|
|
|
+ if(feeRule){
|
|
|
+ data.code = feeRule.code;
|
|
|
+ data.rule = feeRule.rule;
|
|
|
+ data.base = feeRule.base;
|
|
|
+ data.feeRate = feeRule.feeRate;
|
|
|
+ data.labour = feeRule.labour;
|
|
|
+ data.material = feeRule.material;
|
|
|
+ data.machine = feeRule.machine;
|
|
|
+ data.position = feeRule.position;
|
|
|
+ data.billID = feeRule.billID;
|
|
|
+ }
|
|
|
+ return data;
|
|
|
+ },
|
|
|
getDetailUpdateData : function (detail,doc,type) {//type:installSection/feeRule
|
|
|
let installationFee = projectObj.project.installation_fee.getInstallationFeeByLibID(detail.libID);
|
|
|
let updateData = {
|
|
@@ -932,45 +1094,40 @@ $(function () {
|
|
|
$('#more_feeRule_confirm').click(function (){
|
|
|
let me = installationFeeObj;
|
|
|
let selections = me.moreFeeRuleSheet.getSelections();
|
|
|
+ let from = $("#more_from").val();
|
|
|
$('#more_feeRule').modal('hide');
|
|
|
if(selections.length>0){
|
|
|
- me.updateFeeRuleToSection(selections[0].row);
|
|
|
+ if(from =='feeDetail'){
|
|
|
+ me.updateFeeRuleToSection(selections[0].row);
|
|
|
+ }else if(from == 'rationInstallation'){//在定额安装增加费那里点击更多
|
|
|
+ me.updateFeeRuleToRInstall(selections[0].row);
|
|
|
+ }
|
|
|
}else {
|
|
|
- me.refreshFeeDetailRow(me.feeDetailSheet.getSelections()[0].row);
|
|
|
+ if(from =='feeDetail') {//在计取安装费那里点击更多
|
|
|
+ me.refreshFeeDetailRow(me.feeDetailSheet.getSelections()[0].row);
|
|
|
+ }else if(from == 'rationInstallation'){//在定额安装增加费那里点击更多
|
|
|
+ me.refreshRationInstallationRow(me.rationInstallSheet.getSelections()[0].row);
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
$('#more_feeRule_concel').click(function () {
|
|
|
let me = installationFeeObj;
|
|
|
- me.refreshFeeDetailRow(me.feeDetailSheet.getSelections()[0].row);
|
|
|
+ let from = $("#more_from").val();
|
|
|
+ if(from =='feeDetail'){//在计取安装费那里点击更多
|
|
|
+ me.refreshFeeDetailRow(me.feeDetailSheet.getSelections()[0].row);
|
|
|
+ }else if(from == 'rationInstallation'){//在定额安装增加费那里点击更多
|
|
|
+ me.refreshRationInstallationRow(me.rationInstallSheet.getSelections()[0].row);
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
$('#more_feeRule_close').click(function () {
|
|
|
let me = installationFeeObj;
|
|
|
- me.refreshFeeDetailRow(me.feeDetailSheet.getSelections()[0].row);
|
|
|
- });
|
|
|
-/* $('#testUpdate').click(function () {
|
|
|
- let datas = [
|
|
|
- {
|
|
|
- type:'ration',
|
|
|
- data:{
|
|
|
- projectID:1605,
|
|
|
- ID:"7b962fb0-1131-11e8-b3da-af725dadd7ae",
|
|
|
- name:'testRation000'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- type:'bills',
|
|
|
- data:{
|
|
|
- projectID:1605,
|
|
|
- ID:"af9f0081-1127-11e8-99a8-2fc02230b6e7",
|
|
|
- name:'安全文明施工专项费用'
|
|
|
- }
|
|
|
- }
|
|
|
- ];
|
|
|
- projectObj.project.updateNodes(datas,function (data) {
|
|
|
- console.log(data);
|
|
|
- });
|
|
|
- });*/
|
|
|
-
|
|
|
+ let from = $("#more_from").val();
|
|
|
+ if(from =='feeDetail') {//在计取安装费那里点击更多
|
|
|
+ me.refreshFeeDetailRow(me.feeDetailSheet.getSelections()[0].row);
|
|
|
+ }else if(from == 'rationInstallation'){//在定额安装增加费那里点击更多
|
|
|
+ me.refreshRationInstallationRow(me.rationInstallSheet.getSelections()[0].row);
|
|
|
+ }
|
|
|
|
|
|
+ });
|
|
|
});
|