|
@@ -3,25 +3,133 @@
|
|
|
*/
|
|
|
let installationFeeObj={
|
|
|
rationInstallSheet:null,
|
|
|
- installationFeeSpread:null,
|
|
|
- rationInstallsetting: {
|
|
|
+ feeItemSpread:null,
|
|
|
+ feeItemSheet:null,
|
|
|
+ feeItemData:null,
|
|
|
+ feeItemSetting:{
|
|
|
header: [
|
|
|
- {headerName: "按统一设置", headerWidth: 100, dataCode: "name", dataType: "String"},
|
|
|
- {headerName: "费用项", headerWidth: 120, dataCode: "stdValue", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "费用规则", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "编码", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "基数", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "费率(%)", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "其中人工(%)", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "其中材料(%)", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "其中机械(%)", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "费用类型", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"},
|
|
|
- {headerName: "记取位置", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"}
|
|
|
+ {headerName: "计取", headerWidth: 90, 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'}
|
|
|
],
|
|
|
view: {
|
|
|
- lockColumns: [0, 1]
|
|
|
+ lockColumns: [0,1]
|
|
|
}
|
|
|
},
|
|
|
+ feeDetailSpread:null,
|
|
|
+ feeDetailSheet:null,
|
|
|
+ feeDetailData:null,
|
|
|
+ feeDetailSetting: {
|
|
|
+ header: [
|
|
|
+ {headerName: "分册章节", headerWidth: 150, dataCode: "name", dataType: "String"},
|
|
|
+ {headerName: "费用规则", headerWidth: 220, dataCode: "rule", hAlign: "left", dataType: "String"},
|
|
|
+ {headerName: "编码", headerWidth: 70, dataCode: "code", hAlign: "left", dataType: "String"},
|
|
|
+ {headerName: "基数", headerWidth: 80, dataCode: "base", hAlign: "left", dataType: "String"},
|
|
|
+ {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'}
|
|
|
+ ],
|
|
|
+ view: {
|
|
|
+ lockColumns: [0, 2]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ positionSpread:null,
|
|
|
+ positionSheet:null,
|
|
|
+ positionData:null,
|
|
|
+ selectionTree:null,
|
|
|
+ selectionTreeController:null,
|
|
|
+ positionSetting:{
|
|
|
+ "emptyRows":0,
|
|
|
+ "headRows":1,
|
|
|
+ "headRowHeight":[30],
|
|
|
+ "defaultRowHeight": 21,
|
|
|
+ "treeCol": 0,
|
|
|
+ "cols":[
|
|
|
+ {
|
|
|
+ "width":250,
|
|
|
+ "readOnly": true,
|
|
|
+ "head":{
|
|
|
+ "titleNames":["编码"],
|
|
|
+ "spanCols":[1],
|
|
|
+ "spanRows":[1],
|
|
|
+ "vAlign":[1],
|
|
|
+ "hAlign":[1],
|
|
|
+ "font":["Arial"]
|
|
|
+ },
|
|
|
+ "data":{
|
|
|
+ "field":"code",
|
|
|
+ "vAlign":1,
|
|
|
+ "hAlign":0,
|
|
|
+ "font":"Arial"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "width":100,
|
|
|
+ "readOnly": true,
|
|
|
+ "head":{
|
|
|
+ "titleNames":["类别"],
|
|
|
+ "spanCols":[1],
|
|
|
+ "spanRows":[1],
|
|
|
+ "vAlign":[1],
|
|
|
+ "hAlign":[1],
|
|
|
+ "font":["Arial"]
|
|
|
+ },
|
|
|
+ "data":{
|
|
|
+ "field":"type",
|
|
|
+ "vAlign":1,
|
|
|
+ "hAlign":1,
|
|
|
+ "font":"Arial"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "width":250,
|
|
|
+ "readOnly": true,
|
|
|
+ "head":{
|
|
|
+ "titleNames":["名称"],
|
|
|
+ "spanCols":[1],
|
|
|
+ "spanRows":[1],
|
|
|
+ "vAlign":[1],
|
|
|
+ "hAlign":[1],
|
|
|
+ "font":["Arial"]
|
|
|
+ },
|
|
|
+ "data":{
|
|
|
+ "field":"name",
|
|
|
+ "vAlign":0,
|
|
|
+ "hAlign":0,
|
|
|
+ "font":"Arial"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "width":100,
|
|
|
+ "readOnly": true,
|
|
|
+ "head":{
|
|
|
+ "titleNames":["具体位置"],
|
|
|
+ "spanCols":[1],
|
|
|
+ "spanRows":[1],
|
|
|
+ "vAlign":[1],
|
|
|
+ "hAlign":[1],
|
|
|
+ "font":["Arial"]
|
|
|
+ },
|
|
|
+ "data":{
|
|
|
+ "field":"selected",
|
|
|
+ "vAlign":1,
|
|
|
+ "hAlign":1,
|
|
|
+ "font":"Arial",
|
|
|
+ "cellType":function (node) {
|
|
|
+ if(node.data.canSelect == true){
|
|
|
+ return new GC.Spread.Sheets.CellTypes.CheckBox();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+
|
|
|
+ },
|
|
|
+ positionData:null,
|
|
|
+ positionSelectedObject:null,
|
|
|
showCalcInstallSettingDiv:function () {
|
|
|
$("#calc_installation_fee").modal({show:true});
|
|
|
},
|
|
@@ -31,16 +139,531 @@ let installationFeeObj={
|
|
|
if(engineering==engineeringType.BUILD_IN){//如果是安装工程,则显示
|
|
|
$('#AZZJF_div').show();
|
|
|
}
|
|
|
+ },
|
|
|
+ initInstallationFeeSpread:function(){
|
|
|
+ //初始化费用项表格
|
|
|
+ this.feeItemSpread = SheetDataHelper.createNewSpread($("#feeItemSheet")[0]);
|
|
|
+ this.feeItemSheet = this.feeItemSpread.getSheet(0);
|
|
|
+ this.initSheet(this.feeItemSheet,this.feeItemSetting);
|
|
|
+ this.feeItemSheet.name('feeItemSheet');
|
|
|
+
|
|
|
+ this.feeItemSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, this.onFeeItemSelectionChange);
|
|
|
+ this.feeItemSpread.bind(GC.Spread.Sheets.Events.ButtonClicked, this.onSelectButtonClick);
|
|
|
+ this.showFeeItemData();
|
|
|
+
|
|
|
+ //初始化章节项表格
|
|
|
+ this.feeDetailSpread = SheetDataHelper.createNewSpread($("#feeDetailSheet")[0]);
|
|
|
+ this.feeDetailSheet = this.feeDetailSpread.getSheet(0);
|
|
|
+ this.initSheet(this.feeDetailSheet,this.feeDetailSetting);
|
|
|
+ this.feeDetailSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onFeeDetailSelectionChange);
|
|
|
+ this.feeDetailSpread.bind(GC.Spread.Sheets.Events.ButtonClicked, this.onSelectButtonClick);
|
|
|
+ this.feeDetailSheet.name('feeDetailSheet');
|
|
|
+ this.feeDetailSheet.setRowCount(0);
|
|
|
+ },
|
|
|
+ onFeeItemSelectionChange:function (e, info) {
|
|
|
+ let newSelections = info.newSelections;
|
|
|
+ let row = newSelections[0].row;
|
|
|
+ let selected = installationFeeObj.feeItemData[row];
|
|
|
+ if(selected&&selected.libID){//说明是选中了费用项
|
|
|
+ installationFeeObj.positionButtonChecking(row,selected);
|
|
|
+ installationFeeObj.showFeeDetailData(selected.libID,selected.ID);
|
|
|
+ }else {
|
|
|
+ installationFeeObj.showFeeDetailData();
|
|
|
+ }
|
|
|
+ installationFeeObj.feeItemSheet.repaint();
|
|
|
+ },
|
|
|
+ onFeeDetailSelectionChange:function (e,info) {
|
|
|
+
|
|
|
+ installationFeeObj.feeDetailSheet.repaint();
|
|
|
+ },
|
|
|
+ positionButtonChecking:function (row,recode) {//按钮有效性检查
|
|
|
+ if(recode.feeType){
|
|
|
+ installationFeeObj.feeItemSheet.getCell(row,3).locked(recode.feeType=='子目费用');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onSelectButtonClick:function (e,info) {
|
|
|
+ let sheet = info.sheet, row = info.row, col = info.col;
|
|
|
+ let cellType = sheet.getCellType(row, col);
|
|
|
+ if(cellType instanceof GC.Spread.Sheets.CellTypes.Button){
|
|
|
+ installationFeeObj.onPositionButtonClick(e,info);
|
|
|
+ }else {
|
|
|
+ installationFeeObj.onCalcCheckBoxClick(e,info);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onPositionButtonClick : function(e,info){//选取位置按钮
|
|
|
+ $('#calc_position_from').val(info.sheetName);
|
|
|
+ $('#calc_position').modal({show:true});
|
|
|
+ },
|
|
|
+ onCalcCheckBoxClick: function(e,info){
|
|
|
+ let me = installationFeeObj;
|
|
|
+ var checkboxValue = info.sheet.getCell(info.row, info.col).value();
|
|
|
+ var newval = 0;
|
|
|
+ if (checkboxValue) {
|
|
|
+ newval = 0;
|
|
|
+ info.sheet.getCell(info.row, info.col).value(newval);
|
|
|
+ } else {
|
|
|
+ newval = 1;
|
|
|
+ info.sheet.getCell(info.row, info.col).value(newval);
|
|
|
+ }
|
|
|
+ info.newValue = newval;
|
|
|
+ me.onFeeItemValueChange(e,info);
|
|
|
+ },
|
|
|
+ showFeeItemData:function () {
|
|
|
+ this.feeItemData = this.getFeeItemData(projectObj.project.installation_fee.datas);
|
|
|
+ this.feeItemSheet.setRowCount(0);
|
|
|
+ this.feeItemSheet.getRange(-1, 1, -1, 1).cellType(gljOprObj.getTreeNodeCellType(this.feeItemData));
|
|
|
+ sheetCommonObj.showData(this.feeItemSheet, this.feeItemSetting, this.feeItemData);
|
|
|
+ this.feeItemSheet.setRowCount(this.feeItemData.length);
|
|
|
+ for(let i =0 ;i < this.feeItemData.length;i++){
|
|
|
+ let data = this.feeItemData[i];
|
|
|
+ if(data.hasOwnProperty('subList')){//根节点不可编辑
|
|
|
+ this.feeItemSheet.getRange(i,-1, 1, -1, GC.Spread.Sheets.SheetArea.viewport).locked(true);//this.feeItemSheet.getCell(i, 2).locked(true);
|
|
|
+ this.feeItemSheet.getRange(i,2,1,2).cellType(new GC.Spread.Sheets.CellTypes.Text());//费用类型、记取位置两列替换成普通的单元格;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ showFeeDetailData:function (libID,feeItemId) {
|
|
|
+ this.feeDetailSheet.setRowCount(0);
|
|
|
+ if(libID&&feeItemId){
|
|
|
+ this.feeDetailData = this.getFeeDetailData(libID,feeItemId);
|
|
|
+ }else {
|
|
|
+ this.feeDetailData = []
|
|
|
+ }
|
|
|
+ sheetCommonObj.showData(this.feeDetailSheet, this.feeDetailSetting, this.feeDetailData);
|
|
|
+ this.feeDetailSheet.setRowCount(this.feeDetailData.length);
|
|
|
+ if(this.feeDetailData.length>0){
|
|
|
+ this.feeDetailSheet.suspendPaint();
|
|
|
+ this.feeDetailSheet.suspendEvent();
|
|
|
+ this.feeDetailSheet.getRange(0, -1, this.feeDetailData.length, -1, GC.Spread.Sheets.SheetArea.viewport).wordWrap(true);
|
|
|
+ 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.lockDetailSheet(i,this.feeDetailData[i],feeItem);
|
|
|
+ }
|
|
|
+ this.feeDetailSheet.resumeEvent();
|
|
|
+ this.feeDetailSheet.resumePaint();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ lockDetailSheet:function(row,detail,feeItem){
|
|
|
+ if(detail.feeRuleId){//选中了规则项
|
|
|
+ for(let col=0;col<this.feeDetailSetting.header.length;col++) {
|
|
|
+ let header = this.feeDetailSetting.header[col];
|
|
|
+ if(header.dataCode=='feeRate'){
|
|
|
+ let baseIndex = installSectionBase.indexOf(detail.base);
|
|
|
+ if(baseIndex<1){
|
|
|
+ this.feeDetailSheet.getCell(row,col).locked(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(header.dataCode=='position'){
|
|
|
+ this.feeDetailSheet.getCell(row,col).locked(feeItem.feeType=='子目费用');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {//没有规则项则相关的单元格都锁定
|
|
|
+ this.feeDetailSheet.getRange(row, 3, 1, this.feeDetailSetting.header.length-3, GC.Spread.Sheets.SheetArea.viewport).locked(true);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setDetailRuleCell:function(row,detail){
|
|
|
+ let impactRules = projectObj.project.installation_fee.getFeeRuleBySection(detail);
|
|
|
+ let options=[{text:"无",value:""}];
|
|
|
+ for(let ir of impactRules){
|
|
|
+ options.push({text:ir.rule,value:ir.ID});
|
|
|
+ }
|
|
|
+ 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);
|
|
|
+ },
|
|
|
+ getFeeItemData:function (datas) {
|
|
|
+ let feeItemShowArray = [];
|
|
|
+ for(let d of datas){
|
|
|
+ let tem_Lib = {
|
|
|
+ feeItem:d.libName,
|
|
|
+ subList:d.installFeeItem,
|
|
|
+ collapsed:false
|
|
|
+ };
|
|
|
+ feeItemShowArray.push(tem_Lib);
|
|
|
+ if(d.installFeeItem && d.installFeeItem.length > 0){
|
|
|
+ for(let t_if of d.installFeeItem){
|
|
|
+ t_if.installFeeID = d.ID,
|
|
|
+ t_if.libID = d.libID;
|
|
|
+ t_if.isMixRatio = true;
|
|
|
+ t_if.displayPosition = this.getDisplayText(t_if);
|
|
|
+ feeItemShowArray.push(t_if);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return feeItemShowArray;
|
|
|
+ },
|
|
|
+ getDisplayText:function (item) {
|
|
|
+ if(item.billID){
|
|
|
+ let node = projectObj.project.mainTree.getNodeByID(item.billID);
|
|
|
+ if(node){
|
|
|
+ return node.data.code +" "+node.data.name;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return item.position;
|
|
|
+ },
|
|
|
+ getFeeDetailData : function(libID,feeItemId){
|
|
|
+ let feeDetailArr = [];
|
|
|
+ let installSections =projectObj.project.installation_fee.getInstallSectionsByfeeItemID(libID,feeItemId);
|
|
|
+ for(let is of installSections){
|
|
|
+ let tem_detail = {
|
|
|
+ ID:is.ID,
|
|
|
+ feeItemId:is.feeItemId,
|
|
|
+ name:is.name,
|
|
|
+ feeRuleId:is.feeRuleId,
|
|
|
+ libID:libID,
|
|
|
+ rule:is.feeRuleId,
|
|
|
+ };
|
|
|
+ if(is.feeRuleId){
|
|
|
+ let feeRule = projectObj.project.installation_fee.getFeeRuleByID(libID,is.feeRuleId);
|
|
|
+ if(feeRule){
|
|
|
+ tem_detail.code = feeRule.code;
|
|
|
+ tem_detail.base = feeRule.base;
|
|
|
+ tem_detail.feeRate = feeRule.feeRate;
|
|
|
+ tem_detail.labour = feeRule.labour;
|
|
|
+ tem_detail.material = feeRule.material;
|
|
|
+ tem_detail.machine = feeRule.machine;
|
|
|
+ tem_detail.position = installationFeeObj.getDisplayText(feeRule);
|
|
|
+ tem_detail.billID = feeRule.billID;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ feeDetailArr.push(tem_detail);
|
|
|
+ }
|
|
|
+ return feeDetailArr;
|
|
|
+
|
|
|
+ },
|
|
|
+ initSheet: function (sheet,setting) {
|
|
|
+ var me = this;
|
|
|
+ sheetCommonObj.initSheet(sheet, setting, 30);
|
|
|
+ sheet.bind(GC.Spread.Sheets.Events.ValueChanged, me.onSheetValueChange);
|
|
|
+ },
|
|
|
+ initPositionSpread:function () {
|
|
|
+ this.positionSpread = SheetDataHelper.createNewSpread($('#positionSpread')[0]);
|
|
|
+ this.selectionTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: false});
|
|
|
+ this.selectionTreeController = TREE_SHEET_CONTROLLER.createNew(this.selectionTree, this.positionSpread.getActiveSheet(), this.positionSetting);
|
|
|
+ this.positionSheet = this.positionSpread.getActiveSheet();
|
|
|
+ this.positionSpread.bind(GC.Spread.Sheets.Events.ButtonClicked, this.onPositionCheckBoxClick);
|
|
|
+ },
|
|
|
+ onPositionCheckBoxClick:function (e,args) {
|
|
|
+ let me = installationFeeObj;
|
|
|
+ var checkboxValue = args.sheet.getCell(args.row, args.col).value();
|
|
|
+ var newval = 0;
|
|
|
+ if (checkboxValue) {
|
|
|
+ newval = 0;
|
|
|
+ args.sheet.getCell(args.row, args.col).value(newval);
|
|
|
+ } else {
|
|
|
+ newval = 1;
|
|
|
+ args.sheet.getCell(args.row, args.col).value(newval);
|
|
|
+ }
|
|
|
+ if(me.positionSelectedObject==null){//如果之前没选中任何一条记录,则记住选中位置
|
|
|
+ me.positionSelectedObject ={
|
|
|
+ row : args.row,
|
|
|
+ col: args.col,
|
|
|
+ recode:me.positionData[args.row]
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ if(args.row==me.positionSelectedObject.row){//如果是在已选中的记录中再点一次选中复框,则去掉选中记录
|
|
|
+ me.positionSelectedObject = null;
|
|
|
+ }else {//切换选中记录
|
|
|
+ //去掉之前选中位置的打勾
|
|
|
+ args.sheet.getCell(me.positionSelectedObject.row, me.positionSelectedObject.col).value(0);
|
|
|
+ me.positionSelectedObject ={
|
|
|
+ row : args.row,
|
|
|
+ col: args.col,
|
|
|
+ recode:me.positionData[args.row]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ loadSelectionNodes : function () {
|
|
|
+ this.positionData =this.getBillDataForSelect();
|
|
|
+ this.selectionTree.loadDatas(this.positionData);
|
|
|
+ this.selectionTreeController.showTreeData();
|
|
|
+ },
|
|
|
+ filterSelectionNodes:function () {
|
|
|
+ let keyword = $('#filterKeyword').val();
|
|
|
+ let resultData =[], newTreeIDs=[], newDatas = [];
|
|
|
+ let allPositionData = this.getBillDataForSelect();
|
|
|
+ if(keyword&&keyword!=""){//按关键字过滤出结果
|
|
|
+ resultData = _.filter(allPositionData,function (item) {
|
|
|
+ if(item.canSelect == true){
|
|
|
+ if(item.code.indexOf(keyword)!=-1||item.name.indexOf(keyword)!=-1){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ for(let tem of resultData){//取出所有父节点ID
|
|
|
+ let temNode = projectObj.project.mainTree.getNodeByID(tem.ID);
|
|
|
+ if(temNode){
|
|
|
+ getParentIDs(temNode,newTreeIDs);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(newTreeIDs.length > 0){//生成过滤后的记录
|
|
|
+ for(let p_tem of allPositionData){
|
|
|
+ if(_.includes(newTreeIDs,p_tem.ID)){
|
|
|
+ newDatas.push(p_tem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.positionData = newDatas;
|
|
|
+ this.selectionTree.loadDatas(this.positionData);
|
|
|
+ this.selectionTreeController.showTreeData();
|
|
|
+
|
|
|
+ function getParentIDs(temNode,idArrays) {
|
|
|
+ idArrays.push(temNode.data.ID);
|
|
|
+ if(temNode.parent!=null){
|
|
|
+ getParentIDs(temNode.parent,idArrays);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(feeItem.feeType=='措施费用'){
|
|
|
+ rootNode = project.Bills.getMeasureNode(controller);
|
|
|
+ }else if(feeItem.feeType=='分项费用'){
|
|
|
+ rootNode = project.Bills.getFBFXNode(controller);
|
|
|
+ }
|
|
|
+ allNodes.push(rootNode);
|
|
|
+ controller.tree.getAllSubNode(rootNode.source,allNodes);
|
|
|
+ for(let n of allNodes){
|
|
|
+ let temData = {
|
|
|
+ ID:n.data.ID,
|
|
|
+ NextSiblingID:n.data.NextSiblingID,
|
|
|
+ ParentID:n.data.ParentID,
|
|
|
+ type : billText[n.data.type],
|
|
|
+ code : n.data.code,
|
|
|
+ name : n.data.name
|
|
|
+ };
|
|
|
+ //project.mainTree.selected.data.calcBase&&project.mainTree.selected.data.calcBase!=""
|
|
|
+ if(n.data.type == billType.FX){//分项才能选
|
|
|
+ temData.canSelect = true;
|
|
|
+ }else if(n.data.type == billType.BILL){//如果是清单类型,则是叶子节点并且没有使用基数计算的清单
|
|
|
+ if (n.children.length==0&&!(n.data.calcBase&&n.data.calcBase!="")){
|
|
|
+ temData.canSelect = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(billID&&n.data.ID == billID){
|
|
|
+ temData.selected = 1;
|
|
|
+ this.positionSelectedObject ={
|
|
|
+ row : datas.length,
|
|
|
+ col: 3,
|
|
|
+ recode:temData
|
|
|
+ }
|
|
|
+ }
|
|
|
+ datas.push(temData);
|
|
|
+ }
|
|
|
+ return datas;
|
|
|
+ },
|
|
|
+ selectPositionConfirm:function () {
|
|
|
+ let pobj = this.positionSelectedObject;
|
|
|
+ let from = $('#calc_position_from').val();
|
|
|
+ if(pobj){
|
|
|
+ if(from=='feeItemSheet'){
|
|
|
+ this.updateFeeItemPosition(pobj.recode);
|
|
|
+ }else if(from=='feeDetailSheet'){
|
|
|
+ this.updateFeeRulePosition(pobj.recode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $("#calc_position").modal('hide');
|
|
|
+ },
|
|
|
+ updateFeeRulePosition:function (recode) {
|
|
|
+ let me = this;
|
|
|
+ let itemSelection = this.feeItemSheet.getSelections()[0];
|
|
|
+ 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){
|
|
|
+ feeItem.position ="";
|
|
|
+ feeItem.billID = "";
|
|
|
+ feeItem.displayPosition = "";
|
|
|
+ me.feeItemSheet.getCell(itemSelection.row, itemSelection.col).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();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ updateFeeItemPosition:function(recode){
|
|
|
+ let me = this;
|
|
|
+ let selection = this.feeItemSheet.getSelections()[0];
|
|
|
+ let feeItem = this.feeItemData[selection.row];
|
|
|
+ if(feeItem.billID ==recode.ID ){//和原来的位置没变
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let updateData = me.getFeeItemUpdateData(feeItem,{ position: recode.code, billID:recode.ID});
|
|
|
+ let [dataArray,impacRules] = me.getFeeRuleUpdateData(feeItem,recode);
|
|
|
+ dataArray.push(updateData);
|
|
|
+ $.bootstrapLoading.start();
|
|
|
+ me.submitInstallationUpdate(dataArray,function (data) {
|
|
|
+ //更新缓存
|
|
|
+ feeItem.position =recode.code;
|
|
|
+ feeItem.billID = recode.ID;
|
|
|
+ feeItem.displayPosition = recode.code + ' '+recode.name;
|
|
|
+ me.feeItemSheet.getCell(selection.row, selection.col).value(feeItem.displayPosition);
|
|
|
+ for(let ir of impacRules){
|
|
|
+ ir.position = recode.code;
|
|
|
+ ir.billID = recode.ID;
|
|
|
+ }
|
|
|
+ me.showFeeDetailData(feeItem.libID,feeItem.ID);
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getFeeRuleUpdateData : function (feeItem,recode) {
|
|
|
+ let dataArray = [];
|
|
|
+ let impacRules = projectObj.project.installation_fee.getFeeRuleByFeeItem(feeItem);
|
|
|
+ for(let ir of impacRules){
|
|
|
+ let tem_data = {
|
|
|
+ ID:feeItem.installFeeID,
|
|
|
+ itemID:ir.ID,
|
|
|
+ type:'feeRule',
|
|
|
+ doc:{position: recode.code, billID:recode.ID}
|
|
|
+ };
|
|
|
+ dataArray.push(tem_data);
|
|
|
+ }
|
|
|
+ return [dataArray,impacRules]
|
|
|
+ },
|
|
|
+ onSheetValueChange:function (e,info) {
|
|
|
+ if(info.sheetName=='feeItemSheet'){
|
|
|
+ installationFeeObj.onFeeItemValueChange(e,info);
|
|
|
+ }
|
|
|
+ if(info.sheetName == 'feeDetailSheet'){
|
|
|
+ installationFeeObj.onFeeDetailValueChange(e,info);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onFeeItemValueChange:function (e,info) {
|
|
|
+ let me = installationFeeObj;
|
|
|
+ let feeItem = this.feeItemData[info.row];
|
|
|
+ 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;
|
|
|
+ me.feeItemSheet.getCell(info.row, info.col).value(info.newValue);
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ onFeeDetailValueChange:function (e,info) {
|
|
|
+ console.log("value change");
|
|
|
+ let me = installationFeeObj;
|
|
|
+ let feeDetail = this.feeDetailData[info.row];
|
|
|
+ let header = this.feeDetailSetting.header[info.col];
|
|
|
+ let fiedID = header.dataCode;
|
|
|
+ let updateData = null;
|
|
|
+ if(fiedID == 'rule'){//选择新的规则项
|
|
|
+ updateData = me.getDetailUpdateData(feeDetail,{"feeRuleId":info.newValue},'installSection');
|
|
|
+ }
|
|
|
+ me.submitInstallationUpdate(updateData,function (data) {
|
|
|
+ if(updateData.type=="installSection"){
|
|
|
+ let section = projectObj.project.installation_fee.getInstallSectionByID(feeDetail.libID,feeDetail.ID);
|
|
|
+ section.feeRuleId = info.newValue;
|
|
|
+ }
|
|
|
+
|
|
|
+ me.showFeeDetailData(feeDetail.libID,feeDetail.feeItemId);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ 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;
|
|
|
+ },
|
|
|
+ submitInstallationUpdate:function (updateData,callback) {
|
|
|
+ CommonAjax.post('/installation/updateInstallationFee',{'projectID':projectInfoObj.projectInfo.ID,'updateData':updateData},function (data) {
|
|
|
+ callback(data);
|
|
|
+ })
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+
|
|
|
$(function () {
|
|
|
$('#calc_installation_fee').on('shown.bs.modal',function () {
|
|
|
- if(installationFeeObj.installationFeeSpread == null){//初始化显示
|
|
|
-
|
|
|
+ if(installationFeeObj.feeItemSpread == null){//初始化显示
|
|
|
+ installationFeeObj.initInstallationFeeSpread();
|
|
|
+ }else {
|
|
|
+ installationFeeObj.showFeeItemData();
|
|
|
+ installationFeeObj.showFeeDetailData();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ $('#calc_position').on('shown.bs.modal',function () {
|
|
|
+ installationFeeObj.positionSelectedObject = null;
|
|
|
+ if (!installationFeeObj.positionSpread) {
|
|
|
+ installationFeeObj.initPositionSpread();
|
|
|
}
|
|
|
+ installationFeeObj.loadSelectionNodes();
|
|
|
+ });
|
|
|
+
|
|
|
+ /* $('#calc_position').on('hidden.bs.modal',function () {
|
|
|
+
|
|
|
+ });*/
|
|
|
+ $('#positionSheetFilter').click(function (){
|
|
|
+ installationFeeObj.positionSelectedObject = null;//清空选中记录
|
|
|
+ installationFeeObj.filterSelectionNodes();
|
|
|
+ });
|
|
|
|
|
|
- })
|
|
|
+ $('#cancelFilter').click(function (){
|
|
|
+ installationFeeObj.positionSelectedObject = null;//清空选中记录
|
|
|
+ installationFeeObj.loadSelectionNodes();
|
|
|
+ });
|
|
|
+ $('#select_position_confirm').click(function (){
|
|
|
+ installationFeeObj.selectPositionConfirm();
|
|
|
+ });
|
|
|
|
|
|
|
|
|
|