123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344 |
- /**
- * Created by chen on 2017/8/1.
- */
- var feeRateObject={
- mainFeeRateSpread:null,
- mainFeeRateSheet:null,
- mainFeeRateData:null,
- mainFeeRateSetting:{
- header: [
- {headerName: "专业名称", headerWidth: 250, dataCode: "name", dataType: "String"},
- {headerName: "值%", headerWidth: 80, dataCode: "rate", dataType: "Number",hAlign: "right",decimalField:"feeRate"},
- {headerName: "备注", headerWidth: 150, dataCode: "memo", dataType: "String", showHint: true}
- ],
- view: {
- lockColumns: [0]
- }
- },
- 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: 120, dataCode: "rate", dataType: "Number",hAlign: "right",decimalField:"feeRate"},
- {headerName: "备注", dataCode: "memo", dataType: "String", showHint: true}
- ],
- 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);
- sheetCommonObj.spreadDefaultStyle(feeRateObject.feeRateSpreads);
- 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);
- },
- showFeeRateTree:function (sheet,setting,data) {
- console.log(data);
- let ch = GC.Spread.Sheets.SheetArea.viewport;
- let parentMap=_.groupBy(data, 'ParentID');
- let visibleMap = {};
- sheet.suspendPaint();
- sheet.suspendEvent();
- sheet.setRowCount(data.length);
- for (let col = 0; col < setting.header.length; col++) {
- let 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);
- }
- if (setting.header[col].showHint) {
- sheet.getRange(-1, col, -1, 1).cellType(TREE_SHEET_HELPER.getTipCellType(setting));
- }
- for (let row = 0; row < data.length; row++) {
- let val = data[row][setting.header[col].dataCode];
- if(val&&setting.header[col].dataType === "Number"){
- if(setting.header[col].hasOwnProperty('decimalField')){
- let 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){
- let treeType = sheetCommonObj.getTreeNodeCellType(data,row,parentMap);
- sheet.getCell(row, 0).cellType(treeType);
- visibleMap[data[row].ID] = treeType.collapsed;
- feeRateObject.setRowVisible(data,row,visibleMap,sheet);
- } else if (col === 1 && this.rateShouldMark(data[row], val)) {
- sheet.getCell(row, col).foreColor('red');
- }
- }
- }
- sheet.resumeEvent();
- sheet.resumePaint();
- },
- rateShouldMark: function (rateItem, val) {
- if (!rateItem) {
- return false;
- }
- if (rateItem.rate === null) {
- return false;
- }
- if (rateItem.sum) {
- return false;
- }
- if (rateItem.subFeeRate && rateItem.subFeeRate.recodes && rateItem.subFeeRate.recodes.length) {
- const selectedSubRateValues = [];
- rateItem.subFeeRate.recodes.forEach(record => {
- record.optionList.forEach(opt => {
- if (opt.selected) {
- selectedSubRateValues.push(opt.value);
- }
- });
- });
- const selectedID = selectedSubRateValues.join('-');
- const valInMap = rateItem.subFeeRate.valueMaps.find(item => item.ID === selectedID);
- return !!(valInMap && valInMap.value !== +val);
- } else {
- return commonUtil.isDef(rateItem.originalRate) && rateItem.originalRate !== +val;
- }
- },
- setRowVisible:function (data,row,visibleMap,sheet) {
- sheet.getRange(row , -1, 1, -1).visible(getVisible(data[row].ParentID));//显示或隐藏
- function getVisible(ParentID) {
- if(visibleMap[ParentID]) return false //如果父节点是缩起的,那就隐藏本身。
- if(visibleMap[ParentID] == false){//如果父节点不是缩起的,要再往父节点找看
- let pnode = _.find(data,{'ID':ParentID});
- if(pnode) return getVisible(pnode.ParentID);//如果有父节点,递归调用
- return true;//没有,返回显示
- }
- }
- },
- getFeeRateLevel:function (rate,data) {
- if(rate.ParentID){
- let prate = _.find(data,{'ID':rate.ParentID});
- return this.getFeeRateLevel(prate,data) + 1;
- }else {
- return 0
- }
- },
- initFeeRateEditDiv:function(optionValue){//“0” 手工输入; “1” 选择费率
- let radioValue = 1,feeRateValue;
- $("#customFeeRate").val("");//先清空输入
- if(!gljUtil.isDef(optionValue)){
- let fID = 0;
- if ($("#calc_program_manage").is(":visible")){
- fID = calcProgramManage.getSelectionInfo().calcItem.feeRateID;
- feeRateValue = calcProgramManage.getSelectionInfo().calcItem.feeRate;
- } else if ($("#zaojiashu").is(":visible")){
- fID = projectObj.project.mainTree.selected.data.feeRateID;
- feeRateValue = projectObj.project.mainTree.selected.data.feeRate;
- }
- if(fID){
- feeRateValue = projectObj.project.FeeRate.getFeeRateByID(fID).rate;
- }
- if(!fID&&gljUtil.isDef(feeRateValue)) radioValue = 0; //2019-04-18 只有在没有费率ID,但是有费率值的情况下才显示自定义费率页,其它所有的情况都显示费率选择页面
- if(!isNaN(feeRateValue))$("#customFeeRate").val(feeRateValue);
- }
- $("input[name='editFeeRateOptions'][value='"+radioValue+"']").prop("checked",true);
- if(radioValue == "0"){
- $("#selfDiv").show();
- $("#fee_rate_sheet").hide();
- }else {
- $("#selfDiv").hide();
- $("#fee_rate_sheet").show();
- }
- },
- locate: function(){ // CSL,2018.07.18
- let sheet = feeRateObject.feeRateSpreads.getSheet(0);
- let fID = 0;
- if ($("#calc_program_manage").is(":visible"))
- fID = calcProgramManage.getSelectionInfo().calcItem.feeRateID;
- else if ($("#zaojiashu").is(":visible"))
- fID = projectObj.project.mainTree.selected.data.feeRateID;
- let rates = projectObj.project.FeeRate.getActivateFeeRate().rates;
- let rowIdx = 0, pID = 0;
- if (fID){
- fID = parseInt(fID);
- rowIdx = _.findIndex(rates,{ID:fID});
- if(rowIdx != -1) pID = rates[rowIdx].ParentID;
- }
- // 费率现有可能有多层节点,所以要递归展开父节点
- if(pID) expandParent(pID,rates,sheet);
- sheet.setSelection(rowIdx, -1, 1, -1);
- sheet.showRow(rowIdx, GC.Spread.Sheets.VerticalPosition.center);
- feeRateObject.onCellClick({type: 'CellClick'}, {row:rowIdx});
-
- function expandParent(ID,datas,sheet) {//递归展开父节点
- let cellType = setCollapsed(ID);
- cellType.refreshChildrenVisible(sheet);
- function setCollapsed(parentID){
- let index = _.findIndex(datas,{'ID':parentID});
- let type = sheet.getCellType(index,0);
- type.collapsed = false;
- if(datas[index].ParentID){
- setCollapsed(datas[index].ParentID)
- }
- return type
- }
- }
- },
- getTreeNodeCellType:function (datas,row,parentMap) {// 2018-09-26 不用spreadjs默认的树结构,自定义控件
- var ns = GC.Spread.Sheets;
- let rectW = 10;
- let rectH = 10;
- let margin = 3;
- function TreeNodeCellType() {
- this.collapsed = true; //默认是折叠的
- this.rectInfo = {};
- }
- TreeNodeCellType.prototype = new ns.CellTypes.Text();
- TreeNodeCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
- let offset = 0;
- let step = 7;
- let level = getTreeLevel(datas[row],datas);//从0开始,取当前节点是第几级的
- let tem = offset+margin+ rectW/2+step;//两条线之间的间隔
- let t_offset = offset;
- let temParentID = datas[row].ParentID;
- for(let i = level;i>0;i--){//这里是画子节点前面的竖线,从第二级开始
- let temParent = getParent(temParentID,datas);
- if(temParent){//父节点有下一个兄弟节点才需要画
- if(hasNextBrother(parentMap,temParent)) sheetCommonObj.drawLine(ctx,x+t_offset+tem*i,y,x+t_offset+tem*i,y+h);
- temParentID = temParent.ParentID;
- }
- offset +=tem;
- }
- offset+=step;
- if(hasChildern(datas[row].ID,datas)){//如果是有子节点
- //第一条不用画方框头上那条竖线其它都要
- if(row !=0) sheetCommonObj.drawLine(ctx,x+offset+ rectW/2+margin,y,x+offset+ rectW/2+margin,y + Math.round(h / 2) - rectH / 2);
- //画方框下面的那条竖线,如果没有下一个兄弟节点,则不用画
- if(hasNextBrother(parentMap,datas[row])) sheetCommonObj.drawLine(ctx,x+offset+ rectW/2+margin,y + Math.round(h / 2) + rectH / 2,x+offset+ rectW/2+margin,y + h);
- sheetCommonObj.drowRect(ctx, x+offset, y, w, h,rectW,rectH,margin);
- sheetCommonObj.drowSymbol(ctx, x+offset, y, w, h,rectW,rectH,margin, this.collapsed);
- this.rectInfo = {x:x+offset+margin,rectW:rectW}//计录一下可点击位置
- }else {
- let hasNext = datas[row+1]?datas[row+1].ParentID == datas[row].ParentID:false;
- sheetCommonObj.drowSubItem(ctx, x, y, w, h, offset,hasNext,margin+ rectW/2);
- }
- offset += step;
- offset += rectW;
- x = x + offset;//设置偏移
- w = w - offset;
- GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments);
- };
- // 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) {
- ////方框外1像素内都有效
- if (!_.isEmpty(this.rectInfo)&&Math.floor(hitinfo.x) <= this.rectInfo.x+this.rectInfo.rectW+2 && Math.floor(hitinfo.x) >= this.rectInfo.x-2) {
- this.collapsed = !this.collapsed;
- this.refreshChildrenVisible(hitinfo.sheet);
- hitinfo.sheet.invalidateLayout();
- hitinfo.sheet.repaint();
- }
- };
- TreeNodeCellType.prototype.refreshChildrenVisible = function (sheet) {
- sheet.suspendPaint();
- sheet.suspendEvent();
- refreshVisible(datas[row]);
- sheet.resumeEvent();
- sheet.resumePaint();
- function refreshVisible(item){
- if(parentMap[item.ID]){
- for(let sub of parentMap[item.ID]){
- refreshVisible(sub)
- }
- }
- let visible = getVisible(item);
- let trow = datas.indexOf(item);
- sheet.getRange(trow , -1, 1, -1).visible(visible);
- }
-
- function getVisible(item) {
- if(item.ParentID){
- let parent = getParent(item.ParentID,datas);
- if(!parent) return true;
- let p_row= datas.indexOf(parent);
- let visible = !sheet.getCellType(p_row,0).collapsed;
- if(visible == true){ //如果是显示的,则要再往父节点的父节点检查,只要有一个节点是隐藏的,则都是隐藏
- return getVisible(parent);
- }else {
- return visible
- }
- }else {//如果parentID 为空则是最根节点
- return true;
- }
- }
-
-
- };
- return new TreeNodeCellType()
- function getTreeLevel(item,data) {
- if(item.ParentID){
- let pitem = _.find(data,{'ID':item.ParentID});
- return getTreeLevel(pitem,data) + 1;
- }else {
- return 0
- }
- }
- function hasChildern(ID,data) {//返回是否有子项
- let p = _.find(data,{'ParentID':ID});
- if(p) return true;
- return false
- }
- function getParent(ParentID,data) {
- let p = _.find(data,{'ID':ParentID});
- return p;
- }
- function hasNextBrother(parentMap,item){
- let children =parentMap[item.ParentID];
- if(children && children.indexOf(item) == children.length -1) return false;
- return true
- }
- },
- getFeeRateEditCellType:function () {
- var ns = GC.Spread.Sheets;
- function FeeRateEditCellType() {
- var init=false;
- }
- FeeRateEditCellType.prototype = new ns.CellTypes.Text();
- //2018-12-12 按新需求隐藏费率选择按钮
- /* FeeRateEditCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
- GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments);
- if(feeRateObject.editingCell && !projectReadOnly){
- 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) {
- let me=feeRateObject;
- if(me.editingCell && 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){
- if(!projectReadOnly && me.ifFeeRateEdit(hitinfo.row,hitinfo.sheet.name())){
- $('#calcBaseFeeRateConf').attr('toggle', 'feeRate');
- changeCalcBaseFeeRate('feeRate');
- $('#tabFeeRate').tab('show');
- me.showSelectModal(hitinfo);
- }
- }else {//鼠标点击其它地方,消失
- hideButton(hitinfo);
- }
- }
- };
- FeeRateEditCellType.prototype.processMouseEnter = function (hitinfo){
- let me=feeRateObject;
- me.pmLeave = false;
- if(me.editingCell==null){
- var showSelectBtn = true;
- if(hitinfo.sheet.name()!='calc_detail'){
- showSelectBtn=me.ifFeeRateEdit(hitinfo.row,hitinfo.sheet.name());
- }
- if(showSelectBtn){
- me.editingCell={
- row:hitinfo.row,
- col:hitinfo.col
- };
- hitinfo.sheet.invalidateLayout();
- hitinfo.sheet.repaint();
- }
- }
- };
- FeeRateEditCellType.prototype.processMouseLeave = function (hitinfo) {
- hideButton(hitinfo);
- };
- function hideButton(hitinfo) {
- if(!feeRateObject.pmLeave){
- feeRateObject.editingCell=null;
- hitinfo.sheet.invalidateLayout();
- hitinfo.sheet.repaint();
- feeRateObject.pmLeave = true;
- }
- }*/
- return new FeeRateEditCellType();
- },
- showSelectModal:function (hitinfo) {
- let project = projectObj.project;
- let field = projectObj.mainController.setting.cols[hitinfo.col].data.field;
- if(MainTreeCol.lockBillChecking(project.mainTree.selected,field)){ //锁定的清单不显示
- return;
- }
- //$("#fee_rate_tree").modal({show:true});
- $("#calcBaseFeeRate").modal({show:true});
- $('#edit_from').val(hitinfo.sheet.name());
- },
- 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 (row,name) {
- if( name == 'mainSheet'){
- var selected = projectObj.project.mainTree.items[row];
- return selected&&MainTreeCol.readOnly.forFeeRate(selected)?false:true;
- }
- return 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();
- },
- initFeeRateSpread:function (rowCount) {
- //初始化费用项表格
- this.mainFeeRateSpread = sheetCommonObj.buildSheet($('#divFee')[0], this.mainFeeRateSetting,rowCount);
- sheetCommonObj.spreadDefaultStyle(this.mainFeeRateSpread);
- this.mainFeeRateSpread.options.scrollbarMaxAlign = true;
- this.mainFeeRateSheet = this.mainFeeRateSpread.getSheet(0);
- if(!projectReadOnly){
- sheetCommonObj.lockCells(this.mainFeeRateSheet , this.mainFeeRateSetting);
- }
- this.mainFeeRateSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onMainFeeRateSheetValueChange);
- //this.mainFeeRateSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, this.onMainFeeRateSelectChanged);
- this.mainFeeRateSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onMainFeeRateRangeChanged);
- this.mainFeeRateSheet.bind(GC.Spread.Sheets.Events.EditStarting, function (e,args) {
- let me =feeRateObject;
- if($.bootstrapLoading.isLoading()) args.cancel = true;
- if(!me.mainFeeRateEditChecking(args.row,args.col)){
- args.cancel = true;
- }
- });
- this.mainFeeRateSheet.name('mainFeeRateSheet');
- disableRightMenu("divFee",this.mainFeeRateSpread,this.rightClickCallback);
- //打开他人分享的项目、只读
- if(projectReadOnly){
- sheetCommonObj.disableSpread(this.mainFeeRateSpread);
- }
- },
- rightClickCallback:function (row) {
- let me = feeRateObject;
- me.onMainFeeRateSelect(row);
- },
- showMainFeeRateData:function () {
- let me = this;
- let selected = me.mainFeeRateSheet.getSelections()[0];
- me.activateFeeRate = projectObj.project.FeeRate.getActivateFeeRate();
- me.mainFeeRateData = projectObj.project.FeeRate.getActivateFeeRate().rates;
- me.mainFeeRateSheet.setRowCount(0);
- me.mainFeeRateSheet.setRowCount(me.mainFeeRateData.length);
- me.showFeeRateTree(me.mainFeeRateSheet,me.mainFeeRateSetting,me.mainFeeRateData);
- me.mainFeeRateSheet.setSelection(selected.row,selected.col,selected.rowCount,selected.colCount);
- },
- reFreshRateViews:function() {
- feeRateObject.loadPageContent();
- this.showMainFeeRateData();
- if(subRateObject.subRateSpread){//如果子费率没有初始化过的话,不需要显示。
- subRateObject.initSubRateSpread(this.mainFeeRateData[0]);
- }
- },
- mainFeeRateEditChecking:function (row,col) {//false 不能编辑,true 可以编辑
- let me =feeRateObject;
- let recode = me.mainFeeRateData[row];
- let dataCode = me.mainFeeRateSetting.header[col].dataCode;
- if(dataCode=="rate"&&me.getChildrenCount(recode.ID,me.mainFeeRateData)>0){//有子节点时不能编辑费率列
- return false;
- }
- return true;
- },
- onMainFeeRateSheetValueChange:function (e,info) {
- feeRateObject.updateFeerateWhenCellsChange([info]);
- },
- onMainFeeRateRangeChanged:function (e,info) {
- let me = feeRateObject;
- let changeCells = [];
- for(let c of info.changedCells){
- let tem = {
- row:c.row,
- col:c.col,
- newValue:info.sheet.getCell(c.row,c.col).value()
- };
- changeCells.push(tem);
- }
- me.updateFeerateWhenCellsChange(changeCells);
- },
- updateFeerateWhenCellsChange:function (cells) {// col,row,newValue
- let me = feeRateObject,updateDatas = [],feeRate = projectObj.project.FeeRate;//[{rateID:rateID,doc:doc}]
- let refreshA = [];//记录刷新条数的数组
- for(let c of cells){
- let temData = {};
- let recode = me.mainFeeRateData[c.row];
- let fieldID = me.mainFeeRateSetting.header[c.col].dataCode;
- let value = c.newValue;
- let oldValue = recode[fieldID];
- if(!me.mainFeeRateEditChecking(c.row, c.col)){
- me.mainFeeRateSheet.setValue(c.row, c.col, oldValue);
- continue;
- }else if(fieldID == 'rate'&&value !== null && value!==0){
- let checkResult = scMathUtil.isNumOrFormula(value);
- if(checkResult!=null && !isNaN(checkResult)){
- value = scMathUtil.roundForObj(checkResult,getDecimal("feeRate"));
- }else {
- alert('当前输入的数据类型不正确,请重新输入。');
- me.mainFeeRateSheet.setValue(c.row, c.col, oldValue);
- continue;
- }
- }
- if(recode[fieldID] == value){//没有改变
- continue;
- }
- temData[fieldID] = value ;
- updateDatas.push({rateID:recode.ID,doc:temData});
- refreshA.push({col:c.col,row:c.row,fieldID:fieldID,value:value,rateItem:recode,rateID:recode.ID});
- }
- if(updateDatas.length > 0){
- $.bootstrapLoading.start();
- feeRate.updateFeeRatesByIDs(updateDatas,function () {
- let feerateInfo = [];
- for(let r of refreshA){
- me.mainFeeRateSheet.setValue(r.row, r.col, r.value);
- if(r.fieldID == 'rate'){
- const foreColor = feeRateObject.rateShouldMark(r.rateItem, r.value) ? 'red' : 'black';
- me.mainFeeRateSheet.getCell(r.row, r.col).foreColor(foreColor);
- feerateInfo.push({rateID:r.rateID,value:r.value});
- }
- }
- if(feerateInfo.length > 0){
- feeRate.onFeeRatesChange(feerateInfo);
- }else {
- $.bootstrapLoading.end();
- }
- })
- }
- },
- onMainFeeRateSelectChanged:function (e, info) {
- let me = feeRateObject;
- let row = info.newSelections[0].row;
- me.onMainFeeRateSelect(row);
- },
- onMainFeeRateSelect:function (row) {
- let me = this;
- if(row!=-1){
- subRateObject.initSubRateSpread(me.mainFeeRateData[row]);
- }
- },
- updateBySelect:function (rate,selectMap,mapID) {
- let selected = this.mainFeeRateSheet.getSelections()[0];
- projectObj.project.FeeRate.backupDatas();
- let item = this.mainFeeRateData[selected.row];
- item.rate = rate;
- for(let key in selectMap){
- let recode = item.subFeeRate.recodes[key];
- let optionList = recode.optionList;
- for(let o of optionList){
- if(o.value==selectMap[key]){
- o.selected=true;
- }else {
- o.selected = false;
- }
- }
- }
- if($('#cascadeSet').prop('checked')){
- this.cascadeSetRates(item,selected.row,mapID,selectMap);
- }else {
- projectObj.project.FeeRate.batchUpdateFeeRate([{rateIndex:selected.row,rate:item}],feeRateObject.activateFeeRate);
- }
- },
- setRateFromSub:function (subRate,value,subList,editText,feeRateCoe) {//editText 下拉框选择的值,对于如“19.00”这样下拉选择项,value会变成19,所以在valueMap里找的时候要用editText去查找
- let me = feeRateObject,feeRate = projectObj.project.FeeRate;
- let rates = feeRate.getActivateFeeRate().rates;
- let updateDatas = [];
- //对于有子节点的记录和可输入的记录,只支持一个参数(因为还要内插法取费率值),如果要支持两个以上的参数,valueMap要再改下~~~~
- for(let r of rates){
- if(gljUtil.isDef(r.subFeeRate)){
- let valueArray=[];//用来存参数的值 //这里和养护的不一样,这里下拉框是{text:value}的形式,那里是直接下匹配
- let temP =null;//这个用来存储需要内插法记算的时候,同时,树节点的子节点改变也计在这里, 这样,改变temP的值,会体现在保存subRecode
- let match = false;
- let temR = _.cloneDeep(r);//临时存储
- for(let p of temR.subFeeRate.recodes){
- if(p.name == subRate.name){
- temP = p;
- match = true;
- }
- let setValue = false;
- for(let o of p.optionList){
- if(match == true) {//匹配上了,改对应的selected 为 true
- if(o.value == value){//这里和养护的不一样,这里下拉框是{text:value}的形式,那里是直接下匹配
- o.selected = true;
- valueArray.push(value);
- setValue = true;
- }else {
- o.selected = false;
- }
- }else {//没有匹配上的,直接取值就可以(这个是为多参数时用的,但是目前来看,不支持多参数,比较麻烦)
- if(o.selected == true) valueArray.push(o.value);
- }
- }
- if(match==true && setValue ==false) valueArray.push(value);//如果匹配上了,但是setValue为false,说明没有满足和选项,要用内插法或超出倍数算值
- }
- if(match == true){//说明要改rate的值,先从valueMap中去查
- if(subList && temP.subList && temP.subList.length > 0){
- temP.subList = subList;// 设置树节点的子节点的值
- }
- let doc = {"subFeeRate":temR.subFeeRate};
- let valueKey = valueArray.join('-');
- let valueMaps = r.subFeeRate.valueMaps;
- if(me.feeRateSpecialHandle){//不同编办特殊处理
- let sf = me.feeRateSpecialHandle(subRate,value);
- if(!_.isEmpty(sf)){
- valueKey = sf.valueKey;
- temP.value = sf.value;
- }
- }
- let rate = _.find(valueMaps,{"ID":valueKey});
- if(isDef(rate)) {//找到了,直接改费率值
- doc.rate = rate.value;
- } else {//没找到,用内插法或步长算值
- let ltRate = null;//
- let gtRate = null;
- temP.value = scMathUtil.roundForObj(value,getDecimal("feeRate")) ;
- for(let v of valueMaps){
- if(parseFloat(v.ID)<parseFloat(value)){
- ltRate = v;
- }else if( gtRate==null && parseFloat(v.ID)>parseFloat(value)){
- gtRate = v;
- }
- }
- if(gljUtil.isDef(ltRate)&&gljUtil.isDef(gtRate)){//已经找到前后的值了
- let step = scMathUtil.roundForObj(gtRate.value - ltRate.value,getDecimal("process"));
- let total = parseFloat(gtRate.ID) - parseFloat(ltRate.ID)
- doc.rate =getRateByStep(ltRate.value,total,parseFloat(value) - parseFloat(ltRate.ID),step);
- }else if(gljUtil.isDef(ltRate)&>Rate == null){//说明是超出了选项的最大值
- let share = parseFloat(value) - parseFloat(ltRate.ID);//超出了多少
- doc.rate = getRateByStep(ltRate.value,temP.step,share,temP.amount)
- }else if(gljUtil.isDef(gtRate)&<Rate==null){//说明是只有一个选项,且这个选项比输入的值大
- let step = parseFloat(gtRate.value)- 0;
- doc.rate = getRateByStep(0,gtRate.value,value,step)
- }
- }
- if(isDef(doc.rate)){
- if(feeRateCoe) doc.rate = scMathUtil.roundForObj(doc.rate * feeRateCoe,getDecimal("feeRate")); //如果是从乘系数过来的,乘以系数。
- updateDatas.push({rateID:r.ID,doc:doc});
- }
- }
- }
- }
- if(updateDatas.length > 0){
- $.bootstrapLoading.start();
- feeRate.updateFeeRatesByIDs(updateDatas,async function () {
- let feerateInfo = [];
- for(let u of updateDatas){
- feerateInfo.push({rateID:u.rateID,value:u.doc["rate"]});
- }
- subRateObject.showSubRateData();
- me.showMainFeeRateData();
- if(feerateInfo.length > 0){
- await feeRate.onFeeRatesChange(feerateInfo);
- }else {
- $.bootstrapLoading.end();
- }
- })
- }
- function getRateByStep(ltValue,total,share,step) { //min值 ,计算值的总区间, 区间中占比,步长--后端重选标准也要用到
- let p = scMathUtil.roundForObj(share/total,getDecimal("process"));
- let a = scMathUtil.roundForObj(step * p,getDecimal("process")) ;
- return scMathUtil.roundForObj(ltValue + a,getDecimal("feeRate"))
- }
- },
- cascadeSetRates:function(selectedItem,sourceRow,mapID,selectMap){
- let items=[];
- items.push({rateIndex:sourceRow,rate:selectedItem});
- _.forEach(this.mainFeeRateData,function (recode,Index) {
- if(Index!=sourceRow&&recode.subFeeRate){
- let valueMaps = recode.subFeeRate.valueMaps;
- let valueMap = _.find(valueMaps,{ID:mapID});
- if(valueMap){//选项完全一样的情况
- if(valueMap.value==recode.rate){
- return;
- }else {
- recode.rate = valueMap.value;
- _.forEach(selectMap,function (value,key) {
- let tempRecode = recode.subFeeRate.recodes[key];
- let optionList = tempRecode.optionList;
- for(let o of optionList){
- o.value===value? o.selected = true:o.selected = false;
- }
- });
- items.push({rateIndex:Index,rate:recode});
- }
- }else {//某条选项一样的情况
- let needUpdate = false;
- let selectList = mapID.split('-');
- let newList=[];
- _.forEach(recode.subFeeRate.recodes,function (r) {
- let oList = r.optionList, oldSelectIndex=0, 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){
- let 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.reFreshRateViews();
- $.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;
- }
- let 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);
- /* let valideName = $('#valid_name').val();
- if(valideName==''||valideName!==newName){
- }else {
- feeRateObject.submitSaveAs(newName);
- }*/
- },
- submitSaveAs:function (newName) {
- let me = this;
- let FeeRate = projectObj.project.FeeRate;
- FeeRate.feeRateFileSaveAs(newName,function (result) {
- me.activateFeeRate = result;
- me.loadPageContent();
- $('#copy-lv').modal('hide');
- let data ={
- projectID:projectObj.project.ID(),
- oldRoom:socketObject.roomInfo.feeRate,
- newRoom: FeeRate.getActivateFeeRateFileID(),
- userID:userID,
- name:'feeRate'
- };
- socket.emit('changeNewRoom',data);
- socketObject.roomInfo.feeRate = FeeRate.getActivateFeeRateFileID();
- $.bootstrapLoading.end();
- });
- },
- getChangeInfo:function () {
- var me = this;
- var callback=function (data) {
- me.changeInfo=data;
- me.loadChangePageContent(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);
- })
- $('#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()){
- if($.bootstrapLoading.isLoading()){
- $.bootstrapLoading.end();
- }
- alert('费率文件不可为空');
- return;
- }
- if($("#currentOptions").val()==this.activateFeeRate.ID){
- return;
- }
- var name =$("#currentOptions").find("option:selected").text();
- var newFeeRateFile = {
- id:newVal,
- name:name
- }
- var callback=function () {
- feeRateObject.reFreshRateViews();
- 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 callback=function (data) {
- if(data){
- //$('#renameConfirm').attr("disabled","disabled");
- $('#renameError').text("本建设项目中已存在同名费率文件。").show();
- $('#rename-lv').modal('show');
- $("#newFeeRateID").val(feeRateFileID);
- $("#newFeeRateName").val(name);
- }else {
- //$('#renameConfirm').removeAttr("disabled");
- $('#renameError').hide();
- feeRateObject.changeFeeRateFileConfirm(feeRateFileID,name);
- }
- };
- projectObj.project.FeeRate.checkFeeRateName(name,callback);
- /* 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.reFreshRateViews();
- 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;
- if(selected.data.feeRateID === parseInt(rate.ID)) return $("#calcBaseFeeRate").modal('hide');
- $.bootstrapLoading.start();
- projectObj.project.FeeRate.submitFeeRateFromBill(rate,selected.data,function (data) {
- selected.data.feeRateID= parseInt(rate.ID);
- selected.data.feeRate=scMathUtil.roundToString(rate.rate,getDecimal("feeRate"));
- selected.changed = true;
- projectObj.project.calcProgram.calcAndSave(selected);
- $("#calcBaseFeeRate").modal('hide');
- $.bootstrapLoading.end();
- });
- },
- 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};
- $.bootstrapLoading.start();
- calcProgramManage.saveCalcItem(data,function (result) {
- calInfo.calcItem.feeRate=rate.rate;
- projectObj.project.calcProgram.compileAllTemps();
- projectObj.project.calcProgram.calcAllNodesAndSave();
- calcProgramManage.refreshDetailSheet();
- $("#calcBaseFeeRate").modal('hide');
- $.bootstrapLoading.end();
- });
- 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;
- let names = _.map(usageProjects,'name');
- let popover_content = names.join('<br>');
- return "费率的变化,将自动影响以下单位工程造价:<br>"+ popover_content;
- }
- $(function(){
- $('#pop-lv').tooltip({
- placement:"bottom",
- html:true,
- trigger:"hover | focus",
- title:getPopoverContent
- }
- );
- $('#tab_fee_rate').on('shown.bs.tab', function (e) {
- sessionStorage.setItem('mainTab', '#tab_fee_rate');
- let me = feeRateObject;
- $(e.relatedTarget.hash).removeClass('active');
- if(me.mainFeeRateSpread == null) me.initFeeRateSpread(0);
- subRateObject.initSubRateSpread();
- me.showMainFeeRateData();
- me.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();
- feeRateObject.changeFeeRateStandard(newVal);
- //这里改成不判断了,只是点击确定了就重选
- //if(newVal&&newVal!=feeRateFile.libID) feeRateObject.changeFeeRateStandard(newVal);
- });
- $('#saveAsFeeRate').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();
- var callback=function (data) {
- if(data){
- $('#renameError').text("已存在同名费率文件。").show();
- $("#newFeeRateID").val(feeRateFileID);
- $("#newFeeRateName").val(name);
- }else {
- $('#renameError').hide();
- $('#rename-lv').modal('hide');
- feeRateObject.changeFeeRateFileConfirm(feeRateFileID,name);
- }
- };
- projectObj.project.FeeRate.checkFeeRateName(name,callback);
- })
- $('#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});
- })
- $('#calcBaseFeeRate').on('shown.bs.modal', function (e) {
- let toggle = $('#calcBaseFeeRateConf').attr('toggle');
- if(feeRateObject.feeRateSpreads==null){
- feeRateObject.createSheet();
- }
- feeRateObject.initFeeRateEditDiv();
- feeRateObject.feeRateSelection=null;
- feeRateObject.showFeeRateTree(feeRateObject.feeRateSheet,feeRateObject.sheetSetting,projectObj.project.FeeRate.getActivateFeeRate().rates);
- feeRateObject.locate();
- feeRateObject.feeRateSpreads.refresh();
- });
- $('#tabFeeRate').on('shown.bs.tab', function () {
- if(feeRateObject.feeRateSpreads){
- feeRateObject.feeRateSpreads.refresh();
- }
- });
- $('#calcBaseFeeRate').on('hidden.bs.modal', function (e) {
- if(feeRateObject.feeRateSpreads){
- feeRateObject.feeRateSpreads.destroy();
- feeRateObject.feeRateSpreads=null;
- $('#edit_from').val('');
- $('#edit_row').val('');
- }
- });
- //fee_selected_conf
- $('#calcBaseFeeRateConf').bind('click',function (){
- let toggle = $(this).attr('toggle');
- if(!toggle || toggle !== 'feeRate'){
- return;
- }
- feeRateObject.submitFeeRateBySelect();
- });
- $("input[name='editFeeRateOptions']").each(function(){
- $(this).click(function(){
- let optins = $(this).val();
- if(optins == "0"){
- $("#selfDiv").show();
- $("#fee_rate_sheet").hide();
- }else {
- $("#selfDiv").hide();
- $("#fee_rate_sheet").show(function () {
- feeRateObject.feeRateSpreads.refresh();
- });
- }
- });
- });
- })
- function changeFRadioClick() {
- var radioV= $("input[name='chaneg-lv-Radio']:checked").val();
- if(radioV==='0'){
- $("#fromProject").show();
- $("#fromOther").hide();
- }else {
- $("#fromProject").hide();
- $("#fromOther").show();
- }
- }
|