Browse Source

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

chenw 7 years ago
parent
commit
46ded0a53c
52 changed files with 884 additions and 364 deletions
  1. 5 5
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/dto/ListReqDTO.java
  2. 10 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/HomePageController.java
  3. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/HomePageMapper.java
  4. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/HomePageService.java
  5. 7 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/HomePageServiceImpl.java
  6. 32 0
      applications/commons/commons-server/src/main/resources/mapper/HomePageMapper.xml
  7. 2 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  8. 2 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  9. 2 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  10. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java
  11. 2 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/VerificationMapper.java
  12. 37 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Custmonth.java
  13. 36 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Vendmonth.java
  14. 2 3
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  15. 5 1
      applications/money/money-server/src/main/resources/mapper/CustmonthMapper.xml
  16. 2 2
      applications/money/money-server/src/main/resources/mapper/ProfitdetailMapper.xml
  17. 5 1
      applications/money/money-server/src/main/resources/mapper/VendmonthMapper.xml
  18. 3 3
      applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml
  19. 2 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SaleProfitView.java
  20. 2 1
      applications/sale/sale-server/src/main/resources/mapper/SaleProfitViewMapper.xml
  21. 1 0
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/report/ProdiodetailView.java
  22. 1 1
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutReportMapper.xml
  23. 34 8
      frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js
  24. 13 17
      frontend/saas-web/app/view/core/dbfind/MultiDbfindTrigger.js
  25. 112 65
      frontend/saas-web/app/view/core/query/QueryFormPanel.js
  26. 33 3
      frontend/saas-web/app/view/core/query/QueryPanel.js
  27. 0 34
      frontend/saas-web/app/view/core/query/QueryPanelController.js
  28. 9 1
      frontend/saas-web/app/view/core/report/ReportPanel.js
  29. 1 0
      frontend/saas-web/app/view/document/bom/BasePanel.js
  30. 10 0
      frontend/saas-web/app/view/home/Home.js
  31. 14 2
      frontend/saas-web/app/view/money/report/AccountDetails.js
  32. 37 17
      frontend/saas-web/app/view/money/report/CustomerCheck.js
  33. 59 38
      frontend/saas-web/app/view/money/report/ProfitDetail.js
  34. 33 7
      frontend/saas-web/app/view/money/report/TotalPayDetail.js
  35. 34 6
      frontend/saas-web/app/view/money/report/TotalRecDetail.js
  36. 39 25
      frontend/saas-web/app/view/money/report/VendorCheck.js
  37. 16 0
      frontend/saas-web/app/view/money/verification/FormPanelController.js
  38. 12 0
      frontend/saas-web/app/view/purchase/report/PurchasePay.js
  39. 2 2
      frontend/saas-web/app/view/sale/report/Sale.js
  40. 1 1
      frontend/saas-web/app/view/sale/report/SaleProfit.js
  41. 14 12
      frontend/saas-web/app/view/sale/sale/FormPanel.js
  42. 44 5
      frontend/saas-web/app/view/sale/saleIn/FormPanel.js
  43. 20 0
      frontend/saas-web/app/view/sale/saleIn/FormPanelController.js
  44. 44 5
      frontend/saas-web/app/view/sale/saleOut/FormPanel.js
  45. 20 0
      frontend/saas-web/app/view/sale/saleOut/FormPanelController.js
  46. 17 18
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  47. 9 53
      frontend/saas-web/app/view/stock/report/DataList.js
  48. 13 6
      frontend/saas-web/app/view/stock/report/DataListController.js
  49. 56 8
      frontend/saas-web/app/view/stock/report/ProdinoutCount.js
  50. 9 6
      frontend/saas-web/app/view/stock/report/Prodiodetail.js
  51. 1 1
      frontend/saas-web/app/view/sys/guide/FormPanel.js
  52. 15 0
      frontend/saas-web/overrides/exporter/Stylesheet.js

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

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

+ 10 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/HomePageController.java

@@ -104,4 +104,14 @@ public class HomePageController {
         return homePageService.keyData();
     }
 
+    /**
+     * @Description 本月毛利润
+     * @return: com.usoftchina.saas.base.Result
+     * @Author: guq
+     * @Date: 2018/12/10
+     */
+    @GetMapping("/monthProfit")
+    public Result monthProfit() {
+        return homePageService.monthProfit();
+    }
 }

+ 2 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/HomePageMapper.java

@@ -19,4 +19,6 @@ public interface HomePageMapper {
     String getSaleFutureData(Long componyId);
 
     String getKeyData(Long companyId);
+
+    String monthProfit(Long companyId);
 }

+ 2 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/HomePageService.java

@@ -51,4 +51,6 @@ public interface HomePageService {
     Result saleFutureData();
 
     Result keyData();
+
+    Result monthProfit();
 }

+ 7 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/HomePageServiceImpl.java

@@ -86,6 +86,13 @@ public class HomePageServiceImpl implements HomePageService{
         return Result.success(data);
     }
 
+    @Override
+    public Result monthProfit() {
+        Long companyId = BaseContextHolder.getCompanyId();
+        Object data = parseJson(homePageMapper.monthProfit(companyId));
+        return Result.success(data);
+    }
+
     private Object parseJson(String text) {
         Object json = null;
         if (null != text) {

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

@@ -116,4 +116,36 @@
             )d1
             );
     </select>
+
+    <select id="monthProfit" parameterType="long" resultType="string">
+        select concat('[',five_profit,',',other_profit,']') from (
+      (
+        #前5数据
+        select group_concat('{"x":"',custname,'","y":',profit,',"z":"',shortname,'"}') five_profit   from (
+        select sum((ifnull(pd_netprice,0)- ifnull(pd_price,0))*(ifnull(pd_outqty,0) - ifnull(pd_inqty,0))) profit,
+        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
+        )five_profit_,
+	  (
+	    #其它的数据
+		select concat('{"z":"其它","x":"其它","y":',all_profit - five_profit,'}') other_profit from (
+        #总共
+        (
+        select sum((ifnull(pd_netprice,0)- ifnull(pd_price,0))*(ifnull(pd_outqty,0) - ifnull(pd_inqty,0))) all_profit
+        from prodinout left join prodiodetail on pi_id=pd_piid
+        where
+        pi_class in('出货单', '销售退货单') and pi_statuscode='AUDITED' and DATE_FORMAT(pi_date,'%Y%m')=DATE_FORMAT(CURDATE(),'%Y%m') and prodinout.companyid=#{componyId} )a1_,
+        #前5总和
+        (
+        select sum(profit) five_profit from (select sum((ifnull(pd_netprice,0)- ifnull(pd_price,0))*(ifnull(pd_outqty,0) - ifnull(pd_inqty,0))) profit,
+        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_
+       )
+       ) other_profit_
+      )
+    </select>
 </mapper>

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

@@ -524,8 +524,8 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
                     customerDTO.setCu_sellercode(employees.get(0).getEm_code());
                     customerDTO.setCu_sellername(employees.get(0).getEm_name());
                 }
-                customerDTO.setCu_status(Status.OPEN.getDisplay());
-                customerDTO.setCu_statuscode(Status.OPEN.name());
+                customerDTO.setCu_status(Status.ENABLE.getDisplay());
+                customerDTO.setCu_statuscode(Status.ENABLE.name());
                 //编号不存在
                 if (i == 0) {
                     customerDTO.setId(0l);

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

@@ -588,8 +588,8 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
                         break;
                     }
                     product.setPr_whid(warehouse.getId());
-                    product.setPr_status(Status.OPEN.getDisplay());
-                    product.setPr_statuscode(Status.OPEN.name());
+                    product.setPr_status(Status.ENABLE.getDisplay());
+                    product.setPr_statuscode(Status.ENABLE.name());
                 }
                 //编号不存在
                 if (i == 0) {

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

@@ -453,8 +453,8 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
                 List<DataImportDetail> data = datas.get(code);
                 DataImportDetail main = dataImportMapper.selectMainBycode(code, id, companyId);
                 Vendor vendor = JSONObject.parseObject(main.getDd_maindata(), Vendor.class);
-                vendor.setVe_status(Status.OPEN.getDisplay());
-                vendor.setVe_statuscode(Status.OPEN.name());
+                vendor.setVe_status(Status.ENABLE.getDisplay());
+                vendor.setVe_statuscode(Status.ENABLE.name());
                 //编号不存在
                 if (i == 0) {
                     vendor.setId(0l);

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

@@ -38,7 +38,7 @@ public class PaybalanceController {
     }
 
     @Transactional
-    @PostMapping("/deleteDetail/{id}")
+    @PostMapping("/deleteDetail1/{id}")
     public Result deleteItem(@PathVariable("id") int id){
         paybalanceService.deleteItem(id);
         return Result.success();

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

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

+ 37 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Custmonth.java

@@ -21,6 +21,43 @@ public class Custmonth {
 
     private Integer companyid;
 
+    private Double cm_beginpreamount;
+    private Double cm_nowpayamount;
+    private Double cm_nowprepayamount;
+    private Double cm_endpreamount;
+
+    public Double getCm_beginpreamount() {
+        return cm_beginpreamount;
+    }
+
+    public void setCm_beginpreamount(Double cm_beginpreamount) {
+        this.cm_beginpreamount = cm_beginpreamount;
+    }
+
+    public Double getCm_nowpayamount() {
+        return cm_nowpayamount;
+    }
+
+    public void setCm_nowpayamount(Double cm_nowpayamount) {
+        this.cm_nowpayamount = cm_nowpayamount;
+    }
+
+    public Double getCm_nowprepayamount() {
+        return cm_nowprepayamount;
+    }
+
+    public void setCm_nowprepayamount(Double cm_nowprepayamount) {
+        this.cm_nowprepayamount = cm_nowprepayamount;
+    }
+
+    public Double getCm_endpreamount() {
+        return cm_endpreamount;
+    }
+
+    public void setCm_endpreamount(Double cm_endpreamount) {
+        this.cm_endpreamount = cm_endpreamount;
+    }
+
     public Integer getCm_id() {
         return cm_id;
     }

+ 36 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Vendmonth.java

@@ -20,6 +20,42 @@ public class Vendmonth {
     private Double vm_endamount;
 
     private Integer companyid;
+    private Double vm_beginpreamount;
+    private Double vm_nowpayamount;
+    private Double vm_nowprepayamount;
+    private Double vm_endpreamount;
+
+    public Double getVm_beginpreamount() {
+        return vm_beginpreamount;
+    }
+
+    public void setVm_beginpreamount(Double vm_beginpreamount) {
+        this.vm_beginpreamount = vm_beginpreamount;
+    }
+
+    public Double getVm_nowpayamount() {
+        return vm_nowpayamount;
+    }
+
+    public void setVm_nowpayamount(Double vm_nowpayamount) {
+        this.vm_nowpayamount = vm_nowpayamount;
+    }
+
+    public Double getVm_nowprepayamount() {
+        return vm_nowprepayamount;
+    }
+
+    public void setVm_nowprepayamount(Double vm_nowprepayamount) {
+        this.vm_nowprepayamount = vm_nowprepayamount;
+    }
+
+    public Double getVm_endpreamount() {
+        return vm_endpreamount;
+    }
+
+    public void setVm_endpreamount(Double vm_endpreamount) {
+        this.vm_endpreamount = vm_endpreamount;
+    }
 
     public Integer getVm_id() {
         return vm_id;

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

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

+ 5 - 1
applications/money/money-server/src/main/resources/mapper/CustmonthMapper.xml

@@ -12,10 +12,14 @@
     <result column="cm_nowpreamount" property="cm_nowpreamount" jdbcType="DOUBLE" />
     <result column="cm_endamount" property="cm_endamount" jdbcType="DOUBLE" />
     <result column="companyid" property="companyid" jdbcType="INTEGER" />
+    <result column="cm_beginpreamount" property="cm_beginpreamount" jdbcType="DOUBLE" />
+    <result column="cm_nowpayamount" property="cm_nowpayamount" jdbcType="DOUBLE" />
+    <result column="cm_nowprepayamount" property="cm_nowprepayamount" jdbcType="DOUBLE" />
+    <result column="cm_endpreamount" property="cm_endpreamount" jdbcType="DOUBLE" />
   </resultMap>
   <sql id="Base_Column_List" >
     cm_id, cm_yearmonth, cm_custid, cm_custcode, cm_custname, CM_BEGINAMOUNT, CM_NOWAMOUNT, 
-    CM_NOWPREAMOUNT, CM_ENDAMOUNT, companyid
+    CM_NOWPREAMOUNT, CM_ENDAMOUNT, companyid,cm_endpreamount,cm_nowprepayamount,cm_nowpayamount,cm_beginpreamount
   </sql>
 
   <select id="selectByCondition" resultMap="BaseResultMap">

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

@@ -60,7 +60,7 @@ FROM
       </if>
     </where>
 		and	pi_id = pd_piid
-		AND pi_custid = cu_id and
+		AND pi_custid = cu_id and pi_status = '已审核' and
 prodinout.companyid= prodiodetail.companyid and prodiodetail.companyid = prodinout.companyid
 		GROUP BY
 			pi_custcode,
@@ -106,7 +106,7 @@ prodinout.companyid= prodiodetail.companyid and prodiodetail.companyid = prodino
 			</if>
 		</where>
 		and	pi_id = pd_piid
-		AND pi_custid = cu_id and
+		AND pi_custid = cu_id and pi_status = '已审核' and
 		prodinout.companyid= prodiodetail.companyid and prodiodetail.companyid = prodinout.companyid
 		GROUP BY
 		pi_custcode,

+ 5 - 1
applications/money/money-server/src/main/resources/mapper/VendmonthMapper.xml

@@ -12,10 +12,14 @@
     <result column="vm_nowpreamount" property="vm_nowpreamount" jdbcType="DOUBLE" />
     <result column="vm_endamount" property="vm_endamount" jdbcType="DOUBLE" />
     <result column="companyid" property="companyid" jdbcType="INTEGER" />
+    <result column="vm_beginpreamount" property="vm_beginpreamount" jdbcType="DOUBLE" />
+    <result column="vm_nowpayamount" property="vm_nowpayamount" jdbcType="DOUBLE" />
+    <result column="vm_nowprepayamount" property="vm_nowprepayamount" jdbcType="DOUBLE" />
+    <result column="vm_endpreamount" property="vm_endpreamount" jdbcType="DOUBLE" />
   </resultMap>
   <sql id="Base_Column_List" >
     vm_id, vm_yearmonth, vm_vendid, VM_VENDCODE, VM_VENDNAME, VM_BEGINAMOUNT, VM_NOWAMOUNT, 
-    VM_NOWPREAMOUNT, VM_ENDAMOUNT, companyid
+    VM_NOWPREAMOUNT, VM_ENDAMOUNT, companyid,vm_endpreamount,vm_nowprepayamount,vm_nowpayamount,vm_beginpreamount
   </sql>
 
   <select id="selectByCondition" resultMap="BaseResultMap">

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

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

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

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

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

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

+ 1 - 0
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/report/ProdiodetailView.java

@@ -30,5 +30,6 @@ public class ProdiodetailView implements Serializable{
     private String pd_remark;
     private Integer companyid;
 
+    private String pd_whname;
 
 }

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

@@ -20,6 +20,7 @@
     <result column="pd_price" jdbcType="DOUBLE" property="pd_price" />
     <result column="pd_remark" jdbcType="VARCHAR" property="pd_remark" />
     <result column="companyid" jdbcType="INTEGER" property="companyid" />
+    <result column="pd_whname" jdbcType="VARCHAR" property="pd_whname" />
   </resultMap>
 
 
@@ -55,7 +56,6 @@
         and  companyid = #{companyId}
       </if>
     </where>
-    order by pi_date desc
   </select>
 
 

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

@@ -190,9 +190,7 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
     listeners: {
         blur:function(f,e){
             var me = f;
-            var count = f.store.getCount();
-            var searchCount = false;//校验数据库是否有该字段
-            var dbfinds = me.dbfinds;
+            var dbfinds = me.dbfinds,data;
             if(f.value&&f.value!=''){
                 //添加默认条件
                 var searchField = null;
@@ -211,7 +209,7 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
                 }
                 dbCondition.push({
                     type: 'condition',
-                    value: searchField + "='"+me.value+"'"
+                    value: searchField + " like '%"+me.value+"%'"
                 });
                 Ext.Ajax.request({
                     url: me.dataUrl,
@@ -228,14 +226,11 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
                     success: function(response, opts) {
                         data = Ext.decode(response.responseText);
                         data = data.data?data.data.list:[];
-                        if(data.length>0){
-                            searchCount = true
-                        }
                     },
                     failure: function(response, opts) {}
                 }); 
             }
-            if(!f.value||f.value==''||!searchCount){
+            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++) {
@@ -269,6 +264,37 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
                         }
                     }
                 }
+            }else if(data.length==1){
+                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,data[0][item.from]);
+                            if(me.name==item.to){
+                                me.column.getEditor().setValue(data[0][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 = data[0][item.from];
+                                if(field.xtype=='dbfindtrigger'){
+                                    field.setRawValue(val);
+                                    field.setValue(val);
+                                    field.value = val;
+                                    field.lastTriggerValue=val;
+                                }else{
+                                    field.setValue(val);
+                                }    
+                            }
+                        }
+                    }
+                }
             }
         },
         select:function(combo,record,eOpts){

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

@@ -172,9 +172,7 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
 
     listeners: {
         blur:function(f,e){
-            var me = f;
-            var count = f.store.getCount();
-            var searchCount = false;//校验数据库是否有该字段
+            var me = f,data;
             var dbfinds = me.dbfinds;
             if(f.value&&f.value!=''){
                 //添加默认条件
@@ -194,7 +192,7 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
                 }
                 dbCondition.push({
                     type: 'condition',
-                    value: searchField + "='"+me.value+"'"
+                    value: searchField + " like '%"+me.value+"%'"
                 });
                 Ext.Ajax.request({
                     url: me.dataUrl,
@@ -211,14 +209,11 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
                     success: function(response, opts) {
                         data = Ext.decode(response.responseText);
                         data = data.data?data.data.list:[];
-                        if(data.length>0){
-                            searchCount = true
-                        }
                     },
                     failure: function(response, opts) {}
                 }); 
             }
-            if(!f.value||f.value==''||!searchCount){
+            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++) {
@@ -238,17 +233,18 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
                                 me.column.getEditor().setValue('');
                             }
                         }
-                    }else if(me.belong=='form'){
+                    }
+                }
+            }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 field = me.ownerCt.down('[name='+item.to+']');
-                            if(field){
-                                if(field.xtype=='dbfindtrigger'){
-                                    field.setValue(null);
-                                    field.lastTriggerValue=null;
-                                }else{
-                                    field.setValue(null);
-                                }    
+                            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]);
                             }
                         }
                     }

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

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

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

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

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

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

+ 9 - 1
frontend/saas-web/app/view/core/report/ReportPanel.js

@@ -335,6 +335,12 @@ Ext.define('saas.view.core.report.ReportPanel', {
                         var format = '0.' + xr.join();
                         return Ext.util.Format.number(v, format);
                     },
+                    exportStyle:{
+                        format: 'Total',
+                        alignment: {
+                            horizontal: 'Right'
+                        }
+                    }
                 });
             }
 
@@ -342,7 +348,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
                 me.initSummaryType(c);
                 summarys.push({
                     field: c.dataIndex,
-                    operation: c.summaryType == 'last' ? 'sum' : c.summaryType,
+                    operation: c._summaryType == 'last' ? 'sum' : c._summaryType,
                 });
             }
         })
@@ -368,6 +374,8 @@ Ext.define('saas.view.core.report.ReportPanel', {
             column.summaryType = function (records, values) {
                 return values[values.length - 1];
             }
+        }else {
+            column._summaryType = summaryType;
         }
     },
 

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

@@ -51,6 +51,7 @@ Ext.define('saas.view.document.bom.BasePanel', {
     //字段属性
     _formXtype:'document-bom-formpanel',
     _title:'BOM资料',
+    caller:'Bom',
     _deleteUrl:'/api/document/bom/delete',
     _batchOpenUrl:'/api/document/bom/batchOpen',
     _batchCloseUrl:'/api/document/bom/batchClose',

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

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

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

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

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

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

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

@@ -38,12 +38,11 @@ Ext.define('saas.view.money.report.ProfitDetail', {
         columnWidth: 0.5
     }],
 
-    reportColumns: [
-        {
-            text: '客户',
-            dataIndex: 'pi_custname',
-            width: 200,
-        },{
+    reportColumns: [{
+        text: '客户',
+        dataIndex: 'pi_custname',
+        width: 200,
+    },{
         text: '客户类型',
         dataIndex: 'cu_type',
         width: 200,
@@ -54,48 +53,70 @@ Ext.define('saas.view.money.report.ProfitDetail', {
     }, {
         text: '销售总额',
         dataIndex: 'saamount',
-        width: 150,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            summaryType: 'sum',
-            summaryRenderer: function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
+        xtype: 'numbercolumn',
+        width: 110,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
         text: '不含税金额',
         dataIndex: 'netamount',
-        width: 150
+        xtype: 'numbercolumn',
+        width: 110,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
     }, {
         text: '成本金额',
         dataIndex: 'costamount',
-        width: 150
+        xtype: 'numbercolumn',
+        width: 110,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
     }, {
         text: '毛利润',
         dataIndex: 'profit',
-        width: 150,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            summaryType: 'sum',
-            summaryRenderer: function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
+        xtype: 'numbercolumn',
+        width: 110,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
-        text: '毛利率',
+        text: '毛利率%',
         dataIndex: 'profitpresent',
-        width: 150
+        width: 130,
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
+    },{
+        flex: 1
     }]
 });

+ 33 - 7
frontend/saas-web/app/view/money/report/TotalPayDetail.js

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

+ 34 - 6
frontend/saas-web/app/view/money/report/TotalRecDetail.js

@@ -42,20 +42,48 @@ Ext.define('saas.view.money.report.TotalRecDetail', {
         dataIndex: 'cm_custname',
         width: 200,
     }, {
+            text: '期初预收',
+            dataIndex: 'cm_beginpreamount',
+            width: 150
+        },{
         text: '期初应收',
         dataIndex: 'cm_beginamount',
-        width: 150
+        xtype: 'numbercolumn',
+        width: 150,
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
-        text: '增加应收',
+        text: '本期应收',
         xtype: 'numbercolumn',
         dataIndex: 'cm_nowamount',
-        width: 150
+        width: 150,
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
-        text: '增加预收',
+        text: '本期核销',
         xtype: 'numbercolumn',
-        dataIndex: 'cm_nowpreamount',
-        width: 150
+        dataIndex: 'cm_nowpayamount',
+        width: 150,
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     }, {
+            text: '预收余额',
+            xtype: 'numbercolumn',
+            dataIndex: 'cm_endpreamount',
+            width: 150
+        }, {
         text: '应收余额',
         dataIndex: 'cm_endamount',
         xtype: 'numbercolumn',

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

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

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

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

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

@@ -66,6 +66,12 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
         xtype: 'numbercolumn',
         width: 110,
         summaryType: 'sum',
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
@@ -78,6 +84,12 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
         xtype: 'numbercolumn',
         width: 110,
         summaryType: 'sum',
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');

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

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

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

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

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

@@ -44,22 +44,15 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                 xtype : "customerDbfindTrigger", 
                 name : "sa_custname", 
                 fieldLabel : "客户名称",
-                allowBlank : false
-            }, {
-                name : "sa_toplace", 
-                xtype : "remotecombo", 
-                fieldLabel : "交货地址", 
-                editable:false,
-                allowBlank : false, 
-                columnWidth : 0.5,
-                storeUrl:'/api/document/customer/getAddressCombo',
-                hiddenBtn:true,//true 则会关闭新增按钮功能
+                allowBlank : false,
                 setValue:function(value){
                     var me = this,bind, valueBind;
+                    var form = me.ownerCt;
+                    var c = form.down('[name=sa_toplace]');
                     if(value&&value!=''){
-                        me.setDisabled(false);
+                        c.setDisabled(false);
                     }else{
-                        me.setDisabled(true);
+                        c.setDisabled(true);
                     }
                     if (me.hasFocus) {
                         bind = me.getBind();
@@ -87,6 +80,15 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                     }
                     return me;
                 }
+            }, {
+                name : "sa_toplace", 
+                xtype : "remotecombo", 
+                fieldLabel : "交货地址", 
+                editable:false,
+                allowBlank : false, 
+                columnWidth : 0.5,
+                storeUrl:'/api/document/customer/getAddressCombo',
+                hiddenBtn:true,//true 则会关闭新增按钮功能
             }, {
                 name : "detailGridField", 
                 xtype : "detailGridField", 

+ 44 - 5
frontend/saas-web/app/view/sale/saleIn/FormPanel.js

@@ -50,6 +50,50 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
         name : "pi_custname", 
         fieldLabel : "客户名称",
         allowBlank:false,
+        setValue:function(value){
+            var me = this,bind, valueBind;
+            var form = me.ownerCt;
+            var c = form.down('[name=pi_address]');
+            if(value&&value!=''){
+                c.setDisabled(false);
+            }else{
+                c.setDisabled(true);
+            }
+            if (me.hasFocus) {
+                bind = me.getBind();
+                valueBind = bind && bind.value;
+                if (valueBind && valueBind.syncing) {
+                    if ((Ext.isEmpty(value) && Ext.isEmpty(me.value)) || value === me.value) {
+                        return me;
+                    } else if (Ext.isArray(value) && Ext.isArray(me.value) && Ext.Array.equals(value, me.value)) {
+                        return me;
+                    }
+                }
+            } else {
+                me.lastSelectedRecords = null;
+            }
+    
+            if (value != null) {
+                me.doSetValue(value);
+            }
+            else {
+                me.suspendEvent('select');
+                me.valueCollection.beginUpdate();
+                me.pickerSelectionModel.deselectAll();
+                me.valueCollection.endUpdate();
+                me.resumeEvent('select');
+            }
+            return me;
+        }
+    }, {
+        columnWidth : 0.5,
+        name : "pi_address", 
+        xtype : "remotecombo", 
+        fieldLabel : "交货地址", 
+        editable:false,
+        allowBlank : false, 
+        storeUrl:'/api/document/customer/getAddressCombo',
+        hiddenBtn:true,//true 则会关闭新增按钮功能
     }, {
         xtype : "datefield", 
         name : "pi_date", 
@@ -57,11 +101,6 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
         allowBlank : false, 
         columnWidth : 0.25,
         defaultValue: new Date()
-    }, {
-        xtype : "textfield", 
-        name : "pi_address", 
-        fieldLabel : "交货地址", 
-        columnWidth : 0.5
     }, {
         name : "detailGridField", 
         xtype : "detailGridField", 

+ 20 - 0
frontend/saas-web/app/view/sale/saleIn/FormPanelController.js

@@ -67,6 +67,26 @@ Ext.define('saas.view.sale.saleIn.FormPanelController', {
                     });
 
                 }
+            },
+            'remotecombo[name=pi_address]':{
+                focus:function(f){
+                    //获取客户ID
+                    var pi_custid = f.ownerCt.down('[name=pi_custid]').value;
+                    if(pi_custid&&pi_custid!=""){
+                        Ext.apply(f.store.proxy.extraParams, {
+                            id:pi_custid
+                        });
+                        f.store.load();
+                    }else{
+                        saas.util.BaseUtil.showErrorToast('请先选择客户后在维护交货地址');
+                        f.setDisabled(true);
+                    }
+                },
+                expand:function(f){
+                    if(f.picker&&f.isExpanded){
+                        f.picker.setHeight(33*f.store.getCount())
+                    }
+                }
             }
         });
     }

+ 44 - 5
frontend/saas-web/app/view/sale/saleOut/FormPanel.js

@@ -59,6 +59,50 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
         name : "pi_custname", 
         fieldLabel : "客户名称",
         allowBlank:false,
+        setValue:function(value){
+            var me = this,bind, valueBind;
+            var form = me.ownerCt;
+            var c = form.down('[name=pi_address]');
+            if(value&&value!=''){
+                c.setDisabled(false);
+            }else{
+                c.setDisabled(true);
+            }
+            if (me.hasFocus) {
+                bind = me.getBind();
+                valueBind = bind && bind.value;
+                if (valueBind && valueBind.syncing) {
+                    if ((Ext.isEmpty(value) && Ext.isEmpty(me.value)) || value === me.value) {
+                        return me;
+                    } else if (Ext.isArray(value) && Ext.isArray(me.value) && Ext.Array.equals(value, me.value)) {
+                        return me;
+                    }
+                }
+            } else {
+                me.lastSelectedRecords = null;
+            }
+    
+            if (value != null) {
+                me.doSetValue(value);
+            }
+            else {
+                me.suspendEvent('select');
+                me.valueCollection.beginUpdate();
+                me.pickerSelectionModel.deselectAll();
+                me.valueCollection.endUpdate();
+                me.resumeEvent('select');
+            }
+            return me;
+        }
+    }, {
+        columnWidth : 0.5,
+        name : "pi_address", 
+        xtype : "remotecombo", 
+        fieldLabel : "交货地址", 
+        editable:false,
+        allowBlank : false, 
+        storeUrl:'/api/document/customer/getAddressCombo',
+        hiddenBtn:true,//true 则会关闭新增按钮功能
     }, {
         xtype : "datefield", 
         name : "pi_date", 
@@ -66,11 +110,6 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
         allowBlank : false, 
         columnWidth : 0.25,
         defaultValue: new Date()
-    }, {
-        xtype : "textfield", 
-        name : "pi_address", 
-        fieldLabel : "交货地址", 
-        columnWidth : 0.5
     }, {
         name : "detailGridField", 
         xtype : "detailGridField", 

+ 20 - 0
frontend/saas-web/app/view/sale/saleOut/FormPanelController.js

@@ -59,6 +59,26 @@ Ext.define('saas.view.sale.saleout.FormPanelController', {
                     }) ;   
 
                 }
+            },
+            'remotecombo[name=pi_address]':{
+                focus:function(f){
+                    //获取客户ID
+                    var pi_custid = f.ownerCt.down('[name=pi_custid]').value;
+                    if(pi_custid&&pi_custid!=""){
+                        Ext.apply(f.store.proxy.extraParams, {
+                            id:pi_custid
+                        });
+                        f.store.load();
+                    }else{
+                        saas.util.BaseUtil.showErrorToast('请先选择客户后在维护交货地址');
+                        f.setDisabled(true);
+                    }
+                },
+                expand:function(f){
+                    if(f.picker&&f.isExpanded){
+                        f.picker.setHeight(33*f.store.getCount())
+                    }
+                }
             }
         });
     },

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

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

+ 9 - 53
frontend/saas-web/app/view/stock/report/DataList.js

@@ -47,7 +47,7 @@ Ext.define('saas.view.stock.report.DataList', {
         }
     }],
 
-    reportColumns2: [{
+    reportColumns: [{
         text: "物料编号",
         width: 200,
         dataIndex: "rc_prodCode",
@@ -68,6 +68,8 @@ Ext.define('saas.view.stock.report.DataList', {
     }, {
         text: "仓库名称",
         dataIndex: "rc_whName",
+        hidden: true,
+        toggle: true,
         width: 110,
     }, {
         text: "数量",
@@ -87,63 +89,17 @@ Ext.define('saas.view.stock.report.DataList', {
     }, {
         text: "单价",
         xtype: 'numbercolumn',
+        hidden: true,
+        toggle: true,
         align: 'end',
         dataIndex: "rc_price",
         width: 120,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
-            return Ext.util.Format.number(v, format);
-        }
-    }, {
-        text: "金额",
-        xtype: 'numbercolumn',
-        dataIndex: "rc_amount",
-        width: 120,
-        renderer: function (v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
-            return Ext.util.Format.number(v, format);
-        },
-        summaryType: 'sum',
-        summaryRenderer: function(v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
-            return Ext.util.Format.number(v, format);
-        }
-    }],
-
-    reportColumns: [{
-        text: "物料编号",
-        width: 200,
-        dataIndex: "rc_prodCode",
-        xtype: "",
-    }, {
-        text: "物料名称",
-        width: 200,
-        dataIndex: "rc_prodDetail",
-    }, {
-        text: "物料规格",
-        dataIndex: "rc_prodSpec",
-        width: 200,
-    }, {
-        text: "数量",
-        xtype: 'numbercolumn',
-        dataIndex: "rc_number",
-        width: 120,
-        renderer: function (v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
-    },{
-        text: "单位",
-        dataIndex: "rc_prodUnit",
-        width: 80,
     }, {
         text: "金额",
         xtype: 'numbercolumn',
@@ -152,17 +108,17 @@ Ext.define('saas.view.stock.report.DataList', {
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
     }, {
         flex: 1
-    }]
+    }],
 })

+ 13 - 6
frontend/saas-web/app/view/stock/report/DataListController.js

@@ -7,8 +7,16 @@ Ext.define('saas.view.stock.report.DataListController', {
         reportPanel = me.getView(),
         form = reportPanel.down('form'),
         grid = reportPanel.down('grid'),
-        store = grid.store,
-        columns = [];
+        columns = grid.columns,
+        toggleColumns = [],
+        store = grid.store;
+
+        for(var x = 0; x < columns.length; x++) {
+            var c = columns[x];
+            if(c.toggle) {
+                toggleColumns.push(c);
+            }
+        }
         
         var whCodeField = form.getForm().findField('wh_code');
         var con = form.items.items[3];
@@ -19,16 +27,15 @@ Ext.define('saas.view.stock.report.DataListController', {
         if(newValue) {
             con.columnWidth = 0.4;
             reportPanel.queryMode = 'DETAIL';
-            columns = reportPanel.reportColumns2;
         }else {
             con.columnWidth = 0.65;
             reportPanel.queryMode = 'MAIN';
-            columns = reportPanel.reportColumns;
         }
         
         form.updateLayout();
-        store.load(function() {
-            grid.reconfigure(store, columns);
+        toggleColumns.map(function(c) {
+            c.setHidden(!newValue);
         });
+        store.load();
     }
 });

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

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

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

@@ -50,8 +50,6 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         fieldLabel: '单据日期',
         columnWidth: 0.4
     }],
-  //  单号	单据类型	客户/供应商编号	客户/供应商名称	单据日期	序号	
-  //物料类型	物料编号	物料名称	物料规格	单位	入库数量	出库数量	成本单价	备注
     reportColumns: [{
         text: 'id',
         dataIndex: 'id',
@@ -97,9 +95,9 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         dataIndex: 'pr_spec',
         width: 150
     }, {
-        text: '单位',
-        dataIndex: 'pr_unit',
-        width: 80
+        text: '仓库',
+        dataIndex: 'pd_whname',
+        width: 150
     }, {
         text: '入库数量',
         xtype: 'numbercolumn',
@@ -128,7 +126,12 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         text: '成本单价',
         xtype: 'numbercolumn',
         dataIndex: 'pd_price',
-        xtype: 'numbercolumn'
+        renderer: function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
     },{
         text: '订单号',
         dataIndex: 'pd_ordercode',

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

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

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

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