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

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

jinsy 7 éve
szülő
commit
07b0d81e85
44 módosított fájl, 423 hozzáadás és 81 törlés
  1. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/MaxnumbersdetailMapper.java
  2. 6 4
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java
  3. 6 0
      applications/commons/commons-server/src/main/resources/mapper/MaxnumbersdetailMapper.xml
  4. 4 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BomMapper.java
  5. 7 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BomServiceImpl.java
  6. 3 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  7. 6 5
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  8. 7 1
      applications/document/document-server/src/main/resources/mapper/BomMapper.xml
  9. 4 3
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java
  10. 10 6
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  11. 5 2
      applications/purchase/purchase-server/src/main/resources/application.yml
  12. 3 3
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  13. 4 1
      applications/storage/storage-server/src/main/resources/application.yml
  14. 5 1
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java
  15. 7 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountCompanyMapper.java
  16. 8 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountMapper.java
  17. 7 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/RoleResourceMapper.java
  18. 7 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountService.java
  19. 11 1
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountCenterServiceImpl.java
  20. 6 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java
  21. 26 3
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/RoleServiceImpl.java
  22. 12 0
      base-servers/account/account-server/src/main/resources/mapper/AccountCompanyMapper.xml
  23. 4 0
      base-servers/account/account-server/src/main/resources/mapper/AccountMapper.xml
  24. 6 2
      base-servers/account/account-server/src/main/resources/mapper/RoleResourceMapper.xml
  25. 38 4
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  26. 8 0
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/mapper/AuthorizeLogMapper.java
  27. 117 0
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/po/VirtualAuthorizeLog.java
  28. 8 0
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/service/AuthorizeLogService.java
  29. 6 0
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/service/impl/AuthorizeLogServiceImpl.java
  30. 5 0
      base-servers/auth/auth-server/src/main/resources/mapper/AuthorizeLogMapper.xml
  31. 8 5
      base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/AuthFilter.java
  32. 1 0
      base-servers/gateway-server/src/main/resources/application.yml
  33. 10 0
      frontend/saas-web/app/Application.scss
  34. 14 10
      frontend/saas-web/app/view/core/query/QueryFormPanel.js
  35. 20 5
      frontend/saas-web/app/view/core/query/QueryPanel.scss
  36. 4 2
      frontend/saas-web/app/view/core/query/QueryPanelController.js
  37. 6 5
      frontend/saas-web/app/view/document/kind/ChildForm.js
  38. 6 6
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  39. 1 1
      frontend/saas-web/app/view/stock/make/FormPanelController.js
  40. 1 1
      frontend/saas-web/app/view/sys/baseconfig/FormPanel.js
  41. 2 2
      frontend/saas-web/app/view/sys/config/FormPanel.js
  42. 2 2
      frontend/saas-web/app/view/sys/guide/FormPanel.js
  43. BIN
      frontend/saas-web/resources/images/default/hide.png
  44. BIN
      frontend/saas-web/resources/images/default/show.png

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

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

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

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

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

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

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

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

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

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

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

@@ -213,8 +213,9 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
 
                 //限制关联单据不可修改金额
                 Customer customer1 = getMapper().selectByPrimaryKey(customer.getId());
-                if (customer.getCu_beginaramount() != customer1.getCu_beginaramount() ||
-                        customer.getCu_beginprerecamount() != customer1.getCu_beginprerecamount()){
+                if (customer.getCu_beginaramount().doubleValue() != customer1.getCu_beginaramount().doubleValue() ||
+                        customer.getCu_beginprerecamount().doubleValue() != customer1.getCu_beginprerecamount().doubleValue() ||
+                        customer1.getCu_begindate().compareTo(customer.getCu_begindate()) != 0){
                     throw new BizException(BizExceptionCode.BIZ_RELUPDATE_AMOUNT);
                 }
             }

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

@@ -139,7 +139,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         if(main.getId() == 0){
             int count = getMapper().getCountByCode(code, companyId);
             if(count > 0){
-                throw new BizException(BizExceptionCode.REPEAT_NAME);
+                throw new BizException(BizExceptionCode.REPEAT_CODE);
             }
             count = getMapper().getCountByName(main.getVe_name(), companyId);
             if (count > 0){
@@ -182,7 +182,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             if (!main.getVe_name().equals(oldVendor.getVe_name())){
                 count = getMapper().getCountByName(main.getVe_name(), companyId);
                 if (count > 0){
-                    throw new BizException(BizExceptionCode.REPEAT_CODE);
+                    throw new BizException(BizExceptionCode.REPEAT_NAME);
                 }
             }
 
@@ -198,8 +198,9 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             if(!StringUtils.isEmpty(result)){
                 //限制关联单据不可修改金额
                 Vendor vendor = getMapper().selectByPrimaryKey(main.getId());
-                if (vendor.getVe_beginapamount() != main.getVe_beginapamount() ||
-                        vendor.getVe_beginprepayamount() != main.getVe_beginprepayamount()){
+                if (vendor.getVe_beginapamount().doubleValue() != main.getVe_beginapamount().doubleValue() ||
+                        vendor.getVe_beginprepayamount().doubleValue() != main.getVe_beginprepayamount().doubleValue() ||
+                        vendor.getVe_begindate().compareTo(main.getVe_begindate()) != 0){
                     throw new BizException(BizExceptionCode.BIZ_RELUPDATE_AMOUNT);
                 }
             }
@@ -271,6 +272,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         subledger.setSl_namount(Math.abs(amount));
         Long sl_id = subledgerMapper.selectByKindCodeVendid("期初余额","期初余额",
                 Math.toIntExact(main.getId()),BaseContextHolder.getCompanyId(),YM);
+
         subledger.setId(sl_id);
         if ( sl_id!=null && sl_id > 0 ) {
             subledgerMapper.updateByPrimaryKeySelective(subledger);
@@ -312,7 +314,6 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         }
     }
 
-
     /**
      * 关闭
      * @param id

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

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

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

@@ -162,8 +162,8 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
             Customer customer = new Customer();
             customer.setId(Long.valueOf(othreceipts.getOr_custid()));
             customer.setCu_preamount(preamount);
-            customer.setCu_recamount(recamount - or_amount);
-            customer.setCu_leftamount(beginapamount - beginprepayamount + recamount - or_amount - preamount);
+            customer.setCu_recamount(recamount + or_amount);
+            customer.setCu_leftamount(beginapamount - beginprepayamount + recamount + or_amount - preamount);
             recbalanceMapper.updateCustomerByPrimaryKeySelective(customer);
 
             //插入subledger中间表
@@ -218,6 +218,7 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
         othreceipts = othreceiptsMapper.selectByPrimaryKey(id);
         banksubledgerMapper.deleteByPrimaryKey(othreceipts.getOr_code(), "其他收入单");
 
+
         //更新资金
         Double amount = banksubledgerMapper.selectThisamount(othreceipts.getOr_bankcode());
         List<Othreceiptsdetail> othreceiptsdetailList = othreceiptsdetailMapper.selectByPrimaryKey(id);
@@ -260,7 +261,7 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
             customer.setId(Long.valueOf(othreceipts.getOr_custid()));
             customer.setCu_preamount(preamount);
             customer.setCu_recamount(recamount - or_amount);
-            customer.setCu_leftamount(beginapamount + beginprepayamount - recamount + or_amount + preamount);
+            customer.setCu_leftamount(beginapamount + beginprepayamount + recamount - or_amount - preamount);
             recbalanceMapper.updateCustomerByPrimaryKeySelective(customer);
             subledgerMapper.deleteByPrimaryKey(othreceipts.getOr_code(), "其他收入单");
         }

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

@@ -469,13 +469,17 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             List<VerificationdetDTO> items1 = formData.getItems1();
             //获取从表2
             List<VerificationdetailDTO> items2 = formData.getItems2();
-            for(VerificationdetDTO det : items1){
-                Double nowbalanceDet = det.getVd_nowbalance()==null?new Double(0):det.getVd_nowbalance();
-                updateAuditSubledeger(det.getVd_slid(),nowbalanceDet);
+            if(items1!=null){
+                for(VerificationdetDTO det : items1){
+                    Double nowbalanceDet = det.getVd_nowbalance()==null?new Double(0):det.getVd_nowbalance();
+                    updateAuditSubledeger(det.getVd_slid(),nowbalanceDet);
+                }
             }
-            for(VerificationdetailDTO detail : items2){
-                Double nowbalanceDet = detail.getVcd_nowbalance()==null?new Double(0):detail.getVcd_nowbalance();
-                updateAuditSubledeger(detail.getVcd_slid(),nowbalanceDet);
+            if(items2!=null){
+                for(VerificationdetailDTO detail : items2){
+                    Double nowbalanceDet = detail.getVcd_nowbalance()==null?new Double(0):detail.getVcd_nowbalance();
+                    updateAuditSubledeger(detail.getVcd_slid(),nowbalanceDet);
+                }
             }
         }
         baseDTO.setId(id);

+ 5 - 2
applications/purchase/purchase-server/src/main/resources/application.yml

@@ -47,7 +47,7 @@ eureka:
   client:
     registryFetchIntervalSeconds: 5
     serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@localhost:8500/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@192.168.0.181:8510/eureka/
 management:
   endpoints:
     web:
@@ -70,4 +70,7 @@ mybatis:
   type-aliases-package: com.usoftchina.saas.purchase.po
   mapper-locations: classpath:mapper/*.xml
 auth:
-  public-key: auth/pub.key
+  public-key: auth/pub.key
+ribbon:
+  ReadTimeout: 6000
+  ConnectTimeout: 2000

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

@@ -583,8 +583,8 @@ public class SaleServiceImpl implements SaleService{
             purchaseDetail.setPd_saledetno(detail.getSd_detno());
             purchaseDetail.setPd_saleid(sale.getId());
             purchaseDetail.setPd_taxrate(taxRate);
-            purchaseDetail.setPd_taxprice(Price*(1+taxRate/100));
-            purchaseDetail.setPd_taxtotal((Price*(1+taxRate/100))*qty);
+            purchaseDetail.setPd_taxprice(Price*(1-taxRate/100));
+            purchaseDetail.setPd_taxtotal((Price*(1-taxRate/100))*qty);
             purchaseDetail.setCompanyId(BaseContextHolder.getCompanyId());
             purchaseDetail.setCreatorId(BaseContextHolder.getUserId());
             purchaseDetail.setCreateTime(new Date());
@@ -601,7 +601,7 @@ public class SaleServiceImpl implements SaleService{
 
         DocBaseDTO log = new DocBaseDTO(sale.getId(),sale.getSa_code(),BillCodeSeq.SALE.getCaller());
         messageLogService.customizeLog(log, Operation.TURNPURCHASE);
-        return log;
+        return baseDTO;
     }
 
     //更新最新销售总额

+ 4 - 1
applications/storage/storage-server/src/main/resources/application.yml

@@ -70,4 +70,7 @@ mybatis:
   type-aliases-package: com.usoftchina.saas.storage.entities
   mapper-locations: classpath:mapper/*.xml
 auth:
-  public-key: auth/pub.key
+  public-key: auth/pub.key
+ribbon:
+  ReadTimeout: 6000
+  ConnectTimeout: 2000

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

@@ -145,9 +145,13 @@ public class AccountController {
         return Result.success(ssoUserApi.checkMobile(mobile));
     }
 
+    @GetMapping("/checkEmail")
+    public Result checkEmail(@RequestParam("email") String email){
+        return Result.success(accountService.checkEmail(email));
+    }
+
     /**
      * 修改
-     *
      * @param accountUpdateDTO
      * @return
      */

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

@@ -4,6 +4,7 @@ import com.usoftchina.saas.account.dto.CompanyRspDTO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author yingp
@@ -66,4 +67,10 @@ public interface AccountCompanyMapper {
      * @return
      */
     boolean bindDefault(@Param("accountId") Long accountId, @Param("companyId") Long companyId);
+
+    /**
+     * 账套数据初始化
+     * @param map
+     */
+    void initData(Map<String, Object> map);
 }

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

@@ -105,4 +105,12 @@ public interface AccountMapper {
      * @param enabled
      */
     void updateEnabled(@Param("id") Long id, @Param("enabled") Boolean enabled);
+
+    /**
+     * 校验email是否已存在
+     * @param email
+     * @param companyId
+     * @return
+     */
+    int checkEmail(@Param("email") String email, @Param("companyId") Long companyId);
 }

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

@@ -75,6 +75,13 @@ public interface RoleResourceMapper {
      */
     List<OtherPower> selectOthersPower();
 
+    /**
+     * 通过角色ID查询拥友的其他权限
+     * @param id
+     * @return
+     */
+    List<OtherPower> selectOthersPowerByRoleId(Long id);
+
     /**
      * 批量插入
      * @param roleResourceList

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

@@ -178,4 +178,11 @@ public interface AccountService {
      * @param accountId
      */
     void clearCache(Long accountId);
+
+    /**
+     * 校验email是否已存在
+     * @param email
+     * @return
+     */
+    boolean checkEmail(String email);
 }

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

@@ -73,12 +73,22 @@ public class AccountCenterServiceImpl implements AccountCenterService {
         if ("0".equals(type)) {
             String result = ssoUserSpaceApi.registerLogin(company.getName(), company.getBusinessCode(), Long.parseLong(accountRegDTO.getUu()));
         }
+        //c.插入 账户公司 映射
         accountCompanyMapper.insert(accountId, company.getId());
         //2.更新账户信息
         Account account = BeanMapper.map(accountRegDTO, Account.class);
-
         account.setId(accountId);
+        account.setEnabled(true);
         accountService.updateByPrimaryKeySelective(account);
+
+        //调用存储过程, 对新开账套数据初始化
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("fromCompany", 2);
+        map.put("newCompany", company.getId());
+        map.put("accountId", accountId);
+        map.put("result", null);
+        accountCompanyMapper.initData(map);
+
         return null;
     }
 

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

@@ -198,4 +198,10 @@ public class AccountServiceImpl implements AccountService {
             AccountCache.uu(account.getUu()).hdel();
         }
     }
+
+    @Override
+    public boolean checkEmail(String email){
+        return accountMapper.checkEmail(email, BaseContextHolder.getCompanyId()) > 0;
+    }
+
 }

+ 26 - 3
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/RoleServiceImpl.java

@@ -94,6 +94,7 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
         List<Map<String, Object>> classifyList = roleResourceMapper.selectClassifyByRoleId(id);
         List<PowerInfo> powerInfoList = roleResourceMapper.selectPowerInfo();
         List<OtherPower> otherPowerList = roleResourceMapper.selectOthersPower();
+        List<OtherPower> hasOtherPowerList = roleResourceMapper.selectOthersPowerByRoleId(id);
 
         for (PowerInfo powerInfo : powerInfoList){
             PowerDTO powerDTO = new PowerDTO();
@@ -103,6 +104,7 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
             powerDTO.setModuleId(powerInfo.getModuleId());
             //赋值默认权限,在权限列表中的资源默认置为false
             setPowerValue(powerDTO, powerInfo.getClassify(), false);
+            setDefaultOtherPower(powerDTO, powerDTO.getGroupId(), id, otherPowerList);
             //赋值权限
             for (Map<String, Object> map : classifyList){
                 if (powerInfo.getGrougId().equals(map.get("group_id"))){
@@ -111,7 +113,7 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
                     setPowerValue(powerDTO, classify, true);
                 }
                 //设置其他权限
-                setOtherPower(powerDTO, powerInfo.getGrougId(), id, otherPowerList);
+                setOtherPower(powerDTO, hasOtherPowerList);
             }
             powerDTOList.add(powerDTO);
         }
@@ -164,10 +166,17 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
         return true;
     }
 
-    private void setOtherPower(PowerDTO powerDTO, Long groupId, Long roleId, List<OtherPower> otherPowerList) {
+    /**
+     * 设置其他默认权限,用于生成设置按钮
+     * @param powerDTO
+     * @param groupId
+     * @param roleId
+     * @param otherPowerList
+     */
+    private void setDefaultOtherPower(PowerDTO powerDTO, Long groupId, Long roleId, List<OtherPower> otherPowerList){
         List<OtherPower> otherPowers = new ArrayList<OtherPower>();
         for (OtherPower otherPower : otherPowerList){
-            if (groupId.equals(otherPower.getGroupId()) && roleId.equals(otherPower.getRoleId())){
+            if (groupId.equals(otherPower.getGroupId())){
                 otherPowers.add(otherPower);
             }
         }
@@ -175,6 +184,20 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
         powerDTO.setOther(otherPowerDTOList);
     }
 
+    private void setOtherPower(PowerDTO powerDTO, List<OtherPower> otherPowerList) {
+        List<OtherPowerDTO> otherPowers = powerDTO.getOther();
+        if (!CollectionUtils.isEmpty(otherPowers)) {
+            for (OtherPower otherPower : otherPowerList) {
+                for (OtherPowerDTO otherPowerDTO : otherPowers) {
+                    if (otherPowerDTO.getResourceId().equals(otherPower.getResourceId())) {
+                        otherPowerDTO.setChecked(otherPower.isChecked());
+                    }
+                }
+            }
+        }
+        powerDTO.setOther(otherPowers);
+    }
+
     private void setPowerValue(PowerDTO powerDTO, String classify , boolean status) {
         String[] array = classify.split(",");
         for(int i = 0; i < array.length; i++){

+ 12 - 0
base-servers/account/account-server/src/main/resources/mapper/AccountCompanyMapper.xml

@@ -27,4 +27,16 @@
     <update id="bindDefault" >
         UPDATE AC_ACCOUNT_COMPANY SET IS_DEFAULT = 1 WHERE ACCOUNT_ID = #{accountId} AND COMPANY_ID = #{companyId}
     </update>
+
+    <parameterMap id="initParamMap" type="java.util.Map">
+        <parameter property="fromCompany" jdbcType="VARCHAR" mode="IN" />
+        <parameter property="newCompany" jdbcType="VARCHAR" mode="IN" />
+        <parameter property="accountId" jdbcType="INTEGER" mode="IN" />
+        <parameter property="result" jdbcType="VARCHAR" mode="OUT" />
+    </parameterMap>
+
+    <select id="initData" parameterMap="initParamMap" statementType="CALLABLE">
+        CALL COMPANY_INSTALL(?, ?, ?, ?)
+    </select>
+
 </mapper>

+ 4 - 0
base-servers/account/account-server/src/main/resources/mapper/AccountMapper.xml

@@ -202,4 +202,8 @@
     <update id="updateEnabled">
         update ac_account set enabled=#{enabled,jdbcType=BOOLEAN} where id=#{id,jdbcType=BIGINT}
     </update>
+    <select id="checkEmail" resultType="int">
+        SELECT COUNT(*) FROM AC_ACCOUNT AA LEFT JOIN AC_ACCOUNT_COMPANY AAC ON AAC.ACCOUNT_ID = AA.ID
+        WHERE AAC.COMPANY_ID = #{companyId} WHERE AA.EMAIL = #{email};
+    </select>
 </mapper>

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

@@ -48,10 +48,14 @@
         <result column="role_id" property="roleId" jdbcType="BIGINT" />
     </resultMap>
     <select id="selectOthersPower" resultMap="OtherPowerResultMap">
-      SELECT name,id,group_id,role_id,CASE WHEN ROLE_ID IS NULL THEN false ELSE true end checked FROM AC_RESOURCE
-      LEFT JOIN ac_role_resource ON ID = RESOURCE_ID
+      SELECT name,id,group_id FROM AC_RESOURCE
       WHERE CLASSIFY='OTHER'
     </select>
+    <select id="selectOthersPowerByRoleId" resultMap="OtherPowerResultMap">
+        SELECT name,id,group_id,role_id,CASE WHEN ROLE_ID IS NULL THEN false ELSE true end checked FROM AC_RESOURCE
+        LEFT JOIN ac_role_resource ON ID = RESOURCE_ID
+        WHERE CLASSIFY='OTHER' and role_id = #{id};
+    </select>
     <insert id="batchInsert" parameterType="java.util.List">
         INSERT INTO AC_ROLE_RESOURCE(ROLE_ID, RESOURCE_ID, COMPANY_ID, APP_ID)
         VALUES

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

@@ -6,6 +6,7 @@ import com.usoftchina.saas.account.constant.AccountType;
 import com.usoftchina.saas.account.dto.AccountCopyDTO;
 import com.usoftchina.saas.account.dto.AccountDTO;
 import com.usoftchina.saas.account.dto.AccountUpdateDTO;
+import com.usoftchina.saas.account.dto.CompanyBaseDTO;
 import com.usoftchina.saas.auth.common.cookie.CookieInfo;
 import com.usoftchina.saas.auth.common.jwt.JwtHelper;
 import com.usoftchina.saas.auth.common.jwt.JwtInfo;
@@ -14,6 +15,7 @@ import com.usoftchina.saas.auth.dto.AuthDTO;
 import com.usoftchina.saas.auth.dto.AuthorizeLogDTO;
 import com.usoftchina.saas.auth.dto.TokenDTO;
 import com.usoftchina.saas.auth.po.AuthorizeLog;
+import com.usoftchina.saas.auth.po.VirtualAuthorizeLog;
 import com.usoftchina.saas.auth.service.AuthorizeCountService;
 import com.usoftchina.saas.auth.service.AuthorizeLogService;
 import com.usoftchina.saas.base.Result;
@@ -23,10 +25,7 @@ import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.server.web.ServletUtils;
 import com.usoftchina.saas.socket.api.SocketMessageApi;
-import com.usoftchina.saas.utils.BeanMapper;
-import com.usoftchina.saas.utils.CollectionUtils;
-import com.usoftchina.saas.utils.JsonUtils;
-import com.usoftchina.saas.utils.StringUtils;
+import com.usoftchina.saas.utils.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +35,9 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 /**
  * @author yingp
@@ -117,6 +119,38 @@ public class AuthController {
         return Result.error(result.getCode(), result.getMessage());
     }
 
+
+    @PostMapping("/virtual/authorize/{mobile}")
+    public Result<AuthDTO> virtualAuthorize(HttpServletRequest request, @PathVariable("mobile") String mobile) {
+        //构造虚拟account,生成token
+        String randomNum = DateUtils.format(new Date(), "hhmmss");
+        AccountDTO accountDTO = new AccountDTO();
+        accountDTO.setId(-99999L);
+        accountDTO.setUsername("virtual" + randomNum);
+        accountDTO.setRealname("游客" + randomNum);
+        accountDTO.setMobile(mobile);
+        accountDTO.setType(0);
+        //公司信息
+        List<CompanyBaseDTO> companies = new ArrayList<CompanyBaseDTO>();
+        CompanyBaseDTO companyBaseDTO = new CompanyBaseDTO();
+        companyBaseDTO.setId(2L);
+        companyBaseDTO.setName("演示账套");
+
+        companies.add(companyBaseDTO);
+        accountDTO.setCompanies(companies);
+
+        Long companyId = 2L;            //演示账套companyId  :  2
+        String appId = "trade-app";     //App_ID
+        JwtInfo info = new JwtInfo(appId, companyId, accountDTO.getId(), accountDTO.getUsername(), accountDTO.getRealname());
+        JwtToken jwtToken = JwtHelper.generateToken(info, privateKeyPath, expire);
+        TokenDTO tokenDTO = BeanMapper.map(jwtToken, TokenDTO.class);
+        // 登录日志
+        authorizeLogService.saveVirtual(VirtualAuthorizeLog.from(request)
+                .setMobile(Long.parseLong(accountDTO.getMobile()))
+                .setAppId(appId).build());
+        return Result.success(new AuthDTO(tokenDTO, accountDTO));
+    }
+
     /**
      * 账户中心登录时jsonp回调
      *

+ 8 - 0
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/mapper/AuthorizeLogMapper.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.auth.mapper;
 
 import com.usoftchina.saas.auth.po.AuthorizeLog;
+import com.usoftchina.saas.auth.po.VirtualAuthorizeLog;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -26,4 +27,11 @@ public interface AuthorizeLogMapper {
      * @return
      */
     List<AuthorizeLog> selectByAppIdAndAccountId(@Param("appId") String appId, @Param("accountId") Long accountId);
+
+    /**
+     * 保存虚拟登陆的LOG
+     * @param virtualAuthorizeLog
+     * @return
+     */
+    int insertVirtual(VirtualAuthorizeLog virtualAuthorizeLog);
 }

+ 117 - 0
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/po/VirtualAuthorizeLog.java

@@ -0,0 +1,117 @@
+package com.usoftchina.saas.auth.po;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author chenw
+ * @date 2018/11/26
+ */
+public class VirtualAuthorizeLog implements Serializable{
+    private Long id;
+    private Long mobile;
+    private String clientIp;
+    private String userAgent;
+    private Date loginTime;
+    private String appId;
+
+    public VirtualAuthorizeLog() {
+    }
+
+    public VirtualAuthorizeLog(Long mobile, String clientIp, String userAgent, String appId) {
+        this.mobile = mobile;
+        this.clientIp = clientIp;
+        this.userAgent = userAgent;
+        this.loginTime = new Date();
+        this.appId = appId;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(Long mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getClientIp() {
+        return clientIp;
+    }
+
+    public void setClientIp(String clientIp) {
+        this.clientIp = clientIp;
+    }
+
+    public String getUserAgent() {
+        return userAgent;
+    }
+
+    public void setUserAgent(String userAgent) {
+        this.userAgent = userAgent;
+    }
+
+    public Date getLoginTime() {
+        return loginTime;
+    }
+
+    public void setLoginTime(Date loginTime) {
+        this.loginTime = loginTime;
+    }
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
+    public static Builder from(HttpServletRequest request) {
+        return new Builder(request);
+    }
+
+    public static class Builder {
+        private Long mobile;
+        private String clientIp;
+        private String userAgent;
+        private String appId;
+
+        public Builder(HttpServletRequest request) {
+            this.clientIp = request.getRemoteAddr();
+            this.userAgent = request.getHeader("User-Agent");
+        }
+
+        public Builder setMobile(Long mobile) {
+            this.mobile = mobile;
+            return this;
+        }
+
+        public Builder setClientIp(String clientIp) {
+            this.clientIp = clientIp;
+            return this;
+        }
+
+        public Builder setUserAgent(String userAgent) {
+            this.userAgent = userAgent;
+            return this;
+        }
+
+        public Builder setAppId(String appId) {
+            this.appId = appId;
+            return this;
+        }
+
+        public VirtualAuthorizeLog build() {
+            return new VirtualAuthorizeLog(mobile, clientIp, userAgent, appId);
+        }
+    }
+}

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

@@ -3,6 +3,7 @@ package com.usoftchina.saas.auth.service;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.auth.dto.AuthorizeLogDTO;
 import com.usoftchina.saas.auth.po.AuthorizeLog;
+import com.usoftchina.saas.auth.po.VirtualAuthorizeLog;
 import com.usoftchina.saas.page.PageRequest;
 
 /**
@@ -25,4 +26,11 @@ public interface AuthorizeLogService {
      * @return
      */
     PageInfo<AuthorizeLogDTO> findByPage(PageRequest page);
+
+    /**
+     * 保存虚拟账户登录LOG
+     * @param virtualAuthorizeLog
+     * @return
+     */
+    boolean saveVirtual(VirtualAuthorizeLog virtualAuthorizeLog);
 }

+ 6 - 0
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/service/impl/AuthorizeLogServiceImpl.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.auth.dto.AuthorizeLogDTO;
 import com.usoftchina.saas.auth.mapper.AuthorizeLogMapper;
 import com.usoftchina.saas.auth.po.AuthorizeLog;
+import com.usoftchina.saas.auth.po.VirtualAuthorizeLog;
 import com.usoftchina.saas.auth.service.AuthorizeLogService;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.page.PageRequest;
@@ -39,4 +40,9 @@ public class AuthorizeLogServiceImpl implements AuthorizeLogService{
         );
         return new PageInfo<>(BeanMapper.mapList(logs, AuthorizeLogDTO.class));
     }
+
+    @Override
+    public boolean saveVirtual(VirtualAuthorizeLog virtualAuthorizeLog) {
+        return authorizeLogMapper.insertVirtual(virtualAuthorizeLog) > 0;
+    }
 }

+ 5 - 0
base-servers/auth/auth-server/src/main/resources/mapper/AuthorizeLogMapper.xml

@@ -18,4 +18,9 @@
         select * from au_authorize_log where app_id=#{appId} and account_id=#{accountId}
         order by login_time desc
     </select>
+    <insert id="insertVirtual" parameterType="com.usoftchina.saas.auth.po.VirtualAuthorizeLog">
+        insert into au_virtual_authorize_log(app_id,mobile,client_ip,user_agent,login_time)
+        values (#{appId,jdbcType=VARCHAR}, #{mobile,jdbcType=BIGINT}, #{clientIp,jdbcType=VARCHAR},
+        #{userAgent,jdbcType=VARCHAR}, #{loginTime,jdbcType=TIMESTAMP})
+    </insert>
 </mapper>

+ 8 - 5
base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/AuthFilter.java

@@ -52,12 +52,15 @@ public class AuthFilter implements GlobalFilter, Ordered {
                 BaseContextHolder.setCompanyId(jwt.getCompanyId());
                 BaseContextHolder.setUserName(jwt.getRealName());
                 BaseContextHolder.setToken(token);
-                AccountDTO accountDTO = AccountCache.current().getAccount();
-                if (null == accountDTO) {
-                    throw new BizException(ExceptionCode.USER_NOT_EXIST);
+                if (jwt.getUserId() != -99999) {    //非虚拟用户登录时
+                    AccountDTO accountDTO = AccountCache.current().getAccount();
+                    if (null == accountDTO) {
+                        throw new BizException(ExceptionCode.USER_NOT_EXIST);
+                    }
+                    // 鉴别角色权限
+                    checkPermission(exchange.getRequest(), jwt, accountDTO);
                 }
-                // 鉴别角色权限
-                checkPermission(exchange.getRequest(), jwt, accountDTO);
+
             }
             return chain.filter(exchange);
         } finally {

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

@@ -179,6 +179,7 @@ auth:
   public-key: auth/pub.key
   ignores:
     - /api/auth/authorize
+    - /api/auth/virtual/authorize/**
     - /api/auth/sso/callback/**
     - /api/account/account/register
     - /api/auth/info

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

@@ -163,6 +163,16 @@ body.launching {
   }
 }
 
+.x-main-master{
+  .x-btn-wrap{
+    .x-btn-button{
+      .x-btn-inner{
+        color:#999 !important;
+      }
+    }
+  }
+}
+
 .x-keyboard-mode .x-btn-focus.x-btn-default-toolbar-small {
   background: inherit;
   opacity: 1;

+ 14 - 10
frontend/saas-web/app/view/core/query/QueryFormPanel.js

@@ -24,7 +24,7 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
 
     dockedItems: [{
         width:140,
-        height: 40,
+        height: 70,
         xtype: 'toolbar',
         dock: 'right',
         items: [{
@@ -32,23 +32,23 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
             xtype: 'buttongroup',
             cls:'x-query-buttongroup',
             items:[{
-                height:24,
-                width:50,
+                height:32,
+                width:70,
                 style:'min-width: 0px;min-height: 0px;',
                 xtype: 'button',
                 name:'query',
                 text: '查询',
                 handler: 'onQuery',
             },{
-                height:24,
-                style:'margin-left: 2px;min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff; height: 24px;width: 36px;margin-top: -4px;',
+                style:'min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff;padding: 0px;margin-top: -1px;margin-left: -2px;',
                 xtype: 'button',
-                iconCls:'x-fa fa-caret-square-o-down',
+                iconCls:'x-btn-show',
                 handler: 'showMore',
                 name:'showMore',
                 tooltip:'更多',
                 listeners:{
                     afterrender:function(b){
+                        var count = window.innerHeight - 110>=800?2:1;
                         var columnWidthCount = 0;
                         var items = b.ownerCt.ownerCt.ownerCt.items.items;
                         Ext.each(items, function(item, index){
@@ -57,7 +57,7 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
                             }
                         });
                         columnWidthCount = Math.ceil(columnWidthCount);
-                        if(columnWidthCount<=1){
+                        if(columnWidthCount<=count){
                             b.hide();
                         }
                     }
@@ -65,17 +65,21 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
             },{
                 name:'hideMore',
                 hidden:true,
-                height:24,
                 tooltip:'隐藏',
-                style:'margin-left: 2px;min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff; height: 24px;width: 36px;margin-top: -4px;',
+                style:'min-width: 0px;min-height: 0px;border-color: #fff;background-color: #fff;padding: 0px;margin-top: -1px;margin-left: -2px;',
                 xtype: 'button',
-                iconCls:'x-fa fa-caret-square-o-up',
+                iconCls:'x-btn-hide',
                 handler: 'hideMore'
             }]
         },'->']
     }],
 
     listeners: {
+        boxReady:function(form){
+            if(window.innerHeight - 110 >= 800){
+                form.setHeight(112);
+            }
+        },
         beforerender: function(form) {
             // var fiels = form.getForm().getFields();
             // fiels.each(function(f) {

+ 20 - 5
frontend/saas-web/app/view/core/query/QueryPanel.scss

@@ -19,9 +19,9 @@
                                 padding: 6px 0 16px 8px;
 
                                 .x-box-inner {
-                                    height: 36px !important;
+                                    height: 46px !important;
                                     background: #FFFFFF;
-        
+                                    margin-top: -4px;
                                 }
                             }
                         }
@@ -58,7 +58,22 @@
     .x-btn-group-body-default-framed .x-table-layout{
         border-spacing: 2px !important;
     }
-    .x-btn-default-toolbar-small .x-btn-inner-default-toolbar-small{
-        height:24px !important;
-    }
+}
+
+.x-btn-show{
+    height: 32px;
+    width: 32px !important;
+    margin-top: 0px;
+    background: url(../../../../resources/images/default/show.png) 0 0 no-repeat; 
+    background-size: 32px 32px;
+    background-position: center;
+}
+
+.x-btn-hide{
+    height: 32px;
+    width: 32px !important;
+    margin-top: 0px;
+    background: url(../../../../resources/images/default/hide.png) 0 0 no-repeat; 
+    background-size: 32px 32px;
+    background-position: center;
 }

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

@@ -34,7 +34,8 @@ Ext.define('saas.view.core.query.QueryPanelController', {
             }
         });
         columnWidthCount = Math.ceil(columnWidthCount);
-        if(columnWidthCount>1){
+        var count = window.innerHeight - 110>=800?2:1;
+        if(columnWidthCount>count){
             //展开
             queryForm.animate({dynamic: true, duration: 500, to: {height: (24+42*columnWidthCount)+'px'}})
             queryForm.dockedItems.items[0].down('[name=showMore]').hide();
@@ -48,7 +49,8 @@ Ext.define('saas.view.core.query.QueryPanelController', {
         queryPanel = me.getView(),
         queryForm = queryPanel.down('core-query-queryformpanel');
         //收缩
-        queryForm.animate({dynamic: true, duration: 500, to: {height: '56px'}})
+        var count = window.innerHeight - 110>=800?2:1;
+        queryForm.animate({dynamic: true, duration: 500, to: {height: count*56 + 'px'}})
         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]');

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

@@ -278,8 +278,9 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 listeners:{
                     blur:function(f,a,b,c){
                         var form = f.ownerCt;
-                        form.setLoading(true);
-                        if(f.value&&f.value!=''&&f.isValid()){
+                        if(f.value&&f.value!=''&&f.isValid()&&f._lastCheckValue!=f.value){
+                            form.setLoading(true);
+                            f._lastCheckValue = f.value
                             Ext.Ajax.request({
                                 url: '/api/account/account/checkMobile?mobile='+f.value,
                                 method: 'GET',
@@ -291,10 +292,10 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                                     form.setLoading(false);
                                     var localJson = Ext.decode(response.responseText);
                                     if(localJson.success){
-                                        if(!localJson.data.hasRegister){
-                                            saas.util.BaseUtil.showSuccessToast('校验成功:手机号未被注册');
+                                        if(localJson.data.hasRegister){
+                                            saas.util.BaseUtil.showSuccessToast('校验成功:手机号已在优软云注册');
                                         }else{
-                                            saas.util.BaseUtil.showErrorToast('校验失败:手机号已被注册');
+                                            saas.util.BaseUtil.showErrorToast('校验失败:手机号未在优软云注册');
                                             f.setValue('');
                                         }
                                     }else{

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

@@ -92,7 +92,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         }
     },'->',{
         xtype:'button',
-        text:'保存',
+        text:'保存盘点结果',
         listeners: {
             click:function(b){
                 var me = this.ownerCt.ownerCt;
@@ -101,7 +101,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         }
     },{
         xtype:'button',
-        text:'导出',
+        text:'导出系统库存',
         listeners: {
             click:function(b){
                 var me = this.ownerCt.ownerCt;
@@ -123,12 +123,12 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
     //字段属性
     columns : [{
         text : "盘点id", 
-        width : 0, 
-        dataIndex : "id", 
+        dataIndex : "id",
+        hidden:true, 
         xtype : "numbercolumn", 
     },{
         text : "物料id", 
-        width : 0, 
+        hidden:true,
         dataIndex : "st_prodid", 
         xtype : "numbercolumn", 
     }, 
@@ -165,7 +165,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
     {
         text : "仓库id", 
         dataIndex : "st_whid", 
-        width : 0, 
+        hidden:true,
         xtype : "numbercolumn", 
     },
     {

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

@@ -100,7 +100,7 @@ Ext.define('saas.view.stock.make.FormPanelController', {
 
         //请求bom资料
         saas.util.BaseUtil.request({
-            url: form._getBomUrl+v,
+            url: form._getBomUrl+'/'+v,
             method: 'GET',
         })
         .then(function(localJson) {

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

@@ -11,7 +11,7 @@ Ext.define('saas.view.sys.baseconfig.FormPanel', {
     //字段属性
     _idField: 'id',
     _readUrl:'/api/commons/configs/list',
-    _saveUrl:'/api/commons/configs/update',
+    _saveUrl:'/api/commons/configs/save',
 
     //基础属性
     frame:true,

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

@@ -188,9 +188,9 @@ Ext.define('saas.view.sys.config.FormPanel', {
                         },
                         success: function (response, opts) {
                             form.setLoading(false);
-                            saas.util.BaseUtil.showSuccessToast('上传成功');
                             var res = Ext.decode(response.responseText);
                             if(res.success){
+                                saas.util.BaseUtil.showSuccessToast('上传成功');
                                 var data = res.data;
                                 var name = data.name + "  (" + Ext.util.Format.fileSize(data.size) + ")";
                                 myForm.down('[name=signet]').setValue(data.fullPath);
@@ -315,9 +315,9 @@ Ext.define('saas.view.sys.config.FormPanel', {
                         },
                         success: function (response, opts) {
                             form.setLoading(false);
-                            saas.util.BaseUtil.showSuccessToast('上传成功');
                             var res = Ext.decode(response.responseText);
                             if(res.success){
+                                saas.util.BaseUtil.showSuccessToast('上传成功');
                                 var data = res.data;
                                 var name = data.name + "  (" + Ext.util.Format.fileSize(data.size) + ")";
                                 myForm.down('[name=logoUrl]').setValue(data.fullPath);

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

@@ -115,7 +115,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
                         '<tpl if="!product">x-guide-mask </tpl>',
                         '"src="resources/images/guide/point.png" style="margin: 2px 0px 0 0;" align ="center" width="16" height="16" >',
                         "<br>",
-                        '<div class="x-guide-line"  height="1"  style="border:1px solid #E4F7FF;margin: -9px 0 0 0;width: 654px !important;" align ="center"></div>',
+                        '<div class="x-guide-line"  height="1"  style="border:1px solid #beecff;margin: -9px 0 0 0;width: 654px !important;" align ="center"></div>',
                     '</div>',
                     '<div class="x-guide-item" align ="center">',
 
@@ -174,7 +174,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
                         '<tpl if="!begin">x-guide-mask </tpl>',
                         '" src="resources/images/guide/point.png" style="margin: 2px 0px 0 0;" align ="center" width="16" height="16" >',
                         "<br>",
-                        '<div class="x-guide-line"  height="1"  style="border:1px solid #E4F7FF;margin: -9px 0 0 0;width: 654px !important;" align ="center"></div>',
+                        '<div class="x-guide-line"  height="1"  style="border:1px solid #beecff;margin: -9px 0 0 0;width: 654px !important;" align ="center"></div>',
                     '</div>',
                 '</div>',
                 '</tpl>'

BIN
frontend/saas-web/resources/images/default/hide.png


BIN
frontend/saas-web/resources/images/default/show.png