|
@@ -11,10 +11,10 @@ let installationFeeObj={
|
|
|
{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"},
|
|
|
- {headerName: "其中人工(%)", headerWidth: 100, dataCode: "labour", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "其中材料(%)", headerWidth: 100, dataCode: "material", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "其中机械(%)", headerWidth: 100, dataCode: "machine", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "费率(%)", headerWidth: 70, dataCode: "feeRate", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "人工(%)", headerWidth: 70, dataCode: "labour", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "材料(%)", headerWidth: 70, dataCode: "material", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "机械(%)", headerWidth: 70, dataCode: "machine", hAlign: "right", dataType: "String"},
|
|
|
{headerName: "费用类型", headerWidth: 100, dataCode: "feeType", hAlign: "center", dataType: "String",cellType:'comboBox',options:installFeeType},
|
|
|
{headerName: "记取位置", headerWidth: 200, dataCode: "position", hAlign: "left", dataType: "String",cellType:'selectButton',getText:'forPosition'}
|
|
|
],
|
|
@@ -39,10 +39,10 @@ let installationFeeObj={
|
|
|
feeItemData:null,
|
|
|
feeItemSetting:{
|
|
|
header: [
|
|
|
- {headerName: "计取", headerWidth: 90, dataCode: "isCal", dataType: "String",cellType: "checkBox"},
|
|
|
+ {headerName: "计取", headerWidth: 50, dataCode: "isCal", dataType: "String",cellType: "checkBox"},
|
|
|
{headerName: "费用项", headerWidth: 300, dataCode: "feeItem", hAlign: "left", dataType: "String"},
|
|
|
{headerName: "费用类型", headerWidth: 100, dataCode: "feeType", hAlign: "center", dataType: "String",cellType:'comboBox',options:installFeeType},
|
|
|
- {headerName: "记取位置", headerWidth: 140, dataCode: "displayPosition", hAlign: "left", dataType: "String",cellType:'selectButton'}
|
|
|
+ {headerName: "记取位置", headerWidth: 180, dataCode: "displayPosition", hAlign: "left", dataType: "String",cellType:'selectButton'}
|
|
|
],
|
|
|
view: {
|
|
|
lockColumns: [0,1]
|
|
@@ -57,11 +57,11 @@ let installationFeeObj={
|
|
|
{headerName: "费用规则", headerWidth: 220, dataCode: "rule", hAlign: "left", dataType: "String",getText:'forRule'},
|
|
|
{headerName: "编码", headerWidth: 70, dataCode: "code", hAlign: "left", dataType: "String"},
|
|
|
{headerName: "基数", headerWidth: 80, dataCode: "base", hAlign: "left", dataType: "String",cellType:'comboBox',options:installSectionBase},
|
|
|
- {headerName: "费率(%)", headerWidth: 80, dataCode: "feeRate", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "其中人工(%)", headerWidth: 100, dataCode: "labour", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "其中材料(%)", headerWidth: 100, dataCode: "material", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "其中机械(%)", headerWidth: 100, dataCode: "machine", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "记取位置", headerWidth: 100, dataCode: "position", hAlign: "left", dataType: "String",cellType:'selectButton'}
|
|
|
+ {headerName: "费率(%)", headerWidth: 70, dataCode: "feeRate", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "人工(%)", headerWidth: 70, dataCode: "labour", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "材料(%)", headerWidth: 70, dataCode: "material", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "机械(%)", headerWidth: 70, dataCode: "machine", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "记取位置", headerWidth: 200, dataCode: "position", hAlign: "left", dataType: "String",cellType:'selectButton'}
|
|
|
],
|
|
|
view: {
|
|
|
lockColumns: [0, 2]
|
|
@@ -99,6 +99,31 @@ let installationFeeObj={
|
|
|
lockColumns: [0,1,2,3,4,5,6]
|
|
|
}
|
|
|
},
|
|
|
+ modifyFeeRuleSpread:null,
|
|
|
+ modifyFeeRuleSheet:null,
|
|
|
+ modifyFeeRuleData:null,
|
|
|
+ modifyFeeRuleSetting:{
|
|
|
+ header: [
|
|
|
+ {headerName: "编码", headerWidth: 70, dataCode: "code", hAlign: "left", dataType: "String"},
|
|
|
+ {headerName: "费用规则", headerWidth: 220, dataCode: "rule", hAlign: "left", dataType: "String"},
|
|
|
+ {headerName: "基数", headerWidth: 80, dataCode: "base", hAlign: "left", dataType: "String",cellType:'comboBox',options:installSectionBase},
|
|
|
+ {headerName: "费率(%)", headerWidth: 80, dataCode: "feeRate", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "其中人工(%)", headerWidth: 100, dataCode: "labour", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "其中材料(%)", headerWidth: 100, dataCode: "material", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "其中机械(%)", headerWidth: 100, dataCode: "machine", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "记取位置", headerWidth: 100, dataCode: "position", hAlign: "left", dataType: "String",cellType:'selectButton',getText:'forPosition'}
|
|
|
+ ],
|
|
|
+ view: {
|
|
|
+ lockColumns: [0, 1]
|
|
|
+ },
|
|
|
+ getText:{
|
|
|
+ forPosition:function (item,val) {//记取位置转换
|
|
|
+ return installationFeeObj.getDisplayText(item);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ autoFit:true
|
|
|
+ },
|
|
|
+ modifyEditedObj:null,
|
|
|
selectionTree:null,
|
|
|
selectionTreeController:null,
|
|
|
positionSetting:{
|
|
@@ -275,6 +300,13 @@ let installationFeeObj={
|
|
|
$('#calc_position_from').val(info.sheetName);
|
|
|
$('#calc_position').modal({show:true});
|
|
|
},
|
|
|
+ onModifyFeeRuleEditStarting:function (e,args) {
|
|
|
+ let me = installationFeeObj;
|
|
|
+ let rowData = me.modifyFeeRuleData[args.row];
|
|
|
+ if(me.modifyFeeRuleSetting.header[args.col].dataCode=='feeRate'&&installSectionBase.indexOf(rowData.base)===0){//当基数是分别按人材机乘系数时,费率列只读
|
|
|
+ args.cancel = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
onCalcCheckBoxClick: function(e,info){
|
|
|
let me = installationFeeObj;
|
|
|
var checkboxValue = info.sheet.getCell(info.row, info.col).value();
|
|
@@ -334,12 +366,32 @@ let installationFeeObj={
|
|
|
this.moreFeeRuleSheet.setRowCount(this.moreFeeRuleData.length);
|
|
|
this.moreFeeRuleSheet.clearSelection();
|
|
|
},
|
|
|
+ showModifyFeeRule:function () {
|
|
|
+ let riselection = this.rationInstallSheet.getSelections()[0];
|
|
|
+ let ration_install = this.rationInstallData[riselection.row];
|
|
|
+ let feeRule = _.cloneDeep(projectObj.project.installation_fee.getFeeRuleByID(ration_install.libID,ration_install.ruleId));//不改变原有对象
|
|
|
+ feeRule.libID = ration_install.libID;
|
|
|
+ feeRule.feeType = ration_install.feeType;
|
|
|
+ this.modifyFeeRuleData = [feeRule];
|
|
|
+ this.modifyFeeRuleSheet.setRowCount(0);
|
|
|
+ sheetCommonObj.showData(this.modifyFeeRuleSheet, this.modifyFeeRuleSetting, this.modifyFeeRuleData);
|
|
|
+ this.modifyFeeRuleSheet.setRowCount(this.modifyFeeRuleData.length);
|
|
|
+ let positionCol = _.findIndex(this.modifyFeeRuleSetting.header,{ 'dataCode': "position"});
|
|
|
+ this.modifyFeeRuleSheet.getRange(-1,positionCol, -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(ration_install.feeType=='子目费用'||ration_install.unifiedSetting==1);//设置选取位置列只读
|
|
|
+ },
|
|
|
showRationInstallationData:function (node) {
|
|
|
var installationList = [];
|
|
|
var ration_installation = projectObj.project.ration_installation;
|
|
|
var ration = node.data;
|
|
|
if (ration_installation.datas && ration_installation.datas.length > 0) {
|
|
|
- installationList = _.filter(ration_installation.datas, {'projectID': ration.projectID, 'rationID': ration.ID})
|
|
|
+ for(let i =0; i < ration_installation.datas.length;i++){
|
|
|
+ let ri = ration_installation.datas[i];
|
|
|
+ if(ration.projectID == ri.projectID && ration.ID == ri.rationID){
|
|
|
+ let tem_ri = _.cloneDeep(ri);
|
|
|
+ this.getRIShowData(tem_ri.ruleId,tem_ri,tem_ri);
|
|
|
+ installationList.push(tem_ri);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
this.rationInstallData = installationList;
|
|
|
this.rationInstallSheet.setRowCount(0);
|
|
@@ -357,7 +409,8 @@ let installationFeeObj={
|
|
|
},
|
|
|
refreshRationInstallationRow:function (row) {
|
|
|
let ri = this.rationInstallData[row];
|
|
|
- this.rationInstallData[row] = projectObj.project.ration_installation.getByID(ri.ID);
|
|
|
+ let tem_ri = _.cloneDeep(projectObj.project.ration_installation.getByID(ri.ID));
|
|
|
+ this.rationInstallData[row] = this.getRIShowData(tem_ri.ruleId,tem_ri,tem_ri);
|
|
|
sheetCommonObj.showRowData(this.rationInstallSheet, this.rationInstallSetting,row,this.rationInstallData);
|
|
|
},
|
|
|
refreshFeeDetailRow:function (row) {
|
|
@@ -420,7 +473,9 @@ let installationFeeObj={
|
|
|
if(item.billID&&item.billID!=''){
|
|
|
let node = projectObj.project.mainTree.getNodeByID(item.billID);
|
|
|
if(node){
|
|
|
- return node.data.code +" "+node.data.name;
|
|
|
+ let code = node.data.code?node.data.code:"";
|
|
|
+ let name = node.data.name?node.data.name:"";
|
|
|
+ return code +" "+name;
|
|
|
}
|
|
|
}
|
|
|
return item.position;
|
|
@@ -499,6 +554,15 @@ let installationFeeObj={
|
|
|
this.moreFeeRuleSheet.selectionUnit(1);//0 cell,1 row,2 col;
|
|
|
this.moreFeeRuleSheet.name('moreFeeRuleSheet');
|
|
|
},
|
|
|
+ initModifyFeeRuleSpread:function () {
|
|
|
+ let me = this;
|
|
|
+ me.modifyFeeRuleSpread = SheetDataHelper.createNewSpread($("#modifyFeeRuleSpread")[0]);
|
|
|
+ me.modifyFeeRuleSheet = me.modifyFeeRuleSpread.getSheet(0);
|
|
|
+ me.initSheet(me.modifyFeeRuleSheet, me.modifyFeeRuleSetting);
|
|
|
+ this.modifyFeeRuleSpread.bind(GC.Spread.Sheets.Events.ButtonClicked, this.onPositionButtonClick);
|
|
|
+ me.modifyFeeRuleSheet.bind(GC.Spread.Sheets.Events.EditStarting, this.onModifyFeeRuleEditStarting);
|
|
|
+ this.modifyFeeRuleSheet.name('modifyFeeRuleSheet');
|
|
|
+ },
|
|
|
initRationInstallSheet:function (sheet) {
|
|
|
let me = this;
|
|
|
this.rationInstallSheet = sheet;
|
|
@@ -522,6 +586,8 @@ let installationFeeObj={
|
|
|
locked = true;
|
|
|
}else if(me.rationInstallData[row].unifiedSetting==1){
|
|
|
locked = true;
|
|
|
+ }else if(!me.rationInstallData[row].ruleId||me.rationInstallData[row].ruleId==''){
|
|
|
+ locked = true;
|
|
|
}
|
|
|
installationFeeObj.rationInstallSheet.getCell(row,col).locked(locked);
|
|
|
}
|
|
@@ -609,20 +675,24 @@ let installationFeeObj={
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- getBillDataForSelect:function () {//这里有三个地方共用
|
|
|
+ getBillDataForSelect:function () {//这里有四个地方共用
|
|
|
let controller = projectObj.mainController, project = projectObj.project;
|
|
|
let from = $('#calc_position_from').val();
|
|
|
- let rootNode = null,allNodes = [],datas = [],billID = null,feeItem=null;
|
|
|
+ let rootNode = null,allNodes = [],datas = [],billID = null,selectedItem=null;
|
|
|
if(from=="rationInstallSheet"){
|
|
|
let riSelection = this.rationInstallSheet.getSelections()[0];
|
|
|
- feeItem = this.rationInstallData[riSelection.row];
|
|
|
- billID = feeItem.billID;
|
|
|
+ selectedItem = this.rationInstallData[riSelection.row];
|
|
|
+ billID = selectedItem.billID;
|
|
|
+ }else if(from=="modifyFeeRuleSheet"){
|
|
|
+ let riSelection = this.modifyFeeRuleSheet.getSelections()[0];
|
|
|
+ selectedItem = this.modifyFeeRuleData[riSelection.row];
|
|
|
+ billID = selectedItem.billID;
|
|
|
}else {
|
|
|
let selection = this.feeItemSheet.getSelections()[0];
|
|
|
- feeItem = this.feeItemData[selection.row];
|
|
|
+ selectedItem = this.feeItemData[selection.row];
|
|
|
if(from =="feeItemSheet"){
|
|
|
- if(feeItem.billID){
|
|
|
- billID = feeItem.billID;
|
|
|
+ if(selectedItem.billID){
|
|
|
+ billID = selectedItem.billID;
|
|
|
}
|
|
|
}else if(from =="feeDetailSheet") {
|
|
|
let detailSelection = this.feeDetailSheet.getSelections()[0];
|
|
@@ -632,9 +702,9 @@ let installationFeeObj={
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(feeItem.feeType=='措施费用'){
|
|
|
+ if(selectedItem.feeType=='措施费用'){
|
|
|
rootNode = project.Bills.getMeasureNode(controller);
|
|
|
- }else if(feeItem.feeType=='分项费用'){
|
|
|
+ }else if(selectedItem.feeType=='分项费用'){
|
|
|
rootNode = project.Bills.getFBFXNode(controller);
|
|
|
}
|
|
|
allNodes.push(rootNode);
|
|
@@ -678,27 +748,72 @@ let installationFeeObj={
|
|
|
this.updateFeeRulePosition(pobj.recode);
|
|
|
}else if(from=='rationInstallSheet'){
|
|
|
this.updateRationInstallPosition(pobj.recode);
|
|
|
+ }else if(from =='modifyFeeRuleSheet'){
|
|
|
+ this.updateModifyFeeRulePosition(pobj.recode);
|
|
|
}
|
|
|
}
|
|
|
$("#calc_position").modal('hide');
|
|
|
},
|
|
|
- updateRationInstallPosition:function(recode){
|
|
|
+ confirmFeeRuleModify:function () {
|
|
|
+ let me = this,installation_fee = projectObj.project.installation_fee;
|
|
|
+ let modifyRule = me.modifyFeeRuleData[0];
|
|
|
+ let updateMap = null;
|
|
|
+ console.log(me.modifyEditedObj);
|
|
|
+ if(me.modifyEditedObj==null){
|
|
|
+ $("#modify_feeRule").modal('hide');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let feeRule = installation_fee.getFeeRuleByID(modifyRule.libID,modifyRule.ID);
|
|
|
+ if(feeRule){
|
|
|
+ for(let mkey in me.modifyEditedObj){
|
|
|
+ if(me.modifyEditedObj[mkey]!=feeRule[mkey]){//说明是值发生了改变
|
|
|
+ updateMap==null?updateMap={}:"";
|
|
|
+ updateMap[mkey] =me.modifyEditedObj[mkey];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(updateMap){//如果有需要更新的属性
|
|
|
+ if(modifyRule.base&&installSectionBase.indexOf(modifyRule.base)>0){
|
|
|
+ let sum = modifyRule.labour+modifyRule.material+modifyRule.machine;//三项的和要等于100
|
|
|
+ if(sum!=100){
|
|
|
+ alert("人工、材料、机械的和应等于100,请重新输入。");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $("#modify_feeRule").modal('hide');
|
|
|
+ installation_fee.updateFeeRule(updateMap,modifyRule.libID,modifyRule.ID,function () {
|
|
|
+ me.refreshRationInstallationRow(me.rationInstallSheet.getSelections()[0].row);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ updateModifyFeeRulePosition:function (recode) {
|
|
|
let me = this;
|
|
|
+ let riselection = me.modifyFeeRuleSheet.getSelections()[0];
|
|
|
+ let modifyFee = me.modifyFeeRuleData[riselection.row];
|
|
|
+ let positionCol = _.findIndex(me.modifyFeeRuleSetting.header,{ 'dataCode': "position"});
|
|
|
+ if(modifyFee.billID == recode.ID){//和原来的位置没变
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if(me.modifyEditedObj==null){//初始化
|
|
|
+ me.modifyEditedObj={};
|
|
|
+ }
|
|
|
+ me.modifyEditedObj.position = recode.code;
|
|
|
+ me.modifyEditedObj.billID = recode.ID;
|
|
|
+ modifyFee.position = recode.code;
|
|
|
+ modifyFee.billID = recode.ID;
|
|
|
+ me.modifyFeeRuleSheet.setValue(riselection.row,positionCol,me.getDisplayText(modifyFee));
|
|
|
+ console.log(me.modifyEditedObj);
|
|
|
+ },
|
|
|
+ updateRationInstallPosition:function(recode){
|
|
|
+ let me = this, installation_fee = projectObj.project.installation_fee;
|
|
|
let riselection = me.rationInstallSheet.getSelections()[0];
|
|
|
let rationInstall = me.rationInstallData[riselection.row];
|
|
|
if(rationInstall.billID == recode.ID){//和原来的位置没变
|
|
|
- return
|
|
|
+ return;
|
|
|
}
|
|
|
- let updateData = {
|
|
|
- projectID:rationInstall.projectID,
|
|
|
- ID:rationInstall.ID,
|
|
|
- position:recode.code,
|
|
|
- billID:recode.ID
|
|
|
- };
|
|
|
- projectObj.project.ration_installation.update(updateData,function (data) {
|
|
|
+ installation_fee.updateFeeRule({position:recode.code,billID:recode.ID},rationInstall.libID,rationInstall.ruleId,function (){
|
|
|
me.refreshRationInstallationRow(riselection.row);
|
|
|
});
|
|
|
-
|
|
|
},
|
|
|
updateFeeRulePosition:function (recode) {
|
|
|
let me = this;
|
|
@@ -706,42 +821,30 @@ let installationFeeObj={
|
|
|
let feeItem = this.feeItemData[itemSelection.row];
|
|
|
let detailSelection = this.feeDetailSheet.getSelections()[0];
|
|
|
let detail = this.feeDetailData[detailSelection.row];
|
|
|
- let itemUpdateData = null;
|
|
|
- let updateData = null;
|
|
|
if(detail.billID ==recode.ID ){//和原来的位置没变
|
|
|
return;
|
|
|
}
|
|
|
- let detailUpdateData = me.getDetailUpdateData(detail,{position:recode.code,billID:recode.ID},'feeRule');
|
|
|
- if(recode.ID!=feeItem.billID){//不一样的情况下要清空费用项的选取位置
|
|
|
- itemUpdateData = me.getFeeItemUpdateData(feeItem,{ position: "", billID:""});
|
|
|
- }
|
|
|
- itemUpdateData==null?updateData = detailUpdateData:updateData=[detailUpdateData,itemUpdateData];
|
|
|
- $.bootstrapLoading.start();
|
|
|
- me.submitInstallationUpdate(updateData,function (data) {
|
|
|
- //更新缓存
|
|
|
- if(itemUpdateData){
|
|
|
+ projectObj.project.installation_fee.updateFeeRule({position:recode.code,billID:recode.ID},feeItem.libID,detail.feeRuleId,function (isFeeItemUpdate){
|
|
|
+ if(isFeeItemUpdate){
|
|
|
feeItem.position ="";
|
|
|
feeItem.billID = "";
|
|
|
feeItem.displayPosition = "";
|
|
|
me.feeItemSheet.getCell(itemSelection.row, 3).value(feeItem.displayPosition);
|
|
|
}
|
|
|
- let feeRule = projectObj.project.installation_fee.getFeeRuleByID(feeItem.libID,detail.feeRuleId);
|
|
|
- feeRule.position = recode.code;
|
|
|
- feeRule.billID = recode.ID;
|
|
|
me.showFeeDetailData(feeItem.libID,feeItem.ID);
|
|
|
- $.bootstrapLoading.end();
|
|
|
});
|
|
|
},
|
|
|
updateFeeRuleToSection:function (row) {
|
|
|
- let me = this;
|
|
|
+ let me = this, installation_fee=projectObj.project.installation_fee;
|
|
|
let feeRule = me.moreFeeRuleData[row];
|
|
|
let detailSelection = me.feeDetailSheet.getSelections()[0];
|
|
|
let detail = this.feeDetailData[detailSelection.row];
|
|
|
- let updateData = me.getDetailUpdateData(detail,{"feeRuleId":feeRule.ID},'installSection');
|
|
|
+ let rationInstallations = [];
|
|
|
+ let updateData = installation_fee.getSectionUpdateData(detail.libID,detail.ID,{"feeRuleId":feeRule.ID});
|
|
|
+ installation_fee.getRIUpdateDataBySectionUpdate(detail.ID,feeRule.ID,rationInstallations);//生成受影响的定额安装增加费并加入到数组中
|
|
|
$.bootstrapLoading.start();
|
|
|
- me.submitInstallationUpdate(updateData,function (data) {
|
|
|
- let install_fee = projectObj.project.installation_fee;
|
|
|
- let section = install_fee.getInstallSectionByID(detail.libID,detail.ID);
|
|
|
+ installation_fee.submitInstallationUpdate(updateData,rationInstallations,function (data) {
|
|
|
+ let section = installation_fee.getInstallSectionByID(detail.libID,detail.ID);
|
|
|
section.feeRuleId = feeRule.ID;
|
|
|
me.refreshFeeDetailRow(detailSelection.row);
|
|
|
$.bootstrapLoading.end();
|
|
@@ -756,7 +859,12 @@ let installationFeeObj={
|
|
|
me.refreshRationInstallationRow(ri_row);
|
|
|
return;
|
|
|
}
|
|
|
- let updateData = me.getRIRuleUpdateData(feeRule.ID,raInstallation);
|
|
|
+ let updateData = {
|
|
|
+ ID:raInstallation.ID,
|
|
|
+ projectID:raInstallation.projectID,
|
|
|
+ ruleId:feeRule.ID,
|
|
|
+ unifiedSetting:0
|
|
|
+ };
|
|
|
projectObj.project.ration_installation.update(updateData,function (data) {
|
|
|
me.refreshRationInstallationRow(ri_row);
|
|
|
});
|
|
@@ -768,11 +876,11 @@ let installationFeeObj={
|
|
|
if(feeItem.billID ==recode.ID ){//和原来的位置没变
|
|
|
return;
|
|
|
}
|
|
|
- let updateData = me.getFeeItemUpdateData(feeItem,{ position: recode.code, billID:recode.ID});
|
|
|
- let [dataArray,impacRules] = me.getFeeRuleUpdateData(feeItem,recode);
|
|
|
+ let updateData = projectObj.project.installation_fee.getFeeItemUpdateData(feeItem.libID,feeItem.ID,{ position: recode.code, billID:recode.ID});
|
|
|
+ let [dataArray,impacRules] = me.getFeeRuleUpdateDataByFeeItem(feeItem,recode);
|
|
|
dataArray.push(updateData);
|
|
|
$.bootstrapLoading.start();
|
|
|
- me.submitInstallationUpdate(dataArray,function (data) {
|
|
|
+ projectObj.project.installation_fee.submitInstallationUpdate(dataArray,null,function (data) {
|
|
|
//更新缓存
|
|
|
feeItem.position =recode.code;
|
|
|
feeItem.billID = recode.ID;
|
|
@@ -786,7 +894,7 @@ let installationFeeObj={
|
|
|
$.bootstrapLoading.end();
|
|
|
});
|
|
|
},
|
|
|
- getFeeRuleUpdateData : function (feeItem,recode) {
|
|
|
+ getFeeRuleUpdateDataByFeeItem : function (feeItem,recode) {
|
|
|
let dataArray = [];
|
|
|
let impacRules = projectObj.project.installation_fee.getFeeRuleByFeeItem(feeItem);
|
|
|
for(let ir of impacRules){
|
|
@@ -810,6 +918,9 @@ let installationFeeObj={
|
|
|
if(info.sheetName == 'rationInstallSheet'){
|
|
|
installationFeeObj.onRationInstallValueChange(e,info);
|
|
|
}
|
|
|
+ if(info.sheetName == 'modifyFeeRuleSheet'){
|
|
|
+ installationFeeObj.modifyFeeRuleValueChange(e,info);
|
|
|
+ }
|
|
|
},
|
|
|
onFeeItemValueChange:function (e,info) {
|
|
|
let me = installationFeeObj;
|
|
@@ -817,13 +928,8 @@ let installationFeeObj={
|
|
|
let header = this.feeItemSetting.header[info.col];
|
|
|
let doc={};
|
|
|
doc[header.dataCode] = info.newValue;
|
|
|
- let updateData = installationFeeObj.getFeeItemUpdateData(feeItem,doc);
|
|
|
- $.bootstrapLoading.start();
|
|
|
- me.submitInstallationUpdate(updateData,function (data) {
|
|
|
- //更新缓存
|
|
|
- feeItem[header.dataCode]=info.newValue;
|
|
|
+ projectObj.project.installation_fee.updateFeeItem(doc,feeItem.libID,feeItem.ID,function () {
|
|
|
me.feeItemSheet.getCell(info.row, info.col).value(info.newValue);
|
|
|
- $.bootstrapLoading.end();
|
|
|
});
|
|
|
},
|
|
|
onRationInstallValueChange:function (e,info) {
|
|
@@ -831,9 +937,12 @@ let installationFeeObj={
|
|
|
if(info.newValue==info.oldValue){
|
|
|
return;
|
|
|
}
|
|
|
- let updateData = null;
|
|
|
let raInstallation = me.rationInstallData[info.row];
|
|
|
let fieldID = me.rationInstallSetting.header[info.col].dataCode;
|
|
|
+ let updateData = {
|
|
|
+ projectID:raInstallation.projectID,
|
|
|
+ ID: raInstallation.ID
|
|
|
+ };
|
|
|
if(fieldID=='ruleId'){//选择新的规则项
|
|
|
if(info.newValue=="more"){//选择的是更多
|
|
|
$("#more_from").val("rationInstallation");
|
|
@@ -845,28 +954,65 @@ let installationFeeObj={
|
|
|
}else if(info.newValue == raInstallation.rule){
|
|
|
return;
|
|
|
}else {
|
|
|
- updateData = me.getRIRuleUpdateData(info.newValue,raInstallation);
|
|
|
+ updateData.unifiedSetting = 0;//切换费用规则时去掉统一设置勾选。
|
|
|
}
|
|
|
- }else {
|
|
|
- updateData = {
|
|
|
- projectID:raInstallation.projectID,
|
|
|
- ID: raInstallation.ID
|
|
|
- };
|
|
|
- updateData[fieldID] = info.newValue;
|
|
|
}
|
|
|
+ if(fieldID=='unifiedSetting'){//勾选统一设置
|
|
|
+ updateData.ruleId = '';
|
|
|
+ let feeItem = projectObj.project.installation_fee.getFeeItemByID(raInstallation.libID,raInstallation.feeItemId);
|
|
|
+ let section = projectObj.project.installation_fee.getInstallSectionByID(raInstallation.libID,raInstallation.sectionId);
|
|
|
+ if(section&&feeItem&&feeItem.isCal == 1){
|
|
|
+ updateData.ruleId = section.feeRuleId;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ updateData[fieldID] = info.newValue;
|
|
|
projectObj.project.ration_installation.update(updateData,function (data) {
|
|
|
me.refreshRationInstallationRow(info.row);
|
|
|
});
|
|
|
},
|
|
|
+ modifyFeeRuleValueChange:function (e,info) {
|
|
|
+ let me = installationFeeObj;
|
|
|
+ let fieldID = me.modifyFeeRuleSetting.header[info.col].dataCode;
|
|
|
+ let value = info.newValue;
|
|
|
+ if(me.modifyEditedObj==null){//初始化
|
|
|
+ me.modifyEditedObj={};
|
|
|
+ }
|
|
|
+ if(fieldID=="position"){//改变选取位置时不触发
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(fieldID == 'base'){//修改基数
|
|
|
+ if(installSectionBase.indexOf(info.newValue)===0){//如果选择的是“人材机乘系数”时,清空“费率(%)”列的值
|
|
|
+ me.modifyEditedObj.feeRate = null;
|
|
|
+ let feeRateCol = _.findIndex(me.modifyFeeRuleSetting.header,{ 'dataCode': "feeRate"});
|
|
|
+ me.modifyFeeRuleSheet.setValue(info.row, feeRateCol, null);
|
|
|
+ }
|
|
|
+ }else if(fieldID=="feeRate"||fieldID=='machine'||fieldID=='material'||fieldID=="labour"){
|
|
|
+ if(value != null){
|
|
|
+ if(number_util.isNumber(value)){
|
|
|
+ value = scMathUtil.roundForObj(info.newValue,getDecimal("feeRate"));
|
|
|
+ me.modifyFeeRuleSheet.setValue(info.row, info.col, value);
|
|
|
+ }else {
|
|
|
+ alert('当前输入的数据类型不正确,请重新输入。');
|
|
|
+ me.modifyFeeRuleSheet.setValue(info.row, info.col, info.oldValue);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ me.modifyEditedObj[fieldID] = value;
|
|
|
+ me.modifyFeeRuleData[info.row][fieldID] = value;
|
|
|
+ console.log(me.modifyEditedObj);
|
|
|
+ },
|
|
|
onFeeDetailValueChange:function (e,info) {
|
|
|
if(info.newValue==info.oldValue){
|
|
|
return;
|
|
|
}
|
|
|
let me = installationFeeObj;
|
|
|
+ let install_fee = projectObj.project.installation_fee;
|
|
|
let feeDetail = this.feeDetailData[info.row];
|
|
|
let header = this.feeDetailSetting.header[info.col];
|
|
|
let fieldID = header.dataCode;
|
|
|
let updateData = null;
|
|
|
+ let rationInstallations=null;
|
|
|
if(fieldID == 'rule'){//选择新的规则项
|
|
|
if(info.newValue=="more"){//选择的是更多
|
|
|
$("#more_from").val("feeDetail");
|
|
@@ -878,7 +1024,9 @@ let installationFeeObj={
|
|
|
}else if(info.newValue == feeDetail.ruleName){
|
|
|
return;
|
|
|
}else {
|
|
|
- updateData = me.getDetailUpdateData(feeDetail,{"feeRuleId":info.newValue},'installSection');
|
|
|
+ rationInstallations=[];
|
|
|
+ updateData = install_fee.getSectionUpdateData(feeDetail.libID,feeDetail.ID,{"feeRuleId":info.newValue});
|
|
|
+ install_fee.getRIUpdateDataBySectionUpdate(feeDetail.ID,info.newValue,rationInstallations);//生成受影响的定额安装增加费并加入到数组中
|
|
|
}
|
|
|
|
|
|
}else if(fieldID == 'base'){
|
|
@@ -889,7 +1037,7 @@ let installationFeeObj={
|
|
|
if(installSectionBase.indexOf(info.newValue)===0){//如果选择的是“人材机乘系数”时,清空“费率(%)”列的值
|
|
|
doc.feeRate = null;
|
|
|
}
|
|
|
- updateData = me.getDetailUpdateData(feeDetail,doc,'feeRule');
|
|
|
+ updateData = install_fee.getFeeRuleUpdateData(feeDetail.libID,feeDetail.feeRuleId,doc);
|
|
|
}
|
|
|
|
|
|
}else {
|
|
@@ -906,10 +1054,9 @@ let installationFeeObj={
|
|
|
let doc = {};
|
|
|
doc[fieldID] = info.newValue;
|
|
|
feeDetail[fieldID] = info.newValue;
|
|
|
- updateData = me.getDetailUpdateData(feeDetail,doc,'feeRule');
|
|
|
+ updateData = install_fee.getFeeRuleUpdateData(feeDetail.libID,feeDetail.feeRuleId,doc);
|
|
|
}
|
|
|
- me.submitInstallationUpdate(updateData,function (data) {
|
|
|
- let install_fee = projectObj.project.installation_fee;
|
|
|
+ install_fee.submitInstallationUpdate(updateData,rationInstallations,function (data) {
|
|
|
if(updateData){
|
|
|
if(updateData.type=="installSection"){
|
|
|
let section = install_fee.getInstallSectionByID(feeDetail.libID,feeDetail.ID);
|
|
@@ -940,7 +1087,7 @@ let installationFeeObj={
|
|
|
let me = installationFeeObj;
|
|
|
let canChange = true;
|
|
|
let os = null;
|
|
|
- if(info.newSelections[0].row == info.oldSelections[0].row){//没有换行
|
|
|
+ if(info.oldSelections==undefined||info.newSelections[0].row == info.oldSelections[0].row){//没有换行
|
|
|
return canChange;
|
|
|
}
|
|
|
if(info.sheetName=='feeDetailSheet'){
|
|
@@ -954,7 +1101,7 @@ let installationFeeObj={
|
|
|
if(detail.base&&installSectionBase.indexOf(detail.base)>0){
|
|
|
let sum = detail.labour+detail.material+detail.machine;//三项的和要等于100
|
|
|
if(sum!=100){
|
|
|
- setTimeout(function () {//这里须用延时执行的办法,不然的弹窗确认窗口会和spreadjs 的事件有冲突,造成定额工料机数据不会根据树结点更新的问题
|
|
|
+ setTimeout(function () {//这里须用延时执行的办法,不然的弹窗确认窗口会和spreadjs 的事件有冲突
|
|
|
alert("人工、材料、机械的和应等于100,请重新输入。");
|
|
|
}, 200);
|
|
|
canChange = false;
|
|
@@ -963,14 +1110,8 @@ let installationFeeObj={
|
|
|
}
|
|
|
return canChange;
|
|
|
},
|
|
|
- getRIRuleUpdateData:function (newRuleID,rationInstallation) {
|
|
|
- let data={
|
|
|
- ID:rationInstallation.ID,
|
|
|
- projectID:rationInstallation.projectID,
|
|
|
- ruleId:newRuleID,
|
|
|
- unifiedSetting:0
|
|
|
- };
|
|
|
- if(newRuleID==''){//选择的是无
|
|
|
+ getRIShowData : function (ruleID,rationInstallation,data) {
|
|
|
+ if(ruleID==''){//选择的是无
|
|
|
data.code = '';
|
|
|
data.rule = '';
|
|
|
data.base = '';
|
|
@@ -981,7 +1122,7 @@ let installationFeeObj={
|
|
|
data.position = '';
|
|
|
data.billID = '';
|
|
|
}
|
|
|
- let feeRule = projectObj.project.installation_fee.getFeeRuleByID(rationInstallation.libID,newRuleID);
|
|
|
+ let feeRule = projectObj.project.installation_fee.getFeeRuleByID(rationInstallation.libID,ruleID);
|
|
|
if(feeRule){
|
|
|
data.code = feeRule.code;
|
|
|
data.rule = feeRule.rule;
|
|
@@ -993,34 +1134,18 @@ let installationFeeObj={
|
|
|
data.position = feeRule.position;
|
|
|
data.billID = feeRule.billID;
|
|
|
}
|
|
|
+ let feeItem = projectObj.project.installation_fee.getFeeItemByID(rationInstallation.libID,rationInstallation.feeItemId);
|
|
|
+ if(feeItem){
|
|
|
+ data.feeType = feeItem.feeType;
|
|
|
+ }
|
|
|
return data;
|
|
|
},
|
|
|
- getDetailUpdateData : function (detail,doc,type) {//type:installSection/feeRule
|
|
|
- let installationFee = projectObj.project.installation_fee.getInstallationFeeByLibID(detail.libID);
|
|
|
- let updateData = {
|
|
|
- ID:installationFee.ID,
|
|
|
- itemID:type=="installSection"?detail.ID:detail.feeRuleId,
|
|
|
- type:type,
|
|
|
- doc:doc
|
|
|
- };
|
|
|
- return updateData;
|
|
|
- },
|
|
|
- getFeeItemUpdateData : function (item,doc) {
|
|
|
- let updateData = {
|
|
|
- ID:item.installFeeID,
|
|
|
- itemID:item.ID,
|
|
|
- type:'installFeeItem',
|
|
|
- doc:doc
|
|
|
- };
|
|
|
- return updateData;
|
|
|
+ calcInstallationFee:function(){//计算定额安装费
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
},
|
|
|
- submitInstallationUpdate:function (updateData,callback) {
|
|
|
- if(updateData){
|
|
|
- CommonAjax.post('/installation/updateInstallationFee',{'projectID':projectInfoObj.projectInfo.ID,'updateData':updateData},function (data) {
|
|
|
- callback(data);
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
};
|
|
|
|
|
|
|
|
@@ -1047,9 +1172,14 @@ $(function () {
|
|
|
installationFeeObj.showMoreFeeRule();
|
|
|
});
|
|
|
|
|
|
- /* $('#calc_position').on('hidden.bs.modal',function () {
|
|
|
+ $('#modify_feeRule').on('shown.bs.modal',function () {
|
|
|
+ installationFeeObj.modifyEditedObj=null;//清空已编辑信息
|
|
|
+ if(installationFeeObj.modifyFeeRuleSpread == null){//修改规则表格初始化
|
|
|
+ installationFeeObj.initModifyFeeRuleSpread();
|
|
|
+ }
|
|
|
+ installationFeeObj.showModifyFeeRule();
|
|
|
+ });
|
|
|
|
|
|
- });*/
|
|
|
$('#positionSheetFilter').click(function (){
|
|
|
installationFeeObj.positionSelectedObject = null;//清空选中记录
|
|
|
installationFeeObj.filterSelectionNodes();
|
|
@@ -1062,6 +1192,9 @@ $(function () {
|
|
|
$('#select_position_confirm').click(function (){
|
|
|
installationFeeObj.selectPositionConfirm();
|
|
|
});
|
|
|
+ $('#modify_feeRule_confirm').click(function (){
|
|
|
+ installationFeeObj.confirmFeeRuleModify();
|
|
|
+ });
|
|
|
$('#calc_installation_fee_confirm').click(function (){
|
|
|
let me = installationFeeObj;
|
|
|
let info = {
|
|
@@ -1128,6 +1261,5 @@ $(function () {
|
|
|
}else if(from == 'rationInstallation'){//在定额安装增加费那里点击更多
|
|
|
me.refreshRationInstallationRow(me.rationInstallSheet.getSelections()[0].row);
|
|
|
}
|
|
|
-
|
|
|
});
|
|
|
});
|