|
|
@@ -40,9 +40,12 @@ let divideObj = {
|
|
|
},
|
|
|
divideSpread:null,
|
|
|
billsSpread:null,
|
|
|
+ divideSubSpread:null,
|
|
|
+ showDivideGljSubTab:false,
|
|
|
initSpread:function(){
|
|
|
this.initDivideSpread();
|
|
|
this.initBillsSpread();
|
|
|
+ this.initDivideSubSpread();
|
|
|
if(!projectReadOnly){
|
|
|
this.initDivideRightClick();
|
|
|
}else {
|
|
|
@@ -58,6 +61,7 @@ let divideObj = {
|
|
|
if(!$('#divide_main').is(':visible')) return;
|
|
|
if(this.divideSpread) this.divideSpread.refresh();
|
|
|
if(this.billsSpread) this.billsSpread.refresh();
|
|
|
+ if(this.divideSubSpread) this.divideSubSpread.refresh();
|
|
|
},
|
|
|
showDivideDatas:function(){
|
|
|
if(!$('#divide_main_sheet').is(':visible')) return;
|
|
|
@@ -110,7 +114,7 @@ let divideObj = {
|
|
|
//金额,预算价,取费类别不可编辑
|
|
|
if(dataCode =="totalPrice" || dataCode =="marketPrice" || dataCode =="programID" ) return false;
|
|
|
//有子项时,单价不可编辑
|
|
|
- if(_.find(me.divideDatas,{ParentID:data.ID})) return false;
|
|
|
+ if(dataCode =="unitPrice"&& _.find(me.divideDatas,{ParentID:data.ID})) return false;
|
|
|
}
|
|
|
if( data.itemType == "量价" && dataCode =="totalPrice") return false//量价:“金额”不可编辑。
|
|
|
if(data.itemType == "定额"){ //定额:“单位”、“单价”、“金额”、“预算价”
|
|
|
@@ -145,12 +149,16 @@ let divideObj = {
|
|
|
itemType:itemType,
|
|
|
ParentID:-1
|
|
|
};
|
|
|
- if(type) newItem.type = type;
|
|
|
+ if(type) newItem.subType = type;
|
|
|
let selected = this.getSelectedItem();
|
|
|
if(itemType!="分摊项"){//当插入定额或者量价时:
|
|
|
newItem.ParentID = selected.itemType == "分摊项"?selected.ID:selected.ParentID;
|
|
|
+ }
|
|
|
+ if(itemType == "定额") newItem.type = rationType.ration;
|
|
|
+ if(itemType == "量价"){
|
|
|
+ newItem['programID'] = projectObj.project.calcProgram.compiledTemplateMaps["费率为0"];
|
|
|
+ newItem.type = rationType.volumePrice;
|
|
|
}
|
|
|
- if(itemType == "量价") newItem['programID'] = projectObj.project.calcProgram.compiledTemplateMaps["费率为0"];
|
|
|
|
|
|
let [seq,datas] = this.getNewSeqs(selected,newItem);
|
|
|
newItem.seq = seq;
|
|
|
@@ -167,7 +175,7 @@ let divideObj = {
|
|
|
if(s.ParentID == selected.ID) subItems.push({type:"delete",ID:s.ID});
|
|
|
}
|
|
|
}
|
|
|
- subItems.push({type:"delete",ID:selected.ID});
|
|
|
+ subItems.push({type:"delete",ID:selected.ID,itemType:selected.itemType});
|
|
|
await this.updateItem(subItems);
|
|
|
},
|
|
|
getNewSeqs:function(selected,newItem){
|
|
|
@@ -191,18 +199,64 @@ let divideObj = {
|
|
|
try {
|
|
|
$.bootstrapLoading.start();
|
|
|
let result = ajaxPost("/divide/updateItem",{ID:divideSetting.ID,updateDatas:datas})
|
|
|
- for(let d of datas){
|
|
|
- if(d.type == "add"){
|
|
|
- divideSetting.divideList.push(d.doc);
|
|
|
- }
|
|
|
- if(d.type == "delete"){
|
|
|
- _.remove(divideSetting.divideList,{'ID':d.ID});
|
|
|
- }
|
|
|
- if(d.type == "update"){
|
|
|
- let item = _.find(divideSetting.divideList,{'ID':d.ID});
|
|
|
- if(item) gljUtil.updateProperty(item,d.doc);
|
|
|
- }
|
|
|
+ this.refreshDivideCaches(datas);
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ }
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ this.showDatas();
|
|
|
+ },
|
|
|
+ refreshDivideCaches:function(datas){
|
|
|
+ let divideSetting = projectObj.project.divide_setting.datas
|
|
|
+ for(let d of datas){
|
|
|
+ if(d.type == "add"){
|
|
|
+ divideSetting.divideList.push(d.doc);
|
|
|
}
|
|
|
+ if(d.type == "delete"){
|
|
|
+ _.remove(divideSetting.divideList,{'ID':d.ID});
|
|
|
+ if(d.itemType =="定额"){
|
|
|
+ _.remove(divideSetting.ration_gljs,{'rationID':d.ID});
|
|
|
+ _.remove(divideSetting.ration_coes,{'rationID':d.ID});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(d.type == "update"){
|
|
|
+ let item = _.find(divideSetting.divideList,{'ID':d.ID});
|
|
|
+ if(item) gljUtil.updateProperty(item,d.doc);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ addDivideRation:async function(rationRepId,code){
|
|
|
+ let selected = this.getSelectedItem();
|
|
|
+ if(!selected) return;
|
|
|
+ let divideSetting = projectObj.project.divide_setting.datas
|
|
|
+ let pEngineer = projectObj.project.projectInfo.property.projectEngineering;
|
|
|
+ let libIDs = [rationRepId];
|
|
|
+ let defaultLibID = rationLibObj.getDefaultStdRationLibID();
|
|
|
+ let data = {userID:userID,defaultLibID:defaultLibID, rationRepIds: libIDs, code: code,quantityDecimal:getDecimal("ration.quantity"),projectID:projectObj.project.ID()};
|
|
|
+ data.ParentID = selected.itemType == "分摊项"?selected.ID:selected.ParentID;
|
|
|
+ let [seq,datas] = this.getNewSeqs(selected,data);
|
|
|
+ data.type="add";
|
|
|
+ data.seq = seq;
|
|
|
+ data.divideID = divideSetting.ID;
|
|
|
+ if(pEngineer) data.programID = pEngineer;
|
|
|
+ data.divideDatas = datas;
|
|
|
+ let sel = this.divideSheet.getSelections()[0];
|
|
|
+ this.divideSheet.setSelection(sel.row+1,sel.col,sel.rowCount,sel.colCount);
|
|
|
+ await this.updateDivideRation(data);
|
|
|
+
|
|
|
+ },
|
|
|
+ updateDivideRation:async function(data){
|
|
|
+ let divideSetting = projectObj.project.divide_setting.datas
|
|
|
+ try {
|
|
|
+ $.bootstrapLoading.start();
|
|
|
+ let result = await ajaxPost("/ration/updateDivideRation",data)
|
|
|
+ if(data.type=="add"){
|
|
|
+ data.divideDatas.push({type:"add",doc:result.ration});
|
|
|
+ this.refreshDivideCaches(data.divideDatas);
|
|
|
+ if(result.projectGLJList) projectObj.project.projectGLJ.loadNewProjectGLJToCaches(result.projectGLJList,true);
|
|
|
+ if(result.ration_gljs) divideSetting.ration_gljs = divideSetting.ration_gljs.concat(result.ration_gljs);
|
|
|
+ if(result.ration_coes) divideSetting.ration_coes = divideSetting.ration_coes.concat(result.ration_coes);
|
|
|
+ }
|
|
|
} catch (error) {
|
|
|
console.log(error)
|
|
|
}
|
|
|
@@ -210,6 +264,7 @@ let divideObj = {
|
|
|
this.showDatas();
|
|
|
},
|
|
|
|
|
|
+
|
|
|
initDivideSpread:function(){
|
|
|
if(this.divideSpread) return;
|
|
|
this.divideSpread = SheetDataHelper.createNewSpread($("#divide_main_sheet")[0]);
|
|
|
@@ -218,11 +273,9 @@ let divideObj = {
|
|
|
sheetCommonObj.initSheet(this.divideSheet, this.divideSetting, 2);
|
|
|
this.divideSheet.bind(GC.Spread.Sheets.Events.EditStarting,this.onDivideEditStarting);
|
|
|
this.divideSheet.bind(GC.Spread.Sheets.Events.ValueChanged,this.onDivideValueChange)
|
|
|
-/* ;
|
|
|
+ this.divideSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onDivideSelectionChange);
|
|
|
+ /* ;
|
|
|
this.divideSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onCoeRangeChanged); */
|
|
|
- this.divideSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, function (e,args) {
|
|
|
- args.sheet.repaint();
|
|
|
- });
|
|
|
|
|
|
SheetDataHelper.protectdSheet(this.divideSheet);
|
|
|
},
|
|
|
@@ -250,6 +303,15 @@ let divideObj = {
|
|
|
|
|
|
await me.updateItem([me.getDivideUpdateData(recode,dataCode,value)]);
|
|
|
},
|
|
|
+ onDivideSelectionChange:function(sender,args){
|
|
|
+ let me = divideObj;
|
|
|
+ let newSel = args.newSelections[0];
|
|
|
+ let oldSel = args.oldSelections?args.oldSelections[0]:{};
|
|
|
+ if(newSel.row != oldSel.row){
|
|
|
+ me.initNavItem();
|
|
|
+ }
|
|
|
+ args.sheet.repaint();
|
|
|
+ },
|
|
|
getDivideUpdateData:function(recode,dataCode,value){
|
|
|
let doc = {};
|
|
|
if(recode.itemType == "分摊项"){
|
|
|
@@ -275,6 +337,84 @@ let divideObj = {
|
|
|
sheetCommonObj.initSheet(this.billsSheet, this.billsSetting, 0);
|
|
|
SheetDataHelper.protectdSheet(this.divideSheet);
|
|
|
},
|
|
|
+ initDivideSubSpread:function(){
|
|
|
+ if(this.divideSubSpread) return;
|
|
|
+ this.divideSubSpread = SheetDataHelper.createNewSpread($("#divide_subSpread")[0],2);
|
|
|
+ sheetCommonObj.spreadDefaultStyle(this.divideSubSpread);
|
|
|
+ this.divideSubSheet = this.divideSubSpread.getSheet(0);
|
|
|
+ sheetCommonObj.initSheet(this.divideSubSheet, gljCol.ration_glj_setting, 0);
|
|
|
+ SheetDataHelper.protectdSheet(this.divideSubSheet);
|
|
|
+ },
|
|
|
+ initNavItem(){
|
|
|
+ let selected = this.getSelectedItem();
|
|
|
+ if(selected.itemType == "分摊项"){
|
|
|
+ $("#divide_itemTextDiv").hide();
|
|
|
+ $(`#divide_subSpread`).css('width', "100%");
|
|
|
+ }else{
|
|
|
+ $("#divide_itemTextDiv").show();
|
|
|
+ if(this.showDivideGljSubTab == true){
|
|
|
+ $("#divide_gljSubDiv").show();
|
|
|
+ $("#divide_rgResize").show();
|
|
|
+ } else {
|
|
|
+ $("#divide_gljSubDiv").hide();
|
|
|
+ $("#divide_rgResize").hide();
|
|
|
+ }
|
|
|
+ this.initItemWidth();
|
|
|
+ }
|
|
|
+ this.divideSubSpread.refresh();
|
|
|
+ },
|
|
|
+ initItemWidth:function (){
|
|
|
+ //总宽度
|
|
|
+ let totalWidth = $('#divide_subItems').width();
|
|
|
+ //人材机和项目特征文本比例
|
|
|
+ const openWidth = 30;//打开项目特征工具条
|
|
|
+ const tab_tem = (305+openWidth+10)/totalWidth;//tab显示框默认宽度:305(表格宽度) + 30(工具条宽度)+10(resize div 宽度)
|
|
|
+ let //默认比例
|
|
|
+ textPercent = tab_tem * 100 + '%',//'15%',
|
|
|
+ rcjPercent = (1 - tab_tem)* 100 + '%';//85
|
|
|
+ //文本没显示,则打开工具条固定30px转换百分比
|
|
|
+ if (!this.showDivideGljSubTab) {
|
|
|
+ textPercent = openWidth / totalWidth;
|
|
|
+ rcjPercent = 1 - textPercent;
|
|
|
+ textPercent = textPercent * 100 + '%';
|
|
|
+ rcjPercent = rcjPercent * 100 + '%';
|
|
|
+ }
|
|
|
+ //设置特征及内容与排版规则的比例
|
|
|
+ $('#divide_subSpread').css('width', rcjPercent);
|
|
|
+ $('#divide_itemTextDiv').css('width', textPercent);
|
|
|
+ //打开了项目特征,则继续加载人材机表和项目特征文本具体比例
|
|
|
+ if (divideObj.showDivideGljSubTab === true) {
|
|
|
+ let rg_sideResizeEles = this.getSubSideResize();
|
|
|
+ SlideResize.loadHorizonWidth(rg_sideResizeEles.eleObj.module,
|
|
|
+ [rg_sideResizeEles.eleObj.resize], [rg_sideResizeEles.eleObj.left, rg_sideResizeEles.eleObj.right]);
|
|
|
+ $("#divide_gljSubDiv").width( $('#divide_itemTextDiv').width() - rg_sideResizeEles.eleObj.resize.width() - 30)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ initDivideGljSubTab:function(){
|
|
|
+ if(this.showDivideGljSubTab == true){
|
|
|
+ $("#divide_gljSubDiv").show();
|
|
|
+ $("#divide_rgResize").show();
|
|
|
+ } else {
|
|
|
+ $("#divide_gljSubDiv").hide();
|
|
|
+ $("#divide_rgResize").hide();
|
|
|
+ }
|
|
|
+ this.initItemWidth();
|
|
|
+ },
|
|
|
+ getSubSideResize: function () {
|
|
|
+ let rg_sideResizeEles = {};
|
|
|
+ rg_sideResizeEles.eleObj = {
|
|
|
+ module: this.moduleName,
|
|
|
+ resize: $('#divide_rgResize'),
|
|
|
+ parent: $('#divide_subItems'),
|
|
|
+ left: $('#divide_subSpread'),
|
|
|
+ right: $('#divide_itemTextDiv')
|
|
|
+ };
|
|
|
+ rg_sideResizeEles.limit = {
|
|
|
+ min: 100,
|
|
|
+ max: `$('#divide_subItems').width()-100`
|
|
|
+ };
|
|
|
+ return rg_sideResizeEles;
|
|
|
+ },
|
|
|
initDivideRightClick:function(){
|
|
|
//如果当前行是无组成物的“普通材料”、“绿化苗木”、“外购砼构件”、“商品混凝土”、“商品砂浆”,则右键“添加计算材料”按钮有效。
|
|
|
let me = this;
|
|
|
@@ -356,11 +496,11 @@ let divideObj = {
|
|
|
let divideResizeEles = {};
|
|
|
divideResizeEles.eleObj = {
|
|
|
module: 'divide',
|
|
|
- resize: $('#divideResize'),
|
|
|
+ resize: $('#divide_rgResize'),
|
|
|
top: $('#divide_top'),
|
|
|
topSpread: $('#divide_main_sheet'),
|
|
|
bottom: $('#divideBottom'),
|
|
|
- bottomSpread: [$('#sub_sheet')]
|
|
|
+ bottomSpread: [$('#divide_subSpread')]
|
|
|
};
|
|
|
divideResizeEles.limit = {
|
|
|
min: 150,
|
|
|
@@ -381,7 +521,9 @@ function loadDivideHeight(){
|
|
|
let divideResizeEles = me.getDivideResizeEles();
|
|
|
SlideResize.loadVerticalHeight(divideResizeEles.eleObj.module, divideResizeEles.eleObj, divideResizeEles.limit, function () {
|
|
|
me.refreshViews();
|
|
|
+ zmhs_obj.refresh();
|
|
|
});
|
|
|
+ if($('#divide_de').is(':visible')) showDivideSide($($("#divide_stdRationTab").attr('relaPanel')), true, $("#divide_stdRationTab").attr('id'));
|
|
|
}
|
|
|
|
|
|
$('#tab_divide').on('shown.bs.tab', function (e) {
|
|
|
@@ -389,7 +531,7 @@ $('#tab_divide').on('shown.bs.tab', function (e) {
|
|
|
loadDivideHeight();
|
|
|
divideObj.initSpread();
|
|
|
divideObj.showDatas();
|
|
|
-
|
|
|
+ divideObj.initNavItem();
|
|
|
})
|
|
|
|
|
|
$('.divide-nav-link').bind('click', function () {//$('.side-tabs ul li a').bind 2018-11-23 使用更多标签,所以不能这样绑定事件了
|
|
|
@@ -452,11 +594,11 @@ function showDivideSide(tabPanel, show, id){
|
|
|
$('.divide_side .tab-pane').hide();
|
|
|
tabPanel.show();//locateTab要等div显示后才执行刷新操作
|
|
|
//加载打开的库与主界面的宽度比
|
|
|
- SlideResize.loadHorizonWidth(id, [divideSideResizeEles.eleObj.resize], [divideSideResizeEles.eleObj.left, divideSideResizeEles.eleObj.right], function(){
|
|
|
-
|
|
|
- if (id === 'stdRationTab') {//加载定额库内部上下高度
|
|
|
+ SlideResize.loadHorizonWidth(id, [divideSideResizeEles.eleObj.resize], [divideSideResizeEles.eleObj.left, divideSideResizeEles.eleObj.right], function(){
|
|
|
+ if (id === 'divide_stdRationTab') {//加载定额库内部上下高度
|
|
|
SlideResize.loadVerticalHeight(dividRationLibResizeEles.eleObj.module, dividRationLibResizeEles.eleObj, dividRationLibResizeEles.limit, function () {
|
|
|
- //sheetCommonObj.setColumnWidthByRate($('#divide_stdRationChapter').width() - 30, rationLibObj.rationChapterSpread, rationLibObj.rationChapterTreeSetting.cols);
|
|
|
+ if(rationLibObj.divide_rationChapterSpread) rationLibObj.divide_rationChapterSpread.refresh();
|
|
|
+ if(rationLibObj.divide_sectionRationsSpread) rationLibObj.divide_sectionRationsSpread.refresh();
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
@@ -465,4 +607,59 @@ function showDivideSide(tabPanel, show, id){
|
|
|
divideSideResizeEles.eleObj.right.css('width', '0%');
|
|
|
tabPanel.hide();
|
|
|
}
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+$('#divide_stdRationTab').bind('click', function () {
|
|
|
+ var select = $('#divide_stdRationLibSelect');
|
|
|
+ rationLibObj.checkSpread('divide');
|
|
|
+ if (select[0].options.length === 0) {
|
|
|
+ rationLibObj.loadStdRationLibs('divide');
|
|
|
+ //rationLibObj.loadStdRationContextMenu();
|
|
|
+ };
|
|
|
+ divideObj.initNavItem();
|
|
|
+});
|
|
|
+
|
|
|
+$('#divide_stdRationLibSelect').change(function () {
|
|
|
+ var select = $(this);
|
|
|
+ if (this.children.length !== 0) {
|
|
|
+ let rationLibId = select.val();
|
|
|
+ sessionStorage.setItem('divide_stdRationLib', rationLibId);
|
|
|
+ sessionStorage.removeItem('divide_stdRationLibExpState');
|
|
|
+ rationLibObj.loadStdRation(rationLibId,'divide');
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+$('.divide_gljSubTab ul li a').bind('click',function () {
|
|
|
+ if(this.hash =="#divide_rnc-close"){
|
|
|
+ $("#divide_zmhs_nav").hide();
|
|
|
+ $("#divide_zmhs_toogle").show();
|
|
|
+ closeTab(this);
|
|
|
+ divideObj.showDivideGljSubTab = false;
|
|
|
+ }else{
|
|
|
+ divideObj.showDivideGljSubTab = true;
|
|
|
+ }
|
|
|
+ divideObj.initDivideGljSubTab();
|
|
|
+ if(divideObj.divideSubSpread) divideObj.divideSubSpread.refresh();
|
|
|
+});
|
|
|
+
|
|
|
+$('.divide_gljSubTab ul li a').on('shown.bs.tab', function () {
|
|
|
+ if(this.hash == "#divide_rnc-zm"){
|
|
|
+ zmhs_obj.initCoeSpread();
|
|
|
+ }else if(this.hash == "#divide_rnc-fz"){
|
|
|
+ zmhs_obj.initAssSpread();
|
|
|
+ }else if(this.hash == "#divide_rnc-cus"){
|
|
|
+ zmhs_obj.initCusSpread();
|
|
|
+ }else if(this.hash == "#divide_rnc-stable"){
|
|
|
+ zmhs_obj.initStableSpread();
|
|
|
+ }
|
|
|
+ zmhs_obj.refresh();
|
|
|
+ zmhs_obj.showDatas();
|
|
|
+});
|
|
|
+
|
|
|
+$('#divide_zmhs_toogle').bind('click',function (){
|
|
|
+ $("#divide_zmhs_nav").show();
|
|
|
+ if(divideObj.showDivideGljSubTab == false){
|
|
|
+ $("#divide_hs-nav").click();
|
|
|
+ }
|
|
|
+ $("#divide_zmhs_toogle").hide();
|
|
|
+});
|