فهرست منبع

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

rainco 7 سال پیش
والد
کامیت
7e239cacf3
100فایلهای تغییر یافته به همراه1699 افزوده شده و 598 حذف شده
  1. 2 2
      applications/commons/commons-server/src/main/resources/mapper/HomePageMapper.xml
  2. 10 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Address.java
  3. 4 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/AddressController.java
  4. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/AddressMapper.java
  5. 2 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java
  6. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/AddressService.java
  7. 5 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/AddressServiceImpl.java
  8. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  9. 4 2
      applications/document/document-server/src/main/resources/mapper/AddressMapper.xml
  10. 2 2
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  11. 18 9
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  12. 14 1
      applications/money/money-server/src/main/resources/mapper/ProfitdetailMapper.xml
  13. 1 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  14. 0 2
      base-servers/sms/sms-server/pom.xml
  15. 1 1
      base-servers/sms/sms-server/src/main/resources/application.yml
  16. 19 0
      base-servers/sms/sms-server/src/main/resources/config/application-docker-prod.yml
  17. 12 0
      base-servers/sms/sms-server/src/main/resources/config/application-docker-test.yml
  18. 10 0
      base-servers/sms/sms-server/src/main/resources/config/application-docker.yml
  19. 19 6
      frontend/saas-portal-web/src/components/conenter/addenterprise.vue
  20. 17 17
      frontend/saas-portal-web/src/components/conenter/home.vue
  21. 23 12
      frontend/saas-portal-web/static/css/main.css
  22. BIN
      frontend/saas-portal-web/static/img/banner.png
  23. BIN
      frontend/saas-portal-web/static/img/banner@2x@2x.png
  24. BIN
      frontend/saas-portal-web/static/img/feature/blue1@2x.png
  25. BIN
      frontend/saas-portal-web/static/img/feature/blue3@2x.png
  26. BIN
      frontend/saas-portal-web/static/img/feature/for2x.png
  27. BIN
      frontend/saas-portal-web/static/img/feature/formin2x.png
  28. BIN
      frontend/saas-portal-web/static/img/feature/mix1x.png
  29. BIN
      frontend/saas-portal-web/static/img/feature/mix2x.png
  30. BIN
      frontend/saas-portal-web/static/img/feature/mix3x.png
  31. BIN
      frontend/saas-portal-web/static/img/feature/mix4x.png
  32. BIN
      frontend/saas-portal-web/static/img/feature/one2x.png
  33. BIN
      frontend/saas-portal-web/static/img/feature/onemin2x.png
  34. BIN
      frontend/saas-portal-web/static/img/feature/three2x.png
  35. BIN
      frontend/saas-portal-web/static/img/feature/threemin2x.png
  36. BIN
      frontend/saas-portal-web/static/img/feature/tow2x.png
  37. BIN
      frontend/saas-portal-web/static/img/feature/towmin2x.png
  38. BIN
      frontend/saas-portal-web/static/img/feature/yellow2@2x.png
  39. BIN
      frontend/saas-portal-web/static/img/feature/yellow4@2x.png
  40. 456 0
      frontend/saas-web/app/view/core/dbfind/AddMultiDbfindGridPanel.js
  41. 299 0
      frontend/saas-web/app/view/core/dbfind/AddMultiDbfindTrigger.js
  42. 1 1
      frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js
  43. 3 3
      frontend/saas-web/app/view/core/dbfind/MultiDbfindTrigger.js
  44. 105 0
      frontend/saas-web/app/view/core/dbfind/types/ProductAddMultiDbfindTrigger.js
  45. 1 1
      frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js
  46. 1 1
      frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js
  47. 1 1
      frontend/saas-web/app/view/core/dbfind/types/VendorDbfindTrigger.js
  48. 7 0
      frontend/saas-web/app/view/core/form/field/ConMonthField.scss
  49. 82 94
      frontend/saas-web/app/view/core/query/QueryPanel.js
  50. 5 4
      frontend/saas-web/app/view/core/report/ReportPanel.js
  51. 4 1
      frontend/saas-web/app/view/core/report/ReportPanelController.js
  52. 42 0
      frontend/saas-web/app/view/document/address/DataList.js
  53. 2 1
      frontend/saas-web/app/view/document/address/DataListModel.js
  54. 2 2
      frontend/saas-web/app/view/document/bankinformation/DataList.js
  55. 2 2
      frontend/saas-web/app/view/document/bankinformation/Window.js
  56. 1 1
      frontend/saas-web/app/view/document/bom/FormController.js
  57. 2 2
      frontend/saas-web/app/view/document/bom/FormPanel.js
  58. 1 1
      frontend/saas-web/app/view/document/customer/BasePanel.js
  59. 4 4
      frontend/saas-web/app/view/document/customer/FormPanel.js
  60. 4 4
      frontend/saas-web/app/view/document/product/BasePanel.js
  61. 5 5
      frontend/saas-web/app/view/document/product/FormPanel.js
  62. 1 1
      frontend/saas-web/app/view/document/vendor/BasePanel.js
  63. 3 3
      frontend/saas-web/app/view/document/vendor/FormPanel.js
  64. 21 1
      frontend/saas-web/app/view/home/HomeModel.js
  65. 1 1
      frontend/saas-web/app/view/home/charts/MonthSale.js
  66. 3 3
      frontend/saas-web/app/view/home/charts/ProfitDetail.js
  67. 3 3
      frontend/saas-web/app/view/home/infoCardList/Payment.js
  68. 3 3
      frontend/saas-web/app/view/home/infoCardList/PurchaseIn.js
  69. 4 4
      frontend/saas-web/app/view/home/infoCardList/Recment.js
  70. 4 4
      frontend/saas-web/app/view/home/infoCardList/SaleOut.js
  71. 3 3
      frontend/saas-web/app/view/home/infoCardList/UnauditCheckIn.js
  72. 4 4
      frontend/saas-web/app/view/home/infoCardList/UnauditSaleOut.js
  73. 2 2
      frontend/saas-web/app/view/money/fundtransfer/FormPanel.js
  74. 1 1
      frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js
  75. 2 2
      frontend/saas-web/app/view/money/othreceipts/FormPanel.js
  76. 1 1
      frontend/saas-web/app/view/money/othreceipts/FormPanelController.js
  77. 2 2
      frontend/saas-web/app/view/money/othreceipts/QueryPanel.js
  78. 2 2
      frontend/saas-web/app/view/money/othspendings/FormPanel.js
  79. 2 2
      frontend/saas-web/app/view/money/othspendings/FormPanelController.js
  80. 2 2
      frontend/saas-web/app/view/money/othspendings/QueryPanel.js
  81. 10 10
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  82. 2 2
      frontend/saas-web/app/view/money/payBalance/FormPanelController.js
  83. 1 1
      frontend/saas-web/app/view/money/payBalance/QueryPanel.js
  84. 10 10
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  85. 1 1
      frontend/saas-web/app/view/money/recBalance/FormPanelController.js
  86. 1 1
      frontend/saas-web/app/view/money/recBalance/QueryPanel.js
  87. 9 6
      frontend/saas-web/app/view/money/report/AccountBalance.js
  88. 4 2
      frontend/saas-web/app/view/money/report/AccountDetails.js
  89. 13 9
      frontend/saas-web/app/view/money/report/CustomerCheck.js
  90. 8 5
      frontend/saas-web/app/view/money/report/OtherIODetail.js
  91. 118 118
      frontend/saas-web/app/view/money/report/PayDetail.js
  92. 10 6
      frontend/saas-web/app/view/money/report/ProfitDetail.js
  93. 125 124
      frontend/saas-web/app/view/money/report/RecDetail.js
  94. 42 15
      frontend/saas-web/app/view/money/report/TotalPayDetail.js
  95. 39 20
      frontend/saas-web/app/view/money/report/TotalRecDetail.js
  96. 12 7
      frontend/saas-web/app/view/money/report/VendorCheck.js
  97. 16 16
      frontend/saas-web/app/view/money/verification/FormPanel.js
  98. 6 6
      frontend/saas-web/app/view/money/verification/FormPanelController.js
  99. 1 1
      frontend/saas-web/app/view/money/verification/QueryPanel.js
  100. 9 9
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js

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

@@ -126,7 +126,7 @@
         pi_custcode,max(pi_custname) custname,max(ifnull(cu_shortname,'')) shortname  from prodinout left join prodiodetail on pi_id=pd_piid left join customer on cu_id=pi_custid
         where
         pi_class in('出货单', '销售退货单') and pi_statuscode='AUDITED' and DATE_FORMAT(pi_date,'%Y%m')=DATE_FORMAT(CURDATE(),'%Y%m') and prodinout.companyid=#{componyId}
-        GROUP BY pi_custcode,prodinout.companyid order by profit desc  limit 0,4) t
+        GROUP BY pi_custcode,prodinout.companyid order by profit desc  limit 0,5) t
         )five_profit_,
 	  (
 	    #其它的数据
@@ -143,7 +143,7 @@
         pi_custcode,max(pi_custname) custname,prodinout.companyid from prodinout left join prodiodetail on pi_id=pd_piid left join customer on cu_id=pi_custid
          where
         pi_class in('出货单', '销售退货单') and pi_statuscode='AUDITED' and DATE_FORMAT(pi_date,'%Y%m')=DATE_FORMAT(CURDATE(),'%Y%m') and prodinout.companyid=#{componyId}
-        GROUP BY pi_custcode,prodinout.companyid order by profit desc  limit 0,4) b)a2_
+        GROUP BY pi_custcode,prodinout.companyid order by profit desc  limit 0,5) b)a2_
        )
        ) other_profit_
       )

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

@@ -19,6 +19,16 @@ public class Address extends CommonBaseEntity implements Serializable {
 
     private String ad_address;
 
+    private Long ad_default;
+
+    public Long getAd_default() {
+        return ad_default;
+    }
+
+    public void setAd_default(Long ad_default) {
+        this.ad_default = ad_default;
+    }
+
     public String getAd_text1() {
         return ad_text1;
     }

+ 4 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/AddressController.java

@@ -33,6 +33,10 @@ public class AddressController {
         return Result.success();
     }
 
+    @GetMapping("/getDefault")
+    public Result getDefault(){
+        return Result.success(addressService.getDefault());
+    }
 
 
     @PostMapping("/batchDelete")

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

@@ -34,4 +34,6 @@ public interface AddressMapper extends CommonBaseMapper<Address> {
     int getCountFromPurchase(@Param("id") Long id, @Param("companyId") Long companyId);
 
     void setDefault(@Param("id") Long id, @Param("companyId") Long companyId);
+
+    Address getDefault(@Param("companyId") Long companyId);
 }

+ 2 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java

@@ -3,6 +3,7 @@ package com.usoftchina.saas.document.mapper;
 import com.usoftchina.saas.base.mapper.CommonBaseMapper;
 import com.usoftchina.saas.commons.dto.ComboDTO;
 import com.usoftchina.saas.document.entities.Bankinformation;
+import com.usoftchina.saas.page.PageDefault;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -25,7 +26,7 @@ public interface BankinformationMapper extends CommonBaseMapper<Bankinformation>
 
     List<ComboDTO> getCombo(@Param("companyId") Long companyId);
     String selectBankcode(@Param("bk_bankcode") String bk_bankcode, @Param("companyId") Long companyId);
-    Long selectBankId(String bk_bankcode);
+    Long selectBankId(@Param("bk_bankcode") String bk_bankcode, @Param("companyId") Long companyId);
 
     void check(Map<String, Object> map);
 

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/AddressService.java

@@ -19,4 +19,6 @@ public interface AddressService extends CommonBaseService<AddressMapper, Address
     DocBaseDTO saveData(Address address);
 
     void setDefault(Long id);
+
+    Address getDefault();
 }

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

@@ -63,6 +63,11 @@ public class AddressServiceImpl extends CommonBaseServiceImpl<AddressMapper, Add
         getMapper().setDefault(id,BaseContextHolder.getCompanyId());
     }
 
+    @Override
+    public Address getDefault(){
+        return getMapper().getDefault(BaseContextHolder.getCompanyId());
+    }
+
     /**
      * 通过主键删除
      * @param id

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

@@ -95,7 +95,7 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
                 }
             }
 
-            Long id = bankinformationMapper.selectBankId(bankinformation.getBk_bankcode());
+            Long id = bankinformationMapper.selectBankId(bankinformation.getBk_bankcode(), BaseContextHolder.getCompanyId());
             if (bktion != null){
                 if (id.equals(bankinformation.getId())){
                     bankinformationMapper.updateByPrimaryKeySelective(bankinformation);

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

@@ -11,6 +11,7 @@
     <result column="ad_text3" jdbcType="VARCHAR" property="ad_text3" />
     <result column="ad_text4" jdbcType="VARCHAR" property="ad_text4" />
     <result column="ad_text5" jdbcType="VARCHAR" property="ad_text5" />
+    <result column="ad_default" jdbcType="INTEGER" property="ad_address" />
   </resultMap>
   <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.usoftchina.saas.document.entities.Address">
     <result column="ad_address" jdbcType="LONGVARCHAR" property="ad_address" />
@@ -215,7 +216,8 @@
     update address set ad_default = 1 where ad_id=#{id} and companyId=#{companyId};
     update address set ad_default = 0 where ad_id!=#{id} and companyId=#{companyId};
   </update>
-
-
+  <select id="getDefault" parameterType="long" resultType="com.usoftchina.saas.document.entities.Address">
+      SELECT * FROM ADDRESS WHERE AD_DEFAULT = 1 AND COMPANYID = #{companyId}
+  </select>
 
 </mapper>

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

@@ -329,8 +329,8 @@
         bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR} and companyId = #{companyId}
     </select>
 
-  <select id="selectBankId" parameterType="java.lang.String" resultType="java.lang.Long">
-        select bk_id from bankinformation where bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR}
+  <select id="selectBankId" resultType="java.lang.Long">
+        select bk_id from bankinformation where bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR} and companyId = #{companyId}
    </select>
 
   <select id="selectamount" parameterType="java.lang.Long" resultType="java.lang.Double">

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

@@ -226,8 +226,8 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
                     throw new BizException(code, error);
                 }
                 if(amount.doubleValue()<0 && nowbalanceDet.doubleValue()>0){
-                    String msg = BizExceptionCode.MONEY_NOWAMOUNT_POSITIVE.getMessage();
-                    int code = BizExceptionCode.MONEY_NOWAMOUNT_POSITIVE.getCode();
+                    String msg = BizExceptionCode.MONEY_NOWAMOUNT_NEGATIVE.getMessage();
+                    int code = BizExceptionCode.MONEY_NOWAMOUNT_NEGATIVE.getCode();
                     String error = String.format(msg, det.getVd_slkind());
                     throw new BizException(code, error);
                 }
@@ -247,8 +247,8 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
                     throw new BizException(code, error);
                 }
                 if(amount.doubleValue()<0 && nowbalanceDet.doubleValue()>0){
-                    String msg = BizExceptionCode.MONEY_NOWAMOUNT_POSITIVE.getMessage();
-                    int code = BizExceptionCode.MONEY_NOWAMOUNT_POSITIVE.getCode();
+                    String msg = BizExceptionCode.MONEY_NOWAMOUNT_NEGATIVE.getMessage();
+                    int code = BizExceptionCode.MONEY_NOWAMOUNT_NEGATIVE.getCode();
                     String error = String.format(msg, detail.getVcd_slkind());
                     throw new BizException(code, error);
                 }
@@ -274,16 +274,25 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         String kind = verification.getVc_kind();
         subledger.setCompanyId(BaseContextHolder.getCompanyId());
         subledger.setSl_code(verification.getVc_code());
-        kind = transferKind(kind);
-        subledger.setSl_kind(kind);
+
         if(kind.equals("receipts_offset_receivable") || kind.equals("prepaid_offset_payable") ||
                 kind.equals("receivable_offset_payable")){
+
+            /*
+             ['receipts_offset_receivable', '预收冲应收'],
+                ['prepaid_offset_payable', '预付冲应付'],
+                ['receivable_offset_payable', '应收冲应付'],
+                ['receivable_to_receivable', '应收转应收'],
+                ['payable_to_payable', '应付转应付']
+             */
             subledger.setSl_custid(0);
             subledger.setSl_vendid(verification.getVc_vendid());
         }else{
             subledger.setSl_custid(verification.getVc_custid());
             subledger.setSl_vendid(0);
         }
+        kind = transferKind(kind);
+        subledger.setSl_kind(kind);
         Double amount1 = verification.getVc_amount1()==null?new Double(0):verification.getVc_amount1();
         Double amount2 = verification.getVc_amount2()==null?new Double(0):verification.getVc_amount2();
         subledger.setSl_date(verification.getVc_date());
@@ -521,9 +530,9 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
     @Override
     public void deleteDetail2(Long id) {
         if (null != id) {
-            verificationdetailMapper.deleteByParentPrimaryKey(id);
             Verificationdetail verificationdetail = verificationdetailMapper.selectByPrimaryKey(Integer.valueOf(String.valueOf(id)));
-            Verification verification = verificationMapper.selectByPrimaryKey(verificationdetail.getVcd_vcid());
+            Verification verification = verificationMapper.selectByPrimaryKey(verificationdetail.getVcd_vcid().intValue());
+            verificationdetailMapper.deleteByParentPrimaryKey(id);
             DocBaseDTO baseDTO = new DocBaseDTO();
             baseDTO.setId(id);
             baseDTO.setCode(verification.getVc_code());
@@ -800,7 +809,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
 
         DocBaseDTO baseDTO = new DocBaseDTO();
         baseDTO.setId(id);
-        baseDTO.setCode(code);
+        baseDTO.setCode(nowverification.getVc_code());
         baseDTO.setName("Verification");
         //日志
         messageLogService.unAudit(baseDTO);

+ 14 - 1
applications/money/money-server/src/main/resources/mapper/ProfitdetailMapper.xml

@@ -77,6 +77,19 @@ prodinout.companyid= prodiodetail.companyid and prodiodetail.companyid = prodino
 
 	<select id="selectCalculateFields" resultType="string">
 		SELECT ${fields}
+		FROM
+		(
+		SELECT
+		a.pi_custcode,
+		a.pi_custname,
+		a.cu_type,
+		a.cu_sellername,
+		a.saamount,
+		a.netamount,
+		a.costamount,
+		SUM(a.netamount - a.costamount) as profit,
+		(SUM(a.netamount - a.costamount)/IFNULL(netamount,SUM(netamount - costamount))) as profitpresent
+
 		FROM
 		(
 		SELECT
@@ -117,7 +130,7 @@ prodinout.companyid= prodiodetail.companyid and prodiodetail.companyid = prodino
 		a.pi_custcode,
 		a.pi_custname,
 		a.cu_type,
-		a.cu_sellername
+		a.cu_sellername)b
 	</select>
 
 </mapper>

+ 1 - 1
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java

@@ -414,7 +414,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         if (null == con) {
             con = "1=1";
         }
-        if (null == req || StringUtils.isEmpty(req.getMode()) || "Main".equals(req.getMode())) {
+        if (null == req || StringUtils.isEmpty(req.getMode()) || "MAIN".equals(req.getMode())) {
             list = prodInOutListMapper.selectProdInOutListByCondition(con, companyId);
         } else {
             list = prodInOutListMapper.selectProdInOutBycondition(con, companyId);

+ 0 - 2
base-servers/sms/sms-server/pom.xml

@@ -27,12 +27,10 @@
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>sms-dto</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>sms-api</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>

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

@@ -60,7 +60,7 @@ management:
     health:
       show-details: always
 server:
-  port: 8680
+  port: 8700
   tomcat:
     uri-encoding: UTF-8
 info:

+ 19 - 0
base-servers/sms/sms-server/src/main/resources/config/application-docker-prod.yml

@@ -0,0 +1,19 @@
+eureka:
+  instance:
+    hostname: saas-sms-server
+    prefer-ip-address: false
+  client:
+    serviceUrl:
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+spring:
+  rabbitmq:
+    host: 10.10.100.103
+    port: 5672
+    virtual-host: docker
+    username: saas
+    password: select123***
+  redis:
+    host: 10.10.100.173
+    port: 6379
+logging:
+  destination: 10.10.100.160:5000

+ 12 - 0
base-servers/sms/sms-server/src/main/resources/config/application-docker-test.yml

@@ -0,0 +1,12 @@
+eureka:
+  instance:
+    hostname: saas-sms-server-test
+    prefer-ip-address: false
+  client:
+    serviceUrl:
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server-test:8515/eureka/
+spring:
+  rabbitmq:
+    virtual-host: test
+server:
+  port: 8700

+ 10 - 0
base-servers/sms/sms-server/src/main/resources/config/application-docker.yml

@@ -0,0 +1,10 @@
+eureka:
+  instance:
+    hostname: saas-sms-server
+    prefer-ip-address: false
+  client:
+    serviceUrl:
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+spring:
+  rabbitmq:
+    virtual-host: docker

+ 19 - 6
frontend/saas-portal-web/src/components/conenter/addenterprise.vue

@@ -18,7 +18,7 @@
                     <ul>
                         <li style="margin: 0">
                             <span class="qy-biaoti"><span class="xingxing">*</span>公司名称</span>
-                            <input class="inpind" ref="qyname" @change= "spaceName" type="text">
+                            <input class="inpind" ref="qyname" @change= "spaceName" type="text" placeholder="请填写公司全称">
                             <dir class="qy-Tips"><span ref="qyno" style="color:red"></span></dir>
                         </li>
                         <li>
@@ -123,7 +123,7 @@ import { setTimeout } from 'timers';
             spaceName(){
                 let qyname = this.$refs.qyname.value.replace(/\s+/g, "");//公司名字过滤空格
                 if(qyname == ''){
-                    this.$refs.qyno.innerHTML = '企业名不能为空';
+                    this.$refs.qyno.innerHTML = '企业名不能为空';
                 } else {
                     if (this.reg.test(qyname)) {
                         this.$refs.qyno.innerHTML = '不能包含非法字符';
@@ -157,7 +157,7 @@ import { setTimeout } from 'timers';
             yzusername(){
                 let name = this.$refs.name.value.replace(/\s+/g, "");//姓名过滤空格
                 if (name == '') {
-                    this.$refs.usname.innerHTML = '姓名不能为空'
+                    this.$refs.usname.innerHTML = '个人姓名不能为空'
                 } else {
                     if (this.reg.test(name)) {
                         this.$refs.usname.innerHTML = '不能包含非法字符'
@@ -172,7 +172,7 @@ import { setTimeout } from 'timers';
             address(){
                 let address = this.$refs.address.value.replace(/\s+/g, "");//过滤空格
                 if (address == '') {
-                    this.$refs.ress.innerHTML = '地址不能为空'
+                    this.$refs.ress.innerHTML = '企业地址不能为空'
                     this.isaddressname = false
                 } else {
                     this.isaddressname = true
@@ -223,8 +223,10 @@ import { setTimeout } from 'timers';
                 // console.log('邮箱',this.isemail)//邮箱正则
                 if (name == '') {
                     this.$refs.tjtishi.innerHTML = '个人姓名不能为空';
+                    this.remotxt()
                 } else if (qyname == '') {
                     this.$refs.tjtishi.innerHTML = '企业名字不能为空';
+                    this.remotxt()
                 } else {
                     switch (this.qymingzi && this.isaddress && this.isname && this.isspaceName && this.isemail && this.isaddressname) {
                         case this.qymingzi:
@@ -257,27 +259,38 @@ import { setTimeout } from 'timers';
                             })
                             this.$refs.tjtishi.innerHTML = '';
                         } else {
-                            this.$refs.tjtishi.innerHTML = '企业名字已在优软云注册';
+                            this.$refs.tjtishi.innerHTML = '该企业已在优软云注册';
+                            this.remotxt()
                         }
                         break;
                         case this.isaddressname:
                         this.$refs.tjtishi.innerHTML = '企业地址不能为空';
+                        this.remotxt()
                         break;
                         case this.isaddress:
                         this.$refs.tjtishi.innerHTML = '企业地址不能包含非法字符';
+                        this.remotxt()
                         break;
                         case this.isname:
                         this.$refs.tjtishi.innerHTML = '个人姓名不能包含非法字符';
+                        this.remotxt()
                         break;
                         case this.isspaceName:
                         this.$refs.tjtishi.innerHTML = '企业名字不能包含非法字符';
+                        this.remotxt()
                         break;
                         case this.isemail:
-                        this.$refs.tjtishi.innerHTML = '请输入正确邮箱';
+                        this.$refs.tjtishi.innerHTML = '请填写正确的邮箱';
+                        this.remotxt()
                         break;
                     }
                 }
             },
+            remotxt(){
+                setTimeout(()=>{
+                    this.$refs.tjtishi.innerHTML = ' ';
+                },3000)
+            },
             //获取省市区
             selected(data){
                 this.province = data.province.value;

+ 17 - 17
frontend/saas-portal-web/src/components/conenter/home.vue

@@ -85,51 +85,51 @@
       <!-- 特色 -->
       <section id="feature">
         <div class="container ts-worp">
-          <div class="section-title text-center">
+          <div class="section-title text-center" style="margin-bottom: 50px">
             <p class="ts-title">我们的特色</p>
             <p class="ts-text">云端部署 &nbsp;&nbsp; 轻量应用</p>
           </div>
           <!-- 1 -->
           <div class="ts-box">
-            <div class="ts-boximg">
-              <img style="margin-left: 18px;" src="/static/img/feature/mix1x.png" alt="">
+            <div>
+              <img class="left" src="/static/img/feature/for2x.png" alt="">
             </div>
             <div>
-              <img class="ts-img" src="/static/img/feature/blue1@2x.png" alt="">
+              <img class="right" src="/static/img/feature/onemin2x.png" alt="">
             </div>
           </div>
           <!-- 2 -->
-          <div class="ts-box">
+          <div class="ts-box ts-boxtow">
             <div>
-              <img class="ts-img" src="/static/img/feature/yellow2@2x.png" alt="">
+              <img class="left" src="/static/img/feature/towmin2x.png" alt="">
             </div>
-            <div class="ts-boximg">
-              <img style="float: right;" src="/static/img/feature/mix2x.png" alt="">
+            <div>
+              <img class="right" style="margin-right:20px; width:80%" src="/static/img/feature/three2x.png" alt="">
             </div>
           </div>
           <!-- 3 -->
-          <div class="ts-box">
-            <div class="ts-boximg">
-              <img src="/static/img/feature/mix3x.png" alt="">
+          <div class="ts-box" style="padding-bottom:0px">
+            <div>
+              <img class="left" style="width:88%" src="/static/img/feature/one2x.png" alt="">
             </div>
             <div>
-              <img class="ts-img" src="/static/img/feature/blue3@2x.png" alt="">
+              <img class="right" style="margin-top:-30%;" src="/static/img/feature/threemin2x.png" alt="">
             </div>
           </div>
           <!-- 4 -->
-          <div class="ts-box">
+          <div class="ts-box ts-boxtow ts-forbox" style="padding-bottom:0px">
             <div>
-              <img style="width:94%" class="ts-img" src="/static/img/feature/yellow4@2x.png" alt="">
+              <img class="left" style="margin-top:-39%;" src="/static/img/feature/formin2x.png" alt="">
             </div>
-            <div class="ts-boximg">
-              <img style="float: right;" src="/static/img/feature/mix4x.png" alt="">
+            <div>
+              <img class="right" style="margin-right:30px;" src="/static/img/feature/tow2x.png" alt="">
             </div>
           </div>
         </div>
       </section>
 
       <!-- Service section 功能-->
-      <section id="service">
+      <section id="service" style="padding-top: 0">
         <div class="container" style="position: relative;">
           <img class="gn-beijing" src="/static/img/gongneng/xu xian@3x.png" alt="">
           <div class="row">

+ 23 - 12
frontend/saas-portal-web/static/css/main.css

@@ -151,17 +151,32 @@ main > section {
 }
 .ts-box {
     overflow: hidden;
-    position: relative;
-    padding: 150px 0;
-    width: 98%;
+    /* position: relative; */
+    padding: 100px 50px 100px 20px;
+    width: 100%;
+    display: table;
+    background: #F8FAFD;
 }
-.ts-boximg {
-    position: absolute;
-    top: 50px;
+.ts-boxtow {
+    padding: 100px 20px 100px 50px;
+    background: white;
+}
+.ts-box div {
+    display: table-cell;
+    vertical-align: middle;
+}
+.ts-box img {
+    width: 95%;
 }
-.ts-boximg img {
-    width: 65%;
+.ts-forbox img {
+    width: 100%;
 }
+/* .ts-imgmax {
+    width: 100%;
+}
+.ts-imgmin {
+    width: 100%;
+} */
 .ts-title {
     font-family: PingFangSC-Regular !important;
     color: #0D253E !important;
@@ -175,10 +190,6 @@ main > section {
 .right {
     float: right;
 }
-.ts-img {
-    width: 98%;
-    margin-left: 2%;
-}
 .right-text {
     text-align: right;
 }

BIN
frontend/saas-portal-web/static/img/banner.png


BIN
frontend/saas-portal-web/static/img/banner@2x@2x.png


BIN
frontend/saas-portal-web/static/img/feature/blue1@2x.png


BIN
frontend/saas-portal-web/static/img/feature/blue3@2x.png


BIN
frontend/saas-portal-web/static/img/feature/for2x.png


BIN
frontend/saas-portal-web/static/img/feature/formin2x.png


BIN
frontend/saas-portal-web/static/img/feature/mix1x.png


BIN
frontend/saas-portal-web/static/img/feature/mix2x.png


BIN
frontend/saas-portal-web/static/img/feature/mix3x.png


BIN
frontend/saas-portal-web/static/img/feature/mix4x.png


BIN
frontend/saas-portal-web/static/img/feature/one2x.png


BIN
frontend/saas-portal-web/static/img/feature/onemin2x.png


BIN
frontend/saas-portal-web/static/img/feature/three2x.png


BIN
frontend/saas-portal-web/static/img/feature/threemin2x.png


BIN
frontend/saas-portal-web/static/img/feature/tow2x.png


BIN
frontend/saas-portal-web/static/img/feature/towmin2x.png


BIN
frontend/saas-portal-web/static/img/feature/yellow2@2x.png


BIN
frontend/saas-portal-web/static/img/feature/yellow4@2x.png


+ 456 - 0
frontend/saas-web/app/view/core/dbfind/AddMultiDbfindGridPanel.js

@@ -0,0 +1,456 @@
+Ext.define('saas.view.core.dbfind.AddMultiDbfindGridPanel', {
+    extend: 'Ext.grid.Panel',
+    xtype: 'addmultidbfindgridpanel',
+
+    dataUrl: '',
+    dbSearchFields: [],
+    condition:'',
+    selectRecordArr:[],
+
+    selModel: {
+        checkOnly:true,
+        type:'checkboxmodel',
+        ignoreRightMouseSelection : false,
+        listeners:{
+            select:function(selModel,record,c,d){
+                if(!selModel.noChange){
+                    var selectRecordArr = selModel.view.ownerCt.selectRecordArr;
+                    selectRecordArr.push(record);
+                }
+            },
+            deselect:function(selModel,record){
+                if(!selModel.noChange){
+                    var selectRecordArr = selModel.view.ownerCt.selectRecordArr;
+                    var index = -1;
+                    index = selectRecordArr.findIndex(function(f){
+                        return f.id==record.id
+                    });
+                    if(index>-1){
+                        selectRecordArr.splice(index,1);
+                    }
+                }
+            }
+         }
+    },
+    
+    listeners:{
+        boxready: function(grid, width, height, eOpts) {
+            var store = grid.getStore(),
+            gridBodyBox = grid.body.dom.getBoundingClientRect(),
+            gridBodyBoxHeight = gridBodyBox.height;
+
+            var pageSize = Math.floor(gridBodyBoxHeight / 33);
+
+            store.setPageSize(pageSize);
+        },
+        itemdblclick:function( view, record, item, index, e, eOpts ) {
+            var grid = view.ownerCt;
+            var index = -1;
+            index = grid.selectRecordArr.findIndex(function(f){
+                return f.id==record.id
+            });
+            grid.selModel.noChange = true;
+            if(index==-1){
+                grid.selectRecordArr.push(record);
+                grid.selModel.select(grid.selectRecordArr);
+                // grid.store.loadPage(grid.store.currentPage);
+                grid.updateLayout();
+                grid.view.updateLayout();
+                Ext.resumeLayouts();
+            }else{
+                grid.selectRecordArr.splice(index,1);
+                grid.selModel.deselect(record);
+            }
+            grid.selModel.noChange = false;
+        }
+    },
+
+    initComponent: function() {
+        var me = this;
+        me.selectRecordArr = [];
+        if(me.columns){
+            var fields = me.columns.map(column => column.dataIndex);
+            me.store = Ext.create('Ext.data.Store',{
+                fields:fields,
+                autoLoad: true,
+                pageSize: 6,
+                data: [],
+                proxy: {
+                    type: 'ajax',
+                    url: me.dataUrl,
+                    timeout:8000,
+                    actionMethods: {
+                        read: 'GET'
+                    },
+                    reader: {
+                        type: 'json',
+                        rootProperty: 'data.list',
+                        totalProperty: 'data.total',
+                    },
+                    listeners: {
+                        exception: function(proxy, response, operation, eOpts) {
+                            if(operation.success) {
+                                if(response.timedout) {
+                                    saas.util.BaseUtil.showErrorToast('请求超时');
+                                }
+                            }else {
+                                console.error('exception: ', response.responseJson);
+                                saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            }
+                        }
+                    }
+                },
+                listeners: {
+                    beforeload: function (store, op) {
+                        var condition = me.condition;
+                        if (Ext.isEmpty(condition)) {
+                            condition = [];
+                        }
+                        //添加默认条件
+                        if(me.ownerCt.trigger.defaultCondition) {
+                            condition.push({
+                                type: 'condition',
+                                value: me.ownerCt.trigger.defaultCondition
+                            });
+                        }
+                        Ext.apply(store.proxy.extraParams, {
+                            number: op._page,
+                            size: store.pageSize,
+                            condition: JSON.stringify(condition)
+                        });
+                    }
+                }
+            });
+
+            Ext.apply(me, {
+                dockedItems:[{
+                    xtype:'toolbar',
+                    dock:'top',
+                    items:me.getSearchFields().concat([{
+                        xtype:'button',
+                        text:'查询',
+                        handler:function(b){
+                            var grid = me,items=[];
+                            grid.condition = '';
+                            Ext.Array.each(grid.dbSearchFields,function(f) {
+                                var field = b.ownerCt.down('[name='+f.name+']')
+                                items.push(field);
+                            });
+                            grid.condition = grid.getCondition(items);
+                            grid.store.loadPage(1);
+                            grid.selModel.noChange = true;
+                            grid.selModel.deselectAll();
+                            grid.selModel.select(grid.selectRecordArr);
+                            grid.selModel.noChange = false;
+                        }
+                    },'->',{
+                        text:'确定',
+                        cls:'x-formpanel-btn-blue',
+                        handler:function(b){
+                            var grid = me;//grid
+                            var selectRecordArr = grid.selectRecordArr;
+                            var dbfinds = grid.dbfinds;
+                            //点开放大镜的行
+                            var mainGrid = grid.dbfindtrigger.column.ownerCt.ownerCt;
+                            var rec = mainGrid.selModel.getLastSelected();
+                            var nowRec = mainGrid.store.getData().getByKey(rec.id);
+                            var v = '';
+                            Ext.Array.each(selectRecordArr,function(record,_index) {
+                                    v = v + record.get(dbfinds[0].from)+','
+                            });
+                            if(v.length>0){
+                                nowRec.set(dbfinds[0].to,v.substring(0,v.length-1));
+                            }
+                            mainGrid.up('detailGridField').fireEvent('edit');
+                            grid.ownerCt.close();
+                        }
+                    },{
+                        xtype:'button',
+                        text:'新增',
+                        handler:function(b){
+                            var grid = me;
+                            var trigger = grid.ownerCt.trigger;
+                            saas.util.BaseUtil.openTab(trigger.addXtype, '新增'+trigger.addTitle,trigger.addXtype + '_add');
+                        },
+                        listeners:{
+                            afterrender:function(b){
+                                var grid = me;
+                                var trigger = grid.ownerCt.trigger;
+                                if(!trigger.addXtype||trigger.addXtype==''){
+                                    b.hide();
+                                }
+                            }
+                        }
+                    }])
+                },{
+                    xtype: 'pagingtoolbar',
+                    dock: 'bottom',
+                    displayInfo: true,
+                    height:32,
+                    style:'padding: 0;',
+                    store: me.store,
+                    items:[{
+                        xtype:'checkbox',
+                        id:'showSelectRecord',
+                        boxLabel:'已选中数据',
+                        handler:function(b){
+                            var grid = me;
+                            if(b.checked){
+                                grid.store.loadData(grid.selectRecordArr);
+                                grid.selModel.noChange = true;
+                                grid.selModel.deselectAll();
+                                grid.selModel.select(grid.selectRecordArr);
+                                grid.selModel.noChange = false;
+                                //刷新展示数据
+                                var dataCount = grid.selectRecordArr.length,msg;
+                                var display = b.ownerCt.child('#displayItem');
+                                if (dataCount === 0) {
+                                    msg = b.ownerCt.emptyMsg;
+                                } else {
+                                    msg = Ext.String.format(
+                                        b.ownerCt.displayMsg,
+                                        1,
+                                        dataCount,
+                                        dataCount
+                                    );
+                                }
+                                display.setText(msg);
+                                b.ownerCt.child('#inputItem').setValue(1);
+                                b.ownerCt.child("#afterTextItem").setText('页,共'+dataCount+'页');
+                            }else{
+                                grid.selModel.noChange = true;
+                                grid.selModel.deselectAll();
+                                grid.selModel.select(grid.selectRecordArr);
+                                grid.selModel.noChange = false;
+                                grid.store.loadPage(1);
+                            }
+                        }
+                    }],
+                    moveFirst: function() {
+                        if(Ext.getCmp('showSelectRecord').checked==false){
+                            if (this.fireEvent('beforechange', this, 1) !== false) {
+                                this.store.loadPage(1);
+                                this.ownerCt.selModel.noChange = true;
+                                this.ownerCt.selModel.deselectAll();
+                                this.ownerCt.selModel.select(this.ownerCt.selectRecordArr);
+                                this.ownerCt.selModel.noChange = false;
+                                return true;
+                            }
+                        }
+                        return false;
+                    },
+                    movePrevious: function() {
+                        var me = this,
+                            store = me.store,
+                            prev = store.currentPage - 1;
+                        if(Ext.getCmp('showSelectRecord').checked==false){
+                            if (prev > 0) {
+                                if (me.fireEvent('beforechange', me, prev) !== false) {
+                                    store.previousPage();
+                                    this.ownerCt.selModel.noChange = true;
+                                    this.ownerCt.selModel.deselectAll();
+                                    this.ownerCt.selModel.select(this.ownerCt.selectRecordArr);
+                                    this.ownerCt.selModel.noChange = false;
+                                    return true;
+                                }
+                            }
+                        }
+                        return false;
+                    },
+                    moveNext: function() {
+                        var me = this,
+                            store = me.store,
+                            total = me.getPageData().pageCount,
+                            next = store.currentPage + 1;
+                        if(Ext.getCmp('showSelectRecord').checked==false){
+                            if (next <= total) {
+                                if (me.fireEvent('beforechange', me, next) !== false) {
+                                    store.nextPage();
+                                    this.ownerCt.selModel.noChange = true;
+                                    this.ownerCt.selModel.deselectAll();
+                                    this.ownerCt.selModel.select(this.ownerCt.selectRecordArr);
+                                    this.ownerCt.selModel.noChange = false;
+                                    return true;
+                                }
+                            }
+                        }
+                        return false;
+                    },
+                    moveLast: function() {
+                        var me = this,
+                            last = me.getPageData().pageCount;
+                        if(Ext.getCmp('showSelectRecord').checked==false){
+                            if (me.fireEvent('beforechange', me, last) !== false) {
+                                me.store.loadPage(last);
+                                this.ownerCt.selModel.noChange = true;
+                                this.ownerCt.selModel.deselectAll();
+                                this.ownerCt.selModel.select(this.ownerCt.selectRecordArr);
+                                this.ownerCt.selModel.noChange = false;
+                                return true;
+                            }
+                        }
+                        return false;
+                    },
+                    doRefresh: function() {
+                        var me = this,
+                            store = me.store,
+                            current = store.currentPage;
+                        if(Ext.getCmp('showSelectRecord').checked==false){
+                            if (me.fireEvent('beforechange', me, current) !== false) {
+                                store.loadPage(current);
+                                this.ownerCt.selModel.noChange = true;
+                                this.ownerCt.selModel.deselectAll();
+                                this.ownerCt.selModel.select(this.ownerCt.selectRecordArr);
+                                this.ownerCt.selModel.noChange = false;
+                                return true;
+                            }
+                        }
+                        return false;
+                    },
+                    updateInfo: function() {
+                        var me = this,
+                            displayItem = me.child('#displayItem'),
+                            store = me.store,
+                            pageData = me.getPageData(),
+                            count, msg;
+                        if (displayItem) {
+                            count = store.getCount();
+                            if (count === 0) {
+                                msg = me.emptyMsg;
+                            } else {
+                                msg = Ext.String.format(me.displayMsg, pageData.fromRecord, pageData.toRecord, pageData.total);
+                            }
+                            displayItem.setText(msg);
+                        }
+                    }
+                }]
+            });
+        }
+        me.callParent(arguments);
+    },
+
+    getSearchFields: function() {
+        var me = this,
+        searchFields = me.dbSearchFields;
+
+        Ext.Array.each(searchFields, function(f) {
+            f.enableKeyEvents = true;
+            f.listeners = {
+                keydown: function(th, e, eOpts) {
+                    if(e.keyCode == 13) {
+                        me.condition = '', items = [];
+                        Ext.Array.each(searchFields,function(f) {
+                            var field = th.ownerCt.down('[name='+f.name+']')
+                            items.push(field);
+                        });
+                        me.condition = me.getCondition(items);
+                        me.store.loadPage(1);
+                    }
+                }
+            }
+        });
+
+        return searchFields;
+    },
+
+     /**
+     * 获得过滤条件
+     */
+    getCondition: function(items) {
+        var me = this,
+        conditions = [];
+
+        for(var i = 0; i < items.length; i++) {
+            var item = items[i];
+            var field = item.name,
+            func = item.getCondition,
+            value = item.value,
+            condition;
+
+            if(value&&value!=''){
+                if(typeof func == 'function') {
+                    condition = {
+                        type: 'condition',
+                        value: func(value)
+                    }
+                }else {
+                    var xtype = item.xtype || 'textfield',
+                    type = item.fieldType || me.getDefaultFieldType(xtype),
+                    operation = item.operation || me.getDefaultFieldOperation(xtype),
+                    conditionValue = me.getConditionValue(xtype, value);
+        
+                    if(!conditionValue) {
+                        continue;
+                    }
+                    condition = {
+                        type: type,
+                        field: field,
+                        operation: operation,
+                        value: conditionValue
+                    }
+                }
+                conditions.push(condition);
+            }
+        };
+        return conditions;
+    },
+
+    getDefaultFieldType: function(xtype) {
+        var type;
+
+        if(Ext.Array.contains(['numberfield'], xtype)) {
+            type = 'number';
+        }else if(Ext.Array.contains(['datefield', 'condatefield'], xtype)) {
+            type = 'date';
+        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo', 'radiofield', 'radio'], xtype)) {
+            type = 'enum';
+        }else {
+            type = 'string';
+        }
+
+        return type;
+    },
+
+    getDefaultFieldOperation: function(xtype) {
+        var operation;
+
+        if(Ext.Array.contains(['numberfield'], xtype)) {
+            operation = '=';
+        }else if(Ext.Array.contains(['datefield'], xtype)) {
+            operation = '=';
+        }else if(Ext.Array.contains(['condatefield'], xtype)) {
+            operation = 'between';
+        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo'], xtype)) {
+            operation = 'in';
+        }else {
+            operation = 'like';
+        }
+
+        return operation;
+    },
+
+    /**
+     * 处理部分字段值
+     */
+    getConditionValue: function(xtype, value) {
+        var conditionValue;
+        if(xtype == 'datefield') {
+            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
+        }else if(xtype == 'condatefield') {
+            var from = value.from,
+            to = value.to;
+
+            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d 00:00:00') + ',' + Ext.Date.format(new Date(to), 'Y-m-d 23:59:59');
+        }else if(xtype == 'combobox' || xtype == 'combo') {
+            conditionValue = '\'' + value + '\'';
+        }else if(xtype == 'multicombo') {
+            conditionValue = value.map(function(v) {
+                return '\'' + v.value + '\'';
+            }).join(',');
+        }else {
+            conditionValue = value;
+        }
+
+        return conditionValue;
+    }
+});

+ 299 - 0
frontend/saas-web/app/view/core/dbfind/AddMultiDbfindTrigger.js

@@ -0,0 +1,299 @@
+/**
+ *  选中的数据会按照主字段,号隔开
+ */
+Ext.define('saas.view.core.dbfind.AddMultiDbfindTrigger', {
+	extend: 'Ext.form.ComboBox',
+	alias: 'widget.addmultidbfindtrigger',
+	triggerCls: 'x-form-search-trigger',
+    queryMode: 'local',
+    displayField: 'dispaly',
+    valueField: 'value',
+    triggerCls: 'x-form-search-trigger',
+    minChars:1, // 设置用户输入字符多少时触发查询
+    tpl: '',
+    enableKeyEvents:true,
+    initComponent:function() {
+        var me = this;
+        me.store=Ext.create('Ext.data.Store', {
+            fields: ['display','value'],
+            data : [{
+                'display':me.value,
+                'value':me.value
+            }]
+        });
+        this.callParent();
+    },
+    //输入值之后进行模糊查询
+    doQuery: function(queryString, forceAll, rawQuery) {
+        if(!this.fireEvent('beforequery', this)) {
+            return;
+        };
+    	queryString = queryString || '';
+    	var me = this;
+        me.judge(me);
+        var field=[];
+        var sfield='';
+        var dbfinds=me.dbfinds;
+        var dbtpls=me.dbtpls;
+        me.lastQueryValue=queryString;
+        if(queryString.trim()==''){
+            me.collapse( );
+        }else{
+            if(!dbfinds||!dbtpls){
+                me.collapse( );
+            }else{                   
+                //加载tpl模板
+                if(dbtpls.length>0){
+                    var span="";
+                    var width=0;
+                    for(var i=0;i<dbtpls.length;i++){
+                        if(i==0){
+                            span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;">{'+dbtpls[i].field+'}</span>';//display:block;
+                        }else{
+                            span=span+'<span style="padding:0 0 0 20px;width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;">{'+dbtpls[i].field+'}</span>';
+                        }
+                        if(dbtpls[i].dbField=="true"){
+                            me.searchFieldArray=dbtpls[i].field;
+                        }
+                        width=width+dbtpls[i].width+20;
+                        field.push(dbtpls[i].field);
+                        sfield=sfield+dbtpls[i].field+',';
+                    }
+                    me.defaultListConfig.minWidth=width+10;
+                    me.defaultListConfig.maxHeight=210;
+                    me.defaultListConfig.autoScroll=true;
+                    me.searchField=sfield.substring(0,sfield.length-1);
+                    me.tpl=Ext.create('Ext.XTemplate',
+                            '<ul style="padding-left: 0px;"><tpl for=".">',
+                            '<li role="option" class="x-boundlist-item" style="list-style:none;">' ,
+                            '<div style="height:30px;">',
+                            ''+span+'',
+                            '</li>',
+                        '</tpl></ul>'
+                    );
+                    me.store.setFields(field);
+                }
+            }
+            //加载数据
+            var data,dbCondition=[];
+            if(me.dbfinds){
+                var dbtplcondition = "";
+                for (let index = 0; index < dbfinds.length; index++) {
+                    var item = dbfinds[index].from;
+                    if(!dbfinds[index].ignore){
+                        dbtplcondition+= "upper("+item+") like '%"+queryString.toUpperCase()+"%' or ";
+                    }
+                }
+                dbtplcondition = "(" + dbtplcondition.substring(0,dbtplcondition.length-4) + ")";
+                if(dbtplcondition.length>0){
+                    dbCondition = [{
+                        type: 'condition',
+                        value:dbtplcondition
+                    }];
+                }
+            }
+            //添加默认条件
+            if(me.defaultCondition) {
+                dbCondition.push({
+                    type: 'condition',
+                    value: me.defaultCondition
+                });
+            }
+            Ext.Ajax.request({
+                url: me.dataUrl,
+                params: {
+                    number: 1,
+                    size: 10,
+                    condition:JSON.stringify(dbCondition),
+                    page: 1,
+                    start: 0,
+                    limit: 10
+                },
+                method: 'GET',
+                success: function(response, opts) {
+                    data = Ext.decode(response.responseText);
+                    data = data.data?data.data.list:[];
+                    if(data!=null && data.length>0 && me.store && field.length>0){
+                        me.store.loadData(data,false);
+                        me.expand();
+                    }else{
+                        me.store.removeAll();
+                        me.collapse();
+                    }
+                },
+                failure: function(response, opts) {}
+            });                
+        }
+        return true;
+    },
+    onTriggerClick:function(f){
+        if(!this.fireEvent('beforetriggerclick', this)) {
+            return;
+        };
+        f.blur(f);
+        //判断dbfindtrigger归属
+        f.judge(f);
+        var panel = f.up('core-tab-panel'),panelEl;
+        if(!f.column&&f.ownerCt.ownerCt.id.indexOf('window-')>-1){
+            panelEl = f.ownerCt.ownerCt.getEl();
+        }else{
+            panelEl = panel.getEl()
+        }
+        var box = panelEl.getBox();
+        var height = box.height;
+        var width = box.width;
+        var win = panel.add(Ext.create('Ext.window.Window', {   
+            cls:'x-window-dbfind', 
+            trigger:f,
+            belong:f.ownerCt,  
+            modal:true,
+            height: height * 0.8,
+            width: width * 0.8,
+            title: '查找' + f.addTitle,
+            scrollable: true,
+            bodyPadding: 10,
+            constrain: true,
+            closable: true,
+            layout:'fit',
+            renderTo:Ext.getCmp('main-tab-panel').getActiveTab().getEl(),
+            items:[{
+                xtype:'addmultidbfindgridpanel',
+                columns: f.dbColumns,
+                dataUrl: f.dataUrl,
+                dbfinds: f.dbfinds,
+                belong: f.belong,
+                dbSearchFields:f.dbSearchFields?f.dbSearchFields:[],
+                dbfindtrigger:f
+            }]
+        }));
+        win.show();
+    },
+
+    listeners: {
+        // blur:function(f,e){
+        //     var me = f,data;
+        //     var dbfinds = me.dbfinds;
+        //     if(f.value&&f.value!=''){
+        //         //添加默认条件
+        //         var searchField = null;
+        //         var dbCondition = [];
+        //         if(me.defaultCondition) {
+        //             dbCondition.push({
+        //                 type: 'condition',
+        //                 value: me.defaultCondition
+        //             });
+        //         }
+        //         for (let index = 0; index < dbfinds.length; index++) {
+        //             var item = dbfinds[index].to;
+        //             if(item==me.name){
+        //                 searchField = dbfinds[index].from;
+        //             }
+        //         }
+        //         dbCondition.push({
+        //             type: 'condition',
+        //             value: searchField + "='"+me.value+"'"
+        //         });
+        //         Ext.Ajax.request({
+        //             url: me.dataUrl,
+        //             async:false,
+        //             params: {
+        //                 number: 1,
+        //                 size: 1,
+        //                 condition:JSON.stringify(dbCondition),
+        //                 page: 1,
+        //                 start: 0,
+        //                 limit: 10
+        //             },
+        //             method: 'GET',
+        //             success: function(response, opts) {
+        //                 data = Ext.decode(response.responseText);
+        //                 data = data.data?data.data.list:[];
+        //             },
+        //             failure: function(response, opts) {}
+        //         }); 
+        //     }
+        //     if(!f.value||f.value==''||data.length>1||data.length==0){
+        //         if(dbfinds&&dbfinds.length>0){
+        //             if(me.belong=='grid'){
+        //                 for (let index = 0; index < dbfinds.length; index++) {
+        //                     var item = dbfinds[index];
+        //                     var rec = me.column.ownerCt.ownerCt.selModel.getLastSelected();
+        //                     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);
+        //                     }
+        //                     if(nowRec.modified){
+        //                         delete nowRec.modified[item.to];
+        //                     }
+        //                     if(JSON.stringify(nowRec.modified)=="{}"){
+        //                         nowRec.dirty = false
+        //                     }
+        //                     if(me.name==item.to){
+        //                         me.column.getEditor().setValue('');
+        //                     }
+        //                 }
+        //             }
+        //         }
+        //     }else if(data.length==1){
+        //         if(dbfinds&&dbfinds.length>0){
+        //             if(me.belong=='grid'){
+        //                 for (let index = 0; index < dbfinds.length; index++) {
+        //                     var item = dbfinds[index];
+        //                     var rec = me.column.ownerCt.ownerCt.selModel.getLastSelected();
+        //                     var nowRec = me.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
+        //                     nowRec.set(item.to,data[0][item.from]);
+        //                     if(me.name==item.to){
+        //                         me.column.getEditor().setValue(data[0][item.from]);
+        //                     }
+        //                 }
+        //             }
+        //         }
+        //     }
+        // },
+        select:function(combo,record,eOpts){
+            var me = combo;
+            var dbfinds = me.dbfinds;
+            if(dbfinds&&dbfinds.length>0){
+                if(me.belong=='grid'){
+                    for (let index = 0; index < dbfinds.length; index++) {
+                        var item = dbfinds[index];
+                        var rec = me.column.ownerCt.ownerCt.selModel.getLastSelected();
+                        var nowRec = me.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
+                        nowRec.set(item.to,record.get(item.from));
+                        if(me.name==item.to){
+                            me.column.getEditor().setValue(record.get(item.from));
+                        }
+                    }
+                }else if(me.belong=='form'){
+                    for (let index = 0; index < dbfinds.length; index++) {
+                        var item = dbfinds[index];
+                        var field = me.ownerCt.down('[name='+item.to+']');
+                        if(field){
+                            var val = record.get(item.from);
+                            if(field.xtype=='dbfindtrigger'){
+                                field.setRawValue(val);
+                                field.value = val;
+                                field.lastTriggerValue=val;
+                            }else{
+                                field.setValue(val);
+                            }    
+                        }
+                    }
+                }
+            }
+        }
+    },
+
+    judge:function(f){
+        if(f.ownerCt.xtype.trim().toUpperCase().indexOf('QUERYFORMPANEL')>-1){
+            f.belong = 'form';
+            return f.ownerCt.ownerCt
+        }else if(f.ownerCt.xtype.trim().toUpperCase().indexOf('FORMPANEL')>-1){
+            f.belong = 'form';
+            return f.ownerCt
+        }else if(f.column){
+            f.belong = 'grid';
+            return f.column.ownerCt.ownerCt.ownerCt
+        }
+    }
+});

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

@@ -209,7 +209,7 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
                 }
                 dbCondition.push({
                     type: 'condition',
-                    value: searchField + " like '%"+me.value+"%'"
+                    value: searchField + "='"+me.value+"'"
                 });
                 Ext.Ajax.request({
                     url: me.dataUrl,

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

@@ -148,8 +148,8 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
             trigger:f,
             belong:f.ownerCt,  
             modal:true,
-            height: '80%',
-            width: '80%',
+            height: height * 0.8,
+            width: width * 0.8,
             title: '查找' + f.addTitle,
             scrollable: true,
             bodyPadding: 10,
@@ -192,7 +192,7 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
                 }
                 dbCondition.push({
                     type: 'condition',
-                    value: searchField + " like '%"+me.value+"%'"
+                    value: searchField + "='"+me.value+"'"
                 });
                 Ext.Ajax.request({
                     url: me.dataUrl,

+ 105 - 0
frontend/saas-web/app/view/core/dbfind/types/ProductAddMultiDbfindTrigger.js

@@ -0,0 +1,105 @@
+/**
+ * 物料资料放大镜(多选)
+ */
+Ext.define('saas.view.core.dbfind.types.ProductAddMultiDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.AddMultiDbfindTrigger',
+    xtype: 'productAddMultiDbfindTrigger',
+
+    //数据接口
+    dataUrl: '/api/document/product/list',
+    addXtype: 'document-product-formpanel',
+    addTitle: '物料资料',
+    //联想设置
+    dbtpls: [{
+        field: 'pr_code',
+        width: 150
+    }, {
+        field: 'pr_detail',
+        width: 200
+    }],
+    defaultCondition: "pr_statuscode='ENABLE'",
+    dbSearchFields: [{
+        emptyText: '输入物料编号、名称或规格',
+        width: 200,
+        xtype: "textfield",
+        name: "search",
+        allowBlank: true,
+        width:300,
+        getCondition: function (v) {
+            return "(upper(pr_code) like '%" + v.toUpperCase() + "%' or upper(pr_detail) like '%" + v.toUpperCase() + "%' or upper(pr_spec) like '%" + v.toUpperCase() + "%')";
+        }
+    }],
+    //窗口列设置
+    dbColumns: [{
+        text: "物料ID",
+        hidden: true,
+        dataIndex: "id"
+    }, {
+        text: "物料编号",       
+        dataIndex: "pr_code",
+        width: 150
+    },{
+        text: "类型",
+        dataIndex: "pr_kind",
+        width: 110
+    },{
+        text: "物料名称",
+        width: 200,
+        dataIndex: "pr_detail"
+    }, {
+        text : "型号", 
+        dataIndex : "pr_orispeccode", 
+        width : 150.0
+    }, {
+        text : "规格", 
+        dataIndex : "pr_spec", 
+        width : 150.0
+    },{
+        text: "品牌",
+        dataIndex: "pr_brand",
+        width: 110
+    },{
+        text: "库存",
+        dataIndex: "po_onhand",
+        width: 110,
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+    },{
+        text: "单位",
+        dataIndex: "pr_unit",
+        width: 80
+    }, {
+        text: "采购提前期",
+        dataIndex: "pr_leadtime",
+        hidden: true
+    }, {
+        text: "仓库id",
+        dataIndex: "pr_whid",
+        hidden: true
+    }, {
+        text: "仓库编号",
+        dataIndex: "pr_whcode",
+        hidden: true
+    }, {
+        text: "仓库",
+        dataIndex: "pr_whname",
+        width: 200,
+        hidden: true
+    }, {
+        text: "最新采购单价",
+        dataIndex: "pr_purcprice",
+        xtype: 'numbercolumn',
+        hidden:true
+    }, {
+        text: "最新出货单价",
+        dataIndex: "pr_saleprice",
+        xtype: 'numbercolumn',
+        hidden:true
+    }]
+
+});

+ 1 - 1
frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js

@@ -61,7 +61,7 @@ Ext.define('saas.view.core.dbfind.types.ProductDbfindTrigger', {
         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,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     },{

+ 1 - 1
frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js

@@ -68,7 +68,7 @@ Ext.define('saas.view.core.dbfind.types.ProductMultiDbfindTrigger', {
         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,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     },{

+ 1 - 1
frontend/saas-web/app/view/core/dbfind/types/VendorDbfindTrigger.js

@@ -61,7 +61,7 @@ Ext.define('saas.view.core.dbfind.types.VendorDbfindTrigger', {
             }
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {

+ 7 - 0
frontend/saas-web/app/view/core/form/field/ConMonthField.scss

@@ -0,0 +1,7 @@
+.x-conmonthfield > div > div > div > div > div:nth-child(1) > div > div {
+    border-right: none;
+    border-radius: 4px 0 0 4px;
+}
+.x-conmonthfield > div > div > div > div > div:nth-child(2) > div > div {
+    border-radius: 0 4px 4px 0;
+}

+ 82 - 94
frontend/saas-web/app/view/core/query/QueryPanel.js

@@ -146,120 +146,99 @@ Ext.define('saas.view.core.query.QueryPanel', {
     /**
      * 获得过滤条件
      */
-    getConditions: function(moreQuery) {
+    getConditions: function() {
         var me = this,
-        formItems = me.queryFormItems,
-        moreQueryFormItems = me.moreQueryFormItems,
+        formItems = me.items.items[0].items.items,
         viewModel = me.getViewModel(),
         viewModelData = viewModel.getData(),
         bindItems = viewModelData['form'],
-        moreItems = viewModelData['moreForm'],
         condition,
         conditions = [];
 
-        if(moreQuery) {
-            for(k in moreItems) {
-                var item = Ext.Array.findBy(moreQueryFormItems, function(i) {
-                    return i.name == k;
-                });
-                var field = item.name,
-                func = item.getCondition,
-                value = moreItems[k],
-                condition;
-    
-                if(value&&value!=''){
-                    if(typeof func == 'function') {
-                        condition = {
-                            type: 'condition',
-                            value: func(value)
-                        }
-                    }else {
-                        var xtype = item.xtype || 'textfield',
-                        type = item.fieldType || me.getDefaultFieldType(xtype),
-                        operation = item.operation || me.getDefaultFieldOperation(xtype),
-                        conditionValue = me.getConditionValue(xtype, value);
-            
-                        if(!conditionValue) {
-                            continue;
-                        }
-                        condition = {
-                            type: type,
-                            field: field,
-                            operation: operation,
-                            value: conditionValue
-                        }
+        for(k in bindItems) {
+            var item = Ext.Array.findBy(formItems, function(i) {
+                return i.name == k;
+            });
+            var field = item.name,
+            func = item.getCondition,
+            value = bindItems[k],
+            condition;
+
+            if(value&&value!=''){
+                if(typeof func == 'function') {
+                    condition = {
+                        type: 'condition',
+                        value: func(value)
                     }
-                    conditions.push(condition);
-                }
-            }
-        }else {
-            for(k in bindItems) {
-                var item = Ext.Array.findBy(formItems, function(i) {
-                    return i.name == k;
-                });
-                var field = item.name,
-                func = item.getCondition,
-                value = bindItems[k],
-                condition;
-    
-                if(value&&value!=''){
-                    if(typeof func == 'function') {
-                        condition = {
-                            type: 'condition',
-                            value: func(value)
-                        }
-                    }else {
-                        var xtype = item.xtype || 'textfield',
-                        type = item.fieldType || me.getDefaultFieldType(xtype),
-                        operation = item.operation || me.getDefaultFieldOperation(xtype),
-                        conditionValue = me.getConditionValue(xtype, value);
-            
-                        if(!conditionValue) {
-                            continue;
-                        }
-                        condition = {
-                            type: type,
-                            field: field,
-                            operation: operation,
-                            value: conditionValue
-                        }
+                }else {
+                    var type = item.fieldType || me.getDefaultFieldType(item),
+                    operation = item.operation || me.getDefaultFieldOperation(item),
+                    conditionValue = me.getConditionValue(item, value);
+        
+                    if(!conditionValue) {
+                        continue;
+                    }
+                    condition = {
+                        type: type,
+                        field: field,
+                        operation: operation,
+                        value: conditionValue
                     }
-                    conditions.push(condition);
                 }
+                conditions.push(condition);
             }
         }
 
         return conditions;
     },
 
-    getDefaultFieldType: function(xtype) {
-        var type;
+    /**
+     * 只要arr1和arr2中存在相同项即返回真
+     */
+    isContainsAny: function (arr1, arr2) {
+        for (var i = 0; i < arr2.length; i++) {
+            var a2 = arr2[i];
+            if (!!arr1.find(function (a1) {
+                    return a1 == a2
+                })) {
+                return true;
+            }
+        }
+        return false;
+    },
 
-        if(Ext.Array.contains(['numberfield'], xtype)) {
+    getDefaultFieldType: function (field) {
+        var me = this,
+            xtypes = field.getXTypes().split('/'),
+            type;
+
+        if (me.isContainsAny(xtypes, ['numberfield'])) {
             type = 'number';
-        }else if(Ext.Array.contains(['datefield', 'condatefield'], xtype)) {
+        } else if (me.isContainsAny(xtypes, ['datefield', 'condatefield', 'conmonthfield'])) {
             type = 'date';
-        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo', 'radiofield', 'radio'], xtype)) {
+        } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
+            type = 'enum';
+        } else if (me.isContainsAny(xtypes, ['combobox', 'multicombo', 'combo', 'radiofield', 'radio'])) {
             type = 'enum';
-        }else {
+        } else {
             type = 'string';
         }
 
         return type;
     },
 
-    getDefaultFieldOperation: function(xtype) {
-        var operation;
+    getDefaultFieldOperation: function (field) {
+        var me = this,
+            xtypes = field.getXTypes().split('/'),
+            operation;
 
-        if(Ext.Array.contains(['numberfield'], xtype)) {
-            operation = '=';
-        }else if(Ext.Array.contains(['datefield'], xtype)) {
+        if (me.isContainsAny(xtypes, ['numberfield', 'datefield', 'dbfindtrigger'])) {
             operation = '=';
-        }else if(Ext.Array.contains(['condatefield'], xtype)) {
+        } else if (me.isContainsAny(xtypes, ['condatefield', 'conmonthfield'])) {
             operation = 'between';
-        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo'], xtype)) {
+        } else if (me.isContainsAny(xtypes, ['multidbfindtrigger', 'combobox', 'multicombo', 'combo'])) {
             operation = 'in';
-        }else {
+        } else {
             operation = 'like';
         }
 
@@ -269,22 +248,31 @@ Ext.define('saas.view.core.query.QueryPanel', {
     /**
      * 处理部分字段值
      */
-    getConditionValue: function(xtype, value) {
-        var conditionValue;
-        if(xtype == 'datefield') {
+    getConditionValue: function (field, value) {
+        var me = this,
+            xtypes = field.getXTypes().split('/'),
+            conditionValue;
+        if (me.isContainsAny(xtypes, ['datefield'])) {
             conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
-        }else if(xtype == 'condatefield') {
+        } else if (me.isContainsAny(xtypes, ['conmonthfield'])) {
             var from = value.from,
-            to = value.to;
+                to = value.to;
+
+            conditionValue = from + ',' + to;
+        } else if (me.isContainsAny(xtypes, ['condatefield'])) {
+            var from = value.from,
+                to = value.to;
 
             conditionValue = Ext.Date.format(new Date(from), 'Y-m-d 00:00:00') + ',' + Ext.Date.format(new Date(to), 'Y-m-d 23:59:59');
-        }else if(xtype == 'combobox' || xtype == 'combo') {
+        } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
+            conditionValue = value;
+        } else if (me.isContainsAny(xtypes, ['combobox', 'combo'])) {
             conditionValue = '\'' + value + '\'';
-        }else if(xtype == 'multicombo') {
-            conditionValue = value.map(function(v) {
+        } else if (me.isContainsAny(xtypes, ['multicombo'])) {
+            conditionValue = value.map ? value.map(function (v) {
                 return '\'' + v.value + '\'';
-            }).join(',');
-        }else {
+            }).join(',') : '';
+        } else {
             conditionValue = value;
         }
 

+ 5 - 4
frontend/saas-web/app/view/core/report/ReportPanel.js

@@ -164,7 +164,8 @@ Ext.define('saas.view.core.report.ReportPanel', {
             ftype: 'groupingsummary',
             hideGroupedHeader: false,
             enableGroupingMenu: false,
-            collapsible: false
+            collapsible: false,
+            groupHeaderTpl: me.groupHeaderTpl || '{columnName}: {name}'
         }];
 
         if (me.showMySummary) {
@@ -333,11 +334,11 @@ Ext.define('saas.view.core.report.ReportPanel', {
                     renderer: function (v) {
                         var arr = (v + '.').split('.');
                         var xr = (new Array(arr[1].length)).fill('0');
-                        var format = '0.' + xr.join();
+                        var format = '0.' + xr.join('');
                         return Ext.util.Format.number(v, format);
                     },
                     exportStyle:{
-                        format: 'Total',
+                        format: c.exportFormat || 'Total',
                         alignment: {
                             horizontal: 'Right'
                         }
@@ -533,7 +534,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
         } else if (me.isContainsAny(xtypes, ['datefield', 'condatefield', 'conmonthfield'])) {
             type = 'date';
         } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
-            type = 'string';
+            type = 'enum';
         } else if (me.isContainsAny(xtypes, ['combobox', 'multicombo', 'combo', 'radiofield', 'radio'])) {
             type = 'enum';
         } else {

+ 4 - 1
frontend/saas-web/app/view/core/report/ReportPanelController.js

@@ -37,7 +37,10 @@ Ext.define('saas.view.core.report.ReportPanelController', {
         grid.store.load(function(records, operation, success) {
             if(btn.cfg.isPrint){
                 me.printHtml(grid.getDocumentData(cfg));
-            }else  grid.saveDocumentAs(cfg);
+            }else  {
+                debugger;
+                grid.saveDocumentAs(cfg);
+            }
             grid.store.exportPageSize = null;
             grid.store.exportNumber = null;
             grid.store.load(function(records, operation, success) {

+ 42 - 0
frontend/saas-web/app/view/document/address/DataList.js

@@ -7,6 +7,7 @@ Ext.define('saas.view.document.address.DataList', {
     viewModel: 'document-address-datalist',
     defaultType:'address',
     windowType:'document-address-window',
+    _openUrl:'/api/document/address/setDefault',
     tbar: ['->',{
         xtype:'button',
         text:'新增',
@@ -26,6 +27,47 @@ Ext.define('saas.view.document.address.DataList', {
                 text: '地址名称',
                 dataIndex: 'ad_address',
                 flex: 1
+            },{
+                text: '采购默认地址',
+                dataIndex: 'ad_default',
+                width:160,
+                xtype: 'actioncolumn',
+                align : 'center',
+                items: [{
+                    iconCls:'',
+                    getClass: function(v, meta, rec) {
+                        if(rec.get('ad_default')==1){
+                            return 'x-grid-checkcolumn-checked-btn';
+                        }else{
+                            return 'x-grid-checkcolumn-btn';
+                        }
+                    },
+                    handler: function(view, rowIndex, colIndex) {
+                        var rec = view.getStore().getAt(rowIndex);
+                        var type=rec.get('ad_default')==1?true:false;
+                        if(type){
+                            saas.util.BaseUtil.showErrorToast('请启用其它未设置的地址');
+                            return;
+                        }
+                        // 启用
+                        var form = this.ownerCt.ownerCt.ownerCt;
+                        var grid = this.ownerCt.ownerCt;
+                        saas.util.BaseUtil.request({
+                            url: form._openUrl+'/'+rec.get('id'),
+                            method: 'POST',
+                        })
+                        .then(function(localJson) {
+                            if(localJson.success){
+                                saas.util.BaseUtil.showSuccessToast('操作成功');
+                                grid.store.load();
+                            }
+                        })
+                        .catch(function(res) {
+                            console.error(res);
+                            saas.util.BaseUtil.showErrorToast('操作失败: ' + res.message);
+                        });
+                    }
+                }]
             }],
             keyField:'id',
             reqUrl: '/api/document/address/save',

+ 2 - 1
frontend/saas-web/app/view/document/address/DataListModel.js

@@ -8,7 +8,8 @@ Ext.define('saas.view.document.address.DataListModel', {
         address: {
             fields:[
                 {name: 'id', type: 'int'},
-                {name: 'ad_address',  type: 'string'}
+                {name: 'ad_address',  type: 'string'},
+                {name: 'ad_default',  type: 'int'}
             ],
             proxy: {
                 type: 'ajax',

+ 2 - 2
frontend/saas-web/app/view/document/bankinformation/DataList.js

@@ -41,7 +41,7 @@ Ext.define('saas.view.document.bankinformation.DataList', {
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
                 flex: 1
@@ -52,7 +52,7 @@ Ext.define('saas.view.document.bankinformation.DataList', {
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
                 flex: 1

+ 2 - 2
frontend/saas-web/app/view/document/bankinformation/Window.js

@@ -26,7 +26,7 @@ Ext.define('saas.view.document.bankinformation.Window', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             flex: 1
@@ -37,7 +37,7 @@ Ext.define('saas.view.document.bankinformation.Window', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             flex: 1

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

@@ -42,7 +42,7 @@ Ext.define('saas.view.document.bom.FormController', {
                     }) ;   
                 }
             },
-            'productMultiDbfindTrigger[name=bd_replace]':{
+            'productAddMultiDbfindTrigger[name=bd_replace]':{
                 beforerender:function(f){
                     Ext.apply(f,{
                         //放大镜赋值设置

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

@@ -169,7 +169,7 @@ Ext.define('saas.view.document.bom.FormPanel', {
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length)).fill('0');
-                    var format = '0.' + xr.join();
+                    var format = '0.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
             }, {
@@ -187,7 +187,7 @@ Ext.define('saas.view.document.bom.FormPanel', {
                     queryMode : "local", 
                     store : null, 
                     valueField : "value", 
-                    xtype : "productMultiDbfindTrigger"
+                    xtype : "productAddMultiDbfindTrigger"
                 }
             }, {
                 text : "备注", 

+ 1 - 1
frontend/saas-web/app/view/document/customer/BasePanel.js

@@ -119,7 +119,7 @@ Ext.define('saas.view.document.customer.BasePanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {

+ 4 - 4
frontend/saas-web/app/view/document/customer/FormPanel.js

@@ -102,7 +102,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     },{ 
@@ -117,7 +117,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },   
     },{
@@ -149,7 +149,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {
@@ -203,7 +203,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     },{

+ 4 - 4
frontend/saas-web/app/view/document/product/BasePanel.js

@@ -102,7 +102,7 @@ Ext.define('saas.view.document.product.BasePanel', {
             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();
+                var format = '0.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         },{
@@ -117,7 +117,7 @@ Ext.define('saas.view.document.product.BasePanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -128,7 +128,7 @@ Ext.define('saas.view.document.product.BasePanel', {
             renderer : function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-                var format = '0.' + xr.join();
+                var format = '0.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -139,7 +139,7 @@ Ext.define('saas.view.document.product.BasePanel', {
             renderer : function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-                var format = '0.' + xr.join();
+                var format = '0.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {

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

@@ -272,14 +272,14 @@ Ext.define('saas.view.document.product.FormPanel', {
             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();
+                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();
+                var format = '0.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         },
@@ -301,7 +301,7 @@ Ext.define('saas.view.document.product.FormPanel', {
             renderer : function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-                var format = '0.' + xr.join();
+                var format = '0.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
         },
@@ -315,14 +315,14 @@ Ext.define('saas.view.document.product.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }]

+ 1 - 1
frontend/saas-web/app/view/document/vendor/BasePanel.js

@@ -113,7 +113,7 @@ Ext.define('saas.view.document.vendor.BasePanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {

+ 3 - 3
frontend/saas-web/app/view/document/vendor/FormPanel.js

@@ -108,7 +108,7 @@ Ext.define('saas.view.document.vendor.FormPanel', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     },{ 
@@ -123,7 +123,7 @@ Ext.define('saas.view.document.vendor.FormPanel', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },    
     },{
@@ -191,7 +191,7 @@ Ext.define('saas.view.document.vendor.FormPanel', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },  
     },

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

@@ -82,7 +82,17 @@ Ext.define('saas.view.home.HomeModel', {
                     var p = Ext.getCmp('infocard');
                         p && p.setLoading(false);
                     var sum = Ext.util.Format.number(s.sum('y'), '0.00') || 0;
-                    Ext.getCmp('home').getViewModel().set('month_sale_amount', sum)
+                    Ext.getCmp('home').getViewModel().set('month_sale_amount', sum);
+
+                    s.each(function(r) {
+                        var z = r.get('z'),
+                        x = r.get('x');
+                        if(!z) {
+                            r.set('z', x.length > 3 ? (x.substr(0,3) + '...') : x);
+                        }else {
+                            r.set('z', z.length > 3 ? (z.substr(0,3) + '...') : z);
+                        }
+                    });
                 }
             }
         },
@@ -349,6 +359,16 @@ Ext.define('saas.view.home.HomeModel', {
                 load: function(s, d) {
                     var p = Ext.getCmp('profit_detail');
                         p && p.setLoading(false);
+
+                    s.each(function(r) {
+                        var z = r.get('z'),
+                        x = r.get('x');
+                        if(!z) {
+                            r.set('z', x.length > 3 ? (x.substr(0,3) + '...') : x);
+                        }else {
+                            r.set('z', z.length > 3 ? (z.substr(0,3) + '...') : z);
+                        }
+                    });
                 }
             } 
         },

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

@@ -64,7 +64,7 @@ Ext.define('saas.view.home.charts.MonthSale', {
                     angleField: 'y',
                     donut: 55,
                     label: {
-                        field: 'x',
+                        field: 'z',
                         display: 'inside',
                         renderer: me.onLabelRender,
                         color: '#fff',

+ 3 - 3
frontend/saas-web/app/view/home/charts/ProfitDetail.js

@@ -23,7 +23,7 @@ Ext.define('saas.view.home.charts.ProfitDetail', {
                 },
                 axes: [{
                     type: 'category',
-                    fields: ['x'],
+                    fields: ['z'],
                     position: 'bottom',
                     label: {
                         fontSize: '12px',
@@ -60,7 +60,7 @@ Ext.define('saas.view.home.charts.ProfitDetail', {
                 }],
                 series: [{
                     type: 'bar',
-                    xField: 'x',
+                    xField: 'z',
                     yField: ['y'],
                     bind: {
                         style: {
@@ -81,7 +81,7 @@ Ext.define('saas.view.home.charts.ProfitDetail', {
     },
 
     onCategoryLabelRender: function(axis, label, layoutContent, lastLabel) {
-        return label.substr(0,2) + '...';
+        return label;
     },
 
     onBarTipRender: function (tooltip, record, item) {

+ 3 - 3
frontend/saas-web/app/view/home/infoCardList/Payment.js

@@ -75,7 +75,7 @@ Ext.define('saas.view.home.infoCardList.Payment', {
         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();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {
@@ -89,7 +89,7 @@ Ext.define('saas.view.home.infoCardList.Payment', {
         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,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         width: 110
@@ -109,7 +109,7 @@ Ext.define('saas.view.home.infoCardList.Payment', {
         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();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }],

+ 3 - 3
frontend/saas-web/app/view/home/infoCardList/PurchaseIn.js

@@ -71,7 +71,7 @@ Ext.define('saas.view.home.infoCardList.PurchaseIn', {
         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();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {
@@ -87,7 +87,7 @@ Ext.define('saas.view.home.infoCardList.PurchaseIn', {
         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();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
@@ -106,7 +106,7 @@ Ext.define('saas.view.home.infoCardList.PurchaseIn', {
         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();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {

+ 4 - 4
frontend/saas-web/app/view/home/infoCardList/Recment.js

@@ -76,7 +76,7 @@ Ext.define('saas.view.home.infoCardList.Recment', {
         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();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
@@ -87,7 +87,7 @@ Ext.define('saas.view.home.infoCardList.Recment', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
@@ -98,7 +98,7 @@ Ext.define('saas.view.home.infoCardList.Recment', {
         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();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
@@ -117,7 +117,7 @@ Ext.define('saas.view.home.infoCardList.Recment', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {

+ 4 - 4
frontend/saas-web/app/view/home/infoCardList/SaleOut.js

@@ -67,7 +67,7 @@ Ext.define('saas.view.home.infoCardList.SaleOut', {
         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();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {
@@ -78,7 +78,7 @@ Ext.define('saas.view.home.infoCardList.SaleOut', {
         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();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {
@@ -89,7 +89,7 @@ Ext.define('saas.view.home.infoCardList.SaleOut', {
         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();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {
@@ -100,7 +100,7 @@ Ext.define('saas.view.home.infoCardList.SaleOut', {
         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();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {

+ 3 - 3
frontend/saas-web/app/view/home/infoCardList/UnauditCheckIn.js

@@ -75,7 +75,7 @@ Ext.define('saas.view.home.infoCardList.UnauditCheckIn', {
         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();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {
@@ -89,7 +89,7 @@ Ext.define('saas.view.home.infoCardList.UnauditCheckIn', {
         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,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         width: 110
@@ -109,7 +109,7 @@ Ext.define('saas.view.home.infoCardList.UnauditCheckIn', {
         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();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }],

+ 4 - 4
frontend/saas-web/app/view/home/infoCardList/UnauditSaleOut.js

@@ -73,7 +73,7 @@ Ext.define('saas.view.home.infoCardList.UnauditSaleOut', {
         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();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
@@ -84,7 +84,7 @@ Ext.define('saas.view.home.infoCardList.UnauditSaleOut', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
@@ -95,7 +95,7 @@ Ext.define('saas.view.home.infoCardList.UnauditSaleOut', {
         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();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
@@ -114,7 +114,7 @@ Ext.define('saas.view.home.infoCardList.UnauditSaleOut', {
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {

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

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

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

@@ -106,7 +106,7 @@ Ext.define('saas.view.money.fundtransfer.QueryPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
         }, {

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

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

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

@@ -59,7 +59,7 @@ Ext.define('saas.view.money.othreceipts.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         }, {

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

@@ -124,7 +124,7 @@ Ext.define('saas.view.money.othreceipts.QueryPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -174,7 +174,7 @@ Ext.define('saas.view.money.othreceipts.QueryPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {

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

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

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

@@ -37,7 +37,7 @@ Ext.define('saas.view.money.othspendings.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         }, {
@@ -51,7 +51,7 @@ Ext.define('saas.view.money.othspendings.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         },{

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

@@ -121,7 +121,7 @@ Ext.define('saas.view.money.othspendings.QueryPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -171,7 +171,7 @@ Ext.define('saas.view.money.othspendings.QueryPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {

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

@@ -131,14 +131,14 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -235,14 +235,14 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -254,14 +254,14 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -273,14 +273,14 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -296,14 +296,14 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {

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

@@ -38,7 +38,7 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         }, {
@@ -52,7 +52,7 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         },{

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

@@ -141,7 +141,7 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
         } ,{

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

@@ -135,14 +135,14 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -242,14 +242,14 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -261,14 +261,14 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -280,14 +280,14 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {
@@ -303,14 +303,14 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }]

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

@@ -59,7 +59,7 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         }, {

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

@@ -132,7 +132,7 @@ Ext.define('saas.view.money.recBalance.QueryPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }, {

+ 9 - 6
frontend/saas-web/app/view/money/report/AccountBalance.js

@@ -7,7 +7,8 @@ Ext.define('saas.view.money.report.AccountBalance', {
 
     viewName: 'money-report-accountbalance',
 
-    groupField: 'bankname',
+    groupField: 'bankcode',
+    groupHeaderTpl: '账户名称: {[values.rows[0].data.bankname]}',
     listUrl: '/api/money/report/accountBalance',
     defaultCondition: null,
     reportTitle: '账户收支明细表',
@@ -45,37 +46,39 @@ Ext.define('saas.view.money.report.AccountBalance', {
     }, {
         text: '收入',
         dataIndex: 'inamount',
+        exportFormat: 'Amount',
         xtype: 'numbercolumn',
         width: 110,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '支出',
         dataIndex: 'outamount',
         xtype: 'numbercolumn',
+        exportFormat: 'Amount',
         width: 110,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     },
@@ -87,7 +90,7 @@ Ext.define('saas.view.money.report.AccountBalance', {
     //     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();
+    //         var format = '0,000.' + xr.join('');
     //         return Ext.util.Format.number(v, format);
     //     }
     // },

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

@@ -89,23 +89,25 @@ Ext.define('saas.view.money.report.AccountDetails', {
     }, {
         text: '本期核销金额',
         dataIndex: 'sl_amount',
+        exportFormat: 'Amount',
         xtype: 'numbercolumn',
         width: 130,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '总金额',
         dataIndex: 'total',
         xtype: 'numbercolumn',
+        exportFormat: 'Amount',
         width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }],

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

@@ -74,28 +74,31 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
     }, {
         text: '数量',
         xtype: 'numbercolumn',
+        exportFormat: 'Quantity',
         dataIndex: 'qty',
         width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '单价',
         dataIndex: 'pd_orderprice',
+        exportFormat: 'Price',
         xtype: 'numbercolumn',
         width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '税率',
         dataIndex: 'pd_taxrate',
+        exportFormat: 'Integer',
         xtype: 'numbercolumn',
         width: 80,
         renderer: function(v) {
@@ -104,50 +107,51 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
     }, {
         text: '金额',
         xtype: 'numbercolumn',
+        exportFormat: 'Amount',
         width: 110,
         dataIndex: 'pd_total',
-        xtype: 'numbercolumn',
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         // summaryType: 'sum',
         // summaryRenderer: function(v) {
         //     var arr = (v + '.').split('.');
         //     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-        //     var format = '0,000.' + xr.join();
+        //     var format = '0,000.' + xr.join('');
         //     return Ext.util.Format.number(v, format);
         // }
     }, {
         text: '不含税单价',
         width: 110,
         dataIndex: 'pd_netprice',
+        exportFormat: 'Price',
         xtype: 'numbercolumn',
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '不含税金额',
         width: 110,
         xtype: 'numbercolumn',
+        exportFormat: 'Amount',
         dataIndex: 'pd_nettotal',
-        xtype: 'numbercolumn',
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
         // summaryType: 'sum',
         // summaryRenderer: function(v) {
         //     var arr = (v + '.').split('.');
         //     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-        //     var format = '0,000.' + xr.join();
+        //     var format = '0,000.' + xr.join('');
         //     return Ext.util.Format.number(v, format);
         // }
     }, {

+ 8 - 5
frontend/saas-web/app/view/money/report/OtherIODetail.js

@@ -10,7 +10,8 @@ Ext.define('saas.view.money.report.OtherIODetail', {
 
     viewName: 'money-report-otheriodetail',
 
-    groupField: 'bl_bankname',
+    groupField: 'bl_bankcode',
+    groupHeaderTpl: '资金账户: {[values.rows[0].data.bankname]}',
     listUrl: '/api/money/report/otheriodetail',
     defaultCondition: null,
     reportTitle: '其他收支明细表',
@@ -81,35 +82,37 @@ Ext.define('saas.view.money.report.OtherIODetail', {
     }, {
         text: '收入',
         dataIndex: 'bl_income',
+        exportFormat: 'Amount',
         width: 150,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '支出',
         dataIndex: 'bl_spending',
+        exportFormat: 'Amount',
         width: 150,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {

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

@@ -6,7 +6,8 @@ Ext.define('saas.view.money.report.PayDetail', {
     viewModel: 'money-report-paydetail',
     viewName: 'money-report-paydetail',
 
-    groupField:'pd_vendname',
+    groupField:'pd_vendcode',
+    groupHeaderTpl: '供应商名称: {[values.rows[0].data.pd_vendcode]}',
     listUrl: '/api/money/report/payDetail',
     defaultCondition: null,
     reportTitle: '应付账款明细表',
@@ -26,125 +27,124 @@ Ext.define('saas.view.money.report.PayDetail', {
         columnWidth: 0.5
     }],
 
-    reportColumns: [
-        {
-            text: 'id',
-            dataIndex: 'pd_id',
-            hidden: true
-        }, {
-            text: '单据日期',
-            xtype: 'datecolumn',
-            dataIndex: 'pd_date',
-            width: 110
-        }, {
-            text: '单号',
-            dataIndex: 'pd_code',
-            width: 150
-        }, {
-            text: '单据类型',
-            dataIndex: 'pd_kind',
-            width: 110
-        }, {
-            text:'供应商编号',
-            dataIndex:'pd_vendcode',
-            width: 150,
-            hidden: true
-        },{
-            text:'供应商名称',
-            width: 200,
-            dataIndex:'pd_vendname',
-            hidden: true
-        },{
-            text: '采购员',
-            dataIndex: 'pd_buyername',
-            width: 110
-        },{
-            text: '增加应付',
-            xtype: 'numbercolumn',
-            dataIndex: 'pd_addpay',
-            xtype: 'numbercolumn',
-            width: 180,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            summaryType: 'sum',
-            summaryRenderer: function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
-        }, {
-            text: '增加预付',
-            xtype: 'numbercolumn',
-            dataIndex: 'pd_addpre',
-            xtype: 'numbercolumn',
-            width: 180,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            summaryType: 'sum',
-            summaryRenderer: function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
-        }, {
-            text: '应付余额',
-            xtype: 'numbercolumn',
-            dataIndex: 'pd_remain',
-            xtype: 'numbercolumn',
-            width: 110,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            summaryType: 'last',
-            summaryRenderer: function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            mySummaryRenderer: function(grid, column, datas) {
-                var store = grid.store,
-                dataIndex = column.dataIndex,
-                groupField = store.getGroupField(),
-                count = datas.length,
-                data = datas,
-                lasts = {},
-                keys = [],
-                arr = [];
+    reportColumns: [{
+        text: 'id',
+        dataIndex: 'pd_id',
+        hidden: true
+    }, {
+        text: '单据日期',
+        xtype: 'datecolumn',
+        dataIndex: 'pd_date',
+        width: 110
+    }, {
+        text: '单号',
+        dataIndex: 'pd_code',
+        width: 150
+    }, {
+        text: '单据类型',
+        dataIndex: 'pd_kind',
+        width: 110
+    }, {
+        text:'供应商编号',
+        dataIndex:'pd_vendcode',
+        width: 150,
+        hidden: true
+    },{
+        text:'供应商名称',
+        width: 200,
+        dataIndex:'pd_vendname',
+        hidden: true
+    },{
+        text: '采购员',
+        dataIndex: 'pd_buyername',
+        width: 110
+    },{
+        text: '增加应付',
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'pd_addpay',
+        width: 180,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        }
+    }, {
+        text: '增加预付',
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'pd_addpre',
+        width: 180,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        }
+    }, {
+        text: '应付余额',
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'pd_remain',
+        width: 110,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'last',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        mySummaryRenderer: function(grid, column, datas) {
+            var store = grid.store,
+            dataIndex = column.dataIndex,
+            groupField = store.getGroupField(),
+            count = datas.length,
+            data = datas,
+            lasts = {},
+            keys = [],
+            arr = [];
 
-                for(var i = 0; i < count; i++) {
-                    var d = data[i];
-                    var n = Number(d[dataIndex]);
-                    var v = isNaN(n) ? 0 : n;
+            for(var i = 0; i < count; i++) {
+                var d = data[i];
+                var n = Number(d[dataIndex]);
+                var v = isNaN(n) ? 0 : n;
 
-                    lasts[groupField] = v;
-                }
+                lasts[groupField] = v;
+            }
 
-                keys = Ext.Object.getAllKeys(lasts);
-                arr = keys.map(function(key) {
-                    return lasts[key];
-                });
+            keys = Ext.Object.getAllKeys(lasts);
+            arr = keys.map(function(key) {
+                return lasts[key];
+            });
 
-                return Ext.Array.sum(arr);
-            }
-        }, {
-            text: '供应商名称',
-            dataIndex: 'pd_vendname',
-            hidden:true
-        }, {
-            flex: 1
-        }]
+            return Ext.Array.sum(arr);
+        }
+    }, {
+        text: '供应商名称',
+        dataIndex: 'pd_vendname',
+        hidden:true
+    }, {
+        flex: 1
+    }]
 });

+ 10 - 6
frontend/saas-web/app/view/money/report/ProfitDetail.js

@@ -53,59 +53,63 @@ Ext.define('saas.view.money.report.ProfitDetail', {
     }, {
         text: '销售总额',
         dataIndex: 'saamount',
+        exportFormat: 'Amount',
         xtype: 'numbercolumn',
         width: 110,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '不含税金额',
         dataIndex: 'netamount',
+        exportFormat: 'Amount',
         xtype: 'numbercolumn',
         width: 110,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {
         text: '成本金额',
         dataIndex: 'costamount',
+        exportFormat: 'Amount',
         xtype: 'numbercolumn',
         width: 110,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {
         text: '毛利润',
         dataIndex: 'profit',
+        exportFormat: 'Amount',
         xtype: 'numbercolumn',
         width: 110,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {

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

@@ -7,7 +7,8 @@ Ext.define('saas.view.money.report.RecDetail', {
 
     viewName: 'money-report-recdetail',
 
-    groupField: 'rd_custname',
+    groupField: 'rd_custcode',
+    groupHeaderTpl: '客户名称: {[values.rows[0].data.rd_custname]}',
     listUrl: '/api/money/report/recDetail',
     defaultCondition: null,
     reportTitle: '应收账款明细',
@@ -27,131 +28,131 @@ Ext.define('saas.view.money.report.RecDetail', {
         columnWidth: 0.5
     }],
 
-    reportColumns: [
-        {
-            text: 'id',
-            dataIndex: 'rd_id',
-            hidden: true
-        }, {
-            text: '单据日期',
-            xtype: 'datecolumn',
-            dataIndex: 'rd_date',
-            width: 110
-        }, {
-            text: '单号',
-            dataIndex: 'rd_code',
-            width: 150
-        }, {
-            text: '单据类型',
-            dataIndex: 'rd_kind',
-            width: 110
-        },{
-            text: '客户编号',
-            dataIndex: 'pi_custcode',
-            width: 150,
-            hidden: true
-        }, {
-            text: '客户名称',
-            dataIndex: 'pi_custname',
-            width: 200,
-            hidden: true
-        },{
-            text: '业务员',
-            dataIndex: 'rd_sellername',
-            width: 110
-        }, {
-            text: '序号',
-            dataIndex: 'rd_detno',
-            xtype: 'numbercolumn',
-            width: 80,
-            hidden: true
-        },{
-            text:'增加应收',
-            dataIndex:'rd_addrec',
-            xtype: 'numbercolumn',
-            width: 110,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            summaryType: 'sum',
-            summaryRenderer: function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
-        },{
-            text:'增加预收',
-            xtype: 'numbercolumn',
-            dataIndex:'rd_addpre',
-            xtype: 'numbercolumn',
-            width: 180,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            summaryType: 'sum',
-            summaryRenderer: function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
-        },{
-            text: '应收余额',
-            xtype: 'numbercolumn',
-            dataIndex: 'rd_remain',
-            xtype: 'numbercolumn',
-            width: 110,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            summaryType: 'last',
-            summaryRenderer: function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            mySummaryRenderer: function(grid, column, datas) {
-                datas = datas || [];
-                var store = grid.store,
-                dataIndex = column.dataIndex,
-                groupField = store.getGroupField(),
-                count = datas.length,
-                data = datas,
-                lasts = {},
-                keys = [],
-                arr = [];
+    reportColumns: [{
+        text: 'id',
+        dataIndex: 'rd_id',
+        hidden: true
+    }, {
+        text: '单据日期',
+        xtype: 'datecolumn',
+        dataIndex: 'rd_date',
+        width: 110
+    }, {
+        text: '单号',
+        dataIndex: 'rd_code',
+        width: 150
+    }, {
+        text: '单据类型',
+        dataIndex: 'rd_kind',
+        width: 110
+    },{
+        text: '客户编号',
+        dataIndex: 'pi_custcode',
+        width: 150,
+        hidden: true
+    }, {
+        text: '客户名称',
+        dataIndex: 'pi_custname',
+        width: 200,
+        hidden: true
+    },{
+        text: '业务员',
+        dataIndex: 'rd_sellername',
+        width: 110
+    }, {
+        text: '序号',
+        dataIndex: 'rd_detno',
+        xtype: 'numbercolumn',
+        width: 80,
+        hidden: true
+    },{
+        text:'增加应收',
+        dataIndex:'rd_addrec',
+        exportFormat: 'Amount',
+        xtype: 'numbercolumn',
+        width: 110,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        }
+    },{
+        text:'增加预收',
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex:'rd_addpre',
+        width: 180,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        }
+    },{
+        text: '应收余额',
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'rd_remain',
+        width: 110,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'last',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        mySummaryRenderer: function(grid, column, datas) {
+            datas = datas || [];
+            var store = grid.store,
+            dataIndex = column.dataIndex,
+            groupField = store.getGroupField(),
+            count = datas.length,
+            data = datas,
+            lasts = {},
+            keys = [],
+            arr = [];
 
-                for(var i = 0; i < count; i++) {
-                    var d = data[i];
-                    var n = Number(d[dataIndex]);
-                    var v = isNaN(n) ? 0 : n;
+            for(var i = 0; i < count; i++) {
+                var d = data[i];
+                var n = Number(d[dataIndex]);
+                var v = isNaN(n) ? 0 : n;
 
-                    lasts[groupField] = v;
-                }
+                lasts[groupField] = v;
+            }
 
-                keys = Ext.Object.getAllKeys(lasts);
-                arr = keys.map(function(key) {
-                    return lasts[key];
-                });
+            keys = Ext.Object.getAllKeys(lasts);
+            arr = keys.map(function(key) {
+                return lasts[key];
+            });
 
-                return Ext.Array.sum(arr);
-            }
-        }, {
-            text: '客户名称',
-            dataIndex: 'rd_custname',
-            hidden:true
-        }, {
-            flex: 1
-        }]
+            return Ext.Array.sum(arr);
+        }
+    }, {
+        text: '客户名称',
+        dataIndex: 'rd_custname',
+        hidden:true
+    }, {
+        flex: 1
+    }]
 });

+ 42 - 15
frontend/saas-web/app/view/money/report/TotalPayDetail.js

@@ -36,68 +36,95 @@ Ext.define('saas.view.money.report.TotalPayDetail', {
     reportColumns: [{
         text: '供应商编号',
         dataIndex: 'vm_vendcode',
-        width: 200
+        width: 190
     }, {
         text: '供应商名称',
         dataIndex: 'vm_vendname',
-        width: 200,
-    }, {text: '期初预付',
-    xtype: 'numbercolumn',
-    dataIndex: 'vm_beginpreamount',
-    width: 150
+        width: 210,
+    }, {
+        text: '期初预付',
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'vm_beginpreamount',
+        width: 110,
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        }
     },{
         text: '期初应付',
         xtype: 'numbercolumn',
+        exportFormat: 'Amount',
         dataIndex: 'vm_beginamount',
         width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '本期应付',
         xtype: 'numbercolumn',
+        exportFormat: 'Amount',
         dataIndex: 'vm_nowamount',
         width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '本期核销',
         xtype: 'numbercolumn',
-
+        exportFormat: 'Amount',
         dataIndex: 'vm_nowpayamount',
-        width: 150,
-
-        dataIndex: 'vm_nowpreamount',
         width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
+        text: '预付余额',
+        dataIndex: 'vm_endpreamount',
+        exportFormat: 'Amount',
+        xtype: 'numbercolumn',
+        width: 110,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        }
+    },{
         text: '应付余额',
         dataIndex: 'vm_endamount',
+        exportFormat: 'Amount',
         xtype: 'numbercolumn',
         width: 110,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {

+ 39 - 20
frontend/saas-web/app/view/money/report/TotalRecDetail.js

@@ -36,69 +36,88 @@ Ext.define('saas.view.money.report.TotalRecDetail', {
     reportColumns: [{
         text: '客户编号',
         dataIndex: 'cm_custcode',
-        width: 200
+        width: 190
     }, {
         text: '客户名称',
         dataIndex: 'cm_custname',
-        width: 200,
+        width: 210,
     }, {
-            text: '期初预收',
-            dataIndex: 'cm_beginpreamount',
-            width: 150
-        },{
+        text: '期初预收',
+        dataIndex: 'cm_beginpreamount',
+        exportFormat: 'Amount',
+        xtype: 'numbercolumn',
+        width: 110,
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        }
+    },{
         text: '期初应收',
         dataIndex: 'cm_beginamount',
+        exportFormat: 'Amount',
         xtype: 'numbercolumn',
-        width: 150,
+        width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '本期应收',
         xtype: 'numbercolumn',
+        exportFormat: 'Amount',
         dataIndex: 'cm_nowamount',
-        width: 150,
+        width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '本期核销',
         xtype: 'numbercolumn',
+        exportFormat: 'Amount',
         dataIndex: 'cm_nowpayamount',
-        width: 150,
+        width: 110,
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join('');
+            return Ext.util.Format.number(v, format);
+        }
+    }, {
+        text: '预收余额',
+        xtype: 'numbercolumn',
+        exportFormat: 'Amount',
+        dataIndex: 'cm_endpreamount',
+        width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
-            text: '预收余额',
-            xtype: 'numbercolumn',
-            dataIndex: 'cm_endpreamount',
-            width: 150
-        }, {
         text: '应收余额',
         dataIndex: 'cm_endamount',
+        exportFormat: 'Amount',
         xtype: 'numbercolumn',
-        width: 150,
+        width: 110,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {

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

@@ -84,28 +84,31 @@ Ext.define('saas.view.money.report.VendorCheck', {
     }, {
         text: '数量',
         dataIndex: 'qty',
+        exportFormat: 'Quantity',
         xtype: 'numbercolumn',
         width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '单价',
         dataIndex: 'pd_orderprice',
+        exportFormat: 'Price',
         xtype: 'numbercolumn',
         width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '税率',
         dataIndex: 'pd_taxrate',
+        exportFormat: 'Integer',
         xtype: 'numbercolumn',
         width: 80,
         renderer: function(v) {
@@ -114,42 +117,44 @@ Ext.define('saas.view.money.report.VendorCheck', {
     }, {
         text: '金额',
         xtype: 'numbercolumn',
+        exportFormat: 'Amount',
         dataIndex: 'pd_total',
-        xtype: 'numbercolumn',
         width: 110,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
         // summaryType: 'sum',
         // summaryRenderer: function(v) {
         //     var arr = (v + '.').split('.');
         //     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-        //     var format = '0,000.' + xr.join();
+        //     var format = '0,000.' + xr.join('');
         //     return Ext.util.Format.number(v, format);
         // }
     }, {
         text: '不含税单价',
         dataIndex: 'pd_netprice',
+        exportFormat: 'Price',
         xtype: 'numbercolumn',
         width: 110,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         }
     }, {
         text: '不含税金额',
         dataIndex: 'pd_nettotal',
+        exportFormat: 'Amount',
         xtype: 'numbercolumn',
         width: 110,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0,000.' + xr.join();
+            var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
     }, {

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

@@ -108,14 +108,14 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 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();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
             }, {
@@ -127,14 +127,14 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 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();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
             }, {
@@ -146,14 +146,14 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 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();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
             }, {
@@ -169,14 +169,14 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 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();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
             }]
@@ -230,14 +230,14 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 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();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
             }, {
@@ -249,14 +249,14 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 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();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
             }, {
@@ -268,14 +268,14 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 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();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
             }, {
@@ -291,14 +291,14 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 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();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
                 summaryType: 'sum',
                 summaryRenderer: function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join();
+                    var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
             }]

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

@@ -60,7 +60,7 @@ Ext.define('saas.view.money.verification.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         }, {
@@ -148,7 +148,7 @@ Ext.define('saas.view.money.verification.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         }, {
@@ -214,7 +214,7 @@ Ext.define('saas.view.money.verification.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         }, {
@@ -228,7 +228,7 @@ Ext.define('saas.view.money.verification.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         },{
@@ -301,7 +301,7 @@ Ext.define('saas.view.money.verification.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         }, {
@@ -315,7 +315,7 @@ Ext.define('saas.view.money.verification.FormPanelController', {
                                 }
                                 var arr = (v + '.').split('.');
                                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-                                var format = '0.' + xr.join();
+                                var format = '0.' + xr.join('');
                                 return Ext.util.Format.number(v, format);
                             }
                         },{

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

@@ -126,7 +126,7 @@ Ext.define('saas.view.money.verification.QueryPanel', {
             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();
+                var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
         }]

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

@@ -145,14 +145,14 @@ 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 format = '0.' + xr.join();
+                            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();
+                            var format = '0.' + xr.join('');
                             return Ext.util.Format.number(v, format);
                         }
                     },
@@ -169,7 +169,7 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                         renderer : function(v) {
                             var arr = (v + '.').split('.');
                             var xr = (new Array(arr[1].length > 8 ? 8 :(arr[1].length < 2? 2 : arr[1].length))).fill('0');
-                            var format = '0,000.' + xr.join();
+                            var format = '0,000.' + xr.join('');
                             return Ext.util.Format.number(v, format);
                         },
                     },
@@ -187,14 +187,14 @@ 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 format = '0.' + xr.join();
+                            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();
+                            var format = '0.' + xr.join('');
                             return Ext.util.Format.number(v, format);
                         }
                     }, 
@@ -236,14 +236,14 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                         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();
+                            var format = '0,000.' + xr.join('');
                             return Ext.util.Format.number(v, format);
                         },
                         summaryType: 'sum',
                         summaryRenderer: function(v) {
                             var arr = (v + '.').split('.');
                             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                            var format = '0,000.' + xr.join();
+                            var format = '0,000.' + xr.join('');
                             return Ext.util.Format.number(v, format);
                         }
                     }, 
@@ -260,14 +260,14 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                         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();
+                            var format = '0,000.' + xr.join('');
                             return Ext.util.Format.number(v, format);
                         },
                         summaryType: 'sum',
                         summaryRenderer: function(v) {
                             var arr = (v + '.').split('.');
                             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                            var format = '0,000.' + xr.join();
+                            var format = '0,000.' + xr.join('');
                             return Ext.util.Format.number(v, format);
                         }
                     },

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است