Procházet zdrojové kódy

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

huangx před 7 roky
rodič
revize
2e22bbf772
57 změnil soubory, kde provedl 338 přidání a 93 odebrání
  1. 2 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 1 1
      applications/document/document-server/src/main/resources/mapper/ProductMapper.xml
  3. 4 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java
  4. 4 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java
  5. 4 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java
  6. 4 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  7. 4 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  8. 1 1
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml
  9. 1 1
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutListMapper.xml
  10. 4 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java
  11. 8 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserApi.java
  12. 18 0
      frontend/saas-web/app/Application.scss
  13. 6 5
      frontend/saas-web/app/view/core/form/DataMultiCombo.js
  14. 19 3
      frontend/saas-web/app/view/document/kind/ChildForm.js
  15. 1 1
      frontend/saas-web/app/view/home/HomeModel.js
  16. 2 4
      frontend/saas-web/app/view/home/charts/MonthIO.js
  17. 1 0
      frontend/saas-web/app/view/home/charts/MonthIO.scss
  18. 2 0
      frontend/saas-web/app/view/home/charts/MonthPurchase.js
  19. 1 0
      frontend/saas-web/app/view/home/charts/MonthSale.scss
  20. 2 0
      frontend/saas-web/app/view/home/charts/PurchaseTrend.js
  21. 2 0
      frontend/saas-web/app/view/home/charts/SaleTrend.js
  22. 2 0
      frontend/saas-web/app/view/home/charts/StockAmount.js
  23. 1 0
      frontend/saas-web/app/view/main/MainContainerWrap.js
  24. 1 1
      frontend/saas-web/app/view/main/MainController.js
  25. 15 13
      frontend/saas-web/app/view/main/Navigation.js
  26. 29 22
      frontend/saas-web/app/view/main/Navigation.scss
  27. 1 0
      frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js
  28. 2 0
      frontend/saas-web/app/view/money/othreceipts/QueryPanel.js
  29. 2 0
      frontend/saas-web/app/view/money/othspendings/QueryPanel.js
  30. 2 0
      frontend/saas-web/app/view/money/payBalance/QueryPanel.js
  31. 2 0
      frontend/saas-web/app/view/money/recBalance/QueryPanel.js
  32. 13 13
      frontend/saas-web/app/view/money/report/PayDetail.js
  33. 13 13
      frontend/saas-web/app/view/money/report/RecDetail.js
  34. 1 0
      frontend/saas-web/app/view/money/verification/QueryPanel.js
  35. 4 0
      frontend/saas-web/app/view/purchase/purchase/QueryPanel.js
  36. 3 0
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  37. 3 0
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js
  38. 1 0
      frontend/saas-web/app/view/purchase/report/Purchase.js
  39. 1 0
      frontend/saas-web/app/view/sale/report/Sale.js
  40. 3 0
      frontend/saas-web/app/view/sale/sale/QueryPanel.js
  41. 3 0
      frontend/saas-web/app/view/sale/saleIn/QueryPanel.js
  42. 3 0
      frontend/saas-web/app/view/sale/saleOut/QueryPanel.js
  43. 2 0
      frontend/saas-web/app/view/stock/appropriationInOut/QueryPanel.js
  44. 1 0
      frontend/saas-web/app/view/stock/make/QueryPanel.js
  45. 2 0
      frontend/saas-web/app/view/stock/otherIn/QueryPanel.js
  46. 2 0
      frontend/saas-web/app/view/stock/otherOut/QueryPanel.js
  47. 4 4
      frontend/saas-web/app/view/sys/power/FormPanelController.js
  48. 2 2
      frontend/saas-web/app/view/sys/power/GroupGrid.js
  49. 112 0
      frontend/saas-web/overrides/grid/buffer/BufferedRenderer.js
  50. binární
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.eot
  51. 0 0
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.js
  52. 0 0
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.svg
  53. binární
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.ttf
  54. binární
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.woff
  55. 14 5
      frontend/saas-web/packages/font-saas/sass/etc/icons.scss
  56. 0 0
      frontend/saas-web/packages/font-saas/sass/src/all.scss
  57. 3 3
      frontend/saas-web/resources/json/navigation.json

+ 2 - 1
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -88,7 +88,8 @@ public enum BizExceptionCode implements BaseExceptionCode {
     CHECK_SETACOUNT_EXIS(74006, "不能删除单据日期小于等于结账期间<u>%s</u>的单据"),
     VERIFICATION_CHECK_BALANCE(74007,"核销金额不能大于未核销金额"),
     DELETE_NOT_EXIS(74008,"删除失败,当前单据不存在!"),
-    DOCUMENTS_AUDITED(74009,"单据已审核"),
+    DOCUMENTS_AUDITED(74009,"审核失败,存在已审核单据"),
+    DOCUMENTS_UNAUDITED(74009,"反审核失败,存在未审核单据"),
 
 
 

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/ProductMapper.xml

@@ -445,7 +445,7 @@
         <result column="pw_amount" property="rc_amount" jdbcType="DOUBLE" />
     </resultMap>
     <select id="selectReserveCost" resultMap="ProdReserveCostResultMap">
-        select * from productWH tab left join Product on pw_prodid=pr_id left join warehouse on pw_whid=wh_id
+        select * from productWH tab left join Product on pw_prodcode=pr_code left join warehouse on pw_whid=wh_id
         <where>
           <if test="con!=null">
               ${con}

+ 4 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java

@@ -305,6 +305,10 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         Iterator isList = baseDTO.getBaseDTOs().iterator();
         while (isList.hasNext()){
             DocBaseDTO docBaseDTO = (DocBaseDTO) isList.next();
+            Fundtransfer fundtransfers = fundtransferMapper.selectByPrimaryKey(docBaseDTO.getId().intValue());
+            if (com.usoftchina.saas.commons.po.Status.UNAUDITED.getDisplay().equals(fundtransfers.getFt_status())){
+                throw new BizException(500, BizExceptionCode.DOCUMENTS_UNAUDITED.getMessage());
+            }
             this.unAudit(Math.toIntExact(docBaseDTO.getId()));
         }
     }

+ 4 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java

@@ -359,6 +359,10 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
         Iterator isList = baseDTO.getBaseDTOs().iterator();
         while (isList.hasNext()){
             DocBaseDTO docBaseDTO = (DocBaseDTO) isList.next();
+            Othreceipts othreceipts1 = othreceiptsMapper.selectByPrimaryKey(docBaseDTO.getId().intValue());
+            if (com.usoftchina.saas.commons.po.Status.UNAUDITED.getDisplay().equals(othreceipts1.getOr_status())){
+                throw new BizException(500, BizExceptionCode.DOCUMENTS_UNAUDITED.getMessage());
+            }
             this.unAudit(Math.toIntExact(docBaseDTO.getId()));
         }
     }

+ 4 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java

@@ -354,6 +354,10 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         Iterator isList = baseDTO.getBaseDTOs().iterator();
         while (isList.hasNext()){
             DocBaseDTO docBaseDTO = (DocBaseDTO) isList.next();
+            Othspendings othspendings1 = othspendingsMapper.selectByPrimaryKey(docBaseDTO.getId().intValue());
+            if (com.usoftchina.saas.commons.po.Status.UNAUDITED.getDisplay().equals(othspendings1.getOs_status())){
+                throw new BizException(500, BizExceptionCode.DOCUMENTS_UNAUDITED.getMessage());
+            }
             this.unAudit(Math.toIntExact(docBaseDTO.getId()));
         }
     }

+ 4 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java

@@ -465,6 +465,10 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
         Iterator isList = baseDTO.getBaseDTOs().iterator();
         while (isList.hasNext()){
             DocBaseDTO docBaseDTO = (DocBaseDTO) isList.next();
+            Paybalance paybalance1 = paybalanceMapper.selectByPrimaryKey(docBaseDTO.getId());
+            if (com.usoftchina.saas.commons.po.Status.UNAUDITED.getDisplay().equals(paybalance1.getPb_status())){
+                throw new BizException(500, BizExceptionCode.DOCUMENTS_UNAUDITED.getMessage());
+            }
             this.unAudit(Math.toIntExact(docBaseDTO.getId()));
         }
     }

+ 4 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java

@@ -470,6 +470,10 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         Iterator isList = baseDTO.getBaseDTOs().iterator();
         while (isList.hasNext()){
             DocBaseDTO docBaseDTO = (DocBaseDTO) isList.next();
+            Recbalance recbalance1 = recbalanceMapper.selectByPrimaryKey(docBaseDTO.getId().intValue());
+            if (com.usoftchina.saas.commons.po.Status.UNAUDITED.getDisplay().equals(recbalance1.getRb_status())){
+                throw new BizException(500, BizExceptionCode.DOCUMENTS_UNAUDITED.getMessage());
+            }
             this.unAudit(docBaseDTO.getId());
         }
     }

+ 1 - 1
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -115,7 +115,7 @@
 
   <select id="selectProdInOutListByCondition"  resultMap="BaseResultMap">
     select  *  from prodinout left join prodiodetail on pi_id = pd_piid left join vendor on pi_vendid=ve_id
-    left join product on pd_prodcode=pr_code
+    left join product on pd_prodid=pr_id
     <where>
       <if test="con != null">
         ${con}

+ 1 - 1
applications/storage/storage-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -103,7 +103,7 @@
 
   <select id="selectProdInOutListByCondition"  resultMap="BaseResultMap">
     select  *  from prodinout left join prodiodetail on pi_id = pd_piid
-    left join product on pd_prodcode=pr_code
+    left join product on pd_prodid=pr_id
     <where>
       <if test="con != null">
         ${con}

+ 4 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java

@@ -413,6 +413,10 @@ public class AccountController {
     @PostMapping("/enable")
     public Result enableAccount(@RequestParam long accountId) {
         accountService.enable(accountId);
+        //同步到优软云
+        Long userUU = accountService.findByPrimaryKey(accountId).getUu();
+        Long companyUU = companyService.findByPrimaryKey(BaseContextHolder.getCompanyId()).getUu();
+        String result = ssoUserApi.bind("bind", "trade-app", userUU, companyUU);
         accountService.clearCache(accountId);
         return Result.success();
     }

+ 8 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserApi.java

@@ -60,6 +60,9 @@ public interface SsoUserApi {
     @PostMapping("")
     String unbind(@RequestParam("_operate") String _operate, @RequestParam("userUU") Long userUU, @RequestParam("spaceUU") Long spaceUU);
 
+    @PostMapping("")
+    String bind(@RequestParam("_operate") String _operate, @RequestParam("appId") String appId, @RequestParam("userUU") Long userUU, @RequestParam("spaceUU") Long spaceUU);
+
     @Component
     class DefaultFallback implements SsoUserApi{
         @Override
@@ -82,5 +85,10 @@ public interface SsoUserApi {
             return null;
         }
 
+        @Override
+        public String bind(String _operate, String appId, Long userUU, Long spaceUU) {
+            return null;
+        }
+
     }
 }

+ 18 - 0
frontend/saas-web/app/Application.scss

@@ -389,4 +389,22 @@ div::-webkit-scrollbar-track {
 .x-monthpicker-buttons .x-btn-default-toolbar-small{
   padding: 2px 2px 2px 2px;
   min-width: 56px;
+}
+
+/** charts **/
+.x-tip-default {
+  background-color: #485465;
+  border-color: #485465;
+}
+
+/** datepicker icon **/
+.x-form-field-date .x-form-date-trigger {
+  background: #F1F9FF;
+  border-left: 1px solid #D2D6E5;
+  
+  &:before {
+    content: "\e80f";
+    font-family: font-saas;
+    color: #5AC6F8;
+  }
 }

+ 6 - 5
frontend/saas-web/app/view/core/form/DataMultiCombo.js

@@ -49,11 +49,11 @@ Ext.define('saas.view.core.form.DataMultiCombo', {
     },
     listeners:{
         afterrender:function(f){
-            this.mon(f.el,{
-                mouseover: this.onMouseOver,
-                mouseleave:this.onMouseLeave,
-                scope:this
-            });
+            // this.mon(f.el,{
+            //     mouseover: this.onMouseOver,
+            //     mouseleave:this.onMouseLeave,
+            //     scope:this
+            // });
         }
 
     },
@@ -91,6 +91,7 @@ Ext.define('saas.view.core.form.DataMultiCombo', {
             itemsLn = me.datas.length,
             menuItems = [],
             value = me.value;
+        if(value=='') value = []
         for (; i < itemsLn; i++) {
             item = items[i];
             var checked = !!value.find(function(v) {

+ 19 - 3
frontend/saas-web/app/view/document/kind/ChildForm.js

@@ -389,10 +389,10 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                                     form.setLoading(false);
                                     var localJson = Ext.decode(response.responseText);
                                     if(localJson.success){
-                                        if(localJson.data.hasRegister){
-                                            saas.util.BaseUtil.showSuccessToast('校验成功:手机号已在优软云注册');
+                                        if(!localJson.data){
+                                            saas.util.BaseUtil.showSuccessToast('校验成功:邮箱未注册');
                                         }else{
-                                            saas.util.BaseUtil.showErrorToast('校验失败:手机号未在优软云注册');
+                                            saas.util.BaseUtil.showErrorToast('校验失败:该邮箱已被注册');
                                             f.setValue('');
                                         }
                                     }else{
@@ -411,6 +411,13 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                         }
                     }
                 }
+            },{
+                xtype:'datamulticombo',
+                dataUrl:'/api/account/role/list',
+                fieldLabel: '关联角色',
+                name: 'roleIds',
+                allowBlank:false,
+                maxLength: 20,
             }]
         },
         warehouse:{
@@ -737,8 +744,17 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 }
             }
         });
+
+        //更改参数
+        var o = '';
+        var dataField = form.down('[name=roleIds]');
+        Ext.Array.each(dataField.value,function(item) {
+            o+=item.value+','
+        });
+        o = o.substring(0,o.length-1);
         params['username'] = params['mobile'];
         params['type'] = 1;
+        params['roleIds'] = o;
         //保存接口
         saas.util.BaseUtil.request({
             url: belong.reqUrl,

+ 1 - 1
frontend/saas-web/app/view/home/HomeModel.js

@@ -9,7 +9,7 @@ Ext.define('saas.view.home.HomeModel', {
         month_out: '0', // 本月支出合计
 
         insetPadding: '12 0 0 0', // 图表insetPadding
-        maxBarWidth: 20, // 最大柱宽
+        maxBarWidth: 25, // 最大柱宽
     },
 
     stores: {

+ 2 - 4
frontend/saas-web/app/view/home/charts/MonthIO.js

@@ -31,10 +31,6 @@ Ext.define('saas.view.home.charts.MonthIO', {
                     insetPadding: '{insetPadding}',
                     store: '{month_io}'
                 },
-                // legend: {
-                //     type: 'sprite',
-                //     docked: 'bottom'
-                // },
                 legend: {
                     type: 'dom',
                     docked: 'top',
@@ -50,6 +46,7 @@ Ext.define('saas.view.home.charts.MonthIO', {
                     fields: ['main'],
                     minimum: 0,
                     label: {
+                        fontSize: '12px',
                         fillStyle: '#485465'
                     },
                     grid: {
@@ -69,6 +66,7 @@ Ext.define('saas.view.home.charts.MonthIO', {
                     position: 'bottom',
                     fields: ['x'],
                     label: {
+                        fontSize: '12px',
                         fillStyle: '#485465'
                     },
                     style: {

+ 1 - 0
frontend/saas-web/app/view/home/charts/MonthIO.scss

@@ -11,6 +11,7 @@
         .x-legend-container {
 
             .x-legend-item {
+                font-size: 12px;
                 border: none !important;
                 outline: none !important;
                 text-align: left;

+ 2 - 0
frontend/saas-web/app/view/home/charts/MonthPurchase.js

@@ -26,6 +26,7 @@ Ext.define('saas.view.home.charts.MonthPurchase', {
                     fields: ['x'],
                     position: 'bottom',
                     label: {
+                        fontSize: '12px',
                         fillStyle: '#485465'
                     },
                     style: {
@@ -46,6 +47,7 @@ Ext.define('saas.view.home.charts.MonthPurchase', {
                         }
                     },
                     label: {
+                        fontSize: '12px',
                         fillStyle: '#485465',
                         textAlign: 'end'
                     },

+ 1 - 0
frontend/saas-web/app/view/home/charts/MonthSale.scss

@@ -6,6 +6,7 @@
         .x-legend-container {
 
             .x-legend-item {
+                font-size: 12px;
                 border: none !important;
                 outline: none !important;
                 text-align: left;

+ 2 - 0
frontend/saas-web/app/view/home/charts/PurchaseTrend.js

@@ -30,6 +30,7 @@ Ext.define('saas.view.home.charts.PurchaseTrend', {
                     fields: ['x'],
                     position: 'bottom',
                     label: {
+                        fontSize: '12px',
                         fillStyle: '#485465'
                     },
                     style: {
@@ -50,6 +51,7 @@ Ext.define('saas.view.home.charts.PurchaseTrend', {
                         }
                     },
                     label: {
+                        fontSize: '12px',
                         fillStyle: '#485465'
                     },
                     style: {

+ 2 - 0
frontend/saas-web/app/view/home/charts/SaleTrend.js

@@ -36,6 +36,7 @@ Ext.define('saas.view.home.charts.SaleTrend', {
                     fields: ['x'],
                     position: 'bottom',
                     label: {
+                        fontSize: '12px',
                         fillStyle: '#485465',
                     },
                     style: {
@@ -56,6 +57,7 @@ Ext.define('saas.view.home.charts.SaleTrend', {
                         }
                     },
                     label: {
+                        fontSize: '12px',
                         fillStyle: '#485465',
                     },
                     style: {

+ 2 - 0
frontend/saas-web/app/view/home/charts/StockAmount.js

@@ -30,6 +30,7 @@ Ext.define('saas.view.home.charts.StockAmount', {
                     fields: ['x'],
                     position: 'bottom',
                     label: {
+                        fontSize: '12px',
                         fillStyle: '#485465'
                     },
                     style: {
@@ -50,6 +51,7 @@ Ext.define('saas.view.home.charts.StockAmount', {
                         }
                     },
                     label: {
+                        fontSize: '12px',
                         fillStyle: '#485465'
                     },
                     style: {

+ 1 - 0
frontend/saas-web/app/view/main/MainContainerWrap.js

@@ -38,6 +38,7 @@ Ext.define('saas.view.main.MainContainerWrap', {
             })],
             items: [
                 {
+                    iconCls: 'x-sa sa-home',
                     xtype: 'home',
                     title: '首页',
                     closable: false

+ 1 - 1
frontend/saas-web/app/view/main/MainController.js

@@ -35,7 +35,7 @@ Ext.define('saas.view.main.MainController', {
         navigationList = refs.navigationTreeList,
         navCollapsed = !navigationList.navCollapsed,
         new_width = navCollapsed ? viewModel.get('smallNavWidth') : viewModel.get('navWidth'),
-        newLogoImgStyle = navCollapsed ? { width: 40, height: 40, top: 10, left: 10 } : { width: 32, height: 32, top: 16, left: 42 },
+        newLogoImgStyle = navCollapsed ? { width: 36, height: 36, top: 12, left: 12 } : { width: 32, height: 32, top: 16, left: 42 },
         newLogoTextStyle = navCollapsed ? {
             5: { opacity: 0 },
             10: { opacity: 0 },

+ 15 - 13
frontend/saas-web/app/view/main/Navigation.js

@@ -81,19 +81,21 @@ Ext.define('saas.view.main.Navigation', {
                     '<div class="nav-menu-body">',
                     '<tpl for=".">',
                     '<div class="menu">',
-                    '<h3 class="menu-title">{text}</h3>',
-                    '<div class="menu-content">',
-                    '<tpl for="items">',
-                    '<div class="menuitem">',
-                    '<div class="item-text" title="{text}" data-config="{config}" data-id="{id}" data-text="{text}" data-type="query" data-viewType="{viewType}">',
-                    '{text}',
-                    '</div>',
-                    '<tpl if="{addType}">',
-                    '<div class="item-icon" data-id="{id}" data-text="{text}" data-type="form" data-viewType="{addType}">新增</div>',
-                    '</tpl>',
-                    '</div>',
-                    '</tpl>',
-                    '</div>',
+                        '<div class="menu-title">',
+                            '<span class="menu-title-text">{text}</span>',
+                        '</div>',
+                        '<div class="menu-content">',
+                            '<tpl for="items">',
+                            '<div class="menuitem">',
+                                '<div class="item-text" title="{text}" data-config="{config}" data-id="{id}" data-text="{text}" data-type="query" data-viewType="{viewType}">',
+                                    '{text}',
+                                '</div>',
+                                '<tpl if="{addType}">',
+                                '<div class="item-icon" data-id="{id}" data-text="{text}" data-type="form" data-viewType="{addType}">新增</div>',
+                                '</tpl>',
+                            '</div>',
+                            '</tpl>',
+                        '</div>',
                     '</div>',
                     '</tpl>',
                     '</div>',

+ 29 - 22
frontend/saas-web/app/view/main/Navigation.scss

@@ -102,61 +102,67 @@ $nav-font-color-over: #fff;
     top: 0;
     background: white;
     overflow: hidden;
-    // animation: name duration timing-function delay iteration-count direction;
 
     .nav-menu-body {
         display: flex;
-        padding: 5px;
         border-top-right-radius: 4px;
         border-bottom-right-radius: 4px;
 
         .menu {
-            
+
+            &:first-child {
+                .menu-content {
+                    border-right: 1px solid #EEF9FE;
+                }
+            }
+
             width: 200px;
-            border-right: 1px dashed #ccc;
             letter-spacing: 1px;
-            color: #444;
 
-            &:last-child {
-                border: none;
-            }
-            
             .menu-title {
-                margin: 5px;
+                padding-left: 30px;
+                background: #EEF9FE;
+
+                .menu-title-text {
+                    height: 40px;
+                    line-height: 40px;
+                    font-size: 16px;
+                    color: #4F5170;
+                    letter-spacing: 0.64px;
+                    text-align: left;
+                }
             }
 
             .menu-content {
-                list-style: none;
-                padding-left: 10px;
-                padding-right: 10px;
 
                 .menuitem {
-                    padding: 5px;
+                    padding-left: 25px;
+                    margin: 6px;
                     display: flex;
-                    border-radius: 4px;
                     align-content: space-between;
 
                     .item-text {
+                        color: #4F5170;
                         cursor: pointer;
-                        line-height: 24px;
+                        height: 34px;
+                        line-height: 34px;
                         white-space: nowrap;
-                        width: 130px;
+                        flex: 1;
                         overflow: hidden;
+                        font-size: 14px;
                         text-overflow: ellipsis;
                     }
 
                     .item-icon {
                         cursor: pointer;
-                        float: right;
-                        display: none;
                         background: #64b448;
                         color: #fff;
-                        font-size: 11px;
+                        display: none;
                         padding: 3px 6px;
                         border-radius: 3px;
                         margin-right: 5px;
-                        font-weight: 400;
-                        width: 40px;
+                        height: 24px;
+                        margin-top: 5px;
 
                         &:hover {
                             opacity: 0.7;
@@ -164,6 +170,7 @@ $nav-font-color-over: #fff;
                     }
 
                     &:hover {
+                        border-radius: 4px;
                         background-color: #E4E4E4;
 
                         .item-icon {

+ 1 - 0
frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js

@@ -127,6 +127,7 @@ Ext.define('saas.view.money.fundtransfer.QueryPanel', {
         },{
             text: '审核状态',
             dataIndex: 'ft_status',
+            align: 'center',
             width: 90
         }, {
             text: '录入人',

+ 2 - 0
frontend/saas-web/app/view/money/othreceipts/QueryPanel.js

@@ -109,6 +109,7 @@ Ext.define('saas.view.money.othreceipts.QueryPanel', {
             }
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'or_status',
             width: 90
         }, {
@@ -158,6 +159,7 @@ Ext.define('saas.view.money.othreceipts.QueryPanel', {
             }
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'or_status',
             width: 90
         }, {

+ 2 - 0
frontend/saas-web/app/view/money/othspendings/QueryPanel.js

@@ -119,6 +119,7 @@ Ext.define('saas.view.money.othspendings.QueryPanel', {
             }
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'os_status',
             width: 90
         },{
@@ -168,6 +169,7 @@ Ext.define('saas.view.money.othspendings.QueryPanel', {
             }
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'os_status',
             width: 90
         },{

+ 2 - 0
frontend/saas-web/app/view/money/payBalance/QueryPanel.js

@@ -94,6 +94,7 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
                 width: 180,
             }, {
                 text: '单据状态',
+                align: 'center',
                 dataIndex: 'pb_status',
                 width: 90
             }, {
@@ -126,6 +127,7 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
             width: 180,
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'pb_status',
             width: 90
         }, {

+ 2 - 0
frontend/saas-web/app/view/money/recBalance/QueryPanel.js

@@ -85,6 +85,7 @@ Ext.define('saas.view.money.recBalance.QueryPanel', {
             width: 180,
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'rb_status',
             width: 80
         }, {
@@ -113,6 +114,7 @@ Ext.define('saas.view.money.recBalance.QueryPanel', {
             width: 100
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'rb_status',
             width: 80
         }, {

+ 13 - 13
frontend/saas-web/app/view/money/report/PayDetail.js

@@ -98,19 +98,19 @@ Ext.define('saas.view.money.report.PayDetail', {
             dataIndex: 'mustpay',
             xtype: 'numbercolumn',
             width: 110,
-            // 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);
-            // }
+            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: 'datecolumn',

+ 13 - 13
frontend/saas-web/app/view/money/report/RecDetail.js

@@ -102,19 +102,19 @@ Ext.define('saas.view.money.report.RecDetail', {
             dataIndex: 'mustpay',
             xtype: 'numbercolumn',
             width: 110,
-            // 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);
-            // }
+            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: '应收日期',
             dataIndex: 'mustdate',

+ 1 - 0
frontend/saas-web/app/view/money/verification/QueryPanel.js

@@ -104,6 +104,7 @@ Ext.define('saas.view.money.verification.QueryPanel', {
             width: 100
         },{
             text: '审核状态',
+            align: 'center',
             dataIndex: 'vc_status',
             width: 100
         },{

+ 4 - 0
frontend/saas-web/app/view/purchase/purchase/QueryPanel.js

@@ -112,10 +112,12 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             width: 110
         }, {
             text: '审核状态',
+            align: 'center',
             dataIndex: 'pu_status',
             width: 90
         },{
             text: '业务状态',
+            align: 'center',
             dataIndex: 'pu_acceptstatus',
             width: 90
         },{
@@ -156,10 +158,12 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             width: 150
         }, {
             text: '审核状态',
+            align: 'center',
             dataIndex: 'pu_status',
             width: 90
         },{
             text: '业务状态',
+            align: 'center',
             dataIndex: 'pu_acceptstatus',
             width: 90
         }, {

+ 3 - 0
frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js

@@ -106,10 +106,12 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
             width: 110
         },{
             text: '单据状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         },{
             text: '付款状态',
+            align: 'center',
             dataIndex: 'pi_prstatus',
             width: 90
         },{
@@ -154,6 +156,7 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
             width: 150
         },{
             text: '审核状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         },{

+ 3 - 0
frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js

@@ -109,10 +109,12 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
             width: 110
         },{
             text: '单据状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         },{
             text: '付款状态',
+            align: 'center',
             dataIndex: 'pi_prstatus',
             width: 90
         },{
@@ -157,6 +159,7 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
                 width: 150
             },{
                 text: '审核状态',
+                align: 'center',
                 dataIndex: 'pi_status',
                 width: 90
             },{

+ 1 - 0
frontend/saas-web/app/view/purchase/report/Purchase.js

@@ -57,6 +57,7 @@ Ext.define('saas.view.purchase.report.Purchase', {
         width: 250
     }, {
         text: '业务状态',
+        align: 'center',
         dataIndex: 'pu_acceptstatus',
         width: 90
     }, {

+ 1 - 0
frontend/saas-web/app/view/sale/report/Sale.js

@@ -56,6 +56,7 @@ Ext.define('saas.view.sale.report.Sale', {
         width: 250
     }, {
         text: '业务状态',
+        align: 'center',
         dataIndex: 'sa_sendstatus'
     }, {
         text: '业务员编号',

+ 3 - 0
frontend/saas-web/app/view/sale/sale/QueryPanel.js

@@ -117,10 +117,12 @@ Ext.define('saas.view.sale.sale.QueryPanel', {
             }
         }, {
             text: '审核状态',
+            align: 'center',
             dataIndex: 'sa_status',
             width: 90
         }, {
             text: '业务状态',
+            align: 'center',
             dataIndex: 'sa_sendstatus',
             width: 90
         }, {
@@ -156,6 +158,7 @@ Ext.define('saas.view.sale.sale.QueryPanel', {
             width: 200
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'sa_status',
             width: 120
         }, {

+ 3 - 0
frontend/saas-web/app/view/sale/saleIn/QueryPanel.js

@@ -96,10 +96,12 @@ Ext.define('saas.view.sale.saleIn.QueryPanel', {
             width: 110
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         },{
             text: '收款状态',
+            align: 'center',
             dataIndex: 'pi_prstatus',
             width: 90
         },{
@@ -144,6 +146,7 @@ Ext.define('saas.view.sale.saleIn.QueryPanel', {
             width: 250
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         }, {

+ 3 - 0
frontend/saas-web/app/view/sale/saleOut/QueryPanel.js

@@ -97,10 +97,12 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
             width: 110
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         },{
             text: '收款状态',
+            align: 'center',
             dataIndex: 'pi_prstatus',
             width: 90
         },{
@@ -145,6 +147,7 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
             width: 250
         }, {
             text: '单据状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         }, {

+ 2 - 0
frontend/saas-web/app/view/stock/appropriationInOut/QueryPanel.js

@@ -101,6 +101,7 @@ Ext.define('saas.view.stock.appropriationInOut.QueryPanel', {
             width: 110
         },{
             text: '状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         },{
@@ -137,6 +138,7 @@ Ext.define('saas.view.stock.appropriationInOut.QueryPanel', {
                 width: 110
             },{
                 text: '状态',
+                align: 'center',
                 dataIndex: 'pi_status',
                 width: 90
             },{

+ 1 - 0
frontend/saas-web/app/view/stock/make/QueryPanel.js

@@ -132,6 +132,7 @@ Ext.define('saas.view.stock.make.QueryPanel', {
             width: 80,
         },{
             text: '单据状态',
+            align: 'center',
             dataIndex: 'ma_status',
             width: 90,
         },{

+ 2 - 0
frontend/saas-web/app/view/stock/otherIn/QueryPanel.js

@@ -99,6 +99,7 @@ Ext.define('saas.view.stock.otherIn.QueryPanel', {
             width: 250
         },{
             text: '状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         },{
@@ -139,6 +140,7 @@ Ext.define('saas.view.stock.otherIn.QueryPanel', {
             width: 250
         },{
             text: '状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         },{

+ 2 - 0
frontend/saas-web/app/view/stock/otherOut/QueryPanel.js

@@ -99,6 +99,7 @@ Ext.define('saas.view.stock.otherOut.QueryPanel', {
             width: 250
         },{
             text: '状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         },{
@@ -139,6 +140,7 @@ Ext.define('saas.view.stock.otherOut.QueryPanel', {
             width: 250
         },{
             text: '状态',
+            align: 'center',
             dataIndex: 'pi_status',
             width: 90
         },{

+ 4 - 4
frontend/saas-web/app/view/sys/power/FormPanelController.js

@@ -111,15 +111,15 @@ Ext.define('saas.view.sys.power.FormPanelController', {
         if((typeof modified.fileExport) == 'boolean'){
             powerSetList.push({
                 groupId:groupId,
-                classify:'fileExport',
-                checked:data['fileExport']
+                classify:'export',
+                checked:data['export']
             })
         }
         if((typeof modified.fileImport) == 'boolean'){
             powerSetList.push({
                 groupId:groupId,
-                classify:'fileImport',
-                checked:data['fileImport']
+                classify:'import',
+                checked:data['import']
             })
         }
         if((typeof modified.print) == 'boolean'){

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

@@ -25,7 +25,7 @@ Ext.define('saas.view.sys.power.GroupGrid', {
                 }
             }
         )
-	})],
+    })],
     dataUrl:'/api/account/role/power/resource',
     selModel: {
         showHeaderCheckbox:false,
@@ -79,7 +79,7 @@ Ext.define('saas.view.sys.power.GroupGrid', {
             header: '单据名称',
             dataIndex: 'groupName',
             xtype: '',
-            flex: 2,
+            flex: 2.7,
             stopSelection: false,
             menuDisabled:true,
         },{

+ 112 - 0
frontend/saas-web/overrides/grid/buffer/BufferedRenderer.js

@@ -0,0 +1,112 @@
+Ext.define('saas.override.grid.buffer.BufferedRenderer', {
+    override: 'Ext.grid.plugin.BufferedRenderer',
+
+    setViewSize: function(viewSize, fromLockingPartner) {
+        var me = this,
+            store = me.store,
+            view = me.view,
+            ownerGrid,
+            rows = view.all,
+            elCount = rows.getCount(),
+            storeCount = store.getCount(),
+            start, end,
+            lockingPartner = me.view.lockingPartner && me.view.lockingPartner.bufferedRenderer,
+            diff = elCount - viewSize,
+            oldTop = 0,
+            maxIndex = Math.max(0, storeCount - 1),
+            // This is which end is closer to being visible therefore must be the first to have rows added
+            // or the opposite end from which rows get removed if shrinking the view.
+            pointyEnd = Ext.Number.sign((me.getFirstVisibleRowIndex() - rows.startIndex) - (rows.endIndex - me.getLastVisibleRowIndex()));
+        // Synchronize view sizes
+        if (lockingPartner && !fromLockingPartner) {
+            lockingPartner.setViewSize(viewSize, true);
+        }
+        diff = elCount - viewSize;
+        if (diff) {
+            // Must be set for getFirstVisibleRowIndex to work
+            me.scrollTop = me.scroller ? me.scroller.getPosition().y : 0;
+            me.viewSize = viewSize;
+            if (store.isBufferedStore) {
+                store.setViewSize(viewSize);
+            }
+            // If a store loads before we have calculated a viewSize, it loads me.defaultViewSize records.
+            // This may be larger or smaller than the final viewSize so the store needs adjusting when the view size is calculated.
+            if (elCount) {
+                // New start index should be current start index unless that's now too close to the end of the store
+                // to yield a full view, in which case work back from the end of the store.
+                // Ensure we don't go negative.
+                start = Math.max(0, Math.min(rows.startIndex, storeCount - viewSize));
+                // New end index works forward from the new start index ensuring we don't walk off the end
+                end = Math.min(start + viewSize - 1, maxIndex);
+                // Only do expensive adding or removal if range is not already correct
+                if (start === rows.startIndex && end === rows.endIndex) {
+                    // Needs rows adding to or bottom depending on which end is closest
+                    // to being visible (The pointy end)
+                    if (diff < 0) {
+                        me.handleViewScroll(pointyEnd);
+                    }
+                } else {
+                    // While changing our visible range, the locking partner must not sync
+                    if (lockingPartner) {
+                        lockingPartner.disable();
+                    }
+                    // View must expand
+                    if (diff < 0) {
+                        // If it's *possible* to add rows...
+                        if (storeCount > viewSize && storeCount > elCount) {
+                            // Grab the render range with a view to appending and prepending
+                            // nodes to the top and bottom as necessary.
+                            // Store's getRange API always has been inclusive of endIndex.
+                            store.getRange(start, end, {
+                                callback: function(newRecords, start, end) {
+                                    ownerGrid = view.ownerGrid;
+                                    // Append if necessary
+                                    if (end > rows.endIndex) {
+                                        rows.scroll(Ext.Array.slice(newRecords, rows.endIndex + 1, Infinity), 1, 0);
+                                    }
+                                    // Prepend if necessary
+                                    if (start < rows.startIndex) {
+                                        oldTop = rows.first(true);
+                                        rows.scroll(Ext.Array.slice(newRecords, 0, rows.startIndex - start), -1, 0);
+                                        // We just added some rows to the top of the rendered block
+                                        // We have to bump it up to keep the view stable.
+                                        me.bodyTop -= oldTop.offsetTop;
+                                    }
+                                    me.setBodyTop(me.bodyTop);
+                                    // The newly added rows must sync the row heights
+                                    if (lockingPartner && !fromLockingPartner && (ownerGrid.syncRowHeight || ownerGrid.syncRowHeightOnNextLayout)) {
+                                        lockingPartner.setViewSize(viewSize, true);
+                                        ownerGrid.syncRowHeights();
+                                    }
+                                }
+                            });
+                        } else // If not possible just refresh
+                        {
+                            me.refreshView(0);
+                        }
+                    } else // View size is contracting
+                    {
+                        // If removing from top, we have to bump the rendered block downwards
+                        // by the height of the removed rows.
+                        if (pointyEnd === 1) {
+                            oldTop = rows.item(rows.startIndex + diff, true).offsetTop;
+                        }
+                        // Clip the rows off the required end
+                        rows.clip(pointyEnd, diff);
+                        me.setBodyTop(me.bodyTop + oldTop);
+                    }
+                    if (lockingPartner) {
+                        lockingPartner.enable();
+                    }
+                }
+            }
+            // Update scroll range
+            me.refreshSize();
+        }
+        if(this.grid.xtype=='power-grid'){
+            viewSize = 61
+        }
+        return viewSize;
+    },
+});
+

binární
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.eot


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.svg


binární
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.ttf


binární
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.woff


+ 14 - 5
frontend/saas-web/packages/font-saas/sass/etc/icons.scss

@@ -1,36 +1,45 @@
+.sa-home:before { content: "\e817"; }
 
-.sa-purchase:before { content: "\e800"; }
+.sa-bar:before { content: "\e814"; }
 
 .sa-tuichu:before { content: "\e811"; }
 
 .sa-feedback:before { content: "\e810"; }
 
+.sa-money:before { content: "\e805"; }
+
+.sa-setting:before { content: "\e803"; }
+
 .sa-document:before { content: "\e804"; }
 
 .sa-switch-on:before { content: "\e807"; }
 
+.sa-tag:before { content: "\e815"; }
+
 .sa-edit:before { content: "\e806"; }
 
 .sa-help:before { content: "\e813"; }
 
 .sa-sale:before { content: "\e801"; }
 
+.sa-info:before { content: "\e816"; }
+
 .sa-userBook:before { content: "\e80b"; }
 
 .sa-arrows-left:before { content: "\e809"; }
 
+.sa-purchase:before { content: "\e800"; }
+
 .sa-serviceOnline:before { content: "\e80c"; }
 
 .sa-accountCenter:before { content: "\e812"; }
 
-.sa-warehouse:before { content: "\e802"; }
+.sa-date:before { content: "\e80f"; }
 
-.sa-setting:before { content: "\e803"; }
+.sa-warehouse:before { content: "\e802"; }
 
 .sa-saas:before { content: "\e808"; }
 
-.sa-money:before { content: "\e805"; }
-
 .sa-question:before { content: "\e80d"; }
 
 .sa-arrows-right:before { content: "\e80a"; }

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
frontend/saas-web/packages/font-saas/sass/src/all.scss


+ 3 - 3
frontend/saas-web/resources/json/navigation.json

@@ -38,7 +38,7 @@
     }]
 }, {
     "text": "销售",
-    "iconCls": "x-fa fa-shopping-cart",
+    "iconCls": "x-sa sa-tag",
     "items": [{
         "text": "制单",
         "items": [{
@@ -80,7 +80,7 @@
     }]
 }, {
     "text": "库存",
-    "iconCls": "x-fa fa-home",
+    "iconCls": "x-sa sa-bar",
     "items": [{
         "text": "制单",
         "items": [{
@@ -190,7 +190,7 @@
     }]
 }, {
     "text": "资料",
-    "iconCls": "x-fa fa-book",
+    "iconCls": "x-sa sa-info",
     "items": [{
         "text": "基础资料",
         "items": [{

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů