Browse Source

Merge remote-tracking branch 'origin/dev' into dev

heqinwei 7 years ago
parent
commit
7aa5135e9a
25 changed files with 522 additions and 84 deletions
  1. 12 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Operation.java
  2. 1 1
      applications/commons/commons-server/src/main/resources/mapper/HomePageMapper.xml
  3. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  4. 3 4
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  5. 9 0
      frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js
  6. 13 1
      frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js
  7. 5 0
      frontend/saas-web/app/view/core/form/FormPanel.js
  8. 20 2
      frontend/saas-web/app/view/core/query/QueryGridPanel.js
  9. 2 1
      frontend/saas-web/app/view/core/query/QueryPanelModel.js
  10. 13 10
      frontend/saas-web/app/view/document/kind/ChildForm.js
  11. 22 0
      frontend/saas-web/app/view/document/kind/Kind.js
  12. 27 0
      frontend/saas-web/app/view/document/kind/KindModel.js
  13. 1 1
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  14. 9 5
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  15. 11 5
      frontend/saas-web/app/view/purchase/report/PurchasePay.js
  16. 45 6
      frontend/saas-web/app/view/sale/report/SaleRec.js
  17. 4 4
      frontend/saas-web/app/view/stock/make/FormPanel.js
  18. 2 0
      frontend/saas-web/app/view/stock/make/FormPanelController.js
  19. 0 3
      frontend/saas-web/app/view/stock/make/QueryPanelController.js
  20. 1 0
      frontend/saas-web/app/view/stock/report/Prodiodetail.js
  21. 24 0
      frontend/saas-web/app/view/sys/account/AccountInformation.js
  22. 8 4
      frontend/saas-web/app/view/sys/config/FormPanel.js
  23. 1 1
      frontend/saas-web/app/view/sys/power/FormPanel.js
  24. 246 36
      frontend/saas-web/app/view/sys/power/GroupGrid.js
  25. 41 0
      frontend/saas-web/overrides/grid/column/CheckColumn.js

+ 12 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Operation.java

@@ -60,6 +60,18 @@ public enum Operation {
      * 反记账
      */
     UNENDPRODUCT("msg.unEndProduct", "msg.unEndProductSuccess"),
+
+
+    /**
+     * 转采购验收单
+     */
+    TURNPURCCHECKIN("msg.TurnPurcCheckin", "msg.TurnPurcCheckinSuccess"),
+
+    /**
+     * 转采购验退单
+     */
+    TURNPURCCHECKOUT("msg.TurnPurcCheckout", "msg.TurnPurcCheckoutSuccess"),
+
     /**
      * 转出货单
      */

+ 1 - 1
applications/commons/commons-server/src/main/resources/mapper/HomePageMapper.xml

@@ -11,7 +11,7 @@
     </select>
 
     <select id="getPurchaseDataNow" parameterType="long" resultType="string">
-        select concat('[',GROUP_CONCAT(concat('{"x":"',si_vendname,'","y":',IFNULL(si_amount,0),'}')),']')  from statsinfo
+        select concat('[',GROUP_CONCAT(concat('{"x":"',si_vendname,'","y":',IFNULL(round(si_amount/10000,2),0),'}')),']')  from statsinfo
         where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='PURC' ORDER BY si_amount desc
     </select>
 

+ 2 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java

@@ -11,6 +11,7 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.api.EmployeeApi;
@@ -213,6 +214,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         updateYqty(prodInOut);
         //日志记录
         messageLogService.update(baseDTO);
+        messageLogService.customizeLog(baseDTO, Operation.TURNPURCCHECKOUT);
         return baseDTO;
     }
 

+ 3 - 4
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -11,6 +11,7 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.api.EmployeeApi;
@@ -470,10 +471,8 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
 
         //采购验收单相关计算
         prodInOutService.calcProdInout(pi_id,"采购验收单");
-        DocBaseDTO baseDTO = new DocBaseDTO();
-        baseDTO.setId(pi_id);
-        baseDTO.setCode(piInoutno);
-        baseDTO.setName("采购验收单");
+        DocBaseDTO baseDTO = new DocBaseDTO(pi_id, piInoutno, BillCodeSeq.PURCHASEIN.getName());
+        messageLogService.customizeLog(baseDTO, Operation.TURNPURCCHECKIN);
         return Result.success(baseDTO);
     }
 

+ 9 - 0
frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js

@@ -89,6 +89,15 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
     },
 
     listeners:{
+        boxready: function(grid, width, height, eOpts) {
+            var store = grid.getStore(),
+            gridBodyBox = grid.body.dom.getBoundingClientRect(),
+            gridBodyBoxHeight = gridBodyBox.height;
+
+            var pageSize = Math.floor(gridBodyBoxHeight / 32);
+
+            store.setPageSize(pageSize);
+        },
         itemClick: function(view,record) {
             var me = this;
             var dbfinds = me.dbfinds;

+ 13 - 1
frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js

@@ -31,7 +31,19 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                 }
             }
          }
-	},
+    },
+    
+    listeners:{
+        boxready: function(grid, width, height, eOpts) {
+            var store = grid.getStore(),
+            gridBodyBox = grid.body.dom.getBoundingClientRect(),
+            gridBodyBoxHeight = gridBodyBox.height;
+
+            var pageSize = Math.floor(gridBodyBoxHeight / 32);
+
+            store.setPageSize(pageSize);
+        }
+    },
 
     initComponent: function() {
         var me = this;

+ 5 - 0
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -59,11 +59,13 @@ Ext.define('saas.view.core.form.FormPanel', {
             cls: 'x-formpanel-btn-orange',
             xtype: 'button',
             text: '新增',
+            hidden: true,
             bind: {
                 hidden: '{!id}'
             },
             handler: 'add'
         }, {
+            hidden: true,
             xtype: 'button',
             text: '复制',
             handler: 'onCopy',
@@ -71,6 +73,7 @@ Ext.define('saas.view.core.form.FormPanel', {
                 hidden: '{!'+ me._idField + '}',
             }
         }, {
+            hidden: true,
             xtype: 'button',
             text: '保存',
             handler: 'onSave',
@@ -80,6 +83,7 @@ Ext.define('saas.view.core.form.FormPanel', {
                 disabled: '{!base.valid || '+ me._statusCodeField + ' == "' + me.auditTexts.auditCode + '"}'
             }
         }, {
+            hidden: true,
             xtype: 'button',
             text: '删除',
             bind: {
@@ -87,6 +91,7 @@ Ext.define('saas.view.core.form.FormPanel', {
             },
             handler: 'delete'
         }, {
+            hidden: true,
             xtype: 'button',
             bind: {
                 text: '{auditBtnText}',

+ 20 - 2
frontend/saas-web/app/view/core/query/QueryGridPanel.js

@@ -33,7 +33,24 @@ Ext.define('saas.view.core.query.QueryGridPanel', {
     columnWidth: 1.0,
     showRowNum: true,
     autoQuery: true,
-    selModel: 'checkboxmodel',
+    selModel: {
+        checkOnly:true,
+        type:'checkboxmodel',
+        listeners:{
+            selectionchange:function(selModel,record,e){
+                var grid = selModel.view.ownerCt;
+                var statusField = grid.codeField.split('_')[0] + '_status';
+                var hasAudited = false;
+                var items = selModel.getSelected().items;
+                Ext.each(items, function(item, index){
+                    if(item.get(statusField)=='已审核'){
+                        hasAudited = true
+                    }
+                });
+                grid.ownerCt.getViewModel().setData({'deleteDisable':hasAudited});
+            }
+         }
+	},
 
     initComponent: function () {
         var me = this;
@@ -215,7 +232,8 @@ Ext.define('saas.view.core.query.QueryGridPanel', {
                     text: '删除',
                     handler: me.onDelete,
                     bind: {
-                        hidden: '{!deleteEnable}'
+                        hidden: '{!deleteEnable}',
+                        disabled: '{deleteDisable}'
                     }
                 }]
             }, {

+ 2 - 1
frontend/saas-web/app/view/core/query/QueryPanelModel.js

@@ -9,6 +9,7 @@ Ext.define('saas.view.core.query.QueryPanelModel', {
         printEnable: true, // 显示打印按钮
         importEnable: true, // 显示导入按钮
         closeEnable: true, // 显示关闭按钮
-        deleteEnable: true // 显示删除按钮
+        deleteEnable: true, // 显示删除按钮
+        deleteDisable:false //删除按钮是否可使用
     }
 });

+ 13 - 10
frontend/saas-web/app/view/document/kind/ChildForm.js

@@ -112,16 +112,19 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 hideTrigger: true,
                 mouseWheelEnabled: false,
                 minValue: 0
-            },{
-                xtype:'numberfield',
-                name:'bk_thisamount',
-                allowBlank:true,
-                fieldLabel:'当前余额',
-                hideTrigger: true,
-                mouseWheelEnabled: false,
-                beforeLabelTextTpl:'',
-                minValue: 0
-            },{
+            },
+            // {
+            //     xtype:'numberfield',
+            //     name:'bk_thisamount',
+            //     allowBlank:true,
+            //     fieldLabel:'当前余额',
+            //     hideTrigger: true,
+            //     mouseWheelEnabled: false,
+            //     beforeLabelTextTpl:'',
+            //     minValue: 0
+            // }
+            // ,
+            {
                 xtype:'combo',
                 name:'bk_type',
                 allowBlank:false,

+ 22 - 0
frontend/saas-web/app/view/document/kind/Kind.js

@@ -249,6 +249,28 @@ Ext.define('saas.view.document.kind.Kind', {
             reqUrl:'/api/account/role/save',
             updateUrl:'/api/account/role/update',
         },
+        accountinformation:{
+            columns: [{
+                text: '账户',
+                dataIndex: 'wh_code',
+                width: 200
+            },{
+                text: '账户',
+                dataIndex: 'wh_description',
+                width: 200
+            },{
+                text: '账户',
+                dataIndex: 'wh_type',
+                width: 200
+            },{  
+                text: '账户',
+                dataIndex: 'wh_status',
+                hidden:true,
+            }],
+            keyField:'id',
+            reqUrl: '/api/document/warehouse/save',
+            delUrl: '/api/document/warehouse/delete'
+        },
         warehouse:{
             columns: [{
                 text: '编号',

+ 27 - 0
frontend/saas-web/app/view/document/kind/KindModel.js

@@ -235,6 +235,33 @@ Ext.define('saas.view.document.kind.KindModel', {
                     });
                 }
             }
+        },  
+        accountinformation: {    
+            fields:[
+                {name: 'id', type: 'int'},
+                {name: 'rl_name',  type: 'string'}
+            ],
+            proxy: {
+                type: 'ajax',
+                url: '/api/document/productunit/list',
+                actionMethods: {
+                    read: 'GET'
+                },
+                reader: {
+                    type: 'json',
+                    rootProperty: 'data'
+                }
+            },
+            pageSize: null,
+            autoLoad: false,
+            listeners: {
+                beforeload: function (store, op) {
+                    Ext.apply(store.proxy.extraParams, {
+                        number: 1,
+                        size: 1000
+                    });
+                }
+            }
         },
         productunit: {    
             fields:[

+ 1 - 1
frontend/saas-web/app/view/money/payBalance/FormPanel.js

@@ -321,7 +321,7 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             hidden: true
         }]
     }, {
-        xtype: 'hidden',
+        xtype: 'textfield',
         name: 'pb_remark',
         columnWidth: 1,
         fieldLabel: '备注'

+ 9 - 5
frontend/saas-web/app/view/money/recBalance/FormPanel.js

@@ -73,11 +73,6 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         xtype: "textfield",
         name: "rb_manname",
         fieldLabel: "收款人"
-    }, {
-        xtype: 'hidden',
-        name: 'rb_remark',
-        fieldLabel: '备注',
-        columnWidth: 1
     }, {
         xtype: "numberfield",
         name: "rb_discounts",
@@ -128,6 +123,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         }, {
             text: '资金账户',
             dataIndex: 'rd_bankname',
+            width: 200,
             editor:{
                 xtype:'dbfindtrigger'
             }
@@ -179,6 +175,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             text: "备注",
             dataIndex: "rd_remark",
             width: 250,
+            flex:1,
             editor: {
                 xtype: 'textfield'
             }
@@ -210,6 +207,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         }, {
             text: '来源单号',
             dataIndex: 'rbd_slcode',
+            width: 200,
             editor:{
                 displayField : "display",
                 editable : true,
@@ -290,6 +288,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             text: "本次核销金额",
             xtype: 'numbercolumn',
             dataIndex: "rbd_nowbalance",
+            width:200,
             editor : {
                 xtype : "numberfield",
                 decimalPrecision: 2
@@ -309,6 +308,11 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
                 return Ext.util.Format.number(v, format);
             }
         }]
+    }, {
+        xtype: 'textfield',
+        name: 'rb_remark',
+        fieldLabel: '备注',
+        columnWidth: 1
     }, {
         xtype: 'numberfield',
         name: 'rb_recorderid',

+ 11 - 5
frontend/saas-web/app/view/purchase/report/PurchasePay.js

@@ -67,7 +67,7 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
             var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
@@ -79,7 +79,7 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
             var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
@@ -89,13 +89,19 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
         dataIndex: 'pb_pbdamount',
         xtype: 'numbercolumn'
     }, {
-        text: '付款比例',
+        text: '付款比例%',
         //本次付款/采购金额*100%
         dataIndex: 'pb_payrate',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v*100 + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v*100, format);
+        }
     }, {
         text: '备注',
-        dataIndex: 'pd_remark',
+        dataIndex: 'pb_remark',
         width: 200
     }]
 

+ 45 - 6
frontend/saas-web/app/view/sale/report/SaleRec.js

@@ -50,26 +50,65 @@ Ext.define('saas.view.sale.report.SaleRec', {
         xtype: 'datecolumn'
     }, {
         text: '来源单号',
-        dataIndex: 'rbd_slcode'
+        dataIndex: 'rbd_slcode',
+        width: 200
     }, {
         text: '类型',
         dataIndex: 'rbd_slkind'
     }, {
         text: '销售金额',
         xtype: 'numbercolumn',
-        dataIndex: 'rbd_amount'
+        dataIndex: 'rbd_amount',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '本次收款',
         xtype: 'numbercolumn',
-        dataIndex: 'rbd_nowbalance'
+        dataIndex: 'rbd_nowbalance',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '应收余额',
         xtype: 'numbercolumn',
-        dataIndex: 'rb_rbdamount'
+        dataIndex: 'rb_rbdamount',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
-        text: '回款比例',
+        text: '回款比例%',
+        dataIndex: 'rb_backrate',
         xtype: 'numbercolumn',
-        dataIndex: 'rb_backrate'
+        renderer : function(v) {
+            var arr = (v*100 + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v*100, format);
+        }
     }, {
         text: '备注',
         dataIndex: 'rb_remark'

+ 4 - 4
frontend/saas-web/app/view/stock/make/FormPanel.js

@@ -74,14 +74,14 @@ Ext.define('saas.view.stock.make.FormPanel', {
         columnWidth: 0.25,
     },{
         xtype : "textfield", 
-        name : "ma_version", 
-        fieldLabel : "版本",
+        name : "ma_produnit", 
+        fieldLabel : "单位",
         readOnly:true,
         columnWidth: 0.25
     },{
         xtype : "textfield", 
-        name : "ma_produnit", 
-        fieldLabel : "单位",
+        name : "ma_version", 
+        fieldLabel : "版本",
         readOnly:true,
         columnWidth: 0.25
     },

+ 2 - 0
frontend/saas-web/app/view/stock/make/FormPanelController.js

@@ -261,6 +261,8 @@ Ext.define('saas.view.stock.make.FormPanelController', {
                             from:'bo_mothername',to:'ma_proddetail'
                         },{
                             from:'pr_spec',to:'ma_prodspec'
+                        },{
+                            from:'pr_unit',to:'ma_produnit'
                         },{
                             from:'bo_version',to:'ma_version'
                         }],

+ 0 - 3
frontend/saas-web/app/view/stock/make/QueryPanelController.js

@@ -208,9 +208,6 @@ Ext.define('saas.view.stock.make.QueryPanelController', {
                         },{
                             field:'bo_mothername',width:100
                         }],
-                        aftertrigger:function(f,record){
-                            me.getBomData(record.data.id)
-                        },
                         defaultCondition:"bo_statuscode='OPEN'",
                         //窗口字段设置
                         dbSearchFields:[{

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

@@ -26,6 +26,7 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
             ["销售退货单", "销售退货单"],
             ["完工入库单", "完工入库单"],
             ["生产领料单", "生产领料单"],
+            ["拆件领料单", "拆件领料单"],
             ["其它入库单", "其它入库单"],
             ["其它出库单", "其它出库单"],
             ["调拨单", "调拨单"],

+ 24 - 0
frontend/saas-web/app/view/sys/account/AccountInformation.js

@@ -0,0 +1,24 @@
+/**
+ * Created by zhouy on 2018/10/18.
+ */
+Ext.define('saas.view.sys.account.AccountInformation', {
+    extend: 'saas.view.document.kind.Kind',
+    xtype: 'sys-account-accountinformation',
+    autoScroll: true,
+    layout:'fit',
+    defaultType:'accountinformation',
+    tbar: ['->',{
+        xtype:'button',
+        text:'刷新',
+        listeners: {
+            click: 'onRefresh'
+        }
+    }],
+    listeners:{
+        afterrender:function(p){
+            p.getViewModel().setData({title:'账户信息'});
+        }
+    }
+})
+
+

+ 8 - 4
frontend/saas-web/app/view/sys/config/FormPanel.js

@@ -115,12 +115,16 @@ Ext.define('saas.view.sys.config.FormPanel', {
         columnWidth : 0.25
     },{  
         bind:'{en_signet}',
-        xtype : "textfield", 
         name : "en_signet", 
         fieldLabel : "打印章上传", 
-        allowBlank : true, 
-        editable:false,
-        columnWidth : 0.25
+        allowBlank : false, 
+        columnWidth : 0.33,
+        xtype: 'filefield',
+        emptyText: '请选择图片',
+        buttonText: '',
+        buttonConfig: {
+            iconCls: 'x-fa fa-picture-o'
+        }
     },{  
         ignore:true,
         bind:'{updateTime}',

+ 1 - 1
frontend/saas-web/app/view/sys/power/FormPanel.js

@@ -15,7 +15,7 @@ Ext.define('saas.view.sys.power.FormPanel', {
     frame:true,
     layout: 'border',
     autoScroll: true,
-    saveUrl:'/api/account/role/save/bind/resource',
+    saveUrl:'http://192.168.253.31:8560/api/account/role/save/bind/resource',
 
     items: [{
         title:'角色列表',

+ 246 - 36
frontend/saas-web/app/view/sys/power/GroupGrid.js

@@ -7,11 +7,6 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         'saas.view.sys.power.OtherField'
     ],
     xtype: 'power-grid',
-    plugins: {
-        cellediting: {
-            clicksToEdit: 1
-        }
-    },
     bind:{
         store: '{powergrid}'
     },
@@ -26,12 +21,12 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         collapseTip:null,
         collapsible:false,
         expandTip:null,
-		showSummaryRow: true,
+		showSummaryRow: false,
         startCollapsed: false,
         groupHeaderTpl: '{name}'+'模块'
 	})],
     initId:0,
-    dataUrl:'/api/account/role/power/resource',
+    dataUrl:'http://192.168.253.31:8560/api/account/role/power/resource',
     selModel:Ext.create('Ext.selection.CheckboxModel', {
         checkOnly: true,
         showHeaderCheckbox:false,
@@ -54,7 +49,7 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         header: '单据名称',
         dataIndex: 'groupName',
         xtype: '',
-        flex: 1.5,
+        flex: 2,
         stopSelection: false
     },{
         header: '查询',
@@ -63,7 +58,31 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         headerCheckbox: true,
         menuDisabled:true,
         flex: 1,
-        stopSelection: false
+        stopSelection: false,
+        onTitleElClick:function(a,b,c,d){
+            var me = this;
+            var records = me.ownerCt.ownerCt.store.data.items;
+            var first = 'null',isAllCheck = true;
+            Ext.Array.each(records,function(rec){
+                var data = rec.get('query');
+                if(data!=null&&(typeof data)=='boolean'){
+                    if(first=='null'){
+                        first = data;
+                    }else{
+                        if(first!=data){
+                            isAllCheck = false
+                        }
+                    }
+                    rec.set('query',!data)
+                }
+            });
+            if(isAllCheck){
+                me.setHeaderStatus(!first)
+            }
+        },
+        doUpdateHeaderState: function(e) {
+            return true;
+        }
     }, {
         header: '保存',
         dataIndex: 'add',
@@ -71,7 +90,31 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         headerCheckbox: true,
         menuDisabled:true,
         flex: 1,
-        stopSelection: false
+        stopSelection: false,
+        onTitleElClick:function(a,b,c,d){
+            var me = this;
+            var records = me.ownerCt.ownerCt.store.data.items;
+            var first = 'null',isAllCheck = true;
+            Ext.Array.each(records,function(rec){
+                var data = rec.get('add');
+                if(data!=null&&(typeof data)=='boolean'){
+                    if(first=='null'){
+                        first = data;
+                    }else{
+                        if(first!=data){
+                            isAllCheck = false
+                        }
+                    }
+                    rec.set('add',!data)
+                }
+            });
+            if(isAllCheck){
+                me.setHeaderStatus(!first)
+            }
+        },
+        doUpdateHeaderState: function(e) {
+            return true;
+        }
     }, {
         header: '修改',
         dataIndex: 'update',
@@ -79,7 +122,31 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         headerCheckbox: true,
         menuDisabled:true,
         flex: 1,
-        stopSelection: false
+        stopSelection: false,
+        onTitleElClick:function(a,b,c,d){
+            var me = this;
+            var records = me.ownerCt.ownerCt.store.data.items;
+            var first = 'null',isAllCheck = true;
+            Ext.Array.each(records,function(rec){
+                var data = rec.get('update');
+                if(data!=null&&(typeof data)=='boolean'){
+                    if(first=='null'){
+                        first = data;
+                    }else{
+                        if(first!=data){
+                            isAllCheck = false
+                        }
+                    }
+                    rec.set('update',!data)
+                }
+            });
+            if(isAllCheck){
+                me.setHeaderStatus(!first)
+            }
+        },
+        doUpdateHeaderState: function(e) {
+            return true;
+        }
     }, {
         header: '删除',
         dataIndex: 'delete',
@@ -87,7 +154,31 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         headerCheckbox: true,
         menuDisabled:true,
         flex: 1,
-        stopSelection: false
+        stopSelection: false,
+        onTitleElClick:function(a,b,c,d){
+            var me = this;
+            var records = me.ownerCt.ownerCt.store.data.items;
+            var first = 'null',isAllCheck = true;
+            Ext.Array.each(records,function(rec){
+                var data = rec.get('delete');
+                if(data!=null&&(typeof data)=='boolean'){
+                    if(first=='null'){
+                        first = data;
+                    }else{
+                        if(first!=data){
+                            isAllCheck = false
+                        }
+                    }
+                    rec.set('delete',!data)
+                }
+            });
+            if(isAllCheck){
+                me.setHeaderStatus(!first)
+            }
+        },
+        doUpdateHeaderState: function(e) {
+            return true;
+        }
     }, {
         header: '审核',
         dataIndex: 'audit',
@@ -95,7 +186,31 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         headerCheckbox: true,
         menuDisabled:true,
         flex: 1,
-        stopSelection: false
+        stopSelection: false,
+        onTitleElClick:function(a,b,c,d){
+            var me = this;
+            var records = me.ownerCt.ownerCt.store.data.items;
+            var first = 'null',isAllCheck = true;
+            Ext.Array.each(records,function(rec){
+                var data = rec.get('audit');
+                if(data!=null&&(typeof data)=='boolean'){
+                    if(first=='null'){
+                        first = data;
+                    }else{
+                        if(first!=data){
+                            isAllCheck = false
+                        }
+                    }
+                    rec.set('audit',!data)
+                }
+            });
+            if(isAllCheck){
+                me.setHeaderStatus(!first)
+            }
+        },
+        doUpdateHeaderState: function(e) {
+            return true;
+        }
     }, {
         header: '反审核',
         dataIndex: 'unAudit',
@@ -103,7 +218,31 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         headerCheckbox: true,
         menuDisabled:true,
         flex: 1,
-        stopSelection: false
+        stopSelection: false,
+        onTitleElClick:function(a,b,c,d){
+            var me = this;
+            var records = me.ownerCt.ownerCt.store.data.items;
+            var first = 'null',isAllCheck = true;
+            Ext.Array.each(records,function(rec){
+                var data = rec.get('unAudit');
+                if(data!=null&&(typeof data)=='boolean'){
+                    if(first=='null'){
+                        first = data;
+                    }else{
+                        if(first!=data){
+                            isAllCheck = false
+                        }
+                    }
+                    rec.set('unAudit',!data)
+                }
+            });
+            if(isAllCheck){
+                me.setHeaderStatus(!first)
+            }
+        },
+        doUpdateHeaderState: function(e) {
+            return true;
+        }
     }, {
         header: '导入',
         dataIndex: 'fileImport',
@@ -111,7 +250,31 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         headerCheckbox: true,
         menuDisabled:true,
         flex: 1,
-        stopSelection: false
+        stopSelection: false,
+        onTitleElClick:function(a,b,c,d){
+            var me = this;
+            var records = me.ownerCt.ownerCt.store.data.items;
+            var first = 'null',isAllCheck = true;
+            Ext.Array.each(records,function(rec){
+                var data = rec.get('fileImport');
+                if(data!=null&&(typeof data)=='boolean'){
+                    if(first=='null'){
+                        first = data;
+                    }else{
+                        if(first!=data){
+                            isAllCheck = false
+                        }
+                    }
+                    rec.set('fileImport',!data)
+                }
+            });
+            if(isAllCheck){
+                me.setHeaderStatus(!first)
+            }
+        },
+        doUpdateHeaderState: function(e) {
+            return true;
+        }
     }, {
         header: '导出',
         dataIndex: 'fileExport',
@@ -119,7 +282,31 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         headerCheckbox: true,
         menuDisabled:true,
         flex: 1,
-        stopSelection: false
+        stopSelection: false,
+        onTitleElClick:function(a,b,c,d){
+            var me = this;
+            var records = me.ownerCt.ownerCt.store.data.items;
+            var first = 'null',isAllCheck = true;
+            Ext.Array.each(records,function(rec){
+                var data = rec.get('fileExport');
+                if(data!=null&&(typeof data)=='boolean'){
+                    if(first=='null'){
+                        first = data;
+                    }else{
+                        if(first!=data){
+                            isAllCheck = false
+                        }
+                    }
+                    rec.set('fileExport',!data)
+                }
+            });
+            if(isAllCheck){
+                me.setHeaderStatus(!first)
+            }
+        },
+        doUpdateHeaderState: function(e) {
+            return true;
+        }
     }, {
         header: '打印',
         dataIndex: 'print',
@@ -127,7 +314,31 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         headerCheckbox: true,
         menuDisabled:true,
         flex: 1,
-        stopSelection: false
+        stopSelection: false,
+        onTitleElClick:function(a,b,c,d){
+            var me = this;
+            var records = me.ownerCt.ownerCt.store.data.items;
+            var first = 'null',isAllCheck = true;
+            Ext.Array.each(records,function(rec){
+                var data = rec.get('print');
+                if(data!=null&&(typeof data)=='boolean'){
+                    if(first=='null'){
+                        first = data;
+                    }else{
+                        if(first!=data){
+                            isAllCheck = false
+                        }
+                    }
+                    rec.set('print',!data)
+                }
+            });
+            if(isAllCheck){
+                me.setHeaderStatus(!first)
+            }
+        },
+        doUpdateHeaderState: function(e) {
+            return true;
+        }
     },{
         text: '其它',
         flex: 2.7,
@@ -149,15 +360,14 @@ Ext.define('saas.view.sys.power.GroupGrid', {
                 {name: 'groupId',type:'int'},
                 {name: 'groupName',type:'string'},
                 {name: 'moduleName',type:'string'},
-                {name: 'query',type:'bool'},
-                {name: 'add', type: 'bool'},
-                {name: 'delete', type: 'bool'},
-                {name: 'audit', type: 'bool'},
-                {name: 'update', type: 'bool'},
-                {name: 'unAudit', type: 'bool'},
-                {name: 'fileExport', type: 'bool'},
-                {name: 'fileImport', type: 'bool'},
-                {name: 'print', type: 'bool'},
+                {name: 'add'},
+                {name: 'delete'},
+                {name: 'audit'},
+                {name: 'update'},
+                {name: 'unAudit'},
+                {name: 'fileExport'},
+                {name: 'fileImport'},
+                {name: 'print'},
                 {name: 'other', calculate: function(data) {
                     var groupId = data['groupId'];
                     var other = data['other'];
@@ -200,7 +410,7 @@ Ext.define('saas.view.sys.power.GroupGrid', {
 
     listeners: {
         columnshow: 'onColumnToggle',
-        columnhide: 'onColumnToggle'
+        columnhide: 'onColumnToggle',
     },
     selectAllPower: function(record){
         var me = this;
@@ -213,15 +423,15 @@ Ext.define('saas.view.sys.power.GroupGrid', {
     },
     setAllOthers:function(record,bool){
         var data = {};
-        data.add = bool;
-        data.query = bool;
-        data.delete = bool;
-        data.audit = bool;
-        data.update = bool;
-        data.unAudit= bool;
-        data.fileExport= bool;
-        data.fileImport= bool;
-        data.print= bool;
+        data.add = record.get('add')==null?null:bool;
+        data.query = record.get('query')==null?null:bool;
+        data.delete = record.get('delete')==null?null:bool;
+        data.audit = record.get('audit')==null?null:bool;
+        data.update = record.get('update')==null?null:bool;
+        data.unAudit= record.get('unAudit')==null?null:bool;
+        data.fileExport= record.get('fileExport')==null?null:bool;
+        data.fileImport= record.get('fileImport')==null?null:bool;
+        data.print= record.get('print')==null?null:bool;
         var other=record.get('other');
         Ext.Array.each(other,function(o){
             o.checked=bool;

+ 41 - 0
frontend/saas-web/overrides/grid/column/CheckColumn.js

@@ -0,0 +1,41 @@
+Ext.define('saas.override.grid.column.CheckColumn', {
+    override: 'Ext.grid.column.Check',
+
+    defaultRenderer:function(value,cellValues,a,b,c,d,e,f){
+        var me = this,
+        cls = me.checkboxCls,
+        tip = '';
+        if (me.invert) {
+            value = !value;
+        }
+        if (me.disabled) {
+            cellValues.tdCls += ' ' + me.disabledCls;
+        }
+        if (value) {
+            cls += ' ' + me.checkboxCheckedCls;
+            tip = me.checkedTooltip;
+        } else {
+            tip = me.tooltip;
+        }
+        if (tip) {
+            cellValues.tdAttr += ' data-qtip="' + Ext.htmlEncode(tip) + '"';
+        }
+        if (me.useAriaElements) {
+            cellValues.tdAttr += ' aria-describedby="' + me.id + '-cell-description' + (!value ? '-not' : '') + '-selected"';
+        }
+        // This will update the header state on the next animation frame
+        // after all rows have been rendered.
+        me.updateHeaderState();
+        if(typeof value=='object'&&value==null){
+            cellValues.style = 'display: none;';
+            cellValues.tdCls += ' ' + me.disabledCls;
+            cellValues.innerCls = me.disabledCls;
+            cellValues.classes.push(me.disabledCls);
+            cellValues.cellRole = me.disabledCls;
+            return '<span style="display: none;" class="'+ me.disabledCls +'"></span>'
+        }
+
+        return '<span class="' + cls + '" role="' + me.checkboxAriaRole + '"' + (!me.ariaStaticRoles[me.checkboxAriaRole] ? ' tabIndex="0"' : '') + '></span>';
+    }
+
+});