Преглед на файлове

显示/隐藏项目特征

MaiXinRong преди 4 месеца
родител
ревизия
5a42433753
променени са 5 файла, в които са добавени 72 реда и са изтрити 6 реда
  1. 28 1
      app/public/js/ledger.js
  2. 38 3
      app/public/js/spreadjs_rela/spreadjs_zh.js
  3. 0 2
      app/service/sub_proj_permission.js
  4. 5 0
      app/view/ledger/explode.ejs
  5. 1 0
      config/menu.js

+ 28 - 1
app/public/js/ledger.js

@@ -59,10 +59,37 @@ const checkOption = {
     same_code: { enable: 1 },
     same_bills: { enable: 1 },
 };
+const featureShowCache = 'zh-feature-show';
 
 $(document).ready(function() {
-    let stdXmj, stdGcl, dealBills, searchLedger;
+    let stdXmj, stdGcl, dealBills, searchLedger, featureDisplay;
     autoFlashHeight();
+    const changeFeaturesDisplay = function (show, init = 0) {
+        $('#features-show').html(show ? '<i class="fa fa-eye"></i> 显示特征' : '<i class="fa fa-eye-slash"></i> 隐藏特征');
+        const featureCols = ledgerSpreadSetting.cols.find(x => { return x.field === 'features'; });
+        if (!featureCols) return;
+        featureCols.visible = show ? true : false;
+        if (!init) {
+            featureDisplay = show;
+            setLocalCache(featureShowCache, show ? 1 : 0);
+            SpreadJsObj.refreshColumnVisible(ledgerSheet, 1);
+        }
+    };
+    const reloadFeaturesDisplayCache = function () {
+        const featureCols = ledgerSpreadSetting.cols.find(x => { return x.field === 'features'; });
+        if (featureCols) {
+            $('#features-show').show();
+            featureDisplay = getLocalCache(featureShowCache);
+            featureDisplay = featureDisplay ? parseInt(featureDisplay) : 1;
+            changeFeaturesDisplay(featureDisplay, 1);
+        } else {
+            $('#features-show').hide();
+        }
+    };
+    reloadFeaturesDisplayCache();
+    $('#features-show').click(function() {
+        changeFeaturesDisplay(!featureDisplay);
+    });
     // 初始化台账
     const ledgerSpread = SpreadJsObj.createNewSpread($('#ledger-spread')[0]);
     const ledgerSheet = ledgerSpread.getActiveSheet();

+ 38 - 3
app/public/js/spreadjs_rela/spreadjs_zh.js

@@ -555,6 +555,25 @@ const SpreadJsObj = {
         const treeCellHeight = getTextHeight(sheet, treeCell.text(), treeCell.font(), validWidth);
         sheet.setRowHeight(row, Math.max(treeCellHeight, sheet.getRowHeight(row)));
     },
+    // 仅可在已经载入数据后使用
+    _calcRowHeight: function (sheet, data, row) {
+        let autoFit = false, treeWordWrapCol = -1;
+        sheet.zh_setting.cols.forEach(function (col, j) {
+            if (col.cellType === 'tree' && col.wordWrap) treeWordWrapCol = j;
+            const cell = sheet.getCell(row, j);
+            if (col.visible === undefined) col.visible = 1;
+            if (col.wordWrap && col.visible) {
+                cell.wordWrap(true);
+                autoFit = true;
+            }
+        });
+        if (autoFit) {
+            sheet.autoFitRow(row);
+            if (treeWordWrapCol >= 0) this._autoFitRowWithTree(sheet, data, row, treeWordWrapCol);
+        } else {
+            sheet.setRowHeight(row, 21);
+        }
+    },
     _loadRowData: function (sheet, data, row) {
         // 单元格重新写入数据
         if (!data) { return }
@@ -610,7 +629,8 @@ const SpreadJsObj = {
             cell.foreColor(SpreadJsObj._getForeColor(sheet, data, row, col));
 
             cell.setBorder(sheet.borderLine, {all: true});
-            if (col.wordWrap) {
+            if (col.visible === undefined) col.visible = 1;
+            if (col.wordWrap && col.visible) {
                 cell.wordWrap(true);
                 autoFit = true;
             }
@@ -1248,13 +1268,28 @@ const SpreadJsObj = {
      * 刷新列显示
      * @param sheet
      */
-    refreshColumnVisible: function (sheet) {
-        if(sheet.zh_setting) {
+    refreshColumnVisible: function (sheet, refreshRowHeight = false) {
+        if (!sheet.zh_setting) return;
+        this.beginMassOperation(sheet);
+        try {
             sheet.zh_setting.cols.forEach(function (col, index) {
                 if (col.visible !== undefined && col.visible !== null) {
                     sheet.setColumnVisible(index, col.visible);
                 }
             });
+            if (refreshRowHeight) {
+                const sortData = sheet.zh_dataType === 'tree' ? sheet.zh_tree.nodes : sheet.zh_data;
+                // 重算行高
+                for (let i = 0, iLen = sortData.length; i < iLen; i++) {
+                    const data = sortData[i];
+                    if (!data) { continue; }
+                    this._calcRowHeight(sheet, data, i);
+                }
+            }
+            this.endMassOperation(sheet);
+        } catch (err) {
+            console.log(err);
+            this.endMassOperation(sheet);
         }
     },
     /**

+ 0 - 2
app/service/sub_proj_permission.js

@@ -290,11 +290,9 @@ module.exports = app => {
         checkViewPermission(ctx) {
             const permissionBlock = ctx.service.subProjPermission.PermissionBlock.find(x => { return x.key === ctx.controllerName; });
             if (!permissionBlock) return true;
-            console.log(permissionBlock);
             if (permissionBlock.children) {
                 let canView = false;
                 for (const c of permissionBlock.children) {
-                    console.log(c);
                     const viewPermission = c.permission.find(x => { return x.key === 'view'; });
                     if (!viewPermission || ctx.subProject.permission[c.field].indexOf(viewPermission.value) >= 0) canView = true;
                 }

+ 5 - 0
app/view/ledger/explode.ejs

@@ -32,6 +32,11 @@
                     <a href="javascript:void(0)" id="paste" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>
                 </div>
                 <div class="d-inline-block">
+                    <div class="btn-group">
+                        <button href="javascript: void(0);" class="btn btn-sm btn-light text-primary" id="features-show"><i class="fa fa-eye"></i> 显示特征</button>
+                    </div>
+                </div>
+                <div class="d-inline-block">
                     <div class="input-group input-group-sm ml-2">
                         <div class="input-group-prepend">
                             <span class="input-group-text" id="basic-addon1">表达式</span>

+ 1 - 0
config/menu.js

@@ -97,6 +97,7 @@ const menu = {
         children: null,
         caption: '项目概况',
         controller: 'info',
+        controllers: ['list', 'progress', 'data', 'push'],
     },
     tender: {
         name: '标段管理',