Browse Source

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

# Conflicts:
#	frontend/saas-web/app/view/money/report/TotalPayDetail.js
#	frontend/saas-web/app/view/money/report/TotalRecDetail.js
heqinwei 7 years ago
parent
commit
4e59c9c6f6
29 changed files with 516 additions and 262 deletions
  1. 5 5
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/dto/ListReqDTO.java
  2. 5 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  3. 2 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/VerificationMapper.java
  4. 2 3
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  5. 3 3
      applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml
  6. 2 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SaleProfitView.java
  7. 2 1
      applications/sale/sale-server/src/main/resources/mapper/SaleProfitViewMapper.xml
  8. 0 1
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutReportMapper.xml
  9. 112 65
      frontend/saas-web/app/view/core/query/QueryFormPanel.js
  10. 33 3
      frontend/saas-web/app/view/core/query/QueryPanel.js
  11. 0 34
      frontend/saas-web/app/view/core/query/QueryPanelController.js
  12. 6 0
      frontend/saas-web/app/view/core/report/ReportPanel.js
  13. 10 0
      frontend/saas-web/app/view/home/Home.js
  14. 14 2
      frontend/saas-web/app/view/money/report/AccountDetails.js
  15. 37 17
      frontend/saas-web/app/view/money/report/CustomerCheck.js
  16. 59 38
      frontend/saas-web/app/view/money/report/ProfitDetail.js
  17. 26 12
      frontend/saas-web/app/view/money/report/TotalPayDetail.js
  18. 25 15
      frontend/saas-web/app/view/money/report/TotalRecDetail.js
  19. 39 25
      frontend/saas-web/app/view/money/report/VendorCheck.js
  20. 16 0
      frontend/saas-web/app/view/money/verification/FormPanelController.js
  21. 12 0
      frontend/saas-web/app/view/purchase/report/PurchasePay.js
  22. 2 2
      frontend/saas-web/app/view/sale/report/Sale.js
  23. 1 1
      frontend/saas-web/app/view/sale/report/SaleProfit.js
  24. 17 18
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  25. 8 6
      frontend/saas-web/app/view/stock/report/DataList.js
  26. 56 8
      frontend/saas-web/app/view/stock/report/ProdinoutCount.js
  27. 6 1
      frontend/saas-web/app/view/stock/report/Prodiodetail.js
  28. 1 1
      frontend/saas-web/app/view/sys/guide/FormPanel.js
  29. 15 0
      frontend/saas-web/overrides/exporter/Stylesheet.js

+ 5 - 5
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/dto/ListReqDTO.java

@@ -112,22 +112,22 @@ public class ListReqDTO implements Serializable {
                     }
                     if ("between".equals(operation)) {
                         String[] vals = value.toString().split(",");
-                        con = " " + field + " " + operation + " '" + vals[0] + "' and '" + vals[1] + "' and";
+                        con = " ( " + field + " " + operation + " '" + vals[0] + "' and '" + vals[1] + "' ) and";
                     } else if ("startsWith".equals(operation)) {
                         con = " " + field + "  like '" + value + "%' and";
                     } else if ("endsWith".equals(operation)) {
                         con = " " + field + " like '%" + value + "' and";
                     } else if ("in".equals(operation) || "not in".equals(operation)) {
-                        con = " " + field + " " + operation + " (" + value + ") and";
+                        con = " ( " + field + " " + operation + " (" + value + ") ) and";
                     } else {
                         //字符串默认是模糊查询
                         if ("string".equals(type)) {
-                            con = " " + field + " like '%" + value + "%' and";
+                            con = " (" + field + " like '%" + value + "%') and";
                         } else if ("condition".equals(type)) {
                             //type为condition为前端拼的条件
-                            con = " " + value + " and";
+                            con = " (" + value + ") and";
                         } else {
-                            con = " " + field + " " + operation + " '" + value + "' and";
+                            con = " (" + field + " " + operation + " '" + value + "') and";
                         }
 
                     }

+ 5 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java

@@ -30,6 +30,7 @@ import com.usoftchina.saas.document.service.WarehouseService;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.utils.CollectionUtils;
+import com.usoftchina.saas.utils.DateUtils;
 import com.usoftchina.saas.utils.RegexpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -241,7 +242,10 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
             String inoutCode = maxnumberService.getMaxnumber("StorageInit", true).getData();
             prodInOut.setPi_inoutno(inoutCode);     //出入库单号
             prodInOut.setPi_class("库存初始化");
-            prodInOut.setPi_date(new Date());
+
+            Calendar calendar = Calendar.getInstance();
+            calendar.set(Calendar.DAY_OF_MONTH, 1);
+            prodInOut.setPi_date(calendar.getTime());   //赋值为当月第一天
             //prodInOut.setPi_total();            //含税金额
             prodInOut.setPi_status(Status.UNAUDITED.getDisplay());
             prodInOut.setPi_statuscode(Status.UNAUDITED.name());

+ 2 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/VerificationMapper.java

@@ -40,4 +40,6 @@ public interface VerificationMapper extends CommonBaseMapper<Verification> {
     String validateResAudit(@Param("id") Long id);
 
     int validateSetAcount(@Param("detno") int detno,@Param("companyid")Long companyid);
+
+    void updateAuditMsg (@Param("id") Long id,@Param("userName")String userName);
 }

+ 2 - 3
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java

@@ -543,8 +543,6 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         formData.getMain().setVc_auditdate(new Date());
         baseDTO = this.saveFormData(formData);
         Long id = baseDTO.getId();
-
-
             VerificationDTO verificationDTO = formData.getMain();
             Subledger subledger = changSubledgerUntil(verificationDTO);
             subledgerMapper.insertSelective(subledger);
@@ -573,7 +571,8 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
 
         //更新出入库状态
         this.updateProdInoutStatus(id);
-
+        //更新审核人和审核日期
+        verificationMapper.updateAuditMsg(id,BaseContextHolder.getUserName());
         baseDTO.setId(id);
         baseDTO.setName(BillCodeSeq.VERIFICATION.getCaller());
         baseDTO.setCode(formData.getMain().getVc_code());

+ 3 - 3
applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml

@@ -619,7 +619,7 @@
     select count(1) from periodsdetail where pd_detno = #{detno} and IFNULL(pd_status,0)=99
     and companyid= #{companyid}
   </select>
-  <select id="checkStatus" resultType="int">
-    select count(1) from Verification where ifnull(vc_statuscode,'')='AUDITED' and vc_id= #{id,jdbcType=INTEGER}
-  </select>
+  <update id="updateAuditMsg">
+    update verification set vc_auditman  = #{userName},vc_auditdate = NOW() where vc_id = #{id}
+  </update>
 </mapper>

+ 2 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SaleProfitView.java

@@ -58,4 +58,6 @@ public class SaleProfitView {
     private Double pd_profitpresent;
 
     private Double pw_costprice;
+
+    private Date pi_date;
 }

+ 2 - 1
applications/sale/sale-server/src/main/resources/mapper/SaleProfitViewMapper.xml

@@ -7,6 +7,7 @@
     <result column="sa_sellercode" property="sa_sellercode" jdbcType="VARCHAR" />
     <result column="sa_seller" property="sa_seller" jdbcType="VARCHAR" />
     <result column="sa_date" property="sa_date" jdbcType="TIMESTAMP" />
+    <result column="pi_date" property="pi_date" jdbcType="TIMESTAMP" />
     <result column="pd_inoutno" property="pd_inoutno" jdbcType="VARCHAR" />
     <result column="pd_piclass" property="pd_piclass" jdbcType="VARCHAR" />
     <result column="pr_kind" property="pr_kind" jdbcType="VARCHAR" />
@@ -37,7 +38,7 @@
         and  companyId = #{companyId}
       </if>
     </where>
-    order by sa_date desc
+    order by pi_date desc
   </select>
 
   <select id="selectCalculateFields" resultType="string">

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

@@ -55,7 +55,6 @@
         and  companyid = #{companyId}
       </if>
     </where>
-    order by pi_date desc
   </select>
 
 

+ 112 - 65
frontend/saas-web/app/view/core/query/QueryFormPanel.js

@@ -20,80 +20,127 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
         labelWidth: 90,
         columnWidth: 0.25,
         blankText: '该字段不能为空',
-	},
-
-    dockedItems: [{
-        width:140,
-        height: 70,
-        xtype: 'toolbar',
-        dock: 'right',
-        items: [{
-            margin:'8 0 0 0',
-            xtype: 'buttongroup',
-            cls:'x-query-buttongroup',
-            items:[{
-                height:32,
-                width:70,
-                style:'min-width: 0px;min-height: 0px;',
-                xtype: 'button',
-                name:'query',
-                text: '查询',
-                handler: 'onQuery',
-            },{
-                style:'min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff;padding: 0px;margin-top: -1px;margin-left: -2px;',
-                xtype: 'button',
-                iconCls:'x-btn-show',
-                handler: 'showMore',
-                name:'showMore',
-                tooltip:'更多',
-                listeners:{
-                    afterrender:function(b){
-                        var count = window.innerHeight - 110>=800?2:1;
-                        var columnWidthCount = 0;
-                        var items = b.ownerCt.ownerCt.ownerCt.items.items;
-                        Ext.each(items, function(item, index){
-                            if(item.xtype != 'hidden'){
-                                columnWidthCount+= item.columnWidth
-                            }
-                        });
-                        columnWidthCount = Math.ceil(columnWidthCount);
-                        if(columnWidthCount<=count){
-                            b.hide();
-                        }
-                    }
-                }
-            },{
-                name:'hideMore',
-                hidden:true,
-                tooltip:'隐藏',
-                style:'min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff;padding: 0px;margin-top: -1px;margin-left: -2px;',
-                xtype: 'button',
-                iconCls:'x-btn-hide',
-                handler: 'hideMore'
-            }]
-        },'->']
-    }],
+    },
+    
+    toggleConfig: {
+        showMoreIconCls: 'x-btn-show',
+        shwoMoreTooltip: '更多',
+        hideMoreIconCls: 'x-btn-hide',
+        hideMoreTooltip: '隐藏'
+    },
+
+    initComponent: function() {
+        var me = this,
+        config = me.toggleConfig;
+        
+        Ext.apply(me, {
+            dockedItems: [{
+                width:140,
+                height: 70,
+                xtype: 'toolbar',
+                dock: 'right',
+                items: [{
+                    margin:'8 0 0 0',
+                    xtype: 'buttongroup',
+                    cls:'x-query-buttongroup',
+                    items:[{
+                        height:32,
+                        width:70,
+                        style:'min-width: 0px;min-height: 0px;',
+                        xtype: 'button',
+                        name:'query',
+                        text: '查询',
+                        handler: 'onQuery',
+                    },{
+                        style:'min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff;padding: 0px;margin-top: -1px;margin-left: -2px;',
+                        xtype: 'button',
+                        handler: function(b) {
+                            var form = b.up('core-query-queryformpanel');
+                            form.toggleShowMore();
+                        },
+                        name:'toggle',
+                        iconCls: config.hideMoreIconCls,
+                        tooltip: config.hideMoreTooltip,
+                    }]
+                },'->']
+            }],
+        });
+
+        me.callParent(arguments);
+    },
 
     listeners: {
-        boxReady:function(form){
+        boxready:function(form){
             if(window.innerHeight - 110 >= 800){
-                form.setHeight(96);
+                form.setFormItemRows(null, true);
+            }else {
+                form.setFormItemRows(1, true);
             }
         },
         beforerender: function(form) {
-            var fiels = form.getForm().getFields();
-            fiels.each(function(f) {
-                f.enableKeyEvents = true;
-                f.on && f.on({
-                    keydown: {
-                        fn: function(th, e, eOpts) {
-                            if(e.keyCode == 13) {
-                                form.up('core-query-querypanel').getController().onQuery()
-                            }
+            form.addItemEvenListeners();
+        }
+    },
+
+    addItemEvenListeners: function() {
+        var me = this,
+        queryPanel = me.up('core-query-querypanel'),
+        fiels = me.getForm().getFields();
+
+        fiels.each(function(f) {
+            f.enableKeyEvents = true;
+            f.on && f.on({
+                keydown: {
+                    fn: function(th, e, eOpts) {
+                        if(e.keyCode == 13) {
+                            queryPanel.getController().onQuery()
                         }
                     }
-                });
+                }
             });
+        });
+    },
+
+    toggleShowMore: function(unanimate) {
+        var me = this,
+        showMore = typeof me.showMore != undefined ? !me.showMore : true,
+        rowItems = me.rowItems,
+        allRows = rowItems.length,
+        rows = showMore ? allRows : 1;
+
+        me.setFormItemRows(rows, unanimate);
+
+        var b = me.dockedItems.items[0].down('[name=query]');
+        b.removeFocusCls();
+        me.updateLayout();
+    },
+
+    setFormItemRows: function(rows, unanimate) {
+        var me = this,
+        rowItems = me.rowItems,
+        allRows = rowItems.length,
+        rows = rows ? rows : allRows,
+        showMore = rows == allRows;
+
+        var n_height = 14 + rows * ( 32 + 10 );
+
+        unanimate ? me.setHeight(n_height) : me.animate({dynamic: true, duration: 500, to: {height: n_height + 'px'}});
+        me.setToggleBtn(showMore);
+        me.showMore = showMore;
+        return rows;
+    },
+
+    setToggleBtn: function(showMore) {
+        var me = this,
+        config = me.toggleConfig,
+        toggleBtn = me.dockedItems.items[0].down('[name=toggle]');
+        
+        if(showMore) {
+            toggleBtn.setIconCls(config.hideMoreIconCls);
+            toggleBtn.setTooltip(config.hideMoreTooltip);
+        }else {
+            toggleBtn.setIconCls(config.showMoreIconCls);
+            toggleBtn.setTooltip(config.shwoMoreTooltip);
         }
     }
 

+ 33 - 3
frontend/saas-web/app/view/core/query/QueryPanel.js

@@ -16,7 +16,6 @@ Ext.define('saas.view.core.query.QueryPanel', {
         reference: 'queryform',
         xtype: 'core-query-queryformpanel',
         width: '100%',
-        height:54,
         margin: '0 0 12 0',
     }, {
         // margin: '12 0 0 0',
@@ -55,14 +54,43 @@ Ext.define('saas.view.core.query.QueryPanel', {
         var me = this,
         items = me.queryFormItems,
         queryForm = me.getQueryForm(),
-        viewModel = me.getViewModel();
+        viewModel = me.getViewModel(),
+        rowItems = [], // 所有行*[[item], ...]
+        t_rowItems = [], // 当前行*[item, ...]
+        t_columnWidth = 0; // 当前行列宽之和
+
+        Ext.Array.each(items, function(item, index) {
+            item.columnWidth = item.columnWidth || 0.25;
 
-        Ext.Array.each(items, function(item) {
             var bind = item.bind,
+            columnWidth = item.columnWidth,
             name = item.name,
             ignore = item.ignore,
             defaultValue = item.defaultValue;
 
+            t_columnWidth += columnWidth;
+
+            if(t_columnWidth > 1) { // 当前行已放不下
+                // 先把上一行放入rowItems,当前行+1,再添加到当前行
+                rowItems.push(Ext.Array.clone(t_rowItems));
+                t_columnWidth = 0;
+                t_rowItems.length = 0;
+                t_rowItems.push(item);
+            }else if(t_columnWidth == 1) { // 刚好放满当前行
+                // 先添加到当前行并放入rowItems,当前行+1
+                t_rowItems.push(item);
+                rowItems.push(Ext.Array.clone(t_rowItems));
+                t_columnWidth = 0;
+                t_rowItems.length = 0;
+            }else { // 当前行未满
+                // 直接放入当前行
+                t_rowItems.push(item); // 添加到当前行
+
+                if(index == items.length - 1) { // 最后一个元素
+                    rowItems.push(Ext.Array.clone(t_rowItems));
+                }
+            }
+
             if(item.xtype == 'numberfield') {
                 Ext.applyIf(item, {
                     hideTrigger: true, // 隐藏trigger
@@ -92,6 +120,8 @@ Ext.define('saas.view.core.query.QueryPanel', {
             }
         });
 
+        queryForm.rowItems = rowItems;
+        queryForm.rows = rowItems.length;
         queryForm.items = items;
     },
 

+ 0 - 34
frontend/saas-web/app/view/core/query/QueryPanelController.js

@@ -22,40 +22,6 @@ Ext.define('saas.view.core.query.QueryPanelController', {
         viewModel.set('moreQuery', false);
         queryGrid.store.loadPage(1);
     },
-    showMore:function (){
-        var me = this,
-        queryPanel = me.getView(),
-        queryForm = queryPanel.down('core-query-queryformpanel');
-        var items = queryForm.items.items;
-        var columnWidthCount = 0;
-        Ext.each(items, function(item, index){
-            if(item.xtype != 'hidden'){
-                columnWidthCount+= item.columnWidth
-            }
-        });
-        columnWidthCount = Math.ceil(columnWidthCount);
-        var count = window.innerHeight - 110>=800?2:1;
-        if(columnWidthCount>count){
-            //展开
-            queryForm.animate({dynamic: true, duration: 500, to: {height: (24+42*columnWidthCount)+'px'}})
-            queryForm.dockedItems.items[0].down('[name=showMore]').hide();
-            queryForm.dockedItems.items[0].down('[name=hideMore]').show();
-            var b = queryForm.dockedItems.items[0].down('[name=query]');
-            b.removeFocusCls();
-        }
-    },
-    hideMore:function (){
-        var me = this,
-        queryPanel = me.getView(),
-        queryForm = queryPanel.down('core-query-queryformpanel');
-        //收缩
-        var count = window.innerHeight - 110>=800?2:1;
-        queryForm.animate({dynamic: true, duration: 500, to: {height: count*56 + 'px'}})
-        queryForm.dockedItems.items[0].down('[name=hideMore]').hide();
-        queryForm.dockedItems.items[0].down('[name=showMore]').show();
-        var b = queryForm.dockedItems.items[0].down('[name=query]');
-        b.removeFocusCls();
-    },
     onMoreQuery: function() {
         var me = this,
         queryPanel = me.getView(),

+ 6 - 0
frontend/saas-web/app/view/core/report/ReportPanel.js

@@ -335,6 +335,12 @@ Ext.define('saas.view.core.report.ReportPanel', {
                         var format = '0.' + xr.join();
                         return Ext.util.Format.number(v, format);
                     },
+                    exportStyle:{
+                        format: 'Total',
+                        alignment: {
+                            horizontal: 'Right'
+                        }
+                    }
                 });
             }
 

+ 10 - 0
frontend/saas-web/app/view/home/Home.js

@@ -79,6 +79,16 @@ Ext.define('saas.view.home.Home', {
 
     initComponent: function() {
         this.lastTime = Ext.Date.now();
+        //判断当前是否未完成新手导航
+        saas.util.BaseUtil.request({
+            url: '/api/commons/init/check'
+        }).then(function(res) {
+            if(!res.data.begin){
+                saas.util.BaseUtil.openTab('sys-guide-formpanel', '新手导航', 'sys-guide-formpanel')
+            }
+        }).catch(function(res) {
+            saas.util.BaseUtil.showErrorToast(res.message);
+        })
         this.callParent(arguments);
     },
 

+ 14 - 2
frontend/saas-web/app/view/money/report/AccountDetails.js

@@ -90,11 +90,23 @@ Ext.define('saas.view.money.report.AccountDetails', {
         text: '本期核销金额',
         dataIndex: 'sl_amount',
         xtype: 'numbercolumn',
-        width: 130
+        width: 130,
+        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: '总金额',
         dataIndex: 'total',
         xtype: 'numbercolumn',
-        width: 110
+        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);
+        }
     }],
 });

+ 37 - 17
frontend/saas-web/app/view/money/report/CustomerCheck.js

@@ -75,30 +75,44 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
         text: '数量',
         xtype: 'numbercolumn',
         dataIndex: 'qty',
-        xtype: 'numbercolumn',
-        width: 110
+        width: 110,
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '单价',
         dataIndex: 'pd_orderprice',
         xtype: 'numbercolumn',
-        width: 110
+        width: 110,
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '税率',
         dataIndex: 'pd_taxrate',
         xtype: 'numbercolumn',
-        width: 80
+        width: 80,
+        renderer: function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
     }, {
         text: '金额',
         xtype: 'numbercolumn',
         width: 110,
         dataIndex: 'pd_total',
         xtype: 'numbercolumn',
-        // 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);
-        // },
+        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('.');
@@ -110,19 +124,25 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
         text: '不含税单价',
         width: 110,
         dataIndex: 'pd_netprice',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '不含税金额',
         width: 110,
         xtype: 'numbercolumn',
         dataIndex: 'pd_nettotal',
         xtype: 'numbercolumn',
-        // 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);
-        // },
+        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('.');

+ 59 - 38
frontend/saas-web/app/view/money/report/ProfitDetail.js

@@ -38,12 +38,11 @@ Ext.define('saas.view.money.report.ProfitDetail', {
         columnWidth: 0.5
     }],
 
-    reportColumns: [
-        {
-            text: '客户',
-            dataIndex: 'pi_custname',
-            width: 200,
-        },{
+    reportColumns: [{
+        text: '客户',
+        dataIndex: 'pi_custname',
+        width: 200,
+    },{
         text: '客户类型',
         dataIndex: 'cu_type',
         width: 200,
@@ -54,48 +53,70 @@ Ext.define('saas.view.money.report.ProfitDetail', {
     }, {
         text: '销售总额',
         dataIndex: 'saamount',
-        width: 150,
-            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);
-            }
+        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);
+        }
     }, {
         text: '不含税金额',
         dataIndex: 'netamount',
-        width: 150
+        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);
+        },
     }, {
         text: '成本金额',
         dataIndex: 'costamount',
-        width: 150
+        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);
+        },
     }, {
         text: '毛利润',
         dataIndex: 'profit',
-        width: 150,
-            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);
-            }
+        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);
+        }
     }, {
-        text: '毛利率',
+        text: '毛利率%',
         dataIndex: 'profitpresent',
-        width: 150
+        width: 130,
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
+    },{
+        flex: 1
     }]
 });

+ 26 - 12
frontend/saas-web/app/view/money/report/TotalPayDetail.js

@@ -41,30 +41,44 @@ Ext.define('saas.view.money.report.TotalPayDetail', {
         text: '供应商名称',
         dataIndex: 'vm_vendname',
         width: 200,
-    }, {text: '期初预付',
-    xtype: 'numbercolumn',
-    dataIndex: 'vm_beginpreamount',
-    width: 150
-    },{
+    }, {
         text: '期初应付',
         xtype: 'numbercolumn',
         dataIndex: 'vm_beginamount',
-        width: 150
+        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);
+        }
     }, {
-        text: '本期应付',
+        text: '增加应付',
         xtype: 'numbercolumn',
         dataIndex: 'vm_nowamount',
-        width: 150
+        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);
+        }
     }, {
-        text: '本期核销',
+        text: '增加预付',
         xtype: 'numbercolumn',
-        dataIndex: 'vm_nowpayamount',
-        width: 150
+        dataIndex: 'vm_nowpreamount',
+        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);
+        }
     }, {
         text: '应付余额',
         dataIndex: 'vm_endamount',
         xtype: 'numbercolumn',
-        width: 150,
+        width: 110,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');

+ 25 - 15
frontend/saas-web/app/view/money/report/TotalRecDetail.js

@@ -42,29 +42,39 @@ Ext.define('saas.view.money.report.TotalRecDetail', {
         dataIndex: 'cm_custname',
         width: 200,
     }, {
-            text: '期初预收',
-            dataIndex: 'cm_beginpreamount',
-            width: 150
-        },{
         text: '期初应收',
         dataIndex: 'cm_beginamount',
-        width: 150
+        xtype: 'numbercolumn',
+        width: 150,
+        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: '增加应收',
         xtype: 'numbercolumn',
         dataIndex: 'cm_nowamount',
-        width: 150
+        width: 150,
+        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: '增加预收',
         xtype: 'numbercolumn',
-        dataIndex: 'cm_nowpayamount',
-        width: 150
+        dataIndex: 'cm_nowpreamount',
+        width: 150,
+        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: '预收余额',
-            xtype: 'numbercolumn',
-            dataIndex: 'cm_endpreamount',
-            width: 150
-        }, {
         text: '应收余额',
         dataIndex: 'cm_endamount',
         xtype: 'numbercolumn',

+ 39 - 25
frontend/saas-web/app/view/money/report/VendorCheck.js

@@ -52,6 +52,7 @@ Ext.define('saas.view.money.report.VendorCheck', {
         width: 150
     },  {
         text: '序号',
+        xtype: 'numbercolumn',
         dataIndex: 'pd_pdno',
         width: 80
     },{
@@ -62,7 +63,7 @@ Ext.define('saas.view.money.report.VendorCheck', {
     },{
         text:'供应商名称',
         dataIndex:'pi_vendname',
-        width: 200,
+        width: 250,
         hidden:true
     },{
         text: '物料编号',
@@ -82,45 +83,46 @@ Ext.define('saas.view.money.report.VendorCheck', {
         width: 80
     }, {
         text: '数量',
-        xtype: 'numbercolumn',
         dataIndex: 'qty',
         xtype: 'numbercolumn',
         width: 110,
-        // renderer : function(v) {
-        //     var arr = (v + '.').split('.');
-        //     var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-            //    var format = '0.' + 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 > 3 ? 3 : arr[1].length)).fill('0');
-            //    var format = '0.' + xr.join();
-        //     return Ext.util.Format.number(v, format);
-        // }
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '单价',
         dataIndex: 'pd_orderprice',
         xtype: 'numbercolumn',
-        width: 110
+        width: 110,
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '税率',
         dataIndex: 'pd_taxrate',
         xtype: 'numbercolumn',
-        width: 80
+        width: 80,
+        renderer: function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
     }, {
         text: '金额',
         xtype: 'numbercolumn',
         dataIndex: 'pd_total',
         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);
-        // },
+        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('.');
@@ -132,12 +134,24 @@ Ext.define('saas.view.money.report.VendorCheck', {
         text: '不含税单价',
         dataIndex: 'pd_netprice',
         xtype: 'numbercolumn',
-        width: 110
+        width: 110,
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '不含税金额',
         dataIndex: 'pd_nettotal',
         xtype: 'numbercolumn',
-        width: 110
+        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);
+        },
     }, {
         text: '单据类型',
         dataIndex: 'pi_class',

+ 16 - 0
frontend/saas-web/app/view/money/verification/FormPanelController.js

@@ -533,6 +533,8 @@ Ext.define('saas.view.money.verification.FormPanelController', {
         })
         store.removeAll();
         store.add(datas);
+        // 不写该方法合计列会错位,这里触发afterEdit事件用来刷新grid
+        store.getAt(0) ? store.afterEdit(store.getAt(0), ['']) : null;
     },
 
     onSave: function() {
@@ -668,4 +670,18 @@ Ext.define('saas.view.money.verification.FormPanelController', {
             form.fireEvent('afteraudit', false, form, res);
         });
     },
+    myInitCopyData: function(formData) {
+        var me = this,
+        form = me.getView();
+        //录入人,录入日期,审核人,审核日期清空
+        formData.main['creatorId'] = saas.util.BaseUtil.getCurrentUser().id;
+        formData.main['creatorName'] = saas.util.BaseUtil.getCurrentUser().realname;
+        formData.main['createTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
+        formData.main['updaterId'] = undefined;
+        formData.main['updaterName'] = undefined;
+        formData.main['updateTime'] = undefined;
+        formData.main[form._auditmanField] = undefined;
+        formData.main[form._auditdateField] = undefined;
+        return formData;
+    }
 });

+ 12 - 0
frontend/saas-web/app/view/purchase/report/PurchasePay.js

@@ -66,6 +66,12 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
         xtype: 'numbercolumn',
         width: 110,
         summaryType: 'sum',
+        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);
+        },
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
@@ -78,6 +84,12 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
         xtype: 'numbercolumn',
         width: 110,
         summaryType: 'sum',
+        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);
+        },
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');

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

@@ -157,7 +157,7 @@ Ext.define('saas.view.sale.report.Sale', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
@@ -175,7 +175,7 @@ Ext.define('saas.view.sale.report.Sale', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',

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

@@ -25,7 +25,7 @@ Ext.define('saas.view.sale.report.SaleProfit', {
         columnWidth: 0.2
     }, {
         xtype: 'condatefield',
-        name: 'sa_date',
+        name: 'pi_date',
         fieldLabel: '时间',
         columnWidth: 0.4
     }],

+ 17 - 18
frontend/saas-web/app/view/stock/inventory/EditDataList.js

@@ -29,37 +29,36 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         ptype: 'menuclipboard'
     }],
     tbar: [{
+        xtype: 'textfield',
+        name: 'pr_detail',
+        emptyText:'输入物料编号或名称',
+        width:200,
+        bind: '{form.pr_detail}',
+        getCondition: function(v) {
+            if(v) {
+                return "(upper(pr_code) like '%"+v.toUpperCase()+"%' or upper(pr_detail) like '%"+v.toUpperCase()+"%')";
+            }else {
+                return '1 = 1';
+            }
+        }
+    },{
         xtype: 'warehouseDbfindTrigger',
         name: 'wh_description',
         bind: '{form.wh_description}',
-        emptyText: '仓库',
+        fieldLabel: '仓库',
         dbfinds:[{
             from:'wh_description',to:'wh_description'
         }],
-        width:150,
+        //width:150,
     },{
         editable:true,
         xtype : "remotecombo", 
         storeUrl:'/api/document/producttype/getCombo',
         name : "pr_kind",
         bind: '{form.pr_kind}',
-        emptyText : "类型",
+        fieldLabel : "类型",
         hiddenBtn:true,
-        width:150
-    },{
-        // xtype: 'productDbfindTrigger',
-        xtype: 'textfield',
-        name: 'pr_detail',
-        emptyText:'输入物料编号或名称',
-        width:200,
-        bind: '{form.pr_detail}',
-        getCondition: function(v) {
-            if(v) {
-                return "(upper(pr_code) like '%"+v.toUpperCase()+"%' or upper(pr_detail) like '%"+v.toUpperCase()+"%')";
-            }else {
-                return '1 = 1';
-            }
-        }
+        //width:150
     },{
         cls:'x-formpanel-btn-blue',
         xtype:'button',

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

@@ -93,7 +93,7 @@ Ext.define('saas.view.stock.report.DataList', {
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
     }, {
@@ -104,16 +104,18 @@ Ext.define('saas.view.stock.report.DataList', {
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            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.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
+    }, {
+        flex: 1
     }],
 
     reportColumns: [{
@@ -128,7 +130,7 @@ Ext.define('saas.view.stock.report.DataList', {
     }, {
         text: "物料规格",
         dataIndex: "rc_prodSpec",
-        width: 200,
+        width: 150,
     }, {
         text: "数量",
         xtype: 'numbercolumn',
@@ -152,14 +154,14 @@ Ext.define('saas.view.stock.report.DataList', {
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            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.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
     }, {

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

@@ -58,12 +58,24 @@ Ext.define('saas.view.stock.report.ProdinoutCount', {
             text: '数量',
             dataIndex:'pwm_beginqty',
             xtype: 'numbercolumn',
-            width:110
+            width:110,
+            renderer: function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+                var format = '0.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            },
         },{
             text: '成本',
             dataIndex:'pwm_beginamount',
             xtype: 'numbercolumn',
-            width:110
+            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);
+            }
         }]
     }, {
         text: '入库合计',
@@ -71,12 +83,24 @@ Ext.define('saas.view.stock.report.ProdinoutCount', {
             text: '数量',
             dataIndex:'pwm_nowinqty',
             xtype: 'numbercolumn',
-            width:110
+            width:110,
+            renderer: function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+                var format = '0.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            }
         },{
             text: '成本',
             dataIndex:'pwm_nowinamount',
             xtype: 'numbercolumn',
-            width:110
+            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);
+            }
         }]
     }, {
         text: '出库合计',
@@ -84,12 +108,24 @@ Ext.define('saas.view.stock.report.ProdinoutCount', {
             text: '数量',
             dataIndex:'pwm_nowoutqty',
             xtype: 'numbercolumn',
-            width: 110
+            width: 110,
+            renderer: function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+                var format = '0.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            }
         },{
             text: '成本',
             dataIndex:'pwm_nowoutamount',
             xtype: 'numbercolumn',
-            width: 110
+            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);
+            }
         }]
     }, {
         text: '结存',
@@ -97,12 +133,24 @@ Ext.define('saas.view.stock.report.ProdinoutCount', {
             text: '数量',
             dataIndex:'pwm_endqty',
             xtype: 'numbercolumn',
-            width: 110
+            width: 110,
+            renderer: function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+                var format = '0.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            }
         },{
             text: '成本',
             dataIndex:'pwm_endamount',
             xtype: 'numbercolumn',
-            width: 110
+            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);
+            }
         }]
     }]
 });

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

@@ -128,7 +128,12 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         text: '成本单价',
         xtype: 'numbercolumn',
         dataIndex: 'pd_price',
-        xtype: 'numbercolumn'
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     },{
         text: '订单号',
         dataIndex: 'pd_ordercode',

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

@@ -142,7 +142,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
                         '<tpl if="!begin">x-guide-mask </tpl>',
                         '" src="resources/images/guide/begin.png" style="background: #ffffff;" align ="center" width="135" height="90" alt="开始使用"  >',
                         '<figcaption>',
-                        '开启云进销存',
+                        '开启U企云服务',
                         '</figcaption>',
                         '</figure>',
 

+ 15 - 0
frontend/saas-web/overrides/exporter/Stylesheet.js

@@ -0,0 +1,15 @@
+Ext.define('saas.override.exporter.Stylesheet', {
+    override: 'Ext.exporter.file.ooxml.excel.Stylesheet',
+
+    numberPatterns: {
+        'General Number': 1,
+        'Fixed': 2,
+        'Standard': 2,
+        'Percent': 10,
+        'Scientific': 11,
+        'Currency': '"$"#,##0.00',
+        'Euro Currency': '"€"#,##0.00',
+        'Total':'#,##0.00'
+    }
+
+});