Browse Source

【bug】界面设置-锁定列不允许移动位置/自定义列名不允许重复/自定义列名不能超过10个字符

zhuth 7 years ago
parent
commit
e46f912838

+ 39 - 4
frontend/saas-web/app/view/core/form/SettingWin.js

@@ -25,7 +25,14 @@ Ext.define('saas.view.core.form.SettingWin', {
             text: '序号',
             dataIndex: 'index',
             align: 'center',
-            width: 80
+            width: 80,
+            renderer: function(v, m, r) {
+                m.tdCls = 'x-cell-index'; 
+                if(r.get('locked')) {
+                    m.tdCls += ' x-cell-index-locek'; 
+                }
+                return v;
+            }
         }, {
             text: '标识名称',
             dataIndex: 'name',
@@ -49,6 +56,22 @@ Ext.define('saas.view.core.form.SettingWin', {
             width: 150,
             editor: {
                 xtype: 'textfield',
+                maxLength: 10,
+                validator: function (val) {
+                    var grid = this.up('grid'),
+                    store = grid.store,
+                    s = grid.getSelection()[0],
+                    errMsg = "显示名称不能重复",
+                    count = 0;
+
+                    store.each(function(r) {
+                        if(s.data.alias != val && r.get('alias') == val) {
+                            count++;
+                        }
+                    });
+
+                    return (!val || count < 1) ? true : errMsg;
+                }
             }
         }, {
             text: '类型',
@@ -154,11 +177,12 @@ Ext.define('saas.view.core.form.SettingWin', {
                             containerScroll: true,
                             dragGroup: 'dd-grid-group',
                             dropGroup: 'dd-grid-group',
-                            dragText: '移动到此位置'
+                            dragText: '移动到此位置',
                         }
                     },
         
                     listeners: {
+                        beforedrop: 'onBeforeDrop',
                         drop: 'onDrop'
                     }
                 },
@@ -172,7 +196,9 @@ Ext.define('saas.view.core.form.SettingWin', {
                         { name: 'alias', type: 'string' },
                         { name: 'type', type: 'string' },
                         { name: 'enable', type: 'boolean' },
-                        { name: 'width', type: 'float'}
+                        { name: 'width', type: 'float'},
+                        { name: 'disabled', type: 'boolean'},
+                        { name: 'locked', type: 'boolean'},
                     ],
                     data: [],
                 }),
@@ -254,7 +280,8 @@ Ext.define('saas.view.core.form.SettingWin', {
                 alias: me.getFieldAlias(item, settype),
                 type: me.getFieldType(item, settype),
                 enable: !item.hidden,
-                width: me.getFieldWidth(item, settype)
+                width: me.getFieldWidth(item, settype),
+                locked: me.getFieldLocked(item, settype)
             }
         });
 
@@ -362,6 +389,14 @@ Ext.define('saas.view.core.form.SettingWin', {
         return width;
     },
 
+    getFieldLocked: function(item, settype) {
+        var locked = false;
+        if(settype != 'main') {
+            locked = !!item.locked;
+        }
+        return locked;
+    },
+
     isContainsAny: function (arr1, arr2) {
         for (var i = 0; i < arr2.length; i++) {
             var a2 = arr2[i];

+ 4 - 0
frontend/saas-web/app/view/core/form/SettingWin.scss

@@ -13,6 +13,10 @@
         font-weight: bold;
     }
 
+    .x-cell-index-locek {
+        opacity: 0.3;
+    }
+
     .x-keyboard-mode .x-grid-item-focused,
     .x-cell-required {
         &>div {

+ 10 - 3
frontend/saas-web/app/view/core/form/SettingWinController.js

@@ -8,18 +8,16 @@ Ext.define('saas.view.core.form.SettingWinController', {
     },
 
     isEnableDisabled: function(view, rowIdx, colIdx, item, record) {
-        return !record.data.allowBlank;
+        return !record.data.allowBlank || record.get('disabled');
     },
 
     onBeforeEdit: function(editor, context, eOpts) {
         let record = context.record,
         column = context.column,
-        disabled = record.get('disabled'),
         type = record.get('type'),
         flag = true;
 
         if(
-            (disabled && column.dataIndex == 'enable') ||
             ['grid'].indexOf(type) != -1 ||
             (['group'].indexOf(type) != -1 && column.dataIndex == 'width')
         ) {
@@ -36,6 +34,15 @@ Ext.define('saas.view.core.form.SettingWinController', {
         }
     },
 
+    onBeforeDrop: function(node, data, overModel, dropPosition, dropHandlers, eOpts) {
+        var fdata = data.records[0].data,
+        tdata = overModel.data,
+        fLocked = fdata.locked,
+        tLocked = tdata.locked;
+        
+        return !fLocked && !tLocked;
+    },
+
     onDrop: function() {
         var me = this,
         win = me.getView(),

+ 8 - 8
frontend/saas-web/app/view/stock/report/Prodiodetail.js

@@ -53,14 +53,6 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         text: 'id',
         dataIndex: 'id',
         hidden: true
-    }, {
-        text: '单号',
-        dataIndex: 'pi_inoutno',
-        width: 150
-    }, {
-        text: '业务类型',
-        dataIndex: 'pi_class',
-        width: 100
     }, {
         text: '单据日期',
         dataIndex: 'pi_date',
@@ -78,6 +70,14 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         renderer: function(v) {
             return saas.util.BaseUtil.numberFormat(v, 0, false);
         }
+    }, {
+        text: '单号',
+        dataIndex: 'pi_inoutno',
+        width: 150
+    }, {
+        text: '业务类型',
+        dataIndex: 'pi_class',
+        width: 100
     }, {
         text: '物料编号',
         dataIndex: 'pd_prodcode',