Browse Source

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

guq 7 years ago
parent
commit
18155e8694
100 changed files with 1000 additions and 338 deletions
  1. 1 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 10 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Bom.java
  3. 1 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/ProductController.java
  4. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/ProductDetailMapper.java
  5. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/ProductService.java
  6. 4 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  7. 52 6
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  8. 4 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  9. 1 1
      applications/document/document-server/src/main/resources/mapper/AddressMapper.xml
  10. 1 0
      applications/document/document-server/src/main/resources/mapper/BomMapper.xml
  11. 1 1
      applications/document/document-server/src/main/resources/mapper/CustomerkindMapper.xml
  12. 1 1
      applications/document/document-server/src/main/resources/mapper/FundinouttypeMapper.xml
  13. 5 2
      applications/document/document-server/src/main/resources/mapper/ProductDetailMapper.xml
  14. 2 2
      applications/document/document-server/src/main/resources/mapper/ProductMapper.xml
  15. 1 1
      applications/document/document-server/src/main/resources/mapper/ProductbrandMapper.xml
  16. 1 1
      applications/document/document-server/src/main/resources/mapper/ProducttypeMapper.xml
  17. 1 1
      applications/document/document-server/src/main/resources/mapper/ProductunitMapper.xml
  18. 1 1
      applications/document/document-server/src/main/resources/mapper/VendorkindMapper.xml
  19. 1 1
      applications/document/document-server/src/main/resources/mapper/WarehouseMapper.xml
  20. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/FundtransferController.java
  21. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthreceiptsController.java
  22. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthspengdingsController.java
  23. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java
  24. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/RecbalanceContorller.java
  25. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/FundtransferService.java
  26. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/OthreceiptsService.java
  27. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/OthspendingsService.java
  28. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/PaybalanceService.java
  29. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/RecbalanceService.java
  30. 6 15
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java
  31. 9 19
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java
  32. 7 16
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java
  33. 7 10
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  34. 7 9
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  35. 2 2
      applications/money/money-server/src/main/resources/mapper/FundtransferMapper.xml
  36. 2 2
      applications/money/money-server/src/main/resources/mapper/OthreceiptsMapper.xml
  37. 2 2
      applications/money/money-server/src/main/resources/mapper/OthspendingsMapper.xml
  38. 2 2
      applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml
  39. 2 2
      applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml
  40. 0 4
      applications/purchase/purchase-server/pom.xml
  41. 10 5
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  42. 78 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountRoleDTO.java
  43. 27 27
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/PowerDTO.java
  44. 18 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java
  45. 5 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountRoleMapper.java
  46. 7 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/RoleResourceMapper.java
  47. 43 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/PowerInfo.java
  48. 15 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountService.java
  49. 14 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java
  50. 34 13
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/RoleServiceImpl.java
  51. 7 0
      base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml
  52. 8 0
      base-servers/account/account-server/src/main/resources/mapper/RoleResourceMapper.xml
  53. 1 1
      base-servers/auth/auth-client/src/main/java/com/usoftchina/saas/auth/client/interceptor/AuthRestInterceptor.java
  54. 3 1
      base-servers/auth/auth-common/src/main/java/com/usoftchina/saas/auth/common/jwt/JwtHelper.java
  55. 11 1
      base-servers/auth/auth-common/src/main/java/com/usoftchina/saas/auth/common/jwt/JwtInfo.java
  56. 2 2
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  57. 1 1
      base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/AuthFilter.java
  58. 0 1
      base-servers/gateway-server/src/main/resources/application.yml
  59. 1 1
      frontend/saas-web/app/Application.scss
  60. 9 0
      frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js
  61. 13 1
      frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js
  62. 4 4
      frontend/saas-web/app/view/core/dbfind/MultiDbfindTrigger.js
  63. 5 0
      frontend/saas-web/app/view/core/form/FormPanel.js
  64. 49 2
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  65. 20 2
      frontend/saas-web/app/view/core/query/QueryGridPanel.js
  66. 2 1
      frontend/saas-web/app/view/core/query/QueryPanelModel.js
  67. 1 1
      frontend/saas-web/app/view/document/bom/FormPanel.js
  68. 13 10
      frontend/saas-web/app/view/document/kind/ChildForm.js
  69. 2 2
      frontend/saas-web/app/view/document/kind/Kind.js
  70. 27 0
      frontend/saas-web/app/view/document/kind/KindModel.js
  71. 1 1
      frontend/saas-web/app/view/document/product/FormPanel.js
  72. 2 2
      frontend/saas-web/app/view/home/Home.js
  73. 1 0
      frontend/saas-web/app/view/home/HomeModel.js
  74. 15 7
      frontend/saas-web/app/view/home/InfoCard.js
  75. 0 1
      frontend/saas-web/app/view/home/charts/MonthSale.js
  76. 2 2
      frontend/saas-web/app/view/money/fundtransfer/FormPanel.js
  77. 1 1
      frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js
  78. 2 2
      frontend/saas-web/app/view/money/othreceipts/FormPanel.js
  79. 7 1
      frontend/saas-web/app/view/money/othreceipts/QueryPanel.js
  80. 2 2
      frontend/saas-web/app/view/money/othspendings/FormPanel.js
  81. 1 1
      frontend/saas-web/app/view/money/othspendings/QueryPanel.js
  82. 10 10
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  83. 28 4
      frontend/saas-web/app/view/money/payBalance/QueryPanel.js
  84. 10 10
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  85. 7 1
      frontend/saas-web/app/view/money/recBalance/QueryPanel.js
  86. 7 1
      frontend/saas-web/app/view/money/report/AccountBalance.js
  87. 1 1
      frontend/saas-web/app/view/money/report/VendorCheck.js
  88. 18 10
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js
  89. 25 4
      frontend/saas-web/app/view/purchase/purchase/QueryPanel.js
  90. 15 12
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js
  91. 25 4
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  92. 1 1
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanelController.js
  93. 12 9
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js
  94. 18 3
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js
  95. 54 8
      frontend/saas-web/app/view/purchase/report/Purchase.js
  96. 27 9
      frontend/saas-web/app/view/sale/report/Sale.js
  97. 46 8
      frontend/saas-web/app/view/sale/report/SaleProfit.js
  98. 33 13
      frontend/saas-web/app/view/sale/sale/FormPanel.js
  99. 35 5
      frontend/saas-web/app/view/sale/sale/QueryPanel.js
  100. 12 9
      frontend/saas-web/app/view/sale/saleIn/FormPanel.js

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

@@ -29,6 +29,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_RELDELETE_UPDATE(79306,"存在关联单据,不允许更新编号"),
     BIZ_RELDELETE_UPDATEPROD(79307,"存在关联单据,不允许更新"),
     BIZ_RELDELETE_DELETEPROD(79308,"存在关联单据,不允许删除"),
+    BIZ_PRODWHCODE_REPEAT(79309, "明细仓库重复"),
     NO_OPRATIONDATA(79400,"无可操作单据"),
     BOM_SAVE(79401, "产品编号+版本号已存在"),
     REPEAT_NAME(79501, "名称重复"),

+ 10 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Bom.java

@@ -41,6 +41,16 @@ public class Bom extends CommonBaseEntity implements Serializable {
 
     private String pr_orispeccode;
 
+    private String pr_unit;
+
+    public String getPr_unit() {
+        return pr_unit;
+    }
+
+    public void setPr_unit(String pr_unit) {
+        this.pr_unit = pr_unit;
+    }
+
     public String getPr_spec() {
         return pr_spec;
     }

+ 1 - 3
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/ProductController.java

@@ -99,9 +99,7 @@ public class ProductController {
 
     @GetMapping("/read/{id}")
     public Result getDataById(@PathVariable("id") Long id){
-        Map<String, Object> map = new HashMap<String, Object>();
-        map.put("main", productService.getDataById(id));
-        return Result.success(map);
+        return Result.success(productService.getDataById(id));
     }
 
     @GetMapping("/ReserveCost")

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/ProductDetailMapper.java

@@ -25,4 +25,6 @@ public interface ProductDetailMapper extends CommonBaseMapper<ProductDetail> {
     Long selectProdidByPrimaryKey(Long id);
 
     List<ProductDetail> selectByProdId(Long id);
+
+    boolean deleteByProdId(Long id);
 }

+ 1 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/ProductService.java

@@ -101,7 +101,7 @@ public interface ProductService extends CommonBaseService<ProductMapper, Product
      * @param id
      * @return
      */
-    Product getDataById(Long id);
+    ProductListDTO getDataById(Long id);
 
     /**
      * 物料库存数量金额表

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

@@ -127,6 +127,10 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         customer.setCompanyId(companyId);
         customer.setCreatorId(userId);
         customer.setCreateTime(new Date());
+        //应付款余额
+        Double beginapamount = main.getCu_beginaramount()==null?new Double(0):main.getCu_beginaramount();
+        Double beginprepayamount = main.getCu_beginprerecamount()==null?new Double(0):main.getCu_beginprerecamount();
+        customer.setCu_leftamount(beginapamount-beginprepayamount);
 
         //编号校验
         cu_code = pushMaxnubmer(cu_code, cu_id);

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

@@ -25,6 +25,7 @@ import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
 import java.util.*;
@@ -75,20 +76,34 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public DocBaseDTO saveData(ProductListDTO productListDTO){
         Product product = productListDTO.getMain();
         List<ProductDetail> productDetailList = productListDTO.getItems();
         DocBaseDTO docBaseDTO = null;
+        Long companyId = BaseContextHolder.getCompanyId();
+        Long userId = BaseContextHolder.getUserId();
+
+        //校验明细仓库是否重复
+        validRepeatWarehouse(productDetailList);
+
         if(product.getId() == 0){
             //保存
             String code = pushMaxnubmer(product.getPr_code(), product.getId());
-            product.setCompanyId(BaseContextHolder.getCompanyId());
-            product.setCreatorId(BaseContextHolder.getUserId());
+            product.setCompanyId(companyId);
+            product.setCreatorId(userId);
             product.setCreateTime(new Date());
             //保存主表
             getMapper().insertSelective(product);
             //保存明细表数据
-            productDetailMapper.batchInsert(productDetailList);
+            if (productDetailList.size() > 0) {
+                for (ProductDetail productDetail : productDetailList){
+                    productDetail.setPd_prodid(product.getId());
+                    productDetail.setCompanyId(companyId);
+                }
+
+                productDetailMapper.batchInsert(productDetailList);
+            }
             //生成库存初始化数据并过账
             generateProdIOPost(product, productDetailList);
 
@@ -116,8 +131,12 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
                 List<ProductDetail> updateItems = new ArrayList<ProductDetail>();
                 for(ProductDetail productDetail : productDetailList){
                     if (productDetail.getId() == 0){
+                        productDetail.setUpdaterId(userId);
+                        productDetail.setUpdateTime(new Date());
                         insertItems.add(productDetail);
                     }else{
+                        productDetail.setUpdaterId(userId);
+                        productDetail.setUpdateTime(new Date());
                         updateItems.add(productDetail);
                     }
                 }
@@ -144,6 +163,27 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
         return docBaseDTO;
     }
 
+    /**
+     * 校验明细仓库是否重复
+     * @param productDetailList
+     */
+    private void validRepeatWarehouse(List<ProductDetail> productDetailList) {
+        if (productDetailList.size() > 0){
+            boolean flag = true;   //假设不重复
+            for (int i = 0; i < productDetailList.size() - 1; i ++){
+                for (int j = i + 1; j < productDetailList.size(); j++){
+                    if (productDetailList.get(i).getPd_whcode().equals(productDetailList.get(j).getPd_whcode())){
+                        flag = false;
+                        break;
+                    }
+                }
+            }
+            if (!flag){
+                throw new BizException(BizExceptionCode.BIZ_PRODWHCODE_REPEAT);
+            }
+        }
+    }
+
     /**
      * 物料发生过除库存初始化外的出入库单时,不能新增,修改,删除
      * @param id
@@ -331,6 +371,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
 
         String code = getMapper().getCodeById(id);
         getMapper().deleteByPrimaryKey(id);
+        productDetailMapper.deleteByProdId(id);
         DocBaseDTO docBaseDTO = generateMsgObj(id, code);
         //记录LOG
         messageLogService.delete(docBaseDTO);
@@ -403,8 +444,13 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
     }
 
     @Override
-    public Product getDataById(Long id) {
-        return getMapper().selectByPrimaryKey(id);
+    public ProductListDTO getDataById(Long id) {
+        ProductListDTO productListDTO = new ProductListDTO();
+        Product product = getMapper().selectByPrimaryKey(id);
+        List<ProductDetail> productDetails = productDetailMapper.selectByProdId(id);
+        productListDTO.setMain(product);
+        productListDTO.setItems(productDetails);
+        return productListDTO;
     }
 
     @Override
@@ -426,7 +472,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
     public boolean deleteDetailById(Long id) {
         Long prodId = productDetailMapper.selectProdidByPrimaryKey(id);
         validProductOperation(prodId, BizExceptionCode.BIZ_RELDELETE_DELETEPROD);
-        String prCode = getMapper().selectByPrimaryKey(id).getPr_code();
+        String prCode = getMapper().selectByPrimaryKey(prodId).getPr_code();
         //找到原始单据,反过账并删除
         String inoutCode = getMapper().selectProdIOCode(prCode, BaseContextHolder.getCompanyId(), "库存初始化");
         if (!StringUtils.isEmpty(inoutCode)) {

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

@@ -121,6 +121,10 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             }
             //保存主表信息
             main.setVe_code(code);
+            //更新应付款余额
+            Double beginapamount = main.getVe_beginapamount()==null ? new Double(0):main.getVe_beginapamount();
+            Double beginprepayamount = main.getVe_beginprepayamount()==null ? new Double(0):main.getVe_beginprepayamount();
+            main.setVe_leftamount(beginapamount-beginprepayamount);
             getMapper().insertSelective(main);
             Long mainId = main.getId();
             //更新明细表vc_veid

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

@@ -179,7 +179,7 @@
     where ad_id in (#{ids,jdbcType=VARCHAR})
   </delete>
   <select id="selectAll" resultMap="ResultMapWithBLOBs">
-    SELECT * FROM ADDRESS where COMPANYID=#{companyId}
+    SELECT * FROM ADDRESS where COMPANYID=#{companyId} ORDER BY AD_ID DESC
   </select>
   <select id="selectCountByName" resultType="int">
     SELECT count(*) FROM ADDRESS

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

@@ -22,6 +22,7 @@
     <result column="bo_text5" property="bo_text5" jdbcType="VARCHAR" />
     <result column="pr_brand" property="pr_brand" jdbcType="VARCHAR" />
     <result column="pr_spec" property="pr_spec" jdbcType="VARCHAR" />
+    <result column="pr_unit" property="pr_unit" jdbcType="VARCHAR" />
     <result column="pr_orispeccode" property="pr_orispeccode" jdbcType="VARCHAR" />
   </resultMap>
   <sql id="Base_Column_List" >

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

@@ -120,7 +120,7 @@
     where ck_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM CUSTOMERKIND WHERE COMPANYID=#{companyId}
+    SELECT * FROM CUSTOMERKIND WHERE COMPANYID=#{companyId} order by ck_id desc
   </select>
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
     SELECT ck_name display,ck_name value FROM CUSTOMERKIND WHERE COMPANYID=#{companyId}

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

@@ -140,7 +140,7 @@
     where ft_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM FUNDINOUTTYPE where companyId=#{companyId}
+    SELECT * FROM FUNDINOUTTYPE where companyId=#{companyId} ORDER BY FT_ID DESC
   </select>
   <select id="selectCountByName" resultType="int">
     SELECT COUNT(*) FROM FUNDINOUTTYPE

+ 5 - 2
applications/document/document-server/src/main/resources/mapper/ProductDetailMapper.xml

@@ -255,7 +255,7 @@
         )
         VALUES
         <foreach collection="list" item="item" index="index" open="" close="" separator=",">
-            values ( #{item.pd_prodid,jdbcType=INTEGER}, #{item.pd_prodcode,jdbcType=VARCHAR},
+            ( #{item.pd_prodid,jdbcType=INTEGER}, #{item.pd_prodcode,jdbcType=VARCHAR},
             #{item.pd_detno,jdbcType=INTEGER}, #{item.pd_whcode,jdbcType=VARCHAR}, #{item.pd_whname,jdbcType=VARCHAR},
             #{item.pd_whid,jdbcType=INTEGER}, #{item.pd_price,jdbcType=DOUBLE}, #{item.pd_amount,jdbcType=DOUBLE},
             #{item.companyId,jdbcType=INTEGER}, #{item.updaterId,jdbcType=INTEGER}, #{item.updateTime,jdbcType=TIMESTAMP},
@@ -324,9 +324,12 @@
         </foreach>
     </update>
     <select id="selectProdidByPrimaryKey" resultType="java.lang.Long">
-        SELECT PD_PRODID FROM PRODUCTDETAIL WHERE PD_ID=#{id}
+        SELECT PD_PRODID FROM PRODUCTDETAIL WHERE ID=#{id}
     </select>
     <select id="selectByProdId" resultType="com.usoftchina.saas.document.entities.ProductDetail">
         SELECT * FROM PRODUCTDETAIL WHERE PD_PRODID=#{id}
     </select>
+    <delete id="deleteByProdId" >
+        DELETE FROM PRODUCTDETAIL WHERE PD_PRODID=#{id}
+    </delete>
 </mapper>

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

@@ -903,9 +903,9 @@
         </where>
     </select>
 
-    <select id="selectOrderCountByProdCode" resultType="java.lang.Long">
+    <select id="selectOrderCountByProdCode" resultType="java.lang.Integer">
         SELECT COUNT(*) FROM PRODINOUT LEFT JOIN PRODIODETAIL ON PI_ID=PD_PIID AND PRODINOUT.COMPANYID=PRODIODETAIL.COMPANYID
-        WHERE COMPANYID = #{companyId} AND PD_PRODID = #{id}
+        WHERE PRODIODETAIL.COMPANYID = #{companyId} AND PD_PRODID = #{id}
     </select>
 
     <delete id="deleteProdIOByCode" >

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

@@ -130,7 +130,7 @@
   </select>
 
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
-    SELECT PB_NAME display,PB_NAME value FROM PRODUCTBRAND WHERE COMPANYID=#{companyId}
+    SELECT PB_NAME display,PB_NAME value FROM PRODUCTBRAND WHERE COMPANYID=#{companyId} ORDER BY PB_ID DESC
   </select>
   <select id="selectCountByName" resultType="int">
     SELECT COUNT(*) FROM PRODUCTBRAND

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

@@ -126,7 +126,7 @@
     where pt_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM PRODUCTTYPE where companyId=#{companyId}
+    SELECT * FROM PRODUCTTYPE where companyId=#{companyId} ORDER BY PT_ID DESC
   </select>
     <select id="selectCountByName" resultType="int">
         SELECT COUNT(*) FROM PRODUCTTYPE

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

@@ -120,7 +120,7 @@
     where pu_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM PRODUCTUNIT where companyId=#{companyId}
+    SELECT * FROM PRODUCTUNIT where companyId=#{companyId} ORDER BY PU_ID DESC
   </select>
     <select id="selectCountByName" resultType="int">
         SELECT COUNT(*) FROM productunit

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

@@ -126,7 +126,7 @@
     where vk_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM VENDORKIND where companyId = #{companyId}
+    SELECT * FROM VENDORKIND where companyId = #{companyId} ORDER BY VK_ID DESC
   </select>
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
     SELECT VK_NAME display, VK_NAME value FROM VENDORKIND WHERE COMPANYID=#{companyId}

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

@@ -347,7 +347,7 @@
     <select id="selectCountByCode" resultType="int">
         SELECT COUNT(*) FROM warehouse
         <where>
-            <if test="name!=null">
+            <if test="code!=null">
                 and wh_code=#{code}
             </if>
             <if test="companyId!=0 and companyId!=null">

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/FundtransferController.java

@@ -80,8 +80,8 @@ public class FundtransferController {
     @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Fundtran body){
-        fundtransferService.audit(body);
-        return Result.success();
+        DocBaseDTO docBaseDTO = fundtransferService.audit(body);
+        return Result.success(docBaseDTO);
     }
 
     @Transactional

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthreceiptsController.java

@@ -59,8 +59,8 @@ public class OthreceiptsController {
     @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Othte body){
-        othreceiptsService.audit(body);
-        return Result.success();
+        DocBaseDTO docBaseDTO = othreceiptsService.audit(body);
+        return Result.success(docBaseDTO);
     }
 
     @Transactional

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthspengdingsController.java

@@ -62,8 +62,8 @@ public class OthspengdingsController {
     @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Othsp body){
-        othspendingsService.audit(body);
-        return Result.success();
+        DocBaseDTO docBaseDTO = othspendingsService.audit(body);
+        return Result.success(docBaseDTO);
     }
 
     @Transactional

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java

@@ -65,8 +65,8 @@ public class PaybalanceController {
     @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Pay body){
-        paybalanceService.audit(body);
-        return Result.success();
+        DocBaseDTO docBaseDTO = paybalanceService.audit(body);
+        return Result.success(docBaseDTO);
     }
 
     @Transactional

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/RecbalanceContorller.java

@@ -66,8 +66,8 @@ public class RecbalanceContorller {
     @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Rec body){
-        recbalanceService.audit(body);
-        return Result.success();
+        DocBaseDTO docBaseDTO = recbalanceService.audit(body);
+        return Result.success(docBaseDTO);
     }
 
     @Transactional

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/FundtransferService.java

@@ -15,7 +15,7 @@ import com.usoftchina.saas.page.PageRequest;
 public interface FundtransferService {
     DocBaseDTO insert(Fundtran fundtran);
 
-    void audit(Fundtran fundtran);
+    DocBaseDTO audit(Fundtran fundtran);
 
     void unAudit(int id);
 

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/OthreceiptsService.java

@@ -17,7 +17,7 @@ import com.usoftchina.saas.page.PageRequest;
 public interface OthreceiptsService {
     DocBaseDTO insert(Othte othte);
 
-    void audit(Othte othte);
+    DocBaseDTO audit(Othte othte);
 
     void unAudit(int id);
 

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/OthspendingsService.java

@@ -26,7 +26,7 @@ public interface OthspendingsService {
 
     PageInfo<Othspendings> selectList(PageRequest page, ListReqDTO reqDTO);
 
-    void audit(Othsp othsp);
+    DocBaseDTO audit(Othsp othsp);
 
     void unAudit(int id);
 

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/PaybalanceService.java

@@ -16,7 +16,7 @@ import com.usoftchina.saas.page.PageRequest;
 public interface PaybalanceService {
     DocBaseDTO insert(Pay pay);
 
-    void audit(Pay pay);
+    DocBaseDTO audit(Pay pay);
 
     void unAudit(int id);
 

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/RecbalanceService.java

@@ -24,7 +24,7 @@ public interface RecbalanceService {
 
     void deleteItems(int id);
 
-    void audit(Rec rec);
+    DocBaseDTO audit(Rec rec);
 
 
     void unAudit(Long id);

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

@@ -80,26 +80,16 @@ public class FundtransferServiceImpl implements FundtransferService {
     }
 
     @Override
-    public void audit(Fundtran fundtran) {
+    public DocBaseDTO audit(Fundtran fundtran) {
         Long companyId = BaseContextHolder.getCompanyId();
-        int id = Math.toIntExact(fundtran.getMain().getId());
-        Fundtransfer fundtransfer = fundtransferMapper.selectByPrimaryKey(id);
+        Fundtransfer fundtransfer = fundtran.getMain();
         fundtransfer.setFt_status(Status.AUDITED.getDisplay());
         fundtransfer.setFt_statuscode(Status.AUDITED.name());
         fundtransfer.setCompanyId(companyId);
         this.changBankUntil(fundtran);
-        if ( fundtransfer == null || "".equals(fundtransfer)){
-            this.insert(fundtran);
-        }else {
-            fundtransferMapper.updateByPrimaryKeySelective(fundtransfer);
-            List<Fundtransferdetail> fundtransferdetailList = fundtran.getItems();
-            Iterator isList = fundtransferdetailList.iterator();
-            while (isList.hasNext()){
-                Fundtransferdetail fundtransferdetail = (Fundtransferdetail) isList.next();
-                fundtransferdetail.setFt_date(fundtransfer.getFt_date());
-                fundtransferdetailMapper.updateByPrimaryKeySelective(fundtransferdetail);
-            }
-        }
+        DocBaseDTO docBaseDTO = this.insert(fundtran);
+        Long id = docBaseDTO.getId();
+        String ft_code = docBaseDTO.getCode();
 
         //取从表金额更新中间表、资金账号表
         List<Fundtransferdetail> fundtransferdetailList = fundtran.getItems();
@@ -128,6 +118,7 @@ public class FundtransferServiceImpl implements FundtransferService {
             paybalanceMapper.updateBankAmount(thisamount, bk_id);
             paybalanceMapper.updateBankAmount(bk_inamount + fundtransferdetail.getFtd_nowbalance(), bk_inid);
         }
+        return new DocBaseDTO(id, ft_code, BillCodeSeq.FUNDTRANSFER.getCaller());
     }
 
     @Override

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

@@ -84,26 +84,15 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
     }
 
     @Override
-    public void audit(Othte othte) {
+    public DocBaseDTO audit(Othte othte) {
         Long companyId = BaseContextHolder.getCompanyId();
-        int id = Math.toIntExact(othte.getMain().getId());
-        Othreceipts othreceipts = othreceiptsMapper.selectByPrimaryKey(id);
+        Othreceipts othreceipts = othte.getMain();
         othreceipts.setOr_status(Status.AUDITED.getDisplay());
         othreceipts.setOr_statuscode(Status.AUDITED.name());
-        othreceipts.setCompanyId(companyId);
         this.changBankUntil(othte);
-        if ( othreceipts == null || "".equals(othreceipts)){
-            this.insert(othte);
-        }else {
-            othreceiptsMapper.updateByPrimaryKeySelective(othreceipts);
-            List<Othreceiptsdetail> othreceiptsdetailList = othte.getItems();
-            Iterator isList = othreceiptsdetailList.iterator();
-            while (isList.hasNext()){
-                Othreceiptsdetail fundtransferdetail = (Othreceiptsdetail) isList.next();
-                fundtransferdetail.setOr_date(othreceipts.getOr_date());
-                othreceiptsdetailMapper.updateByPrimaryKeySelective(fundtransferdetail);
-            }
-        }
+        DocBaseDTO docBaseDTO = this.insert(othte);
+        Long id = docBaseDTO.getId();
+        String or_code = docBaseDTO.getCode();
 
         Double amount = banksubledgerMapper.selectThisamount(othreceipts.getOr_bankcode());
         //取从表金额
@@ -117,11 +106,11 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
 
         //计算期间金额
         Statsinfo statsinfo = new Statsinfo();
-        List<Integer> ymList = othreceiptsdetailMapper.selectYm(id);
+        List<Integer> ymList = othreceiptsdetailMapper.selectYm(Math.toIntExact(id));
         Integer ym = ymList.indexOf(0);
         System.out.println("ym:"+ym);
-        statsinfo.setCompanyid(BaseContextHolder.getCompanyId());
-        Integer yms = statsinfoMapper.select(ym, BaseContextHolder.getCompanyId());
+        statsinfo.setCompanyid(companyId);
+        Integer yms = statsinfoMapper.select(ym, companyId);
         statsinfo.setSi_yearmonth(Double.valueOf(ym));
         statsinfo.setSi_amount_otherrec(othreceipts.getOr_amount());
         if (yms == null){
@@ -129,6 +118,7 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+        return new DocBaseDTO(id, or_code, BillCodeSeq.OTHRECEIPTS.getCaller());
     }
 
     @Override

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

@@ -116,26 +116,16 @@ public class OthspendingsServiceImpl implements OthspendingsService {
     }
 
     @Override
-    public void audit(Othsp othsp) {
+    public DocBaseDTO audit(Othsp othsp) {
         Long companyId = BaseContextHolder.getCompanyId();
-        int id = Math.toIntExact(othsp.getMain().getId());
-        Othspendings othspendings = othspendingsMapper.selectByPrimaryKey(id);
+        Othspendings othspendings = othsp.getMain();
         othspendings.setOs_status(Status.AUDITED.getDisplay());
         othspendings.setOs_statuscode(Status.AUDITED.name());
         othspendings.setCompanyId(companyId);
         this.changBankUntil(othsp);
-        if ( othspendings == null || "".equals(othspendings)){
-            this.insert(othsp);
-        }else {
-            othspendingsMapper.updateByPrimaryKeySelective(othspendings);
-            List<Othspendingsdetail> othspendingsdetailList = othsp.getItems();
-            Iterator isList = othspendingsdetailList.iterator();
-            while (isList.hasNext()){
-                Othspendingsdetail othspendingsdetail = (Othspendingsdetail) isList.next();
-                othspendingsdetail.setOs_date(othspendings.getOs_date());
-                othspendingsdetailMapper.updateByPrimaryKeySelective(othspendingsdetail);
-            }
-        }
+        DocBaseDTO docBaseDTO = this.insert(othsp);
+        Long id = docBaseDTO.getId();
+        String os_code = docBaseDTO.getCode();
 
         Double amount = banksubledgerMapper.selectThisamount(othspendings.getOs_bankcode());
         //取从表金额
@@ -149,7 +139,7 @@ public class OthspendingsServiceImpl implements OthspendingsService {
 
         //计算期间金额
         Statsinfo statsinfo = new Statsinfo();
-        List<Integer> ymList = othspendingsdetailMapper.selectYm(id);
+        List<Integer> ymList = othspendingsdetailMapper.selectYm(Math.toIntExact(id));
         Integer ym = ymList.indexOf(0);
         System.out.println("ym:"+ym);
         statsinfo.setCompanyid(BaseContextHolder.getCompanyId());
@@ -161,6 +151,7 @@ public class OthspendingsServiceImpl implements OthspendingsService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+        return new DocBaseDTO(id, os_code, BillCodeSeq.OTHSPENDINGS.getCaller());
     }
 
     @Override

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

@@ -163,10 +163,9 @@ public class PaybalanceServiceImpl implements PaybalanceService {
     }
 
     @Override
-    public void audit(Pay pay) {
+    public DocBaseDTO audit(Pay pay) {
         Long companyId = BaseContextHolder.getCompanyId();
-        int id = Math.toIntExact(pay.getMain().getId());
-        Paybalance paybalance = paybalanceMapper.selectByPrimaryKey(Long.valueOf(id));
+        Paybalance paybalance = pay.getMain();
         paybalance.setPb_status(Status.AUDITED.getDisplay());
         paybalance.setPb_statuscode(Status.AUDITED.name());
         paybalance.setCompanyId(companyId);
@@ -177,12 +176,9 @@ public class PaybalanceServiceImpl implements PaybalanceService {
             subledgerMapper.updateByPrimaryKeySelective(subledger);
         }
         this.changBankUntil(pay);
-        System.out.println("新增");
-        if ( paybalance == null || "".equals(paybalance)){
-            this.insert(pay);
-        }else {
-            paybalanceMapper.updateByPrimaryKeySelective(paybalance);
-        }
+        DocBaseDTO docBaseDTO = this.insert(pay);
+        Long id = docBaseDTO.getId();
+        String pb_code = docBaseDTO.getCode();
 
         Paybalance updatePay = new Paybalance();
         List<Paybalancedet> paybalancedet = pay.getItems1();
@@ -247,7 +243,7 @@ public class PaybalanceServiceImpl implements PaybalanceService {
 
         //计算期间金额
         Statsinfo statsinfo = new Statsinfo();
-        List<Integer> ymList = paybalancedetMapper.selectYm(id);
+        List<Integer> ymList = paybalancedetMapper.selectYm(Math.toIntExact(id));
         Integer ym = ymList.indexOf(0);
         System.out.println("ym:"+ym);
         statsinfo.setCompanyid(BaseContextHolder.getCompanyId());
@@ -259,6 +255,7 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+        return new DocBaseDTO(id, pb_code, BillCodeSeq.PAYBALANCE.getCaller());
     }
 
     @Override

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

@@ -190,10 +190,9 @@ public class RecbalanceServiceImpl implements RecbalanceService {
     }
 
     @Override
-    public void audit(Rec rec) {
+    public DocBaseDTO audit(Rec rec) {
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer id = Math.toIntExact(rec.getMain().getId());
-        Recbalance recbalance = recbalanceMapper.selectByPrimaryKey(id);
+        Recbalance recbalance = rec.getMain();
         recbalance.setRb_status(Status.AUDITED.getDisplay());
         recbalance.setRb_statuscode(Status.AUDITED.name());
         recbalance.setCompanyId(companyId);
@@ -204,11 +203,9 @@ public class RecbalanceServiceImpl implements RecbalanceService {
             subledgerMapper.updateByPrimaryKeySelective(subledger);
         }
         this.changBankUntil(rec);
-        if ( recbalance == null || "".equals(recbalance)){
-            this.insert(rec);
-        }else {
-            recbalanceMapper.updateByPrimaryKeySelective(recbalance);
-        }
+        DocBaseDTO docBaseDTO = this.insert(rec);
+        Long id = docBaseDTO.getId();
+        String pu_code = docBaseDTO.getCode();
 
         Recbalance updateRay = new Recbalance();
         List<Recbalancedet> recbalancedet = rec.getItems1();
@@ -274,7 +271,7 @@ public class RecbalanceServiceImpl implements RecbalanceService {
 
         //计算期间金额
         Statsinfo statsinfo = new Statsinfo();
-        List<Integer> ymList = recbalancedetMapper.selectYm(id);
+        List<Integer> ymList = recbalancedetMapper.selectYm(Math.toIntExact(id));
         Integer ym = ymList.indexOf(0);
         System.out.println("ym:"+ym);
         statsinfo.setCompanyid(BaseContextHolder.getCompanyId());
@@ -286,6 +283,7 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+        return new DocBaseDTO(id, pu_code, BillCodeSeq.RECBALANCE.getCaller());
     }
 
     @Override

+ 2 - 2
applications/money/money-server/src/main/resources/mapper/FundtransferMapper.xml

@@ -241,7 +241,7 @@
       <if test="companyId != null">
         and   Fundtransfer.companyId = #{companyId}
       </if>
-    </where>  order by ft_date desc
+    </where>  order by ft_date desc, ft_code desc
   </select>
 
   <select id="selectFundtransferListByCondition" resultMap="BaseResultMap">
@@ -256,6 +256,6 @@
       <if test="companyId != null">
         and   fundtransfer.companyId = #{companyId}
       </if>
-    </where>  order by ft_date desc
+    </where>  order by ft_date desc, ft_code desc
   </select>
 </mapper>

+ 2 - 2
applications/money/money-server/src/main/resources/mapper/OthreceiptsMapper.xml

@@ -326,7 +326,7 @@
       <if test="companyId != null">
         and   othreceipts.companyId = #{companyId, jdbcType=INTEGER}
       </if>
-    </where>  order by or_date desc
+    </where>  order by or_date desc,or_code desc
   </select>
 
   <select id="selectOthreceiptsListByCondition" resultMap="BaseResultMap">
@@ -341,6 +341,6 @@
       <if test="companyId != null">
         and   othreceipts.companyId = #{companyId, jdbcType=INTEGER}
       </if>
-    </where>  order by or_date desc
+    </where>  order by or_date desc, or_code desc
   </select>
 </mapper>

+ 2 - 2
applications/money/money-server/src/main/resources/mapper/OthspendingsMapper.xml

@@ -321,7 +321,7 @@
       <if test="companyId != null">
         and   othspendings.companyId = #{companyId}
       </if>
-    </where>  order by os_date desc
+    </where>  order by os_date desc, os_code desc
   </select>
 
   <select id="selectOthspendingsListByCondition" resultMap="BaseResultMap">
@@ -336,6 +336,6 @@
       <if test="companyId != null">
         and   othspendings.companyId = #{companyId}
       </if>
-    </where>  order by os_date desc
+    </where>  order by os_date desc,os_code desc
   </select>
 </mapper>

+ 2 - 2
applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml

@@ -428,7 +428,7 @@
       <if test="companyId != null">
         and   paybalance.companyId = #{companyId}
       </if>
-    </where>  order by pb_date desc, order by pb_code
+    </where>  order by pb_date desc, pb_code desc
   </select>
 
   <select id="selectPaybalanceListByCondition" resultMap="BaseResultMap">
@@ -443,7 +443,7 @@
       <if test="companyId != null">
         and   paybalance.companyId = #{companyId}
       </if>
-    </where>  order by pb_date desc, order by pb_code
+    </where>  order by pb_date desc,pb_code desc
   </select>
 
   <select id="validateCodeWhenInsert" resultType="int">

+ 2 - 2
applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml

@@ -131,7 +131,7 @@
       <if test="companyId != null">
         and   recbalance.companyId = #{companyId}
       </if>
-    </where>  order by rb_date desc
+    </where>  order by rb_date desc,rb_code desc
   </select>
 
   <select id="selectRecbalanceListByCondition" resultMap="BaseResultMap">
@@ -146,7 +146,7 @@
       <if test="companyId != null">
         and   recbalance.companyId = #{companyId}
       </if>
-    </where>  order by rb_date desc
+    </where>  order by rb_date desc, rb_code desc
   </select>
 
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">

+ 0 - 4
applications/purchase/purchase-server/pom.xml

@@ -81,10 +81,6 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>commons-api</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.usoftchina.saas</groupId>
-            <artifactId>document-api</artifactId>
-        </dependency>
     </dependencies>
 
     <build>

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

@@ -11,7 +11,6 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
-import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.api.EmployeeApi;
@@ -111,8 +110,12 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         //公司ID
         Long companyId = BaseContextHolder.getCompanyId();
         //人员Id
-        Map<String,Object>  emp= employeeApi.getEmployeeByAccount();
-        Long userId = (Long)emp.get("em_id");
+        Long userId = BaseContextHolder.getUserId();
+
+
+        Map<String,Object> emp = employeeApi.getEmployeeByAccount();
+
+
         //获取主表信息
         PurchaseDTO main = formdata.getMain();
         List<PurchaseDetailDTO> items = formdata.getItems();
@@ -471,8 +474,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
 
         //采购验收单相关计算
         prodInOutService.calcProdInout(pi_id,"采购验收单");
-        DocBaseDTO baseDTO = new DocBaseDTO(pi_id, piInoutno, BillCodeSeq.PURCHASEIN.getName());
-        messageLogService.customizeLog(baseDTO, Operation.TURNPURCCHECKIN);
+        DocBaseDTO baseDTO = new DocBaseDTO();
+        baseDTO.setId(pi_id);
+        baseDTO.setCode(piInoutno);
+        baseDTO.setName("采购验收单");
         return Result.success(baseDTO);
     }
 

+ 78 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountRoleDTO.java

@@ -0,0 +1,78 @@
+package com.usoftchina.saas.account.dto;
+
+import java.io.Serializable;
+
+public class AccountRoleDTO implements Serializable {
+
+    private Long accountId;
+    private String username;
+    private String realname;
+    private String email;
+    private String mobile;
+    private String roleNames;
+    private String roleIds;
+
+    public String getRoleNames() {
+        return roleNames;
+    }
+
+    public void setRoleNames(String roleNames) {
+        this.roleNames = roleNames;
+    }
+
+    public String getRoleIds() {
+        return roleIds;
+    }
+
+    public void setRoleIds(String roleIds) {
+        this.roleIds = roleIds;
+    }
+
+    public Long getId() {
+        return accountId;
+    }
+
+    public void setId(Long accountId) {
+        this.accountId = accountId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getRealname() {
+        return realname;
+    }
+
+    public void setRealname(String realname) {
+        this.realname = realname;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public Long getAccountId() {
+        return accountId;
+    }
+
+    public void setAccountId(Long accountId) {
+        this.accountId = accountId;
+    }
+}

+ 27 - 27
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/PowerDTO.java

@@ -6,15 +6,15 @@ public class PowerDTO {
     private Long groupId;
     private String moduleName;
     private String groupName;
-    private boolean query;
-    private boolean add;
-    private boolean update;
-    private boolean delete;
-    private boolean audit;
-    private boolean unAudit;
-    private boolean print;
-    private boolean fileExport;
-    private boolean fileImport;
+    private Boolean query;
+    private Boolean add;
+    private Boolean update;
+    private Boolean delete;
+    private Boolean audit;
+    private Boolean unAudit;
+    private Boolean print;
+    private Boolean fileExport;
+    private Boolean fileImport;
     private List<OtherPowerDTO> other;
 
     public Long getGroupId() {
@@ -41,75 +41,75 @@ public class PowerDTO {
         this.moduleName = moduleName;
     }
 
-    public boolean getQuery() {
+    public Boolean getQuery() {
         return query;
     }
 
-    public void setQuery(boolean query) {
+    public void setQuery(Boolean query) {
         this.query = query;
     }
 
-    public boolean getAdd() {
+    public Boolean getAdd() {
         return add;
     }
 
-    public void setAdd(boolean add) {
+    public void setAdd(Boolean add) {
         this.add = add;
     }
 
-    public boolean getUpdate() {
+    public Boolean getUpdate() {
         return update;
     }
 
-    public void setUpdate(boolean update) {
+    public void setUpdate(Boolean update) {
         this.update = update;
     }
 
-    public boolean getDelete() {
+    public Boolean getDelete() {
         return delete;
     }
 
-    public void setDelete(boolean delete) {
+    public void setDelete(Boolean delete) {
         this.delete = delete;
     }
 
-    public boolean getAudit() {
+    public Boolean getAudit() {
         return audit;
     }
 
-    public void setAudit(boolean audit) {
+    public void setAudit(Boolean audit) {
         this.audit = audit;
     }
 
-    public boolean getUnAudit() {
+    public Boolean getUnAudit() {
         return unAudit;
     }
 
-    public void setUnAudit(boolean unAudit) {
+    public void setUnAudit(Boolean unAudit) {
         this.unAudit = unAudit;
     }
 
-    public boolean getPrint() {
+    public Boolean getPrint() {
         return print;
     }
 
-    public void setPrint(boolean print) {
+    public void setPrint(Boolean print) {
         this.print = print;
     }
 
-    public boolean getFileExport() {
+    public Boolean getFileExport() {
         return fileExport;
     }
 
-    public void setFileExport(boolean fileExport) {
+    public void setFileExport(Boolean fileExport) {
         this.fileExport = fileExport;
     }
 
-    public boolean getFileImport() {
+    public Boolean getFileImport() {
         return fileImport;
     }
 
-    public void setFileImport(boolean fileImport) {
+    public void setFileImport(Boolean fileImport) {
         this.fileImport = fileImport;
     }
 

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

@@ -251,6 +251,24 @@ public class AccountController {
         return Result.success();
     }
 
+    /**
+     * 个人账户绑定角色
+     * @param accountId
+     * @param roleIds
+     * @return
+     */
+    @PostMapping("/bind/roles")
+    public Result bindRoles(@RequestParam long accountId, @RequestParam String roleIds) {
+        accountService.bindRoles(accountId, roleIds);
+        accountService.clearCache(accountId);
+        return Result.success();
+    }
+
+    @GetMapping("/accountRole/list")
+    public Result getAccountRole(){
+        return Result.success(accountService.selectAccountRole());
+    }
+
     /**
      * 解除个人账户绑定角色
      *

+ 5 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountRoleMapper.java

@@ -1,7 +1,10 @@
 package com.usoftchina.saas.account.mapper;
 
+import com.usoftchina.saas.account.dto.AccountRoleDTO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * @author yingp
  * @date 2018/10/2
@@ -45,4 +48,6 @@ public interface AccountRoleMapper {
      * @param roleId
      */
     void deleteByRoleId(@Param("roleId") Long roleId);
+
+    List<AccountRoleDTO> selectAccountRole();
 }

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/RoleResourceMapper.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.account.mapper;
 
 import com.usoftchina.saas.account.po.OtherPower;
+import com.usoftchina.saas.account.po.PowerInfo;
 import com.usoftchina.saas.account.po.RoleResource;
 import org.apache.ibatis.annotations.Param;
 
@@ -62,6 +63,12 @@ public interface RoleResourceMapper {
      */
     List<Map<String, Object>> selectClassifyByRoleId(@Param("id") Long id);
 
+    /**
+     * 查询所有的ClassIfy
+     * @return
+     */
+    List<PowerInfo> selectPowerInfo();
+
     /**
      * 查询其他权限
      * @return

+ 43 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/PowerInfo.java

@@ -0,0 +1,43 @@
+package com.usoftchina.saas.account.po;
+
+import java.io.Serializable;
+
+public class PowerInfo implements Serializable {
+
+    private String classify;
+    private Long groupId;
+    private String groupName;
+    private String moduleName;
+
+    public String getClassify() {
+        return classify;
+    }
+
+    public void setClassify(String classify) {
+        this.classify = classify;
+    }
+
+    public Long getGrougId() {
+        return groupId;
+    }
+
+    public void setGrougId(Long groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getModuleName() {
+        return moduleName;
+    }
+
+    public void setModuleName(String moduleName) {
+        this.moduleName = moduleName;
+    }
+}

+ 15 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountService.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.account.service;
 
+import com.usoftchina.saas.account.dto.AccountRoleDTO;
 import com.usoftchina.saas.account.po.Account;
 import com.usoftchina.saas.account.po.RoleResource;
 
@@ -108,6 +109,20 @@ public interface AccountService {
      */
     void bindRole(Long accountId, Long roleId);
 
+    /**
+     * 绑定个人账号与多个角色
+     *
+     * @param accountId
+     * @param roleIds
+     */
+    void bindRoles(Long accountId, String roleIds);
+
+    /**
+     * 账号+角色信息列表
+     * @return
+     */
+    List<AccountRoleDTO> selectAccountRole();
+
     /**
      * 解除个人账号与角色的绑定
      *

+ 14 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.account.service.impl;
 
 import com.usoftchina.saas.account.cache.AccountCache;
+import com.usoftchina.saas.account.dto.AccountRoleDTO;
 import com.usoftchina.saas.account.mapper.AccountCompanyMapper;
 import com.usoftchina.saas.account.mapper.AccountMapper;
 import com.usoftchina.saas.account.mapper.AccountRoleMapper;
@@ -113,6 +114,19 @@ public class AccountServiceImpl implements AccountService {
         }
     }
 
+    @Override
+    public void bindRoles(Long accountId, String roleIds) {
+        String[] array = roleIds.split(",");
+        for (int i = 0; i < array.length; i++){
+            bindRole(accountId, Long.parseLong(array[i]));
+        }
+    }
+
+    @Override
+    public List<AccountRoleDTO> selectAccountRole(){
+        return accountRoleMapper.selectAccountRole();
+    }
+
     @Override
     public void unbindRole(Long accountId, Long roleId) {
         accountRoleMapper.delete(accountId, roleId);

+ 34 - 13
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/RoleServiceImpl.java

@@ -92,8 +92,29 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
     public List<PowerDTO> getResourcePowerById(Long id) {
         List<PowerDTO> powerDTOList = new ArrayList<PowerDTO>();
         List<Map<String, Object>> classifyList = roleResourceMapper.selectClassifyByRoleId(id);
+        List<PowerInfo> powerInfoList = roleResourceMapper.selectPowerInfo();
         List<OtherPower> otherPowerList = roleResourceMapper.selectOthersPower();
-        //查询所有模块
+
+        for (PowerInfo powerInfo : powerInfoList){
+            PowerDTO powerDTO = new PowerDTO();
+            powerDTO.setGroupId(powerInfo.getGrougId());
+            powerDTO.setModuleName(powerInfo.getModuleName());
+            powerDTO.setGroupName(powerInfo.getGroupName());
+            //赋值默认权限,在权限列表中的资源默认置为false
+            setPowerValue(powerDTO, powerInfo.getClassify(), false);
+            //赋值权限
+            for (Map<String, Object> map : classifyList){
+                if (powerInfo.getGrougId().equals(map.get("group_id"))){
+                    String classify = String.valueOf(map.get("classify"));
+                    //角色有权限的,设置为true
+                    setPowerValue(powerDTO, classify, true);
+                    setOtherPower(powerDTO, powerInfo.getGrougId(), id, otherPowerList);
+                }
+            }
+            powerDTOList.add(powerDTO);
+        }
+
+        /*//查询所有模块
         List<ResourceModule> modules = resourceModuleMapper.selectByAppId(BaseContextHolder.getAppId());
         for (ResourceModule module : modules){
             //查询所有分组
@@ -113,7 +134,7 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
                 }
                 powerDTOList.add(powerDTO);
             }
-        }
+        }*/
         return powerDTOList;
     }
 
@@ -174,37 +195,37 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
         powerDTO.setOther(otherPowerDTOList);
     }
 
-    private void setPowerValue(PowerDTO powerDTO, String classify) {
+    private void setPowerValue(PowerDTO powerDTO, String classify , boolean status) {
         String[] array = classify.split(",");
         for(int i = 0; i < array.length; i++){
             switch (array[i]){
                 case "QUERY":
-                    powerDTO.setQuery(true);
-                    powerDTO.setFileExport(true);
+                    powerDTO.setQuery(status);
+                    powerDTO.setFileExport(status);
                     break;
                 case "ADD":
-                    powerDTO.setAdd(true);
+                    powerDTO.setAdd(status);
                     break;
                 case "UPDATE":
-                    powerDTO.setUpdate(true);
+                    powerDTO.setUpdate(status);
                     break;
                 case "AUDIT":
-                    powerDTO.setAudit(true);
+                    powerDTO.setAudit(status);
                     break;
                 case "UNAUDIT":
-                    powerDTO.setUnAudit(true);
+                    powerDTO.setUnAudit(status);
                     break;
                 case "DELETE":
-                    powerDTO.setDelete(true);
+                    powerDTO.setDelete(status);
                     break;
                 case "PRINT":
-                    powerDTO.setPrint(true);
+                    powerDTO.setPrint(status);
                     break;
                 case "EXPORT":
-                    powerDTO.setFileExport(true);
+                    powerDTO.setFileExport(status);
                     break;
                 case "IMPORT":
-                    powerDTO.setFileImport(true);
+                    powerDTO.setFileImport(status);
                     break;
                 default:
                     break;

+ 7 - 0
base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml

@@ -16,4 +16,11 @@
     <delete id="deleteByCompanyId" parameterType="java.lang.Long">
         delete from ac_account_role where company_id=#{companyId}
     </delete>
+    <select id="selectAccountRole" resultType="com.usoftchina.saas.account.dto.AccountRoleDTO">
+        SELECT a.id id,a.username,a.realname,a.email,a.mobile,GROUP_CONCAT(c.name) roleNames,GROUP_CONCAT(c.id) roleIds
+        FROM ac_account a
+        left join ac_account_role b on a.id=b.account_id
+        left join ac_role c  on b.role_id = c.id
+        group by a.id,a.username,a.realname,a.email,a.mobile
+    </select>
 </mapper>

+ 8 - 0
base-servers/account/account-server/src/main/resources/mapper/RoleResourceMapper.xml

@@ -31,6 +31,14 @@
           GROUP BY GROUP_ID,CLASSIFY) A
         GROUP BY GROUP_ID
     </select>
+    <select id="selectPowerInfo" parameterType="java.lang.Long" resultType="com.usoftchina.saas.account.po.PowerInfo">
+        SELECT GROUP_CONCAT(classify) classify,group_id groupId,groupname,modulename FROM (
+          SELECT classify,group_id,s.name groupname,M.NAME modulename FROM AC_RESOURCE R
+				LEFT JOIN AC_RESOURCE_GROUP S ON R.GROUP_ID = S.ID
+				LEFT JOIN AC_RESOURCE_MODULE M ON S.MODULE_ID = M.ID
+          GROUP BY GROUP_ID,CLASSIFY,s.name,M.NAME) A
+        GROUP BY GROUP_ID,groupname,modulename
+    </select>
     <resultMap id="OtherPowerResultMap" type="com.usoftchina.saas.account.po.OtherPower">
         <result column="name" property="name" jdbcType="VARCHAR" />
         <result column="id" property="resourceId" jdbcType="BIGINT" />

+ 1 - 1
base-servers/auth/auth-client/src/main/java/com/usoftchina/saas/auth/client/interceptor/AuthRestInterceptor.java

@@ -42,7 +42,7 @@ public class AuthRestInterceptor extends HandlerInterceptorAdapter {
                 JwtInfo infoFromToken = JwtHelper.getInfoFromToken(token, authConfig.getPublicKey());
                 BaseContextHolder.setAppId(infoFromToken.getAppId());
                 BaseContextHolder.setUserId(infoFromToken.getUserId());
-                BaseContextHolder.setUserName(infoFromToken.getUserName());
+                BaseContextHolder.setUserName(infoFromToken.getRealName());
                 BaseContextHolder.setCompanyId(infoFromToken.getCompanyId());
                 BaseContextHolder.setToken(token);
                 log.info("request={} token={} \\r\\n userName={}", request.getRequestURI(),

+ 3 - 1
base-servers/auth/auth-common/src/main/java/com/usoftchina/saas/auth/common/jwt/JwtHelper.java

@@ -41,6 +41,7 @@ public class JwtHelper {
                             .claim("userId", jwtInfo.getUserId())
                             .claim("companyId", jwtInfo.getCompanyId())
                             .claim("userName", jwtInfo.getUserName())
+                            .claim("realName", jwtInfo.getRealName())
                             .setExpiration(DateTime.now().plusSeconds(expire).toDate())
                             // 设置算法(必须)
                             .signWith(SignatureAlgorithm.RS256, RsaUtils.getPrivateKey(priKeyPath))
@@ -97,7 +98,8 @@ public class JwtHelper {
                 ObjectUtils.getStringValue(body.get("appId")),
                 ObjectUtils.getLongValue(body.get("companyId")),
                 ObjectUtils.getLongValue(body.get("userId")),
-                ObjectUtils.getStringValue(body.get("userName"))
+                ObjectUtils.getStringValue(body.get("userName")),
+                ObjectUtils.getStringValue(body.get("realName"))
         );
     }
 }

+ 11 - 1
base-servers/auth/auth-common/src/main/java/com/usoftchina/saas/auth/common/jwt/JwtInfo.java

@@ -11,12 +11,22 @@ public class JwtInfo implements Serializable{
     private Long companyId;
     private Long userId;
     private String userName;
+    private String realName;
 
-    public JwtInfo(String appId, Long companyId, Long userId, String userName) {
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public JwtInfo(String appId, Long companyId, Long userId, String userName, String realName) {
         this.appId = appId;
         this.companyId = companyId;
         this.userId = userId;
         this.userName = userName;
+        this.realName = realName;
     }
 
     public String getAppId() {

+ 2 - 2
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java

@@ -82,7 +82,7 @@ public class AuthController {
             // TODO
             String appId = "trade-app";
 
-            JwtInfo info = new JwtInfo(appId, companyId, accountDTO.getId(), accountDTO.getUsername());
+            JwtInfo info = new JwtInfo(appId, companyId, accountDTO.getId(), accountDTO.getUsername(), accountDTO.getRealname());
             TokenVO tokenVO = JwtHelper.generateToken(info, privateKeyPath, expire);
             TokenDTO tokenDTO = BeanMapper.map(tokenVO, TokenDTO.class);
             // 登录日志
@@ -112,7 +112,7 @@ public class AuthController {
         JwtInfo infoFromToken = JwtHelper.getInfoFromToken(token, publicKeyPath);
         if (isCompanyAvailable(infoFromToken, companyId)) {
             JwtInfo info = new JwtInfo(infoFromToken.getAppId(), companyId, infoFromToken.getUserId(),
-                    infoFromToken.getUserName());
+                    infoFromToken.getUserName(), infoFromToken.getRealName());
             TokenVO tokenVO = JwtHelper.generateToken(info, privateKeyPath, expire);
             return Result.success(BeanMapper.map(tokenVO, TokenDTO.class));
         }

+ 1 - 1
base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/AuthFilter.java

@@ -49,7 +49,7 @@ public class AuthFilter implements GlobalFilter, Ordered {
                 BaseContextHolder.setAppId(jwt.getAppId());
                 BaseContextHolder.setUserId(jwt.getUserId());
                 BaseContextHolder.setCompanyId(jwt.getCompanyId());
-                BaseContextHolder.setUserName(jwt.getUserName());
+                BaseContextHolder.setUserName(jwt.getRealName());
                 BaseContextHolder.setToken(token);
                 AccountDTO accountDTO = AccountCache.current().getAccount();
                 if (null == accountDTO) {

+ 0 - 1
base-servers/gateway-server/src/main/resources/application.yml

@@ -176,5 +176,4 @@ auth:
   ignores:
     - /api/auth/authorize
     - /api/account/account/register
-    - /api/account/company/register
     - /api/auth/info

+ 1 - 1
frontend/saas-web/app/Application.scss

@@ -153,7 +153,7 @@ body.launching {
   }
 }
 
-
+.x-btn-default-small,
 .x-btn-default-toolbar-small{
   border-radius: 2px !important;
 }

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

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

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

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

+ 4 - 4
frontend/saas-web/app/view/core/dbfind/MultiDbfindTrigger.js

@@ -225,10 +225,10 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
                             var nowRec = me.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
                             if(nowRec.get(item.to)&&nowRec.get(item.to)!=""){
                                 nowRec.set(item.to,null);
-                                delete nowRec.modified[item.to];
-                                if(JSON.stringify(nowRec.modified)=="{}"){
-                                    nowRec.dirty = false
-                                }
+                            }
+                            delete nowRec.modified[item.to];
+                            if(JSON.stringify(nowRec.modified)=="{}"){
+                                nowRec.dirty = false
                             }
                             if(me.name==item.to){
                                 me.column.getEditor().setValue('');

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

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

+ 49 - 2
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -12,6 +12,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     columnWidth : 1.0, 
 
     requires: [
+        'Ext.Action',
         'Ext.grid.plugin.CellEditing',
         'Ext.selection.CellModel'
     ],
@@ -26,6 +27,10 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     allowEmpty: false, // 表格为空时校验合法
     showCount: true, // 显示合计栏
 
+    // Clearing selection disables the Actions.
+    allowDeselect: true,
+    defaultActionType: 'button',
+
     initComponent: function() {
         var me = this;
         me.initColumns();
@@ -39,6 +44,15 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         };
 
         Ext.apply(me, {
+            actions: {
+                copy: {
+                    iconCls: 'x-fa fa-copy',
+                    text: '复制单元格',
+                    handler: function() {
+                        me.onCopy(me.selectedData);
+                    }
+                }
+            },
             plugins: {
                 cellediting: {
                     clicksToEdit: 1,
@@ -51,7 +65,15 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             },
             normalViewConfig: {
                 deferEmptyText: false,
-                emptyText: '无数据'
+                emptyText: '无数据',
+                listeners: {
+                    itemcontextmenu: function(view, rec, node, index, e) {
+                        e.stopEvent();
+                        me.getContextMenu().show().setLocalXY(e.getXY());
+                        me.selectedData = e.target.innerText;
+                        return false;
+                    }
+                }
             },
             lockedGridConfig: {
                 // scrollable: {
@@ -464,6 +486,31 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             }
         });
         return trueData;
-    }
+    },
+
+    getContextMenu: function() {
+        var me = this;
+
+        return me.contextMenu || (me.contextMenu = me.add({
+            xtype: 'menu',
+            items: [
+                // Actions can be converted into MenuItems
+                '@copy',
+            ]
+        }));
+    },
+
+    onCopy: function(text) {
+		var target = Ext.DomHelper.append(document.body, {
+			tag: 'textarea',
+			style: 'opacity: 0;position: absolute;top: -10000px;right: 0;',
+			html: text
+		});
+		target.focus();
+		target.select();
+	    document.execCommand('Copy');
+	    target.blur();
+	    document.body.removeChild(target);
+	},
 
 });

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

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

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

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

+ 1 - 1
frontend/saas-web/app/view/document/bom/FormPanel.js

@@ -155,7 +155,7 @@ Ext.define('saas.view.document.bom.FormPanel', {
                 dataIndex : "bd_baseqty",
                 editor : {
                     xtype : "numberfield",
-                    decimalPrecision: 3,
+                    decimalPrecision: 0,
                     minValue:0
                 },
                 renderer : function(v) {

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

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

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

@@ -127,11 +127,11 @@ Ext.define('saas.view.document.kind.Kind', {
         },
         bankinformation:{
             columns: [{
-                text: '账户',
+                text: '账户编号',
                 dataIndex: 'bk_bankcode',
                 flex: 1
             },{
-                text: '名称',
+                text: '账户名称',
                 dataIndex: 'bk_bankname',
                 flex: 1
             },{

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

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

+ 1 - 1
frontend/saas-web/app/view/document/product/FormPanel.js

@@ -204,7 +204,7 @@ Ext.define('saas.view.document.product.FormPanel', {
         detnoColumn: 'pd_detno',
         showCount: false,
         allowEmpty:true,
-        deleteDetailUrl:'/api/document/customer/delete/',
+        deleteDetailUrl:'/api/document/product/deleteDetail/',
         columns : [{
             text : "ID", 
             dataIndex : "id", 

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

@@ -37,7 +37,7 @@ Ext.define('saas.view.home.Home', {
         style: {
             marginRight: '0',
         },
-        title: '2018年11月经营分析',
+        // title: '2018年11月经营分析',
         latyout: 'responsivecolumn',
         defaults: {
             cls: 'x-home-chart',
@@ -53,7 +53,7 @@ Ext.define('saas.view.home.Home', {
         }]
     }, {
         xtype: 'panel',
-        title: '2018年11月经营分析',
+        // title: '2018年11月经营分析',
         latyout: 'responsivecolumn',
         style: {
             marginRight: '0',

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

@@ -37,6 +37,7 @@ Ext.define('saas.view.home.HomeModel', {
                 load: function(s, d) {
                     Ext.getCmp('infocard').setLoading(false);
 
+                    if(!d) return;
                     var res = d[0].data.data || {};
 
                     Ext.getCmp('infocard').addCardItems(res);

+ 15 - 7
frontend/saas-web/app/view/home/InfoCard.js

@@ -11,6 +11,8 @@ Ext.define('saas.view.home.InfoCard', {
     BaseUtil: Ext.create('saas.util.BaseUtil'),
 
     layout: 'card',
+    height: 150,
+
     cardTpl: [
         '<div class="x-row">',
         '<tpl for=".">',
@@ -63,6 +65,7 @@ Ext.define('saas.view.home.InfoCard', {
             userCls: 'x-info-card ' + me.userCls,
             lbar: [{
                 itemId: 'card-prev',
+                hidden: true,
                 cls: 'x-scroller-button x-scroller-button-left',
                 handler: function() {
                     me. showPrevious();
@@ -71,6 +74,7 @@ Ext.define('saas.view.home.InfoCard', {
             }],
             rbar: [{
                 itemId: 'card-next',
+                hidden: true,
                 cls: 'x-scroller-button x-scroller-button-right',
                 handler: function() {
                     me.showNext();
@@ -83,11 +87,15 @@ Ext.define('saas.view.home.InfoCard', {
     },
 
     listeners: {
-        boforerender: function(m) {
-            m.addCardItems();
+        boxready: function(m) {
+            m.initCardItems();
         }
     },
 
+    initCardItems: function() {
+        this.addCardItems({});
+    },
+
     addCardItems: function(infoData) {
         infoData = infoData || {};
         var me = this,
@@ -134,17 +142,17 @@ Ext.define('saas.view.home.InfoCard', {
             me.add(item);
         });
 
-        if(datas.length <= 1) {
-            me.hidePageTrigger();
+        if(datas.length > 1) {
+            me.showPageTrigger();
         }
 
         me.updateLayout(true);
     },
 
-    hidePageTrigger: function() {
+    showPageTrigger: function() {
         var me = this;
-        me.down('#card-prev').hide();
-        me.down('#card-next').hide();
+        me.down('#card-prev').show();
+        me.down('#card-next').show();
     },
 
     showNext: function () {

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

@@ -62,7 +62,6 @@ Ext.define('saas.view.home.charts.MonthSale', {
     onLabelRender: function(text, sprite, config, rendererData, index) {
         var homeModel = Ext.getCmp('home').getViewModel();
         var monthSaleAmount = homeModel.get('month_sale_amount');
-        console.log(text, sprite, config, rendererData, index)
         return text;
     },
 

+ 2 - 2
frontend/saas-web/app/view/money/fundtransfer/FormPanel.js

@@ -119,14 +119,14 @@ Ext.define('saas.view.money.fundtransfer.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }

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

@@ -62,7 +62,7 @@ Ext.define('saas.view.money.fundtransfer.QueryPanel', {
             width: 120,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },

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

@@ -119,14 +119,14 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }

+ 7 - 1
frontend/saas-web/app/view/money/othreceipts/QueryPanel.js

@@ -76,7 +76,13 @@ Ext.define('saas.view.money.othreceipts.QueryPanel', {
             text: '金额',
             xtype: 'numbercolumn',
             dataIndex: 'or_amount',
-            width: 120
+            width: 120,
+            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: 'or_remark',

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

@@ -119,14 +119,14 @@ Ext.define('saas.view.money.othspendings.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }

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

@@ -79,7 +79,7 @@ Ext.define('saas.view.money.othspendings.QueryPanel', {
             width: 120,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },

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

@@ -135,14 +135,14 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             },
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
@@ -236,14 +236,14 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             // },
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
@@ -258,14 +258,14 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             // },
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
@@ -280,14 +280,14 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             // },
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
@@ -303,14 +303,14 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             allowBlank : false,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }

+ 28 - 4
frontend/saas-web/app/view/money/payBalance/QueryPanel.js

@@ -73,18 +73,36 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
             xtype: 'numbercolumn',
             dataIndex: 'pb_pdamount',
             width: 120,
-            hidden:true
+            hidden:true,
+            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: 'pb_pbdamount',
             width: 120,
-            hidden:true
+            hidden:true,
+            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: 'pb_preamount',
             width: 120,
-            hidden:true
+            hidden:true,
+            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: 'pb_discounts',
@@ -95,7 +113,13 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
             xtype: 'numbercolumn',
             dataIndex: 'pb_havebalance',
             width: 120,
-            hidden:true
+            hidden:true,
+            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);
+            },
         }],
         relativeColumn: []
     }

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

@@ -137,14 +137,14 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             },
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
@@ -237,14 +237,14 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             dataIndex: "rbd_amount",
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
@@ -255,14 +255,14 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             ignore:true,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
@@ -273,14 +273,14 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             ignore:true,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
@@ -296,14 +296,14 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             allowBlank : false,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }

+ 7 - 1
frontend/saas-web/app/view/money/recBalance/QueryPanel.js

@@ -79,7 +79,13 @@ Ext.define('saas.view.money.recBalance.QueryPanel', {
             dataIndex: 'rb_rdamount',
             xtype: 'numbercolumn',
             width: 120,
-            hidden: true
+            hidden: true,
+            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);
+            },
         }]
     }
 });

+ 7 - 1
frontend/saas-web/app/view/money/report/AccountBalance.js

@@ -52,7 +52,13 @@ Ext.define('saas.view.money.report.AccountBalance', {
         },{
             text: '账户余额',
             dataIndex: 'pr_code',
-            xtype: 'numbercolumn'
+            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);
+            },
         }, {
             text: '往来单位',
             dataIndex: 'bcode'

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

@@ -76,7 +76,7 @@ Ext.define('saas.view.money.report.VendorCheck', {
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
                 var format = '0.' + xr.join();
             }
         }, {

+ 18 - 10
frontend/saas-web/app/view/purchase/purchase/FormPanel.js

@@ -175,14 +175,14 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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)).fill('0');
+                    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);
                 }
@@ -199,7 +199,7 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     if(v||v==0){
                         return Ext.util.Format.number(v, '0.00');
@@ -216,19 +216,19 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                 hidden:true,
                 editor : {
                     xtype : "numberfield",
-                    decimalPrecision: 8,
+                    decimalPrecision: 3,
                     editable : false
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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)).fill('0');
+                    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);
                 }
@@ -270,14 +270,14 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }
@@ -294,14 +294,14 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }
@@ -310,6 +310,14 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                 text : "关联销售单号", 
                 dataIndex : "pd_salecode", 
                 width : 120.0
+            },{
+                text : "备注", 
+                dataIndex : "sd_remark",
+                width : 250, 
+                items : null,
+                editor : {
+                    xtype : "textfield"
+                },
             }
         ]
     }, {

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

@@ -193,7 +193,13 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             text: '采购数量',
             dataIndex: 'pd_qty',
             xtype: 'numbercolumn',
-            width: 120
+            width: 120,
+            renderer : function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+                var format = '0,000.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            },
         }, {
             text: '交货日期',
             dataIndex: 'pd_delivery',
@@ -203,17 +209,32 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             text: '单价',
             dataIndex: 'pd_price',
             xtype: 'numbercolumn',
-            width: 120
+            width: 120,
+            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: 120
+            width: 120,
+            renderer : function(v) {
+                return Ext.util.Format.number(v, '0');
+            },
         },{
             text: '金额',
             dataIndex: 'pd_total',
             xtype: 'numbercolumn',
-            width: 120
+            width: 120,
+            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: 'pu_remark',

+ 15 - 12
frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js

@@ -159,19 +159,19 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                 allowBlank : false,
                 editor : {
                     xtype : "numberfield",
-                    decimalPrecision: 8,
+                    decimalPrecision: 3,
                     minValue:0
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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)).fill('0');
+                    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);
                 }
@@ -183,19 +183,19 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                 width : 120.0,
                 editor : {
                     xtype : "numberfield",
-                    decimalPrecision: 8,
+                    decimalPrecision: 3,
                     editable : false
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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)).fill('0');
+                    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);
                 }
@@ -241,7 +241,7 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                 width : 120.0,
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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);
                 },
@@ -255,7 +255,10 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                     decimalPrecision: 0,
                     minValue: 0,
                     maxValue: 100
-                }
+                },
+                renderer : function(v) {
+                    return Ext.util.Format.number(v, '0');
+                },
             },{
                 text : "含税金额", 
                 xtype: 'numbercolumn',
@@ -268,14 +271,14 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }
@@ -291,14 +294,14 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }

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

@@ -168,12 +168,24 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
         },{
             text: '单位',
             dataIndex: 'pr_unit',
-            width: 120
+            width: 120,
+            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_inqty',
             xtype:'numbercolumn',
-            width: 120
+            width: 120,
+            renderer : function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+                var format = '0,000.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            },
         },{
             text: '仓库',
             dataIndex: 'pd_whname',
@@ -187,12 +199,21 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
             text: '税率',
             dataIndex: 'pd_taxrate',
             xtype:'numbercolumn',
-            width: 120
+            width: 120,
+            renderer : function(v) {
+                return Ext.util.Format.number(v, '0');
+            },
         },{
             text: '金额',
             dataIndex: 'pd_total',
             xtype:'numbercolumn',
-            width: 120
+            width: 120,
+            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: 'pd_ordercode',

+ 1 - 1
frontend/saas-web/app/view/purchase/purchaseIn/QueryPanelController.js

@@ -157,7 +157,7 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanelController', {
                             renderer : function(v) {
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length)).fill('0');
-                                var format = '0,000.' + xr.join();
+                                var format = '0.' + xr.join();
                                 return Ext.util.Format.number(v, format);
                             },                            
                             align:'end'

+ 12 - 9
frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js

@@ -154,19 +154,19 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                 allowBlank : false,
                 editor : {
                     xtype : "numberfield",
-                    decimalPrecision: 8,
+                    decimalPrecision: 3,
                     minValue:0
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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)).fill('0');
+                    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);
                 }
@@ -223,7 +223,7 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                 width : 120.0,
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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);
                 },
@@ -237,7 +237,10 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                     decimalPrecision: 0,
                     minValue: 0,
                     maxValue: 100
-                }
+                },
+                renderer : function(v) {
+                    return Ext.util.Format.number(v, '0');
+                },
             }, 
             {
                 text : "含税金额", 
@@ -251,14 +254,14 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }
@@ -274,14 +277,14 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }

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

@@ -177,7 +177,13 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
             text: '数量',
             dataIndex: 'pd_inqty',
             xtype:'numbercolumn',
-            width: 120
+            width: 120,
+            renderer : function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+                var format = '0,000.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            },
         },{
             text: '仓库',
             dataIndex: 'pd_whname',
@@ -191,12 +197,21 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
             text: '税率',
             dataIndex: 'pd_taxrate',
             xtype:'numbercolumn',
-            width: 120
+            width: 120,
+            renderer : function(v) {
+                return Ext.util.Format.number(v, '0');
+            },
         },{
             text: '金额',
             dataIndex: 'pd_total',
             xtype:'numbercolumn',
-            width: 120
+            width: 120,
+            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: 'pd_ordercode',

+ 54 - 8
frontend/saas-web/app/view/purchase/report/Purchase.js

@@ -99,54 +99,100 @@ Ext.define('saas.view.purchase.report.Purchase', {
         dataIndex: 'pd_qty',
         xtype: 'numbercolumn',
         summaryType: 'sum',
-        summaryRenderer: function(v) {
+        renderer: function(v) {
             var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
+            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_price',
-        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: '税率',
         dataIndex: 'pd_taxrate',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
     }, {
         text: '金额',
         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);
+        },
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
             var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '不含税单价',
         dataIndex: 'pd_taxprice',
-        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: '不含税金额',
         dataIndex: 'pd_taxtotal',
-        xtype: 'numbercolumn'
+        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);
+        }
     }, {
         text: '收货数量',
         dataIndex: 'pd_acceptqty',
         xtype: 'numbercolumn',
+        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_accepttotal',
-        xtype: 'numbercolumn'
+        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);
+        }
+
     }, {
         text: '备注',
         dataIndex: 'pd_remark'

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

@@ -56,7 +56,7 @@ Ext.define('saas.view.sale.report.Sale', {
         width: 200
     }, {
         text: '业务状态',
-        dataIndex: 'sa_status'
+        dataIndex: 'sa_sendstatus'
     }, {
         text: '业务员编号',
         dataIndex: 'sa_sellercode',
@@ -107,26 +107,44 @@ Ext.define('saas.view.sale.report.Sale', {
         xtype: 'numbercolumn',
         renderer : function(v) {
             var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
+            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)).fill('0');
+            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: '单价',
-        xtype: 'numbercolumn',
         dataIndex: 'sd_price',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
+    }, {
+        text: '不含税单价',
+        dataIndex: 'sd_netprice',
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '税率',
         dataIndex: 'sd_taxrate',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
     }, {//∑金额
         text: '金额',
         xtype: 'numbercolumn',
@@ -135,7 +153,7 @@ Ext.define('saas.view.sale.report.Sale', {
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
             var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
@@ -147,7 +165,7 @@ Ext.define('saas.view.sale.report.Sale', {
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
             var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
@@ -157,7 +175,7 @@ Ext.define('saas.view.sale.report.Sale', {
         xtype: 'numbercolumn',
         renderer : function(v) {
             var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
+            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);
         }

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

@@ -77,36 +77,74 @@ Ext.define('saas.view.sale.report.SaleProfit', {
         dataIndex: 'pr_spec'
     }, {
         text: '单位',
-        xtype: 'numbercolumn',
         dataIndex: 'pr_unit'
     }, {
         text: '数量',
         dataIndex: 'pd_outqty',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        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_sendprice',
-        xtype: 'numbercolumn'
+        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);
+        }
     }, {
         text: '税率%',
         dataIndex: 'pd_taxrate',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
     }, {
         text: '含税金额',
         dataIndex: 'pd_ordertotal',
-        xtype: 'numbercolumn'
+        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);
+        }
     }, {
         text: '成本金额',
         dataIndex: 'pd_total',
-        xtype: 'numbercolumn'
+        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);
+        }
     }, {
         text: '毛利润',
         dataIndex: 'pd_profit',
-        xtype: 'numbercolumn'
+        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);
+        }
     }, {
         text: '毛利率%',
         dataIndex: 'pd_profitpresent',
-        xtype: 'numbercolumn'
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v*100 + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v*100, format);
+        }
     }, {
         text : "备注", 
         dataIndex : "pd_text1",

+ 33 - 13
frontend/saas-web/app/view/sale/sale/FormPanel.js

@@ -52,11 +52,31 @@ Ext.define('saas.view.sale.sale.FormPanel', {
         fieldLabel : "客户名称",
         allowBlank : false
     }, {
-        xtype : "textfield", 
         name : "sa_toplace", 
+        editable:false,
+        xtype : "remotecombo", 
+        storeUrl:'/api/document/address/getCombo',
         fieldLabel : "交货地址", 
+        allowBlank : false, 
         columnWidth : 0.5,
-        allowBlank : false
+        hiddenBtn:false,//true 则会关闭新增按钮功能
+        addHandler:function(b){
+            var document = Ext.create('saas.view.document.kind.Kind',{});
+            var form = this.ownerCmp.ownerCt;
+            this.dialog = form.getController().getView().add({
+                xtype: 'document-kind-childwin',
+                bind: {
+                    title: '新增交货地址'
+                },
+                dataKind:'address',
+                belong:document.etc['address'],
+                _parent:form,
+                _combo:this.ownerCmp,
+                record:null,
+                session: true
+            });
+            this.dialog.show();
+        }
     }, {
         name : "detailGridField", 
         xtype : "detailGridField", 
@@ -131,14 +151,14 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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)).fill('0');
+                    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);
                 }
@@ -154,14 +174,14 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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)).fill('0');
+                    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);
                 }
@@ -173,14 +193,14 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                 width : 120.0,
                 editor : {
                     xtype : "numberfield",
-                    decimalPrecision: 3,
+                    decimalPrecision: 8,
                     minValue:0
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
-                    if(v||v==0){
+                    if(!v){
                         return Ext.util.Format.number(v, '0.00');
                     }else{
                         return Ext.util.Format.number(v, format);
@@ -209,14 +229,14 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                 width : 120.0,
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }
@@ -227,14 +247,14 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                 dataIndex : "sd_nettotal",
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }

+ 35 - 5
frontend/saas-web/app/view/sale/sale/QueryPanel.js

@@ -185,27 +185,57 @@ Ext.define('saas.view.sale.sale.QueryPanel', {
             text: '数量',
             dataIndex: 'sd_qty',
             xtype: 'numbercolumn',
-            width: 120
+            width: 120,
+            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: 'sd_price',
             xtype: 'numbercolumn',
-            width: 120
+            width: 120,
+            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: 'sd_ytqy',
             xtype: 'numbercolumn',
-            width: 120
+            width: 120,
+            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: 'sd_sendqty',
             xtype: 'numbercolumn',
-            width: 120
+            width: 120,
+            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: 'sd_pdqty',
             xtype: 'numbercolumn',
-            width: 120
+            width: 120,
+            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: 'sd_remark',

+ 12 - 9
frontend/saas-web/app/view/sale/saleIn/FormPanel.js

@@ -129,19 +129,19 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                 width : 120.0,
                 editor : {
                     xtype : "numberfield",
-                    decimalPrecision: 8,
+                    decimalPrecision: 3,
                     minValue:0
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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)).fill('0');
+                    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);
                 }
@@ -184,7 +184,7 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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);
                 },
@@ -196,14 +196,14 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                 width : 120.0, 
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }
@@ -217,7 +217,10 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                     decimalPrecision: 0,
                     minValue: 0,
                     maxValue: 100
-                }
+                },
+                renderer : function(v) {
+                    return Ext.util.Format.number(v, '0');
+                },
             },
             {
                 text : "未税金额", 
@@ -225,14 +228,14 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                 dataIndex : "pd_nettotal", 
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                     var format = '0,000.' + xr.join();
                     return Ext.util.Format.number(v, format);
                 }

Some files were not shown because too many files changed in this diff