Forráskód Böngészése

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

zhouy 7 éve
szülő
commit
9e82e0734f
61 módosított fájl, 906 hozzáadás és 298 törlés
  1. 5 5
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/dto/ListReqDTO.java
  2. 5 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  3. 11 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/ProfitdetailMapper.java
  4. 2 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/VerificationMapper.java
  5. 109 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Profitpresent.java
  6. 7 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/MoneyReportServiceImpl.java
  7. 2 3
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  8. 123 0
      applications/money/money-server/src/main/resources/mapper/ProfitdetailMapper.xml
  9. 3 3
      applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml
  10. 2 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/SaleList.java
  11. 2 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SaleProfitView.java
  12. 3 1
      applications/sale/sale-server/src/main/resources/mapper/SaleListMapper.xml
  13. 2 1
      applications/sale/sale-server/src/main/resources/mapper/SaleProfitViewMapper.xml
  14. 4 0
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/StocktakingServiceImpl.java
  15. 18 0
      applications/storage/storage-server/src/main/resources/mapper/ProdIODetailMapper.xml
  16. 0 1
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutReportMapper.xml
  17. 1 1
      base-servers/account/account-server/src/main/resources/application.yml
  18. 3 3
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  19. 1 1
      base-servers/auth/sso-api/src/test/resources/application.yml
  20. 1 1
      frontend/saas-portal-web/config/dev.env.js
  21. 1 1
      frontend/saas-portal-web/config/test.env.js
  22. 2 2
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  23. 65 0
      frontend/saas-web/app/Application.scss
  24. 2 2
      frontend/saas-web/app/view/core/form/field/ConDateField.js
  25. 3 0
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  26. 3 1
      frontend/saas-web/app/view/document/bom/BasePanel.js
  27. 4 1
      frontend/saas-web/app/view/document/customer/BasePanel.js
  28. 3 1
      frontend/saas-web/app/view/document/product/BasePanel.js
  29. 2 0
      frontend/saas-web/app/view/document/vendor/BasePanel.js
  30. 18 16
      frontend/saas-web/app/view/home/Home.js
  31. 22 54
      frontend/saas-web/app/view/home/Home.scss
  32. 36 36
      frontend/saas-web/app/view/home/HomeModel.js
  33. 47 26
      frontend/saas-web/app/view/home/charts/KeyData.js
  34. 9 0
      frontend/saas-web/app/view/home/charts/KeyData.scss
  35. 1 1
      frontend/saas-web/app/view/home/infoCardList/Payment.js
  36. 4 1
      frontend/saas-web/app/view/home/infoCardList/Recment.js
  37. 1 1
      frontend/saas-web/app/view/main/Main.js
  38. 2 0
      frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js
  39. 14 2
      frontend/saas-web/app/view/money/report/AccountDetails.js
  40. 37 17
      frontend/saas-web/app/view/money/report/CustomerCheck.js
  41. 76 24
      frontend/saas-web/app/view/money/report/ProfitDetail.js
  42. 22 4
      frontend/saas-web/app/view/money/report/TotalPayDetail.js
  43. 22 3
      frontend/saas-web/app/view/money/report/TotalRecDetail.js
  44. 39 25
      frontend/saas-web/app/view/money/report/VendorCheck.js
  45. 16 0
      frontend/saas-web/app/view/money/verification/FormPanelController.js
  46. 2 1
      frontend/saas-web/app/view/purchase/purchase/QueryPanel.js
  47. 3 1
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  48. 2 1
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js
  49. 12 0
      frontend/saas-web/app/view/purchase/report/PurchasePay.js
  50. 2 2
      frontend/saas-web/app/view/sale/report/Sale.js
  51. 1 1
      frontend/saas-web/app/view/sale/report/SaleProfit.js
  52. 10 4
      frontend/saas-web/app/view/sale/saleIn/QueryPanel.js
  53. 8 3
      frontend/saas-web/app/view/sale/saleOut/QueryPanel.js
  54. 17 18
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  55. 10 7
      frontend/saas-web/app/view/stock/report/DataList.js
  56. 16 10
      frontend/saas-web/app/view/stock/report/DataListController.js
  57. 56 8
      frontend/saas-web/app/view/stock/report/ProdinoutCount.js
  58. 6 1
      frontend/saas-web/app/view/stock/report/Prodiodetail.js
  59. 1 1
      frontend/saas-web/ext/packages/ux/classic/sass/var/layout/ResponsiveColumn.scss
  60. 1 1
      frontend/saas-web/index.html
  61. 4 0
      frontend/saas-web/resources/json/navigation.json

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

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

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

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

+ 11 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/ProfitdetailMapper.java

@@ -0,0 +1,11 @@
+package com.usoftchina.saas.money.mapper;
+
+import com.usoftchina.saas.money.po.Profitpresent;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ProfitdetailMapper {
+    List<Profitpresent> selectByCondition(@Param("con") String con, @Param("companyId") Long companyId);
+    String selectCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
+}

+ 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);
 }

+ 109 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Profitpresent.java

@@ -0,0 +1,109 @@
+package com.usoftchina.saas.money.po;
+
+import java.util.Date;
+
+/**
+ * @author heqw
+ * @date 2018/12/10 10:45
+ **/
+public class Profitpresent {
+    private Date pi_date;
+    private Integer pi_ym;
+    private String pi_custcode;
+    private String pi_custname;
+    private String cu_sellername;
+    private Double saamount;
+    private Double netamount;
+    private Double costamount;
+    private Double profit;
+    private Double profitpresent;
+    private String cu_type;
+
+    public String getCu_type() {
+        return cu_type;
+    }
+
+    public void setCu_type(String cu_type) {
+        this.cu_type = cu_type;
+    }
+
+    public Date getPi_date() {
+        return pi_date;
+    }
+
+    public void setPi_date(Date pi_date) {
+        this.pi_date = pi_date;
+    }
+
+    public Integer getPi_ym() {
+        return pi_ym;
+    }
+
+    public void setPi_ym(Integer pi_ym) {
+        this.pi_ym = pi_ym;
+    }
+
+    public String getPi_custcode() {
+        return pi_custcode;
+    }
+
+    public void setPi_custcode(String pi_custcode) {
+        this.pi_custcode = pi_custcode;
+    }
+
+    public String getPi_custname() {
+        return pi_custname;
+    }
+
+    public void setPi_custname(String pi_custname) {
+        this.pi_custname = pi_custname;
+    }
+
+    public String getCu_sellername() {
+        return cu_sellername;
+    }
+
+    public void setCu_sellername(String cu_sellername) {
+        this.cu_sellername = cu_sellername;
+    }
+
+    public Double getSaamount() {
+        return saamount;
+    }
+
+    public void setSaamount(Double saamount) {
+        this.saamount = saamount;
+    }
+
+    public Double getNetamount() {
+        return netamount;
+    }
+
+    public void setNetamount(Double netamount) {
+        this.netamount = netamount;
+    }
+
+    public Double getCostamount() {
+        return costamount;
+    }
+
+    public void setCostamount(Double costamount) {
+        this.costamount = costamount;
+    }
+
+    public Double getProfit() {
+        return profit;
+    }
+
+    public void setProfit(Double profit) {
+        this.profit = profit;
+    }
+
+    public Double getProfitpresent() {
+        return profitpresent;
+    }
+
+    public void setProfitpresent(Double profitpresent) {
+        this.profitpresent = profitpresent;
+    }
+}

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

@@ -43,6 +43,8 @@ public class MoneyReportServiceImpl implements MoneyReportService {
     private CustmonthMapper custmonthMapper;
     @Autowired
     private BanksubledgerMapper banksubledgerMapper;
+    @Autowired
+    private ProfitdetailMapper profitdetailMapper;
 
     @Override
     public Map<String, Object> vendorCheck(PageRequest page, ListReqDTO req) {
@@ -278,6 +280,11 @@ public class MoneyReportServiceImpl implements MoneyReportService {
             if (!StringUtils.isEmpty(calculateFieldsSql)) {
                 res = banksubledgerMapper.selectCalculateFields(calculateFieldsSql, con, companyId);
             }
+        }else if("profitdetails".equals(type)){
+            list = profitdetailMapper.selectByCondition(con, companyId);
+            if (!StringUtils.isEmpty(calculateFieldsSql)) {
+                res = profitdetailMapper.selectCalculateFields(calculateFieldsSql, con, companyId);
+            }
         }
 
         try {

+ 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());

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

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.usoftchina.saas.money.mapper.ProfitdetailMapper" >
+  <resultMap id="BaseResultMap" type="com.usoftchina.saas.money.po.Profitpresent" >
+    <result column="pi_ym" property="pi_ym" jdbcType="INTEGER" />
+    <result column="pi_custcode" property="pi_custcode" jdbcType="VARCHAR" />
+    <result column="pi_custname" property="pi_custname" jdbcType="VARCHAR" />
+	  <result column="cu_type" property="cu_type" jdbcType="VARCHAR" />
+    <result column="cu_sellername" property="cu_sellername" jdbcType="VARCHAR" />
+    <result column="saamount" property="saamount" jdbcType="DOUBLE" />
+    <result column="netamount" property="netamount" jdbcType="DOUBLE" />
+    <result column="costamount" property="costamount" jdbcType="DOUBLE" />
+    <result column="profit" property="profit" jdbcType="DOUBLE" />
+    <result column="profitpresent" property="profitpresent" jdbcType="DOUBLE" />
+    <result column="pi_date" property="pi_date" jdbcType="TIMESTAMP" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    cu_type, pi_custcode, pi_custname, cu_sellername, saamount, netamount, costamount, profit,
+    profitpresent
+  </sql>
+
+  <select id="selectByCondition" parameterType="java.lang.Long" resultMap="BaseResultMap">
+   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
+			pi_custcode,
+			pi_custname,
+	        cu_type,
+			cu_sellername,
+			SUM(
+				pd_sendprice * (pd_outqty - pd_inqty)
+			) AS saamount,
+			SUM(
+				pd_netprice * (pd_outqty - pd_inqty)
+			) AS netamount,
+			SUM(
+				pd_price * (pd_outqty - pd_inqty)
+			) AS costamount
+		FROM
+			prodinout,
+			prodiodetail,
+			customer
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and  prodinout.companyid = #{companyId}
+      </if>
+    </where>
+		and	pi_id = pd_piid
+		AND pi_custid = cu_id and
+prodinout.companyid= prodiodetail.companyid and prodiodetail.companyid = prodinout.companyid
+		GROUP BY
+			pi_custcode,
+			pi_custname,
+	        cu_type,
+			cu_sellername
+	) a GROUP BY
+			a.pi_custcode,
+			a.pi_custname,
+	        a.cu_type,
+			a.cu_sellername
+	  ORDER BY a.pi_custname asc,a.pi_custname desc
+  </select>
+
+	<select id="selectCalculateFields" resultType="string">
+		SELECT ${fields}
+		FROM
+		(
+		SELECT
+		pi_custcode,
+		pi_custname,
+		cu_type,
+		cu_sellername,
+		SUM(
+		pd_sendprice * (pd_outqty - pd_inqty)
+		) AS saamount,
+		SUM(
+		pd_netprice * (pd_outqty - pd_inqty)
+		) AS netamount,
+		SUM(
+		pd_price * (pd_outqty - pd_inqty)
+		) AS costamount
+		FROM
+		prodinout,
+		prodiodetail,
+		customer
+		<where>
+			<if test="con != null">
+				${con}
+			</if>
+			<if test="companyId != null">
+				and  prodinout.companyid = #{companyId}
+			</if>
+		</where>
+		and	pi_id = pd_piid
+		AND pi_custid = cu_id and
+		prodinout.companyid= prodiodetail.companyid and prodiodetail.companyid = prodinout.companyid
+		GROUP BY
+		pi_custcode,
+		pi_custname,
+		cu_type,
+		cu_sellername
+		) a GROUP BY
+		a.pi_custcode,
+		a.pi_custname,
+		a.cu_type,
+		a.cu_sellername
+	</select>
+
+</mapper>

+ 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/SaleList.java

@@ -65,6 +65,8 @@ public class SaleList implements Serializable {
 
     private String sa_auditman;
 
+    private String sa_seller;
+
     private Integer sa_sellerid;
 
     private Integer sd_id;

+ 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;
 }

+ 3 - 1
applications/sale/sale-server/src/main/resources/mapper/SaleListMapper.xml

@@ -28,6 +28,7 @@
         <result column="sa_text3" property="sa_text3" jdbcType="VARCHAR" />
         <result column="sa_text4" property="sa_text4" jdbcType="VARCHAR" />
         <result column="sa_text5" property="sa_text5" jdbcType="VARCHAR" />
+        <result column="sa_seller" property="sa_seller" jdbcType="VARCHAR" />
         <result column="sa_sellerid" property="sa_sellerid" jdbcType="INTEGER" />
         <result column="sd_id" property="sd_id" jdbcType="INTEGER" />
         <result column="sd_said" property="sd_said" jdbcType="INTEGER" />
@@ -81,8 +82,9 @@
         select  *  from sale left join saledetail on sa_id=sd_said left join product
         on sd_prodid = pr_id and sale.companyId = product.companyid
         <where>
+            sa_statuscode='AUDITED'
             <if test="con != null">
-                ${con}
+               and  ${con}
             </if>
             <if test="companyId != null">
                 and   sale.companyId = #{companyId}

+ 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">

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

@@ -103,6 +103,7 @@ public class StocktakingServiceImpl extends CommonBaseServiceImpl<StockTakingMap
             prodIn.setPi_status("未审核");
             prodIn.setPi_statuscode("UNAUDITED");
             prodIn.setCompanyId(companyId);
+            prodIn.setCreateTime(new Date());
             prodIn.setPi_remark("盘盈单");
             prodInOutMapper.insertSelective(prodIn);
             long inid = prodIn.getId();
@@ -128,6 +129,7 @@ public class StocktakingServiceImpl extends CommonBaseServiceImpl<StockTakingMap
                 prodInDetail.setCompanyId(companyId);
                 prodInDetail.setCreateTime(new Date());
                 prodInDetail.setCreatorId(userId);
+                prodInDetail.setCreatorName(userName);
                 prodInDetail.setPd_remark("盘盈单");
                 prodIODetailMapper.insertSelective(prodInDetail);
             }
@@ -147,6 +149,7 @@ public class StocktakingServiceImpl extends CommonBaseServiceImpl<StockTakingMap
             prodOut.setPi_statuscode("UNAUDITED");
             prodOut.setCompanyId(companyId);
             prodOut.setPi_remark("盘亏单");
+            prodOut.setCreateTime(new Date());
             prodInOutMapper.insertSelective(prodOut);
             long outid = prodOut.getId();
             //更新录入人
@@ -168,6 +171,7 @@ public class StocktakingServiceImpl extends CommonBaseServiceImpl<StockTakingMap
                 prodOutDetail.setCompanyId(companyId);
                 prodOutDetail.setCreateTime(new Date());
                 prodOutDetail.setCreatorId(userId);
+                prodOutDetail.setCreatorName(userName);
                 prodOutDetail.setPd_remark("盘亏单");
                 prodIODetailMapper.insertSelective(prodOutDetail);
             }

+ 18 - 0
applications/storage/storage-server/src/main/resources/mapper/ProdIODetailMapper.xml

@@ -219,6 +219,15 @@
       <if test="pd_ioid != null">
         pd_ioid,
       </if>
+      <if test="creatorId != null" >
+        creatorId,
+      </if>
+      <if test="creatorName != null" >
+        creatorName,
+      </if>
+      <if test="createTime != null" >
+        createTime,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="pd_piid != null">
@@ -338,6 +347,15 @@
       <if test="pd_ioid != null">
         #{pd_ioid,jdbcType=INTEGER},
       </if>
+      <if test="creatorId != null" >
+        #{creatorId,jdbcType=INTEGER},
+      </if>
+      <if test="creatorName != null">
+        #{creatorName,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null" >
+        #{createTime,jdbcType=TIMESTAMP}
+      </if>
     </trim>
   </insert>
   <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.storage.po.ProdIODetail">

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

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

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

@@ -83,7 +83,7 @@ auth:
   public-key: auth/pub.key
 sso:
 #  base-url: https://sso.ubtob.com
-  base-url: https://tsso.usoftchina.com/
+  base-url: https://test-sso.uuzcc.cn
 ribbon:
   ReadTimeout: 6000
   ConnectTimeout: 2000

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

@@ -231,7 +231,7 @@ public class AuthController {
                     accountDTO = createAccountByCookieInfo(info);
                 } else {
                     logger.error(result.getMessage());
-                    ServletUtils.writeJsonPMessage(response, callback, false);
+                    //ServletUtils.writeJsonPMessage(response, callback, false);
                     return "successCallback({success:'0'})";
                 }
             } else {
@@ -242,7 +242,7 @@ public class AuthController {
                     Result updateResult = accountApi.update(BeanMapper.map(accountDTO, AccountUpdateDTO.class));
                     if (!updateResult.isSuccess()) {
                         logger.error(updateResult.getMessage());
-                        ServletUtils.writeJsonPMessage(response, callback, false);
+                        //ServletUtils.writeJsonPMessage(response, callback, false);
                         return "successCallback({success:'0'})";
                     }
                 }
@@ -265,7 +265,7 @@ public class AuthController {
                 socketMessageApi.sendToClient(clientId, "/sso/callback",
                         JsonUtils.toJsonString(new AuthDTO(tokenDTO, accountDTO)));
             }
-            ServletUtils.writeJsonPMessage(response, callback, true);
+            //ServletUtils.writeJsonPMessage(response, callback, true);
             return "successCallback({success:'1'})";
         }
         return "successCallback({success:'0'})";

+ 1 - 1
base-servers/auth/sso-api/src/test/resources/application.yml

@@ -1,3 +1,3 @@
 sso:
-  base-url: https://tsso.usoftchina.com
+  base-url: https://test-sso.uuzcc.cn
 #  base-url: https://sso.ubtob.com

+ 1 - 1
frontend/saas-portal-web/config/dev.env.js

@@ -10,6 +10,6 @@ module.exports = merge(prodEnv, {
     // 后端接口网关
     api: '"https://saas-api-dev.usoftchina.com:5443"',
     // 账户中心接口
-    sso: '"https://tsso.usoftchina.com"'
+    sso: '"https://test-sso.uuzcc.cn"'
   }
 })

+ 1 - 1
frontend/saas-portal-web/config/test.env.js

@@ -10,6 +10,6 @@ module.exports = merge(devEnv, {
     // 后端接口网关
     api: '"https://saas-api-test.usoftchina.com:5443"',
     // 账户中心接口
-    sso: '"https://tsso.usoftchina.com"'
+    sso: '"https://test-sso.uuzcc.cn"'
   }
 })

+ 2 - 2
frontend/saas-portal-web/src/components/conenter/enterprise.vue

@@ -19,12 +19,12 @@
                 <ul id="nav" class="nav navbar-nav menu">
                     <li><router-link to="/home"><a href="#"><span style="color: white">首页</span></a></router-link></li>
                     <li><a href="https://uas.usoftchina.com/about" target="_blank"><span>关于我们</span></a></li>
-                    <li style="margin-left:30px">
+                    <li style="margin-left:30px;    margin-top: 13px;    cursor: pointer;">
                         <span style="color:#fff;font-size: 16px;">
                             <img style="width: 20px;" src="/static/img/assets/denglu3x.png" alt="">
                             {{mytoken.realname}}
                         </span>
-                        <a href=""><span @click="loginout">【退出】</span></a>
+                        <span style="color:#fff;" @click="loginout">【退出】</span>
                     </li>
                 </ul>
             </div>

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

@@ -491,4 +491,69 @@ div::-webkit-scrollbar-track {
   & > div > div > div.x-box-inner.x-box-scroller-body-vertical.x-scroller > div > div > a > span {
     margin-left: 28px;
   }
+}
+
+/** responsivecolumn **/
+.x-responsivecolumn {
+  padding: 0;
+
+  & > * {
+      margin: 0;
+
+  }
+}
+
+// @mixin responsivecolumn-item($width: 100%) {
+//   width: #{$width};
+// }
+
+.big-100 {
+  // width: 100%;
+  @include responsivecolumn-item(100%);
+}
+
+.big-60 {
+  // width: 60%;
+  @include responsivecolumn-item(60%);
+}
+
+.big-50 {
+  float: left;
+  // width: 50%;
+  @include responsivecolumn-item(50%);
+}
+
+.big-40 {
+  float: left;
+  // width: 40%;
+  @include responsivecolumn-item(40%);
+}
+
+.big-33 {
+  float: left;
+  // width: 33.33%;
+  @include responsivecolumn-item(33.33%);
+}
+
+.big-20 {
+  float: left;
+  // width: 20%;
+  @include responsivecolumn-item(20%);
+}
+
+//--------------------------------------------------------
+// And classes for small-size responsive items
+
+.x-responsivecolumn-small {
+   > .small-100 {
+      float: left;
+      // width: 100%;
+      @include responsivecolumn-item(100%);
+   }
+
+   > .small-50 {
+      float: left;
+      // width: 50%;
+      @include responsivecolumn-item(50%);
+   }
 }

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

@@ -190,8 +190,8 @@ Ext.define('saas.view.core.form.field.ConDateField', {
             to.setValue(null);
             me.firstVal = null;
             me.secondVal = null;
-            from.setEditable(true);
-            to.setEditable(true);
+            //from.setEditable(true);
+            //to.setEditable(true);
         } else {
             from.setValue(minDate);
             to.setValue(maxDate);

+ 3 - 0
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -234,6 +234,8 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             }
         });
 
+        // 不写该方法合计列会错位,这里触发afterEdit事件用来刷新grid
+        store.getAt(0) ? store.afterEdit(store.getAt(0), ['']) : null;
         me.fireEvent('validChange');
         return r;
     },
@@ -282,6 +284,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             store.remove(selectedRecord);
             me.fireEvent('validChange');
         }
+        // 不写该方法合计列会错位,这里触发afterEdit事件用来刷新grid
         store.getAt(0) ? store.afterEdit(store.getAt(0), ['']) : null;
     },
 

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

@@ -19,7 +19,8 @@ Ext.define('saas.view.document.bom.BasePanel', {
     },{
         xtype : "textfield", 
         name : "bo_version", 
-        fieldLabel:'版本'
+        fieldLabel:'版本',
+        emptyText: '全部',
     },{
         xtype: 'combobox',
         name: 'bo_statuscode',
@@ -27,6 +28,7 @@ Ext.define('saas.view.document.bom.BasePanel', {
         displayField: 'bo_status',
         valueField: 'bo_statuscode',
         fieldLabel :'状态',
+        emptyText: '全部',
         editable:false,
         store: Ext.create('Ext.data.ArrayStore', {
         fields: ['bo_statuscode', 'bo_status'],

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

@@ -21,11 +21,13 @@ Ext.define('saas.view.document.customer.BasePanel', {
         storeUrl:'/api/document/customerkind/getCombo',
         name : "cu_type", 
         fieldLabel : "客户类型", 
+        emptyText: '全部',
         hiddenBtn:true
     }, {
         xtype : "employeeDbfindTrigger", 
         name : "cu_sellername", 
-        fieldLabel:'业务员'
+        fieldLabel:'业务员',
+        emptyText: '输入人员编号或姓名',
     },{
         xtype: 'combobox',
         name: 'cu_statuscode',
@@ -33,6 +35,7 @@ Ext.define('saas.view.document.customer.BasePanel', {
         displayField: 'cu_status',
         valueField: 'cu_statuscode',
         fieldLabel :'状态',
+        emptyText: '全部',
         editable:false,
         store: Ext.create('Ext.data.ArrayStore', {
         fields: ['cu_statuscode', 'cu_status'],

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

@@ -22,7 +22,8 @@ Ext.define('saas.view.document.product.BasePanel', {
         xtype : "remotecombo", 
         storeUrl: '/api/document/producttype/getCombo',
         name : "pr_kind", 
-        fieldLabel : '物料类型'
+        fieldLabel : '物料类型',
+        emptyText: '全部',
     }, {
         xtype: 'combobox',
         name: 'pr_statuscode',
@@ -30,6 +31,7 @@ Ext.define('saas.view.document.product.BasePanel', {
         displayField: 'pr_status',
         valueField: 'pr_statuscode',
         fieldLabel : '状态',
+        emptyText: '全部',
         editable:false,
         store: Ext.create('Ext.data.ArrayStore', {
         fields: ['pr_statuscode', 'pr_status'],

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

@@ -21,6 +21,7 @@ Ext.define('saas.view.document.vendor.BasePanel', {
         storeUrl:'/api/document/vendorkind/getCombo',
         name : "ve_type", 
         fieldLabel : '供应商类型',
+        emptyText: '全部',
         hiddenBtn:true
     },{
         xtype: 'combobox',
@@ -29,6 +30,7 @@ Ext.define('saas.view.document.vendor.BasePanel', {
         displayField: 've_status',
         valueField: 've_statuscode',
         fieldLabel : '状态',
+        emptyText: '全部',
         editable:false,
         store: Ext.create('Ext.data.ArrayStore', {
         fields: ['ve_statuscode', 've_status'],

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

@@ -4,8 +4,6 @@ Ext.define('saas.view.home.Home', {
     id: 'home',
 
     requires: [
-        'Ext.slider.Single',
-        'Ext.form.field.Display',
         'Ext.layout.container.Border',
         'Ext.ux.layout.ResponsiveColumn'
     ],
@@ -37,41 +35,45 @@ Ext.define('saas.view.home.Home', {
     }, {
         xtype: 'panel',
         style: {
-            marginRight: '0',
+            background: '#EEF4F9',
         },
-        // title: '2018年11月经营分析',
+
         latyout: 'responsivecolumn',
         defaults: {
-            margin: '0 0 0 14',
-            userCls: 'big-33 small-50',
+            margin: '0 16 0 0',
+            userCls: 'x-home-chart big-33 small-50',
         },
         items: [{
             xtype: 'month-sale',
+            padding: '0 0 0 14',
         }, {
             xtype: 'month-purchase',
+            padding: '0 0 0 14',
         }, {
             xtype: 'key-data',
+            margin: 0,
+            padding: '0 0 0 14',
         }]
     }, {
         xtype: 'panel',
-        // title: '2018年11月经营分析',
         latyout: 'responsivecolumn',
         style: {
-            marginRight: '0',
-            marginBottom: '0'
+            background: '#EEF4F9',
         },
         defaults: {
-            margin: '0 0 0 14',
-            userCls: 'big-33 small-50',
+            margin: '0 16 0 0',
+            userCls: 'x-home-chart big-33 small-50',
         },
         items: [{
-            xtype: 'month-io',
-        }, {
             xtype: 'sale-trend',
+            padding: '0 0 0 14',
+        }, {
+            xtype: 'month-io',
+            padding: '0 0 0 14',
         }, {
-        //     xtype: 'purchase-trend'
-        // }, {
-            xtype: 'stock-amount'
+            xtype: 'stock-amount',
+            margin: 0,
+            padding: '0 0 0 14',
         }]
     }],
 

+ 22 - 54
frontend/saas-web/app/view/home/Home.scss

@@ -92,9 +92,11 @@ $unaudit-purc-container-color: dynamic(#e91e63);
 }
 
 .x-home-panel {
+    background: #EEF4F9;
 
     &> .x-autocontainer-outerCt {
         display: block;
+        background: #EEF4F9;
 
         &> .x-autocontainer-innerCt {
             display: block;
@@ -104,6 +106,25 @@ $unaudit-purc-container-color: dynamic(#e91e63);
 
 .x-home-box {
     border-radius: 2px;
+    margin: 0 0 16px 0 !important;
+    
+
+    &:last-child {
+        margin: 0 !important;
+    }
+
+    & > .x-panel-bodyWrap > .x-panel-body >.x-autocontainer-outerCt > .x-autocontainer-innerCt {
+        background: #EEF4F9;
+        display: flex;
+        justify-content: space-around;
+
+        .x-home-chart {
+            background: #fff;
+            border-radius: 4px;
+        }
+    }
+
+    
 
     &>.x-panel-header {
         background-color: #fff;
@@ -137,65 +158,12 @@ $unaudit-purc-container-color: dynamic(#e91e63);
 
     .x-panel-header-default {
         background-color: #fff;
+        padding-right: 14px;
 
         .x-panel-header-title-default > .x-title-icon-wrap-default > .x-title-icon-default,
         .x-panel-header-title-default > .x-title-text-default {
             color: #485465;
         }
     }
-}
-
-.x-responsivecolumn {
-    padding: 0;
-}
-
-.big-100 {
-    // width: 100%;
-    @include responsivecolumn-item(100%);
-}
-
-.big-60 {
-    // width: 60%;
-    @include responsivecolumn-item(60%);
-}
-
-.big-50 {
-    float: left;
-    // width: 50%;
-    @include responsivecolumn-item(50%);
-}
-
-.big-40 {
-    float: left;
-    // width: 40%;
-    @include responsivecolumn-item(40%);
-}
-
-.big-33 {
-    float: left;
-    // width: 33.33%;
-    @include responsivecolumn-item(33.33%);
-}
-
-.big-20 {
-    float: left;
-    // width: 20%;
-    @include responsivecolumn-item(20%);
-}
 
-//--------------------------------------------------------
-// And classes for small-size responsive items
-
- .x-responsivecolumn-small {
-     > .small-100 {
-        float: left;
-        // width: 100%;
-        @include responsivecolumn-item(100%);
-     }
-
-     > .small-50 {
-        float: left;
-        // width: 50%;
-        @include responsivecolumn-item(50%);
-     }
 }

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

@@ -202,42 +202,42 @@ Ext.define('saas.view.home.HomeModel', {
             } 
         },
 
-        purchase_trend: {
-            fields: ['x', 'y'],
-            autoLoad: true,
-            proxy: {
-                type: 'ajax',
-                // url: 'http://192.168.253.58:8920/homePage/purchaseData?sixMonths=true',
-                url: '/api/commons/homePage/purchaseData?sixMonths=true',
-                timeout: 8000,
-                actionMethods: {
-                    read: 'GET'
-                },
-                reader: {
-                    type: 'json',
-                    rootProperty: 'data',
-                },
-                listeners: {
-                    exception: function(proxy, response, operation, eOpts) {
-                        var p = Ext.getCmp('purchase_trend');
-                        p && p.setLoading(false);
-                    }
-                }
-            },
-            sorters: [
-                { property: 'x', direction: 'ASC' }
-            ],
-            listeners: {
-                beforeload: function() {
-                    var p = Ext.getCmp('purchase_trend');
-                        p && p.setLoading(true);
-                },
-                load: function(s, d) {
-                    var p = Ext.getCmp('purchase_trend');
-                        p && p.setLoading(false);
-                }
-            } 
-        },
+        // purchase_trend: {
+        //     fields: ['x', 'y'],
+        //     autoLoad: true,
+        //     proxy: {
+        //         type: 'ajax',
+        //         // url: 'http://192.168.253.58:8920/homePage/purchaseData?sixMonths=true',
+        //         url: '/api/commons/homePage/purchaseData?sixMonths=true',
+        //         timeout: 8000,
+        //         actionMethods: {
+        //             read: 'GET'
+        //         },
+        //         reader: {
+        //             type: 'json',
+        //             rootProperty: 'data',
+        //         },
+        //         listeners: {
+        //             exception: function(proxy, response, operation, eOpts) {
+        //                 var p = Ext.getCmp('purchase_trend');
+        //                 p && p.setLoading(false);
+        //             }
+        //         }
+        //     },
+        //     sorters: [
+        //         { property: 'x', direction: 'ASC' }
+        //     ],
+        //     listeners: {
+        //         beforeload: function() {
+        //             var p = Ext.getCmp('purchase_trend');
+        //                 p && p.setLoading(true);
+        //         },
+        //         load: function(s, d) {
+        //             var p = Ext.getCmp('purchase_trend');
+        //                 p && p.setLoading(false);
+        //         }
+        //     } 
+        // },
 
         stock_amount: {
             fields: ['x', 'y'],

+ 47 - 26
frontend/saas-web/app/view/home/charts/KeyData.js

@@ -19,13 +19,13 @@ Ext.define('saas.view.home.charts.KeyData', {
                             '<div class="x-icon x-icon-{icon}"></div>',
                         '</tpl>',
                         '<div class="x-text',
-                            // '<tpl if="!showIcon">',
-                            //     ' x-text-small',
-                            // '</tpl>',
+                            '<tpl if="!showIcon">',
+                                ' x-text-small',
+                            '</tpl>',
                         '">',
-                            // '<tpl if="!showIcon">',
-                            //     '<div class="x-icon-small x-icon-{icon}"></div>',
-                            // '</tpl>',
+                            '<tpl if="!showIcon">',
+                                '<div class="x-icon-small x-icon-{icon}"></div>',
+                            '</tpl>',
                             '<div class="x-key"><span>{label}</span></div>',
                             '<div class="x-value"><span>{value}</span></div>',
                         '</div>',
@@ -91,11 +91,11 @@ Ext.define('saas.view.home.charts.KeyData', {
                     r.set('value', d);
                 });
             },
-            // updateShowIcon: function(show) {
-            //     this.each(function(r) {
-            //         r.set('showIcon', show);
-            //     });
-            // }
+            updateShowIcon: function(show) {
+                this.each(function(r) {
+                    r.set('showIcon', show);
+                });
+            }
         });
         var view = Ext.create('Ext.view.View', {
             store: store,
@@ -104,6 +104,27 @@ Ext.define('saas.view.home.charts.KeyData', {
             listeners: {
                 itemclick: function(th, record, item, index, e, eOpts) {
                     saas.util.BaseUtil.openTab(record.get('viewType'), record.get('title'), record.get('id'));
+                },
+                itemmouseenter: function(th, record, item, index, e, eOpts) {
+                    var tip = th.tip;
+                    if(!tip) {
+                        var tip = Ext.create('Ext.tip.ToolTip', {
+                            target: th.el,
+                            minWidth: 100,
+                            title: record.get('label'),
+                            html: record.get('value'),
+                            showOnTap: true,
+                            trackMouse: true
+                        });
+                        th.tip = tip;
+                        tip.showAt(e.getXY());
+                    }
+                },
+                itemmouseleave: function(th, record, item, index, e, eOpts) {
+                    var tip = th.tip;
+                    if(tip) {
+                        th.tip = Ext.destroy(th.tip);
+                    }
                 }
             }
         });
@@ -118,15 +139,15 @@ Ext.define('saas.view.home.charts.KeyData', {
     },
 
     listeners: {
-        // afterlayout: function() {
-        //     var me = this,
-        //     box = me.getBox(),
-        //     view = me.view,
-        //     width = box.width,
-        //     store = view.store;
-
-        //     store.updateShowIcon(width >= 450);
-        // },
+        afterlayout: function() {
+            var me = this,
+            box = me.getBox(),
+            view = me.view,
+            width = box.width,
+            store = view.store;
+
+            store.updateShowIcon(width >= 450);
+        },
     },
 
     updateValue: function(datas) {
@@ -137,11 +158,11 @@ Ext.define('saas.view.home.charts.KeyData', {
         store.updateValue(datas);
     },
 
-    // updateShowIcon: function(showIcon) {
-    //     var me = this,
-    //     view = me.view,
-    //     store = view.store;
+    updateShowIcon: function(showIcon) {
+        var me = this,
+        view = me.view,
+        store = view.store;
 
-    //     store.updateShowIcon(showIcon);
-    // }
+        store.updateShowIcon(showIcon);
+    }
 });

+ 9 - 0
frontend/saas-web/app/view/home/charts/KeyData.scss

@@ -35,6 +35,7 @@
                     background-position: center;
 
                     &-small {
+                        opacity: 0.7;
                         width: 36px;
                         height: 36px;
                         position: relative;
@@ -79,17 +80,25 @@
                         align-items: flex-start;
                         font-size: 16px;
                         color: #1E2429;
+                        text-overflow: ellipsis;
+                        overflow: hidden;
                     }
 
                     &-small {
                         display: block;
 
                         .x-key {
+                            text-align: end;
                             display: block;
                             padding-left: 54px;
                             margin-top: -17px;
                             margin-bottom: 14px;
                         }
+
+                        .x-value {
+                            display: block;
+                            text-align: end;
+                        }
                     }
                 }
             }

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

@@ -10,7 +10,7 @@ Ext.define('saas.view.home.infoCardList.Payment', {
     codeField: 'pi_inoutno',
     // detailTitle: '采购验收单',
     // detailXType: 'purchase-purchasein-formpanel',
-    condition: 'pi_class in (\'采购验收单\',\'采购验退单\') and prodinout.companyId=#{companyId} and TO_DAYS(pi_date+ifnull(ve_promisedays,0))-TO_DAYS(now()) <= 7 and exists (select 1 from subledger where sl_code=pi_inoutno and sl_kind=pi_class and subledger.companyId=#{companyId} and ifnull(sl_namount,0)<>0)',
+    condition: 'pi_class in (\'采购验收单\',\'采购验退单\') and prodinout.companyId=#{companyId} and ( TO_DAYS(pi_date) + ifnull(ve_promisedays,0)-TO_DAYS(now()) ) <= 7 and exists (select 1 from subledger where sl_code=pi_inoutno and sl_kind=pi_class and subledger.companyId=#{companyId} and ifnull(sl_namount,0)<>0)',
     listColumns: [{
         text: 'id',
         dataIndex: 'pu_id',

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

@@ -10,7 +10,7 @@ Ext.define('saas.view.home.infoCardList.Recment', {
     codeField: 'pi_inoutno',
     // detailTitle: '出货单',
     // detailXType: 'sale-saleout-formpanel',
-    condition: 'pi_class in (\'出货单\',\'销售退货单\') and prodinout.companyId=#{companyId} and TO_DAYS(pi_date+ifnull(cu_promisedays,0))-TO_DAYS(now()) <= 7 and exists (select 1 from subledger where sl_code=pi_inoutno and sl_kind=pi_class and subledger.companyId=#{companyId} and ifnull(sl_namount,0)<>0)',
+    condition: 'pi_class in (\'出货单\',\'销售退货单\') and prodinout.companyId=#{companyId} and (TO_DAYS(pi_date) + ifnull(cu_promisedays,0) - TO_DAYS(now())) <= 7 and exists (select 1 from subledger where sl_code=pi_inoutno and sl_kind=pi_class and subledger.companyId=#{companyId} and ifnull(sl_namount,0)<>0)',
     listColumns: [{
         text: 'id',
         dataIndex: 'id',
@@ -53,6 +53,9 @@ Ext.define('saas.view.home.infoCardList.Recment', {
         xtype:'numbercolumn',
         width: 100,
         renderer : function(v) {
+            if (v == 0) {
+                v= '';
+            }
             var format = '0'
             return Ext.util.Format.number(v, format);
         }

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

@@ -31,7 +31,7 @@ Ext.define('saas.view.main.Main', {
                     reference: 'mainLogo',
                     width: 180,
                     cls: 'main-logo-wrap',
-                    html: '<div class="main-logo"><img src="resources/images/default/logo-default.png"/><div class="logo-text">企云服</div></div>',
+                    html: '<div class="main-logo"><img src="resources/images/default/logo-default.png"/><div class="logo-text">U企云服</div></div>',
                     bind: {
                         width: '{navWidth}'
                     }

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

@@ -20,10 +20,12 @@ Ext.define('saas.view.money.fundtransfer.QueryPanel', {
         xtype : "bandinfoDbfindTrigger",
         name : "ftd_bankname",
         fieldLabel : "转出账户",
+        emptyText: '输入账户编号或名称',
     },{
         xtype : "bandinfoDbfindTrigger",
         name : "ftd_inbankname",
         fieldLabel : "转入账户",
+        emptyText: '输入账户编号或名称',
     },{
         xtype: 'combobox',
         name: 'ft_statuscode',

+ 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('.');

+ 76 - 24
frontend/saas-web/app/view/money/report/ProfitDetail.js

@@ -11,60 +11,112 @@ Ext.define('saas.view.money.report.ProfitDetail', {
     viewName: 'money-report-profitdetail',
 
     groupField: null,
-    listUrl: '/api/money/report/recDetail',
+    listUrl: '/api/money/report/profitdetails',
     defaultCondition: null,
     reportTitle: '毛利润分析表',
-    QueryWidth: 0.25,
+    QueryWidth: 0.2,
     searchItems: [{
         xtype: 'customerDbfindTrigger',
         name: 'pi_custname',
-        fieldLabel: '客户名称',
-        columnWidth: 0.25
+        emptyText: '客户',
+        columnWidth: 0.15,
+        dbfinds:[
+            {
+                from:'cu_name',to:'pi_custname'
+            }]
     }, {
         xtype : "remotecombo", 
         storeUrl:'/api/document/customerkind/getCombo',
         name : "cu_type", 
         emptyText : "客户类型", 
-        columnWidth: 0.25,
+        columnWidth: 0.15,
         hiddenBtn:true
     }, {
         xtype: 'condatefield',
-        name: 'rb_date',
+        name: 'pi_date',
         fieldLabel: '日期',
-        columnWidth: 0.25
+        columnWidth: 0.5
     }],
 
     reportColumns: [{
-        text: '客户编号',
-        dataIndex: 'pi_inoutno',
-        width: 200
-    }, {
+        text: '客户',
+        dataIndex: 'pi_custname',
+        width: 200,
+    },{
         text: '客户类型',
-        dataIndex: 'pi_custcode',
+        dataIndex: 'cu_type',
         width: 200,
     }, {
         text: '业务员',
-        dataIndex: 'pi_custname',
+        dataIndex: 'cu_sellername',
         width: 200,
     }, {
         text: '销售总额',
-        dataIndex: 'pi_class',
-        width: 150
+        dataIndex: 'saamount',
+        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: 'pu_buyername',
-        width: 150
+        dataIndex: 'netamount',
+        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: 'rb_date',
-        width: 150
+        dataIndex: 'costamount',
+        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: 'pd_pdno',
-        width: 150,
+        dataIndex: 'profit',
+        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: 'cu_beginaramount',
-        width: 150
+        text: '毛利率%',
+        dataIndex: 'profitpresent',
+        width: 130,
+        xtype: 'numbercolumn',
+        renderer: function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
+    },{
+        flex: 1
     }]
 });

+ 22 - 4
frontend/saas-web/app/view/money/report/TotalPayDetail.js

@@ -45,22 +45,40 @@ Ext.define('saas.view.money.report.TotalPayDetail', {
         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: '增加应付',
         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: '增加预付',
         xtype: 'numbercolumn',
         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');

+ 22 - 3
frontend/saas-web/app/view/money/report/TotalRecDetail.js

@@ -44,17 +44,36 @@ Ext.define('saas.view.money.report.TotalRecDetail', {
     }, {
         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: '增加应收',
         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: '增加预收',
         xtype: 'numbercolumn',
         dataIndex: 'cm_nowpreamount',
-        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: '应收余额',
         dataIndex: 'cm_endamount',

+ 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;
+    }
 });

+ 2 - 1
frontend/saas-web/app/view/purchase/purchase/QueryPanel.js

@@ -66,7 +66,8 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
     }, {
         xtype: 'textfield',
         name: 'pu_sacode',
-        fieldLabel: '关联销售单号'
+        fieldLabel: '关联销售单号',
+        emptyText: '输入单号',
     }, {
         xtype: 'employeeDbfindTrigger',
         name: 'creatorName',

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

@@ -70,7 +70,9 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
     }, {
         xtype: 'textfield',
         name: 'pi_pucode',
-        fieldLabel: '关联采购单号'
+        fieldLabel: '关联采购单号',
+        emptyText: '输入单号',
+
     }, {
         xtype: 'employeeDbfindTrigger',
         name: 'creatorName',

+ 2 - 1
frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js

@@ -70,7 +70,8 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
     }, {
         xtype: 'textfield',
         name: 'pi_iocode',
-        fieldLabel: '关联验收单号'
+        fieldLabel: '关联验收单号',
+        emptyText: '输入单号',
     }, {
         xtype: 'employeeDbfindTrigger',
         name: 'creatorName',

+ 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
     }],

+ 10 - 4
frontend/saas-web/app/view/sale/saleIn/QueryPanel.js

@@ -24,6 +24,7 @@ Ext.define('saas.view.sale.saleIn.QueryPanel', {
         xtype: 'productDbfindTrigger',
         name: 'pr_detail',
         fieldLabel: '物料',
+        emptyText: '输入物料编号或名称',
         showDetail: true
     }, {
         xtype: 'combobox',
@@ -62,15 +63,18 @@ Ext.define('saas.view.sale.saleIn.QueryPanel', {
     }, {
         xtype: 'warehouseDbfindTrigger',
         name: 'pd_whname',
-        fieldLabel: '仓库'
+        fieldLabel: '仓库',
+        emptyText: '输入仓库编号或名称',
     }, {
         xtype: 'textfield',
         name: 'pi_iocode',
-        fieldLabel: '关联出货单号'
+        fieldLabel: '关联出货单号',
+        emptyText: '输入单号',
     }, {
         xtype: 'employeeDbfindTrigger',
         name: 'creatorName',
         fieldLabel: '录入人',
+        emptyText: '输入人员编号或姓名',
         getCondition: function(value) {
             if(!value) {
                 return '1=1';
@@ -81,7 +85,8 @@ Ext.define('saas.view.sale.saleIn.QueryPanel', {
     }, {
         xtype: 'employeeDbfindTrigger',
         name: 'pi_auditman',
-        fieldLabel: '审核人'
+        fieldLabel: '审核人',
+        emptyText: '输入人员编号或姓名',
     }],
     moreQueryFormItems: [],
     queryGridConfig: {
@@ -138,7 +143,8 @@ Ext.define('saas.view.sale.saleIn.QueryPanel', {
         },{
             text: '业务员',
             dataIndex: 'sa_seller',
-            width: 90
+            width: 90,
+            hidden :true
         },{
             text: '审核人',
             dataIndex: 'pi_auditman',

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

@@ -24,6 +24,7 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
         xtype: 'productDbfindTrigger',
         name: 'pr_detail',
         fieldLabel: '物料',
+        emptyText: '输入物料编号或名称',
         showDetail: true
     }, {
         xtype: 'combobox',
@@ -67,11 +68,13 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
     }, {
         xtype: 'textfield',
         name: 'pi_sacode',
-        fieldLabel: '关联销售单号'
+        fieldLabel: '关联销售单号',
+        emptyText: '输入单号',
     }, {
         xtype: 'employeeDbfindTrigger',
         name: 'creatorName',
         fieldLabel: '录入人',
+        emptyText: '输入人员编号或姓名',
         getCondition: function(value) {
             if(!value) {
                 return '1=1';
@@ -82,7 +85,8 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
     }, {
         xtype: 'employeeDbfindTrigger',
         name: 'pi_auditman',
-        fieldLabel: '审核人'
+        fieldLabel: '审核人',
+        emptyText: '输入人员编号或姓名',
     }],
     moreQueryFormItems: [],
     queryGridConfig: {
@@ -133,7 +137,8 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
         },{
             text: '业务员',
             dataIndex: 'sa_seller',
-            width: 90
+            width: 90,
+            hidden :true
         },{
             text: '审核人',
             dataIndex: 'pi_auditman',

+ 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',

+ 10 - 7
frontend/saas-web/app/view/stock/report/DataList.js

@@ -12,7 +12,7 @@ Ext.define('saas.view.stock.report.DataList', {
     // listUrl: 'http://192.168.253.41:8560/api/document/product/ReserveCost',
     defaultCondition: null,
     reportTitle: '物料库存数量金额表',
-    QueryWidth: 0.4,
+    QueryWidth: 0.65,
     printAble: false,
     exportAble: true,
     queryMode: 'MAIN',
@@ -30,6 +30,7 @@ Ext.define('saas.view.stock.report.DataList', {
         xtype: 'textfield',
         emptyText: '仓库编号/名称',
         columnWidth: 0.25,
+        hidden: true,
         getCondition: function (v) {
             return "(upper(wh_code) like '%" + v.toUpperCase() + "%' or upper(wh_description) like '%" + v.toUpperCase() + "%')";
         }
@@ -92,7 +93,7 @@ Ext.define('saas.view.stock.report.DataList', {
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
     }, {
@@ -103,16 +104,18 @@ Ext.define('saas.view.stock.report.DataList', {
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
+    }, {
+        flex: 1
     }],
 
     reportColumns: [{
@@ -127,7 +130,7 @@ Ext.define('saas.view.stock.report.DataList', {
     }, {
         text: "物料规格",
         dataIndex: "rc_prodSpec",
-        width: 200,
+        width: 150,
     }, {
         text: "数量",
         xtype: 'numbercolumn',
@@ -151,14 +154,14 @@ Ext.define('saas.view.stock.report.DataList', {
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         },
         summaryType: 'sum',
         summaryRenderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
+            var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
     }, {

+ 16 - 10
frontend/saas-web/app/view/stock/report/DataListController.js

@@ -7,22 +7,28 @@ Ext.define('saas.view.stock.report.DataListController', {
         reportPanel = me.getView(),
         form = reportPanel.down('form'),
         grid = reportPanel.down('grid'),
-        store = grid.store;
+        store = grid.store,
+        columns = [];
         
-        // var whCodeField = form.getForm().findField('wh_code');
-        // whCodeField.setValue('');
-        // whCodeField.setHidden(!newValue);
+        var whCodeField = form.getForm().findField('wh_code');
+        var con = form.items.items[3];
+
+        whCodeField.setValue('');
+        whCodeField.setHidden(!newValue);
 
         if(newValue) {
+            con.columnWidth = 0.4;
             reportPanel.queryMode = 'DETAIL';
-            store.load(function() {
-                grid.reconfigure(store, reportPanel.reportColumns2);
-            });
+            columns = reportPanel.reportColumns2;
         }else {
+            con.columnWidth = 0.65;
             reportPanel.queryMode = 'MAIN';
-            store.load(function() {
-                grid.reconfigure(store, reportPanel.reportColumns);
-            });
+            columns = reportPanel.reportColumns;
         }
+        
+        form.updateLayout();
+        store.load(function() {
+            grid.reconfigure(store, columns);
+        });
     }
 });

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

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

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

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

+ 1 - 1
frontend/saas-web/ext/packages/ux/classic/sass/var/layout/ResponsiveColumn.scss

@@ -6,7 +6,7 @@
  * @var {number}
  * The space between items in a responsive column layout
  */
-$responsivecolumn-item-spacing: dynamic(20px);
+$responsivecolumn-item-spacing: dynamic(0px);
 
 /**
  * Configures the width of an item in a responsive column layout

+ 1 - 1
frontend/saas-web/index.html

@@ -5,7 +5,7 @@
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=10, user-scalable=yes">
 
-    <title>云进销存 - 企云服</title>
+    <title>云进销存 - U企云服</title>
     <link rel="icon" href="/resources/images/favicon.png" type="image/x-icon">
     <!-- 图片动画效果样式导入 -->
     <link type="text/css" rel="stylesheet" href="/resources/othcss/imagehover.css" />

+ 4 - 0
frontend/saas-web/resources/json/navigation.json

@@ -71,6 +71,10 @@
             "text": "销售利润表",
             "viewType": "sale-report-saleprofit"
         }, {
+            "text": "毛利润分析表",
+            "id": "monry-report-profitdetail",
+            "viewType":"monry-report-profitdetail"
+        },{
             "text": "客户对账单",
             "id": "monry-report-customercheck",
             "viewType":"monry-report-customercheck"