zhongzewei пре 6 година
родитељ
комит
1ef9644339

+ 3 - 4
modules/main/controllers/bills_controller.js

@@ -418,7 +418,6 @@ function getColMapping(sheetData){
         if(headRow[c]){
             headRow[c] = headRow[c].toString().replace(/\s/g, '');
             //重复的,只取第一个
-            console.log(headRow[c]);
             if(headRow[c] === '序号' && colMapping.serialNo === undefined){
                 colMapping.serialNo = c;
             }
@@ -548,8 +547,8 @@ function parseToBillData(validData, colMapping, fixedBill, projectID, stdData){
     function isExtend(preData, rData){
         let serialNo = removeESC(rData[colMapping.serialNo]);
         let code = removeESC(rData[colMapping.code]);
-        let name = rData[colMapping.name];
-        let itemCharacterText = rData[colMapping.itemCharacterText];
+        let name = removeESC(rData[colMapping.name]);
+        let itemCharacterText = removeESC(rData[colMapping.itemCharacterText]);
         return isDef(preData) && (isRoot(preData) || isLeaf(preData)) && !isDef(serialNo) && !isDef(code) && (isDef(name) || isDef(itemCharacterText));
     }
     function getBillType(rData, flag){
@@ -624,8 +623,8 @@ function parseToBillData(validData, colMapping, fixedBill, projectID, stdData){
         }
         if(isExtend(preData, rData)){
             let preBill = billIdx[preID];
-            //合并续数据
             if(preBill){
+                //合并续数据
                 preBill.code += rData[colMapping.code] ? rData[colMapping.code] : '';
                 preBill.name += rData[colMapping.name] ? rData[colMapping.name] : '';
                 preBill.itemCharacterText += rData[colMapping.itemCharacterText] ? rData[colMapping.itemCharacterText] : '';

+ 2 - 1
modules/options/models/optionTypes.js

@@ -60,8 +60,9 @@ const optionSetting = {
             stringFont: 'default',
             numFont: 'default'
         },
+        //含有计算基数的节点
         CBBILL: {
-            backColor: '#E5F3F2',
+            backColor: '#DFE8F9',
             foreColor: 'default',
             stringFont: 'default',
             numFont: 'default'

+ 32 - 18
web/building_saas/main/js/views/character_content_view.js

@@ -27,7 +27,7 @@ let contentOprObj = {
         const EVENTS = GC.Spread.Sheets.Events;
         workBook.bind(EVENTS.ButtonClicked, me.onButtonClicked);
         sheet.bind(EVENTS.EditStarting, me.onEditStart);
-        sheet.bind(EVENTS.EditEnded, me.onEditEnded);
+        sheet.bind(EVENTS.ValueChanged, me.onValueChanged);
         sheet.bind(EVENTS.ClipboardPasting, me.onClipboardPasting);
         sheet.bind(EVENTS.ClipboardPasted, me.onClipboardPasted);
         sheet.bind(EVENTS.SelectionChanged, me.onSelectionChanged);
@@ -145,10 +145,12 @@ let contentOprObj = {
         me.workBook.focus();
     },
     //更新
-    updateContent: function (job, newContent) {
+    updateContent: function (job, newContent, save = true) {
         let me = contentOprObj;
         job.content = newContent;
-        me.save();
+        if(save){
+            me.save();
+        }
     },
     //新增
     insertContent: function (sheet, idx, content) {
@@ -172,15 +174,16 @@ let contentOprObj = {
             return;
         }
     },
-    onEditEnded: function (sender, args) {
+    onValueChanged: function (sender, args) {
         let me = contentOprObj;
         if(me.setting.header[args.col].dataCode === 'isChecked'){
             return;
         }
-        args.editingText = args.editingText ? args.editingText : '';
+        args.newValue = args.newValue ?  args.newValue : '';
         //更新
-        if(args.row < me.currentCache.length ){
-            me.updateContent(me.currentCache[args.row], args.editingText);
+        if(args.row < me.currentCache.length){
+            let job = me.currentCache[args.row];
+            me.updateContent(job, args.newValue);
         }
 
     },
@@ -236,13 +239,18 @@ let contentOprObj = {
     onClipboardPasted: function (sender, args) {
         let me = contentOprObj;
         let items = sheetCommonObj.analyzePasteData(me.setting, args);
+        let toSave = false;
         for(let i = 0, len = items.length; i < len; i++){
             let rowIdx = args.cellRange.row + i;
             //更新
             if(rowIdx < me.currentCache.length){
-                me.updateContent(me.currentCache[rowIdx], items[i].content);
+                toSave = true;
+                me.updateContent(me.currentCache[rowIdx], items[i].content, false);
             }
         }
+        if(toSave){
+            me.save();
+        }
     },
     onSelectionChanged: function (sender, args) {
         let me = contentOprObj;
@@ -411,7 +419,7 @@ let characterOprObj = {
         const EVENTS = GC.Spread.Sheets.Events;
         workBook.bind(EVENTS.ButtonClicked, me.onButtonClicked);
         sheet.bind(EVENTS.EnterCell, me.onEnterCell);
-        sheet.bind(EVENTS.EditEnded, me.onEditEnded);
+        sheet.bind(EVENTS.ValueChanged, me.onValueChanged);
         sheet.bind(EVENTS.EditStarting, me.onEditStart);
         sheet.bind(EVENTS.ClipboardPasting, me.onClipboardPasting);
         sheet.bind(EVENTS.ClipboardPasted, me.onClipboardPasted);
@@ -604,7 +612,7 @@ let characterOprObj = {
         let newValue = {value: value, isSelected: true};
         item.eigenvalue.push(newValue);
     },
-    updateCharacter: function (item, character, value) {
+    updateCharacter: function (item, character, value, save = true) {
         let me = characterOprObj;
         if(character !== undefined && character !== null){
             item.character = character;
@@ -634,7 +642,9 @@ let characterOprObj = {
                 me.unsetSelected(item);
             }
         }
-        me.save();
+        if(save){
+            me.save();
+        }
     },
     insertCharacter: function (sheet, idx, character) {
         let me = characterOprObj;
@@ -663,18 +673,17 @@ let characterOprObj = {
     onEnterCell: function (sender, args) {
         args.sheet.repaint();
     },
-    onEditEnded: function (sender, args) {
-        let me = characterOprObj, characterTxt;
-        let preObj = me.currentCache.length > 0 ?  me.currentCache[me.currentCache.length - 1] : null;
-        args.editingText = args.editingText ? args.editingText : '';
+    onValueChanged: function (sender, args) {
+        let me = characterOprObj;
+        args.newValue = args.newValue ? args.newValue : '';
         //更新
         if(args.row < me.currentCache.length){
             let thisCha = me.currentCache[args.row];
             if(args.col === 0){//特征
-                me.updateCharacter(thisCha, args.editingText, null);
+                me.updateCharacter(thisCha, args.newValue, null);
             }
             else if(args.col === 1){//特征值
-                me.updateCharacter(thisCha, null, args.editingText);
+                me.updateCharacter(thisCha, null, args.newValue);
             }
         }
     },
@@ -689,13 +698,18 @@ let characterOprObj = {
     onClipboardPasted: function (sender, args) {
         let me = characterOprObj;
         let items = sheetCommonObj.analyzePasteData(me.setting, args);
+        let toSave = false;
         for(let i = 0, len = items.length; i < len; i++){
             //更新
             let rowIdx = args.cellRange.row + i;
             if(me.currentCache.length > rowIdx){
-               me.updateCharacter(me.currentCache[rowIdx], items[i].character, items[i].eigenvalue);
+                toSave = true;
+               me.updateCharacter(me.currentCache[rowIdx], items[i].character, items[i].eigenvalue, false);
             }
         }
+        if(toSave){
+            me.save();
+        }
     },
     onRangeChanged: function (sender, args) {
         let me = characterOprObj;

+ 28 - 0
web/building_saas/main/js/views/glj_view.js

@@ -236,6 +236,32 @@ var gljOprObj = {
         }
         me.updateRationGLJ(args);
     },
+    onSelectionChanged: function (sender, args) {
+        let me = gljOprObj;
+        me.initSelection(args.newSelections.length > 0 ? {row: args.newSelections[0].row} : {row: 0});
+    },
+    getSelStyle: function (selected) {
+        let style = new GC.Spread.Sheets.Style();
+        style.borderLeft = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
+        style.borderTop = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
+        style.borderRight = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
+        style.borderBottom = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
+        let colorOpts = optionsOprObj.getOption(optionsOprObj.optionsTypes.COLOROPTS);
+        let selectedColor = colorOpts.SELECTED.backColor,
+            recColor = 'White';
+        style.backColor = selected ? selectedColor : recColor;
+        return style;
+    },
+    initSelection: function (sel) {
+        let me = gljOprObj;
+        if(sel){
+            me.gljLibSheet.setStyle(sel.row, -1, me.getSelStyle(true));
+        }
+        if(me.preSelection){
+            me.gljLibSheet.setStyle(me.preSelection.row, -1, me.getSelStyle(false));
+        }
+        me.preSelection = sel;
+    },
     onButtonClick: function (sender, args) {
         if(args.sheet.isEditing()){
             args.sheet.endEdit();
@@ -1323,6 +1349,7 @@ $(function () {
             sheetCommonObj.spreadDefaultStyle(gljOprObj.gljLibSpresd);
             gljOprObj.gljLibSpresd.bind(GC.Spread.Sheets.Events.ButtonClicked, gljOprObj.onButtonClick);
             gljOprObj.gljLibSheet = gljOprObj.gljLibSpresd.getSheet(0);
+            gljOprObj.gljLibSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, gljOprObj.onSelectionChanged);
             gljOprObj.gljLibSheet.setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader);
             gljOprObj.gljLibSheet.options.isProtected = true;
             gljOprObj.gljLibSheet.name('glj_lib');
@@ -1363,6 +1390,7 @@ $(function () {
             let index = _.findIndex(gljOprObj.gljLibSheetData, {code: selected.code});
             gljOprObj.gljLibSheet.showRow(index, GC.Spread.Sheets.VerticalPosition.center);
             gljOprObj.gljLibSheet.setActiveCell(index, 0);
+            gljOprObj.initSelection({row: index});
             gljOprObj.gljLibSpresd.focus(true);
         }
         else gljOprObj.showLibGLJSheetData();

+ 6 - 8
web/building_saas/main/js/views/project_view.js

@@ -894,7 +894,7 @@ var projectObj = {
                             newCol = codeCol;
                         }
                         sheet.setActiveCell(newRow, newCol);
-                    });
+                    }, true);
                 }
                 //如果其后有定额空行,焦点跳动至定额空行的编码单元格
                 else if(nextSibling && !(isDef(nextSibling.data.code) && nextSibling.data.code.toString().trim() !== '')) {
@@ -2302,6 +2302,7 @@ $('#customFile').change(function () {
         $('#uploadAlert').hide();
         //读取各个表及表名
         $.bootstrapLoading.start();
+        $('#loadingPage').css('z-index', '2000');
         let fileReader = new FileReader();
         fileReader.onload = function(ev) {
             try {
@@ -2357,6 +2358,8 @@ $('#uploadConfirm').click(function () {
         let matchBillLibId = projectInfoObj.projectInfo.engineeringInfo.bill_lib.length > 0 ? projectInfoObj.projectInfo.engineeringInfo.bill_lib[0].id : null;
         formData.append('billsLibId', matchBillLibId);
         let uploadS = +new Date();
+        $.bootstrapLoading.start();
+        $('#loadingPage').css('z-index', '2000');
         $.ajax({
             url: '/bills/upload',
             type: 'POST',
@@ -2364,9 +2367,6 @@ $('#uploadConfirm').click(function () {
             cache: false,
             contentType: false,
             processData: false,
-            beforeSend: function() {
-                $.bootstrapLoading.start();
-            },
             success: function(response){
                 if (response.err === 0) {
                     const message = response.msg !== undefined ? response.msg : '';
@@ -2389,8 +2389,8 @@ $('#uploadConfirm').click(function () {
                 }
                 $(me).removeClass('disabled');
             },
-            error: function(){
-                alert("与服务器通信发生错误");
+            error: function(jqXHR){
+                alert(`与服务器通信发生错误${jqXHR.status} ${jqXHR.statusText}`);
                 $.bootstrapLoading.end();
                 $(me).removeClass('disabled');
             }
@@ -2616,7 +2616,6 @@ function disableTools(){
 function disableSpread(spread){
     spread.unbind(GC.Spread.Sheets.Events.ButtonClicked);
     let sheetCount = spread.getSheetCount();
-    console.log(sheetCount);
     for(let i = 0; i < sheetCount; i++){
         let sheet = spread.getSheet(i);
         sheet.unbind(GC.Spread.Sheets.Events.ButtonClicked);
@@ -2628,7 +2627,6 @@ function disableSpread(spread){
         sheet.unbind(GC.Spread.Sheets.Events.CellDoubleClick);
         sheet.unbind(GC.Spread.Sheets.Events.CellClick);
         sheet.unbind(GC.Spread.Sheets.Events.ValueChanged);
-        console.log(sheet.name());
         sheet.suspendPaint();
         sheet.suspendEvent();
         sheet.options.isProtected = true;

+ 4 - 0
web/building_saas/main/js/views/std_ration_lib.js

@@ -123,6 +123,10 @@ var rationLibObj = {
     },
     loadSectionRations: function (sectionID) {
         var showDatas = function (datas, setting) {
+            let rationSheet = rationLibObj.sectionRationsSpread.getActiveSheet();
+            TREE_SHEET_HELPER.massOperationSheet(rationSheet, function () {
+                rationSheet.setColumnWidth(0, 25, GC.Spread.Sheets.SheetArea.rowHeader);
+            });
             SheetDataHelper.loadSheetHeader(setting, rationLibObj.sectionRationsSpread.getActiveSheet());
             SheetDataHelper.loadSheetData(setting, rationLibObj.sectionRationsSpread.getActiveSheet(), datas);
             rationLibObj.setTagForHint(datas);

+ 2 - 2
web/building_saas/main/js/views/sub_view.js

@@ -11,10 +11,10 @@ let subSpread = null;
 let subObj = {
     initSubSpread:function () {
         contentOprObj.buildSheet($("#jobSpread")[0]);
-        sheetCommonObj.bindEscKey(contentOprObj.workBook, [{sheet: contentOprObj.workBook.getSheet(0), editStarting: contentOprObj.onEditStart, editEnded: contentOprObj.onEditEnded}]);
+        //sheetCommonObj.bindEscKey(contentOprObj.workBook, [{sheet: contentOprObj.workBook.getSheet(0), editStarting: contentOprObj.onEditStart, editEnded: contentOprObj.onEditEnded}]);
         sheetCommonObj.spreadDefaultStyle(contentOprObj.workBook);
         characterOprObj.buildSheet($("#itemSpread")[0]);
-        sheetCommonObj.bindEscKey(characterOprObj.workBook, [{sheet: characterOprObj.workBook.getSheet(0), editStarting: characterOprObj.onEditStart, editEnded: characterOprObj.onEditEnded}]);
+        //sheetCommonObj.bindEscKey(characterOprObj.workBook, [{sheet: characterOprObj.workBook.getSheet(0), editStarting: characterOprObj.onEditStart, editEnded: characterOprObj.onEditEnded}]);
         sheetCommonObj.spreadDefaultStyle(characterOprObj.workBook);
         $("#tzjnrCon").hide();
         $("#subSpread").show();

+ 7 - 7
web/building_saas/pm/js/pm_newMain.js

@@ -51,13 +51,13 @@ const projTreeObj = {
         //0.48 0.13 0.15 0.15 0.09
         header: [
             {name: '工程列表', dataCode: 'name', width: 300, vAlign: 'center', hAlign: 'left'},
-            {name: '工程造价', dataCode: 'engineeringCost', width: 120, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
-            {name: '分部分项合计', dataCode: 'subEngineering', width: 120, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
-            {name: '措施项目合计', dataCode: 'measure', width: 120, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
-            {name: '其他项目合计', dataCode: 'other', width: 120, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
-            {name: '安全文明施工费', dataCode: 'safetyConstruction', width: 120, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
-            {name: '规费', dataCode: 'charge', width: 120, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
-            {name: '税金', dataCode: 'tax', width: 120, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
+            {name: '工程造价', dataCode: 'engineeringCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
+            {name: '分部分项合计', dataCode: 'subEngineering', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
+            {name: '措施项目合计', dataCode: 'measure', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
+            {name: '其他项目合计', dataCode: 'other', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
+           /* {name: '安全文明施工费', dataCode: 'safetyConstruction', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
+            {name: '规费', dataCode: 'charge', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
+            {name: '税金', dataCode: 'tax', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},*/
             {name: '占造价比例(%)', dataCode: 'rate', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
             {name: '建筑面积', dataCode: 'buildingArea', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
             {name: '单方造价', dataCode: 'perCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},