Преглед изворни кода

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

heqinwei пре 7 година
родитељ
комит
33e5f58693
62 измењених фајлова са 465 додато и 404 уклоњено
  1. 5 5
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  2. 1 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  3. 4 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/ProdInOutDTO.java
  4. 4 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/ProdInOutListDTO.java
  5. 2 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/SaleList.java
  6. 13 4
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  7. 8 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  8. 4 0
      applications/sale/sale-server/src/main/resources/mapper/ProdInOutListMapper.xml
  9. 30 6
      applications/sale/sale-server/src/main/resources/mapper/ProdInOutMapper.xml
  10. 3 1
      applications/sale/sale-server/src/main/resources/mapper/SaleListMapper.xml
  11. 6 6
      applications/sale/sale-server/src/main/resources/mapper/SaledetailMapper.xml
  12. 2 0
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/dto/ProdInOutDTO.java
  13. 2 0
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/dto/ProdInOutListDTO.java
  14. 4 0
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOut.java
  15. 4 1
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOutList.java
  16. 4 0
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/StocktakingServiceImpl.java
  17. 18 0
      applications/storage/storage-server/src/main/resources/mapper/ProdIODetailMapper.xml
  18. 1 1
      base-servers/account/account-server/src/main/resources/application.yml
  19. 3 3
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  20. 1 1
      base-servers/auth/sso-api/src/test/resources/application.yml
  21. 1 1
      frontend/saas-portal-web/config/dev.env.js
  22. 1 1
      frontend/saas-portal-web/config/test.env.js
  23. 0 0
      frontend/saas-portal-web/src/components/conenter/addenterprise.vue
  24. 2 2
      frontend/saas-portal-web/src/components/conenter/company.vue
  25. 9 9
      frontend/saas-portal-web/src/components/conenter/details.vue
  26. 4 4
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  27. 1 4
      frontend/saas-portal-web/src/components/conenter/home.vue
  28. 2 2
      frontend/saas-portal-web/src/router/index.js
  29. 70 5
      frontend/saas-web/app/Application.scss
  30. 2 2
      frontend/saas-web/app/view/core/form/field/ConDateField.js
  31. 3 0
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  32. 3 1
      frontend/saas-web/app/view/document/bom/BasePanel.js
  33. 4 1
      frontend/saas-web/app/view/document/customer/BasePanel.js
  34. 1 1
      frontend/saas-web/app/view/document/kind/ChildForm.js
  35. 3 1
      frontend/saas-web/app/view/document/product/BasePanel.js
  36. 2 0
      frontend/saas-web/app/view/document/vendor/BasePanel.js
  37. 18 16
      frontend/saas-web/app/view/home/Home.js
  38. 22 54
      frontend/saas-web/app/view/home/Home.scss
  39. 36 36
      frontend/saas-web/app/view/home/HomeModel.js
  40. 47 26
      frontend/saas-web/app/view/home/charts/KeyData.js
  41. 9 0
      frontend/saas-web/app/view/home/charts/KeyData.scss
  42. 1 1
      frontend/saas-web/app/view/home/infoCardList/Payment.js
  43. 4 1
      frontend/saas-web/app/view/home/infoCardList/Recment.js
  44. 1 1
      frontend/saas-web/app/view/main/Main.js
  45. 2 0
      frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js
  46. 1 1
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js
  47. 2 1
      frontend/saas-web/app/view/purchase/purchase/QueryPanel.js
  48. 3 1
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  49. 2 1
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js
  50. 10 4
      frontend/saas-web/app/view/sale/saleIn/QueryPanel.js
  51. 8 3
      frontend/saas-web/app/view/sale/saleOut/QueryPanel.js
  52. 19 35
      frontend/saas-web/app/view/stock/report/DataList.js
  53. 16 10
      frontend/saas-web/app/view/stock/report/DataListController.js
  54. 2 1
      frontend/saas-web/app/view/sys/power/FormPanel.js
  55. 3 9
      frontend/saas-web/app/view/sys/power/GroupGrid.js
  56. 1 1
      frontend/saas-web/ext/packages/ux/classic/sass/var/layout/ResponsiveColumn.scss
  57. 1 1
      frontend/saas-web/index.html
  58. 0 112
      frontend/saas-web/overrides/grid/buffer/BufferedRenderer.js
  59. 0 26
      frontend/saas-web/overrides/grid/column/Widget.js
  60. 30 0
      frontend/saas-web/overrides/grid/feature/Grouping.js
  61. BIN
      frontend/saas-web/resources/images/auth-background.jpg
  62. BIN
      frontend/saas-web/resources/images/loading.gif

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

@@ -425,14 +425,14 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     public Result turnProdOut(Long id) {
         ProdInOut sourcePi = getMapper().selectByPrimaryKey(id);
         Integer count=0;
-        double pdInqty=0, pdYqty=0;
+        double pdInqty=0.0, pdYqty=0.0;
         Long userId = BaseContextHolder.getUserId();
         String userName = BaseContextHolder.getUserName();
         List<ProdIODetail> sourcePids =prodIODetailMapper.selectByFK(id);
         //检查从表
         for (ProdIODetail prodIODetail : sourcePids) {
-            pdInqty = prodIODetail.getPd_inqty();
-            pdYqty = prodIODetail.getPd_yqty();
+            pdInqty = prodIODetail.getPd_inqty() == null ? 0.0 : prodIODetail.getPd_inqty();
+            pdYqty = prodIODetail.getPd_yqty() == null ? 0.0 : prodIODetail.getPd_yqty();
             if (pdInqty-pdYqty>0){
                 count++;
             }
@@ -458,8 +458,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         targetPi.setPi_ioid(sourcePi.getId());
         targetPi.setPi_iocode(sourcePi.getPi_inoutno());
         //设置付款状态
-        targetPi.setPi_prstatus(Status.RECNONE.getDisplay());
-        targetPi.setPi_prstatuscode(Status.RECNONE.name());
+        targetPi.setPi_prstatus(Status.PAYNONE.getDisplay());
+        targetPi.setPi_prstatuscode(Status.PAYNONE.name());
         //设置公司id
         targetPi.setCompanyId(sourcePi.getCompanyId());
         targetPi.setCreateTime(new Date());

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

@@ -475,6 +475,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
                 prodIODetail.setUpdaterId(userId);
                 prodIODetail.setUpdateTime(new Date());
                 prodIODetail.setUpdaterName(userName);
+                prodIODetail.setPd_yqty(0.0);
                 //本次转单数
                 prodIODetail.setPd_inqty(pdQty-pdYqty);
                 prodIODetailMapper.insertSelective(prodIODetail);

+ 4 - 0
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/ProdInOutDTO.java

@@ -72,4 +72,8 @@ public class ProdInOutDTO extends CommonBaseDTO implements Serializable {
     private String pi_auditman;
 
     private Date pi_auditdate;
+
+    private String pi_prstatuscode;
+
+    private String pi_prstatus;
 }

+ 4 - 0
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/ProdInOutListDTO.java

@@ -132,4 +132,8 @@ public class ProdInOutListDTO extends CommonBaseDTO implements Serializable {
     private String pd_remark;
 
     private String pi_remark;
+
+    private String pi_prstatus;
+
+    private String pi_prstatuscode;
 }

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

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

@@ -109,8 +109,10 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         prodInOut.setPi_class(main.getPi_class());
         prodInOut.setPi_said(main.getPi_said());
         prodInOut.setPi_sacode(main.getPi_sacode());
-
         prodInOut.setPi_remark(main.getPi_remark());
+
+        prodInOut.setPi_prstatus(prodInOut.getPi_prstatus()==null?Status.RECNONE.getDisplay():prodInOut.getPi_prstatus() );
+        prodInOut.setPi_prstatuscode(prodInOut.getPi_printstatuscode()==null?Status.RECNONE.name():prodInOut.getPi_printstatuscode());
         //判断更新与保存动作
         if (StringUtils.isEmpty(pi_id) || "0".equals(pi_id.toString())){
             //插入操作
@@ -423,8 +425,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     @Override
     public DocBaseDTO turnProdin(Long id) {
         Integer count=0;
-        double pdOutqty=0;
-        double pdYqty=0;
+        double pdOutqty=0.0;
+        double pdYqty=0.0;
         double pdSendPrice = 0.0;
         double pdTaxrate = 0.0;
         DocBaseDTO baseDTO = new DocBaseDTO();
@@ -462,7 +464,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         //设置公司id
         targetPi.setCompanyId(sourcePi.getCompanyId());
         targetPi.setCreateTime(new Date());
-        targetPi.setCreatorId(BaseContextHolder.getUserId());
+
         targetPi.setPi_ioid(id);
         targetPi.setPi_inoutno(piInoutno);
         targetPi.setPi_class(BillCodeSeq.SALEIN.getName());
@@ -476,10 +478,17 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         targetPi.setPi_said(sourcePi.getPi_said());
         targetPi.setPi_sacode(sourcePi.getPi_sacode());
         targetPi.setPi_address(sourcePi.getPi_address());
+        //收款状态
+        targetPi.setPi_prstatus(Status.PAYNONE.getDisplay());
+        targetPi.setPi_prstatuscode(Status.PAYNONE.name());
+        //来源的单号
+        targetPi.setPi_ioid(sourcePi.getId());
+        targetPi.setPi_iocode(sourcePi.getPi_inoutno());
         //保存数据
         getMapper().insertSelective(targetPi);
         //插入销售退货单从表
         long pi_id = targetPi.getId();
+        getMapper().updateCreator(BaseContextHolder.getUserId(), BaseContextHolder.getUserName(),pi_id);
         for (int i = 0;i<sourceDetails.size();i++){
             ProdIODetail sourcePid = sourceDetails.get(i);
             ProdIODetail targetPid = new ProdIODetail();

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

@@ -163,6 +163,7 @@ public class SaleServiceImpl implements SaleService{
                 detail.setCreatorId(userId);
                 detail.setCreatorName(BaseContextHolder.getUserName());
                 detail.setCreateTime(new Date());
+                detail.setSd_yqty(0.0);
                 insertDetails.add(detail);
             } else {
                 updateDetails.add(detail);
@@ -432,7 +433,7 @@ public class SaleServiceImpl implements SaleService{
 
         //检查从表
         for (SaleDetail detail : details) {
-            pdQty = detail.getSd_qty();
+            pdQty = detail.getSd_qty()==null?0.0:detail.getSd_qty();
             pdYqty = detail.getSd_yqty() == null ? 0 : detail.getSd_yqty();
             if (pdQty - pdYqty > 0){
                 count++;
@@ -463,6 +464,8 @@ public class SaleServiceImpl implements SaleService{
         prodInOut.setCompanyId(companyId);
         prodInOut.setPi_address(sale.getSa_toplace());
 
+        prodInOut.setPi_prstatus(Status.RECNONE.getDisplay());
+        prodInOut.setPi_prstatuscode(Status.RECNONE.name());
         prodInOutMapper.insertSelective(prodInOut);
         //插入出货单从表
         long pi_id = prodInOut.getId();
@@ -483,6 +486,10 @@ public class SaleServiceImpl implements SaleService{
             prodIODetail.setPd_taxrate(saleDetail.getSd_taxrate());
             //公司id
             prodIODetail.setCompanyId(companyId);
+            //如果已转数等于转单数量 不处理该单据
+            if (saleDetail.getSd_qty() - (saleDetail.getSd_yqty() == null ? 0 : saleDetail.getSd_yqty()) == 0) {
+                continue;
+            }
             //本次转单数
             prodIODetail.setPd_outqty(saleDetail.getSd_qty() - (saleDetail.getSd_yqty() == null ? 0 : saleDetail.getSd_yqty()));
             //获取物料默认仓库

+ 4 - 0
applications/sale/sale-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -72,6 +72,8 @@
     <result column="pi_prstatus" jdbcType="VARCHAR" property="pi_prstatus" />
     <result column="pi_prstatuscode" jdbcType="VARCHAR" property="pi_prstatuscode" />
     <result column="pd_ordertotal" jdbcType="DOUBLE" property="pd_ordertotal" />
+    <result column="pi_ioid" jdbcType="INTEGER" property="pi_ioid" />
+    <result column="pi_iocode" jdbcType="VARCHAR" property="pi_iocode" />
   </resultMap>
 
   <resultMap id="homePageList" type="com.usoftchina.saas.sale.po.ProdHomePageList">
@@ -103,6 +105,8 @@
     <result column="pi_auditman" jdbcType="VARCHAR" property="pi_auditman" />
     <result column="pi_address" jdbcType="VARCHAR" property="pi_address" />
     <result column="pi_remark" jdbcType="VARCHAR" property="pi_remark" />
+    <result column="pi_prstatus" jdbcType="VARCHAR" property="pi_prstatus" />
+    <result column="pi_prstatuscode" jdbcType="VARCHAR" property="pi_prstatuscode" />
     <result column="pd_piid" jdbcType="INTEGER" property="pd_piid" />
     <result column="pd_inoutno" jdbcType="VARCHAR" property="pd_inoutno" />
     <result column="pd_piclass" jdbcType="VARCHAR" property="pd_piclass" />

+ 30 - 6
applications/sale/sale-server/src/main/resources/mapper/ProdInOutMapper.xml

@@ -35,6 +35,8 @@
     <result column="pi_remark" jdbcType="VARCHAR" property="pi_remark" />
     <result column="pi_iocode" jdbcType="VARCHAR" property="pi_iocode" />
       <result column="pi_ioid" jdbcType="INTEGER" property="pi_ioid" />
+    <result column="pi_prstatus" jdbcType="VARCHAR" property="pi_prstatus" />
+    <result column="pi_prstatuscode" jdbcType="VARCHAR" property="pi_prstatuscode" />
   </resultMap>
   <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.usoftchina.saas.storage.po.ProdInOut">
     <result column="pi_address" jdbcType="LONGVARCHAR" property="pi_address" />
@@ -100,7 +102,7 @@
   <sql id="Base_Column_List">
     pi_id, pi_inoutno, pi_class, pi_date, pi_vendid, pi_vendcode, pi_vendname, pi_custid, 
     pi_custcode, pi_custname, pi_puid, pi_pucode, pi_said, pi_sacode, pi_total, pi_status, pi_statuscode, pi_printstatus, pi_printstatuscode,
-    companyid, updaterid, updatetime, pi_text1, pi_text2, pi_text3, pi_text4, pi_text5
+    companyid, updaterid, updatetime, pi_text1, pi_text2, pi_text3, pi_text4, pi_text5,pi_prstatus,pi_prstatuscode
   </sql>
   <sql id="Blob_Column_List">
     pi_address,pi_remark
@@ -125,7 +127,7 @@
       pi_printstatuscode, companyid, updaterid, 
       updatetime, pi_text1, pi_text2, 
       pi_text3, pi_text4, pi_text5,
-      pi_address,pi_remark)
+      pi_address,pi_remark,pi_prstatus,pi_prstatuscode)
     values (#{pi_id,jdbcType=INTEGER}, #{pi_inoutno,jdbcType=VARCHAR}, #{pi_class,jdbcType=VARCHAR}, 
       #{pi_date,jdbcType=TIMESTAMP}, #{pi_vendid,jdbcType=INTEGER}, #{pi_vendcode,jdbcType=VARCHAR}, 
       #{pi_vendname,jdbcType=VARCHAR}, #{pi_custid,jdbcType=INTEGER}, #{pi_custcode,jdbcType=VARCHAR}, 
@@ -136,7 +138,7 @@
       #{updatetime,jdbcType=TIMESTAMP}, #{pi_text1,jdbcType=VARCHAR}, #{pi_text2,jdbcType=VARCHAR}, 
       #{pi_text3,jdbcType=VARCHAR}, #{pi_text4,jdbcType=VARCHAR}, #{pi_text5,jdbcType=VARCHAR}, 
       #{pi_address,jdbcType=LONGVARCHAR},
-      #{pi_remark,jdbcType=LONGVARCHAR})
+      #{pi_remark,jdbcType=LONGVARCHAR}, #{pi_prstatus,jdbcType=VARCHAR}, #{pi_prstatuscode,jdbcType=VARCHAR})
   </insert>
   <insert id="insertSelective" parameterType="com.usoftchina.saas.storage.po.ProdInOut">
     <selectKey resultType="java.lang.Long" keyProperty="id">
@@ -235,6 +237,12 @@
         <if test="pi_ioid != null">
             pi_ioid,
         </if>
+      <if test="pi_prstatus!=null">
+        pi_prstatus,
+      </if>
+      <if test="pi_prstatuscode!=null">
+        pi_prstatuscode,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
 
@@ -323,11 +331,17 @@
         #{pi_remark,jdbcType=LONGVARCHAR},
       </if>
       <if test="pi_iocode != null">
-        #{pi_iocode,jdbcType=LONGVARCHAR},
+        #{pi_iocode,jdbcType=VARCHAR},
       </if>
         <if test="pi_ioid != null">
             #{pi_ioid},
         </if>
+      <if test="pi_prstatus!=null">
+        #{pi_prstatus,jdbcType=VARCHAR},
+      </if>
+      <if test="pi_prstatuscode!=null">
+        #{pi_prstatuscode,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.storage.po.ProdInOut">
@@ -417,6 +431,12 @@
       <if test="pi_remark != null">
         pi_remark = #{pi_remark,jdbcType=LONGVARCHAR},
       </if>
+      <if test="pi_prstatus!=null">
+        pi_prstatus = #{pi_prstatus,jdbcType=VARCHAR},
+      </if>
+      <if test="pi_prstatuscode!=null">
+        pi_prstatuscode = #{pi_prstatuscode,jdbcType=VARCHAR},
+      </if>
     </set>
     where pi_id = #{id,jdbcType=INTEGER}
   </update>
@@ -449,7 +469,9 @@
       pi_text4 = #{pi_text4,jdbcType=VARCHAR},
       pi_text5 = #{pi_text5,jdbcType=VARCHAR},
       pi_address = #{pi_address,jdbcType=LONGVARCHAR},
-      pi_remark = #{pi_remark,jdbcType=LONGVARCHAR}
+      pi_remark = #{pi_remark,jdbcType=LONGVARCHAR},
+      pi_prstatus= #{pi_prstatus,jdbcType=VARCHAR},
+      pi_prstatuscode= #{pi_prstatuscode,jdbcType=VARCHAR}
     where pi_id = #{pi_id,jdbcType=INTEGER}
   </update>
   <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.storage.po.ProdInOut">
@@ -481,7 +503,9 @@
       pi_text4 = #{pi_text4,jdbcType=VARCHAR},
       pi_text5 = #{pi_text5,jdbcType=VARCHAR},
       pi_address = #{pi_address,jdbcType=LONGVARCHAR},
-      pi_remark = #{pi_remark,jdbcType=LONGVARCHAR}
+      pi_remark = #{pi_remark,jdbcType=LONGVARCHAR},
+      pi_prstatus= #{pi_prstatus,jdbcType=VARCHAR},
+      pi_prstatuscode= #{pi_prstatuscode,jdbcType=VARCHAR}
     where pi_id = #{id,jdbcType=INTEGER}
   </update>
   <select id="selectCodeById" resultType="string" parameterType="long">

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

+ 6 - 6
applications/sale/sale-server/src/main/resources/mapper/SaledetailMapper.xml

@@ -309,27 +309,27 @@
     where sd_id = #{id,jdbcType=INTEGER}
   </update>
   <insert id="batchInsert" parameterType="java.util.List" >
-    insert into saledetail (sd_said, sd_detno,
+    insert into saledetail (sd_said, sd_detno,sd_code,
     sd_prodid, sd_prodcode, sd_qty,
     sd_price, sd_total, sd_taxrate,
     sd_netprice, sd_nettotal, sd_delivery,
-    sd_sendqty, sd_pdqty, sd_remark,
+    sd_sendqty, sd_pdqty, sd_yqty,sd_remark,
     companyId, updaterId, updateTime,
     sd_text1, sd_text2, sd_text3,
     sd_text4, sd_text5,
-    creatorId,createTime,creatorName, sd_yqty)
+    creatorId,createTime,creatorName)
     values
     <foreach collection="list" item="item" index="index" open="" close="" separator=",">
       (
-      #{item.sd_said,jdbcType=INTEGER}, #{item.sd_detno,jdbcType=INTEGER},
+      #{item.sd_said,jdbcType=INTEGER}, #{item.sd_detno,jdbcType=INTEGER},#{item.sd_code,jdbcType=VARCHAR},
       #{item.sd_prodid,jdbcType=INTEGER}, #{item.sd_prodcode,jdbcType=VARCHAR}, #{item.sd_qty,jdbcType=DOUBLE},
       #{item.sd_price,jdbcType=DOUBLE}, #{item.sd_total,jdbcType=DOUBLE}, #{item.sd_taxrate,jdbcType=DOUBLE},
       #{item.sd_netprice,jdbcType=DOUBLE}, #{item.sd_nettotal,jdbcType=DOUBLE}, #{item.sd_delivery,jdbcType=TIMESTAMP},
-      #{item.sd_sendqty,jdbcType=DOUBLE}, #{item.sd_pdqty,jdbcType=DOUBLE}, #{item.sd_remark,jdbcType=VARCHAR},
+      #{item.sd_sendqty,jdbcType=DOUBLE}, #{item.sd_pdqty,jdbcType=DOUBLE}, #{item.sd_yqty,jdbcType=DOUBLE}, #{item.sd_remark,jdbcType=VARCHAR},
       #{item.companyId,jdbcType=INTEGER}, #{item.updaterId,jdbcType=INTEGER}, #{item.updateTime,jdbcType=TIMESTAMP},
       #{item.sd_text1,jdbcType=VARCHAR}, #{item.sd_text2,jdbcType=VARCHAR}, #{item.sd_text3,jdbcType=VARCHAR},
       #{item.sd_text4,jdbcType=VARCHAR}, #{item.sd_text5,jdbcType=VARCHAR},
-      #{item.creatorId,jdbcType=INTEGER}, #{item.createTime,jdbcType=TIMESTAMP}, #{item.creatorName,jdbcType=VARCHAR},#{item.sd_yqty,jdbcType=DOUBLE}
+      #{item.creatorId,jdbcType=INTEGER}, #{item.createTime,jdbcType=TIMESTAMP}, #{item.creatorName,jdbcType=VARCHAR}
       )
     </foreach>
   </insert>

+ 2 - 0
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/dto/ProdInOutDTO.java

@@ -72,4 +72,6 @@ public class ProdInOutDTO extends CommonBaseDTO implements Serializable {
     private String pi_remark;
 
     private Long pi_ioid;
+
+    private String pi_iocode;
 }

+ 2 - 0
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/dto/ProdInOutListDTO.java

@@ -137,4 +137,6 @@ public class ProdInOutListDTO extends CommonBaseEntity implements Serializable {
     private String pd_remark;
 
     private String pi_remark;
+
+    private String pi_iocode;
 }

+ 4 - 0
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOut.java

@@ -72,4 +72,8 @@ public class ProdInOut extends CommonBaseEntity implements Serializable {
     private Long pi_maid;
 
     private String pi_iocode;
+
+    private String pi_prstatuscode;
+
+    private String pi_prstatus;
 }

+ 4 - 1
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOutList.java

@@ -132,7 +132,6 @@ public class ProdInOutList extends CommonBaseEntity{
 
     private String pd_remark;
 
-
     private Long pd_ioid;
 
     private Date pi_auditdate;
@@ -143,6 +142,10 @@ public class ProdInOutList extends CommonBaseEntity{
 
     private String pi_remark;
 
+    private Long pi_ioid;
+
+    private String pi_iocode;
+
     //private ProductDTO productDTO;
     private Long pr_id;
     private String pr_code;

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

+ 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"'
   }
 })

+ 0 - 0
frontend/saas-portal-web/src/components/conenter/addgongsi.vue → frontend/saas-portal-web/src/components/conenter/addenterprise.vue


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

@@ -103,7 +103,7 @@
                 isAutoLogin: this.$store.state.isAutoLogin,
                 mytoken: JSON.parse(localStorage.getItem('app-state-session')),//本地储存的用户信息
                 arr: [],//企业列表信息
-                isheigh:true,//是否添加默认高度
+                isheigh:false,//是否添加默认高度
                 admin: '',
                 adminMobile: ''
             }
@@ -309,7 +309,7 @@
             //没有内容也要有一定的高度
             boxheight(){
                 let H = this.$refs.qiyebox.offsetHeight;
-                if (H < 400) {
+                if (H < 500) {
                     this.isheigh = true
                 } else {
                     this.isheigh = false

+ 9 - 9
frontend/saas-portal-web/src/components/conenter/qiyexiangxi.vue → frontend/saas-portal-web/src/components/conenter/details.vue

@@ -2,12 +2,12 @@
     <div>
         <span class="Tips" ref="Tips"></span>
         <!-- 企业详细信息 -->
-        <div v-if="xiugai">
+        <div v-if="modify">
             <div class="gs-worp qy-worp" style="width:100%">
                 <div class="qy-title">
                     <span><img @click= "gobick" style="float: left;padding: 20px; cursor:pointer" src="/static/img/fanhui.png" alt=""></span>
                     <span>企业基本信息</span>
-                    <span v-if="isxiugaiId" @click="xiugaiqiye" class="qy-xiugai dianji">修改</span>
+                    <span v-if="ismodifyId" @click="xiugaiqiye" class="qy-xiugai dianji">修改</span>
                 </div>
                 <div class="qy-conent">
                     <ul>
@@ -101,21 +101,21 @@
     export default {
         data(){
             return {
-                xiugai:true,
+                modify:true,
                 content: JSON.parse(window.sessionStorage.getItem("content")),
                 Email: '',
                 mytoken: JSON.parse(localStorage.getItem('app-state-session')),//本地储存的用户信息
                 isId: false,
                 isemail: true,//正则邮箱
-                isxiugaiId: false
+                ismodifyId: false
             }
         },
         mounted(){
             //不是管理员隐藏修改按钮
             if (this.content.adminId == this.mytoken.account.id) {
-                this.isxiugaiId = true;
+                this.ismodifyId = true;
             } else {
-                this.isxiugaiId = false
+                this.ismodifyId = false
             }
         },
         methods: {
@@ -133,7 +133,7 @@
             //修改企业信息
             xiugaiqiye(){
                 document.documentElement.scrollTop = 0;
-                this.xiugai = false;
+                this.modify = false;
                 setTimeout(()=>{
                     this.selects()
                 },10)
@@ -157,7 +157,7 @@
             // 取消修改
             quxiaoxiugai(){
                 document.documentElement.scrollTop = 0;
-                this.xiugai = true;
+                this.modify = true;
             },
             // 保存修改
             baocunxiugai(){
@@ -188,7 +188,7 @@
                         // console.log("请求成功",res)
                         if (res.data.success) {
                             document.documentElement.scrollTop = 0;
-                            this.xiugai = true;
+                            this.modify = true;
                             this.content.type = qyindustry;
                             this.content.adminEmail = email
                         };

+ 4 - 4
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>
@@ -36,7 +36,7 @@
             <!-- 顶部tab -->
             <div class="gs-tab">
                 <ul>
-                    <li class="xs" v-for="(btn , index) in tab" :key='index' :class= "{gsactive:nowindex == index}" @click= "qiehuan(index)">{{btn.name}}</li>
+                    <li class="xs" v-for="(btn , index) in tab" :key='index' :class= "{gsactive:nowindex == index}" @click= "tabswitch(index)">{{btn.name}}</li>
                 </ul>
             </div>
             <div class="gs-none">
@@ -122,7 +122,7 @@ import { setTimeout } from 'timers';
         },
         methods: {
             // tab切换
-            qiehuan(index){
+            tabswitch(index){
                 this.nowindex = index;
             },
             //退出

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

@@ -275,9 +275,6 @@
         Session.set(session);
         this.account = Session.getAccount();
       })
-      .catch(err=>{
-        // console.log("请求失败",err)
-      })
     },
     mounted() {
       this.clientId = Math.random().toString(36).substr(2)
@@ -346,7 +343,7 @@
         frame.postMessage('', '*')
         Session.remove()
         window.location.href=this.$url.sso+'/logquit?appId=sp&returnURL='+window.location.origin
-        //this.$router.go(0);
+        // this.$router.go(0);
       },
       // 关闭窗口
       closeModal() {

+ 2 - 2
frontend/saas-portal-web/src/router/index.js

@@ -3,8 +3,8 @@ import Router from 'vue-router'
 import Home from '../components/conenter/home.vue'
 import enterprise from '../components/conenter/enterprise.vue'//企业设置首页
 import company from '../components/conenter/company.vue'//企业列表
-import addenterprise from '../components/conenter/addgongsi.vue'//添加公司
-import details from '../components/conenter/qiyexiangxi.vue'//企业详细
+import addenterprise from '../components/conenter/addenterprise.vue'//添加公司
+import details from '../components/conenter/details.vue'//企业详细
 
 Vue.use(Router)
 

+ 70 - 5
frontend/saas-web/app/Application.scss

@@ -10,20 +10,20 @@ body.launching {
   background-image: $auth-background-image;
   background-position: center;
 
-  &::before {
+  &::after {
     @include animation(rotate-animation 1s linear infinite);
     @include transform-origin(50% 50%);
     @include background-size(cover);
-    background-image: url(get-resource-path('images/loading.png'));
+    background-image: url(get-resource-path('images/loading.gif'));
     background-position: center;
     content: '';
     position: absolute;
     margin-top: -15px;
     margin-left: -15px;
-    top: 50%;
+    top: 65%;
     left: 50%;
-    width: 41px;
-    height: 41px;
+    width: 64px;
+    height: 64px;
   }
 }
 
@@ -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'],

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

@@ -212,7 +212,7 @@ Ext.define('saas.view.document.kind.ChildForm', {
                 if(grid){
                     if(form.ownerCt._parent.lookup('document-kind-Grid')!=null){
                         form.ownerCt._parent.lookup('document-kind-Grid').store.load()
-                    }else{
+                    }else if(grid.store){
                         grid.store.load();
                     }
                 }

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

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

@@ -46,7 +46,7 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
             },{
                 xtype : "datefield", 
                 name : "pu_delivery", 
-                fieldLabel : "交货日期",
+                fieldLabel : "需求日期",
                 allowBlank:false,
                 defaultValue: new Date(),
                 columnWidth : 0.25,

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

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

+ 19 - 35
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() + "%')";
         }
@@ -59,35 +60,36 @@ Ext.define('saas.view.stock.report.DataList', {
         text: "物料规格",
         dataIndex: "rc_prodSpec",
         width: 200,
-    }, {
-        text: "单位",
-        dataIndex: "rc_prodUnit",
-        width: 150,
-    }, {
+    },  {
         text: "仓库编号",
         dataIndex: "rc_whCode",
         width: 200,
+        hidden:true
     }, {
         text: "仓库名称",
         dataIndex: "rc_whName",
-        width: 200,
+        width: 110,
     }, {
         text: "数量",
         xtype: 'numbercolumn',
         dataIndex: "rc_number",
-        width: 150,
+        width: 120,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
             var format = '0.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
+    },{
+        text: "单位",
+        dataIndex: "rc_prodUnit",
+        width: 80
     }, {
         text: "单价",
         xtype: 'numbercolumn',
         align: 'end',
         dataIndex: "rc_price",
-        width: 150,
+        width: 120,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
@@ -98,25 +100,7 @@ Ext.define('saas.view.stock.report.DataList', {
         text: "金额",
         xtype: 'numbercolumn',
         dataIndex: "rc_amount",
-        width: 150,
-        renderer: function (v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            var format = '0.' + 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);
-        }
-    }, {
-        text: "金额",
-        xtype: 'numbercolumn',
-        dataIndex: "rc_amount",
-        width: 150,
+        width: 120,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
@@ -145,26 +129,26 @@ Ext.define('saas.view.stock.report.DataList', {
         text: "物料规格",
         dataIndex: "rc_prodSpec",
         width: 200,
-    }, {
-        text: "单位",
-        dataIndex: "rc_prodUnit",
-        width: 150,
     }, {
         text: "数量",
         xtype: 'numbercolumn',
         dataIndex: "rc_number",
-        width: 150,
+        width: 120,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
             var format = '0.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
+    },{
+        text: "单位",
+        dataIndex: "rc_prodUnit",
+        width: 80,
     }, {
         text: "金额",
         xtype: 'numbercolumn',
         dataIndex: "rc_amount",
-        width: 150,
+        width: 120,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
@@ -180,5 +164,5 @@ Ext.define('saas.view.stock.report.DataList', {
         }
     }, {
         flex: 1
-    }],
+    }]
 })

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

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

@@ -23,9 +23,10 @@ Ext.define('saas.view.sys.power.FormPanel', {
         layout:'fit',
         height:'100%',
         width: '20%',
+        style:'border-right: 1px solid #35baf6;',
+        bodyStyle:'border-color: #ffffff;',
         useArrows: true
     },{
-        margin:'0 0 0 5',
         region:'center',
         layout:'fit',
         height:'100%',

+ 3 - 9
frontend/saas-web/app/view/sys/power/GroupGrid.js

@@ -4,9 +4,11 @@
 Ext.define('saas.view.sys.power.GroupGrid', {
     extend: 'Ext.grid.Panel',
     xtype: 'power-grid',
+    focusable:false,
     bind:{
         store: '{powergrid}'
     },
+    bufferedRenderer:false,
     tbar:['->',{
         xtype:'button',				
         text:'保存',
@@ -16,15 +18,7 @@ Ext.define('saas.view.sys.power.GroupGrid', {
     }],
     features : [Ext.create('Ext.grid.feature.Grouping',{
         collapsible:false,
-		showSummaryRow: false,
-        groupHeaderTpl: Ext.create('Ext.XTemplate',
-            '<div>{rows:this.formatName}</div>',
-            {
-                formatName: function(name) {
-                    return name[0].data.moduleName+'模块';
-                }
-            }
-        )
+        showSummaryRow: false
     })],
     dataUrl:'/api/account/role/power/resource',
     selModel: {

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

+ 0 - 112
frontend/saas-web/overrides/grid/buffer/BufferedRenderer.js

@@ -1,112 +0,0 @@
-Ext.define('saas.override.grid.buffer.BufferedRenderer', {
-    override: 'Ext.grid.plugin.BufferedRenderer',
-
-    setViewSize: function(viewSize, fromLockingPartner) {
-        var me = this,
-            store = me.store,
-            view = me.view,
-            ownerGrid,
-            rows = view.all,
-            elCount = rows.getCount(),
-            storeCount = store.getCount(),
-            start, end,
-            lockingPartner = me.view.lockingPartner && me.view.lockingPartner.bufferedRenderer,
-            diff = elCount - viewSize,
-            oldTop = 0,
-            maxIndex = Math.max(0, storeCount - 1),
-            // This is which end is closer to being visible therefore must be the first to have rows added
-            // or the opposite end from which rows get removed if shrinking the view.
-            pointyEnd = Ext.Number.sign((me.getFirstVisibleRowIndex() - rows.startIndex) - (rows.endIndex - me.getLastVisibleRowIndex()));
-        // Synchronize view sizes
-        if (lockingPartner && !fromLockingPartner) {
-            lockingPartner.setViewSize(viewSize, true);
-        }
-        diff = elCount - viewSize;
-        if (diff) {
-            // Must be set for getFirstVisibleRowIndex to work
-            me.scrollTop = me.scroller ? me.scroller.getPosition().y : 0;
-            me.viewSize = viewSize;
-            if (store.isBufferedStore) {
-                store.setViewSize(viewSize);
-            }
-            // If a store loads before we have calculated a viewSize, it loads me.defaultViewSize records.
-            // This may be larger or smaller than the final viewSize so the store needs adjusting when the view size is calculated.
-            if (elCount) {
-                // New start index should be current start index unless that's now too close to the end of the store
-                // to yield a full view, in which case work back from the end of the store.
-                // Ensure we don't go negative.
-                start = Math.max(0, Math.min(rows.startIndex, storeCount - viewSize));
-                // New end index works forward from the new start index ensuring we don't walk off the end
-                end = Math.min(start + viewSize - 1, maxIndex);
-                // Only do expensive adding or removal if range is not already correct
-                if (start === rows.startIndex && end === rows.endIndex) {
-                    // Needs rows adding to or bottom depending on which end is closest
-                    // to being visible (The pointy end)
-                    if (diff < 0) {
-                        me.handleViewScroll(pointyEnd);
-                    }
-                } else {
-                    // While changing our visible range, the locking partner must not sync
-                    if (lockingPartner) {
-                        lockingPartner.disable();
-                    }
-                    // View must expand
-                    if (diff < 0) {
-                        // If it's *possible* to add rows...
-                        if (storeCount > viewSize && storeCount > elCount) {
-                            // Grab the render range with a view to appending and prepending
-                            // nodes to the top and bottom as necessary.
-                            // Store's getRange API always has been inclusive of endIndex.
-                            store.getRange(start, end, {
-                                callback: function(newRecords, start, end) {
-                                    ownerGrid = view.ownerGrid;
-                                    // Append if necessary
-                                    if (end > rows.endIndex) {
-                                        rows.scroll(Ext.Array.slice(newRecords, rows.endIndex + 1, Infinity), 1, 0);
-                                    }
-                                    // Prepend if necessary
-                                    if (start < rows.startIndex) {
-                                        oldTop = rows.first(true);
-                                        rows.scroll(Ext.Array.slice(newRecords, 0, rows.startIndex - start), -1, 0);
-                                        // We just added some rows to the top of the rendered block
-                                        // We have to bump it up to keep the view stable.
-                                        me.bodyTop -= oldTop.offsetTop;
-                                    }
-                                    me.setBodyTop(me.bodyTop);
-                                    // The newly added rows must sync the row heights
-                                    if (lockingPartner && !fromLockingPartner && (ownerGrid.syncRowHeight || ownerGrid.syncRowHeightOnNextLayout)) {
-                                        lockingPartner.setViewSize(viewSize, true);
-                                        ownerGrid.syncRowHeights();
-                                    }
-                                }
-                            });
-                        } else // If not possible just refresh
-                        {
-                            me.refreshView(0);
-                        }
-                    } else // View size is contracting
-                    {
-                        // If removing from top, we have to bump the rendered block downwards
-                        // by the height of the removed rows.
-                        if (pointyEnd === 1) {
-                            oldTop = rows.item(rows.startIndex + diff, true).offsetTop;
-                        }
-                        // Clip the rows off the required end
-                        rows.clip(pointyEnd, diff);
-                        me.setBodyTop(me.bodyTop + oldTop);
-                    }
-                    if (lockingPartner) {
-                        lockingPartner.enable();
-                    }
-                }
-            }
-            // Update scroll range
-            me.refreshSize();
-        }
-        if(this.grid.xtype=='power-grid'){
-            viewSize = 61
-        }
-        return viewSize;
-    },
-});
-

+ 0 - 26
frontend/saas-web/overrides/grid/column/Widget.js

@@ -1,26 +0,0 @@
-Ext.define('saas.override.grid.column.Widget', {
-    override: 'Ext.grid.column.Widget',
-
-    onCellsResized: function(newWidth) {
-        var me = this,
-            liveWidgets = me.ownerGrid.getManagedWidgets(me.getId()),
-            len = liveWidgets.length,
-            view = me.getView(),
-            i, cell;
-        if (!me.isFixedSize && me.rendered && view && view.viewReady) {
-            cell = view.getEl().down(me.getCellInnerSelector());
-            if (cell) {
-                // Subtract innerCell padding width
-                newWidth -= parseInt(me.getCachedStyle(cell, 'padding-left'), 10) + parseInt(me.getCachedStyle(cell, 'padding-right'), 10);
-                for (i = 0; i < len; ++i) {
-                    if(liveWidgets[i]){
-                        liveWidgets[i].ownerLayout = null;
-                        liveWidgets[i].setWidth(newWidth);
-                        liveWidgets[i].ownerLayout = view.componentLayout;
-                    }
-                }
-            }
-        }
-    }
-
-});

+ 30 - 0
frontend/saas-web/overrides/grid/feature/Grouping.js

@@ -1,6 +1,36 @@
 Ext.define('saas.override.grid.feature.Grouping', {
     override: 'Ext.grid.feature.Grouping',
 
+    setup: function(rows, rowValues) {
+        var me = this,
+            data = me.refreshData,
+            view = rowValues.view,
+            // Need to check if groups have been added since init(), such as in the case of stateful grids.
+            isGrouping = view.isGrouping = !me.disabled && me.getGridStore().isGrouped(),
+            bufferedRenderer = view.bufferedRenderer;
+        me.skippedRows = 0;
+        if (bufferedRenderer) {
+            bufferedRenderer.variableRowHeight = view.hasVariableRowHeight() || isGrouping;
+        }
+        data.groupField = me.getGroupField();
+        data.header = me.getGroupedHeader(data.groupField);
+        data.doGrouping = isGrouping;
+        //权限界面的BUG 修改groupHeaderTpl属性会导致报错  暂时修改源码属性  hey
+        if(me.grid.xtype=='power-grid'){
+            me.groupHeaderTpl = Ext.create('Ext.XTemplate',
+                '<div>{rows:this.formatName}</div>',
+                {
+                    formatName: function(name) {
+                        return name[0].data.moduleName+'模块';
+                    }
+                }
+            )
+        }
+        rowValues.groupHeaderTpl = Ext.XTemplate.getTpl(me, 'groupHeaderTpl');
+        if (isGrouping && me.showSummaryRow) {
+            data.summaryData = me.generateSummaryData();
+        }
+    },
     getMetaGroup: function(group) {
         var me = this,
             id = me.getId == null ? me.id : me.getId(),

BIN
frontend/saas-web/resources/images/auth-background.jpg


BIN
frontend/saas-web/resources/images/loading.gif