Forráskód Böngészése

Merge branch '1.0.0_online' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost into 1.0.0_online

zhangweicheng 6 éve
szülő
commit
8a166c7f3f

+ 9 - 1
public/web/sheet/sheet_common.js

@@ -33,7 +33,9 @@ var sheetCommonObj = {
         if (setting && setting.view && setting.view.rowHeaderWidth) {
             sheet.setColumnWidth(0, setting.view.rowHeaderWidth, spreadNS.SheetArea.rowHeader);
         };
-
+        if (setting.emptyRowHeader) {
+            sheet.setColumnWidth(0, 1, GC.Spread.Sheets.SheetArea.rowHeader);
+        }
         sheet.options.colHeaderAutoTextIndex = 1;
         sheet.options.colHeaderAutoText = spreadNS.HeaderAutoText.numbers;
         sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values;
@@ -150,6 +152,12 @@ var sheetCommonObj = {
                 sheet.setStyle(row, -1, setting.getStyle(data[row]));
             }
         }
+        if(setting.emptyRowHeader){
+            let rowCount = sheet.getRowCount();
+            for (let row = 0; row < rowCount; row++) {
+                sheet.setValue(row, 0, '', GC.Spread.Sheets.SheetArea.rowHeader);
+            }
+        }
         this.lockCells(sheet,setting);
         sheet.resumeEvent();
         sheet.resumePaint();

+ 31 - 24
public/web/sheet/sheet_data_helper.js

@@ -173,40 +173,47 @@ var SheetDataHelper = {
             sheet.defaults.rowHeight = setting.defaultRowHeight;
         }
         sheet.setRowCount(datas.length + setting.emptyRows, GC.Spread.Sheets.SheetArea.viewport);
+        let rowCount = sheet.getRowCount();
         setting.cols.forEach(function (colSetting, iCol) {       
             sheet.setStyle(-1, iCol, SheetDataHelper.getSheetCellStyle(colSetting));
             if (colSetting.showHint) {
                 sheet.getRange(-1, iCol, -1, 1).cellType(new TipCellType());
             }
-            datas.forEach(function (data, iRow) {
-                var cell = sheet.getCell(iRow, iCol, GC.Spread.Sheets.SheetArea.viewport);
-                var getFieldText2 = function () {
-                    var fields = colSetting.data.field.split('.'), iField, value = data;
-                    for (iField = 0; iField < fields.length; iField++) {
-                        if (value[fields[iField]]) {
-                            value = value[fields[iField]];
-                        } else {
-                            return '';
+            for (let iRow = 0; iRow < rowCount; iRow++) {
+                let data = datas[iRow];
+                if (setting.emptyRowHeader) {
+                    sheet.setValue(iRow, 0, '', GC.Spread.Sheets.SheetArea.rowHeader);
+                }
+                if (data) {
+                    let cell = sheet.getCell(iRow, iCol, GC.Spread.Sheets.SheetArea.viewport);
+                    let getFieldText2 = function () {
+                        let fields = colSetting.data.field.split('.'), iField, value = data;
+                        for (iField = 0; iField < fields.length; iField++) {
+                            if (value[fields[iField]]) {
+                                value = value[fields[iField]];
+                            } else {
+                                return '';
+                            }
                         }
+                        return value;
+                    };
+                    cell.value(data[colSetting.data.field]);
+                    if (colSetting.data.getText) {
+                        cell.value(colSetting.data.getText(data));
+                    } else {
+                        cell.value(getFieldText2());
                     }
-                    return value;
-                };
-                cell.value(data[colSetting.data.field]);
-                if (colSetting.data.getText) {
-                    cell.value(colSetting.data.getText(data));
-                } else {
-                    cell.value(getFieldText2());
-                }
-                if (colSetting.readOnly) {
-                    if (Object.prototype.toString.apply(colSetting.readOnly) === "[object Function]") {
-                        cell.locked(colSetting.readOnly(node));
+                    if (colSetting.readOnly) {
+                        if (Object.prototype.toString.apply(colSetting.readOnly) === "[object Function]") {
+                            cell.locked(colSetting.readOnly(node));
+                        } else {
+                            cell.locked(true);
+                        }
                     } else {
-                        cell.locked(true);
+                        cell.locked(false);
                     }
-                } else {
-                    cell.locked(false);
                 }
-            });
+            }
         });
 
         sheet.resumeEvent();

+ 1 - 1
web/building_saas/main/html/main.html

@@ -187,7 +187,7 @@
                           </div>
                           <div class="resize-y" id="mainVerticalResize"></div>
                           <div class="bottom-content" id="bottom_div">
-                              <ul class="nav nav-tabs" role="tablist">
+                              <ul class="nav nav-tabs" role="tablist" id="bottom_div_ul">
                                   <li class="nav-item" id="QDJL_div">
                                       <a class="nav-link sub-item" id="linkQDJL" data-toggle="tab" href="#subSpread" role="tab">清单精灵</a>
                                   </li>

+ 3 - 2
web/building_saas/main/js/views/billsElf.js

@@ -456,7 +456,7 @@ const BillsElf = (function() {
             }
             let height = cellRect.height;
             let options = getOptions(node.data, bills.selected.elf.datas);
-            top = options.length - 2 > 4 ? top - 4 * height : top - (options.length - 2) * height;
+            top = options.length > 6 ? top - 6 * height : top - options.length * height;
             let $editInput = $(`<div style="height: ${height}px; background: ${cellStyle.backColor};overflow: hidden; white-space: nowrap; text-overflow: ellipsis">${node.data.options}</div>`),
                 $optDiv = $(`<div style="position: fixed; width: ${cellRect.width}px; top: ${top}px;background: ${cellStyle.backColor};border: 1px solid; overflow: auto; height: ${options.length > 6 ? height*6+5 : height*options.length+5}px; font-size: 0.9rem;"></div>`);
             for(let opt of options){
@@ -559,7 +559,8 @@ const BillsElf = (function() {
                 $editor.css("background", "white");
                 $editor.css("width", cellRect.width);
                 $editor.attr("gcUIElement", "gcEditingInput");
-                let top = $('.header').height() + $('#zaojiashu').find('.toolsbar').height() + $('#top_div').height();
+                //编辑文本框距离浏览器的top
+                let top = $('.header').height() + $('#zaojiashu').find('.toolsbar').height() + $('#top_div').height() + $('#bottom_div_ul').height() + 1 + $('.resize-y').height();
                 let activeCellTop = $editor.parent().parent().css('top');
                 activeCellTop = parseFloat(activeCellTop.replace('px', ''));
                 let node = bills.selected.elf.tree.items[elfSheet.getActiveRowIndex()];

+ 31 - 17
web/building_saas/main/js/views/project_view.js

@@ -18,7 +18,10 @@ var projectObj = {
         let s = `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${c}${value}`;
         $('#testDisplay').html(s);
     },
+    selectedChangeNowTime: 0,
+    selectedChangeDelayTime: 20,
     treeSelectedChanged: function (node) {
+        let me = this;
         let project = projectObj.project;
         let mainSheet = projectObj.mainController.sheet;
         let init = true;
@@ -34,23 +37,34 @@ var projectObj = {
         mbzm_obj.nodeChanged = init;
         project.mainTree.preSelected = node;
         projectObj.setNodesStyle(projectObj.mainController.sheet, refreshNodes);
-        if($('#linkComments').hasClass('active')){
-            subViewObj.loadComments(node);
-        }
-        let nodeID = node ? node.getID() : null;
-        gljOprObj.mainTreeSelectedChange = gljOprObj.selectedNodeId != nodeID;
-        if(init) subObj.initNavItem(node);
-       /*
-       2018-11-9 在NavItem里设置了默认显示的item,在里执行了click这个操作所以这两个操作不用重复执行了
-       gljOprObj.showDataIfRationSelect(node);
-        if (activeSubSheetIsCalcProgram())
-            calcProgramObj.refreshCalcProgram(node, 3);*/
-
-        //zhong 2017-9-1 特征及内容
-        if(pageCCOprObj.active){
-            pageCCOprObj.mainActiveCell = projectObj.mainSpread.getActiveSheet().getSelections()[0];//mainSpread焦点单元格
-            pageCCOprObj.setCacheAndShow(node);
-        }
+        function delayOpr(callback) {
+            let nowTime = Date.now();
+            me.selectedChangeNowTime = nowTime;
+            setTimeout(function () {
+                if (nowTime - me.selectedChangeNowTime == 0) {
+                    callback();
+                }
+            }, me.selectedChangeDelayTime);
+        }
+        delayOpr(function () {
+            if($('#linkComments').hasClass('active')){
+                subViewObj.loadComments(node);
+            }
+            let nodeID = node ? node.getID() : null;
+            gljOprObj.mainTreeSelectedChange = gljOprObj.selectedNodeId != nodeID;
+            if(init) subObj.initNavItem(node);
+            /*
+             2018-11-9 在NavItem里设置了默认显示的item,在里执行了click这个操作所以这两个操作不用重复执行了
+             gljOprObj.showDataIfRationSelect(node);
+             if (activeSubSheetIsCalcProgram())
+             calcProgramObj.refreshCalcProgram(node, 3);*/
+
+            //zhong 2017-9-1 特征及内容
+            if(pageCCOprObj.active){
+                pageCCOprObj.mainActiveCell = projectObj.mainSpread.getActiveSheet().getSelections()[0];//mainSpread焦点单元格
+                pageCCOprObj.setCacheAndShow(node);
+            }
+        });
     },
     refreshBaseActn: function (tree) {
         let setButtonValid = function (valid, btn) {

+ 1 - 2
web/building_saas/main/js/views/side_tools.js

@@ -195,14 +195,13 @@ var sideToolsObj = {
         adaptiveTzjnrWidth();
         autoFlashHeight();
         subObj.initGljSubTab();
-        //MaterialController.showReplaceDiv();
         pageCCOprObj.resizeWidth();
         billsGuidance.refreshWorkBook();
         billsLibObj.refreshBillsSpread();
-        //BillsElf.setColumnWidthByRate();
         refreshSubSpread();
         billsLibObj.refreshBillsRelaSpread();
         rationLibObj.refreshSpread();//subSpread、jobSpread、itemSpread显示问题
+        zmhs_obj.refresh();
     }
 };
 

+ 7 - 3
web/building_saas/main/js/views/std_billsGuidance_lib.js

@@ -95,7 +95,7 @@ const billsGuidance = (function () {
             {name: '项目名称', dataCode: 'name', width: 190, vAlign: 'center', hAlign: 'left', formatter: '@'},
             {name: '单位', dataCode: 'unit', width: 45, vAlign: 'center', hAlign: 'center', formatter: '@'},
         ],
-        rowHeaderWidth:25,
+        rowHeaderWidth:1,
         events: {
             CellDoubleClick: function (sender, args) {
                 if(!bills.tree){
@@ -334,7 +334,7 @@ const billsGuidance = (function () {
         let fuc = function () {
             sheet.setColumnCount(headers.length);
             sheet.setRowHeight(0, 30, GC.Spread.Sheets.SheetArea.colHeader);
-            sheet.setColumnWidth(0, sheet.getParent() === bills.workBook ? 15 : 25, GC.Spread.Sheets.SheetArea.rowHeader);
+            //sheet.setColumnWidth(0, sheet.getParent() === bills.workBook ? 15 : 25, GC.Spread.Sheets.SheetArea.rowHeader);
             if(sheet.getParent() === elfItem.workBook || sheet.getParent() === guideItem.workBook){
                 sheet.setRowHeight(0, 20, GC.Spread.Sheets.SheetArea.colHeader);
             }
@@ -396,6 +396,7 @@ const billsGuidance = (function () {
             let sheet = module.workBook.getActiveSheet();
             if(module === bills){
                 //默认初始可控制焦点在清单表中
+                sheet.options.rowHeaderVisible = false;
                 module.workBook.focus();
                 sheet.options.isProtected = true;
                 sheet.name('stdBillsGuidance_bills');
@@ -412,7 +413,9 @@ const billsGuidance = (function () {
                 sheet.getRange(-1, 0, -1, 1).locked(true);
                 sheet.getRange(-1, 1, -1, 1).locked(false);
             }
-            if(module.rowHeaderWidth)  sheet.setColumnWidth(0, module.rowHeaderWidth, GC.Spread.Sheets.SheetArea.rowHeader);
+            if(module.rowHeaderWidth) {
+                sheet.setColumnWidth(0, module.rowHeaderWidth, GC.Spread.Sheets.SheetArea.rowHeader);
+            }
             setOptions(module.workBook, options);
             buildHeader(module.workBook.getActiveSheet(), module.headers);
             if(module === elfItem){
@@ -484,6 +487,7 @@ const billsGuidance = (function () {
         }
         module.controller.showTreeData();
         if(module === bills){
+            module.workBook.getSheet(0).options.rowHeaderVisible = true;
             setBillsHint(bills.tree.items, stdBillsJobData, stdBillsFeatureData);
             renderSheetFunc(sheet, function () {
                 for(let i = 0; i < bills.tree.items.length; i++){

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

@@ -20,12 +20,14 @@ var rationLibObj = {
     checkSpread: function () {
         if (!this.rationChapterSpread) {
             this.rationChapterSpread = SheetDataHelper.createNewSpread($('#stdRationChapter')[0]);
+            this.rationChapterSpread.getSheet(0).options.rowHeaderVisible = false;
             sheetCommonObj.spreadDefaultStyle(this.rationChapterSpread);
             this.rationChapterSpread.getSheet(0).name('stdRationLib_chapter');
             this.rationChapterSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, this.onChapterSpreadCellDoubleClick);
         }
         if (!this.sectionRationsSpread) {
             this.sectionRationsSpread = SheetDataHelper.createNewSpread($('#stdSectionRations')[0]);
+            this.sectionRationsSpread.getSheet(0).setColumnWidth(0, 1, GC.Spread.Sheets.SheetArea.rowHeader);
             sheetCommonObj.spreadDefaultStyle(this.sectionRationsSpread);
             if (!projectReadOnly) {
                 this.sectionRationsSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, this.onRationSpreadCellDoubleClick);
@@ -125,7 +127,7 @@ var rationLibObj = {
                 }
             }
             rationChapterTreeController.showTreeData();
-
+            rationLibObj.rationChapterSpread.getSheet(0).options.rowHeaderVisible = true;
             rationChapterTreeController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, function (node) {
                 rationLibObj.loadSectionRations(node && node.children.length === 0 ? node.getID() : null);
             });
@@ -182,9 +184,9 @@ var rationLibObj = {
         let me = this;
         var showDatas = function (datas, setting) {
             let rationSheet = rationLibObj.sectionRationsSpread.getActiveSheet();
-            TREE_SHEET_HELPER.massOperationSheet(rationSheet, function () {
+            /*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(rationSheet, datas);
@@ -369,7 +371,7 @@ var rationLibObj = {
     },
     rationChapterTreeSetting: {
         "emptyRowHeader": true,
-        "rowHeaderWidth": 15,
+        "rowHeaderWidth": 1,
         "emptyRows":0,
         "headRows":1,
         "headRowHeight":[30],
@@ -396,6 +398,8 @@ var rationLibObj = {
         }]
     },
     sectionRationsSetting: {
+        "emptyRowHeader": true,
+        "rowHeaderWidth": 1,
         "emptyRows":3,
         "headRows":1,
         "headRowHeight":[20],

+ 5 - 2
web/building_saas/main/js/views/zmhs_view.js

@@ -34,6 +34,7 @@ let zmhs_obj = {
                 }
             }
         },
+        emptyRowHeader: true,
         autoFit:true,
         fitRow:['name','content']
     },
@@ -48,7 +49,8 @@ let zmhs_obj = {
         view: {
             lockColumns:["coeType"],
             rowHeaderWidth:25
-        }
+        },
+        emptyRowHeader: true
     },
     assSpread:null,
     assSheet:null,
@@ -62,7 +64,8 @@ let zmhs_obj = {
         view: {
             lockColumns: [0, 1],
             rowHeaderWidth:25
-        }
+        },
+        emptyRowHeader: true
     },
     initSpread:function () {
         this.initCoeSpread();

+ 0 - 93
web/building_saas/pm/html/project-management.html

@@ -768,99 +768,6 @@
         </div>
     </div>
 </div>
-<!--弹出分享-->
-<!--<div class="modal fade" id="share" data-backdrop="static">
-    <div class="modal-dialog" role="document">
-        <div class="modal-content">
-            <div class="modal-header">
-                <h5 class="modal-title">分享</h5>
-                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                </button>
-            </div>
-            <div class="modal-body">
-                <div class="form-group">
-                    <label>分享给...</label>
-                    <input id="sharePhone" class="form-control" placeholder="输入对方手机号" type="text">
-                    <span id="share-info" class="form-text text-danger">账号不存在。</span>
-                </div>
-                <div class="card">
-                    <div class="card-body">
-                        <h4 id="user_name" class="card-title">张三</h4>
-                        <h6 id="user_company" class="card-subtitle mb-2 text-muted">珠海纵横创新软件有限公司</h6>
-                    </div>
-                    <ul class="list-group list-group-flush">
-                        <li id="user_mobile" class="list-group-item" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="通行账号手机"><i class="fa fa-tablet"></i> 15812644017</li>
-                        <li id="user_email" class="list-group-item" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="通行账号邮箱"><i class="fa fa-envelope-o "></i> 0756-3850891</li>
-                        <li class="list-group-item" data-toggle="tooltip" data-placement="bottom" title="">
-                            <div class="form-group my-1">
-                                <p class="m-0">分享后,该用户仅可查阅工程,不具备任何编辑修改功能。</p>
-                            </div>
-                            <div class="form-check mb-2">
-                                <input type="checkbox" class="form-check-input" id="allowCopy">
-                                <label class="form-check-label" for="allowCopy">允许该用户拷贝该工程</label>
-                                &lt;!&ndash;打勾后出现提示&ndash;&gt;
-                                <div id="allowCopyHint" class="form-text text-danger"><i class="fa fa-exclamation-triangle"></i> 该用户可以把你的项目拷贝成为他的数据,请谨慎勾选。 </div>
-                            </div>
-                            <a id="addShareUser" class="btn btn-sm btn-primary" href="javascript:void(0);"><i class="fa fa-plus"></i> 添加</a>
-                        </li>
-                    </ul>
-                </div>
-                <div class="form-group mt-3" id="shareUsers" style="overflow: auto; display: none">
-                    <p>确认分享 <b>文件夹</b> 给</p>
-                    <p><h4><span class="badge badge-light mr-3">张三(15812644017) <a href="" class="text-danger" title="移除分享"><i class="fa fa-remove"></i></a></span>
-                    <span class="badge badge-light mr-3">王五(15812644017) <a href="" class="text-danger" title="移除分享"><i class="fa fa-remove"></i></a></span></h4></p>
-                </div>
-            </div>
-            <div class="modal-footer">
-                <a id="share-confirm" href="javascript:void(0);" class="btn btn-primary">确定分享</a>
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-            </div>
-        </div>
-    </div>
-</div>-->
-<!--弹出分享给交互-->
-<!--<div class="modal fade" id="shareTo" data-backdrop="static">
-    <div class="modal-dialog" role="document">
-        <div class="modal-content" style="width: 750px;">
-            <div class="modal-header">
-                <h5 class="modal-title">分享给...</h5>
-                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                </button>
-            </div>
-            <div class="modal-body modal-fixed-height">
-                &lt;!&ndash;     <p>勾选需要恢复的文件,点“确定”按钮,确认从回收站中恢复。</p>&ndash;&gt;
-                <table class="table table-hover table-sm mb-5">
-                    <thead>
-                    <tr style="display: block;">
-                        <th width="106px">姓名</th>
-                        <th width="146px">公司</th>
-                        <th width="146px">手机</th>
-                        <th width="156px">邮箱</th>
-                        <th width="70px">允许拷贝</th>
-                        <th width="70px">取消分享</th>
-                    </tr>
-                    </thead>
-                    <tbody id="shareToInfo" style="display:block; height: 300px; overflow: auto;">
-                    <tr>
-                        <td width="106px;">钟泽伟</td>
-                        <td width="146px;">珠海纵横创新软件有限公司</td>
-                        <td width="146px;">13160675110</td>
-                        <td width="156px;">707820685@qq.com</td>
-                        <td width="70px;" style="text-align: center"><input type="checkbox"></td>
-                        <td width="70px;" style="text-align: center"><input type="checkbox"></td>
-                    </tr>
-                    </tbody>
-                </table>
-            </div>
-            <div class="modal-footer">
-                <a href="javascript:void(0);" class="btn btn-primary" id="shareToConfirm" data-dismiss="modal">确定</a>
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-            </div>
-        </div>
-    </div>
-</div>-->
 <!-- JS. -->
 <script src = "/lib/spreadjs/sheets/gc.spread.sheets.all.11.1.2.min.js"></script>
 <script>GC.Spread.Sheets.LicenseKey = '<%- LicenseKey %>';</script>