Browse Source

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

huangx 7 years ago
parent
commit
6b2be7d800
83 changed files with 880 additions and 347 deletions
  1. 77 79
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/StocktakingServiceImpl.java
  2. 42 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyRspDTO.java
  3. 5 0
      base-servers/account/account-server/pom.xml
  4. 2 1
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/AccountApplication.java
  5. 14 2
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountCenterController.java
  6. 45 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java
  7. 2 1
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountCenterService.java
  8. 37 11
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountCenterServiceImpl.java
  9. 3 1
      base-servers/account/account-server/src/main/resources/application.yml
  10. 2 1
      base-servers/account/account-server/src/main/resources/mapper/AccountCompanyMapper.xml
  11. 35 0
      base-servers/account/account-server/src/test/java/com/usoftchina/saas/account/service/CompanyServiceTest.java
  12. 15 1
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserApi.java
  13. 22 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserSpaceApi.java
  14. 37 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/auth/Signature.java
  15. 11 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/auth/feign/SignatureConstant.java
  16. 30 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/auth/feign/SignatureContract.java
  17. 43 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/auth/feign/SignatureInterceptor.java
  18. 28 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/config/SsoFeignConfig.java
  19. 19 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/dto/SsoCheckMobile.java
  20. 10 1
      base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserApiTest.java
  21. 30 0
      base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserSpaceApiTeest.java
  22. 2 2
      base-servers/auth/sso-api/src/test/resources/application.yml
  23. 1 0
      frontend/saas-portal-web/config/dev.env.js
  24. 1 1
      frontend/saas-portal-web/src/App.vue
  25. 14 7
      frontend/saas-portal-web/src/components/conenter/addgongsi.vue
  26. 55 28
      frontend/saas-portal-web/src/components/conenter/company.vue
  27. 23 8
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  28. 26 8
      frontend/saas-portal-web/src/components/conenter/home.vue
  29. 0 1
      frontend/saas-portal-web/src/main.js
  30. 1 1
      frontend/saas-portal-web/src/router/index.js
  31. 1 0
      frontend/saas-portal-web/src/store/index.js
  32. 0 1
      frontend/saas-portal-web/static/css/gongsi.css
  33. 1 1
      frontend/saas-portal-web/static/css/main.css
  34. 4 4
      frontend/saas-portal-web/static/js/mains.js
  35. 17 6
      frontend/saas-web/app/Application.scss
  36. 1 1
      frontend/saas-web/app/util/FormUtil.js
  37. 1 1
      frontend/saas-web/app/view/core/base/GridPanel.js
  38. 2 2
      frontend/saas-web/app/view/core/form/FormPanelController.js
  39. 6 2
      frontend/saas-web/app/view/core/form/RemoteCombo.js
  40. 1 1
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  41. 4 3
      frontend/saas-web/app/view/core/query/QueryFormPanel.js
  42. 4 0
      frontend/saas-web/app/view/core/query/QueryPanelController.js
  43. 1 1
      frontend/saas-web/app/view/document/bom/BasePanel.js
  44. 3 3
      frontend/saas-web/app/view/document/bom/FormPanel.js
  45. 1 1
      frontend/saas-web/app/view/document/customer/BasePanel.js
  46. 4 4
      frontend/saas-web/app/view/document/customer/FormPanel.js
  47. 71 25
      frontend/saas-web/app/view/document/kind/ChildForm.js
  48. 1 1
      frontend/saas-web/app/view/document/product/BasePanel.js
  49. 3 3
      frontend/saas-web/app/view/document/product/FormPanel.js
  50. 1 1
      frontend/saas-web/app/view/document/vendor/BasePanel.js
  51. 3 3
      frontend/saas-web/app/view/document/vendor/FormPanel.js
  52. 5 5
      frontend/saas-web/app/view/money/fundtransfer/FormPanel.js
  53. 0 1
      frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js
  54. 6 6
      frontend/saas-web/app/view/money/othreceipts/FormPanel.js
  55. 0 1
      frontend/saas-web/app/view/money/othreceipts/QueryPanel.js
  56. 6 6
      frontend/saas-web/app/view/money/othspendings/FormPanel.js
  57. 0 1
      frontend/saas-web/app/view/money/othspendings/QueryPanel.js
  58. 7 7
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  59. 0 1
      frontend/saas-web/app/view/money/payBalance/QueryPanel.js
  60. 7 7
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  61. 0 1
      frontend/saas-web/app/view/money/recBalance/QueryPanel.js
  62. 7 7
      frontend/saas-web/app/view/money/verification/FormPanel.js
  63. 5 5
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js
  64. 0 1
      frontend/saas-web/app/view/purchase/purchase/QueryPanel.js
  65. 5 5
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js
  66. 0 1
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  67. 4 4
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js
  68. 0 1
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js
  69. 8 8
      frontend/saas-web/app/view/sale/sale/FormPanel.js
  70. 0 1
      frontend/saas-web/app/view/sale/sale/QueryPanel.js
  71. 7 7
      frontend/saas-web/app/view/sale/saleIn/FormPanel.js
  72. 0 1
      frontend/saas-web/app/view/sale/saleIn/QueryPanel.js
  73. 7 7
      frontend/saas-web/app/view/sale/saleOut/FormPanel.js
  74. 0 1
      frontend/saas-web/app/view/sale/saleOut/QueryPanel.js
  75. 4 4
      frontend/saas-web/app/view/stock/appropriationInOut/FormPanel.js
  76. 0 1
      frontend/saas-web/app/view/stock/appropriationInOut/QueryPanel.js
  77. 27 23
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  78. 5 5
      frontend/saas-web/app/view/stock/make/FormPanel.js
  79. 0 1
      frontend/saas-web/app/view/stock/make/QueryPanel.js
  80. 4 4
      frontend/saas-web/app/view/stock/otherIn/FormPanel.js
  81. 0 1
      frontend/saas-web/app/view/stock/otherIn/QueryPanel.js
  82. 4 4
      frontend/saas-web/app/view/stock/otherOut/FormPanel.js
  83. 0 1
      frontend/saas-web/app/view/stock/otherOut/QueryPanel.js

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

@@ -87,92 +87,90 @@ public class StocktakingServiceImpl extends CommonBaseServiceImpl<StockTakingMap
         Long companyId = BaseContextHolder.getCompanyId();
         Long userId = BaseContextHolder.getUserId();
         String userName = BaseContextHolder.getUserName();
-
         //生成入库单
-        ProdInOut prodIn = new ProdInOut();
-        String piInno = getMaxnumber(BillCodeSeq.OTHERIN);
-        prodIn.setPi_inoutno(piInno);
-        prodIn.setPi_class(BillCodeSeq.OTHERIN.getName());
-        prodIn.setPi_date(new Date());
-        prodIn.setPi_status("未审核");
-        prodIn.setPi_statuscode("UNAUDITED");
-        prodIn.setCompanyId(companyId);
-        prodIn.setCreateTime(new Date());
-        prodIn.setCreatorId(userId);
-        prodIn.setPi_remark("盘盈单");
-        prodInOutMapper.insertSelective(prodIn);
-        long inid = prodIn.getId();
-        //更新录入人
-        prodInOutMapper.updateCreator(userId,userName,inid);
-
-        Double purcprice = null;
-
         List<StockTaking> inlist  = getMapper().selectStockTakingBycondition("st_num>0",companyId);
-        for (int i=0;i<inlist.size();i++) {
-            StockTaking st = inlist.get(i);
-            ProdIODetail prodInDetail = new ProdIODetail();
-            prodInDetail.setPd_piid(inid);
-            prodInDetail.setPd_inoutno(piInno);
-            prodInDetail.setPd_piclass(BillCodeSeq.OTHERIN.getName());
-            prodInDetail.setPd_pdno(i+1);
-
-            purcprice = getMapper().getPurcpriceByProduct(st.getSt_prodid());
-            prodInDetail.setPd_orderprice(purcprice==null?0:purcprice);
-            prodInDetail.setPd_prodid(st.getSt_prodid());
-            prodInDetail.setPd_prodcode(st.getSt_prodcode());
-            prodInDetail.setPd_inqty(st.getSt_num());
-            //仓库
-            prodInDetail.setPd_whid(st.getSt_whid());
-            prodInDetail.setPd_whcode(st.getSt_whcode());
-            prodInDetail.setPd_whname(st.getSt_whname());
-            prodInDetail.setCompanyId(companyId);
-            prodInDetail.setCreateTime(new Date());
-            prodInDetail.setCreatorId(userId);
-            prodIODetailMapper.insertSelective(prodInDetail);
+        if (inlist.size()>0){
+            ProdInOut prodIn = new ProdInOut();
+            String piInno = getMaxnumber(BillCodeSeq.OTHERIN);
+            prodIn.setPi_inoutno(piInno);
+            prodIn.setPi_class(BillCodeSeq.OTHERIN.getName());
+            prodIn.setPi_date(new Date());
+            prodIn.setPi_status("未审核");
+            prodIn.setPi_statuscode("UNAUDITED");
+            prodIn.setCompanyId(companyId);
+            prodIn.setCreateTime(new Date());
+            prodIn.setCreatorId(userId);
+            prodIn.setPi_remark("盘盈单");
+            prodInOutMapper.insertSelective(prodIn);
+            long inid = prodIn.getId();
+            //更新录入人
+            prodInOutMapper.updateCreator(userId,userName,inid);
+            Double purcprice = null;
+            for (int i=0;i<inlist.size();i++) {
+                StockTaking st = inlist.get(i);
+                ProdIODetail prodInDetail = new ProdIODetail();
+                prodInDetail.setPd_piid(inid);
+                prodInDetail.setPd_inoutno(piInno);
+                prodInDetail.setPd_piclass(BillCodeSeq.OTHERIN.getName());
+                prodInDetail.setPd_pdno(i+1);
+                purcprice = getMapper().getPurcpriceByProduct(st.getSt_prodid());
+                prodInDetail.setPd_orderprice(purcprice==null?0:purcprice);
+                prodInDetail.setPd_prodid(st.getSt_prodid());
+                prodInDetail.setPd_prodcode(st.getSt_prodcode());
+                prodInDetail.setPd_inqty(st.getSt_num());
+                //仓库
+                prodInDetail.setPd_whid(st.getSt_whid());
+                prodInDetail.setPd_whcode(st.getSt_whcode());
+                prodInDetail.setPd_whname(st.getSt_whname());
+                prodInDetail.setCompanyId(companyId);
+                prodInDetail.setCreateTime(new Date());
+                prodInDetail.setCreatorId(userId);
+                prodIODetailMapper.insertSelective(prodInDetail);
+            }
+            DocBaseDTO baseDTOIN = new DocBaseDTO(inid,piInno,"其它入库单");
+            resultMap.put("inData",baseDTOIN);
         }
 
         //生成出库单
-        ProdInOut prodOut = new ProdInOut();
-        String piOutno = getMaxnumber(BillCodeSeq.OTHEROUT);
-        prodOut.setPi_inoutno(piOutno);
-        prodOut.setPi_class(BillCodeSeq.OTHEROUT.getName());
-        prodOut.setPi_date(new Date());
-        prodOut.setPi_status("未审核");
-        prodOut.setPi_statuscode("UNAUDITED");
-        prodOut.setCompanyId(companyId);
-        prodOut.setCreateTime(new Date());
-        prodOut.setCreatorId(userId);
-        prodOut.setPi_remark("盘亏单");
-        prodInOutMapper.insertSelective(prodOut);
-        long outid = prodOut.getId();
-        //更新录入人
-        prodInOutMapper.updateCreator(userId,userName,outid);
-
-
         List<StockTaking> outlist  = getMapper().selectStockTakingBycondition("st_num<0",companyId);
-        for (int i=0;i<outlist.size();i++) {
-            StockTaking st = outlist.get(i);
-            ProdIODetail prodOutDetail = new ProdIODetail();
-            prodOutDetail.setPd_piid(outid);
-            prodOutDetail.setPd_inoutno(piOutno);
-            prodOutDetail.setPd_piclass(BillCodeSeq.OTHERIN.getName());
-            prodOutDetail.setPd_pdno(i+1);
-            prodOutDetail.setPd_prodid(st.getSt_prodid());
-            prodOutDetail.setPd_prodcode(st.getSt_prodcode());
-            prodOutDetail.setPd_outqty(-st.getSt_num());
-            //仓库
-            prodOutDetail.setPd_whid(st.getSt_whid());
-            prodOutDetail.setPd_whcode(st.getSt_whcode());
-            prodOutDetail.setPd_whname(st.getSt_whname());
-            prodOutDetail.setCompanyId(companyId);
-            prodOutDetail.setCreateTime(new Date());
-            prodOutDetail.setCreatorId(userId);
-            prodIODetailMapper.insertSelective(prodOutDetail);
+        if (outlist.size()>0){
+            ProdInOut prodOut = new ProdInOut();
+            String piOutno = getMaxnumber(BillCodeSeq.OTHEROUT);
+            prodOut.setPi_inoutno(piOutno);
+            prodOut.setPi_class(BillCodeSeq.OTHEROUT.getName());
+            prodOut.setPi_date(new Date());
+            prodOut.setPi_status("未审核");
+            prodOut.setPi_statuscode("UNAUDITED");
+            prodOut.setCompanyId(companyId);
+            prodOut.setCreateTime(new Date());
+            prodOut.setCreatorId(userId);
+            prodOut.setPi_remark("盘亏单");
+            prodInOutMapper.insertSelective(prodOut);
+            long outid = prodOut.getId();
+            //更新录入人
+            prodInOutMapper.updateCreator(userId,userName,outid);
+            for (int i=0;i<outlist.size();i++) {
+                StockTaking st = outlist.get(i);
+                ProdIODetail prodOutDetail = new ProdIODetail();
+                prodOutDetail.setPd_piid(outid);
+                prodOutDetail.setPd_inoutno(piOutno);
+                prodOutDetail.setPd_piclass(BillCodeSeq.OTHERIN.getName());
+                prodOutDetail.setPd_pdno(i+1);
+                prodOutDetail.setPd_prodid(st.getSt_prodid());
+                prodOutDetail.setPd_prodcode(st.getSt_prodcode());
+                prodOutDetail.setPd_outqty(-st.getSt_num());
+                //仓库
+                prodOutDetail.setPd_whid(st.getSt_whid());
+                prodOutDetail.setPd_whcode(st.getSt_whcode());
+                prodOutDetail.setPd_whname(st.getSt_whname());
+                prodOutDetail.setCompanyId(companyId);
+                prodOutDetail.setCreateTime(new Date());
+                prodOutDetail.setCreatorId(userId);
+                prodIODetailMapper.insertSelective(prodOutDetail);
+            }
+            DocBaseDTO baseDTOOUT = new DocBaseDTO(outid,piOutno,"其它出库单");
+            resultMap.put("outData",baseDTOOUT);
         }
-        DocBaseDTO baseDTOIN = new DocBaseDTO(inid,piInno,"其它入库单");
-        DocBaseDTO baseDTOOUT = new DocBaseDTO(outid,piOutno,"其它出库单");
-        resultMap.put("inData",baseDTOIN);
-        resultMap.put("outData",baseDTOOUT);
         return resultMap;
     }
 

+ 42 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyRspDTO.java

@@ -14,9 +14,39 @@ public class CompanyRspDTO implements Serializable {
      */
     private String businessCode;
     private String address;
+    /**
+     * 是否是默认企业
+     */
     private boolean default_;
+    /**
+     * 是否开通saas
+     */
     private boolean saas_;
     private String uu;
+    /**
+     * 是否有默认企业
+     */
+    private boolean hasDefaultCompany;
+    /**
+     * 默认企业ID
+     */
+    private Long defaultCompanyId;
+
+    public boolean isHasDefaultCompany() {
+        return hasDefaultCompany;
+    }
+
+    public void setHasDefaultCompany(boolean hasDefaultCompany) {
+        this.hasDefaultCompany = hasDefaultCompany;
+    }
+
+    public Long getDefaultCompanyId() {
+        return defaultCompanyId;
+    }
+
+    public void setDefaultCompanyId(Long defaultCompanyId) {
+        this.defaultCompanyId = defaultCompanyId;
+    }
 
     public String getUu() {
         return uu;
@@ -73,4 +103,16 @@ public class CompanyRspDTO implements Serializable {
     public void setDefault_(boolean default_) {
         this.default_ = default_;
     }
+
+    public CompanyRspDTO(String name, String businessCode, String address, boolean default_, boolean saas_, String uu) {
+        this.name = name;
+        this.businessCode = businessCode;
+        this.address = address;
+        this.default_ = default_;
+        this.saas_ = saas_;
+        this.uu = uu;
+    }
+
+    public CompanyRspDTO() {
+    }
 }

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

@@ -21,6 +21,11 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>account-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>sso-api</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>file-api</artifactId>

+ 2 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/AccountApplication.java

@@ -14,7 +14,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
  */
 @SpringBootApplication
 @EnableEurekaClient
-@EnableFeignClients("com.usoftchina.saas")
+@EnableFeignClients({"com.usoftchina.sso",
+                     "com.usoftchina.saas"})
 @EnableTransactionManagement
 @MapperScan(basePackages = "com.usoftchina.saas.account.mapper")
 @EnableAuthClient

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

@@ -2,9 +2,9 @@ package com.usoftchina.saas.account.controller;
 
 import com.usoftchina.saas.account.dto.BindCompanyDTO;
 import com.usoftchina.saas.account.dto.CompanyAccountDTO;
-import com.usoftchina.saas.account.dto.CompanyListDTO;
 import com.usoftchina.saas.account.service.AccountCenterService;
 import com.usoftchina.saas.base.Result;
+import com.usoftchina.sso.api.SsoUserSpaceApi;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -14,6 +14,8 @@ public class AccountCenterController {
 
     @Autowired
     private AccountCenterService accountCenterService;
+    @Autowired
+    private SsoUserSpaceApi ssoUserSpaceApi;
 
     /**
      * 信息完善界面   保存接口
@@ -27,7 +29,7 @@ public class AccountCenterController {
 
     /**
      * 获取企业信息列表
-     * @param mobile      用户UU号
+     * @param mobile
      * @return
      */
     @GetMapping("/company/list")
@@ -46,4 +48,14 @@ public class AccountCenterController {
         return Result.success();
     }
 
+    /**
+     * 校验企业名称时候已在账户中心注册过
+     * @param spaceName
+     * @return
+     */
+    @GetMapping("/checkSpaceName")
+    public Result checkSpaceName(@RequestParam("spaceName") String spaceName){
+        return Result.success(ssoUserSpaceApi.checkSpaceName(spaceName));
+    }
+
 }

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

@@ -17,6 +17,7 @@ import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.RegexpUtils;
+import com.usoftchina.sso.api.SsoUserApi;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -41,6 +42,9 @@ public class AccountController {
     @Autowired
     private RoleService roleService;
 
+    @Autowired
+    private SsoUserApi ssoUserApi;
+
     /**
      * 注册
      *
@@ -104,6 +108,47 @@ public class AccountController {
         return Result.success();
     }
 
+    /**
+     * SAAS手动添加账户,并默认绑定当前公司
+     *
+     * @param accountCopyDTO
+     * @return
+     */
+    @PostMapping("/register/add")
+    @IgnoreAuth
+    public Result AddAccount(@RequestBody AccountCopyDTO accountCopyDTO) {
+        // 判断是否已注册
+        Account account = accountService.findByUsername(accountCopyDTO.getUsername());
+        if (null != account) {
+            return Result.error(ExceptionCode.USER_NAME_EXIST);
+        }
+        account = accountService.findByMobile(accountCopyDTO.getMobile());
+        if (null != account) {
+            return Result.error(ExceptionCode.USER_MOBILE_EXIST);
+        }
+        account = accountService.findByEmail(accountCopyDTO.getEmail());
+        if (null != account) {
+            return Result.error(ExceptionCode.USER_EMAIL_EXIST);
+        }
+
+        account = BeanMapper.map(accountCopyDTO, Account.class);
+        account.setEnabled(true);
+        accountService.save(account);
+        //绑定企业
+        accountService.bindCompany(account.getId(), BaseContextHolder.getCompanyId());
+        return Result.success();
+    }
+
+    /**
+     * 校验该手机号是否已在账户中心注册
+     * @param mobile
+     * @return
+     */
+    @GetMapping("/checkMobile")
+    public Result checkMobile(@RequestParam("mobile") String mobile){
+        return Result.success(ssoUserApi.checkMobile(mobile));
+    }
+
     /**
      * 修改
      *

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

@@ -6,6 +6,7 @@ import com.usoftchina.saas.account.dto.CompanyRspDTO;
 import com.usoftchina.saas.base.Result;
 
 import java.util.List;
+import java.util.Map;
 
 public interface AccountCenterService {
 
@@ -21,7 +22,7 @@ public interface AccountCenterService {
      * @param mobile
      * @return
      */
-    List<CompanyRspDTO> getCompanyList(String mobile);
+    Map<String, Object> getCompanyList(String mobile);
 
     /**
      * 更新默认企业

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

@@ -11,6 +11,9 @@ 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.dto.SsoUserSpace;
+import com.usoftchina.sso.dto.SsoUserSpaceList;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -19,7 +22,9 @@ import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class AccountCenterServiceImpl implements AccountCenterService {
@@ -29,6 +34,8 @@ public class AccountCenterServiceImpl implements AccountCenterService {
     @Autowired
     private AccountService accountService;
     @Autowired
+    private SsoUserApi ssoUserApi;
+    @Autowired
     private AccountCompanyMapper accountCompanyMapper;
 
     private final String ACCOUNTCNETER_URL_DEV = "http://192.168.253.12:32323";
@@ -89,8 +96,11 @@ public class AccountCenterServiceImpl implements AccountCenterService {
     }
 
     @Override
-    public List<CompanyRspDTO> getCompanyList(String mobile) {
-        List<CompanyRspDTO> result = new ArrayList<CompanyRspDTO>();
+    public Map<String, Object> getCompanyList(String mobile) {
+        Map<String, Object> resultMap = new HashMap<String, Object>();
+        List<CompanyRspDTO> resultList = new ArrayList<CompanyRspDTO>();
+        resultMap.put("hasDefaultCompany", false);
+        resultMap.put("defaultCompanyId", -1);
         //1、获取本SAAS系统的企业信息
         List<CompanyRspDTO> companyRspDTOList = accountCompanyMapper.getCompanyListByAccountMobile(mobile);
         //如果只有一条记录,将该企业设置为默认企业
@@ -99,21 +109,37 @@ public class AccountCenterServiceImpl implements AccountCenterService {
             Long companyId = companyRspDTOList.get(0).getId();
             accountCompanyMapper.bindDefault(accountId, companyId);
         }
-        result.addAll(companyRspDTOList);
+        resultList.addAll(companyRspDTOList);
         //2、优软云返回的企业信息
-        //TODO 通过接口获取优软云的企业信息
+        SsoUserSpaceList ssoUserSpaceList = ssoUserApi.getUserSpacesByMobile(mobile);
+        List<SsoUserSpace> ssoUserSpaces = ssoUserSpaceList.getSpaces();
 
         //3、去重复
-        /*for (CompanyRspDTO companyRspDTO : companyRspDTOList){
-            for (CompanyBaseDTO companyBaseDTO : companyBaseDTOList){
-                if (companyRspDTO.getName().equals(companyBaseDTO.getName())){
-                    companyBaseDTOList.remove(companyRspDTO);
+        for (CompanyRspDTO companyRspDTO : companyRspDTOList) {
+            for (SsoUserSpace ssoUserSpace : ssoUserSpaces) {
+                if (companyRspDTO.getName().equals(ssoUserSpace.getSpaceName())){
+                    ssoUserSpaces.remove(ssoUserSpace);
                 }
             }
+            if (companyRspDTO.isDefault_()){
+                resultMap.put("hasDefaultCompany", true);
+                resultMap.put("defaultCompanyId", companyRspDTO.getId());
+            }
         }
-        List<CompanyRspDTO> companyBaseRspDTOList = BeanMapper.mapList(companyBaseDTOList, CompanyRspDTO.class);
-        result.addAll(companyBaseRspDTOList);*/
-        return result;
+        //构造返回数据
+        for (SsoUserSpace ssoUserSpace : ssoUserSpaces){
+            CompanyRspDTO companyRspDTO = new CompanyRspDTO(
+                    ssoUserSpace.getSpaceName(),
+                    ssoUserSpace.getBusinessCode(),
+                    ssoUserSpace.getRegAddress(),
+                    false,
+                    false,
+                    ssoUserSpace.getSpaceUU().toString()
+            );
+            resultList.add(companyRspDTO);
+        }
+        resultMap.put("spaces", resultList);
+        return resultMap;
     }
 
     @Override

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

@@ -80,4 +80,6 @@ mybatis:
   type-aliases-package: com.usoftchina.saas.account.po,com.usoftchina.saas.account.vo
   mapper-locations: classpath:mapper/*.xml
 auth:
-  public-key: auth/pub.key
+  public-key: auth/pub.key
+sso:
+  base-url: http://192.168.253.12:32323

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

@@ -17,7 +17,8 @@
         SELECT cmp.id,cmp.name,cmp.uu,cmp.business_code businessCode,cmp.address,accmp.is_default default_,'1' saas_ 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
-        where ac.mobile = #{mobile};
+        where ac.mobile = #{mobile}
+        order by is_default desc
     </select>
     <update id="unBindDefault" >
         UPDATE AC_ACCOUNT_COMPANY SET IS_DEFAULT = 0 WHERE ACCOUNT_ID = #{accountId}

+ 35 - 0
base-servers/account/account-server/src/test/java/com/usoftchina/saas/account/service/CompanyServiceTest.java

@@ -1,12 +1,24 @@
 package com.usoftchina.saas.account.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.usoftchina.saas.account.po.Company;
+import com.usoftchina.saas.utils.StringUtils;
+import com.usoftchina.saas.utils.http.HttpUtil;
 import org.junit.*;
 import org.junit.runner.RunWith;
 import org.junit.runners.MethodSorters;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
 import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * @author yingp
@@ -41,4 +53,27 @@ public class CompanyServiceTest {
         boolean removed = companyService.removeByPrimaryKey(company.getId());
         Assert.assertTrue(removed);
     }
+
+    @Test
+    public void testC_postToAccountCenter(){
+        String url = "/sso/userspace/register/admin";
+        RestTemplate restTemplate = new RestTemplate();
+        MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<>();
+        requestEntity.add("spaceName", "测试企业001");
+        requestEntity.add("businessCode", StringUtils.createBusinessCode());
+        requestEntity.add("userUU", "1000027260");
+        String result = restTemplate.postForObject("http://192.168.253.12:32323" + url, requestEntity, String.class);
+        System.out.println(result);
+    }
+
+    @Test
+    public void TestE_getCompanyByMobile() throws Exception {
+        String url = "http://10.1.51.83:8081/api/userspace/erp/info";
+        Map<String, String> map = new HashMap<String, String>();
+        map.put("_by", "mobile");
+        map.put("mobile", "18702604854");
+        HttpUtil.Response response = HttpUtil.sendGetRequest(url, map, true, "b4uzn6vf1db06qmn");
+        JSONObject json = JSONObject.parseObject(response.getResponseText());
+        System.out.println(json.get("content"));
+    }
 }

+ 15 - 1
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserApi.java

@@ -1,5 +1,8 @@
 package com.usoftchina.sso.api;
 
+import com.usoftchina.sso.auth.Signature;
+import com.usoftchina.sso.config.SsoFeignConfig;
+import com.usoftchina.sso.dto.SsoCheckMobile;
 import com.usoftchina.sso.dto.SsoResult;
 import com.usoftchina.sso.dto.SsoUser;
 import com.usoftchina.sso.dto.SsoUserSpaceList;
@@ -13,7 +16,8 @@ import org.springframework.web.bind.annotation.RequestParam;
  * @author yingp
  * @date 2018/11/23
  */
-@FeignClient(url = "${sso.base-url}", name = "sso-server", fallback = SsoUserApi.DefaultFallback.class)
+@FeignClient(url = "${sso.base-url}", name = "sso-server", configuration = SsoFeignConfig.class,
+        fallback = SsoUserApi.DefaultFallback.class)
 @RequestMapping("/api/user")
 public interface SsoUserApi {
 
@@ -33,9 +37,13 @@ public interface SsoUserApi {
      * @return
      */
     @GetMapping("/getSpace")
+    @Signature
     @Deprecated
     SsoUserSpaceList getUserSpacesByMobile(@RequestParam("mobile") String mobile);
 
+    @GetMapping("/checkMobile")
+    SsoCheckMobile checkMobile(@RequestParam("mobile") String mobile);
+
     @Component
     class DefaultFallback implements SsoUserApi{
         @Override
@@ -47,5 +55,11 @@ public interface SsoUserApi {
         public SsoUserSpaceList getUserSpacesByMobile(String mobile) {
             return null;
         }
+
+        @Override
+        public SsoCheckMobile checkMobile(String mobile) {
+            return null;
+        }
+
     }
 }

+ 22 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserSpaceApi.java

@@ -1,8 +1,30 @@
 package com.usoftchina.sso.api;
 
+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.RequestParam;
+
 /**
  * @author yingp
  * @date 2018/11/23
  */
+@FeignClient(url = "${sso.base-url}", name = "sso-server", fallback = SsoUserApi.DefaultFallback.class)
+@RequestMapping("/api/userspace")
 public interface SsoUserSpaceApi {
+
+    @GetMapping("/checkSpaceName")
+    SsoResult checkSpaceName(@RequestParam("spacename") String spacename);
+
+    @Component
+    class DefaultFallback implements SsoUserSpaceApi{
+
+        @Override
+        public SsoResult checkSpaceName(String spaceName) {
+            return null;
+        }
+    }
+
 }

+ 37 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/auth/Signature.java

@@ -0,0 +1,37 @@
+package com.usoftchina.sso.auth;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 自动添加签名串
+ *
+ * @author yingp
+ * @date 2018/11/23
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Signature {
+    /**
+     * 签名参数
+     *
+     * @return
+     */
+    String value() default "_signature";
+
+    /**
+     * 添加时间戳参数
+     *
+     * @return
+     */
+    boolean withTimestamp() default true;
+
+    /**
+     * 时间戳参数
+     *
+     * @return
+     */
+    String timestampParam() default "_timestamp";
+}

+ 11 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/auth/feign/SignatureConstant.java

@@ -0,0 +1,11 @@
+package com.usoftchina.sso.auth.feign;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+public class SignatureConstant {
+    public final static String WITH_TIMESTAMP_HEADER = "X-With-Timestamp";
+
+    public final static String WITH_SIGNATURE_HEADER = "X-With-Signature";
+}

+ 30 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/auth/feign/SignatureContract.java

@@ -0,0 +1,30 @@
+package com.usoftchina.sso.auth.feign;
+
+import com.usoftchina.sso.auth.Signature;
+import feign.MethodMetadata;
+import org.springframework.cloud.openfeign.support.SpringMvcContract;
+import org.springframework.core.annotation.AnnotatedElementUtils;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+
+import static com.usoftchina.sso.auth.feign.SignatureConstant.*;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+public class SignatureContract extends SpringMvcContract{
+
+    @Override
+    protected void processAnnotationOnMethod(MethodMetadata data, Annotation methodAnnotation, Method method) {
+        super.processAnnotationOnMethod(data, methodAnnotation, method);
+        if (Signature.class.isInstance(methodAnnotation) || methodAnnotation.annotationType().isAnnotationPresent(Signature.class)) {
+            Signature signature = AnnotatedElementUtils.findMergedAnnotation(method, Signature.class);
+            if (signature.withTimestamp()) {
+                data.template().header(WITH_TIMESTAMP_HEADER, signature.timestampParam());
+            }
+            data.template().header(WITH_SIGNATURE_HEADER, signature.value());
+        }
+    }
+}

+ 43 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/auth/feign/SignatureInterceptor.java

@@ -0,0 +1,43 @@
+package com.usoftchina.sso.auth.feign;
+
+import com.usoftchina.saas.utils.http.HmacUtils;
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Collection;
+import java.util.Map;
+
+import static com.usoftchina.sso.auth.feign.SignatureConstant.*;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+public class SignatureInterceptor implements RequestInterceptor{
+
+    private Logger logger = LoggerFactory.getLogger(SignatureInterceptor.class);
+
+    private final String baseUrl;
+
+    public SignatureInterceptor(String baseUrl) {
+        this.baseUrl = baseUrl;
+    }
+
+    @Override
+    public void apply(RequestTemplate requestTemplate) {
+        Map<String, Collection<String>> headers = requestTemplate.headers();
+        if (headers.containsKey(WITH_TIMESTAMP_HEADER)) {
+            requestTemplate.query(headers.get(WITH_TIMESTAMP_HEADER).iterator().next(),
+                    String.valueOf(System.currentTimeMillis()));
+        }
+        if (headers.containsKey(WITH_SIGNATURE_HEADER)) {
+            String url = baseUrl + requestTemplate.url() + requestTemplate.queryLine();
+            requestTemplate.query(headers.get(WITH_SIGNATURE_HEADER).iterator().next(),
+                    HmacUtils.encode(url));
+            logger.debug("origin url: {}\nsigned url: {}", url,
+                    baseUrl + requestTemplate.url() + requestTemplate.queryLine());
+        }
+    }
+}

+ 28 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/config/SsoFeignConfig.java

@@ -0,0 +1,28 @@
+package com.usoftchina.sso.config;
+
+import com.usoftchina.sso.auth.feign.SignatureContract;
+import com.usoftchina.sso.auth.feign.SignatureInterceptor;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+@Configuration
+public class SsoFeignConfig {
+
+    @Value("${sso.base-url}")
+    private String baseUrl;
+
+    @Bean
+    public SignatureContract signatureContract() {
+        return new SignatureContract();
+    }
+
+    @Bean
+    public SignatureInterceptor signatureInterceptor() {
+        return new SignatureInterceptor(baseUrl);
+    }
+}

+ 19 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/dto/SsoCheckMobile.java

@@ -0,0 +1,19 @@
+package com.usoftchina.sso.dto;
+
+import java.io.Serializable;
+
+/**
+ * 校验手机号是否已经注册
+ */
+public class SsoCheckMobile implements Serializable {
+
+    private boolean hasRegister;
+
+    public boolean isHasRegister() {
+        return hasRegister;
+    }
+
+    public void setHasRegister(boolean hasRegister) {
+        this.hasRegister = hasRegister;
+    }
+}

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

@@ -2,6 +2,7 @@ package com.usoftchina.sso.test;
 
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.sso.api.SsoUserApi;
+import com.usoftchina.sso.dto.SsoCheckMobile;
 import com.usoftchina.sso.dto.SsoResult;
 import com.usoftchina.sso.dto.SsoUser;
 import com.usoftchina.sso.dto.SsoUserSpaceList;
@@ -12,6 +13,7 @@ import org.junit.runners.MethodSorters;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * @author yingp
@@ -27,7 +29,7 @@ public class SsoUserApiTest {
 
     final static long userUU = 200040149;
 
-    final static String mobile = "13798490565";
+    final static String mobile = "18595633323";
 
     @Test
     public void testA_getUserByUu() {
@@ -44,4 +46,11 @@ public class SsoUserApiTest {
             list.getSpaces().forEach(space -> System.out.println(space.getSpaceName()));
         }
     }
+
+    @Test
+    public void testC_checkMobile(){
+        SsoCheckMobile checked = ssoUserApi.checkMobile(mobile);
+        System.out.println(checked);
+    }
+
 }

+ 30 - 0
base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserSpaceApiTeest.java

@@ -0,0 +1,30 @@
+package com.usoftchina.sso.test;
+
+import com.usoftchina.sso.api.SsoUserSpaceApi;
+import com.usoftchina.sso.dto.SsoResult;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author  chenw
+ * @date 2018/11/23
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class SsoUserSpaceApiTeest {
+
+    @Autowired
+    private SsoUserSpaceApi ssoUserSpaceApi;
+
+    @Test
+    public void testA_checkSpaceName(){
+        SsoResult result = ssoUserSpaceApi.checkSpaceName("测试公司08111550");
+        System.out.println(result);
+    }
+}

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

@@ -1,3 +1,3 @@
 sso:
-  base-url: http://192.168.253.12:32323
-#  base-url: https://sso.ubtob.com
+#  base-url: http://192.168.253.12:32323
+  base-url: https://sso.ubtob.com

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

@@ -8,6 +8,7 @@ module.exports = merge(prodEnv, {
     // 前端地址
     web: '"http://192.168.0.181"',
     // 后端接口网关
+    // api: '"http://192.168.253.31:8560"',
     api: '"http://192.168.0.181:8560"',
     // 账户中心接口
     sso: '"http://192.168.253.12:32323"'

+ 1 - 1
frontend/saas-portal-web/src/App.vue

@@ -13,7 +13,7 @@ export default {
   components: {
       // Headers,
       footers
-  }
+  },
 }
 </script>
 

+ 14 - 7
frontend/saas-portal-web/src/components/conenter/addgongsi.vue

@@ -20,9 +20,9 @@
                         <li>
                             <span class="qy-biaoti">所属行业</span>
                             <select ref="qyindustry" style="width:71%" name="selectAge" id="selectAge">   
-                                <option value="飞飞公司">飞飞公司</option>   
-                                <option value="飞飞公司">飞飞公司</option>   
-                                <option value="飞飞公司">飞飞公司</option>   
+                                <option value="贸易类">贸易类</option>   
+                                <option value="制造类">制造类</option>   
+                                <option value="其他">其他</option>   
                             </select>
                         </li>
                         <li style="height:60px;">
@@ -93,11 +93,18 @@ import VDistpicker from 'v-distpicker'
                     this.$refs.qyno.innerHTML = '企业名不能为空';
                 } else {
                     this.$refs.qyno.innerHTML = '';
-                    this.$ajax.get("http://192.168.253.12:32323/"+`?spaceName=${qyname}`)
+                    let token = this.mytoken.token;
+                    this.$ajax({
+                        url: this.$url.api+"/api/account/accountCenter/checkSpaceName"+`?spaceName=${qyname}`,
+                        method :'get',
+                        headers: {
+                            "Authorization":token
+                        }
+                    })
                     .then(res=>{
-                        console.log(res);
-                        this.qymingzi = on;
-                        console.log(this.qymingzi)
+                        // console.log(res);
+                        // this.qymingzi = on;
+                        // console.log(this.qymingzi)
                     })
                     .catch(err=>{
                         console.log(err);

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

@@ -2,11 +2,11 @@
   <div>
     <iframe hidden :src="setTokenPage"></iframe>
     <!-- 遮罩 -->
-    <div class="zhezhao"></div>
+    <div class="zhezhao" v-if="issetDefault || isOpensaas"></div>
     <!-- 设置默认弹窗 -->
-    <div class="tanchuang szmoren">
+    <div class="tanchuang szmoren" v-if="issetDefault">
       <div class="over"><img @click="guanbitc" class="right xs" src="/static/img/qiye/chahao.png" alt=""></div>
-      <div v-if="moren">
+      <div v-if="isDefault">
         <div class="tc-text tc-queren"><span>是否确认设为默认企业?</span></div>
         <div class="tc-anniu">
           <button @click="setDefault">确认</button>
@@ -19,7 +19,7 @@
       </div>
     </div>
     <!-- 开通sass服务弹窗 -->
-    <div class="tanchuang ktsass">
+    <div class="tanchuang ktsass" v-if="isOpensaas">
       <div class="over"><img @click="guanbitc" class="right xs" src="/static/img/qiye/chahao.png" alt=""></div>
       <div v-if="ktsass">
         <div class="tc-text tc-queren"><span>是否确认开通saas服务?</span></div>
@@ -46,7 +46,7 @@
       </div>
     </div>
     <!-- 开通10个不能继续开通 -->
-    <div class="tanchuang nokaitong" style="display:none">
+    <div class="tanchuang nokaitong" style="display:none" 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>
@@ -57,7 +57,7 @@
       </div>
     </div>
 
-        <div class="gs-qiyebox">
+        <div class="gs-qiyebox" ref="qiyebox">
             <!-- 点击查看企业详情 -->
             <div v-for="(d , i) in arr " :key="i" class="gs-xiangqing xs">
                 <div class="left gs-xqleft" @click= "getEnterpriseInfo(d)">
@@ -93,10 +93,14 @@
     export default {
         data(){
             return {
+                issetDefault: false,//设置默认
+                isOpensaas: false,//开通saas弹窗
+                isNoopen: false,//开通10个不能继续开通
                 index:0,
-                ktsass: true,//开通sass
-                moren: true,//开通默认
+                ktsass: true,//确认开通saas
+                isDefault: true,//开通默认
                 comdata: this.$store.state.data,//登录成功后的本地数据
+                isAutoLogin: this.$store.state.isAutoLogin,
                 mytoken: JSON.parse(localStorage.getItem('app-state-session')),//本地储存的用户信息
                 arr: []//企业列表信息
             }
@@ -106,15 +110,19 @@
                 return this.$url.web + '/set-token.html'
             }
         },
+        watch:{
+            arr:function(){
+                this.$nextTick(function(){
+                    this.boxheight();
+                })
+            }
+        },
         mounted(){
-            this.boxheight();
-            // console.log("我是子路由的"+this.comdata)
             let mytoken = JSON.parse(localStorage.getItem('app-state-session'));
             let token = String(mytoken.token);
             // console.log(mytoken.account)
-            console.log(this.$url.api)
             this.$ajax({
-                    url: "/api/account/accountCenter/company/list",
+                    url: this.$url.api+"/api/account/accountCenter/company/list",
                     method: 'get',
                     params: {
                         mobile: mytoken.account.mobile
@@ -125,26 +133,36 @@
                     }
                 })
                 .then(res=>{
-                    this.arr = res.data.data
+                    this.arr = res.data.data.spaces;
+                    let hasCompany = res.data.data.hasDefaultCompany;
+                    let companyId = res.data.data.defaultCompanyId;
+                    if (this.isAutoLogin) {
+                        if (hasCompany) {
+                            this.selectServe(companyId)
+                        }
+                        this.isAutoLogin = false
+                    }
                     // console.log(res.data.data)
                 })
                 .catch(err=>{
                     console.log("请求失败",err)
                 })
+            
         },
         methods: {
             //设置默认弹窗
             showDefaultWin(i){
                 this.index = i;
-                $(".szmoren").css("display","block");
-                $(".zhezhao").css("display","block");
+                this.issetDefault = true;
+                // $(".szmoren").css("display","block");
+                // $(".zhezhao").css("display","block");
             },
             //确认默认
             setDefault(){
                 let i = this.index;
                 let token = this.mytoken.token;
                 this.$ajax({
-                    url: '/api/account/accountCenter/bind/defaultCompany',
+                    url: this.$url.api+'/api/account/accountCenter/bind/defaultCompany',
                     method: 'post',
                     data:{
                         companyId: this.arr[i].id,
@@ -157,7 +175,7 @@
                 })
                 .then(res=>{
                     // console.log('请求成功',res);
-                    this.moren = false;
+                    this.isDefault = false;
                 })
                 .catch(err=>{
                     console.log('请求失败',err);
@@ -169,7 +187,7 @@
                 let token = this.mytoken.token;
                 const frame = window.frames[window.frames.length - 1];
                 this.$ajax({
-                    url: '/api/auth/switch/company?companyId='+id,//http://192.168.253.31:8560
+                    url: this.$url.api+'/api/auth/switch/company?companyId='+id,//http://192.168.253.31:8560
                     method :'get',
                     headers: {
                         "Authorization":token
@@ -182,7 +200,7 @@
                     session.span = session.timestamp - new Date().getTime();
                     session.token=mytoken;
                     frame.postMessage(JSON.stringify(session), '*');
-                    window.location.href = me.$url.web
+                    window.location.href = this.$url.web
                 })
                 .catch(err=>{
                     console.log('请求失败',err)
@@ -191,8 +209,9 @@
             },
             //开通sass
             showOpenServeWin(){
-                $(".ktsass").css('display','block');
-                $(".zhezhao").css("display","block");
+                this.isOpensaas = true;
+                // $(".ktsass").css('display','block');
+                // $(".zhezhao").css("display","block");
                 this.ktsass = true;
             },
             confirmSaas(){//确认sass
@@ -200,8 +219,9 @@
             },
             //进入服务
             showServeWin(){
-                $(".ktsass").css('display','none');
-                $(".zhezhao").css("display","none");
+                this.isOpensaas = false
+                // $(".ktsass").css('display','none');
+                // $(".zhezhao").css("display","none");
             },
             //查看企业详情
             getEnterpriseInfo(d){
@@ -214,13 +234,17 @@
             },
             //关闭弹窗
             guanbitc(){
-                $(".tanchuang").css("display","none");
-                $(".zhezhao").css("display","none");
+                this.issetDefault = false;
+                this.isOpensaas = false
+                // $(".tanchuang").css("display","none");
+                // $(".zhezhao").css("display","none");
             },
             //没有内容也要有一定的高度
             boxheight(){
-                let H = $(".gs-qiyebox").height();
-                if (H <= 500) {
+                let H = this.$refs.qiyebox.offsetHeight;
+                // let H = $(".gs-qiyebox").height();
+                console.log(H)
+                if (H < 300) {
                     $(".gs-qiyebox").css("height",'500px')
                 } else {
                     $(".gs-qiyebox").css("height",'')
@@ -232,6 +256,9 @@
 
 <style scoped>
 .zhezhao {
-    display: none;
+    /* display: none */
+}
+.tanchuang {
+    /* display: none */
 }
 </style>

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

@@ -1,6 +1,7 @@
 <template>
     <div class="div">
-        <div id="navigation1" class="navbar-inverse navbar-fixed-top animated-header">
+        <iframe hidden :src="setTokenPage"></iframe>
+        <div id="navigation" class="navbar-inverse navbar-fixed-top animated-header">
         <div class="container">
             <div class="navbar-header">
                 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
@@ -17,11 +18,14 @@
             </div>
             <div class="collapse navbar-collapse navbar-right" role="navigation">
                 <ul id="nav" class="nav navbar-nav menu">
-                    <li><router-link to="/home"><a href="#"><span>首页</span></a></router-link></li>
+                    <li><router-link to="/home"><a href="#"><span style="color: white">首页</span></a></router-link></li>
                     <li><a href="https://uas.usoftchina.com/about" target="_blank"><span>关于我们</span></a></li>
                     <li>
-                        <a href="#"><span class="">{{mytoken.realname}}</span></a>
-                        <a href=""><span class="">退出</span></a>
+                        <span style="color:#fff;font-size: 13px;">
+                            <img style="width: 25px;" src="/static/img/assets/denglu3x.png" alt="">
+                            {{mytoken.realname}}
+                        </span>
+                        <a href=""><span @click="loginout" class="">【退出】</span></a>
                     </li>
                 </ul>
             </div>
@@ -100,6 +104,7 @@
 </template>
 
 <script>
+import Session from '@/utils/session'
     export default {
         data(){
             return{
@@ -110,12 +115,11 @@
                 tab: [
                     {name: '企业信息'},
                     {name: '个人信息'},
-                    {name: '安全信息'},
+                    // {name: '安全信息'},
                     ],
             }
         },
         mounted(){
-            // console.log("我是父路由的"+this.mydata);
             // console.log(this.mydata)
         },
         components: {
@@ -125,11 +129,22 @@
             // tab切换
             qiehuan(index){
                 this.nowindex = index;
-            }, 
+            },
+            //退出
+            loginout(){
+                const frame = window.frames[window.frames.length - 1]
+                frame.postMessage('', '*')
+                Session.remove();
+                this.$router.push({name:'name',});
+            } 
         },
     }
 </script>
 
 <style scoped>
-    /* @import '../../../static/css/gongsi'; */
+.navbar-inverse {
+    /* background-color: rgba(0, 0, 0, 0.77);
+    height: 70px;
+    line-height: 70px; */
+}
 </style>

+ 26 - 8
frontend/saas-portal-web/src/components/conenter/home.vue

@@ -1,6 +1,6 @@
 <template>
     <div>
-		<div id="navigation" class="navbar-inverse navbar-fixed-top animated-header" style="padding: 3px;">
+		<div id="navigation" class="navbar-inverse navbar-fixed-top animated-header">
         <div class="container">
             <div class="navbar-header">
                 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
@@ -19,13 +19,13 @@
           <ul id="nav" class="nav navbar-nav menu">
             <li><a href="#"><span>首页</span></a></li>
             <li @click="home">
-              <a href="#"><span>特色</span></a>
+              <a href="#feature"><span>特色</span></a>
               <!-- <router-link to="/enterprise"><a href="#"><span>特色</span></a></router-link> -->
             </li>
             <li><a href="#service"><span>功能</span></a></li>
             <li><a href="#prototype"><span>帮助中心</span></a></li>
-            <li><a href="#prototype"><span>联系我们</span></a></li>
-            <li class="login" v-if="!account">
+            <li><a href="https://uas.usoftchina.com/about" target="_blank"><span>关于我们</span></a></li>
+            <li class="login" v-if="!account" style="margin-left: 20px;">
               <span @click="login"><img src="/static/img/assets/denglu3x.png" alt="">登录  &nbsp;</span>
               <span @click="register"><img src="/static/img/assets/zhuce3x.png" alt="">注册</span>
             </li>
@@ -34,9 +34,8 @@
 								<img src="/static/img/assets/denglu3x.png" alt="">
 								<span id="user-info">{{account.realname || account.username}}</span>
 							</span>
-              <span>退出</span>    |
-              <router-link to="/enterprise"><a href="#"><span>账户管理</span></a></router-link>
-              <!-- <a href="#">账户管理</a> -->
+              <span @click="loginout">【退出】</span>    |
+              <router-link to="/enterprise"><a href="#"><span style="color: white">账户管理</span></a></router-link>
             </li>
           </ul>
         </div>
@@ -44,7 +43,7 @@
         
     </div>
 
-
+    <iframe hidden :src="setTokenPage"></iframe>
     <main class="site-content" role="main">
       <!-- 遮罩 -->
       <div class="zhezhao" v-if="isLogin || isRegister || isexperience"></div>
@@ -57,6 +56,10 @@
         <iframe hidden :src="setTokenPage"></iframe>
       </div>
       <div class="tiyan" v-if="isexperience">
+        <div><span>欢迎你访问u企云服</span></div>
+        <div>
+          <p>1.</p>
+        </div>
         我是体验
         <img @click="Closeexperience" class="tc-on shut"
                src="/static/img/qiye/chahao.png" alt="">
@@ -332,6 +335,7 @@
       this.clientId = Math.random().toString(36).substr(2)
       // 从本地加载已经登录的信息
       this.account = Session.getAccount()
+      console.log(this.$store.state.isAutoLogin)
     },
     computed: {
       setTokenPage() {
@@ -366,6 +370,7 @@
             if (!account.companyId) {
               // 添加企业
               me.$router.push({path: '/enterprise', query: {mydata: account}})
+              me.$store.state.isAutoLogin = true;
             } else {
               // 跳转应用页面
               window.location.href = me.$url.web
@@ -385,6 +390,13 @@
         this.isRegister = true
         this.listenOnCallback()
       },
+      //退出
+      loginout(){
+        const frame = window.frames[window.frames.length - 1]
+        frame.postMessage('', '*')
+        Session.remove()
+        this.$router.go(0); 
+      },
       // 关闭窗口
       closeModal() {
         const me = this
@@ -423,4 +435,10 @@
   z-index: 10001;
   background: white;
 }
+.navbar-inverse {
+  /* padding: 3px; */
+  padding: 0px;
+  /* height: 70px;
+  line-height: 70px; */
+}
 </style>

+ 0 - 1
frontend/saas-portal-web/src/main.js

@@ -12,7 +12,6 @@ Vue.config.productionTip = false
 
 // 注入url配置
 Vue.prototype.$url = process.env.BASE_URL
-Axios.defaults.baseURL = 'http://192.168.253.31:8560'
 /* eslint-disable no-new */
 new Vue({
   el: '#app',

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

@@ -16,7 +16,7 @@ export default new Router({
       component: Home
     },
     {
-      path: '/',
+      path: '*',
       redirect:'/home'
     },
     {

+ 1 - 0
frontend/saas-portal-web/src/store/index.js

@@ -5,6 +5,7 @@ Vue.use(Vuex)
 export default new Vuex.Store({
     state:{
         data: [],
+        isAutoLogin: ''
     },
     mutations:{
          setId(state ,  id) {

+ 0 - 1
frontend/saas-portal-web/static/css/gongsi.css

@@ -24,7 +24,6 @@
 }
 /* 弹窗 -----------------------------------------------*/
 .tanchuang {
-    display: none;
     background-image: url('../img/qiye/tanchuang.png');
     width: 340px;
     height: 214px;

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

@@ -287,7 +287,7 @@ main > section {
 }
 .login > span:hover,.profile > span:hover{
     cursor:pointer;
-    color: #0aa6bd;
+    /* color: #0aa6bd; */
 }
 .my-label {
     float: left;

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

@@ -123,7 +123,7 @@ $(document).ready(function(){
             $("#navigation").removeClass("animated-header");
         } else {
             $(".navbar-brand a").css("color","inherit");
-            // $("#navigation").addClass("animated-header");
+            $("#navigation").addClass("animated-header");
         }
     });
 
@@ -136,9 +136,9 @@ $(document).ready(function(){
 
     $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
 
-    // $(window).resize(function(){'use strict',
-    //     $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
-    // });
+    $(window).resize(function(){'use strict',
+        $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
+    });
 	
 	
 	

+ 17 - 6
frontend/saas-web/app/Application.scss

@@ -99,13 +99,14 @@ body.launching {
 // toolbar button
 .x-btn-default-toolbar-small {
   color: #fff;
-  background-color: #35BAF6;
+  background-color: #F8FCFF;
   border-color: #35BAF6;
+  border-radius: 2px;
   min-width: 86px;
   transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
 
   .x-btn-inner-default-toolbar-small {
-    color: #FFFFFF;
+    color: #34BAF6 ;
   }
 }
 
@@ -131,6 +132,16 @@ body.launching {
   opacity: 0.72;
 }
 
+.x-btn-over{
+  .x-btn-wrap{
+    .x-btn-button{
+      .x-btn-inner{
+        color:#fff !important;
+      }
+    }
+  }
+}
+
 .x-keyboard-mode .x-btn-focus.x-btn-default-toolbar-small {
   background: #34BAF6;
   opacity: 0.72;
@@ -141,7 +152,7 @@ body.launching {
 }
 
 .x-btn-wrap-default-toolbar-small.x-btn-arrow-right:after {
-  color: #FFFFFF;
+  color: #79d3dc;
 }
 
 .x-btn.x-btn-disabled.x-btn-default-toolbar-small {
@@ -178,15 +189,15 @@ body.launching {
 .x-formpanel-btn-white {
     border: 1px solid #c1c1c1 !important;
     //border-radius: 2px;
-    box-shadow: 0 1px 1px rgba(0,0,0,.15);
+    //box-shadow: 0 1px 1px rgba(0,0,0,.15);
     /*background: #fff;
     background: -moz-linear-gradient(top,#fff,#f4f4f4);
     background: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f4f4f4));
     background: -o-linear-gradient(top,#fff,#f4f4f4);
     background: -ms-linear-gradient(top,#fff 0,#f4f4f4 100%);
     background: linear-gradient(top,#fff,#f4f4f4); */
-    border-color: #fff;
-    background: linear-gradient(to bottom,#fff,#f4f4f4 100%) !important;
+    // border-color: #fff;
+    // background: linear-gradient(to bottom,#fff,#f4f4f4 100%) !important;
     .x-btn-inner-default-toolbar-small{
       color: #555;
   }

+ 1 - 1
frontend/saas-web/app/util/FormUtil.js

@@ -200,7 +200,7 @@ Ext.define('saas.util.FormUtil', {
             var me = this;
             form.setLoading(true);
             if(form.initId && form.initId!=0) {
-                var url = form._readUrl + form.initId;
+                var url = form._readUrl + '/' + form.initId;
                 saas.util.BaseUtil.request({url })
                 .then(function(res) {
                     form.setLoading(false);

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

@@ -252,7 +252,7 @@ Ext.define('saas.view.core.base.GridPanel', {
                     .then(function(yes) {
                         if(yes == 'yes') {
                             saas.util.BaseUtil.request({
-                                url: form._deleteUrl+id,
+                                url: form._deleteUrl+'/'+id,
                                 method: 'POST',
                             })
                             .then(function(localJson) {

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

@@ -87,7 +87,7 @@ Ext.define('saas.view.core.form.FormPanelController', {
             saas.util.BaseUtil.deleteWarn(form._deleteMsg,function(btn){
                 if(btn == 'yes'){
                     saas.util.BaseUtil.request({
-                        url: form._deleteUrl+id,
+                        url: form._deleteUrl+'/'+id,
                         method: 'POST',
                     })
                     .then(function(localJson) {
@@ -299,7 +299,7 @@ Ext.define('saas.view.core.form.FormPanelController', {
         var code = viewModel.get(form._codeField);
 
         saas.util.BaseUtil.request({
-            url: form._unAuditUrl+id,
+            url: form._unAuditUrl + '/' + id,
             method: 'POST',
         })
         .then(function(localJson) {

+ 6 - 2
frontend/saas-web/app/view/core/form/RemoteCombo.js

@@ -18,8 +18,8 @@ Ext.define('saas.view.core.form.RemoteCombo', {
     setStore:function(v){
        var me=this;
        var store=Ext.create('Ext.data.Store',{
+           autoLoad:true,
            fields:['display','value'],
-           autoLoad: true,
            proxy: {
                type: 'ajax',
                url: me.storeUrl,
@@ -30,12 +30,16 @@ Ext.define('saas.view.core.form.RemoteCombo', {
            }
        });
        me.store=store;
-
     },
     createPicker: function() {
+        debugger
         var me = this,
             picker;
         var count = this.store.getCount();
+        if(count==0){
+            this.store.filters.removeAll();
+            count = this.store.getCount();
+        }
         var pickerCfg = Ext.apply({
                 height: count>5?248-(me.hiddenBtn?50:0):(33*count+(me.hiddenBtn?0:50)),
                 hiddenBtn:me.hiddenBtn,

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

@@ -289,7 +289,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             .then(function(yes) {
                 if(yes == 'yes') {
                     saas.util.BaseUtil.request({
-                        url: me.deleteDetailUrl+id,
+                        url: me.deleteDetailUrl + '/' + id,
                         params: '',
                         method: 'POST',
                     })

+ 4 - 3
frontend/saas-web/app/view/core/query/QueryFormPanel.js

@@ -23,7 +23,7 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
 	},
 
     dockedItems: [{
-        width:110,
+        width:140,
         height: 40,
         xtype: 'toolbar',
         dock: 'right',
@@ -36,11 +36,12 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
                 width:50,
                 style:'min-width: 0px;min-height: 0px;',
                 xtype: 'button',
+                name:'query',
                 text: '查询',
                 handler: 'onQuery',
             },{
                 height:24,
-                style:'min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff; height: 24px;width: 24px;margin-top: -4px;',
+                style:'margin-left: 2px;min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff; height: 24px;width: 36px;margin-top: -4px;',
                 xtype: 'button',
                 iconCls:'x-fa fa-caret-square-o-down',
                 handler: 'showMore',
@@ -66,7 +67,7 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
                 hidden:true,
                 height:24,
                 tooltip:'隐藏',
-                style:'min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff; height: 24px;width: 24px;margin-top: -4px;',
+                style:'margin-left: 2px;min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff; height: 24px;width: 36px;margin-top: -4px;',
                 xtype: 'button',
                 iconCls:'x-fa fa-caret-square-o-up',
                 handler: 'hideMore'

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

@@ -39,6 +39,8 @@ Ext.define('saas.view.core.query.QueryPanelController', {
             queryForm.animate({dynamic: true, duration: 500, to: {height: (24+42*columnWidthCount)+'px'}})
             queryForm.dockedItems.items[0].down('[name=showMore]').hide();
             queryForm.dockedItems.items[0].down('[name=hideMore]').show();
+            var b = queryForm.dockedItems.items[0].down('[name=query]');
+            b.removeFocusCls();
         }
     },
     hideMore:function (){
@@ -49,6 +51,8 @@ Ext.define('saas.view.core.query.QueryPanelController', {
         queryForm.animate({dynamic: true, duration: 500, to: {height: '56px'}})
         queryForm.dockedItems.items[0].down('[name=hideMore]').hide();
         queryForm.dockedItems.items[0].down('[name=showMore]').show();
+        var b = queryForm.dockedItems.items[0].down('[name=query]');
+        b.removeFocusCls();
     },
     onMoreQuery: function() {
         var me = this,

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

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

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

@@ -13,11 +13,11 @@ Ext.define('saas.view.document.bom.FormPanel', {
     _codeField: 'codefied',
     _statusField: 'bo_status',
     _statusCodeField: 'bo_statuscode',
-    _readUrl:'/api/document/bom/read/',
+    _readUrl:'/api/document/bom/read',
     _saveUrl:'/api/document/bom/save',
     _openUrl:'/api/document/bom/open',
     _closeUrl:'/api/document/bom/close',
-    _deleteUrl:'/api/document/bom/delete/',
+    _deleteUrl:'/api/document/bom/delete',
     initId:0,
     _deleteMsg: '删除的BOM资料将不能恢复,请确认是否删除?',
     codeInHeader: false,
@@ -84,7 +84,7 @@ Ext.define('saas.view.document.bom.FormPanel', {
         detnoColumn: 'bd_detno',
         showCount: false,
         storeModel:'saas.model.document.bomdetail',
-        deleteDetailUrl:'/api/document/bom/deleteDetail/',
+        deleteDetailUrl:'/api/document/bom/deleteDetail',
         columns : [
             {
                 text : "ID", 

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

@@ -59,7 +59,7 @@ Ext.define('saas.view.document.customer.BasePanel', {
     caller:'Customer',
     _formXtype:'document-customer-formpanel',
     _title:'客户资料',
-    _deleteUrl:'/api/document/customer/delete/',
+    _deleteUrl:'/api/document/customer/delete',
     _batchOpenUrl:'/api/document/customer/batchOpen',
     _batchCloseUrl:'/api/document/customer/batchClose',
     _batchDeleteUrl:'/api/document/customer/batchDelete',

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

@@ -13,11 +13,11 @@ Ext.define('saas.view.document.customer.FormPanel', {
     _codeField: 'cu_code',
     _statusField: 'cu_status',
     _statusCodeField: 'cu_statuscode',
-    _readUrl:'/api/document/customer/read/',
+    _readUrl:'/api/document/customer/read',
     _saveUrl:'/api/document/customer/save',
     _openUrl:'/api/document/customer/open',
     _closeUrl:'/api/document/customer/close',
-    _deleteUrl:'/api/document/customer/delete/',
+    _deleteUrl:'/api/document/customer/delete',
     initId:0,
 
     codeInHeader: false,
@@ -225,7 +225,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
         storeModel:'saas.model.document.customercontact',
         detnoColumn: 'cc_detno',
         showCount: false,
-        deleteDetailUrl:'/api/document/customer/deletecontact/',
+        deleteDetailUrl:'/api/document/customer/deletecontact',
         columns : [
             {
                 text : "ID", 
@@ -326,7 +326,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
         storeModel:'saas.model.document.customeraddress',
         detnoColumn: 'ca_detno',
         showCount: false,
-        deleteDetailUrl:'/api/document/customer/deleteaddress/',
+        deleteDetailUrl:'/api/document/customer/deleteaddress',
         columns : [
             {
                 text : "ID", 

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

@@ -278,31 +278,24 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 listeners:{
                     blur:function(f,a,b,c){
                         if(f.value&&f.value!=''&&f.isValid()){
-                            // var url = 'https://sso.ubtob.com' + '/api/user/checkMobile?mobile='+f.value;
-                            // saas.util.BaseUtil.request({url })
-                            // .then(function(res) {
-                            //     if(res.success) {
-                            //     }
-                            // })
-                            // .catch(function(response) {
-                            // });
-                            // Ext.Ajax.request({
-                            //     url: Ext.manifest.server.accountPath + '/api/user/checkMobile',
-                            //     params: {
-                            //         mobile: f.value
-                            //     },
-                            //     method: 'GET',
-                            //     headers:{
-                            //         'Access-Control-Allow-Origin': '*',
-                            //         "Content-Type": 'application/json;charset=UTF-8'
-                            //     },
-                            //     success: function (response) {
-                            //         debugger
-                            //     },
-                            //     failure: function (response) {
-                            //         debugger
-                            //     }
-                            // });
+                            Ext.Ajax.request({
+                                url: 'http://192.168.253.31:8560/api/account/account/checkMobile?mobile='+f.value,
+                                method: 'GET',
+                                headers:{
+                                    'Access-Control-Allow-Origin': '*',
+                                    "Content-Type": 'application/json;charset=UTF-8'
+                                },
+                                success: function (response) {
+                                    if(localJson.success){
+                                        saas.util.BaseUtil.showSuccessToast('保存成功');
+                                        form.ownerCt._parent.store.load()
+                                        form.ownerCt.close();
+                                    }
+                                },
+                                failure: function (response) {
+                                    debugger
+                                }
+                            });
                         }
                     }
                 }
@@ -517,6 +510,11 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
             me.accountinformation();
             return;
         }
+        //账户资料新增特殊保存逻辑
+        if(me.dataKind=='accountadd'){
+            me.accountadd();
+            return;
+        }
 
         Ext.Array.each(names,function(name) {
             if(name){
@@ -618,5 +616,53 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
             console.error(res);
             saas.util.BaseUtil.showErrorToast('保存失败: ' + res.message);
         });
+    },
+    accountadd:function(){
+        var me = this;
+        var belong = this.belong;
+        me.setLoading(true);
+        var form=this.down('form');
+        var combo = this._combo;
+        var params = {};
+        var names = belong.columns.map(column => column.dataIndex);
+
+        Ext.Array.each(names,function(name) {
+            if(name){
+                var dataField = form.down('[name='+name+']');
+                if(dataField&&dataField.value){
+                    params[name] = dataField.value;
+                    params._value = dataField.value;
+                }
+            }
+        });
+        params['username'] = params['mobile'];
+        params['type'] = 1;
+        //保存接口
+        saas.util.BaseUtil.request({
+            url: belong.reqUrl,
+            params: JSON.stringify(params),
+            method: 'POST'
+        })
+        .then(function(localJson) {
+            me.setLoading(false);
+            if(localJson.success){
+                var grid = form.ownerCt._parent ? form.ownerCt._parent.lookup('document-kind-Grid') : null;
+                if(grid){
+                    grid.store.load();
+                }
+                if(combo){
+                    combo.store.load(function() {
+                        typeof combo.setValue == 'function' && combo.setValue(params._value);
+                    });
+                }
+                saas.util.BaseUtil.showSuccessToast('保存成功');
+                form.ownerCt.close();
+            }
+        })
+        .catch(function(res) {
+            me.setLoading(false);
+            console.error(res);
+            saas.util.BaseUtil.showErrorToast('保存失败: ' + res.message);
+        });
     }
 });

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

@@ -60,7 +60,7 @@ Ext.define('saas.view.document.product.BasePanel', {
     caller:'Product',
     _formXtype:'document-product-formpanel',
     _title:'物料资料',
-    _deleteUrl:'/api/document/product/delete/',
+    _deleteUrl:'/api/document/product/delete',
     _batchOpenUrl:'/api/document/product/batchOpen',
     _batchCloseUrl:'/api/document/product/batchClose',
     _batchDeleteUrl:'/api/document/product/batchDelete',

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

@@ -13,11 +13,11 @@ Ext.define('saas.view.document.product.FormPanel', {
     _codeField: 'pr_code',
     _statusField: 'pr_status',
     _statusCodeField: 'pr_statuscode',
-    _readUrl:'/api/document/product/read/',
+    _readUrl:'/api/document/product/read',
     _saveUrl:'/api/document/product/save',
     _openUrl:'/api/document/product/open',
     _closeUrl:'/api/document/product/close',
-    _deleteUrl:'/api/document/product/delete/',
+    _deleteUrl:'/api/document/product/delete',
     initId:0,
 
     codeInHeader: false,
@@ -219,7 +219,7 @@ Ext.define('saas.view.document.product.FormPanel', {
         showCount: false,
         allowEmpty:true,
         hidden: true,
-        deleteDetailUrl:'/api/document/product/deleteDetail/',
+        deleteDetailUrl:'/api/document/product/deleteDetail',
         columns : [{
             text : "ID", 
             dataIndex : "id", 

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

@@ -53,7 +53,7 @@ Ext.define('saas.view.document.vendor.BasePanel', {
     caller:'Vendor',
     _formXtype:'document-vendor-formpanel',
     _title:'供应商资料',
-    _deleteUrl:'/api/document/vendor/delete/',
+    _deleteUrl:'/api/document/vendor/delete',
     _batchOpenUrl:'/api/document/vendor/batchOpen',
     _batchCloseUrl:'/api/document/vendor/batchClose',
     _batchDeleteUrl:'/api/document/vendor/batchDelete',

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

@@ -13,11 +13,11 @@ Ext.define('saas.view.document.vendor.FormPanel', {
     _codeField: 've_code',
     _statusField: 've_status',
     _statusCodeField: 've_statuscode',
-    _readUrl:'/api/document/vendor/read/',
+    _readUrl:'/api/document/vendor/read',
     _saveUrl:'/api/document/vendor/save',
     _openUrl:'/api/document/vendor/open',
     _closeUrl:'/api/document/vendor/close',
-    _deleteUrl:'/api/document/vendor/delete/',
+    _deleteUrl:'/api/document/vendor/delete',
     initId:0,
 
     codeInHeader: false,
@@ -198,7 +198,7 @@ Ext.define('saas.view.document.vendor.FormPanel', {
         storeModel:'saas.model.document.vendorcontact',
         detnoColumn: 'vc_detno',
         showCount: false,
-        deleteDetailUrl:'/api/document/vendor/deleteContact/',
+        deleteDetailUrl:'/api/document/vendor/deleteContact',
         columns : [
             {
                 text : "ID", 

+ 5 - 5
frontend/saas-web/app/view/money/fundtransfer/FormPanel.js

@@ -15,11 +15,11 @@ Ext.define('saas.view.money.fundtransfer.FormPanel', {
      _statusField: 'ft_status',
      _statusCodeField: 'ft_statuscode',
      _relationColumn: 'ftd_ftid',
-     _readUrl:'/api/money/fundtransfer/read/',
+     _readUrl:'/api/money/fundtransfer/read',
      _saveUrl:'/api/money/fundtransfer/save',
-     _auditUrl:'/api/money/fundtransfer/audit/',
-     _unAuditUrl: '/api/money/fundtransfer/unAudit/',
-     _deleteUrl:'/api/money/fundtransfer/delete/',
+     _auditUrl:'/api/money/fundtransfer/audit',
+     _unAuditUrl: '/api/money/fundtransfer/unAudit',
+     _deleteUrl:'/api/money/fundtransfer/delete',
      initId:0,
 
     defaultItems: [{
@@ -37,7 +37,7 @@ Ext.define('saas.view.money.fundtransfer.FormPanel', {
         xtype : "detailGridField", 
         storeModel:'saas.model.money.FundTransfer',
         detnoColumn:  'ftd_detno',
-        deleteDetailUrl:'/api/money/fundtransfer/deleteItem/',
+        deleteDetailUrl:'/api/money/fundtransfer/deleteItem',
         columnWidth : 1,
         columns : [
             {

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

@@ -11,7 +11,6 @@ Ext.define('saas.view.money.fundtransfer.QueryPanel', {
         xtype: 'textfield',
         name:'ft_code',
         emptyText:'请输入单号',
-        style:{paddingLeft: '95px'},
     },{
         xtype : "condatefield",
         name : "ft_date",

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

@@ -15,11 +15,11 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
      _statusField: 'or_status',
      _statusCodeField: 'or_statuscode',
      _relationColumn: 'ord_orid',
-     _readUrl:'/api/money/othreceipts/read/',
-     _saveUrl:'/api/money/othreceipts/save/',
-     _auditUrl:'/api/money/othreceipts/audit/',
-     _unAuditUrl: '/api/money/othreceipts/unAudit/',
-     _deleteUrl:'/api/money/othreceipts/delete/',  
+     _readUrl:'/api/money/othreceipts/read',
+     _saveUrl:'/api/money/othreceipts/save',
+     _auditUrl:'/api/money/othreceipts/audit',
+     _unAuditUrl: '/api/money/othreceipts/unAudit',
+     _deleteUrl:'/api/money/othreceipts/delete',  
      initId:0,
 
     defaultItems: [{
@@ -63,7 +63,7 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
         xtype : "detailGridField", 
         storeModel:'saas.model.money.Othreceipts',
         detnoColumn:  'ord_detno',
-        deleteDetailUrl:'/api/money/othreceipts/deleteDetail/',
+        deleteDetailUrl:'/api/money/othreceipts/deleteDetail',
         columnWidth : 1,
         columns : [
             {

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

@@ -11,7 +11,6 @@ Ext.define('saas.view.money.othreceipts.QueryPanel', {
         xtype: 'textfield',
         name: 'or_code',
         emptyText:'请输入单号或客户或账号',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
            return  ' (or_code like\'%' + value + '%\'' 
                 +' or or_custcode like \'%'+value+'%\''

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

@@ -15,11 +15,11 @@ Ext.define('saas.view.money.othspendings.FormPanel', {
      _statusField: 'os_status',
      _statusCodeField: 'os_statuscode',
      _relationColumn: 'osd_osid',
-     _readUrl:'/api/money/othspendings/read/',
-     _saveUrl:'/api/money/othspendings/save/',
-     _auditUrl:'/api/money/othspendings/audit/',
-     _unAuditUrl: '/api/money/othspendings/unAudit/',
-     _deleteUrl:'/api/money/othspendings/delete/', 
+     _readUrl:'/api/money/othspendings/read',
+     _saveUrl:'/api/money/othspendings/save',
+     _auditUrl:'/api/money/othspendings/audit',
+     _unAuditUrl: '/api/money/othspendings/unAudit',
+     _deleteUrl:'/api/money/othspendings/delete', 
      initId:0,
 
     defaultItems: [{
@@ -63,7 +63,7 @@ Ext.define('saas.view.money.othspendings.FormPanel', {
         xtype : "detailGridField", 
         storeModel:'saas.model.money.Othspendings',
         detnoColumn:  'osd_detno',
-        deleteDetailUrl:'/api/money/othspendings/deleteDetail/',
+        deleteDetailUrl:'/api/money/othspendings/deleteDetail',
         columnWidth : 1,
         columns : [
             {

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

@@ -20,7 +20,6 @@ Ext.define('saas.view.money.othspendings.QueryPanel', {
         xtype: 'textfield',
         name: 'os_code',
         emptyText:'请输入单号或客户或账号',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             if(value == 'ALL') {
                 return '1=1';

+ 7 - 7
frontend/saas-web/app/view/money/payBalance/FormPanel.js

@@ -15,11 +15,11 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
     _statusField: 'pb_status',
     _statusCodeField: 'pb_statuscode',
     
-    _readUrl: '/api/money/paybalance/read/',
-    _saveUrl: '/api/money/paybalance/save/',
-    _auditUrl: '/api/money/paybalance/audit/',
-    _unAuditUrl: '/api/money/paybalance/unAudit/',
-    _deleteUrl: '/api/money/paybalance/delete/',
+    _readUrl: '/api/money/paybalance/read',
+    _saveUrl: '/api/money/paybalance/save',
+    _auditUrl: '/api/money/paybalance/audit',
+    _unAuditUrl: '/api/money/paybalance/unAudit',
+    _deleteUrl: '/api/money/paybalance/delete',
     initId: 0,
 
     toolBtns: [],
@@ -89,7 +89,7 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
         xtype: "detailGridField",
         storeModel: 'saas.model.money.PayBalance1',
         detnoColumn: 'pd_detno',
-        deleteDetailUrl: '/api/money/paybalance/deleteDetail1/',
+        deleteDetailUrl: '/api/money/paybalance/deleteDetail1',
         columns: [
         {
             text: 'ID',
@@ -181,7 +181,7 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
         storeModel: 'saas.model.money.PayBalance2',
         detnoColumn: 'pbd_detno',
         allowEmpty: true,
-        deleteDetailUrl: '/api/money/paybalance/deleteDetail2/',
+        deleteDetailUrl: '/api/money/paybalance/deleteDetail2',
         columns: [
         {
             text: 'ID',

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

@@ -19,7 +19,6 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
         xtype: 'textfield',
         name: 'pb_code',
         emptyText :'请输入单号或供应商',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             if(value == 'ALL') {
                 return '1=1';

+ 7 - 7
frontend/saas-web/app/view/money/recBalance/FormPanel.js

@@ -16,11 +16,11 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
     _statusField: 'rb_status',
     _statusCodeField: 'rb_statuscode',
     
-    _readUrl: '/api/money/recbalance/read/',
-    _saveUrl: '/api/money/recbalance/save/',
-    _auditUrl: '/api/money/recbalance/audit/',
-    _unAuditUrl: '/api/money/recbalance/unAudit/',
-    _deleteUrl: '/api/money/recbalance/delete/',
+    _readUrl: '/api/money/recbalance/read',
+    _saveUrl: '/api/money/recbalance/save',
+    _auditUrl: '/api/money/recbalance/audit',
+    _unAuditUrl: '/api/money/recbalance/unAudit',
+    _deleteUrl: '/api/money/recbalance/delete',
     initId: 0,
 
     defaultItems: [{
@@ -84,7 +84,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         xtype: "detailGridField",
         storeModel: 'saas.model.money.RecBalance1',
         detnoColumn: 'rd_detno',
-        deleteDetailUrl: '/api/money/recbalance/deleteDetail1/',
+        deleteDetailUrl: '/api/money/recbalance/deleteDetail1',
         columns: [{
             text: 'ID',
             dataIndex: 'id',
@@ -180,7 +180,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         storeModel: 'saas.model.money.RecBalance2',
         detnoColumn: 'rbd_detno',
         allowEmpty: true,
-        deleteDetailUrl: '/api/money/recbalance/deleteDetail2/',
+        deleteDetailUrl: '/api/money/recbalance/deleteDetail2',
         columns: [{
             text: 'ID',
             dataIndex: 'id',

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

@@ -11,7 +11,6 @@ Ext.define('saas.view.money.recBalance.QueryPanel', {
         xtype: 'textfield',
         name: 'rb_code',
         emptyText :'请输入单号或客户',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             if(value == 'ALL') {
                 return '1=1';

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

@@ -17,11 +17,11 @@ Ext.define('saas.view.money.verification.FormPanel', {
     _statusField: 'vc_status',
     _statusCodeField: 'vc_statuscode',
 
-    _readUrl: '/api/money/verification/read/',
-    _saveUrl: '/api/money/verification/save/',
-    _auditUrl: '/api/money/verification/audit/',
-    _unAuditUrl: '/api/money/verification/unAudit/',
-    _deleteUrl: '/api/money/verification/delete/',
+    _readUrl: '/api/money/verification/read',
+    _saveUrl: '/api/money/verification/save',
+    _auditUrl: '/api/money/verification/audit',
+    _unAuditUrl: '/api/money/verification/unAudit',
+    _deleteUrl: '/api/money/verification/delete',
 
     defatulType: 'receipts_offset_receivable',
 
@@ -64,7 +64,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
             xtype: "detailGridField",
             storeModel: 'saas.model.money.Verification1',
             detnoColumn: 'vd_detno',
-            deleteDetailUrl: '/api/money/verification/deleteDetail1/',
+            deleteDetailUrl: '/api/money/verification/deleteDetail1',
             columnWidth: 1,
             columns: [{
                 text: 'ID',
@@ -185,7 +185,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
             xtype: "detailGridField",
             storeModel: 'saas.model.money.Verification1',
             detnoColumn: 'vcd_detno',
-            deleteDetailUrl: '/api/money/verification/deleteDetail2/',
+            deleteDetailUrl: '/api/money/verification/deleteDetail2',
             columnWidth: 1,
             columns: [{
                 text: 'ID',

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

@@ -16,12 +16,12 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
      _statusCodeField: 'pu_statuscode',
      _relationColumn: 'pd_puid',
 
-     _readUrl:'/api/purchase/purchase/read/',
+     _readUrl:'/api/purchase/purchase/read',
      _saveUrl:'/api/purchase/purchase/save',
      _auditUrl:'/api/purchase/purchase/audit',
-     _unAuditUrl: '/api/purchase/purchase/unAudit/',
-     _deleteUrl:'/api/purchase/purchase/delete/',
-     _turnInUrl:'/api/purchase/purchase/turnProdin/',
+     _unAuditUrl: '/api/purchase/purchase/unAudit',
+     _deleteUrl:'/api/purchase/purchase/delete',
+     _turnInUrl:'/api/purchase/purchase/turnProdin',
      initId:0,
  
      toolBtns: [{
@@ -89,7 +89,7 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
         xtype : "detailGridField", 
         storeModel:'saas.model.purchase.Purchasedetail',
         detnoColumn:  'pd_detno',
-        deleteDetailUrl:'/api/purchase/purchase/deleteDetail/',
+        deleteDetailUrl:'/api/purchase/purchase/deleteDetail',
         allowEmpty: false,
         columns : [
             {

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

@@ -21,7 +21,6 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
         fieldLabel: ' ',
         labelSeparator:' ',
         emptyText:'请输入单号或供应商',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             return  ' (pu_code like\'%' + value + '%\' or pu_vendcode like \'%'+value+'%\' or pu_vendname like \'%'+value+'%\') ';
         }

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

@@ -16,12 +16,12 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
     _statusCodeField: 'pi_statuscode',
     
     _relationColumn: 'pd_piid',
-    _readUrl:'/api/purchase/prodinout/read/',
+    _readUrl:'/api/purchase/prodinout/read',
     _saveUrl:'/api/purchase/prodinout/save',
     _auditUrl:'/api/purchase/prodinout/audit',
-    _unAuditUrl:'/api/purchase/prodinout/unAudit/',
-    _deleteUrl:'/api/purchase/prodinout/delete/',
-    _turnOutUrl:'/api/purchase/prodinout/turnProdOut/',
+    _unAuditUrl:'/api/purchase/prodinout/unAudit',
+    _deleteUrl:'/api/purchase/prodinout/delete',
+    _turnOutUrl:'/api/purchase/prodinout/turnProdOut',
     initId:0,
 
     toolBtns: [{
@@ -91,7 +91,7 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
         name : "detailGridField", 
         xtype : "detailGridField",
         storeModel:'saas.model.purchase.ProdIODetail',
-        deleteDetailUrl:'/api/purchase/prodinout/deleteDetail/',
+        deleteDetailUrl:'/api/purchase/prodinout/deleteDetail',
         detnoColumn:  'pd_pdno',
         columns : [
             {

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

@@ -16,7 +16,6 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
         xtype: 'textfield',
         name: 'pi_inoutno',
         emptyText:'请输入单号或供应商',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             return  ' (pi_inoutno like\'%' + value + '%\' or pi_vendcode like \'%'+value+'%\' or pi_vendname like \'%'+value+'%\') ';
         }

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

@@ -16,11 +16,11 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
     _statusCodeField: 'pi_statuscode',
     
     _relationColumn: 'pd_piid',
-    _readUrl:'/api/purchase/prodinout/read/',
+    _readUrl:'/api/purchase/prodinout/read',
     _saveUrl:'/api/purchase/prodinout/save',
     _auditUrl:'/api/purchase/prodinout/audit',
-    _unAuditUrl:'/api/purchase/prodinout/unAudit/',
-    _deleteUrl:'/api/purchase/prodinout/delete/',
+    _unAuditUrl:'/api/purchase/prodinout/unAudit',
+    _deleteUrl:'/api/purchase/prodinout/delete',
     initId:0,
     toolBtns: [],
     defaultItems: [{
@@ -89,7 +89,7 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
         name : "detailGridField", 
         xtype : "detailGridField",
         storeModel:'saas.model.purchase.ProdIODetail',
-        deleteDetailUrl:'/api/purchase/prodinout/deleteDetail/',
+        deleteDetailUrl:'/api/purchase/prodinout/deleteDetail',
         detnoColumn:  'pd_pdno',
         columns : [
             {

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

@@ -19,7 +19,6 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
         xtype: 'textfield',
         name: 'pi_inoutno',
         emptyText:'请输入单号或供应商',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             return  ' (pi_inoutno like\'%' + value + '%\' or pi_vendcode like \'%'+value+'%\' or pi_vendname like \'%'+value+'%\') ';
         }

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

@@ -16,13 +16,13 @@ Ext.define('saas.view.sale.sale.FormPanel', {
      _statusCodeField: 'sa_statuscode',
      
      _relationColumn: 'sd_puid',
-     _readUrl:'/api/sale/sale/read/',
-     _saveUrl:'/api/sale/sale/save/',
-     _auditUrl:'/api/sale/sale/audit/',
-     _unAuditUrl: '/api/sale/sale/unAudit/',
-     _deleteUrl:'/api/sale/sale/delete/',
-     _turnOutUrl:'/api/sale/sale/turnProdOut/',
-     _turnPurchase:'/api/sale/sale/saleTurnPurchase/',
+     _readUrl:'/api/sale/sale/read',
+     _saveUrl:'/api/sale/sale/save',
+     _auditUrl:'/api/sale/sale/audit',
+     _unAuditUrl: '/api/sale/sale/unAudit',
+     _deleteUrl:'/api/sale/sale/delete',
+     _turnOutUrl:'/api/sale/sale/turnProdOut',
+     _turnPurchase:'/api/sale/sale/saleTurnPurchase',
      initId:0,
  
      toolBtns: [{
@@ -92,7 +92,7 @@ Ext.define('saas.view.sale.sale.FormPanel', {
         xtype : "detailGridField", 
         detnoColumn: 'sd_detno',
         storeModel:'saas.model.sale.Saledetail',
-        deleteDetailUrl:'/api/sale/sale/deleteDetail/',
+        deleteDetailUrl:'/api/sale/sale/deleteDetail',
         columns : [
            {
                 text : "id", 

+ 0 - 1
frontend/saas-web/app/view/sale/sale/QueryPanel.js

@@ -19,7 +19,6 @@ Ext.define('saas.view.sale.sale.QueryPanel', {
         xtype: 'textfield',
         name: 'sa_code',
         emptyText:'请输入单号或客户',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
            return  ' (sa_code like\'%' + value + '%\' or sa_custcode like \'%'+value+'%\' or sa_custname like \'%'+value+'%\') ';
         }

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

@@ -16,12 +16,12 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
     _statusCodeField: 'pi_statuscode',
     
     _relationColumn: 'pd_piid',
-    _readUrl:'/api/sale/prodinout/read/',
-    _saveUrl:'/api/sale/prodinout/save/',
-    _auditUrl:'/api/sale/prodinout/audit/',
-    _unAuditUrl:'/api/sale/prodinout/unAudit/',
-    _deleteUrl:'/api/sale/prodinout/delete/',
-    _turnInUrl:'/api/sale/prodinout/turnProdIn/',
+    _readUrl:'/api/sale/prodinout/read',
+    _saveUrl:'/api/sale/prodinout/save',
+    _auditUrl:'/api/sale/prodinout/audit',
+    _unAuditUrl:'/api/sale/prodinout/unAudit',
+    _deleteUrl:'/api/sale/prodinout/delete',
+    _turnInUrl:'/api/sale/prodinout/turnProdIn',
     initId:0,
 
     defaultItems: [{
@@ -66,7 +66,7 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
         xtype : "detailGridField", 
         detnoColumn:  'pd_pdno',
         storeModel:'saas.model.sale.ProdIODetail',
-        deleteDetailUrl:'/api/sale/prodinout/deleteDetail/',
+        deleteDetailUrl:'/api/sale/prodinout/deleteDetail',
         columns : [
             {
                 text : "id", 

+ 0 - 1
frontend/saas-web/app/view/sale/saleIn/QueryPanel.js

@@ -15,7 +15,6 @@ Ext.define('saas.view.sale.saleIn.QueryPanel', {
         xtype: 'textfield',
         name: 'pi_inoutno',
         emptyText:'请输入单号或客户或关联单号',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             return  ' (pi_inoutno like\'%' + value + '%\' or pi_custcode like \'%'+value+'%\' or pi_custname like \'%'+value+'%\' or pi_sacode like \'%'+value+'%\') ';
         }

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

@@ -16,12 +16,12 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
     _statusCodeField: 'pi_statuscode',
     
     _relationColumn: 'pd_piid',
-    _readUrl:'/api/sale/prodinout/read/',
-    _saveUrl:'/api/sale/prodinout/save/',
-    _auditUrl:'/api/sale/prodinout/audit/',
-    _unAuditUrl:'/api/sale/prodinout/unAudit/',
-    _deleteUrl:'/api/sale/prodinout/delete/',
-    _turnInUrl:'/api/sale/prodinout/turnProdIn/',
+    _readUrl:'/api/sale/prodinout/read',
+    _saveUrl:'/api/sale/prodinout/save',
+    _auditUrl:'/api/sale/prodinout/audit',
+    _unAuditUrl:'/api/sale/prodinout/unAudit',
+    _deleteUrl:'/api/sale/prodinout/delete',
+    _turnInUrl:'/api/sale/prodinout/turnProdIn',
     initId:0,
 
     toolBtns: [{
@@ -75,7 +75,7 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
         xtype : "detailGridField", 
         detnoColumn:  'pd_pdno',
         storeModel:'saas.model.sale.ProdIODetail',
-        deleteDetailUrl:'/api/sale/prodinout/deleteDetail/',
+        deleteDetailUrl:'/api/sale/prodinout/deleteDetail',
         columns : [
             {
                 text : "id", 

+ 0 - 1
frontend/saas-web/app/view/sale/saleOut/QueryPanel.js

@@ -16,7 +16,6 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
         xtype: 'textfield',
         name: 'pi_inoutno',
         emptyText:'请输入单号或客户或关联单号',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             return  ' (pi_inoutno like\'%' + value + '%\' or pi_custcode like \'%'+value+'%\' or pi_custname like \'%'+value+'%\' or pi_iocode like \'%'+value+'%\') ';
         }

+ 4 - 4
frontend/saas-web/app/view/stock/appropriationInOut/FormPanel.js

@@ -16,11 +16,11 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanel', {
     _statusCodeField: 'pi_statuscode',
     
     _relationColumn: 'pd_piid',
-    _readUrl:'/api/storage/prodinout/read/',
+    _readUrl:'/api/storage/prodinout/read',
     _saveUrl:'/api/storage/prodinout/save',
     _auditUrl:'/api/storage/prodinout/audit',
-    _unAuditUrl: '/api/storage/prodinout/unAudit/',
-    _deleteUrl:'/api/storage/prodinout/delete/',
+    _unAuditUrl: '/api/storage/prodinout/unAudit',
+    _deleteUrl:'/api/storage/prodinout/delete',
     initId:0,
 
     toolBtns: [],
@@ -76,7 +76,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanel', {
         name : "detailGridField", 
         xtype : "detailGridField",
         storeModel:'saas.model.purchase.ProdIODetail',
-        deleteDetailUrl:'/api/storage/prodinout/deleteDetail/',
+        deleteDetailUrl:'/api/storage/prodinout/deleteDetail',
         detnoColumn:  'pd_pdno',
         columns : [
             {

+ 0 - 1
frontend/saas-web/app/view/stock/appropriationInOut/QueryPanel.js

@@ -18,7 +18,6 @@ Ext.define('saas.view.stock.appropriationInOut.QueryPanel', {
         name: 'pi_inoutno',
         emptyText:'请输入单号或物料',
         showDetail: true,
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             if(value == 'ALL') {
                 return '1=1';

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

@@ -135,31 +135,31 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
     {
         text : "物料编号", 
         dataIndex : "st_prodcode", 
-        width : 120.0, 
+        width : 150.0, 
         xtype : "", 
     }, 
     {
         text : "物料名称", 
         dataIndex : "st_proddetail", 
-        width : 120.0, 
+        width : 200.0, 
         xtype : "", 
     },
     {
         text : "规格型号", 
         dataIndex : "st_prodorispeccode", 
-        width : 120.0, 
+        width : 150.0, 
         xtype : "", 
     },
     {
         text : "物料类别", 
         dataIndex : "st_prodkind", 
-        width : 120.0, 
+        width : 150.0, 
         xtype : "", 
     },
     {
         text : "单位", 
         dataIndex : "st_produnit", 
-        width : 120.0, 
+        width : 150.0, 
         xtype : "", 
     },
     {
@@ -171,19 +171,19 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
     {
         text : "仓库编号", 
         dataIndex : "st_whcode", 
-        width : 120.0, 
+        width : 150.0, 
         xtype : "", 
     },
     {
         text : "仓库", 
         dataIndex : "st_whname", 
-        width : 120.0, 
+        width : 200.0, 
         xtype : "", 
     },
     {
         text : "系统库存", 
         dataIndex : "st_batchqty", 
-        width : 120.0, 
+        width : 110.0, 
         xtype : "numbercolumn",
         renderer : function(v) {
             var arr = (v + '.').split('.');
@@ -195,7 +195,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
     {
         text : "盘点库存", 
         dataIndex : "st_actqty", 
-        width : 120.0, 
+        width : 110.0, 
         xtype : "numbercolumn",
         editor : {
             xtype : "numberfield",
@@ -222,7 +222,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
     {
         text : "盘盈盘亏", 
         dataIndex : "st_num", 
-        width : 120.0, 
+        width : 110.0, 
         xtype : "numbercolumn", 
     }],
 
@@ -408,19 +408,23 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         .then(function(localJson) {
             if(localJson.success){
                 // me.refresh();
-                var intValue = localJson.data.inData.id,
-                codeValue= localJson.data.inData.code,
-                name = localJson.data.inData.name;
-                saas.util.BaseUtil.openTab('stock-otherin-formpanel',name+"("+codeValue+")",codeValue+intValue, {
-                    initId: intValue
-                });
-        
-                intValue = localJson.data.outData.id;
-                codeValue= localJson.data.outData.code;
-                name = localJson.data.outData.name;
-                saas.util.BaseUtil.openTab('stock-otherout-formpanel',name+"("+codeValue+")",codeValue+intValue, {
-                    initId: intValue
-                });
+                if(localJson.data.inData){
+                    var intValue = localJson.data.inData.id,
+                    codeValue= localJson.data.inData.code,
+                    name = localJson.data.inData.name;
+                    saas.util.BaseUtil.openTab('stock-otherin-formpanel',name+"("+codeValue+")",codeValue+intValue, {
+                        initId: intValue
+                    });
+                }
+
+                if(localJson.data.outData){
+                    intValue = localJson.data.outData.id;
+                    codeValue= localJson.data.outData.code;
+                    name = localJson.data.outData.name;
+                    saas.util.BaseUtil.openTab('stock-otherout-formpanel',name+"("+codeValue+")",codeValue+intValue, {
+                        initId: intValue
+                    });
+                }
             }
         })
         .catch(function(res) {

+ 5 - 5
frontend/saas-web/app/view/stock/make/FormPanel.js

@@ -16,12 +16,12 @@ Ext.define('saas.view.stock.make.FormPanel', {
      _statusCodeField: 'ma_statuscode',
      _relationColumn: 'mm_maid',
 
-     _readUrl:'/api/storage/make/read/',
+     _readUrl:'/api/storage/make/read',
      _saveUrl:'/api/storage/make/save',
      _auditUrl:'/api/storage/make/audit',
-     _unAuditUrl: '/api/storage/make/unAudit/',
-     _deleteUrl:'/api/storage/make/delete/',
-     _getBomUrl:'/api/document/bom/read/',
+     _unAuditUrl: '/api/storage/make/unAudit',
+     _deleteUrl:'/api/storage/make/delete',
+     _getBomUrl:'/api/document/bom/read',
      initId:0,
  
      toolBtns: [],
@@ -127,7 +127,7 @@ Ext.define('saas.view.stock.make.FormPanel', {
         xtype : "detailGridField", 
         storeModel:'saas.model.stock.Makematerial',
         detnoColumn:  'mm_detno',
-        deleteDetailUrl:'/api/storage/make/deleteDetail/',
+        deleteDetailUrl:'/api/storage/make/deleteDetail',
         columns : [
             {
                 text : "id", 

+ 0 - 1
frontend/saas-web/app/view/stock/make/QueryPanel.js

@@ -19,7 +19,6 @@ Ext.define('saas.view.stock.make.QueryPanel', {
         xtype: 'textfield',
         name: 'ma_code',
         emptyText :'请输入单据编号',
-        style:{paddingLeft: '95px'}
     },{
         xtype: 'textfield',
         name: 'ma_prodcode',

+ 4 - 4
frontend/saas-web/app/view/stock/otherIn/FormPanel.js

@@ -17,11 +17,11 @@ Ext.define('saas.view.stock.otherIn.FormPanel', {
     _statusCodeField: 'pi_statuscode',
     
     _relationColumn: 'pd_piid',
-    _readUrl:'/api/storage/prodinout/read/',
+    _readUrl:'/api/storage/prodinout/read',
     _saveUrl:'/api/storage/prodinout/save',
     _auditUrl:'/api/storage/prodinout/audit',
-    _unAuditUrl: '/api/storage/prodinout/unAudit/',
-    _deleteUrl:'/api/storage/prodinout/delete/',
+    _unAuditUrl: '/api/storage/prodinout/unAudit',
+    _deleteUrl:'/api/storage/prodinout/delete',
     initId:0,
 
     toolBtns: [],
@@ -93,7 +93,7 @@ Ext.define('saas.view.stock.otherIn.FormPanel', {
         name : "detailGridField", 
         xtype : "detailGridField",
         storeModel:'saas.model.purchase.ProdIODetail',
-        deleteDetailUrl:'/api/storage/prodinout/deleteDetail/',
+        deleteDetailUrl:'/api/storage/prodinout/deleteDetail',
         detnoColumn:  'pd_pdno',
         columns : [
             {

+ 0 - 1
frontend/saas-web/app/view/stock/otherIn/QueryPanel.js

@@ -17,7 +17,6 @@ Ext.define('saas.view.stock.otherIn.QueryPanel', {
         xtype: 'textfield',
         name: 'pi_inoutno',
         emptyText:'请输入单号或供应商',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             if(value == 'ALL') {
                 return '1=1';

+ 4 - 4
frontend/saas-web/app/view/stock/otherOut/FormPanel.js

@@ -16,11 +16,11 @@ Ext.define('saas.view.stock.otherOut.FormPanel', {
     _statusCodeField: 'pi_statuscode',
 
     _relationColumn: 'pd_piid',
-    _readUrl: '/api/storage/prodinout/read/',
+    _readUrl: '/api/storage/prodinout/read',
     _saveUrl: '/api/storage/prodinout/save',
     _auditUrl: '/api/storage/prodinout/audit',
-    _unAuditUrl: '/api/storage/prodinout/unAudit/',
-    _deleteUrl: '/api/storage/prodinout/delete/',
+    _unAuditUrl: '/api/storage/prodinout/unAudit',
+    _deleteUrl: '/api/storage/prodinout/delete',
     initId: 0,
 
     toolBtns: [],
@@ -78,7 +78,7 @@ Ext.define('saas.view.stock.otherOut.FormPanel', {
         name: "detailGridField",
         xtype: "detailGridField",
         storeModel:'saas.model.purchase.ProdIODetail',
-        deleteDetailUrl: '/api/storage/prodinout/deleteDetail/',
+        deleteDetailUrl: '/api/storage/prodinout/deleteDetail',
         detnoColumn: 'pd_pdno',
         columns: [{
                 text: "id",

+ 0 - 1
frontend/saas-web/app/view/stock/otherOut/QueryPanel.js

@@ -17,7 +17,6 @@ Ext.define('saas.view.stock.otherOut.QueryPanel', {
         xtype: 'textfield',
         name: 'pi_inoutno',
         emptyText:'请输入单号或客户',
-        style:{paddingLeft: '95px'},
         getCondition: function(value) {
             if(value == 'ALL') {
                 return '1=1';