ソースを参照

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

chenw 7 年 前
コミット
9f4bbfcf0e
100 ファイル変更1134 行追加412 行削除
  1. 1 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/dto/ListReqDTO.java
  2. 3 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  3. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/MaxnumbersdetailMapper.java
  4. 6 4
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java
  5. 6 0
      applications/commons/commons-server/src/main/resources/mapper/MaxnumbersdetailMapper.xml
  6. 4 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BomMapper.java
  7. 6 4
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/SubledgerMapper.java
  8. 7 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BomServiceImpl.java
  9. 47 23
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  10. 57 23
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  11. 7 1
      applications/document/document-server/src/main/resources/mapper/BomMapper.xml
  12. 12 6
      applications/document/document-server/src/main/resources/mapper/SubledgerMapper.xml
  13. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VerificationList.java
  14. 4 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  15. 4 3
      applications/money/money-server/src/main/resources/mapper/VerificationListMapper.xml
  16. 2 2
      applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml
  17. 2 5
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseReportController.java
  18. 5 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseReportMapper.java
  19. 4 3
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseReportService.java
  20. 48 27
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseReportServiceImpl.java
  21. 1 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  22. 39 1
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseReportMapper.xml
  23. 3 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/ProdInOutDTO.java
  24. 8 2
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  25. 6 6
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  26. 1 1
      applications/sale/sale-server/src/main/resources/mapper/ProdInOutMapper.xml
  27. 1 1
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/ProdInOutReportMapper.java
  28. 23 13
      frontend/saas-portal-web/src/components/conenter/addgongsi.vue
  29. 87 44
      frontend/saas-portal-web/src/components/conenter/company.vue
  30. 16 14
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  31. 172 72
      frontend/saas-portal-web/src/components/conenter/home.vue
  32. 100 18
      frontend/saas-portal-web/src/components/conenter/qiyexiangxi.vue
  33. 7 4
      frontend/saas-portal-web/src/store/index.js
  34. 15 15
      frontend/saas-portal-web/static/css/main.css
  35. BIN
      frontend/saas-portal-web/static/img/assets/1.png
  36. BIN
      frontend/saas-portal-web/static/img/assets/1@2x.png
  37. BIN
      frontend/saas-portal-web/static/img/assets/2.png
  38. BIN
      frontend/saas-portal-web/static/img/assets/2@3x.png
  39. BIN
      frontend/saas-portal-web/static/img/assets/3@2x.png
  40. BIN
      frontend/saas-portal-web/static/img/assets/Group3x.png
  41. BIN
      frontend/saas-portal-web/static/img/assets/beijing.png
  42. BIN
      frontend/saas-portal-web/static/img/assets/chatu.png
  43. BIN
      frontend/saas-portal-web/static/img/assets/dalogo@2x.png
  44. BIN
      frontend/saas-portal-web/static/img/assets/dalogo@2x_1.png
  45. BIN
      frontend/saas-portal-web/static/img/assets/dianzi3x.png
  46. BIN
      frontend/saas-portal-web/static/img/assets/fen xi@2x.png
  47. BIN
      frontend/saas-portal-web/static/img/assets/jin3x.png
  48. BIN
      frontend/saas-portal-web/static/img/assets/kuaisu@2x.png
  49. BIN
      frontend/saas-portal-web/static/img/assets/logo.png
  50. BIN
      frontend/saas-portal-web/static/img/assets/qing3x.png
  51. BIN
      frontend/saas-portal-web/static/img/assets/ren3x.png
  52. BIN
      frontend/saas-portal-web/static/img/assets/timg.jpg
  53. BIN
      frontend/saas-portal-web/static/img/assets/weixin.png
  54. BIN
      frontend/saas-portal-web/static/img/assets/weixuanzhong2x.png
  55. BIN
      frontend/saas-portal-web/static/img/assets/xuanzhong2x.png
  56. BIN
      frontend/saas-portal-web/static/img/assets/xun3x.png
  57. BIN
      frontend/saas-portal-web/static/img/assets/xunzhao@2x.png
  58. BIN
      frontend/saas-portal-web/static/img/assets/zi3x.png
  59. BIN
      frontend/saas-portal-web/static/img/features.jpg
  60. BIN
      frontend/saas-portal-web/static/img/gongneng/Group 32.png
  61. BIN
      frontend/saas-portal-web/static/img/qiye/x.png
  62. 4 9
      frontend/saas-portal-web/static/js/mains.js
  63. 28 0
      frontend/saas-web/app/Application.scss
  64. 19 0
      frontend/saas-web/app/view/core/base/GridPanel.js
  65. 29 0
      frontend/saas-web/app/view/core/base/ImportWindow.js
  66. 1 1
      frontend/saas-web/app/view/core/form/FormPanel.js
  67. 1 1
      frontend/saas-web/app/view/core/form/MseeageLog.js
  68. 1 1
      frontend/saas-web/app/view/document/bom/FormPanel.js
  69. 1 1
      frontend/saas-web/app/view/document/customer/FormPanel.js
  70. 1 1
      frontend/saas-web/app/view/document/product/FormPanel.js
  71. 1 1
      frontend/saas-web/app/view/document/vendor/FormPanel.js
  72. 2 2
      frontend/saas-web/app/view/home/InfoCard.js
  73. 1 0
      frontend/saas-web/app/view/main/Main.js
  74. 10 0
      frontend/saas-web/app/view/main/Main.scss
  75. 2 1
      frontend/saas-web/app/view/money/othreceipts/FormPanel.js
  76. 58 1
      frontend/saas-web/app/view/money/othreceipts/QueryPanel.js
  77. 1 0
      frontend/saas-web/app/view/money/othspendings/FormPanel.js
  78. 61 4
      frontend/saas-web/app/view/money/othspendings/QueryPanel.js
  79. 1 1
      frontend/saas-web/app/view/money/payBalance/FormPanelController.js
  80. 8 8
      frontend/saas-web/app/view/money/payBalance/QueryPanel.js
  81. 1 1
      frontend/saas-web/app/view/money/recBalance/FormPanelController.js
  82. 11 11
      frontend/saas-web/app/view/money/recBalance/QueryPanel.js
  83. 1 1
      frontend/saas-web/app/view/money/report/AccountBalance.js
  84. 1 1
      frontend/saas-web/app/view/money/report/AccountDetails.js
  85. 13 13
      frontend/saas-web/app/view/money/report/PayDetail.js
  86. 13 13
      frontend/saas-web/app/view/money/report/RecDetail.js
  87. 2 1
      frontend/saas-web/app/view/money/verification/FormPanel.js
  88. 8 7
      frontend/saas-web/app/view/money/verification/QueryPanel.js
  89. 46 0
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js
  90. 51 6
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanelController.js
  91. 5 5
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  92. 1 1
      frontend/saas-web/app/view/stock/stockamount/DataList.js
  93. 7 7
      frontend/saas-web/app/view/sys/config/FormPanel.js
  94. 1 1
      frontend/saas-web/app/view/sys/guide/FormPanel.js
  95. 1 1
      frontend/saas-web/app/view/sys/maxnumbers/DataList.js
  96. 1 1
      frontend/saas-web/app/view/sys/messagelog/DataList.js
  97. 0 7
      frontend/saas-web/app/view/sys/power/GroupGrid.js
  98. 3 2
      frontend/saas-web/app/view/sys/power/OtherField.js
  99. 4 0
      frontend/saas-web/overrides/button/Button.js
  100. 26 0
      frontend/saas-web/overrides/grid/column/Widget.js

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

@@ -38,7 +38,7 @@ public class ListReqDTO implements Serializable {
                         fieldSql = new StringBuilder("'{");
                         fieldSql.append("\"" + field + "\":'");
                         fieldSql.append(",");
-                        fieldSql.append(operation + "(" + field + ")");
+                        fieldSql.append("ifnull(" + operation + "(" + field + ")" + ",'0')");
                         fieldSql.append(",");
                         fieldSql.append("',\"operation\":\"" + operation + "\"");
                         fieldSql.append("}'");

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

@@ -33,6 +33,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_PRODWHCODE_REPEAT(79309, "明细仓库重复"),
     BIZ_UNENDPRODUCT(79310,"系统还未结账,不能反结账"),
     BIZ_RELUPDATE_CODEANDNAME(79311,"存在关联单据,不允许更新编号,名称"),
+    BIZ_RELUPDATE_AMOUNT(79312,"存在关联单据,不允许更新期初应收,期初预收"),
     NO_OPRATIONDATA(79400,"无可操作单据"),
     BOM_SAVE(79401, "产品编号+版本号已存在"),
     REPEAT_NAME(79501, "名称重复"),
@@ -47,6 +48,8 @@ public enum BizExceptionCode implements BaseExceptionCode {
     ACCOUNT_EXISTS(79505, "账号已存在"),
     DEAL_FAILED(79800, "编号:<u>%s</u>处理失败,%s"),
     USING_EXISTS(79504, ""),
+    LIMIT_PERIOD_VENDOR(79505,"修改供应商失败!不能修改系统结账期间%s之前的供应商的期初"),
+    LIMIT_PERIOD_CUSTOMER(79506,"修改客户失败!不能修改系统结账期间%s之前的供应商的期初"),
 
     VENDOR_ISCLOSE(79505, "供应商已关闭"),
     PRODUCT_ISCLOSE(79506, "物料已关闭"),

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

@@ -29,4 +29,6 @@ public interface MaxnumbersdetailMapper {
     int updateByPrimaryKeySelective(Maxnumbersdetail record);
 
     int updateByPrimaryKey(Maxnumbersdetail record);
+
+    void updateMaxno(@Param("id") Long id, @Param("serialNum") Integer serialNum, @Param("companyId") Long companyId);
 }

+ 6 - 4
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java

@@ -90,10 +90,11 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
             maxcode = rulecode + createSerialNum(length, maxno);
             //如果以更新方式取编号
             if (update) {
-                detail.setUpdateTime(new Date());
+                /*detail.setUpdateTime(new Date());
                 detail.setUpdaterId(userId);
                 detail.setMd_maxno(maxno);
-                maxnumbersdetailMapper.updateByPrimaryKeySelective(detail);
+                maxnumbersdetailMapper.updateByPrimaryKeySelective(detail);*/
+                maxnumbersdetailMapper.updateMaxno(detail.getId(), maxno, BaseContextHolder.getCompanyId());
             }
         }
         return maxcode;
@@ -143,10 +144,11 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
             length = maxnumbers.getMn_number();
             Integer serialNum = praseSerialNum(maxcode, length);
             if (null != serialNum) {
-                detail.setMd_maxno(serialNum);
+                /*detail.setMd_maxno(serialNum);
                 detail.setUpdaterId(userId);
                 detail.setUpdateTime(new Date());
-                maxnumbersdetailMapper.updateByPrimaryKeySelective(detail);
+                maxnumbersdetailMapper.updateByPrimaryKeySelective(detail);*/
+                maxnumbersdetailMapper.updateMaxno(detail.getId(), serialNum, BaseContextHolder.getCompanyId());
             }
 
         }

+ 6 - 0
applications/commons/commons-server/src/main/resources/mapper/MaxnumbersdetailMapper.xml

@@ -273,4 +273,10 @@
       updaterId = #{updaterId,jdbcType=INTEGER}
     where md_id = #{id,jdbcType=INTEGER}
   </update>
+
+  <update id="updateMaxno">
+    update maxnumbersdetail
+    set md_maxno = #{serialNum}
+    where md_id = #{id} and  companyId=#{companyId} and  md_maxno &lt; #{serialNum}
+  </update>
 </mapper>

+ 4 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BomMapper.java

@@ -19,7 +19,10 @@ public interface BomMapper extends CommonBaseMapper<Bom> {
 
     int updateByPrimaryKey(Bom record);
 
-    int validCodeAndVersion(@Param("code") String code, @Param("version") String version, @Param("companyId") Long companyId);
+    int validCodeAndVersionWhenInsert(@Param("code") String code, @Param("version") String version, @Param("companyId") Long companyId);
+
+    int validCodeAndVersionWhenUpdate(@Param("code") String code, @Param("id") Long id, @Param("version") String version, @Param("companyId") Long companyId);
+
 
     int validateCodeWhenInsert(@Param("code") String code, @Param("companyId") Long companyId);
 

+ 6 - 4
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/SubledgerMapper.java

@@ -25,15 +25,17 @@ public interface SubledgerMapper {
 
     List<Subledger> selectSubledgerBycondition(@Param("con") String con, @Param("companyId") Long companyId);
 
-    Subledger selectByKindCodeCustid(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
-                                     @Param("sl_custid") Integer sl_custid);
+    Long selectByKindCodeCustid(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
+                                     @Param("sl_custid") Integer sl_custid ,@Param("companyid") Long companyid,@Param("sl_ym") String sl_ym);
 
-    Subledger selectByKindCodeVendid(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
-                                     @Param("sl_vendid") Integer sl_vendid);
+    Long selectByKindCodeVendid(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
+                                     @Param("sl_vendid") Integer sl_vendid ,@Param("companyid") Long companyid,@Param("sl_ym") String sl_ym);
 
     void deleteCustomer(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
                         @Param("sl_custid") Integer sl_custid);
 
     void deleteVendor(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
                         @Param("sl_vendid") Integer sl_vendid);
+
+    String selectUnPeriod(@Param("companyId") Long companyId);
 }

+ 7 - 3
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BomServiceImpl.java

@@ -51,9 +51,10 @@ public class BomServiceImpl extends CommonBaseServiceImpl<BomMapper, Bom> implem
         DocBaseDTO docBaseDTO = null;
         if(id == 0){
             //校验编号和版本 是否已存在
-            int count = getMapper().validCodeAndVersion(bom.getBo_mothercode(), bom.getBo_version(), companyId);
+            int count = getMapper().validCodeAndVersionWhenInsert(bom.getBo_mothercode(), bom.getBo_version(), companyId);
             if(count == 0){
-                String code = pushMaxnubmer(bom.getBo_mothercode(), bom.getId());
+//                String code = pushMaxnubmer(bom.getBo_mothercode(), bom.getId());
+                String code = bom.getBo_mothercode();
                 bom.setBo_mothercode(code);
                 bom.setCompanyId(companyId);
                 //保存BOM
@@ -79,8 +80,11 @@ public class BomServiceImpl extends CommonBaseServiceImpl<BomMapper, Bom> implem
             }
         }else{
             //校验编号和版本 是否已存在
-            int count = getMapper().validCodeAndVersion(bom.getBo_mothercode(), bom.getBo_version(), companyId);
+            int count = getMapper().validCodeAndVersionWhenUpdate(bom.getBo_mothercode(),bom.getId(),bom.getBo_version(),companyId);
             //更新主表
+            if (count != 0) {
+                throw new BizException(BizExceptionCode.BOM_SAVE);
+            }
             getMapper().updateByPrimaryKeySelective(bom);
             if (bomDetailList.size() > 0) {
                 List<BomDetail> insertItems = new ArrayList<BomDetail>();

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

@@ -134,6 +134,20 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         Double preamount = main.getCu_preamount()==null? new Double(0):main.getCu_preamount();
         customer.setCu_leftamount(beginapamount-beginprepayamount+recamount-preamount);
 
+        //获取已结账的期间
+        String YM = subledgerMapper.selectUnPeriod(companyId);
+        if(YM==null || YM.equals("")){
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
+            YM = simpleDateFormat.format(main.getCu_begindate());
+        }else{
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
+            String beginDate = simpleDateFormat.format(main.getCu_begindate());
+            if(Integer.valueOf(YM)>Integer.valueOf(beginDate)){
+                int code = BizExceptionCode.LIMIT_PERIOD_CUSTOMER.getCode();
+                String mes = String.format(BizExceptionCode.LIMIT_PERIOD_CUSTOMER.getMessage(),YM);
+                throw new BizException(code , mes);
+            }
+        }
         //编号校验
         cu_code = RegexpUtils.replaceSpecCharacter(cu_code);
         cu_code = pushMaxnubmer(cu_code, cu_id);
@@ -196,8 +210,17 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
                 if (count > 0) {
                     throw new BizException(BizExceptionCode.BIZ_RELUPDATE_CODEANDNAME);
                 }
+
+                //限制关联单据不可修改金额
+                Customer customer1 = getMapper().selectByPrimaryKey(customer.getId());
+                if (customer.getCu_beginaramount() != customer1.getCu_beginaramount() ||
+                        customer.getCu_beginprerecamount() != customer1.getCu_beginprerecamount()){
+                    throw new BizException(BizExceptionCode.BIZ_RELUPDATE_AMOUNT);
+                }
             }
 
+
+
             //检查期初日期是否已结转
             count = getMapper().validFinish(cu_id, companyId);
             if (count > 0) {
@@ -267,29 +290,30 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         //插入中间表
         Double amount = (customer.getCu_beginaramount() == null ? new Double(0) : customer.getCu_beginaramount())
                 - (customer.getCu_beginprerecamount() == null ? new Double(0) : customer.getCu_beginprerecamount());
-            Subledger subledger = new Subledger();
-            subledger.setSl_code("期初余额");
-            subledger.setSl_kind("期初余额");
-            subledger.setSl_vendid(0);
-            subledger.setSl_custid(Math.toIntExact(customer.getId()));
-            subledger.setCompanyId(BaseContextHolder.getCompanyId());
-            subledger.setSl_date(DateUtils.getFirstDay(customer.getCu_begindate()));
-            subledger.setSl_ym(DateUtils.getYm(customer.getCu_begindate()));
-            if (amount > new Double(0)){
-                subledger.setSl_amount(amount);
-            }else {
-                subledger.setSl_preamount(amount);
-            }
-            subledger.setSl_orderamount(Math.abs(amount));
-            subledger.setSl_namount(Math.abs(amount));
-
-            Subledger subledger1 = subledgerMapper.selectByKindCodeCustid("期初余额","期初余额",
-                    Math.toIntExact(customer.getId()));
-            if (subledger1 == null) {
-                subledgerMapper.insertSelective(subledger);
-            }else {
-                subledgerMapper.updateByPrimaryKeySelective(subledger);
-            }
+        Subledger subledger = new Subledger();
+        subledger.setSl_code("期初余额");
+        subledger.setSl_kind("期初余额");
+        subledger.setSl_vendid(0);
+        subledger.setSl_custid(Math.toIntExact(customer.getId()));
+        subledger.setCompanyId(BaseContextHolder.getCompanyId());
+        subledger.setSl_date(DateUtils.getFirstDay(customer.getCu_begindate()));
+        subledger.setSl_ym(DateUtils.getYm(customer.getCu_begindate()));
+        if (amount > new Double(0)){
+            subledger.setSl_amount(amount);
+        }else {
+            subledger.setSl_preamount(amount);
+        }
+        subledger.setSl_orderamount(Math.abs(amount));
+        subledger.setSl_namount(Math.abs(amount));
+
+        Long sl_id  = subledgerMapper.selectByKindCodeCustid("期初余额","期初余额",
+                Math.toIntExact(customer.getId()),BaseContextHolder.getCompanyId(),YM);
+        subledger.setId(sl_id);
+        if ( sl_id!=null && sl_id > 0 ) {
+            subledgerMapper.updateByPrimaryKeySelective(subledger);
+        }else {
+            subledgerMapper.insertSelective(subledger);
+        }
 
         baseDTO = getBaseDTOById(cu_id);
         //日志记录

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

@@ -119,6 +119,21 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         main.setCompanyId(BaseContextHolder.getCompanyId());
         List<Vendorcontact> items = vendorListDTO.getItems();
         String ve_code = main.getVe_code().trim().toUpperCase();
+
+        //获取已结账的期间
+        String YM = subledgerMapper.selectUnPeriod(companyId);
+        if(YM==null || YM.equals("")){
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
+            YM = simpleDateFormat.format(main.getVe_begindate());
+        }else{
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
+            String beginDate = simpleDateFormat.format(main.getVe_begindate());
+            if(Integer.valueOf(YM)>Integer.valueOf(beginDate)){
+                int code = BizExceptionCode.LIMIT_PERIOD_VENDOR.getCode();
+                String mes = String.format(BizExceptionCode.LIMIT_PERIOD_VENDOR.getMessage(),YM);
+                throw new BizException(code , mes);
+            }
+        }
         ve_code = RegexpUtils.replaceSpecCharacter(ve_code);
         String code = pushMaxnubmer(ve_code, main.getId());
         if(main.getId() == 0){
@@ -171,6 +186,24 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
                 }
             }
 
+            //有关联时不可修改名称编号
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("v_id",main.getId());
+            map.put("v_code", ve_code);
+            map.put("v_type","vend");
+            map.put("v_companyid",BaseContextHolder.getCompanyId());
+            map.put("v_res","");
+            vendorMapper.check(map);
+            Object result =  map.get("v_res");
+            if(!StringUtils.isEmpty(result)){
+                //限制关联单据不可修改金额
+                Vendor vendor = getMapper().selectByPrimaryKey(main.getId());
+                if (vendor.getVe_beginapamount() != main.getVe_beginapamount() ||
+                        vendor.getVe_beginprepayamount() != main.getVe_beginprepayamount()){
+                    throw new BizException(BizExceptionCode.BIZ_RELUPDATE_AMOUNT);
+                }
+            }
+
             //检查期初日期是否已结转
             count = getMapper().validFinish(mainId,companyId);
             if (count>0) {
@@ -221,29 +254,29 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         //插入中间表
         Double amount = (main.getVe_beginapamount() == null ? new Double(0) : main.getVe_beginapamount())
                 - (main.getVe_beginprepayamount() == null ? new Double(0) : main.getVe_beginprepayamount());
-            Subledger subledger = new Subledger();
-            subledger.setSl_code("期初余额");
-            subledger.setSl_kind("期初余额");
-            subledger.setSl_vendid(Math.toIntExact(main.getId()));
-            subledger.setSl_custid(0);
-            subledger.setCompanyId(BaseContextHolder.getCompanyId());
-            subledger.setSl_date(DateUtils.getFirstDay(main.getVe_begindate()));
-            subledger.setSl_ym(DateUtils.getYm(main.getVe_begindate()));
-            if (amount > new Double(0)){
-                subledger.setSl_amount(amount);
-            }else {
-                subledger.setSl_preamount(amount);
-            }
-            subledger.setSl_orderamount(Math.abs(amount));
-            subledger.setSl_namount(Math.abs(amount));
-
-            Subledger subledger1 = subledgerMapper.selectByKindCodeVendid("期初余额","期初余额",
-                    Math.toIntExact(main.getId()));
-            if (subledger1 == null) {
-                subledgerMapper.insertSelective(subledger);
-            }else {
-                subledgerMapper.updateByPrimaryKeySelective(subledger);
-            }
+        Subledger subledger = new Subledger();
+        subledger.setSl_code("期初余额");
+        subledger.setSl_kind("期初余额");
+        subledger.setSl_vendid(Math.toIntExact(main.getId()));
+        subledger.setSl_custid(0);
+        subledger.setCompanyId(BaseContextHolder.getCompanyId());
+        subledger.setSl_date(DateUtils.getFirstDay(main.getVe_begindate()));
+        subledger.setSl_ym(DateUtils.getYm(main.getVe_begindate()));
+        if (amount > new Double(0)){
+            subledger.setSl_amount(amount);
+        }else {
+            subledger.setSl_preamount(amount);
+        }
+        subledger.setSl_orderamount(Math.abs(amount));
+        subledger.setSl_namount(Math.abs(amount));
+        Long sl_id = subledgerMapper.selectByKindCodeVendid("期初余额","期初余额",
+                Math.toIntExact(main.getId()),BaseContextHolder.getCompanyId(),YM);
+        subledger.setId(sl_id);
+        if ( sl_id!=null && sl_id > 0 ) {
+            subledgerMapper.updateByPrimaryKeySelective(subledger);
+        }else {
+            subledgerMapper.insertSelective(subledger);
+        }
 
         return generateMsgObj(main.getId(), code);
     }
@@ -279,6 +312,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         }
     }
 
+
     /**
      * 关闭
      * @param id

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

@@ -271,9 +271,15 @@
   <select id="validateCodeWhenUpdate" resultType="int" >
     select count(*) from BOM where BO_MOTHERCODE = #{code} and BO_ID != #{id} and companyId =#{companyId}
   </select>
-  <select id="validCodeAndVersion" resultType="int">
+  <select id="validCodeAndVersionWhenInsert" resultType="int">
       SELECT COUNT(*) FROM BOM WHERE BO_MOTHERCODE = #{code} and BO_VERSION=#{version} and COMPANYID=#{companyId}
   </select>
+
+  <select id="validCodeAndVersionWhenUpdate" resultType="int">
+    SELECT COUNT(*) FROM BOM WHERE BO_MOTHERCODE = #{code} and BO_ID != #{id} and BO_VERSION=#{version} and COMPANYID=#{companyId}
+  </select>
+
+
   <select id="getCodeById" resultType="string">
       SELECT BO_MOTHERCODE FROM BOM WHERE BO_ID = #{id} and COMPANYID = #{companyId}
   </select>

+ 12 - 6
applications/document/document-server/src/main/resources/mapper/SubledgerMapper.xml

@@ -247,20 +247,22 @@
         where sl_code = #{sl_code,jdbcType=VARCHAR}
     </select>
 
-  <select id="selectByKindCodeCustid" resultMap="BaseResultMap">
+  <select id="selectByKindCodeCustid" resultType="java.lang.Long">
   select
-  <include refid="Base_Column_List" />
+  ifnull(sl_id,0)
   from subledger
   where sl_code = #{sl_code,jdbcType=VARCHAR} and sl_kind = #{sl_kind,jdbcType=VARCHAR} and
-    sl_custid = #{sl_custid,jdbcType=INTEGER}
+    sl_custid = #{sl_custid,jdbcType=INTEGER} and companyId = #{companyid,jdbcType=INTEGER}
+    and sl_ym=#{sl_ym,jdbcType=VARCHAR}
   </select>
 
-  <select id="selectByKindCodeVendid" resultMap="BaseResultMap">
+  <select id="selectByKindCodeVendid" resultType="java.lang.Long">
     select
-    <include refid="Base_Column_List" />
+    ifnull(sl_id,0)
     from subledger
     where sl_code = #{sl_code,jdbcType=VARCHAR} and sl_kind = #{sl_kind,jdbcType=VARCHAR} and
-    sl_vendid = #{sl_vendid,jdbcType=INTEGER}
+    sl_vendid = #{sl_vendid,jdbcType=INTEGER} and companyId = #{companyid,jdbcType=INTEGER}
+    and sl_ym=#{sl_ym,jdbcType=VARCHAR}
   </select>
 
   <delete id="deleteCustomer">
@@ -274,4 +276,8 @@
     where sl_code = #{sl_code,jdbcType=VARCHAR} and sl_kind = #{sl_kind, jdbcType=VARCHAR} and
     sl_vendid = #{sl_vendid,jdbcType=INTEGER}
   </delete>
+
+  <select id="selectUnPeriod" resultType="string">
+        select PD_DETNO from periodsdetail where companyid=#{companyId} and pd_status=99 order by PD_DETNO desc LIMIT 1;
+    </select>
 </mapper>

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VerificationList.java

@@ -55,9 +55,9 @@ public class VerificationList extends CommonBaseEntity implements Serializable {
 
     private Date vc_recorddate;
 
-    private Integer vc_status;
+    private String vc_status;
 
-    private BigDecimal vc_statuscode;
+    private String vc_statuscode;
 
     private String vc_remark;
 

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

@@ -208,6 +208,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         List<Verificationdetail> items2 = verificationdetailMapper.selectByFK(id);
 
         String type = main.getVc_kind();
+        type = transferKind(type);
         if(type.equals("receipts_offset_receivable") || type.equals("prepaid_offset_payable") ||
                 type.equals("receivable_offset_payable")){
             Double total1 = new Double(0);
@@ -478,6 +479,9 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             }
         }
         baseDTO.setId(id);
+        baseDTO.setName(BillCodeSeq.VERIFICATION.getCaller());
+        baseDTO.setCode(formData.getMain().getVc_code());
+        messageLogService.audit(baseDTO);
         return baseDTO;
     }
 

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

@@ -22,8 +22,8 @@
         <result column="vc_recorderid" property="vc_recorderid" jdbcType="INTEGER" />
         <result column="vc_recorder" property="vc_recorder" jdbcType="VARCHAR" />
         <result column="vc_recorddate" property="vc_recorddate" jdbcType="TIMESTAMP" />
-        <result column="vc_status" property="vc_status" jdbcType="INTEGER" />
-        <result column="vc_statuscode" property="vc_statuscode" jdbcType="DECIMAL" />
+        <result column="vc_status" property="vc_status" jdbcType="VARCHAR" />
+        <result column="vc_statuscode" property="vc_statuscode" jdbcType="VARCHAR" />
         <result column="vc_remark" property="vc_remark" jdbcType="VARCHAR" />
         <result column="vc_text1" property="vc_text1" jdbcType="VARCHAR" />
         <result column="vc_text2" property="vc_text2" jdbcType="VARCHAR" />
@@ -46,7 +46,8 @@
 
     </resultMap>
     <sql id="Base_Column_List">
-    vc_id, vc_code, vc_kind, vc_date, vc_vendid, vc_vendcode ,vc_custcode ,vc_custid ,vc_amount1
+    vc_id, vc_code, vc_kind, vc_date, vc_vendid, vc_vendcode ,vc_custcode ,vc_custid ,vc_amount1,
+    vc_status,vc_statuscode,vc_vendname,vc_custname
   </sql>
     <select id="selectVerificationListByCondition"  resultMap="BaseResultMap">
         select

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

@@ -23,8 +23,8 @@
     <result column="vc_recorderid" property="vc_recorderid" jdbcType="INTEGER" />
     <result column="vc_recorder" property="vc_recorder" jdbcType="VARCHAR" />
     <result column="vc_recorddate" property="vc_recorddate" jdbcType="TIMESTAMP" />
-    <result column="vc_status" property="vc_status" jdbcType="INTEGER" />
-    <result column="vc_statuscode" property="vc_statuscode" jdbcType="DECIMAL" />
+    <result column="vc_status" property="vc_status" jdbcType="VARCHAR" />
+    <result column="vc_statuscode" property="vc_statuscode" jdbcType="VARCHAR" />
     <result column="vc_remark" property="vc_remark" jdbcType="VARCHAR" />
     <result column="companyId" property="companyId" jdbcType="INTEGER" />
     <result column="updaterId" property="updaterId" jdbcType="INTEGER" />

+ 2 - 5
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseReportController.java

@@ -1,6 +1,5 @@
 package com.usoftchina.saas.purchase.controller;
 
-import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.page.PageRequest;
@@ -23,14 +22,12 @@ public class PurchaseReportController {
 
     @GetMapping("/purchasePay")
     public Result PurchasePay(PageRequest page, ListReqDTO req) {
-        PageInfo listData = purchaseReportService.getPurchasePayData(page, req);
-        return Result.success(listData);
+        return Result.success(purchaseReportService.getPurchasePayData(page, req));
     }
 
     @GetMapping("/purchaseDetail")
     public Result PurchaseDetail(PageRequest page, ListReqDTO req) {
-        PageInfo listData = purchaseReportService.getPurchaseDetailData(page, req);
-        return Result.success(listData);
+        return Result.success(purchaseReportService.getPurchaseDetailData(page, req));
     }
 
 }

+ 5 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseReportMapper.java

@@ -7,7 +7,11 @@ import org.apache.ibatis.annotations.Param;
 import java.util.List;
 
 public interface PurchaseReportMapper {
-    List<PurchasePay> selectByCondition(@Param("con") String con, @Param("companyId") Long companyId);
+    List<PurchasePay> selectPurchasePayByCondition(@Param("con") String con, @Param("companyId") Long companyId);
 
     List<PurchaseReportDetail> selectDetailByCondition(@Param("con") String con, @Param("companyId") Long companyId);
+
+    String selectPurchasePayCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
+
+    String selectDetailCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 }

+ 4 - 3
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseReportService.java

@@ -1,12 +1,13 @@
 package com.usoftchina.saas.purchase.service;
 
-import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.page.PageRequest;
 
+import java.util.Map;
+
 public interface PurchaseReportService {
 
-    PageInfo getPurchasePayData(PageRequest page, ListReqDTO req);
+    Map<String, Object> getPurchasePayData(PageRequest page, ListReqDTO req);
 
-    PageInfo getPurchaseDetailData(PageRequest page, ListReqDTO req);
+    Map<String, Object> getPurchaseDetailData(PageRequest page, ListReqDTO req);
 }

+ 48 - 27
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseReportServiceImpl.java

@@ -1,16 +1,21 @@
 package com.usoftchina.saas.purchase.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.purchase.mapper.PurchaseReportMapper;
 import com.usoftchina.saas.purchase.service.PurchaseReportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author: guq
@@ -23,43 +28,59 @@ public class PurchaseReportServiceImpl implements PurchaseReportService{
     private PurchaseReportMapper purchaseReportMapper;
 
     @Override
-    public PageInfo getPurchasePayData(PageRequest page, ListReqDTO req) {
-        return getListDATA(page, req, "PurchasePay");
-    }
-
-    @Override
-    public PageInfo getPurchaseDetailData(PageRequest page, ListReqDTO req) {
-        return getListDATA(page, req, "PurchaseReportDetail");
-    }
-
-    private PageInfo getListDATA(PageRequest page, ListReqDTO req, String type) {
-        //设置默认分页
-        if (null == page || page.getSize() == 0 || page.getNumber() == 0) {
-            page = new PageRequest();
-            page.setNumber(1);
-            page.setSize(10);
-        }
+    public Map<String, Object> getPurchasePayData(@PageDefault(size = 10)PageRequest page, ListReqDTO req) {
         PageHelper.startPage(page.getNumber(), page.getSize());
-        //查询数据
-        List lists = getListByType(req, type);
+        Map<String,Object> map = new HashMap<>();
+        List list = null;
+        Long companyId = BaseContextHolder.getCompanyId();
+        String con = req.getFinalCondition();
+        String calculateFieldsSql = req.getCalculateFieldsSql();
+        JSONArray arr = null;
+        if (null == con) {
+            con = "1=1";
+        }
+        list = purchaseReportMapper.selectPurchasePayByCondition(con, companyId);
         //取分页信息
-        PageInfo pageInfo = new PageInfo(lists);
-        return pageInfo;
+        PageInfo pageInfo = new PageInfo(list);
+        //取对应计算数据
+        if (!StringUtils.isEmpty(calculateFieldsSql)) {
+            String res = purchaseReportMapper.selectPurchasePayCalculateFields(calculateFieldsSql, con, companyId);
+            try {
+                arr = JSONArray.parseArray(res);
+            } catch (Exception e) {
+            }
+        }
+        map.put("list", pageInfo);
+        map.put("calculate", arr);
+        return map;
     }
 
-    private List getListByType(ListReqDTO req, String type) {
+    @Override
+    public Map<String, Object> getPurchaseDetailData(@PageDefault(size = 10)PageRequest page, ListReqDTO req) {
+        PageHelper.startPage(page.getNumber(), page.getSize());
+        Map<String,Object> map = new HashMap<>();
         List list = null;
         Long companyId = BaseContextHolder.getCompanyId();
-        companyId = 1l;
         String con = req.getFinalCondition();
+        String calculateFieldsSql = req.getCalculateFieldsSql();
+        JSONArray arr = null;
         if (null == con) {
             con = "1=1";
         }
-        if ("PurchasePay".equals(type)) {
-            list = purchaseReportMapper.selectByCondition(con, companyId);
-        } else if ("PurchaseReportDetail".equals(type)){
-            list = purchaseReportMapper.selectDetailByCondition(con, companyId);
+        list = purchaseReportMapper.selectDetailByCondition(con, companyId);
+        //取分页信息
+        PageInfo pageInfo = new PageInfo(list);
+        //取对应计算数据
+        if (!StringUtils.isEmpty(calculateFieldsSql)) {
+            String res = purchaseReportMapper.selectDetailCalculateFields(calculateFieldsSql, con, companyId);
+            try {
+                arr = JSONArray.parseArray(res);
+            } catch (Exception e) {
+            }
         }
-        return list;
+        map.put("list", pageInfo);
+        map.put("calculate", arr);
+        return map;
     }
+
 }

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

@@ -522,7 +522,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         //生成更新对象
         purchase.setId(id);
         purchase.setPu_acceptstatus(Status.UNTURNIN.getDisplay());
-        purchase.setPu_acceptstatuscode(Status.UNAUDITED.name());
+        purchase.setPu_acceptstatuscode(Status.UNTURNIN.name());
         purchase.setUpdateTime(new Date());
         purchase.setUpdaterId(BaseContextHolder.getUserId());
         getMapper().updateByPrimaryKeySelective(purchase);

+ 39 - 1
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseReportMapper.xml

@@ -100,7 +100,7 @@
     <result column="pr_text4" property="pr_text4"/>
     <result column="pd_accepttotal" property="pd_accepttotal"/>
   </resultMap>
-  <select id="selectByCondition" resultMap="BaseResultMap">
+  <select id="selectPurchasePayByCondition" resultMap="BaseResultMap">
     select  *  from purchasepay_view
     <where>
       <if test="con != null">
@@ -125,4 +125,42 @@
       </if>
     </where>  order by pu_date desc
   </select>
+
+
+  <select id="selectPurchasePayCalculateFields" resultType="string">
+    select   ${fields}  from purchasepay_view
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and  companyId = #{companyId}
+      </if>
+    </where>
+    order by pb_id desc
+  </select>
+
+  <select id="selectDetailCalculateFields" resultType="string">
+    select   ${fields}  from purchase left join purchasedetail on pu_id=pd_puid
+    left join product on pd_prodid=pr_id
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and   purchase.companyId = #{companyId}
+      </if>
+    </where>  order by pu_date desc
+  </select>
+
+
+
+
+
+
+
+
+
+
+
 </mapper>

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

@@ -75,4 +75,7 @@ public class ProdInOutDTO extends CommonBaseDTO implements Serializable {
 
     private String pi_iocode;
 
+    private String pi_auditman;
+
+    private Date pi_auditdate;
 }

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

@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+import com.usoftchina.saas.commons.api.CommonService;
 import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
@@ -50,6 +51,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     private MessageLogService messageLogService;
     @Autowired
     private WarehouseApi warehouseApi;
+    @Autowired
+    private CommonService commonService;
 
     @Override
     public ProdInOutFormDTO getFormData(Long id) {
@@ -95,7 +98,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         prodInOut.setCreateTime(new Date());
         prodInOut.setPi_recordmanid(userId);
         prodInOut.setPi_recorddate(new Date());
-        prodInOut.setPi_recordman("TESTADMIN");
+        prodInOut.setPi_recordman(BaseContextHolder.getUserName());
 
         if(prodInOut.getPi_date() == null){
             prodInOut.setPi_date(new Date());
@@ -268,6 +271,9 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         if(!StringUtils.isEmpty(result)){
             throw new BizException(BizExceptionCode.SALEOUT_POST_ERROR.getCode(),result.toString());
         }else{
+            //更新审核人、审核时间
+            commonService.commonAudit("prodinout", "pi_id=" + prodInOutDTO.getId(), "pi_status",
+                    "pi_statuscode", "pi_auditdate", "pi_auditman");
             //记录日志
             DocBaseDTO docBaseDTO = getBaseDTOById(prodInOutDTO.getId(),pi_class,pi_inoutno);
             //日志
@@ -482,7 +488,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         setTotal(targetPi);
 
         //日志记录
-        DocBaseDTO log = new DocBaseDTO(id, sourcePi.getPi_inoutno(), BillCodeSeq.SALEIN.getCaller());
+        DocBaseDTO log = new DocBaseDTO(id, sourcePi.getPi_inoutno(), BillCodeSeq.SALEOUT.getCaller());
         messageLogService.customizeLog(log, Operation.TURNPRODOUTRETURN);
 
         baseDTO.setId(pi_id);

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

@@ -571,20 +571,20 @@ public class SaleServiceImpl implements SaleService{
         Long purchaseId = purchase.getId();
         for (SaleList detail : dateilList){
             PurchaseDetailDTO purchaseDetail = new PurchaseDetailDTO();
-            Double taxPrice = detail.getPr_purcprice()==null?new Double(0):Double.valueOf(detail.getPr_purcprice());
-            Double taxrate = detail.getSd_taxrate()==null?new Double(0):detail.getSd_taxrate();
+            Double Price = detail.getPr_purcprice()==null?new Double(0):Double.valueOf(detail.getPr_purcprice());
+            Double taxRate = detail.getSd_taxrate()==null?new Double(0):detail.getSd_taxrate();
             Double qty = detail.getSd_qty()==null?new Double(0):detail.getSd_qty();
             purchaseDetail.setPd_prodid(Long.valueOf(String.valueOf(detail.getSd_prodid())));
             purchaseDetail.setPd_prodcode(detail.getSd_prodcode());
             purchaseDetail.setPd_detno(detail.getSd_detno());
             purchaseDetail.setPd_qty(detail.getSd_qty());
-            purchaseDetail.setPd_price(taxPrice/(1+taxrate));
+            purchaseDetail.setPd_price(Price);
             purchaseDetail.setPd_salecode(sale.getSa_code());
             purchaseDetail.setPd_saledetno(detail.getSd_detno());
             purchaseDetail.setPd_saleid(sale.getId());
-            purchaseDetail.setPd_taxrate(taxrate);
-            purchaseDetail.setPd_taxprice(taxPrice);
-            purchaseDetail.setPd_taxtotal(taxPrice*qty);
+            purchaseDetail.setPd_taxrate(taxRate);
+            purchaseDetail.setPd_taxprice(Price*(1+taxRate/100));
+            purchaseDetail.setPd_taxtotal((Price*(1+taxRate/100))*qty);
             purchaseDetail.setCompanyId(BaseContextHolder.getCompanyId());
             purchaseDetail.setCreatorId(BaseContextHolder.getUserId());
             purchaseDetail.setCreateTime(new Date());

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

@@ -573,6 +573,6 @@ update ProdInOut SET
     select pr_whid,pr_whcode,pr_whname from product where pr_code=#{code} and companyid=#{companyId} and pr_statuscode='OPEN'
   </select>
   <update id="updateCreator">
-    update ProdInOut set creatorId = #{userId} , creatorName=#{userName} where pi_id=#{id}
+    update ProdInOut set creatorId = #{userId} , createTime=now(), creatorName=#{userName} where pi_id=#{id}
   </update>
 </mapper>

+ 1 - 1
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/ProdInOutReportMapper.java

@@ -18,5 +18,5 @@ public interface ProdInOutReportMapper {
 
     String selectProdiodetailCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 
-    String selectProdinoutCountCalculateFields(String calculateFieldsSql, String con, Long companyId);
+    String selectProdinoutCountCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 }

+ 23 - 13
frontend/saas-portal-web/src/components/conenter/addgongsi.vue

@@ -14,7 +14,7 @@
                     <ul>
                         <li>
                             <span class="qy-biaoti"><span class="xingxing">*</span>公司名称</span>
-                            <input ref="qyname" @input= "spaceName" type="text">
+                            <input ref="qyname" @change= "spaceName" type="text">
                             <span ref="qyno" style="color:red"></span>
                         </li>
                         <li>
@@ -47,13 +47,14 @@
                     <ul>
                         <li>
                             <span class="qy-biaoti"><span class="xingxing">*</span>姓名</span>
-                            <input @input= "yzusername" ref="name" type="text">
+                            <input @change= "yzusername" ref="name" type="text">
                             <span ref="usname" style="color:red"></span>
                         </li>
                         <li><span class="qy-biaoti">手机号</span><span>{{mytoken.account.mobile}}</span></li>
                         <li>
                             <span class="qy-biaoti">邮箱</span>
-                            <input @input="email" ref="email" type="email">
+                            <input @change="email" ref="email" type="email">
+                            <span style="color:red">{{Email}}</span>
                         </li>
                     </ul>
                 </div>
@@ -70,7 +71,8 @@ import VDistpicker from 'v-distpicker'
                 province:'',//省
                 city:'',//市
                 area:'',//区
-                qymingzi: '',
+                qymingzi: false,//企业名是否注册
+                Email: '',
                 mytoken: JSON.parse(localStorage.getItem('app-state-session'))//本地储存的用户信息
             }
         },
@@ -102,13 +104,15 @@ import VDistpicker from 'v-distpicker'
                         }
                     })
                     .then(res=>{
-                        // console.log(res);
-                        // this.qymingzi = on;
-                        // console.log(this.qymingzi)
+                        if (res.data.data.success) {
+                            this.qymingzi = true;
+                        } else {
+                            this.$refs.qyno.innerHTML = '企业已注册';
+                            this.qymingzi = false
+                        }
                     })
                     .catch(err=>{
-                        console.log(err);
-                        this.$refs.qyno.innerHTML = '企业已注册';
+                        console.log("请求错误",err);
                     })
                 }
             },
@@ -123,7 +127,13 @@ import VDistpicker from 'v-distpicker'
             },
             
             email(){
+                let reg = new RegExp("^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$"); 
                 let email = this.$refs.email.value;//邮箱
+                if (!reg.test(email)) {
+                    this.Email = '邮箱格式错误'
+                } else {
+                    this.Email = ''
+                }
 
             },
             //保存
@@ -139,9 +149,9 @@ import VDistpicker from 'v-distpicker'
                 let mobile = mytoken.account.mobile;//手机号
                 let company = {'name':qyname,'address':address};
                 let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu}
-                if (name != '' && qyname != '') {
+                if (name != '' && qyname != '' && this.qymingzi) {
                     this.$ajax({
-                        url: this.$url.api+"/api/account/accountCenter/companyAccount/save",
+                        url: this.$url.api+"/api/account/accountCenter/companyAccount/save",//http://192.168.253.31:8560
                         method: 'post',
                         data: {
                             companyRegDTO:company,
@@ -153,13 +163,13 @@ import VDistpicker from 'v-distpicker'
                         }
                     })
                     .then(res=>{
-                        console.log("请求成功"+res)
+                        console.log("请求成功",res)
                         document.documentElement.scrollTop = 0;
                         // this.$router.push({name:'company', params:{company:company,account:account}});
                         this.$router.push({name:'company'})
                     })
                     .catch(err=>{
-                        console.log("请求失败"+err)
+                        console.log("请求失败",err)
                     })
                 } else {
                     this.$refs.tjtishi.innerHTML = '企业名称或姓名不能为空'

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

@@ -1,8 +1,8 @@
 <template>
   <div>
-    <iframe hidden :src="setTokenPage"></iframe>
+    <!-- <iframe hidden :src="setTokenPage"></iframe> -->
     <!-- 遮罩 -->
-    <div class="zhezhao" v-if="issetDefault || isOpensaas"></div>
+    <div class="zhezhao" v-if="issetDefault || isOpensaas || isNoopen"></div>
     <!-- 设置默认弹窗 -->
     <div class="tanchuang szmoren" v-if="issetDefault">
       <div class="over"><img @click="guanbitc" class="right xs" src="/static/img/qiye/chahao.png" alt=""></div>
@@ -39,14 +39,14 @@
       <div>
         <div class="tc-okkaitong"><span>该企业已开通服务,联系管理员邀请加入</span></div>
         <div class="tc-context">
-          <p><span>管理员:</span><span>飞飞</span></p>
-          <p><span>管理员手机号:</span><span>123456566767</span></p>
-          <p><span>管理员邮箱:</span><span>jjfdks@163.com</span></p>
+          <!-- <p><span>管理员:</span><span>{{arr[0].admin}}</span></p> -->
+          <p><span>管理员手机号:</span><span>{{mytoken.account.mobile}}</span></p>
+          <p><span>管理员邮箱:</span><span></span></p>
         </div>
       </div>
     </div>
     <!-- 开通10个不能继续开通 -->
-    <div class="tanchuang nokaitong" style="display:none" v-if="isNoopen">
+    <div class="tanchuang nokaitong" v-if="isNoopen">
       <div class="over"><img @click="guanbitc" class="right xs" src="/static/img/qiye/chahao.png" alt=""></div>
       <div>
         <div class="tc-conent"><img src="/static/img/qiye/buneng kaitong@1x.png" alt=""></div>
@@ -62,20 +62,19 @@
             <div v-for="(d , i) in arr " :key="i" class="gs-xiangqing xs">
                 <div class="left gs-xqleft" @click= "getEnterpriseInfo(d)">
                     <div class="gs-lefttext">
-                        <p class="gs-qynema"><span>企业名称:</span>{{d.address}}</p>
-                        <p><span>管理员:</span>{{d.name}}</p>
+                        <p class="gs-qynema"><span>企业名称:</span>{{d.name}}</p>
+                        <p><span>管理员:</span>{{d.admin}}</p>
                         <p v-if= "d.time"><span>开通日期:</span>{{d.time}}</p>
                     </div>
                 </div>
                 <div class="right gs-xqright">
                     <div class="gs-border">
                         <span v-if= "d.saas_" class="gs-btn1 dianji" @click="selectServe(d.id)">进入服务</span>
-                        <span v-else @click= "showOpenServeWin" class="gs-btn1 kaitong xs">开通服务</span>
+                        <span v-else @click="showOpenServeWin(d.id , i)" class="gs-btn1 kaitong xs">开通服务</span>
                     </div>
                     <div>
                         <span v-if = "d.default_" class="gs-btn2 gs-btn3">默认企业</span>
                         <span v-else @click="showDefaultWin(i)" class="gs-btn2 xs">设为默认</span>
-                        
                     </div>
                 </div>
             </div>
@@ -97,7 +96,9 @@
                 isOpensaas: false,//开通saas弹窗
                 isNoopen: false,//开通10个不能继续开通
                 index:0,
-                ktsass: true,//确认开通saas
+                saasid:null,
+                saasindex:0,
+                ktsass: true,//开通saas
                 isDefault: true,//开通默认
                 comdata: this.$store.state.data,//登录成功后的本地数据
                 isAutoLogin: this.$store.state.isAutoLogin,
@@ -121,6 +122,7 @@
             let mytoken = JSON.parse(localStorage.getItem('app-state-session'));
             let token = String(mytoken.token);
             // console.log(mytoken.account)
+            //企业列表
             this.$ajax({
                     url: this.$url.api+"/api/account/accountCenter/company/list",
                     method: 'get',
@@ -133,31 +135,36 @@
                     }
                 })
                 .then(res=>{
+                    const frame = window.frames[window.frames.length - 1];
                     this.arr = res.data.data.spaces;
                     let hasCompany = res.data.data.hasDefaultCompany;
                     let companyId = res.data.data.defaultCompanyId;
+                    let token = res.data.data.token.token;
                     if (this.isAutoLogin) {
                         if (hasCompany) {
-                            this.selectServe(companyId)
+                            let session=JSON.parse(localStorage.getItem('app-state-session'));
+                            session.account.companyId=companyId;
+                            session.span = session.timestamp - new Date().getTime();
+                            session.token=token;
+                            frame.postMessage(JSON.stringify(session), '*');
+                            window.location.href = this.$url.web
                         }
-                        this.isAutoLogin = false
                     }
+                    this.$store.commit('Loginfalse')
                     // console.log(res.data.data)
                 })
                 .catch(err=>{
                     console.log("请求失败",err)
                 })
-            
+            this.boxheight();
         },
         methods: {
-            //设置默认弹窗
+            //设置默认企业
             showDefaultWin(i){
                 this.index = i;
                 this.issetDefault = true;
-                // $(".szmoren").css("display","block");
-                // $(".zhezhao").css("display","block");
             },
-            //确认默认
+            //确认默认企业
             setDefault(){
                 let i = this.index;
                 let token = this.mytoken.token;
@@ -176,6 +183,7 @@
                 .then(res=>{
                     // console.log('请求成功',res);
                     this.isDefault = false;
+                    this.$router.go(0);
                 })
                 .catch(err=>{
                     console.log('请求失败',err);
@@ -207,26 +215,69 @@
                 })
             
             },
-            //开通sass
-            showOpenServeWin(){
-                this.isOpensaas = true;
-                // $(".ktsass").css('display','block');
-                // $(".zhezhao").css("display","block");
-                this.ktsass = true;
+            //开通saas服务开通数量达到10的时候禁止开通
+            showOpenServeWin(id , i){
+                let saasNum = [];
+                let arr = this.arr;
+                for (let j = 0; j < arr.length; j++) {
+                    if (arr[j].saas_) {
+                        saasNum.push(arr[j].saas_)
+                    }
+                }
+                if (saasNum.length >= 10) {
+                    this.isNoopen = true;
+                } else {
+                    this.isOpensaas = true;
+                }
+                this.saasindex = i;
+                this.saasid = id;
             },
-            confirmSaas(){//确认sass
-                this.ktsass = false;
+            confirmSaas(){//确认saas开通
+                let i = this.saasindex;
+                let token = this.mytoken.token;
+                let qyname = this.arr[i].name;//公司名字
+                let address = this.arr[i].address;//公司详细地址
+                let name = this.arr[i].realname;//名字
+                let email = this.arr[i].email;//邮箱
+                let mobile = this.mytoken.account.mobile;//手机号
+                let uu = this.arr[i].uu;
+                let company = {'name':qyname,'address':address};
+                let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu}
+                // let id = this.saasid;
+                this.$ajax({
+                    url: this.$url.api+"/api/account/accountCenter/companyAccount/save",
+                    method: 'post',
+                    data: {
+                        companyRegDTO:company,
+                        accountRegDTO:account,
+                        type:1
+                    },
+                    headers: {
+                        "Authorization":token
+                    }
+                })
+                .then(res=>{
+                    console.log('请求成功',res)
+                    if (res.data.data.success) {
+                        this.ktsass = false;
+                    }
+                })
+                .catch(err=>{
+                    console.log('请求失败',err)
+                })
             },
-            //进入服务
+            //进入saas服务
             showServeWin(){
-                this.isOpensaas = false
-                // $(".ktsass").css('display','none');
-                // $(".zhezhao").css("display","none");
+                let id = this.saasid;
+                this.isOpensaas = false;
+                this.$options.methods.selectServe(id)
             },
             //查看企业详情
             getEnterpriseInfo(d){
                 document.documentElement.scrollTop = 0;
-                this.$router.push({path:'/details',query:{content:d}});
+                // this.$router.push({path:'/details',query:{content:d}});
+                this.$router.push({path:'/details'});
+                window.sessionStorage.setItem('content',JSON.stringify(d))
             },
              //添加企业
             addEnterprise(){
@@ -235,19 +286,16 @@
             //关闭弹窗
             guanbitc(){
                 this.issetDefault = false;
-                this.isOpensaas = false
-                // $(".tanchuang").css("display","none");
-                // $(".zhezhao").css("display","none");
+                this.isOpensaas = false;
+                this.isNoopen = false
             },
             //没有内容也要有一定的高度
             boxheight(){
                 let H = this.$refs.qiyebox.offsetHeight;
-                // let H = $(".gs-qiyebox").height();
-                console.log(H)
                 if (H < 300) {
-                    $(".gs-qiyebox").css("height",'500px')
+                    this.$refs.qiyebox.style.height = 500+'px';
                 } else {
-                    $(".gs-qiyebox").css("height",'')
+                    this.$refs.qiyebox.style.height = '';
                 }
             },
         }
@@ -255,10 +303,5 @@
 </script>
 
 <style scoped>
-.zhezhao {
-    /* display: none */
-}
-.tanchuang {
-    /* display: none */
-}
+
 </style>

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

@@ -1,6 +1,6 @@
 <template>
     <div class="div">
-        <iframe hidden :src="setTokenPage"></iframe>
+        
         <div id="navigation" class="navbar-inverse navbar-fixed-top animated-header">
         <div class="container">
             <div class="navbar-header">
@@ -12,7 +12,7 @@
                 </button>
                 <h1 class="navbar-brand">
                     <a href="#">
-                        <img class="logo-img" src="../../../static/img/assets/dalogo3x.png" alt="">
+                        <img class="logo-img" src="/static/img/assets/dalogo@2x_1.png" alt="">
                     </a>
                 </h1>
             </div>
@@ -21,17 +21,17 @@
                     <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>
-                        <span style="color:#fff;font-size: 13px;">
-                            <img style="width: 25px;" src="/static/img/assets/denglu3x.png" alt="">
+                        <span style="color:#fff;font-size: 16px;">
+                            <img style="width: 24px;" src="/static/img/assets/denglu3x.png" alt="">
                             {{mytoken.realname}}
                         </span>
-                        <a href=""><span @click="loginout" class="">【退出】</span></a>
+                        <a href=""><span @click="loginout">【退出】</span></a>
                     </li>
                 </ul>
             </div>
         </div>
         </div>
-
+        <iframe hidden :src="setTokenPage"></iframe>
         <div class="gs-worp">
             <!-- 顶部tab -->
             <div class="gs-tab">
@@ -47,7 +47,7 @@
 
                 </div>
     <!-- 个人信息------------------------------------------------------------------- -->
-                <div :class="{gsqiye:nowindex == 1}">
+                <div :class= "{gsqiye:nowindex == 1}">
                     <div class="over gr-worp" style="margin-bottom: 30px;">
                         <div class="left gr-left">
                             <img src="../../../static/img/qiye/yonghu@2x.png" alt="">
@@ -111,7 +111,6 @@ import Session from '@/utils/session'
                 nowindex: 0,//tab切换
                 tianjiaqiye: true,//添加企业切换
                 mytoken: JSON.parse(localStorage.getItem('app-state-session')).account,//本地储存的用户信息
-                mydata: this.$route.query.mydata,//登录成功传递的数据
                 tab: [
                     {name: '企业信息'},
                     {name: '个人信息'},
@@ -119,11 +118,14 @@ import Session from '@/utils/session'
                     ],
             }
         },
-        mounted(){
-            // console.log(this.mydata)
+        computed :{
+            setTokenPage() {
+                return this.$url.web + '/set-token.html'
+            }
         },
-        components: {
-            
+        mounted(){
+            console.log(window.frames[window.frames.length - 1])
+            console.log(window.frames.length)
         },
         methods: {
             // tab切换
@@ -134,8 +136,8 @@ import Session from '@/utils/session'
             loginout(){
                 const frame = window.frames[window.frames.length - 1]
                 frame.postMessage('', '*')
-                Session.remove();
-                this.$router.push({name:'name',});
+                Session.remove()
+                this.$router.push({name:'name'});
             } 
         },
     }

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

@@ -1,5 +1,10 @@
 <template>
     <div>
+      <div id="preloader" style="display:none">
+        <div class="loder-box">
+          <div class="battery"></div>
+        </div>
+      </div>
 		<div id="navigation" class="navbar-inverse navbar-fixed-top animated-header">
         <div class="container">
             <div class="navbar-header">
@@ -11,19 +16,20 @@
                 </button>
                 <h1 class="navbar-brand">
                     <a href="#">
-                        <img class="logo-img" src="/static/img/assets/dalogo3x.png" alt="">
+                        <img class="logo-img" src="/static/img/assets/dalogo@2x_1.png" alt="">
                     </a>
                 </h1>
             </div>
             <div class="collapse navbar-collapse navbar-right" role="navigation">
           <ul id="nav" class="nav navbar-nav menu">
             <li><a href="#"><span>首页</span></a></li>
-            <li @click="home">
+            <li><a href="https://www.usoftchina.com/" target="_blank"><span>优软云</span></a></li>
+            <li>
               <a href="#feature"><span>特色</span></a>
               <!-- <router-link to="/enterprise"><a href="#"><span>特色</span></a></router-link> -->
             </li>
             <li><a href="#service"><span>功能</span></a></li>
-            <li><a href="#prototype"><span>帮助中心</span></a></li>
+            <!-- <li><a href="#prototype"><span>帮助中心</span></a></li> -->
             <li><a href="https://uas.usoftchina.com/about" target="_blank"><span>关于我们</span></a></li>
             <li class="login" v-if="!account" style="margin-left: 20px;">
               <span @click="login"><img src="/static/img/assets/denglu3x.png" alt="">登录  &nbsp;</span>
@@ -35,7 +41,7 @@
 								<span id="user-info">{{account.realname || account.username}}</span>
 							</span>
               <span @click="loginout">【退出】</span>    |
-              <router-link to="/enterprise"><a href="#"><span style="color: white">账户管理</span></a></router-link>
+              <router-link to="/enterprise"><a href="#"><span style="color: white">账户中心</span></a></router-link>
             </li>
           </ul>
         </div>
@@ -52,17 +58,29 @@
           <img @click="closeModal" class="tc-on shut"
                src="/static/img/qiye/chahao.png" alt="">
         </div>
-        <iframe width="430" height="440" :src="ssoPage"></iframe>
+        <iframe id="iframe" width="430" height="474" :src="ssoPage"></iframe>
         <iframe hidden :src="setTokenPage"></iframe>
       </div>
+
+      <!-- 体验弹窗 -->
       <div class="tiyan" v-if="isexperience">
-        <div><span>欢迎你访问u企云服</span></div>
-        <div>
-          <p>1.</p>
+        <img @click="Closeexperience" class="tc-on ty-out" src="/static/img/qiye/x.png" alt="" />
+        <div><img class="ty-logo" src="/static/img/assets/dalogo@2x.png" alt=""></div>
+        <div><p class="ty-logotxt">欢迎你访问U企云服</p></div>
+        <div class="ty-title"><span>填写手机号后,即刻体验电子行业贸易版所有功能</span></div>
+        <div class="ty-phone over">
+          <div class="left ty-input">
+            <span><img style="margin: 6px 8px 10px 15px;" src="/static/img/assets/phone.png" alt=""></span>
+            <input ref="typhone" type="text" placeholder="请输入您的11位手机号">
+          </div>
+          <div class="left" style="margin-left: 8px;"><button @click="experience1">立即试用</button></div>
+        </div>
+        <div style="text-align: left;">
+          <span class="Caution" ref="Caution"></span>
+        </div>
+        <div class="contact">
+          <span>客服电话:400-830-1818</span>
         </div>
-        我是体验
-        <img @click="Closeexperience" class="tc-on shut"
-               src="/static/img/qiye/chahao.png" alt="">
       </div>
 
       <!--Home Slider==================================== -->
@@ -74,7 +92,8 @@
                  data-slice1-scale="2" data-slice2-scale="2">
               <div class="mask-overly"></div>
               <div class="bg-img slider-1">
-                <img src="/static/img/assets/beijing2x.png" alt="">
+                <!-- <img src="/static/img/assets/beijing2x.png" alt=""> -->
+                <img src="../../../static/img/gongneng/Group 32.png" alt="">
               </div>
               <!-- 首页内容 -->
               <div class="my-text">
@@ -99,48 +118,18 @@
             <p class="ts-text">云端部署 &nbsp;&nbsp; 轻量应用</p>
           </div>
           <div class="ts-box">
-            <div style="margin:50px 0;">
-              <img class="ts-img" src="/static/img/features.jpg" alt="">
-            </div>
-            <div class="right right-text">
-              <img class="ts-minimg" src="/static/img/assets/1.png" alt="">
-              <div class="ts-mintext">
-                <p style="font-size: 32px !important;margin-bottom: 36px;"><img class="ts-textimg"
-                                                                                src="/static/img/assets/xunzhao@2x.png"
-                                                                                alt="">迅速找到您想要的</p>
-                <p>寻找供应商资源</p>
-                <p>寻找产品货源  寻找产品资料</p>
-              </div>
+            <div>
+              <img class="ts-img" src="/static/img/assets/1@2x.png" alt="">
             </div>
           </div>
           <div class="ts-box">
-            <div class="left left-text">
-              <img class="ts-minimg" style="left:0;" src="/static/img/assets/2.png" alt="">
-              <div class="ts-mintext ts-lefttext">
-                <p style="font-size: 32px !important;margin-bottom: 36px;">直观看到您想看的<img class="ts-textleftimg"
-                                                                                        src="/static/img/assets/fen xi@2x.png"
-                                                                                        alt=""></p>
-                <p>每日订单量、收付款、月度销售分析、采购分析</p>
-                <p>让你成为企业经营老司机</p>
-              </div>
-            </div>
-            <div style="margin:50px 0;">
-              <img class="ts-img" src="/static/img/features.jpg" alt="">
+            <div>
+              <img class="ts-img" src="/static/img/assets/2@3x.png" alt="">
             </div>
           </div>
           <div class="ts-box">
-            <div style="margin:50px 0;">
-              <img class="ts-img" src="/static/img/features.jpg" alt="">
-            </div>
-            <div class="right right-text">
-              <img class="ts-minimg" src="/static/img/assets/1.png" alt="">
-              <div class="ts-mintext" style="right: 145px;">
-                <p style="font-size: 32px !important;margin-bottom: 36px;"><img class="ts-textimg"
-                                                                                src="/static/img/assets/kuaisu@2x.png"
-                                                                                alt="">快速上手 生意简单做</p>
-                <p>移动端的交互体验</p>
-                <p>简短清晰的业务流程 让你三分钟上手</p>
-              </div>
+            <div>
+              <img class="ts-img" src="/static/img/assets/3@2x.png" alt="">
             </div>
           </div>
         </div>
@@ -245,7 +234,7 @@
       <!-- end Service section -->
 
       <!-- 帮助中心 -->
-      <section id="prototype">
+      <!-- <section id="prototype">
         <div class="container">
           <div class="row">
             <div class="section-title text-center">
@@ -262,17 +251,16 @@
               <div class="bz-content">
                 <div class="bz-left">
                   <ul class="bz-ul">
-                    <li class='active'>操作文档</li>
-                    <li>常见问题</li>
+                    <li v-for="(d,i) in arr" :key="i" :class= "{active:Nowindex == i}" @click="tab(i)">{{d}}</li>
                   </ul>
                 </div>
                 <div class="bz-right">
                   <div class="bz-right-conent">
-                    <div>
+                    <div :class= "{shows:Nowindex == 0}">
                       <ul>
                         <li>
                           <span class="left bz-yuandian"></span>
-                          <span class="left">方式不同吧好像是差不多哇来访黑哇哦发检测句ID回复开展了好xxxxx操作文档 </span>
+                          <span class="left">方式不同吧好像是差不多 </span>
                           <span class="right">2018年10月31日  12:00</span>
                         </li>
                         <li>
@@ -287,22 +275,22 @@
                         </li>
                       </ul>
                     </div>
-                    <div>
+                    <div :class= "{shows:Nowindex == 1}">
                       <ul>
                         <li>
                           <span class="left bz-yuandian"></span>
                           <span class="left">方式不同吧好像是差不多哇来访黑哇哦发检测句ID回复开展了好xxxxx常见问题 </span>
-                          <span class="right">2018年10月31日  12:00</span>
+                          <span class="right">2018年11月24日  12:00</span>
                         </li>
                         <li>
                           <span class="left bz-yuandian"></span>
                           <span class="left">方式不同吧好像是差不多哇来访黑哇哦发检测句ID回复开展了好xxxxx常见问题</span>
-                          <span class="right">2018年10月31日  12:00</span>
+                          <span class="right">2018年11月24日  12:00</span>
                         </li>
                         <li>
                           <span class="left bz-yuandian"></span>
                           <span class="left">XXXXXXXXXXXXXXX常见问题</span>
-                          <span class="right">2018年10月31日  12:00</span>
+                          <span class="right">2018年11月24日  12:00</span>
                         </li>
                       </ul>
                     </div>
@@ -312,7 +300,7 @@
             </div>
           </div>
         </div>
-      </section>
+      </section> -->
     </main>
   </div>
 </template>
@@ -320,6 +308,7 @@
 <script>
   import {subscribe, disconnect} from '@/api/socket'
   import Session from '@/utils/session'
+import { setTimeout } from 'timers';
 
   export default {
     data() {
@@ -328,14 +317,15 @@
         isRegister: false,
         clientId: null,
         account: null,
-        isexperience: false
+        isexperience: false,
+        arr: ["操作文档","常见手册"],
+        Nowindex: 0
       }
     },
     mounted() {
       this.clientId = Math.random().toString(36).substr(2)
       // 从本地加载已经登录的信息
       this.account = Session.getAccount()
-      console.log(this.$store.state.isAutoLogin)
     },
     computed: {
       setTokenPage() {
@@ -353,6 +343,9 @@
       }
     },
     methods: {
+      tab(i){
+        this.Nowindex = i;
+      },
       home() {
         document.documentElement.scrollTop = 0;
       },
@@ -370,7 +363,7 @@
             if (!account.companyId) {
               // 添加企业
               me.$router.push({path: '/enterprise', query: {mydata: account}})
-              me.$store.state.isAutoLogin = true;
+              me.$store.commit('Logintrue')
             } else {
               // 跳转应用页面
               window.location.href = me.$url.web
@@ -412,33 +405,140 @@
       //关闭体验
       Closeexperience(){
         this.isexperience = false;
-      }
+      },
+      //进入体验
+      experience1(){
+        let me = this
+        let phone = this.$refs.typhone.value;
+        let reg = new RegExp('^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$')
+        if (phone == '') {
+          this.$refs.Caution.innerHTML = '号码不能为空'
+        } else {
+          if (!reg.test(phone)) {
+            this.$refs.Caution.innerHTML = '号码格式错误'
+            // setTimeout(()=>{
+            //   this.$refs.Caution.innerHTML = ''
+            // },2000)
+          } else {
+            this.$refs.Caution.innerHTML = ''
+            this.$ajax({
+              url: this.$url.api+'/api/auth/virtual/authorize/'+phone,
+              method: 'post',
+            })
+             .then(res=>{
+                const session = res.data.data.token, account = res.data.data.account
+                let companyId = account.companies[0].id
+                account.companies = account.companies || []
+                account.companyId=companyId;
+                session.account = account
+                const frame = window.frames[window.frames.length - 1]
+                frame.postMessage(JSON.stringify(session), '*')
+                window.location.href = me.$url.web
+                // console.log("请求成功",res)
+                phone = ''
+            })
+            .catch(err=>{
+                // console.log("请求失败",err)
+            })
+          }
+        } 
+      },
     }
   }
 </script>
 
 <style scoped>
+.shows {
+  display: block !important;
+}
+.bz-right-conent div {
+  display: none;
+}
 .shut {
   cursor: pointer;
   position: absolute;
   top: 10px;
   right: 10px;
 }
+.navbar-inverse {
+  padding: 0px;
+}
+
+/* 体验 */
 .tiyan {
-  position: absolute;
+  position: fixed;
   top: 50%;
   left: 50%;
-	width: 400px;
-	height: 200px;
-	margin-left: -200px;
-  margin-top: -100px;
+	width: 640px;
+	height: 320px;
+	margin-left: -320px;
+  margin-top: -160px;
   z-index: 10001;
   background: white;
+  padding: 24px;
+  text-align: center;
+  border-radius: 2px;
 }
-.navbar-inverse {
-  /* padding: 3px; */
-  padding: 0px;
-  /* height: 70px;
-  line-height: 70px; */
+.ty-out {
+    cursor: pointer;
+    float: right;
+}
+.ty-logo {
+  width: 140px;
+  margin: 15px 0 10px 13px;
+}
+.ty-logotxt {
+  font-family: PingFangSC-Regular;
+  font-size: 22px !important;
+  color: #059FFE;
+}
+.ty-title {
+  margin-top: 30px;
+  font-family: PingFangSC-Regular;
+  font-size: 14px;
+  color: #059FFE;
+  text-align: center;
+}
+.ty-input {
+  width: 330px;
+  height: 40px;
+  line-height: 40px;
+  text-align: left;
+  background: rgba(32,53,128,0.01);
+  border: 1px solid #D8DCE8;
+  border-radius: 3px;
+  margin-left: 69px;
+}
+.ty-phone {
+  margin: 8px 0;
+  margin-bottom: 0;
+}
+.ty-phone input{
+  outline:none;
+  border: 0;
+  height: 30px;
+  font-size: 14px;
+  width: 80%;
+}
+.ty-phone button{
+  background-image: linear-gradient(-90deg, #007EE5 0%, #05B3FF 100%, #5533FF 100%);
+  border-radius: 3px;
+  color: white;
+  width: 125px;
+  height: 40px;
+  border: 0;
+}
+.contact {
+  font-family: PingFangSC-Regular;
+  font-size: 14px;
+  color: #059FFE;
+  text-align: center;
+}
+.Caution {
+  color: red;
+  margin-left: 110px;
+  font-size: 12px;
+  display: inline-block;
+  height: 16px;
 }
 </style>

+ 100 - 18
frontend/saas-portal-web/src/components/conenter/qiyexiangxi.vue

@@ -1,5 +1,19 @@
 <template>
     <div>
+        <!-- 遮罩 -->
+        <div class="zhezhao" v-if="isId"></div>
+        <!-- 不是管理员不能修改企业信息 -->
+        <div class="tanchuang nokaitong" v-if="isId">
+            <div class="over"><img @click="guanbitc" class="right xs" src="/static/img/qiye/chahao.png" alt=""></div>
+            <div>
+                <div class="tc-conent"><img src="/static/img/qiye/buneng kaitong@1x.png" alt=""></div>
+                <div class="tc-text">
+                <p>您不是管理员不能修改企业信息</p>
+                <!-- <p>不能再继续开通服务</p> -->
+                </div>
+            </div>
+        </div>
+        <span class="Tips" ref="Tips"></span>
         <!-- 企业详细信息 -->
         <div v-if="xiugai">
             <div class="gs-worp qy-worp" style="width:100%">
@@ -10,8 +24,8 @@
                 </div>
                 <div class="qy-conent">
                     <ul>
-                        <li><span class="qy-biaoti">公司名称</span><span>{{content.address}}</span></li>
-                        <li><span class="qy-biaoti">所属行业</span><span>飞飞有限公司</span></li>
+                        <li><span class="qy-biaoti">公司名称</span><span>{{content.name}}</span></li>
+                        <li><span class="qy-biaoti">所属行业</span><span></span></li>
                         <li><span class="qy-biaoti">公司地址</span><span>{{content.address}}</span></li>
                     </ul>
                 </div>
@@ -22,9 +36,9 @@
                 </div>
                 <div class="qy-conent">
                     <ul>
-                        <li><span class="qy-biaoti">姓名</span><span>飞飞有限公司</span></li>
-                        <li><span class="qy-biaoti">手机号</span><span>1588888888888</span></li>
-                        <li><span class="qy-biaoti">邮箱</span><span>飞飞有限公司</span></li>
+                        <li><span class="qy-biaoti">姓名</span><span>{{content.admin}}</span></li>
+                        <li><span class="qy-biaoti">手机号</span><span>{{mytoken.account.mobile}}</span></li>
+                        <li><span class="qy-biaoti">邮箱</span><span>{{mytoken.account.email}}</span></li>
                     </ul>
                 </div>
             </div>
@@ -43,11 +57,11 @@
                     <ul>
                         <li>
                             <span class="qy-biaoti"><span class="xingxing">*</span>公司名称</span>
-                            <span>{{content.address}}</span>
+                            <span>{{content.name}}</span>
                         </li>
                         <li>
                             <span class="qy-biaoti">所属行业</span>
-                            <span>飞飞有限公司</span>
+                            <span></span>
                         </li>
                         <li>
                             <span class="qy-biaoti">公司地址</span>
@@ -62,9 +76,13 @@
                 </div>
                 <div class="qy-conent">
                     <ul>
-                        <li><span class="qy-biaoti">姓名</span><span>飞飞有限公司</span></li>
-                        <li><span class="qy-biaoti">手机号</span><span>飞飞有限公司</span></li>
-                        <li><span class="qy-biaoti">邮箱</span><input type="text"></li>
+                        <li><span class="qy-biaoti">姓名</span><span>{{content.admin}}</span></li>
+                        <li><span class="qy-biaoti">手机号</span><span>{{mytoken.account.mobile}}</span></li>
+                        <li>
+                            <span class="qy-biaoti">邮箱</span>
+                            <input @input="email" ref="email" type="text" value="">
+                            <span style="color:red">{{Email}}</span>
+                        </li>
                     </ul>
                 </div>
             </div>
@@ -78,16 +96,38 @@
         data(){
             return {
                 xiugai:true,
-                content: this.$route.query.content,
+                // content: this.$route.query.content,
+                content: JSON.parse(window.sessionStorage.getItem("content")),
+                Email: '',
+                mytoken: JSON.parse(localStorage.getItem('app-state-session')),//本地储存的用户信息
+                isId: false,
+                isemail: false,//正则邮箱
             }
         },
         mounted(){
-            // console.log(this.content)
+
         },
         methods: {//修改企业信息
             xiugaiqiye(){
-                document.documentElement.scrollTop = 0;
-                this.xiugai = false;
+                if (this.content.adminId == this.mytoken.account.id) { //如果不是管理员不能修改企业信息
+                    document.documentElement.scrollTop = 0;
+                    this.xiugai = false;
+                } else {
+                    this.isId = true
+                }
+            },
+            guanbitc(){
+                this.isId = false
+            },
+            email(){ //验证邮箱
+                let reg = new RegExp("^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$"); 
+                let email = this.$refs.email.value;//邮箱
+                if (!reg.test(email)) {
+                    this.Email = '邮箱格式错误'
+                } else {
+                    this.Email = '',
+                    this.isemail = true
+                }
             },
             // 取消修改
             quxiaoxiugai(){
@@ -96,13 +136,49 @@
             },
             // 保存修改
             baocunxiugai(){
-                document.documentElement.scrollTop = 0;
-                this.xiugai = true;
+                if (this.isemail) {
+                    let email = this.$refs.email.value;
+                    let qyname = this.content.name;//公司名字
+                    let address = this.content.address;//公司详细地址
+                    let companyId = this.content.id;
+                    let name = this.content.realname;//名字
+                    let mobile = this.mytoken.account.mobile;//手机号
+                    let uu = this.content.uu;
+                    let company = {'name':qyname,'address':address, 'id':companyId};
+                    let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu};
+                    this.$ajax({
+                        url: this.$url.api+"/api/account/accountCenter/companyAccount/update",//http://192.168.253.31:8560
+                        method: 'post',
+                        data: {
+                            companyRegDTO:company,
+                            accountRegDTO:account,
+                        },
+                        headers: {
+                            "Authorization":this.mytoken.token,
+                        }
+                    })
+                    .then(res=>{
+                        console.log("请求成功",res)
+                        if (res.data.success) {
+                            document.documentElement.scrollTop = 0;
+                            this.xiugai = true;
+                        };
+                    })
+                    .catch(err=>{
+                        console.log("请求失败",err)
+                    })
+                } else {
+                    this.$refs.Tips.innerHTML= "邮箱格式错误"
+                    // this.isTipsmail = true;
+                    setTimeout(()=>{
+                        this.$refs.Tips.innerHTML= ""
+                    },2000)
+                }
             },
             //返回
             gobick(){
-                // this.$router.go(-1); 
-                this.$router.push({name:'company',});
+                // this.$router.go(-1) 
+                this.$router.push({name:'company'});
             }
         }
     }
@@ -121,4 +197,10 @@
     top: -17px;
     right: -21px;
 }
+.Tips {
+    display: block;
+    text-align: center;
+    color: red;
+    height: 20px;
+}
 </style>

+ 7 - 4
frontend/saas-portal-web/src/store/index.js

@@ -5,11 +5,14 @@ Vue.use(Vuex)
 export default new Vuex.Store({
     state:{
         data: [],
-        isAutoLogin: ''
+        isAutoLogin: false,
     },
     mutations:{
-         setId(state ,  id) {
-             state.id = id   
-         }
+         Logintrue(state) {
+             state.isAutoLogin = true;   
+         },
+         Loginfalse(state) {
+             state.isAutoLogin = false;   
+         },
     }
 })

+ 15 - 15
frontend/saas-portal-web/static/css/main.css

@@ -130,13 +130,13 @@ main > section {
 
 .box{
     width: 430px;
-    height: 440px;
+    height: 474px;
     position: fixed;
     background:white;
     top: 55%;
     left:50%;
     margin-left: -215px;
-    margin-top: -220px;
+    margin-top: -237px;
     z-index: 10001;
 }
 
@@ -273,7 +273,8 @@ main > section {
 /* 11/12注册页面 ..........................................*/
 .login,.profile {
     color: white;
-    font-size: 14px;
+    font-size: 16px;
+    /* font-weight: 600; */
 }
 .login {
     margin-top: 12px;
@@ -282,8 +283,8 @@ main > section {
    margin: 0 15px;
 }
 .login img,.profile img {
-    width: 25px;
-    height: 24px;
+    width: 24px;
+    margin-right: 5px;
 }
 .login > span:hover,.profile > span:hover{
     cursor:pointer;
@@ -322,7 +323,7 @@ main > section {
 /* 首页内容 ..........................................*/
 .my-text {
     position: absolute;
-    top: 70%;
+    top: 76%;
     left: 7%;
     /* z-index: 5; */
     /* width: 468px;
@@ -347,7 +348,7 @@ main > section {
 }
 .my-tiyan {
     background: #5172DD;
-    box-shadow: 0 0 19px 0 rgba(137,143,164,0.63);
+    /* box-shadow: 0 0 19px 0 rgba(137,143,164,0.63); */
     border-radius: 4px;
     width: 100px;
     height: 36px;
@@ -423,8 +424,7 @@ main > section {
     float: right;
 }
 .ts-img {
-    width: 108%;
-    height: 441px;
+    width: 100%;
 }
 .right-text {
     text-align: right;
@@ -922,11 +922,11 @@ main > section {
 
     background-color: rgba(0, 0, 0, 0.77);
     box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
-    padding: 5px 0;
+    /* padding: 5px 0; */
 }
 
 #navigation.animated-header {
-    padding: 20px 0;
+    padding: 10px 0;
 }
 
 h1.navbar-brand {
@@ -938,9 +938,9 @@ h1.navbar-brand {
 
 .navbar-inverse .navbar-nav > li > a {
     color: #fff;
-    font-size: 13px;
+    font-size: 16px;
     text-transform: uppercase;
-    font-weight: bold;
+    /* font-weight: bold; */
 }
 .menu {
 
@@ -1003,9 +1003,9 @@ h1.navbar-brand {
     font-size: 40px;
     line-height: 1.5;
 }
-.slider-1  img{
+.slider-1 img{
     width: 100%;
-    height: 100%;
+    /* height: 100%; */
 }
 .sl-slider-wrapper {
     width: 100%;

BIN
frontend/saas-portal-web/static/img/assets/1.png


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


BIN
frontend/saas-portal-web/static/img/assets/2.png


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


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


BIN
frontend/saas-portal-web/static/img/assets/Group3x.png


BIN
frontend/saas-portal-web/static/img/assets/beijing.png


BIN
frontend/saas-portal-web/static/img/assets/chatu.png


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


BIN
frontend/saas-portal-web/static/img/assets/dalogo@2x_1.png


BIN
frontend/saas-portal-web/static/img/assets/dianzi3x.png


BIN
frontend/saas-portal-web/static/img/assets/fen xi@2x.png


BIN
frontend/saas-portal-web/static/img/assets/jin3x.png


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


BIN
frontend/saas-portal-web/static/img/assets/logo.png


BIN
frontend/saas-portal-web/static/img/assets/qing3x.png


BIN
frontend/saas-portal-web/static/img/assets/ren3x.png


BIN
frontend/saas-portal-web/static/img/assets/timg.jpg


BIN
frontend/saas-portal-web/static/img/assets/weixin.png


BIN
frontend/saas-portal-web/static/img/assets/weixuanzhong2x.png


BIN
frontend/saas-portal-web/static/img/assets/xuanzhong2x.png


BIN
frontend/saas-portal-web/static/img/assets/xun3x.png


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


BIN
frontend/saas-portal-web/static/img/assets/zi3x.png


BIN
frontend/saas-portal-web/static/img/features.jpg


BIN
frontend/saas-portal-web/static/img/gongneng/Group 32.png


BIN
frontend/saas-portal-web/static/img/qiye/x.png


+ 4 - 9
frontend/saas-portal-web/static/js/mains.js

@@ -6,14 +6,6 @@ jQuery(window).load(function(){
 
     $("#preloader").fadeOut("slow");
 
-    // 帮助中心
-    $(".bz-right-conent>div").eq(0).show()
-    let abtn = $(".bz-ul").children('li').click(function(){
-        var _index = $(this).index();
-        //让内容框的第 _index 个显示出来,其他的被隐藏
-        $(".bz-right-conent>div").eq(_index).show().siblings().hide();
-        $(this).addClass("active").siblings().removeClass('active')
-    });
 });
 
 /* ========================================================================= */
@@ -136,9 +128,12 @@ $(document).ready(function(){
 
     $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
 
-    $(window).resize(function(){'use strict',
+    $(window).resize(function(){
         $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
     });
+    // $(window).resize(function(){'use strict',
+    //     $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
+    // });
 	
 	
 	

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

@@ -128,11 +128,32 @@ body.launching {
 .x-btn.x-btn-menu-active.x-btn-default-toolbar-small,
 .x-btn.x-btn-pressed.x-btn-default-toolbar-small,
 .x-btn-over.x-btn-default-toolbar-small {
+  border-color: #1592ca;
   background: #34BAF6;
   opacity: 0.72;
 }
 
 .x-btn-over{
+  .x-btn-wrap{
+    .x-btn-button{
+      .x-btn-inner{
+        color:#fff;
+      }
+    }
+  }
+}
+
+.x-btn-pressed{
+  .x-btn-wrap{
+    .x-btn-button{
+      .x-btn-inner{
+        color:#fff !important;
+      }
+    }
+  }
+}
+
+.x-btn-menu-active{
   .x-btn-wrap{
     .x-btn-button{
       .x-btn-inner{
@@ -149,6 +170,13 @@ body.launching {
   border:1px solid #34BAF6;
 }
 
+.x-segmented-button-item .x-keyboard-mode .x-btn-focus.x-btn-default-toolbar-small {
+  background: #34BAF6 !important;
+  border:1px solid #34BAF6 !important;
+  opacity: 1;
+  box-shadow: none;
+}
+
 .x-keyboard-mode .x-btn-focus.x-btn-over.x-btn-default-toolbar-small {
   background: #34BAF6;
   box-shadow: none;

+ 19 - 0
frontend/saas-web/app/view/core/base/GridPanel.js

@@ -164,6 +164,25 @@ Ext.define('saas.view.core.base.GridPanel', {
 
     onImport:function(){
         var grid = this.ownerCt.ownerCt;
+        var form = grid.ownerCt,panelEl = form.getEl();
+        var box = panelEl.getBox();
+        var height = box.height;
+        var width = box.width;
+        var win = form.add(Ext.create('saas.view.core.base.ImportWindow', {  
+            cls:'x-window-dbfind', 
+            belong:form,  
+            modal:true,
+            height: height * 0.8,
+            width: width * 0.8,
+            title: form._title + '导入',
+            scrollable: true,
+            bodyPadding: 10,
+            constrain: true,
+            closable: true,
+            layout:'fit',
+            renderTo:form.getEl()
+        }));
+        win.show();
     },
 
     onExport:function(me){

+ 29 - 0
frontend/saas-web/app/view/core/base/ImportWindow.js

@@ -1,6 +1,35 @@
 Ext.define('saas.view.core.base.ImportWindow', {
     extend: 'Ext.window.Window',
     xtype: 'importwindow',
+    layout:'fit',
+
+    requires: [
+        'Ext.container.ButtonGroup'
+    ],
+
+    items:[{
+        xtype:'panel',
+        layout:'column',
+        defaults:{
+            columnWidth:1
+        },
+        tbar:['->',{
+            width:300,
+            text:'下载模板并填写'
+        },{
+            width:300,
+            text:'上传导入文件'
+        },'->'],
+        items:[{
+            xtype:'container',
+            html:'asddddddddddddddddddddd',
+        },{
+            xtype:'fieldset',
+            items:[{
+                text:'asddddddddddddddddddddd'
+            }]
+        }]
+    }],
 
     initComponent: function() {
         var me = this;

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

@@ -52,7 +52,7 @@ Ext.define('saas.view.core.form.FormPanel', {
         me.initFormItems();
 
         me.defaultBtns = me.defaultBtns || [{
-            cls: 'x-formpanel-btn-orange',
+            cls: 'x-formpanel-btn-blue',
             xtype: 'button',
             text: '新增',
             hidden: true,

+ 1 - 1
frontend/saas-web/app/view/core/form/MseeageLog.js

@@ -13,7 +13,7 @@ Ext.define('saas.view.core.form.MseeageLog', {
         xtype: 'textfield',
         emptyText : '操作人员'
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

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

@@ -23,7 +23,7 @@ Ext.define('saas.view.document.bom.FormPanel', {
     codeInHeader: false,
 
     defaultButtons:[{
-        cls: 'x-formpanel-btn-orange',
+        cls: 'x-formpanel-btn-blue',
         xtype: 'button',
         text: '新增',
         bind: {

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

@@ -415,7 +415,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
             }]
     }],
     defaultButtons:[{
-        cls: 'x-formpanel-btn-orange',
+        cls: 'x-formpanel-btn-blue',
         xtype: 'button',
         text: '新增',
         bind: {

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

@@ -336,7 +336,7 @@ Ext.define('saas.view.document.product.FormPanel', {
     }],
 
     defaultButtons:[{
-        cls: 'x-formpanel-btn-orange',
+        cls: 'x-formpanel-btn-blue',
         xtype: 'button',
         text: '新增',
         bind: {

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

@@ -298,7 +298,7 @@ Ext.define('saas.view.document.vendor.FormPanel', {
     ],
 
     defaultButtons:[{
-        cls: 'x-formpanel-btn-orange',
+        cls: 'x-formpanel-btn-blue',
         xtype: 'button',
         text: '新增',
         bind: {

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

@@ -51,13 +51,13 @@ Ext.define('saas.view.home.InfoCard', {
                     condition: 'purchase.companyId=' + companyId + ' and pu_statuscode=\'AUDITED\' and exists (select 1 from purchasedetail detail where pd_id=purchasedetail.pd_id and IFNULL(pd_acceptqty,0) < ifnull(pd_qty,0) and TO_DAYS(PD_DELIVERY)-TO_DAYS(now()) <= 7)'
                 },
                 unpay: {
-                    title: '未收款出货',
+                    title: '未付款验收单',
                     color: 'red',
                     viewType: 'purchase-purchasein-querypanel',
                     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)'
                 },
                 unreceive: {
-                    title: '未审核出货单',
+                    title: '未收款出货',
                     color: 'pink',
                     viewType: 'sale-saleout-querypanel',
                     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)'

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

@@ -45,6 +45,7 @@ Ext.define('saas.view.main.Main', {
                 },{
                     reference: 'mainprofile',
                     arrowVisible: false,
+                    cls:'x-main-master',
                     ui: 'header',
                     bind: {
                         text: '{company.name}'

+ 10 - 0
frontend/saas-web/app/view/main/Main.scss

@@ -364,3 +364,13 @@ body > .x-mask {
         background-position: center;
     }
 }
+
+.x-main-master{
+    .x-btn-wrap{
+        .x-btn-button{
+            .x-btn-inner{
+                color:#999 !important;
+            }
+        }
+    }
+}

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

@@ -87,6 +87,7 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
                 width : 150.0, 
                 dataIndex : "ord_type",
                 items : null,
+                allowBlank : false,
                 hiddenBtn:false,//true 则会关闭新增按钮功能
                 editor : {
                     xtype : "remotecombo", 
@@ -136,7 +137,7 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
                 dataIndex : "ord_remark",
                 width : 250, 
                 editor : {
-                    xtype : "textarea"
+                    xtype : "textfield"
                 }
             }
         ]

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

@@ -31,6 +31,7 @@ Ext.define('saas.view.money.othreceipts.QueryPanel', {
         xtype : "remotecombo",
         columnWidth: 0.25,
         emptyText :'全部',
+        showDetail: true,
         storeUrl:'/api/document/fundinouttype/getCombo?condition=收入',
         hiddenBtn:true,//true 则会关闭新增按钮功能
         getCondition: function(value) {
@@ -123,6 +124,62 @@ Ext.define('saas.view.money.othreceipts.QueryPanel', {
             dataIndex: 'or_remark',
             width: 250
         }],
-        relativeColumn: []
+        relativeColumn: [{
+            text: 'id',
+            dataIndex: 'id',
+            hidden:true
+        }, {
+            text: '单据编号',
+            dataIndex: 'or_code',
+            width: 150
+        }  ,{
+            text: '日期',
+            dataIndex: 'or_date',
+            xtype: 'datecolumn',
+            width: 110
+        }, {
+            text: '客户名称',
+            dataIndex: 'or_custname',
+            width: 250
+        },  {
+            text: '结算账户',
+            dataIndex: 'or_bankname',
+            width: 150
+        }, {
+            text: '收款金额',
+            xtype: 'numbercolumn',
+            dataIndex: 'or_amount',
+            width: 110,
+            renderer : function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+                var format = '0,000.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            }
+        }, {
+            text: '单据状态',
+            dataIndex: 'or_status',
+            width: 90
+        }, {
+            text: '录入人',
+            dataIndex: 'creatorName',
+            width: 110
+        },{
+            text: '审核人',
+            dataIndex: 'or_auditman',
+            width: 110
+        },{
+            text: '收入类别',
+            dataIndex: 'ord_type',
+            width: 110
+        } ,{
+            text: '明细金额',
+            dataIndex: 'ord_nowbalance',
+            width: 110
+        } ,{
+            text: '备注',
+            dataIndex: 'ord_remark',
+            width: 250
+        }]
     }
 });

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

@@ -87,6 +87,7 @@ Ext.define('saas.view.money.othspendings.FormPanel', {
                 width : 150.0, 
                 dataIndex : "osd_type",
                 items : null,
+                allowBlank : false,
                 hiddenBtn:false,//true 则会关闭新增按钮功能
                 editor : {
                     xtype : "remotecombo",

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

@@ -19,7 +19,7 @@ Ext.define('saas.view.money.othspendings.QueryPanel', {
     },{
         xtype: 'textfield',
         name: 'os_code',
-        emptyText:'请输入单号或客户或账号',
+        emptyText:'请输入单号或供应商或账号',
         getCondition: function(value) {
             if(value == 'ALL') {
                 return '1=1';
@@ -38,17 +38,18 @@ Ext.define('saas.view.money.othspendings.QueryPanel', {
         columnWidth: 0.5,
         fieldLabel: '日期'
     },{
-        name: 'ord_type',
+        name: 'osd_type',
         fieldLabel: '支出类别',
         xtype : "remotecombo",
         emptyText :'全部',
+        showDetail: true,
         storeUrl:'/api/document/fundinouttype/getCombo?condition=支出',
         hiddenBtn:true,//true 则会关闭新增按钮功能
         getCondition: function(value) {
             if(!value) {
                 return '1=1';
             }else {
-                return 'ord_type like \'%' + value + '%\'';
+                return 'osd_type like \'%' + value + '%\'';
             }
         }
     },{
@@ -133,6 +134,62 @@ Ext.define('saas.view.money.othspendings.QueryPanel', {
             dataIndex: 'os_remark',
             width: 250
         }],
-        relativeColumn: []
+        relativeColumn: [{
+            text: 'id',
+            dataIndex: 'id',
+            hidden:true,
+            xtype: 'numbercolumn'
+        }, {
+            text: '单据编号',
+            dataIndex: 'os_code',
+            width: 150
+        }, {
+            text: '日期',
+            dataIndex: 'os_date',
+            xtype: 'datecolumn',
+            width: 110
+        }, {
+            text: '供应商名称',
+            dataIndex: 'os_vendname',
+            width:250
+        },{
+            text: '结算账户',
+            dataIndex: 'os_bankname',
+            width: 150
+        },{
+            text: '付款金额',
+            dataIndex: 'os_amount',
+            width: 110,
+            renderer : function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+                var format = '0,000.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            }
+        }, {
+            text: '单据状态',
+            dataIndex: 'os_status',
+            width: 90
+        },{
+            text: '录入人',
+            dataIndex: 'creatorName',
+            width: 110
+        }, {
+            text: '审核人',
+            dataIndex: 'os_auditman',
+            width: 110
+        }, {
+            text: '支出类别',
+            dataIndex: 'osd_type',
+            width: 110
+        }, {
+            text: '明细金额',
+            dataIndex: 'osd_nowbalance',
+            width: 110
+        },{
+            text: '备注',
+            dataIndex: 'osd_remark',
+            width: 250
+        }]
     }
 });

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

@@ -146,7 +146,7 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
         if(flag != 0) {
             var t = flag > 0 ? '大' : '小';
 
-            saas.util.BaseUtil.showConfirm('提示', '付款金额' + t + '于本次折扣后核销金额,是否仍要保存?')
+            saas.util.BaseUtil.showConfirm('提示', '付款金额' + t + '于本次核销金额,是否仍要保存?')
             .then(function(y) {
                 if(y == 'yes') {
                     me.save();

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

@@ -82,16 +82,16 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
             }, {
                 text: '付款单号',
                 dataIndex: 'pb_code',
-                width: 150
+                width: 130
             }, {
                 text: '日期',
                 dataIndex: 'pb_date',
                 xtype: 'datecolumn',
-                width: 110
+                width: 100
             }, {
                 text: '供应商名称',
                 dataIndex: 'pb_vendname',
-                width: 250,
+                width: 180,
             }, {
                 text: '单据状态',
                 dataIndex: 'pb_status',
@@ -114,16 +114,16 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
         }, {
             text: '付款单号',
             dataIndex: 'pb_code',
-            width: 150
+            width: 130
         }, {
             text: '日期',
             dataIndex: 'pb_date',
             xtype: 'datecolumn',
-            width: 110
+            width: 100
         }, {
             text: '供应商名称',
             dataIndex: 'pb_vendname',
-            width: 250,
+            width: 180,
         }, {
             text: '单据状态',
             dataIndex: 'pb_status',
@@ -150,11 +150,11 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
         } ,{
             text: '结算方式',
             dataIndex: 'pd_paymethod',
-            width: 250
+            width: 100
         },{
             text: '结算号',
             dataIndex: 'pd_paycode',
-            width: 250
+            width: 100
         },{
             text: '备注',
             dataIndex: 'pd_remark',

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

@@ -139,7 +139,7 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
         if(flag != 0) {
             var t = flag > 0 ? '大' : '小';
 
-            saas.util.BaseUtil.showConfirm('提示', '收款金额' + t + '于本次折扣后核销金额,是否仍要保存?')
+            saas.util.BaseUtil.showConfirm('提示', '收款金额' + t + '于本次核销金额,是否仍要保存?')
                 .then(function(y) {
                     if(y == 'yes') {
                         me.save();

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

@@ -73,20 +73,20 @@ Ext.define('saas.view.money.recBalance.QueryPanel', {
         }, {
             text: '收款单号',
             dataIndex: 'rb_code',
-            width: 150
+            width: 130
         }, {
             text: '日期',
             dataIndex: 'rb_date',
             xtype: 'datecolumn',
-            width: 110
+            width: 100
         }, {
             text: '客户名称',
             dataIndex: 'rb_custname',
-            width: 250,
+            width: 180,
         }, {
             text: '单据状态',
             dataIndex: 'rb_status',
-            width: 90
+            width: 80
         }, {
             text: '收款人',
             dataIndex: 'rb_manname',
@@ -105,33 +105,33 @@ Ext.define('saas.view.money.recBalance.QueryPanel', {
         }, {
             text: '收款单号',
             dataIndex: 'rb_code',
-            width: 150
+            width: 130
         }, {
             text: '日期',
             dataIndex: 'rb_date',
             xtype: 'datecolumn',
-            width: 110
+            width: 100
         }, {
             text: '单据状态',
             dataIndex: 'rb_status',
-            width: 90
+            width: 80
         }, {
             text: '客户名称',
             dataIndex: 'rb_custname',
-            width: 250,
+            width: 180,
         },{
             text: '收款人',
             dataIndex: 'rb_manname',
-            width: 110
+            width: 100
         },{
             text: '资金账户',
             dataIndex: 'rd_bankname',
-            width: 110
+            width: 100
         },{
             text: '收款金额',
             xtype: 'numbercolumn',
             dataIndex: 'rd_amount',
-            width: 120,
+            width: 100,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');

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

@@ -92,7 +92,7 @@ Ext.define('saas.view.money.report.AccountBalance', {
             }
         }, {
             text: '往来单位',
-            dataIndex: 'bcode',
+            dataIndex: 'bname',
             width: 150
         }, {
             text: '收付款人',

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

@@ -40,7 +40,7 @@ Ext.define('saas.view.money.report.AccountDetails', {
             xtype: 'textfield',
             emptyText : '客户名称'
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

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

@@ -98,19 +98,19 @@ Ext.define('saas.view.money.report.PayDetail', {
             dataIndex: 'mustpay',
             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);
-            }
+            // renderer : function(v) {
+            //     var arr = (v + '.').split('.');
+            //     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            //     var format = '0,000.' + xr.join();
+            //     return Ext.util.Format.number(v, format);
+            // },
+            // summaryType: 'sum',
+            // summaryRenderer: function(v) {
+            //     var arr = (v + '.').split('.');
+            //     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            //     var format = '0,000.' + xr.join();
+            //     return Ext.util.Format.number(v, format);
+            // }
         }, {
             text: '应付日期',
             xtype: 'datecolumn',

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

@@ -102,19 +102,19 @@ Ext.define('saas.view.money.report.RecDetail', {
             dataIndex: 'mustpay',
             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);
-            }
+            // 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: 'mustdate',

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

@@ -543,7 +543,8 @@ Ext.define('saas.view.money.verification.FormPanel', {
 
         defaultConditions: {
             receipts_offset_receivable: ['ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0',
-                'ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 and sl_kind in (\'期初余额\',\'出货单\',\'销售退货单\')'],
+                'ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
+                'and sl_kind in (\'期初余额\',\'出货单\',\'销售退货单\')'],
             prepaid_offset_payable: ['ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0',
                 'ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0'],
             receivable_offset_payable: ['ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0',

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

@@ -96,20 +96,20 @@ Ext.define('saas.view.money.verification.QueryPanel', {
         }, {
             text: '单据编号',
             dataIndex: 'vc_code',
-            width: 200
+            width: 180
         },  {
             text: '单据日期',
             dataIndex: 'vc_date',
             xtype: 'datecolumn',
-            width: 120
+            width: 100
         },{
             text: '审核状态',
             dataIndex: 'vc_status',
-            width: 120
+            width: 100
         },{
             text: '业务类型',
             dataIndex: 'vc_kind',
-            width: 200
+            width: 100
         }, {
             text: '客户编号',
             dataIndex: 'vc_custcode',
@@ -117,19 +117,20 @@ Ext.define('saas.view.money.verification.QueryPanel', {
         }, {
             text: '客户名称',
             dataIndex: 'vc_custname',
+            width: 130
         }, {
             text: '供应商编号',
             dataIndex: 'vc_vendcode',
             hidden: true
         }, {
             text: '供应商名称',
-            dataIndex: 'vc_vendname'
+            dataIndex: 'vc_vendname',
+            width: 130
         }, {
             text: '核销金额',
             dataIndex: 'vc_amount1',
             xtype: 'numbercolumn',
-            width: 120,
-            flex: 1,
+            width: 100,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');

+ 46 - 0
frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js

@@ -92,7 +92,53 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanelController', {
             }],
             renderTo:this.ownerCmp.ownerCt.getEl()
         }).show();
+    },
+    initCopyData: function(formData) {
+        var me = this;
+        var form = this.getView();
+        var detailCount = form.detailCount;
+        var main = formData.main;
+        var auditTexts = form.auditTexts;
+
+        // 单号、id清空
+        main[form._idField] = 0;
+        main[form._codeField] = '';
+        //采购单id,采购单号清空
+        main['pi_puid'] = 0;
+        main['pi_pucode'] = '';
+
+        // 单据状态为录入状态(未审核)
+        main[form._statusCodeField] = auditTexts.unAuditCode;
+        main[form._statusField] = auditTexts.unAuditText;
+
+        for(var k in main) {
+            // 主表日期改为当前日期
+            if(saas.util.BaseUtil.isDateString(main[k])) {
+                main[k] = Ext.Date.format(new Date, 'Y-m-d H:i:s');
+            }
+        }
+
+        for(var j = 0; j < detailCount; j++) {
+            var detail = formData['detail' + j];
+            for(var x = 0; x < detail.length; x ++) {
+                var d = detail[x];
+
+                for(var k in d) {
+                    // 从表id清空
+                    delete d['id'];
+                    //采购单号清空
+                    delete d['pd_orderid'];
+                    delete d['pd_ordercode'];
+                    delete d['pd_orderdetno'];
 
+                    // 从表日期清空
+                    if(saas.util.BaseUtil.isDateString(d[k])) {
+                        d[k] = '';
+                    }
+                }
+            }
+        }
+        return me.myInitCopyData(formData);;
     },
     turnOut: function() {
         var me = this,

+ 51 - 6
frontend/saas-web/app/view/purchase/purchaseOut/FormPanelController.js

@@ -67,11 +67,6 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanelController', {
 
                 }
             }
-
-
-
-
-
         });
 
     },
@@ -97,6 +92,56 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanelController', {
             }],
             renderTo:this.ownerCmp.ownerCt.getEl()
         }).show();
+    },
+    initCopyData: function(formData) {
+        var me = this;
+        var form = this.getView();
+        var detailCount = form.detailCount;
+        var main = formData.main;
+        var auditTexts = form.auditTexts;
 
-    }
+        // 单号、id清空
+        main[form._idField] = 0;
+        main[form._codeField] = '';
+        //采购单id,采购单号清空
+        main['pi_puid'] = 0;
+        main['pi_pucode'] = '';
+        //采购验收单id清空
+        main['pi_ioid'] = 0;
+        main['pi_iocode'] = '';
+        // 单据状态为录入状态(未审核)
+        main[form._statusCodeField] = auditTexts.unAuditCode;
+        main[form._statusField] = auditTexts.unAuditText;
+
+        for(var k in main) {
+            // 主表日期改为当前日期
+            if(saas.util.BaseUtil.isDateString(main[k])) {
+                main[k] = Ext.Date.format(new Date, 'Y-m-d H:i:s');
+            }
+        }
+
+        for(var j = 0; j < detailCount; j++) {
+            var detail = formData['detail' + j];
+            for(var x = 0; x < detail.length; x ++) {
+                var d = detail[x];
+
+                for(var k in d) {
+                    // 从表id清空
+                    delete d['id'];
+                    //采购单号清空
+                    delete d['pd_orderid'];
+                    delete d['pd_ordercode'];
+                    delete d['pd_orderdetno'];
+                    //采购验收单清空
+                    delete d['pd_ioid'];
+
+                    // 从表日期清空
+                    if(saas.util.BaseUtil.isDateString(d[k])) {
+                        d[k] = '';
+                    }
+                }
+            }
+        }
+        return me.myInitCopyData(formData);;
+    }    
 });

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

@@ -81,7 +81,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
             from:'pr_detail',to:'pr_detail'
         }]
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {
@@ -123,12 +123,12 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
     //字段属性
     columns : [{
         text : "盘点id", 
-        width : 0, 
-        dataIndex : "id", 
+        dataIndex : "id",
+        hidden:true, 
         xtype : "numbercolumn", 
     },{
         text : "物料id", 
-        width : 0, 
+        hidden:true,
         dataIndex : "st_prodid", 
         xtype : "numbercolumn", 
     }, 
@@ -165,7 +165,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
     {
         text : "仓库id", 
         dataIndex : "st_whid", 
-        width : 0, 
+        hidden:true,
         xtype : "numbercolumn", 
     },
     {

+ 1 - 1
frontend/saas-web/app/view/stock/stockamount/DataList.js

@@ -35,7 +35,7 @@ Ext.define('saas.view.stock.stockamount.DataList', {
         xtype: 'textfield',
         emptyText : '仓库名称'
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

+ 7 - 7
frontend/saas-web/app/view/sys/config/FormPanel.js

@@ -427,13 +427,13 @@ Ext.define('saas.view.sys.config.FormPanel', {
             showLogoPhoto.show();
         }
         //文件名称
-        // var viewModel = form.getViewModel();
-        // if(viewModel.data.fileInfoList&&viewModel.data.fileInfoList.length!=0){
-        //     var logo = viewModel.data.fileInfoList[0].logo;
-        //     var logoName = logo.name + "  (" + Ext.util.Format.fileSize(logo.size) + ")";
-        //     var signet = viewModel.data.fileInfoList[0].signet;
-        //     var signetName = signet.name + "  (" + Ext.util.Format.fileSize(signet.size) + ")";
-        // }
+        var viewModel = form.getViewModel();
+        if(viewModel.data.fileInfoList&&viewModel.data.fileInfoList.length!=0){
+            var logo = viewModel.data.fileInfoList[0].logo;
+            var logoName = logo.name + "  (" + Ext.util.Format.fileSize(logo.size) + ")";
+            var signet = viewModel.data.fileInfoList[0].signet;
+            var signetName = signet.name + "  (" + Ext.util.Format.fileSize(signet.size) + ")";
+        }
     },
 
     lookPic:function(img){

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

@@ -270,7 +270,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
             width:0.5*width,
             buttons: [{
                 text: '我知道了',
-                cls:'x-formpanel-btn-orange',
+                cls:'x-formpanel-btn-blue',
                 handler: function(b) {
                     var scope = b.ownerCt.ownerCt;
                     if(xtype=='begin'&&value=='false'){

+ 1 - 1
frontend/saas-web/app/view/sys/maxnumbers/DataList.js

@@ -24,7 +24,7 @@ Ext.define('saas.view.sys.maxnumbers.DataList', {
         xtype: 'textfield',
         emptyText : '单据前缀'
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

+ 1 - 1
frontend/saas-web/app/view/sys/messagelog/DataList.js

@@ -23,7 +23,7 @@ Ext.define('saas.view.sys.messagelog.DataList', {
         xtype: 'textfield',
         emptyText : '操作人员'
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

+ 0 - 7
frontend/saas-web/app/view/sys/power/GroupGrid.js

@@ -15,11 +15,8 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         style:'background:#fff;border-color:#34baf6'
     }],
     features : [Ext.create('Ext.grid.feature.Grouping',{
-        collapseTip:null,
         collapsible:false,
-        expandTip:null,
 		showSummaryRow: false,
-        startCollapsed: false,
         groupHeaderTpl: Ext.create('Ext.XTemplate',
             '<div>{rows:this.formatName}</div>',
             {
@@ -29,7 +26,6 @@ Ext.define('saas.view.sys.power.GroupGrid', {
             }
         )
 	})],
-    initId:0,
     dataUrl:'/api/account/role/power/resource',
     selModel: {
         showHeaderCheckbox:false,
@@ -164,7 +160,6 @@ Ext.define('saas.view.sys.power.GroupGrid', {
             dataIndex:'other',
             xtype: 'widgetcolumn',
             menuDisabled:true,
-            producesHTML: false,
             widget: {
                 xtype: 'powerotherfield',
                 bind:'{record.other}'
@@ -198,9 +193,7 @@ Ext.define('saas.view.sys.power.GroupGrid', {
                     return other;
                 }}
             ],
-            groupDir:'ASC',
             groupField:'moduleId',
-            clearRemovedOnLoad : true,
             proxy: {
                 timeout:8000,
                 type: 'ajax',

+ 3 - 2
frontend/saas-web/app/view/sys/power/OtherField.js

@@ -16,8 +16,9 @@ Ext.define('saas.view.sys.power.OtherField', {
     },
     setItems:function(v){
         if(v){
+            var f = this;
             var len = v.length,items=[];
-            if(this.items.length>0)this.removeAll(true);
+            if(f.items.length>0)f.removeAll(true);
             for (i = 0; i < len; i++) {
                 items.push({
                    boxLabel:v[i].name,
@@ -44,7 +45,7 @@ Ext.define('saas.view.sys.power.OtherField', {
                    }
                 });
             }
-            this.add(items);
+            f.add(items);
         }
     }
 });

+ 4 - 0
frontend/saas-web/overrides/button/Button.js

@@ -0,0 +1,4 @@
+Ext.define('saas.override.button.Button', {
+    override: 'Ext.button.Button',
+    focusable:false,
+});

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

@@ -0,0 +1,26 @@
+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;
+                    }
+                }
+            }
+        }
+    }
+
+});

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません