| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868 | /** * Created by chen on 2017/8/1. */var feeRateObject={    mainViews:null,    datas:null,    datasBackup:null,    canEdit:false,    activateFeeRate:null,    needCascadeSet:false,    selectionLoad:false,    changeInfo:null,    feeRateSpreads:null,    editingCell:null,    feeRateSelection:null,    sheetSetting: {        header: [            {headerName: "专业名称", headerWidth: 200, dataCode: "name", dataType: "String"},            {headerName: "值%", headerWidth: 150, dataCode: "rate", dataType: "Number",hAlign: "right",decimalField:"feeRate"},            {headerName: "备注", dataCode: "memo", dataType: "String"}        ],        view: {            comboBox: [],            lockColumns: [0, 1, 2]        }    },    columns: [        {            id: 'name',            caption: '专业名称',            dataField: 'name',            width: 450,            allowEditing: false        },        {            id: 'rate',            caption: '值%',            dataField: 'rate',            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;            }            params.success();            if(!$('#cascadeSet').prop('checked')||params.hasOwnProperty('viewIndex')){                projectObj.project.FeeRate.updateFeeRateByEdit(params,feeRateObject.activateFeeRate);            }        }    },    createSheet:function(){        var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();        feeRateObject.feeRateSpreads=sheetCommonObj.buildSheet($('#fee_rate_sheet')[0], feeRateObject.sheetSetting,feeRateFile.rates.length);        feeRateObject.feeRateSheet = feeRateObject.feeRateSpreads.getSheet(0);        feeRateObject.feeRateSheet.selectionUnit(1)//0 cell,1 row,2 col;        feeRateObject.feeRateSheet.options.isProtected = true;        feeRateObject.feeRateSheet.name('fee_rate');        feeRateObject.feeRateSheet.bind(GC.Spread.Sheets.Events.CellClick,feeRateObject.onCellClick);        feeRateObject.feeRateSheet.bind(GC.Spread.Sheets.Events.CellDoubleClick,feeRateObject.onCellDoubleClick);    },    showSelectTree:function () {        var sheet= feeRateObject.feeRateSheet;        var setting=feeRateObject.sheetSetting;        var data = projectObj.project.FeeRate.getActivateFeeRate().rates;        var ch = GC.Spread.Sheets.SheetArea.viewport;        var groups=[];        sheet.suspendPaint();        sheet.suspendEvent();        sheet.rowOutlines.direction(GC.Spread.Sheets.Outlines.OutlineDirection.backward);        sheet.getRange(-1, 0, -1, 1).cellType(feeRateObject.getTreeNodeCellType());        for (var col = 0; col < setting.header.length; col++) {            var hAlign = "left", vAlign = "center";            if (setting.header[col].hAlign) {                hAlign = setting.header[col].hAlign;            } else if (setting.header[col].dataType !== "String"){                hAlign = "right";            }            vAlign = setting.header[col].vAlign?setting.header[col].vAlign:vAlign;            sheetCommonObj.setAreaAlign(sheet.getRange(-1, col, -1, 1), hAlign, vAlign);            if (setting.header[col].formatter) {                sheet.setFormatter(-1, col, setting.header[col].formatter, GC.Spread.Sheets.SheetArea.viewport);            }            for (var row = 0; row < data.length; row++) {                var val = data[row][setting.header[col].dataCode];                if(val&&setting.header[col].dataType === "Number"){                    if(setting.header[col].hasOwnProperty('decimalField')){                        var decimal = getDecimal(setting.header[col].decimalField);                        val =scMathUtil.roundToString(val,decimal);                        sheet.setFormatter(-1, col,getFormatter(decimal), GC.Spread.Sheets.SheetArea.viewport);                    }else {                        val =scMathUtil.roundToString(val,2);                    }                }                sheet.setValue(row, col, val, ch);                if(col==0){                    feeRateObject.setSheetGroup(data[row],data,groups,row+1);                }            }        }        //this.lockCells(sheet,setting);        _.forEach(groups,function (g) {            for(var k in g){                sheet.rowOutlines.group(parseInt(k), g[k]);            }        })     /*   sheet.rowOutlines.group(1, 6);        sheet.rowOutlines.group(8, 6);        sheet.rowOutlines.group(15, 6);        sheet.rowOutlines.group(22, 6);*/       // sheet.getRange(-1, 0, -1, 1).width(300);        sheet.showRowOutline(false);        sheet.resumeEvent();        sheet.resumePaint(false);    },    getTreeNodeCellType:function () {        var ns = GC.Spread.Sheets;        function TreeNodeCellType() {        }        TreeNodeCellType.prototype = new ns.CellTypes.Text();        TreeNodeCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {            var level = options.sheet.rowOutlines.getLevel(options.row);            var nlevel = -1;            if (options.row < options.sheet.getRowCount() - 1) {                nlevel = options.sheet.rowOutlines.getLevel(options.row + 1);            }            var hoffset = (level + 2) * 12;            x += hoffset;            w -= hoffset;            GC.Spread.Sheets.CellTypes.Base.prototype.paint.apply(this, arguments);            if (options.row == options.sheet.getRowCount() - 1) return; //last row            if (nlevel > level) {                var collapsed = options.sheet.rowOutlines.isCollapsed(options.row + 1);                x--;                y += h / 2 - 3;                ctx.save();                ctx.fillStyle = "black";                ctx.beginPath();                if (collapsed) {                    ctx.moveTo(x - 5, y);                    ctx.lineTo(x, y + 3);                    ctx.lineTo(x - 5, y + 6);                } else {                    ctx.moveTo(x, y);                    ctx.lineTo(x, y + 5);                    ctx.lineTo(x - 5, y + 5);                }                ctx.fill();                ctx.restore();            }            else {               // x--;                //y += h / 2 - 3;                ctx.save();                ctx.restore();            }        };        // override getHitInfo to allow cell type get mouse messages        TreeNodeCellType.prototype.getHitInfo = function (x, y, cellStyle, cellRect, context) {            return {                x: x,                y: y,                row: context.row,                col: context.col,                cellStyle: cellStyle,                cellRect: cellRect,                sheetArea: context.sheetArea            };        }        TreeNodeCellType.prototype.processMouseDown = function (hitinfo) {            var level = hitinfo.sheet.rowOutlines.getLevel(hitinfo.row);            var hoffset = (level + 2) * 12 + hitinfo.cellRect.x;            if (level==-1&&hitinfo.x < hoffset && hitinfo.x > hoffset - 10) {                var collapsed = hitinfo.sheet.rowOutlines.isCollapsed(hitinfo.row + 1);                hitinfo.sheet.rowOutlines.setCollapsed(hitinfo.row, !collapsed);                hitinfo.sheet.invalidateLayout();                hitinfo.sheet.repaint();            }        };        return new TreeNodeCellType()    },    getFeeRateEditCellType:function () {        var ns = GC.Spread.Sheets;        function FeeRateEditCellType() {            var init=false;        }        FeeRateEditCellType.prototype = new ns.CellTypes.Text();        FeeRateEditCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {            if(value!=null){               // ctx.fillText(value,x+3+ctx.measureText(value).width,y+h-3);                ctx.fillText(value,x+w-3,y+h-3);            }            if(feeRateObject.editingCell){                if(feeRateObject.editingCell.row==options.row&&feeRateObject.editingCell.col==options.col){                    var image = document.getElementById('f_btn'),imageMagin = 3;                    var imageHeight = h-2*imageMagin;                    var imageWidth = w*2/7;                    var imageX = x + w - imageWidth- imageMagin, imageY = y + h / 2 - imageHeight / 2;                    ctx.save();                    ctx.drawImage(image, imageX, imageY,imageWidth,imageHeight);                    ctx.beginPath();                    ctx.arc(imageX+imageWidth/2,imageY+imageHeight/2,1,0,360,false);                    ctx.arc(imageX+imageWidth/2-4,imageY+imageHeight/2,1,0,360,false);                    ctx.arc(imageX+imageWidth/2+4,imageY+imageHeight/2,1,0,360,false);                    ctx.fillStyle="black";//填充颜色,默认是黑色                    ctx.fill();//画实心圆                    ctx.closePath();                    ctx.restore();                }            }        };        FeeRateEditCellType.prototype.getHitInfo = function (x, y, cellStyle, cellRect, context) {            return {                x: x,                y: y,                row: context.row,                col: context.col,                cellStyle: cellStyle,                cellRect: cellRect,                sheetArea: context.sheetArea            };        };        FeeRateEditCellType.prototype.processMouseDown = function (hitinfo) {            var me=feeRateObject;            if(me.editingCell==null){                var showSelectBtn = true;                if(hitinfo.sheet.name()!='calc_detail'){                    showSelectBtn=me.ifFeeRateEdit();                }                if(showSelectBtn){                    me.editingCell={                        row:hitinfo.row,                        col:hitinfo.col                    }                    hitinfo.sheet.invalidateLayout();                    hitinfo.sheet.repaint();                }            }else if(hitinfo.row==me.editingCell.row){                var offset=hitinfo.cellRect.x+hitinfo.cellRect.width-6;                var imageMagin=3;                var imageHeight = hitinfo.cellRect.height-2*imageMagin;                var imageWidth = hitinfo.cellRect.width*2/7;                if(hitinfo.x<offset&&hitinfo.x>offset-imageWidth){                    me.showSelectModal(hitinfo);                }            }        };        FeeRateEditCellType.prototype.processMouseLeave = function (hitinfo) {            feeRateObject.editingCell=null;            hitinfo.sheet.invalidateLayout();            hitinfo.sheet.repaint();        }        return new FeeRateEditCellType();    },    showSelectModal:function (hitinfo) {        $("#fee_rate_tree").modal({show:true});        $('#edit_from').val(hitinfo.sheet.name());    },    setSheetGroup:function (rate,data,groups,row) {        var me=this;        var group={};        var count=me.getChildrenCount(rate.ID,data);        if(count>0){            group[row]=count;            groups.push(group);        }        return groups;    },    getChildrenCount:function (id,data) {        var me=this;        var sum=0;        var children=_.filter(data,{'ParentID':id});        if(children&&children.length==0){            return 0;        }        for(var i=0;i<children.length;i++){            sum+=me.getChildrenCount(children[i].ID,data);        }        return children.length+sum;    },    ifFeeRateEdit:function () {        var selected = projectObj.project.mainTree.selected;        return MainTreeCol.readOnly.forFeeRate(selected)?false:true;    },    createSpreadView:function () {        if (this.mainViews) {            this.mainViews.destroy();            this.mainViews = null;        }        if(subRateObject.views){            subRateObject.views.destroy();            subRateObject.views = null;        }        this.activateFeeRate = projectObj.project.FeeRate.getActivateFeeRate();        this.datas = this.activateFeeRate.rates;        var rateColSetting = _.find(this.columns,{"id":"rate"});        rateColSetting?rateColSetting.format=getFormatter(getDecimal("feeRate")):"";        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() {        feeRateObject.createSpreadView();    },    updateBySelect:function (rate,selectMap,mapID) {       var selected = this.mainViews.getSelections()[0];        projectObj.project.FeeRate.backupDatas();       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});                          }                        }                    }                }            }        })        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 =  $("<option>").val(data.ID).text(data.libName);                $('#inlineFormCustomSelect').append(option);                if(data.status=='activate'){                    selectedID=data.ID;                }            })            $('#inlineFormCustomSelect').val(selectedID);        }    },    getFeeRateStandards:function (callback) {        CommonAjax.post('/feeRates/getFeeRateStandards', {"projectID": projectObj.project.ID()}, function (data) {            if (data) {                callback(data);            }        });    },    changeFeeRateStandard:function(newVal){        $.bootstrapLoading.start();        var callback=function () {            feeRateObject.createSpreadView();            feeRateObject.loadPageContent();            projectObj.project.FeeRate.synchronizeFeeRate();            subRateObject.destorySpreadView();            $.bootstrapLoading.end();        };        projectObj.project.FeeRate.changeFeeRateStandard(newVal,callback);    },    checkFeeRateName:function (newVal) {        if(!newVal||newVal==""){            $('#saveAsConfirm').attr("disabled","disabled");            $('#nameError').text("请输入文件名称。").show();            return;        }        var callback=function (data) {            if(data){                $('#saveAsConfirm').attr("disabled","disabled");                $('#nameError').text("已存在同名费率文件。").show();                $('#valid_name').val('');            }else {                $('#valid_name').val(newVal);                $('#saveAsConfirm').removeAttr("disabled");                $('#nameError').hide();            }        };        projectObj.project.FeeRate.checkFeeRateName(newVal,callback);    },    feeRateFileSaveAs:function (newName) {        if(!newName||newName==""){            $('#saveAsConfirm').attr("disabled","disabled");            $('#nameError').text("请输入文件名称。").show();            return;        }        var valideName = $('#valid_name').val();        if(valideName==''||valideName!==newName){            var callback=function (data) {                if(data){                    $('#saveAsConfirm').attr("disabled","disabled");                    $('#nameError').text("已存在同名费率文件。").show();                    $('#valid_name').val('');                }else {                    feeRateObject.submitSaveAs(newName);                }            }            projectObj.project.FeeRate.checkFeeRateName(newName,callback)        }else {            feeRateObject.submitSaveAs(newName);        }    },    submitSaveAs:function (newName) {        var me = this;          projectObj.project.FeeRate.feeRateFileSaveAs(newName,function (result) {              me.activateFeeRate = result;              me.loadPageContent();              $('#copy-lv').modal('hide');              socket.emit('feeRateChangeNotify', projectObj.project.FeeRate.getActivateFeeRateFileID());              $.bootstrapLoading.end();        });    },    getChangeInfo:function () {        var me = this;        var callback=function (data) {            me.changeInfo=data;            me.loadChangePageContent(data);            console.log(data);        };        projectObj.project.FeeRate.getChangeInfo(callback);    },    loadChangePageContent:function (data) {        $('#currentProject').text(data.currentProject.name);        $('#currentOptions').empty();        _.forEach(data.currentProject.currentOptions,function (s) {            var option =  $("<option>").val(s.ID).text(s.name);            $('#currentOptions').append(option);        })        $('#currentOptions').val(projectObj.project.FeeRate.getActivateFeeRateFileID());        $('#otherProject').empty();        _.forEach(data.others,function (p) {            var option =  $("<option>").val(p.ID).text(p.name);            $('#otherProject').append(option);        });        $('#otherFeeRateOption').empty();        if(data.others.length>0){            _.forEach(data.others[0].optionList,function (f) {                var option =  $("<option>").val(f.ID).text(f.name);                $('#otherFeeRateOption').append(option);            });        }    },    changeFeeRateFileFromCurrent:function(){        $.bootstrapLoading.start();        var newVal = $("#currentOptions").val();        if($("#currentOptions").val()==this.activateFeeRate.ID){            return;        }        var name =$("#currentOptions").find("option:selected").text();        var newFeeRateFile = {            id:newVal,            name:name        }        var callback=function () {            feeRateObject.createSpreadView();            feeRateObject.loadPageContent();            projectObj.project.FeeRate.onFeeRateFileChange();            $.bootstrapLoading.end();        }        projectObj.project.FeeRate.changeFeeRateFileFromCurrent(newFeeRateFile,callback);    },    changeFeeRateFileFromOthers:function () {        var feeRateFileID = $("#otherFeeRateOption").val();        var name =$("#otherFeeRateOption").find("option:selected").text();        if(null===feeRateFileID){            alert("请选择一个费率文件!");            return;        }        var currentOption = _.find(this.changeInfo.currentProject.currentOptions,{name:name})        if(currentOption){            $("#rename-lv").modal({show:true});            $("#newFeeRateID").val(feeRateFileID);            $("#newFeeRateName").val(name);        }else {            this.changeFeeRateFileConfirm(feeRateFileID,name);        }    },    changeFeeRateFileConfirm:function(feeRateFileID,name){        $.bootstrapLoading.start();        var callback=function () {            feeRateObject.createSpreadView();            feeRateObject.loadPageContent();            projectObj.project.FeeRate.onFeeRateFileChange();            $.bootstrapLoading.end();        }        projectObj.project.FeeRate.changeFeeRateFileFromOthers(feeRateFileID,name,callback);    },    setFeeRateCellCol:function (sheet,col) {        sheet.getRange(-1, col, -1, 1).cellType(this.getFeeRateEditCellType());    },    onCellClick:function (sender,args) {       var data =projectObj.project.FeeRate.getActivateFeeRate().rates;       feeRateObject.feeRateSelection=data[args.row];    },    onCellDoubleClick:function (sender,args) {        var data =projectObj.project.FeeRate.getActivateFeeRate().rates;        feeRateObject.feeRateSelection=data[args.row];        feeRateObject.submitFeeRateBySelect();    },    checkSelectedFeeRate:function () {        var validate = false;        var data =projectObj.project.FeeRate.getActivateFeeRate().rates;        if(feeRateObject.feeRateSelection!=null){            var children=_.filter(data,{'ParentID':feeRateObject.feeRateSelection.ID});            validate=children&&children.length==0;        }        return validate;    },    submitFeeRateFromBill:function () {       var rate = feeRateObject.feeRateSelection;       var selected = projectObj.project.mainTree.selected;        projectObj.project.FeeRate.submitFeeRateFromBill(rate,selected.data,function (data) {            selected.data.feeRateID=rate.ID.toString();            selected.data.feeRate=scMathUtil.roundToString(rate.rate,getDecimal("feeRate"));            selected.changed = true;            projectObj.project.calcProgram.calculate(selected);            projectObj.project.calcProgram.saveNode(selected);            //projectObj.mainController.refreshTreeNode([selected]);            $("#fee_rate_tree").modal('hide');        });    },    submitFeeRateFromCalc:function () {        var rate = feeRateObject.feeRateSelection;        var calInfo = calcProgramManage.getSelectionInfo();        calInfo.calcItem.feeRateID=rate.ID;        calInfo.calcItem.feeRate=null;        var data={'projectID': projectObj.project.ID(),'templatesID': calInfo.template.ID,'calcItem': calInfo.calcItem};        calcProgramManage.saveCalcItem(data,function (result) {            calInfo.calcItem.feeRate=rate.rate;            projectObj.project.calcProgram.compileAllTemps();            calcProgramManage.refreshDetailSheet();            $("#fee_rate_tree").modal('hide');        });        console.log(calInfo);    },    submitFeeRateBySelect:function () {        var validate = this.checkSelectedFeeRate();        if(validate){            if($('#edit_from').val()=='calc_detail'){                this.submitFeeRateFromCalc();            }else {                this.submitFeeRateFromBill();            }        }else {            //$("#fee_rate_tree").modal('hide');        }    }}function getPopoverContent() {    var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();    var usageProjects = feeRateFile.usageProjects;    var popover_content = "";    _.forEach(usageProjects,function (p,index) {        if(index>0){            popover_content+='<br>';        }        popover_content+=p.name;    })    return popover_content;}$(function(){    $('#pop-lv').popover({            placement:"bottom",            html:true,            trigger:"hover | focus",            content:getPopoverContent        }    );    $('#tab_fee_rate').on('shown.bs.tab', function (e) {        $(e.relatedTarget.hash).removeClass('active');        feeRateObject.reFreshRateViews();        feeRateObject.loadPageContent();    });    $('#setNewFeeRate').bind('click', function () {        var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();        var usageProjects = feeRateFile.usageProjects;        var listString ='';        _.forEach(usageProjects,function (u) {            listString+="<li>"+u.name+"</li>"        })        $("#usageProjectList").html(listString);        $("#set-lv-feeRateName").text(feeRateFile.name);        $("#set-use-feeRateName").text(feeRateFile.name);        feeRateObject.getFeeRateStandards(function (data) {            $('#standardSelect').empty();            _.forEach(data,function (s) {                var option =  $("<option>").val(s.ID).text(s.libName);                $('#standardSelect').append(option);            })            $('#standardSelect').val(feeRateFile.libID);        });    });    $('#changeConfirm').bind('click', function (){        var newVal=$('#standardSelect').val();        var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();        if(newVal&&newVal!=feeRateFile.libID){            feeRateObject.changeFeeRateStandard(newVal);        }    });    $('#saveAs').bind('click', function (){        var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();        $('#copyFeeRateName').val(feeRateFile.name+'副本');        $('#valid_name').val(feeRateFile.name+'副本');        $('#nameError').hide();    });    $('#saveAsConfirm').bind('click',function () {        feeRateObject.feeRateFileSaveAs($('#copyFeeRateName').val());    })    $('#copyFeeRateName').change(function () {        feeRateObject.checkFeeRateName(this.value);    });    $('#newFeeRateName').change(function () {        var newName = $(this).val();        if(!newName||newName==""){            $('#renameConfirm').attr("disabled","disabled");            $('#renameError').text("请输入文件名称。").show();            return;        }        var callback=function (data) {            if(data){                $('#renameConfirm').attr("disabled","disabled");                $('#renameError').text("本建设项目中已存在同名费率文件。").show();            }else {                $('#renameConfirm').removeAttr("disabled");                $('#renameError').hide();            }        };        projectObj.project.FeeRate.checkFeeRateName(newName,callback);    });    $('#changeFeeRateConfirm').bind('click',function (){        var radioV= $("input[name='chaneg-lv-Radio']:checked").val();        if(radioV==='0'){            feeRateObject.changeFeeRateFileFromCurrent();        }else {            feeRateObject.changeFeeRateFileFromOthers();        }    })    $('#changFeeRateFile').bind('click',function (){        $("input[name='chaneg-lv-Radio']")[0].checked=true;        $("#fromProject").show();        $("#fromOther").hide();        feeRateObject.getChangeInfo();    })    $('#otherProject').change(function(){        var newVal = $(this).val();        var projects = feeRateObject.changeInfo.others;        var selected = _.find(projects,{ID:parseInt(newVal)});        $('#otherFeeRateOption').empty();        _.forEach(selected.optionList,function (f) {            var option =  $("<option>").val(f.ID).text(f.name);            $('#otherFeeRateOption').append(option);        });    })    $('#renameConfirm').bind('click',function (){        var feeRateFileID= $("#newFeeRateID").val();        var name = $("#newFeeRateName").val();        feeRateObject.changeFeeRateFileConfirm(feeRateFileID,name);    })    $('#inlineFormCustomSelect').change(function(){        var updateTask = [];        var selectID = $(this).val();        var oldValue=0;        _.forEach(projectObj.project.FeeRate.datas,function (feeRate) {            if(feeRate.status=='activate'){                oldValue=feeRate.ID;            }            if(feeRate.ID ==selectID){                feeRate.status='activate';            }else {                feeRate.status='disable';            }            updateTask.push({query:{ID:feeRate.feeRateID},doc:{status:feeRate.status}});        })        projectObj.project.FeeRate.updateStatusBySelected(updateTask);        feeRateObject.createSpreadView();        subRateObject.destorySpreadView();        socket.emit('changeActivateFeeRate',{oldRoom:oldValue,newRoom:selectID});    })    $('#fee_rate_tree').on('shown.bs.modal', function (e) {        if(feeRateObject.feeRateSpreads==null){            feeRateObject.createSheet();        }        feeRateObject.feeRateSelection=null;        feeRateObject.showSelectTree();    });    $('#fee_rate_tree').on('hidden.bs.modal', function (e) {        if(feeRateObject.feeRateSpreads){            feeRateObject.feeRateSpreads.destroy();            feeRateObject.feeRateSpreads=null;            $('#edit_from').val('');            $('#edit_row').val('');        }    });    $('#fee_selected_conf').bind('click',function (){        feeRateObject.submitFeeRateBySelect();    })})function changeFRadioClick() {    var radioV= $("input[name='chaneg-lv-Radio']:checked").val();    if(radioV==='0'){        $("#fromProject").show();        $("#fromOther").hide();    }else {        $("#fromProject").hide();        $("#fromOther").show();    }}
 |