Browse Source

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

hy 7 years ago
parent
commit
90033ab5e7
67 changed files with 1064 additions and 315 deletions
  1. 3 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 34 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Status.java
  3. 6 4
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/SubledgerMapper.java
  4. 47 23
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  5. 57 23
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  6. 12 6
      applications/document/document-server/src/main/resources/mapper/SubledgerMapper.xml
  7. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VerificationList.java
  8. 4 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  9. 4 3
      applications/money/money-server/src/main/resources/mapper/VerificationListMapper.xml
  10. 2 2
      applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml
  11. 6 0
      applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/ProdInOutDTO.java
  12. 5 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOut.java
  13. 6 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOutList.java
  14. 14 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  15. 5 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  16. 1 0
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml
  17. 22 1
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutMapper.xml
  18. 3 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/ProdInOutDTO.java
  19. 8 2
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  20. 1 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  21. 1 1
      applications/sale/sale-server/src/main/resources/mapper/ProdInOutMapper.xml
  22. 9 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountRoleDTO.java
  23. 26 1
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyRspDTO.java
  24. 4 0
      base-servers/account/account-server/pom.xml
  25. 12 1
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountCenterController.java
  26. 4 4
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java
  27. 7 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/CompanyMapper.java
  28. 8 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountCenterService.java
  29. 7 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/CompanyService.java
  30. 45 34
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountCenterServiceImpl.java
  31. 5 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/CompanyServiceImpl.java
  32. 2 1
      base-servers/account/account-server/src/main/resources/mapper/AccountCompanyMapper.xml
  33. 2 2
      base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml
  34. 7 1
      base-servers/account/account-server/src/main/resources/mapper/CompanyMapper.xml
  35. 3 3
      base-servers/auth/auth-api/src/main/java/com/usoftchina/saas/auth/api/AuthApi.java
  36. 21 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserApi.java
  37. 23 4
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserSpaceApi.java
  38. 10 1
      base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserApiTest.java
  39. 11 1
      base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserSpaceApiTeest.java
  40. 18 8
      frontend/saas-portal-web/src/components/conenter/addgongsi.vue
  41. 87 44
      frontend/saas-portal-web/src/components/conenter/company.vue
  42. 13 11
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  43. 84 28
      frontend/saas-portal-web/src/components/conenter/home.vue
  44. 100 18
      frontend/saas-portal-web/src/components/conenter/qiyexiangxi.vue
  45. 7 4
      frontend/saas-portal-web/src/store/index.js
  46. 2 2
      frontend/saas-portal-web/static/css/main.css
  47. BIN
      frontend/saas-portal-web/static/img/gongneng/Group 32.png
  48. BIN
      frontend/saas-portal-web/static/img/gongneng/chahua12x.png
  49. BIN
      frontend/saas-portal-web/static/img/gongneng/chahua22x.png
  50. BIN
      frontend/saas-portal-web/static/img/gongneng/chahua32x.png
  51. 7 7
      frontend/saas-portal-web/static/js/mains.js
  52. 18 0
      frontend/saas-web/app/model/document/stocking.js
  53. 2 2
      frontend/saas-web/app/view/home/InfoCard.js
  54. 2 1
      frontend/saas-web/app/view/money/othreceipts/FormPanel.js
  55. 58 1
      frontend/saas-web/app/view/money/othreceipts/QueryPanel.js
  56. 1 0
      frontend/saas-web/app/view/money/othspendings/FormPanel.js
  57. 61 4
      frontend/saas-web/app/view/money/othspendings/QueryPanel.js
  58. 8 8
      frontend/saas-web/app/view/money/payBalance/QueryPanel.js
  59. 11 11
      frontend/saas-web/app/view/money/recBalance/QueryPanel.js
  60. 1 1
      frontend/saas-web/app/view/money/report/AccountBalance.js
  61. 13 13
      frontend/saas-web/app/view/money/report/PayDetail.js
  62. 13 13
      frontend/saas-web/app/view/money/report/RecDetail.js
  63. 8 7
      frontend/saas-web/app/view/money/verification/QueryPanel.js
  64. 1 1
      frontend/saas-web/app/view/purchase/purchase/FormPanelController.js
  65. 47 1
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js
  66. 51 6
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanelController.js
  67. 2 1
      frontend/saas-web/app/view/stock/inventory/EditDataList.js

+ 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, "物料已关闭"),

+ 34 - 1
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Status.java

@@ -50,10 +50,43 @@ public enum Status {
     /**
      * 未出库
      */
-    UNTURNOUT("未出库");
+    UNTURNOUT("未出库"),
+
+    /**
+     *未收款
+     */
+    RECNONE("未收款"),
+
+    /**
+     * 部分收款
+     */
+    RECPART("部分收款"),
 
 
+    /**
+     * 已收款
+     */
+    RECALL("已收款"),
+
+
+    /**
+     * 未付款
+     */
+    PAYNONE("未付款"),
+
+
+    /**
+     * 部分付款
+     */
+    PAYPART("部分付款"),
+
+    /**
+     * 已付款
+     */
+    PAYALL("已付款")
     ;
+
+
     private String display;
     private Status(String display){
         this.display = display;

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

+ 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

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

+ 6 - 0
applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/ProdInOutDTO.java

@@ -81,4 +81,10 @@ public class ProdInOutDTO extends CommonBaseDTO implements Serializable {
 
     private Long pi_maid;
 
+    private String pi_iocode;
+
+    private String pi_prstatus;
+
+    private String pi_prstatuscode;
+
 }

+ 5 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOut.java

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

+ 6 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOutList.java

@@ -144,6 +144,12 @@ public class ProdInOutList extends CommonBaseEntity{
 
     private Long pd_ioid;
 
+    private String pi_iocode;
+
+    private String pi_prstatus;
+
+    private String pi_prstatuscode;
+
     //private ProductDTO productDTO;
     private Long pr_id;
     private String pr_code;

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

@@ -142,6 +142,16 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         pi_inoutno = pushMaxnubmer(baseDTO);
         prodInOut.setPi_inoutno(pi_inoutno);
 
+
+        if ("采购验收单".equals(pi_class)){
+            prodInOut.setPi_prstatus(Status.PAYNONE.getDisplay());
+            prodInOut.setPi_prstatuscode(Status.PAYNONE.name());
+        }else if ("采购验退单".equals(pi_class)){
+            prodInOut.setPi_prstatus(Status.RECNONE.getDisplay());
+            prodInOut.setPi_prstatuscode(Status.RECNONE.name());
+        }
+
+
         //判断更新与保存动作
         if (StringUtils.isEmpty(pi_id) || "0".equals(pi_id.toString())){
             prodInOut.setCompanyId(companyId);
@@ -441,6 +451,10 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         targetPi.setPi_puid(sourcePi.getPi_puid());
         targetPi.setPi_pucode(sourcePi.getPi_pucode());
         targetPi.setPi_ioid(sourcePi.getId());
+        targetPi.setPi_iocode(sourcePi.getPi_inoutno());
+        //设置付款状态
+        targetPi.setPi_prstatus(Status.RECNONE.getDisplay());
+        targetPi.setPi_prstatuscode(Status.RECNONE.name());
         //设置公司id
         targetPi.setCompanyId(sourcePi.getCompanyId());
         targetPi.setCreateTime(new Date());

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

@@ -438,6 +438,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         prodInOut.setPi_vendname(purchase.getPu_vendname());
         prodInOut.setPi_puid(purchase.getId().intValue());
         prodInOut.setPi_pucode(purchase.getPu_code());
+        //设置付款状态
+        prodInOut.setPi_prstatus(Status.PAYNONE.getDisplay());
+        prodInOut.setPi_prstatuscode(Status.PAYNONE.name());
+
         //设置公司id
         prodInOut.setCompanyId(purchase.getCompanyId());
         prodInOut.setCreatorId(userId);
@@ -518,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);

+ 1 - 0
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -75,6 +75,7 @@
     <result column="pd_ym" jdbcType="INTEGER" property="pd_ym" />
     <result column="pd_yqty" jdbcType="DOUBLE" property="pd_yqty" />
     <result column="pd_ioid" jdbcType="INTEGER" property="pd_ioid" />
+    <result column="pi_iocode" jdbcType="VARCHAR" property="pi_iocode" />
     <result column="pd_remark" jdbcType="VARCHAR" property="pd_remark" />
     <result column="pr_id" property="pr_id"/>
     <result column="pr_code" property="pr_code"/>

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

@@ -40,6 +40,9 @@
     <result column="pi_auditman" jdbcType="VARCHAR" property="pi_auditman" />
     <result column="pi_remark" jdbcType="VARCHAR" property="pi_remark" />
     <result column="pi_ioid" jdbcType="INTEGER" property="pi_ioid" />
+    <result column="pi_iocode" jdbcType="VARCHAR" property="pi_iocode" />
+    <result column="pi_prstatus" jdbcType="VARCHAR" property="pi_prstatus" />
+    <result column="pi_prstatuscode" jdbcType="VARCHAR" property="pi_prstatuscode" />
   </resultMap>
   <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.usoftchina.saas.purchase.po.ProdInOut">
     <result column="pi_address" jdbcType="LONGVARCHAR" property="pi_address" />
@@ -52,7 +55,7 @@
     pi_custcode, pi_custname, pi_puid, pi_pucode, pi_said, pi_sacode, pi_total, pi_recordmanid, 
     pi_recordman, pi_recorddate, pi_status, pi_statuscode, pi_printstatus, pi_printstatuscode, 
     companyid, updaterid,updaterName,updatetime,creatorid,creatorName,createtime, pi_text1, pi_text2, pi_text3, pi_text4, pi_text5,pi_auditdate,
-    pi_auditman,pi_remark,pi_ioid
+    pi_auditman,pi_remark,pi_ioid,pi_iocode,pi_prstatus,pi_prstatuscode
   </sql>
   <sql id="Blob_Column_List">
     pi_address
@@ -190,6 +193,15 @@
       <if test="pi_ioid != null">
         pi_ioid,
       </if>
+      <if test="pi_iocode != null">
+        pi_iocode,
+      </if>
+      <if test="pi_prstatus != null">
+        pi_prstatus,
+      </if>
+      <if test="pi_prstatuscode != null">
+        pi_prstatuscode,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
 
@@ -306,6 +318,15 @@
       <if test="pi_ioid != null">
         #{pi_ioid,jdbcType=INTEGER},
       </if>
+      <if test="pi_iocode != null">
+        #{pi_iocode,jdbcType=VARCHAR},
+      </if>
+      <if test="pi_prstatus != null">
+        #{pi_prstatus,jdbcType=VARCHAR},
+      </if>
+      <if test="pi_prstatuscode != null">
+        #{pi_prstatuscode,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
 

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

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

@@ -578,7 +578,7 @@ public class SaleServiceImpl implements SaleService{
             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(taxPrice/(1+taxrate/100));
             purchaseDetail.setPd_salecode(sale.getSa_code());
             purchaseDetail.setPd_saledetno(detail.getSd_detno());
             purchaseDetail.setPd_saleid(sale.getId());

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

+ 9 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountRoleDTO.java

@@ -9,9 +9,18 @@ public class AccountRoleDTO implements Serializable {
     private String realname;
     private String email;
     private String mobile;
+    private boolean enabled;
     private String roleNames;
     private String roleIds;
 
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
     public String getRoleNames() {
         return roleNames;
     }

+ 26 - 1
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyRspDTO.java

@@ -32,6 +32,29 @@ public class CompanyRspDTO implements Serializable {
      */
     private Long defaultCompanyId;
 
+    /**
+     * 管理员名称
+     */
+    private String admin;
+
+    private Long adminId;
+
+    public Long getAdminId() {
+        return adminId;
+    }
+
+    public void setAdminId(Long adminId) {
+        this.adminId = adminId;
+    }
+
+    public String getAdmin() {
+        return admin;
+    }
+
+    public void setAdmin(String admin) {
+        this.admin = admin;
+    }
+
     public boolean isHasDefaultCompany() {
         return hasDefaultCompany;
     }
@@ -104,13 +127,15 @@ public class CompanyRspDTO implements Serializable {
         this.default_ = default_;
     }
 
-    public CompanyRspDTO(String name, String businessCode, String address, boolean default_, boolean saas_, String uu) {
+    public CompanyRspDTO(String name, String businessCode, String address, boolean default_, boolean saas_, String uu, String admin, Long adminId) {
         this.name = name;
         this.businessCode = businessCode;
         this.address = address;
         this.default_ = default_;
         this.saas_ = saas_;
         this.uu = uu;
+        this.admin = admin;
+        this.adminId = adminId;
     }
 
     public CompanyRspDTO() {

+ 4 - 0
base-servers/account/account-server/pom.xml

@@ -30,6 +30,10 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>file-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>auth-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>auth-client</artifactId>

+ 12 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountCenterController.java

@@ -24,7 +24,18 @@ public class AccountCenterController {
      */
     @PostMapping("/companyAccount/save")
     public Result saveCompanyAccount(@RequestBody CompanyAccountDTO companyAccountDTO){
-        return Result.success(accountCenterService.saveCompanyAccount(companyAccountDTO));
+        return Result.success(accountCenterService.saveCompanyAccount(companyAccountDTO).getData());
+    }
+
+    /**
+     * 信息完善界面   更新接口
+     * @param companyAccountDTO
+     * @return
+     */
+    @PostMapping("/companyAccount/update")
+    public Result updateCompanyAccount(@RequestBody CompanyAccountDTO companyAccountDTO){
+        accountCenterService.updateCompanyAccount(companyAccountDTO);
+        return Result.success();
     }
 
     /**

+ 4 - 4
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java

@@ -35,13 +35,10 @@ public class AccountController {
 
     @Autowired
     private AccountService accountService;
-
     @Autowired
     private CompanyService companyService;
-
     @Autowired
     private RoleService roleService;
-
     @Autowired
     private SsoUserApi ssoUserApi;
 
@@ -115,7 +112,6 @@ public class AccountController {
      * @return
      */
     @PostMapping("/register/add")
-    @IgnoreAuth
     public Result AddAccount(@RequestBody AccountCopyDTO accountCopyDTO) {
         // 判断是否已注册
         Account account = accountService.findByUsername(accountCopyDTO.getUsername());
@@ -401,6 +397,10 @@ public class AccountController {
     @PostMapping("/disable")
     public Result disableAccount(@RequestParam long accountId) {
         accountService.disable(accountId);
+        //同步到优软云
+        Long userUU = accountService.findByPrimaryKey(accountId).getUu();
+        Long companyUU = companyService.findByPrimaryKey(BaseContextHolder.getCompanyId()).getUu();
+        String result = ssoUserApi.unbind("unbind", userUU, companyUU);
         accountService.clearCache(accountId);
         return Result.success();
     }

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/CompanyMapper.java

@@ -82,4 +82,11 @@ public interface CompanyMapper {
      * @return
      */
     int updateByPrimaryKeySelective(CompanyRegDTO companyRegDTO);
+
+    /**
+     * 更新UU号
+     * @param companyId
+     * @param uu
+     */
+    void updateUUByPrimaryKey(@Param("companyId") Long companyId, @Param("uu") Long uu);
 }

+ 8 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountCenterService.java

@@ -17,6 +17,14 @@ public interface AccountCenterService {
      */
     Result saveCompanyAccount(CompanyAccountDTO companyAccountDTO);
 
+
+    /**
+     * 企业账户信息完善  更新
+     * @param companyAccountDTO
+     * @return
+     */
+    boolean updateCompanyAccount(CompanyAccountDTO companyAccountDTO);
+
     /**
      * 获取企业信息列表
      * @param mobile

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/CompanyService.java

@@ -98,4 +98,11 @@ public interface CompanyService {
      * @param companyRegDTO
      */
     void update(CompanyRegDTO companyRegDTO);
+
+    /**
+     * 更新公司UU号
+     * @param companyId
+     * @param uu
+     */
+    void updateUUByPrimaryKey(Long companyId, Long uu);
 }

+ 45 - 34
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountCenterServiceImpl.java

@@ -7,14 +7,18 @@ import com.usoftchina.saas.account.po.Company;
 import com.usoftchina.saas.account.service.AccountCenterService;
 import com.usoftchina.saas.account.service.AccountService;
 import com.usoftchina.saas.account.service.CompanyService;
+import com.usoftchina.saas.auth.api.AuthApi;
+import com.usoftchina.saas.auth.dto.TokenDTO;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.StringUtils;
 import com.usoftchina.sso.api.SsoUserApi;
+import com.usoftchina.sso.api.SsoUserSpaceApi;
 import com.usoftchina.sso.dto.SsoUserSpace;
 import com.usoftchina.sso.dto.SsoUserSpaceList;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.LinkedMultiValueMap;
@@ -36,11 +40,12 @@ public class AccountCenterServiceImpl implements AccountCenterService {
     @Autowired
     private SsoUserApi ssoUserApi;
     @Autowired
+    private SsoUserSpaceApi ssoUserSpaceApi;
+    @Autowired
+    private AuthApi authApi;
+    @Autowired
     private AccountCompanyMapper accountCompanyMapper;
 
-    private final String ACCOUNTCNETER_URL_DEV = "http://192.168.253.12:32323";
-    //private final String ACCOUNTCNETER_URL_PROD = "https://sso.ubtob.com";
-
     @Override
     @Transactional
     public Result saveCompanyAccount(CompanyAccountDTO companyAccountDTO) {
@@ -66,9 +71,9 @@ public class AccountCenterServiceImpl implements AccountCenterService {
         companyService.save(company);
         //b. 同步企业信息到优软云 ——>  创建企业
         if ("0".equals(type)) {
-            String result = postToAccount(company.getName(), company.getBusinessCode(), accountRegDTO.getUu());
-            accountCompanyMapper.insert(accountId, company.getId());
+            String result = ssoUserSpaceApi.registerLogin(company.getName(), company.getBusinessCode(), Long.parseLong(accountRegDTO.getUu()));
         }
+        accountCompanyMapper.insert(accountId, company.getId());
         //2.更新账户信息
         Account account = BeanMapper.map(accountRegDTO, Account.class);
 
@@ -77,22 +82,18 @@ public class AccountCenterServiceImpl implements AccountCenterService {
         return null;
     }
 
-    /**
-     * 将企业信息同步到优软云
-     * @param spaceName
-     * @param businesscode
-     * @param uu
-     * @return
-     */
-    private String postToAccount(String spaceName, String businesscode, String uu) {
-        String url = "/sso/userspace/register/admin";
-        RestTemplate restTemplate = new RestTemplate();
-        MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<>();
-        requestEntity.add("spaceName", spaceName);
-        requestEntity.add("businessCode", businesscode);
-        requestEntity.add("userUU", uu);
-        String result = restTemplate.postForObject(ACCOUNTCNETER_URL_DEV + url, requestEntity, String.class);
-        return result;
+    @Override
+    public boolean updateCompanyAccount(CompanyAccountDTO companyAccountDTO) {
+        CompanyRegDTO companyRegDTO = companyAccountDTO.getCompanyRegDTO();
+        AccountRegDTO accountRegDTO = companyAccountDTO.getAccountRegDTO();
+        Long accountId = accountService.findByMobile(accountRegDTO.getMobile()).getId();
+        //更新企业信息
+        companyService.update(companyRegDTO);
+        //更新账户信息
+        Account account = BeanMapper.map(accountRegDTO, Account.class);
+        account.setId(accountId);
+        accountService.updateByPrimaryKeySelective(account);
+        return true;
     }
 
     @Override
@@ -116,27 +117,37 @@ public class AccountCenterServiceImpl implements AccountCenterService {
 
         //3、去重复
         for (CompanyRspDTO companyRspDTO : companyRspDTOList) {
-            for (SsoUserSpace ssoUserSpace : ssoUserSpaces) {
-                if (companyRspDTO.getName().equals(ssoUserSpace.getSpaceName())){
-                    ssoUserSpaces.remove(ssoUserSpace);
+            for (int i = 0; i < ssoUserSpaces.size(); i++){
+                if (companyRspDTO.getName().equals(ssoUserSpaces.get(i).getSpaceName())){
+                    //更新公司UU号
+                    if (StringUtils.isEmpty(companyRspDTO.getUu())){
+                        companyService.updateUUByPrimaryKey(companyRspDTO.getId(), ssoUserSpaces.get(i).getSpaceUU());
+                    }
+                    ssoUserSpaces.remove(ssoUserSpaces.get(i));
                 }
             }
             if (companyRspDTO.isDefault_()){
                 resultMap.put("hasDefaultCompany", true);
                 resultMap.put("defaultCompanyId", companyRspDTO.getId());
+                TokenDTO tokenDTO = authApi.switchCompany(companyRspDTO.getId()).getData();
+                resultMap.put("token", tokenDTO);
             }
         }
         //构造返回数据
-        for (SsoUserSpace ssoUserSpace : ssoUserSpaces){
-            CompanyRspDTO companyRspDTO = new CompanyRspDTO(
-                    ssoUserSpace.getSpaceName(),
-                    ssoUserSpace.getBusinessCode(),
-                    ssoUserSpace.getRegAddress(),
-                    false,
-                    false,
-                    ssoUserSpace.getSpaceUU().toString()
-            );
-            resultList.add(companyRspDTO);
+        if (ssoUserSpaces.size() > 0) {
+            for (SsoUserSpace ssoUserSpace : ssoUserSpaces) {
+                CompanyRspDTO companyRspDTO = new CompanyRspDTO(
+                        ssoUserSpace.getSpaceName(),
+                        ssoUserSpace.getBusinessCode(),
+                        ssoUserSpace.getRegAddress(),
+                        false,
+                        false,
+                        ssoUserSpace.getSpaceUU().toString(),
+                        ssoUserSpace.getAdmin().getVipName(),
+                        0l
+                );
+                resultList.add(companyRspDTO);
+            }
         }
         resultMap.put("spaces", resultList);
         return resultMap;

+ 5 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/CompanyServiceImpl.java

@@ -54,6 +54,11 @@ public class CompanyServiceImpl implements CompanyService{
         }
     }
 
+    @Override
+    public void updateUUByPrimaryKey(Long companyId, Long uu) {
+        companyMapper.updateUUByPrimaryKey(companyId, uu);
+    }
+
     @Override
     public Company findByName(String name) {
         return companyMapper.selectByName(name);

+ 2 - 1
base-servers/account/account-server/src/main/resources/mapper/AccountCompanyMapper.xml

@@ -14,9 +14,10 @@
         delete from ac_account_company where company_id=#{companyId}
     </delete>
     <select id="getCompanyListByAccountMobile" resultType="com.usoftchina.saas.account.dto.CompanyRspDTO">
-        SELECT cmp.id,cmp.name,cmp.uu,cmp.business_code businessCode,cmp.address,accmp.is_default default_,'1' saas_ from ac_company cmp
+        SELECT cmp.id,cmp.name,cmp.uu,cmp.business_code businessCode,cmp.address,accmp.is_default default_,'1' saas_,aci.realname admin,cmp.creator_id adminId from ac_company cmp
         left join ac_account_company accmp on accmp.company_id=cmp.id
         left join ac_account ac on ac.id = accmp.account_id
+        left join ac_account aci on aci.id = cmp.creator_id
         where ac.mobile = #{mobile}
         order by is_default desc
     </select>

+ 2 - 2
base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml

@@ -17,7 +17,7 @@
         delete from ac_account_role where company_id=#{companyId}
     </delete>
     <select id="selectAccountRole" resultType="com.usoftchina.saas.account.dto.AccountRoleDTO">
-        SELECT a.id id,a.username,a.realname,a.email,a.mobile,GROUP_CONCAT(c.name) roleNames,GROUP_CONCAT(c.id) roleIds
+        SELECT a.id id,a.username,a.realname,a.email,a.mobile,GROUP_CONCAT(c.name) roleNames,GROUP_CONCAT(c.id) roleIds,a.enabled
         FROM ac_account a
         left join ac_account_company d on a.id = d.account_id
         left join ac_account_role b on a.id=b.account_id and d.company_id = b.company_id
@@ -30,7 +30,7 @@
                 AND d.COMPANY_ID = #{companyId}
             </if>
         </where>
-        group by a.id,a.username,a.realname,a.email,a.mobile
+        group by a.id,a.username,a.realname,a.email,a.mobile,a.enabled
     </select>
     <delete id="unBindRolesById" parameterType="java.lang.Long">
         DELETE FROM AC_ACCOUNT_ROLE WHERE ACCOUNT_ID = #{id}

+ 7 - 1
base-servers/account/account-server/src/main/resources/mapper/CompanyMapper.xml

@@ -119,9 +119,12 @@
     <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
         delete from ac_company where id=#{id,jdbcType=BIGINT}
     </delete>
-    <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.account.po.Company">
+    <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.account.dto.CompanyRegDTO">
         UPDATE ac_company
         <set>
+            <if test="name != null">
+                name = #{name, jdbcType=VARCHAR},
+            </if>
             <if test="address != null">
                 address = #{address,jdbcType=VARCHAR},
             </if>
@@ -140,4 +143,7 @@
         </set>
         where id = #{id}
     </update>
+    <update id="updateUUByPrimaryKey">
+        UPDATE ac_company set uu = #{uu} where id = #{companyId}
+    </update>
 </mapper>

+ 3 - 3
base-servers/auth/auth-api/src/main/java/com/usoftchina/saas/auth/api/AuthApi.java

@@ -21,7 +21,7 @@ public interface AuthApi {
      * @param password
      * @return
      */
-    @PostMapping(value = "/api/auth")
+    @PostMapping(value = "/authorize")
     Result<AuthDTO> authorize(@RequestParam(value = "username") String username, @RequestParam(value = "password") String password);
 
     /**
@@ -30,8 +30,8 @@ public interface AuthApi {
      * @param companyId
      * @return
      */
-    @GetMapping(value = "/api/auth/switch/company")
-    Result<TokenDTO> switchCompany(@RequestParam(value = "companyId") String companyId);
+    @GetMapping(value = "/switch/company")
+    Result<TokenDTO> switchCompany(@RequestParam(value = "companyId") Long companyId);
 
     /**
      * 获取auth信息

+ 21 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserApi.java

@@ -9,6 +9,7 @@ import com.usoftchina.sso.dto.SsoUserSpaceList;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -41,9 +42,24 @@ public interface SsoUserApi {
     @Deprecated
     SsoUserSpaceList getUserSpacesByMobile(@RequestParam("mobile") String mobile);
 
+    /**
+     * 校验手机号是否已注册
+     * @param mobile
+     * @return
+     */
     @GetMapping("/checkMobile")
     SsoCheckMobile checkMobile(@RequestParam("mobile") String mobile);
 
+    /**
+     * 解除用户企业绑定
+     * @param _operate
+     * @param userUU
+     * @param spaceUU
+     * @return
+     */
+    @PostMapping("")
+    String unbind(@RequestParam("_operate") String _operate, @RequestParam("userUU") Long userUU, @RequestParam("spaceUU") Long spaceUU);
+
     @Component
     class DefaultFallback implements SsoUserApi{
         @Override
@@ -61,5 +77,10 @@ public interface SsoUserApi {
             return null;
         }
 
+        @Override
+        public String unbind(String _operate, Long userUU, Long spaceUU) {
+            return null;
+        }
+
     }
 }

+ 23 - 4
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserSpaceApi.java

@@ -4,7 +4,7 @@ import com.usoftchina.sso.dto.SsoResult;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
 /**
@@ -12,11 +12,25 @@ import org.springframework.web.bind.annotation.RequestParam;
  * @date 2018/11/23
  */
 @FeignClient(url = "${sso.base-url}", name = "sso-server", fallback = SsoUserApi.DefaultFallback.class)
-@RequestMapping("/api/userspace")
 public interface SsoUserSpaceApi {
+    /**
+     * 校验企业名称是否已注册
+     * @param spacename
+     * @return
+     */
+    @GetMapping("/api/userspace/checkSpaceName")
+    SsoResult checkSpaceName(@RequestParam("spaceName") String spacename);
 
-    @GetMapping("/checkSpaceName")
-    SsoResult checkSpaceName(@RequestParam("spacename") String spacename);
+    /**
+     * <p>账户中心接口: 通过登录管理员注册企业</p>
+     * <p>将企业信息同步到优软云</p>
+     * @param spaceName
+     * @param businessCode
+     * @param userUU
+     * @return
+     */
+    @PostMapping("/sso/userspace/register/admin")
+    String registerLogin(@RequestParam("spaceName") String spaceName, @RequestParam("businessCode") String businessCode, @RequestParam("userUU") Long userUU);
 
     @Component
     class DefaultFallback implements SsoUserSpaceApi{
@@ -25,6 +39,11 @@ public interface SsoUserSpaceApi {
         public SsoResult checkSpaceName(String spaceName) {
             return null;
         }
+
+        @Override
+        public String registerLogin(String spaceName, String businessCode, Long userUU) {
+            return null;
+        }
     }
 
 }

+ 10 - 1
base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserApiTest.java

@@ -29,7 +29,7 @@ public class SsoUserApiTest {
 
     final static long userUU = 200040149;
 
-    final static String mobile = "18595633323";
+    final static String mobile = "18702604854";
 
     @Test
     public void testA_getUserByUu() {
@@ -53,4 +53,13 @@ public class SsoUserApiTest {
         System.out.println(checked);
     }
 
+
+    @Test
+    public void testD_unbind(){
+        Long companyUU = 10050435l;
+        Long userUU = 1000027276l;
+        String result = ssoUserApi.unbind("unbind", userUU, companyUU);
+        System.out.println(result);
+    }
+
 }

+ 11 - 1
base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserSpaceApiTeest.java

@@ -1,5 +1,6 @@
 package com.usoftchina.sso.test;
 
+import com.usoftchina.saas.utils.StringUtils;
 import com.usoftchina.sso.api.SsoUserSpaceApi;
 import com.usoftchina.sso.dto.SsoResult;
 import org.junit.FixMethodOrder;
@@ -24,7 +25,16 @@ public class SsoUserSpaceApiTeest {
 
     @Test
     public void testA_checkSpaceName(){
-        SsoResult result = ssoUserSpaceApi.checkSpaceName("测试公司08111550");
+        SsoResult result = ssoUserSpaceApi.checkSpaceName("上海宇声电子科技有限公司");
+        System.out.println(result);
+    }
+
+    @Test
+    public void testB_registerLogin(){
+        String spaceName = "测试企业009";
+        String businessCode = StringUtils.createBusinessCode();
+        Long userUU = 1000027276l;
+        String result = ssoUserSpaceApi.registerLogin(spaceName, businessCode, userUU);
         System.out.println(result);
     }
 }

+ 18 - 8
frontend/saas-portal-web/src/components/conenter/addgongsi.vue

@@ -54,6 +54,7 @@
                         <li>
                             <span class="qy-biaoti">邮箱</span>
                             <input @input="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,

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

+ 13 - 11
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">
@@ -25,13 +25,13 @@
                             <img style="width: 25px;" 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'});
             } 
         },
     }

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

@@ -52,17 +52,19 @@
           <img @click="closeModal" class="tc-on shut"
                src="/static/img/qiye/chahao.png" alt="">
         </div>
-        <iframe width="430" height="440" :src="ssoPage"></iframe>
+        <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 shut" src="/static/img/qiye/chahao.png" alt="" />
+        <div class="ty-title"><span>填写手机号后,可体验电子行业贸易版所有功能</span></div>
+        <div class="ty-phone over">
+          <div class="left"><input type="text" placeholder="请输入您的11位手机号"></div>
+          <button>立即申请试用</button>
+        </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 +76,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">
@@ -100,7 +103,8 @@
           </div>
           <div class="ts-box">
             <div style="margin:50px 0;">
-              <img class="ts-img" src="/static/img/features.jpg" alt="">
+              <!-- <img class="ts-img" src="/static/img/features.jpg" alt=""> -->
+              <img class="ts-img" src="/static/img/gongneng/chahua12x.png" alt="">
             </div>
             <div class="right right-text">
               <img class="ts-minimg" src="/static/img/assets/1.png" alt="">
@@ -125,12 +129,12 @@
               </div>
             </div>
             <div style="margin:50px 0;">
-              <img class="ts-img" src="/static/img/features.jpg" alt="">
+              <img class="ts-img" src="/static/img/gongneng/chahua22x.png" alt="">
             </div>
           </div>
           <div class="ts-box">
             <div style="margin:50px 0;">
-              <img class="ts-img" src="/static/img/features.jpg" alt="">
+              <img class="ts-img" src="/static/img/gongneng/chahua32x.png" alt="">
             </div>
             <div class="right right-text">
               <img class="ts-minimg" src="/static/img/assets/1.png" alt="">
@@ -262,17 +266,18 @@
               <div class="bz-content">
                 <div class="bz-left">
                   <ul class="bz-ul">
-                    <li class='active'>操作文档</li>
-                    <li>常见问题</li>
+                    <!-- <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 +292,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>
@@ -328,14 +333,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 +359,9 @@
       }
     },
     methods: {
+      tab(i){
+        this.Nowindex = i;
+      },
       home() {
         document.documentElement.scrollTop = 0;
       },
@@ -370,7 +379,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
@@ -418,14 +427,28 @@
 </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: 3px; */
+  padding: 0px;
+  /* height: 70px;
+  line-height: 70px; */
+}
+
+/* 体验 */
 .tiyan {
-  position: absolute;
+  position: fixed;
   top: 50%;
   left: 50%;
 	width: 400px;
@@ -435,10 +458,43 @@
   z-index: 10001;
   background: white;
 }
-.navbar-inverse {
-  /* padding: 3px; */
-  padding: 0px;
-  /* height: 70px;
-  line-height: 70px; */
+.tiyan div {
+  height: 33%;
+}
+.ty-title {
+  text-align: center;
+  margin-top: 30px;
+  font-size: 18px;
+  font-weight: 600;
+}
+.ty-title span {
+  margin-top: 30px;
+  display: inline-block;
+}
+.ty-phone div {
+  width: 60%;
+  height: 40px;
+  border-radius: 20px;
+  border: 1px solid rgb(162, 151, 231);
+  line-height: 40px;
+  margin: 0 10px;
+}
+.ty-phone input{
+  outline:none;
+  border: 0;
+  height: 30px;
+  margin-left: 10px;
+}
+.ty-phone button{
+  color: white;
+  width: 30%;
+  height: 40px;
+  border-radius: 20px;
+  background: rgb(162, 151, 231);
+  border: 0;
+}
+.contact {
+    margin-left: 20px;
+    font-size: 18px;
 }
 </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;   
+         },
     }
 })

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

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


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


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


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


+ 7 - 7
frontend/saas-portal-web/static/js/mains.js

@@ -7,13 +7,13 @@ 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')
-    });
+    // $(".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')
+    // });
 });
 
 /* ========================================================================= */

+ 18 - 0
frontend/saas-web/app/model/document/stocking.js

@@ -0,0 +1,18 @@
+Ext.define('saas.model.document.stocking', {
+    extend: 'saas.model.Base',
+    fields: [
+        { name: 'id', type: 'int' },
+        { name: 'st_prodid', type: 'int' },
+        { name: 'st_prodcode', type: 'string' },
+        { name: 'st_proddetail', type: 'string' },
+        { name: 'st_prodorispeccode', type: 'string' },
+        { name: 'st_prodkind', type: 'string' },
+        { name: 'st_produnit', type: 'string' },
+        { name: 'st_whid', type: 'int' },
+        { name: 'st_whcode', type: 'string' },
+        { name: 'st_whname', type: 'string' },
+        { name: 'st_batchqty', type: 'float' },
+        { name: 'st_actqty', type: 'float' },
+        { name: 'st_num', type: 'float' }
+    ]
+});

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

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

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

+ 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: '收付款人',

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

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

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

@@ -64,7 +64,7 @@ Ext.define('saas.view.purchase.purchase.FormPanelController', {
         form = me.getView(),
         id = form.getForm().findField(form._idField);
         saas.util.BaseUtil.request({
-            url: form._turnInUrl+id.value,
+            url: form._turnInUrl+'/'+id.value,
             method: 'POST',
         })
         .then(function(localJson) {

+ 47 - 1
frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js

@@ -92,14 +92,60 @@ 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,
         form = me.getView(),
         id = form.getForm().findField(form._idField);
         saas.util.BaseUtil.request({
-            url: form._turnOutUrl+id.value,
+            url: form._turnOutUrl+'/'+id.value,
             method: 'POST',
         })
         .then(function(localJson) {

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

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

@@ -50,7 +50,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         }],
         width:150,
     },{
-        editable:false,
+        editable:true,
         xtype : "remotecombo", 
         storeUrl:'/api/document/producttype/getCombo',
         name : "pr_kind",
@@ -251,6 +251,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         if(me.columns){
             var fields = me.columns.map(column => column.dataIndex);
             me.store = Ext.create('Ext.data.Store',{
+                model:'saas.model.document.stocking',
                 fields:fields,
                 autoLoad: true,
                 pageSize: 11,