Procházet zdrojové kódy

规格类下拉控制

MaiXinRong před 2 měsíci
rodič
revize
9e6dbb2a69

+ 7 - 3
app/public/js/ledger.js

@@ -164,6 +164,7 @@ $(document).ready(function() {
                     specCol.comboItems = template.specValue.map(x => { return x.spec; });
                     specCol.cellType = 'customizeCombo';
                     specCol.cellTypeKey = 'specSelect';
+                    specCol.maxDrop = 10;
                 }
                 SpreadJsObj.initSheet(sheet, template.spread_cache);
             } else {
@@ -669,7 +670,7 @@ $(document).ready(function() {
             const preNode = tree.getPreSiblingNode(first);
             const valid = !sheet.zh_setting.readOnly;
 
-            setObjEnable($('#insert'), valid && first && !first._invalid && first.level > 1);
+            setObjEnable($('#insert'), valid && first && (!first._invalid || first._insertValid) && first.level > 1);
             setObjEnable($('#delete'), valid && first && !first._invalid && sameParent && !(first.level === 1 && first.node_type));
             setObjEnable($('#up-move'), valid && first && !first._invalid  && sameParent && first.level > 1 && preNode);
             setObjEnable($('#down-move'), valid && first && !first._invalid  && sameParent && first.level > 1 && !tree.isLastSibling(last));
@@ -1999,6 +2000,9 @@ $(document).ready(function() {
             name: '粘贴整块',
             icon: 'fa-clipboard',
             disabled: function (key, opt) {
+                const node = SpreadJsObj.getSelectObject(ledgerSheet);
+                if (!node || node._invalid) return true;
+
                 //const block = treeOperationObj.block || [];
                 const copyInfo = JSON.parse(getLocalCache(copyBlockTag));
                 return !(copyInfo && copyInfo.block && copyInfo.block.length > 0);
@@ -2375,7 +2379,7 @@ $(document).ready(function() {
         loadCurPosData: function (refreshDetail = true) {
             //spreadJsObj.reinitSheet(posSpread.getActiveSheet());
             const node = treeOperationObj.getSelectNode(ledgerSpread.getActiveSheet());
-            if (node) {
+            if (node && !node._invalid) {
                 const posData = pos.ledgerPos[itemsPre + node.id] || [];
                 SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', posData);
                 getNodeList(node.id);
@@ -3521,7 +3525,7 @@ $(document).ready(function() {
                             selectedBackColor: '#fffacd',
                             readOnly: true,
                         },
-                        skipFilter: true,
+                        skipFilter: { field: 'filter', value: true },
                         locate: function(cur) {
                             if (!cur.lid) return;
 

+ 1 - 1
app/public/js/shares/cs_tools.js

@@ -806,7 +806,7 @@ const showSelectTab = function(select, spread, afterShow) {
         SpreadJsObj.initSheet(resultSpread.getActiveSheet(), setting.resultSpreadSetting);
         let searchResult = [];
         const defaultCheck = function(node, keyword) {
-            if (setting.skipFilter && node.filter === true) return false;
+            if (setting.skipFilter && node[setting.skipFilter.field] === setting.skipFilter.value) return false;
 
             const keyNum = _.toNumber(keyword);
             return (node.code && node.code.indexOf(keyword) > -1) ||

+ 8 - 4
app/public/js/spreadjs_rela/spreadjs_zh.js

@@ -780,7 +780,7 @@ const SpreadJsObj = {
         if (colSetting.cellType === 'customizeCombo') {
             const cellKey = colSetting.cellTypeKey ? 'customizeCombo-' + colSetting.cellTypeKey : 'customizeCombo';
             if (!sheet.extendCellType[cellKey]) {
-                sheet.extendCellType[cellKey] = this.CellType.getCustomizeComboCellType(colSetting.comboItems);
+                sheet.extendCellType[cellKey] = this.CellType.getCustomizeComboCellType(colSetting.comboItems, colSetting.maxDrop);
                 SpreadJsObj._addActivePaintEvents(sheet, sheet.extendCellType[cellKey]);
             }
             sheet.getRange(-1, col, -1, 1).cellType(sheet.extendCellType[cellKey]);
@@ -2536,26 +2536,28 @@ const SpreadJsObj = {
         getUnitCellType: function (comboEdit, items = ['m', 'km', 'm2', 'm3', 'dm3', 'kg', 't', 'm3·km',
             '总额', '月' ,'项', '处' ,'个', '根', '棵', '块', '台', '系统', '延米', '每一试桩',
             '桥长米', '公路公里', '株', '组', '座', '元', '工日', '套', '台班', '辆', '艘班', '亩', '片',
-            'm/处', 'm/道', 'm/座', 'm2/m', 'm3/m', 'm3/处', '根/米', 'm3/m2']) {
+            'm/处', 'm/道', 'm/座', 'm2/m', 'm3/m', 'm3/处', '根/米', 'm3/m2'], maxDrop) {
             let combo = this.getActiveComboCellType();
             combo.editable(comboEdit);
             combo.itemHeight(10).items(items);
+            if (maxDrop) combo.maxDropDownItems(maxDrop);
             return combo;
         },
         /**
          * 获取 自定义的CellType
          * @returns {GC.Spread.Sheets.CellTypes.ComboBox}
          */
-        getCustomizeComboCellType: function (items) {
+        getCustomizeComboCellType: function (items, maxDrop) {
             let combo = this.getActiveComboCellType();
             if (typeof items[0] === 'string') {
                 combo.itemHeight(10).items(items);
             } else {
                 combo.itemHeight(10).editorValueType(spreadNS.CellTypes.EditorValueType.value).items(items);
             }
+            if (maxDrop) combo.maxDropDownItems(maxDrop);
             return combo;
         },
-        getSpecComboCellType: function (items) {
+        getSpecComboCellType: function (items, maxDrop) {
             const ComboCellType = function () {};
             ComboCellType.prototype = new spreadNS.CellTypes.ComboBox();
             const proto = ComboCellType.prototype;
@@ -2601,6 +2603,7 @@ const SpreadJsObj = {
             };
             const combo = new ComboCellType();
             combo.itemHeight(10).items(items).editorValueType(spreadNS.CellTypes.EditorValueType.value);
+            if (maxDrop) combo.maxDropDownItems(maxDrop);
             return combo;
         },
         getStageComboCellType: function () {
@@ -2612,6 +2615,7 @@ const SpreadJsObj = {
                 const col = setting.cols[context.col];
                 const data = SpreadJsObj.getSelectObject(context.sheet);
                 this.itemHeight(10).editorValueType(spreadNS.CellTypes.EditorValueType.value).items(col.getItems(data));
+                if (col.maxDrop) combo.maxDropDownItems(col.maxDrop);
             };
             return new ComboCellType();
         },

+ 1 - 1
app/service/calc_tmpl.js

@@ -18,7 +18,7 @@ const ValidTemplateType = ['posCalc', 'cost'];
 const PosCalc = (function(){
     const EmptySpreadCache = {
         cols: [],
-        emptyRows: 3,
+        emptyRows: 6,
         headRows: 1,
         headRowHeight: [32],
         defaultRowHeight: 21,