Просмотр исходного кода

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

rainco 7 лет назад
Родитель
Сommit
1ad3552eca
43 измененных файлов с 195 добавлено и 117 удалено
  1. 3 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java
  3. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  4. 3 2
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  5. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/BanksubledgerMapper.java
  6. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java
  7. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java
  8. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java
  9. 2 2
      applications/money/money-server/src/main/resources/mapper/BanksubledgerMapper.xml
  10. 4 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java
  11. 6 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  12. 3 0
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml
  13. 5 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  14. 2 0
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/StocktakingServiceImpl.java
  15. 1 1
      applications/storage/storage-server/src/main/resources/mapper/StockTakingMapper.xml
  16. 4 4
      base-servers/account/account-api/src/main/java/com/usoftchina/saas/account/api/CompanyApi.java
  17. 13 0
      base-servers/auth/auth-dto/src/main/java/com/usoftchina/saas/auth/dto/AuthDTO.java
  18. 12 9
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  19. 2 0
      base-servers/gateway-server/src/main/resources/application.yml
  20. 9 1
      frontend/saas-portal-web/src/components/conenter/addgongsi.vue
  21. 10 7
      frontend/saas-portal-web/src/components/conenter/company.vue
  22. 10 5
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  23. 27 28
      frontend/saas-portal-web/src/components/conenter/home.vue
  24. 3 2
      frontend/saas-portal-web/src/components/footer/footer.vue
  25. 5 1
      frontend/saas-portal-web/static/css/main.css
  26. BIN
      frontend/saas-portal-web/static/img/feature/illustration1@2x.png
  27. BIN
      frontend/saas-portal-web/static/img/feature/illustration2@2x.png
  28. BIN
      frontend/saas-portal-web/static/img/feature/illustration3@2x.png
  29. BIN
      frontend/saas-portal-web/static/img/feature/illustration4@2x.png
  30. BIN
      frontend/saas-portal-web/static/img/feature/mix13x.png
  31. BIN
      frontend/saas-portal-web/static/img/feature/mix23x.png
  32. BIN
      frontend/saas-portal-web/static/img/feature/mix33x.png
  33. BIN
      frontend/saas-portal-web/static/img/feature/mix43x.png
  34. BIN
      frontend/saas-portal-web/static/img/qr_mall.jpg
  35. BIN
      frontend/saas-portal-web/static/img/qrusoftchina_1.jpg
  36. 2 1
      frontend/saas-web/app/model/sale/Saledetail.js
  37. 3 0
      frontend/saas-web/app/view/core/base/ImportWindow.js
  38. 9 9
      frontend/saas-web/app/view/core/form/FormPanel.js
  39. 33 27
      frontend/saas-web/app/view/core/report/ReportPanel.js
  40. 1 1
      frontend/saas-web/app/view/core/report/ReportPanelController.js
  41. 4 3
      frontend/saas-web/app/view/money/payBalance/FormPanelController.js
  42. 4 2
      frontend/saas-web/app/view/money/recBalance/FormPanelController.js
  43. 6 2
      frontend/saas-web/app/view/viewport/ViewportController.js

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

@@ -56,7 +56,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     VENDOR_ISCLOSE(79505, "供应商已关闭"),
     PRODUCT_ISCLOSE(79506, "物料已关闭"),
     CUSTOMER_ISCLOSE(79507, "客户资料已关闭"),
-
+    REQUIREDFIELD_NULL(79508,"存在必填字段未空"),
 
     //采购 70000-71999
     PURCCHECKIN_POST_ERROR(70000,""),
@@ -65,6 +65,8 @@ public enum BizExceptionCode implements BaseExceptionCode {
     PURCHASE_ORDER_HASAUDIT(70002, "存在已审核单据,单据编号:%s"),
     PURCHASE_ORDER_HASUNAUDIT(70003, "存在未审核单据,单据编号:%s"),
 
+
+
     //销售
     SALE_ALL_TURNOUT(72000, "该销售单已全部转出货,无法转出货单"),
     SALE_CLOSE(72001, "单据已关闭,无法进行操作"),

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

@@ -24,7 +24,7 @@ public interface BankinformationMapper extends CommonBaseMapper<Bankinformation>
     List<Bankinformation> selectBankinformationBycondition(@Param("con") String con, @Param("companyId") Long companyId);
 
     List<ComboDTO> getCombo(@Param("companyId") Long companyId);
-    String selectBankcode(String bk_bankcode);
+    String selectBankcode(@Param("bk_bankcode") String bk_bankcode, @Param("companyId") Long companyId);
     Long selectBankId(String bk_bankcode);
 
     void check(Map<String, Object> map);

+ 1 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java

@@ -52,7 +52,7 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
         bankinformation.setCreatorName(BaseContextHolder.getUserName());
         int bid = Math.toIntExact(bankinformation.getId());
 
-        String bktion = bankinformationMapper.selectBankcode(bankinformation.getBk_bankcode());
+        String bktion = bankinformationMapper.selectBankcode(bankinformation.getBk_bankcode() ,BaseContextHolder.getCompanyId());
         //先判断ID,再判断编号
         if (bankinformation.getId() == 0)
         {

+ 3 - 2
applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml

@@ -321,8 +321,9 @@
     </select>
 
 
-  <select id="selectBankcode" parameterType="java.lang.String" resultType="java.lang.String">
-        select bk_bankcode from bankinformation where bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR}
+  <select id="selectBankcode" resultType="java.lang.String">
+        select bk_bankcode from bankinformation where
+        bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR} and companyId = #{companyId}
     </select>
 
   <select id="selectBankId" parameterType="java.lang.String" resultType="java.lang.Long">

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/BanksubledgerMapper.java

@@ -38,5 +38,5 @@ public interface BanksubledgerMapper extends CommonBaseMapper<Banksubledger> {
 
     int updateBankcode(@Param("bk_thisamount") Double bk_thisamount, @Param("nowbalance") Double nowbalance,
                        @Param("bankcode") String bankcode, @Param("symbol") String symbol);
-    Double selectThisamount(String bankcode);
+    Double selectThisamount(@Param("bankcode") String bankcode, @Param("companyId") Long companyId);
 }

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java

@@ -216,8 +216,8 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         Iterator isList = fundtransferdetailList.iterator();
         while (isList.hasNext()){
             Fundtransferdetail fundtransferdetail = (Fundtransferdetail) isList.next();
-            Double amount = banksubledgerMapper.selectThisamount(fundtransferdetail.getFtd_bankcode());
-            Double inamount = banksubledgerMapper.selectThisamount(fundtransferdetail.getFtd_inbankcode());
+            Double amount = banksubledgerMapper.selectThisamount(fundtransferdetail.getFtd_bankcode(), BaseContextHolder.getCompanyId());
+            Double inamount = banksubledgerMapper.selectThisamount(fundtransferdetail.getFtd_inbankcode(), BaseContextHolder.getCompanyId());
             banksubledgerMapper.updateBankcode(amount, fundtransferdetail.getFtd_nowbalance(),
                     fundtransferdetail.getFtd_bankcode(), "+");
             banksubledgerMapper.updateBankcode(inamount, fundtransferdetail.getFtd_nowbalance(),

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

@@ -119,7 +119,7 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
         DocBaseDTO docBaseDTO = this.insert(othte);
         Long id = docBaseDTO.getId();
 
-        Double amount = banksubledgerMapper.selectThisamount(othreceipts.getOr_bankcode());
+        Double amount = banksubledgerMapper.selectThisamount(othreceipts.getOr_bankcode(), companyId);
         //取从表金额
         List<Othreceiptsdetail> othreceiptsdetailList = othte.getItems();
         Iterator isList = othreceiptsdetailList.iterator();
@@ -219,7 +219,7 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
 
 
         //更新资金
-        Double amount = banksubledgerMapper.selectThisamount(othreceipts.getOr_bankcode());
+        Double amount = banksubledgerMapper.selectThisamount(othreceipts.getOr_bankcode(), BaseContextHolder.getCompanyId());
         List<Othreceiptsdetail> othreceiptsdetailList = othreceiptsdetailMapper.selectByPrimaryKey(id);
         Iterator isList = othreceiptsdetailList.iterator();
         while (isList.hasNext()){

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java

@@ -159,7 +159,7 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         DocBaseDTO docBaseDTO = this.insert(othsp);
         Long id = docBaseDTO.getId();
 
-        Double amount = banksubledgerMapper.selectThisamount(othspendings.getOs_bankcode());
+        Double amount = banksubledgerMapper.selectThisamount(othspendings.getOs_bankcode(), companyId);
         //取从表金额
         List<Othspendingsdetail> othspendingsdetailList = othsp.getItems();
         Iterator isList = othspendingsdetailList.iterator();
@@ -253,7 +253,7 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         banksubledgerMapper.deleteByPrimaryKey(othspendings.getOs_code(), "其他支出单",BaseContextHolder.getCompanyId());
 
         //资金
-        Double amount = banksubledgerMapper.selectThisamount(othspendings.getOs_bankcode());
+        Double amount = banksubledgerMapper.selectThisamount(othspendings.getOs_bankcode(), BaseContextHolder.getCompanyId());
         //取从表金额
         List<Othspendingsdetail> othspendingsdetailList = othspendingsdetailMapper.selectByPrimaryKey(id);
         Iterator isList = othspendingsdetailList.iterator();

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

@@ -443,9 +443,9 @@
     where bk_bankcode = #{bankcode,jdbcType=VARCHAR}
   </update>
 
-    <select id="selectThisamount" resultType="java.lang.Double" parameterType="java.lang.String">
+    <select id="selectThisamount" resultType="java.lang.Double">
    select bk_thisamount from bankinformation
-    where bk_bankcode = #{bankcode,jdbcType=VARCHAR}
+    where bk_bankcode = #{bankcode,jdbcType=VARCHAR} and companyId = #{companyId}
   </select>
 
 </mapper>

+ 4 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java

@@ -38,4 +38,8 @@ public interface PurchaseMapper extends CommonBaseMapper<Purchase>{
     Integer validateProduct(@Param("id") Long id);
 
     void updateDelivery(@Param("id")Long id);
+
+    Integer checkPurchaseRequiredField(Long id);
+
+
 }

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

@@ -498,12 +498,18 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     public Result singleAudit(Long id) {
         DocBaseDTO docBaseDTO = getBaseDTOById(id);
         Result result = Result.success(docBaseDTO);
+
         //检查供应商是否开启状态
         Integer count =0;
         count = purchaseMapper.validateVendor(id);
         if (count != 0) {
             throw new BizException(BizExceptionCode.VENDOR_ISCLOSE);
         }
+        //检验必填项
+        count = getMapper().checkPurchaseRequiredField(id);
+        if (count>0){
+            throw new BizException(BizExceptionCode.REQUIREDFIELD_NULL);
+        }
         //检查物料是否开启状态
         count = purchaseMapper.validateProduct(id);
         if (count != 0) {

+ 3 - 0
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml

@@ -443,5 +443,8 @@
     update purchasedetail set PD_DELIVERY = (select PU_DELIVERY from purchase where pu_id=#{id}) where pd_puid=#{id} and PD_DELIVERY is null
   </update>
 
+  <select id="checkPurchaseRequiredField" resultType="int" parameterType="long">
+    select count(1) from purchase where pu_id = #{id} and (pu_vendid is null or pu_delivery is null or pu_shipaddresscode is null)
+  </select>
 
 </mapper>

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

@@ -552,6 +552,11 @@ public class SaleServiceImpl implements SaleService{
     @Override
     public DocBaseDTO saleTurnPurchase(Long id) {
         Sale sale = saleMapper.selectByPrimaryKey(id);
+
+        //检查销售订单是否关闭
+        if(sale.getSa_sendstatuscode().equals("CLOSE")){
+            throw new BizException(BizExceptionCode.SALE_CLOSE.getCode(),BizExceptionCode.SALE_CLOSE.getMessage());
+        }
         List<SaleList> dateilList = saleListMapper.selectSaleListByCondition("sa_id="+id,BaseContextHolder.getCompanyId());
 
         //判断是否已转采购单

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

@@ -128,6 +128,7 @@ public class StocktakingServiceImpl extends CommonBaseServiceImpl<StockTakingMap
                 prodInDetail.setCompanyId(companyId);
                 prodInDetail.setCreateTime(new Date());
                 prodInDetail.setCreatorId(userId);
+                prodInDetail.setPd_remark("盘盈单");
                 prodIODetailMapper.insertSelective(prodInDetail);
             }
             DocBaseDTO baseDTOIN = new DocBaseDTO(inid,piInno,"其它入库单");
@@ -167,6 +168,7 @@ public class StocktakingServiceImpl extends CommonBaseServiceImpl<StockTakingMap
                 prodOutDetail.setCompanyId(companyId);
                 prodOutDetail.setCreateTime(new Date());
                 prodOutDetail.setCreatorId(userId);
+                prodOutDetail.setPd_remark("盘亏单");
                 prodIODetailMapper.insertSelective(prodOutDetail);
             }
             DocBaseDTO baseDTOOUT = new DocBaseDTO(outid,piOutno,"其它出库单");

+ 1 - 1
applications/storage/storage-server/src/main/resources/mapper/StockTakingMapper.xml

@@ -266,7 +266,7 @@
     count(a.st_prodid)
     from
     (select pd_prodid,pd_whid from prodiodetail left join prodinout on pd_piid = pi_id
-    where prodinout.companyId=#{companyId,jdbcType=INTEGER} and (pi_remark='盘盈单' or pi_remark='盘亏单')) b
+    where prodinout.companyId=#{companyId,jdbcType=INTEGER} and pi_statuscode!='AUDITED' and (pi_remark='盘盈单' or pi_remark='盘亏单')) b
     left join
     (select st_prodid,st_whid from stocktaking where companyId=#{companyId} ) a
     on a.st_prodid = b.pd_prodid and a.st_whid = b.pd_whid

+ 4 - 4
base-servers/account/account-api/src/main/java/com/usoftchina/saas/account/api/CompanyApi.java

@@ -39,7 +39,7 @@ public interface CompanyApi {
      * @return
      */
     @GetMapping(path = "/company/read", params = "name")
-    Result<CompanyDTO> getCompanyByName(@RequestParam String name);
+    Result<CompanyDTO> getCompanyByName(@RequestParam("name") String name);
 
     /**
      * 按商业登记证号查找
@@ -48,7 +48,7 @@ public interface CompanyApi {
      * @return
      */
     @GetMapping(path = "/company/read", params = "businessCode")
-    Result<CompanyDTO> getCompanyByBusinessCode(@RequestParam String businessCode);
+    Result<CompanyDTO> getCompanyByBusinessCode(@RequestParam("businessCode") String businessCode);
 
     /**
      * 按企业uu查找
@@ -57,7 +57,7 @@ public interface CompanyApi {
      * @return
      */
     @GetMapping(path = "/company/read", params = "uu")
-    Result<CompanyDTO> getCompanyByUu(@RequestParam Long uu);
+    Result<CompanyDTO> getCompanyByUu(@RequestParam("uu") Long uu);
 
     /**
      * 按ID查找
@@ -66,5 +66,5 @@ public interface CompanyApi {
      * @return
      */
     @GetMapping(path = "/company/read/{id}")
-    Result<CompanyDTO> getCompanyById(@PathVariable Long id);
+    Result<CompanyDTO> getCompanyById(@PathVariable("id") Long id);
 }

+ 13 - 0
base-servers/auth/auth-dto/src/main/java/com/usoftchina/saas/auth/dto/AuthDTO.java

@@ -11,6 +11,19 @@ import java.io.Serializable;
 public class AuthDTO implements Serializable{
     private TokenDTO token;
     private AccountDTO account;
+    /**
+     * 用户登录优软云后,直接地址栏上进入saas系统.
+     * 通过cookie中的企业UU判断saas是否已开通,开通则返回companyId给前端直接登录该企业
+     */
+    private Long companyId;
+
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
 
     public AuthDTO() {
     }

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

@@ -2,14 +2,11 @@ package com.usoftchina.saas.auth.controller;
 
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.account.api.AccountApi;
+import com.usoftchina.saas.account.api.CompanyApi;
 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.account.dto.*;
 import com.usoftchina.saas.auth.common.cookie.CookieHelper;
 import com.usoftchina.saas.auth.common.cookie.CookieInfo;
-import com.usoftchina.saas.auth.common.cookie.CookieUtils;
 import com.usoftchina.saas.auth.common.jwt.JwtHelper;
 import com.usoftchina.saas.auth.common.jwt.JwtInfo;
 import com.usoftchina.saas.auth.common.jwt.JwtToken;
@@ -34,8 +31,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.http.server.reactive.ServerHttpResponse;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -57,6 +52,9 @@ public class AuthController {
     @Autowired
     private AccountApi accountApi;
 
+    @Autowired
+    private CompanyApi companyApi;
+
     @Value("${auth.public-key}")
     private String publicKeyPath;
 
@@ -66,7 +64,7 @@ public class AuthController {
     @Value("${auth.header:Authorization}")
     private String authHeader;
 
-    @Value("${auth.expire:18000}")
+    @Value("${auth.expire:1800000}")
     private int expire;
 
     @Value("${auth.max-errors:5}")
@@ -203,7 +201,12 @@ public class AuthController {
             JwtInfo jwtInfo = new JwtInfo(appId, companyId, accountDTO.getId(), accountDTO.getUsername(), accountDTO.getRealname());
             JwtToken jwtToken = JwtHelper.generateToken(jwtInfo, privateKeyPath, expire);
             TokenDTO tokenDTO = BeanMapper.map(jwtToken, TokenDTO.class);
-            return Result.success(new AuthDTO(tokenDTO, accountDTO));
+            AuthDTO authDTO = new AuthDTO(tokenDTO, accountDTO);
+            CompanyDTO companyDTO = companyApi.getCompanyByUu(info.getSpaceUU()).getData();
+            if (null != companyDTO){
+                authDTO.setCompanyId(companyDTO.getId());
+            }
+            return Result.success(authDTO);
         }
         return Result.error(ExceptionCode.COOKIE_ILLEGAL_ARGUMENT);
     }

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

@@ -185,6 +185,8 @@ auth:
     - /api/auth/info
     - /ws/**
     - /api/file/download
+    - /api/commons/excel/import/templet
+    - /api/account/resource/url/list
   cookie:
     name: uid
     secret-key: 0taQcW073Z7G628g5H

+ 9 - 1
frontend/saas-portal-web/src/components/conenter/addgongsi.vue

@@ -92,7 +92,7 @@ import VDistpicker from 'v-distpicker'
                 mytoken: JSON.parse(localStorage.getItem('app-state-session')),//本地储存的用户信息
                 reg: new RegExp(/[\@\#\$\%\&\*!\¥]/),//非法字符
                 isaddress: false,//公司地址验证
-                isname: false,//姓名验证
+                isname: true,//姓名验证
                 isspaceName: false,//公司名验证
                 isemail: true,//验证邮箱
                 disabled: true
@@ -204,7 +204,15 @@ import VDistpicker from 'v-distpicker'
                 let mobile = mytoken.account.mobile;//手机号
                 let company = {'name':qyname,'address':address,'type':qyindustry};
                 let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu}
+                // console.log('姓名',name)//个人姓名
+                // console.log('企业',qyname)//企业姓名
+                // console.log('企业名字',this.qymingzi)//企业有没有注册
+                // console.log('企业地址',this.isaddress)//企业地址
+                // console.log('姓名',this.isname)//个人姓名正则
+                // console.log('企业名字',this.isspaceName)//企业名字正则
+                // console.log('邮箱',this.isemail)//邮箱正则
                 if (name != '' && qyname != '' && this.qymingzi && this.isaddress && this.isname && this.isspaceName && this.isemail) {
+                    
                     this.$ajax({
                         url: this.$url.api+"/api/account/accountCenter/companyAccount/save",//http://192.168.253.31:8560
                         method: 'post',

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

@@ -56,7 +56,7 @@
       </div>
     </div>
 
-        <div class="gs-qiyebox" ref="qiyebox" style="margin-top: 70px;">
+        <div class="gs-qiyebox" ref="qiyebox" style="margin-top: 70px;" :class="isheigh ? 'heigh' : ''">
             <!-- 点击查看企业详情 -->
             <div v-for="(d , i) in arr " :key="i" class="gs-xiangqing xs">
                 <div class="left gs-xqleft" @click= "getEnterpriseInfo(d)">
@@ -102,7 +102,8 @@
                 isDefault: true,//开通默认
                 isAutoLogin: this.$store.state.isAutoLogin,
                 mytoken: JSON.parse(localStorage.getItem('app-state-session')),//本地储存的用户信息
-                arr: []//企业列表信息
+                arr: [],//企业列表信息
+                isheigh:true//是否添加默认高度
             }
         },
         computed :{
@@ -256,8 +257,8 @@
                 .then(res=>{
                     // console.log('请求成功',res)
                     if (res.data.success) {
-                        this.ktsass = false;
                         this.saasid = res.data.data
+                        this.ktsass = false;
                     } else {
                         this.isokopensaas = true;
                     }
@@ -293,10 +294,10 @@
             //没有内容也要有一定的高度
             boxheight(){
                 let H = this.$refs.qiyebox.offsetHeight;
-                if (H < 300) {
-                    this.$refs.qiyebox.style.height = 500+'px';
+                if (H < 400) {
+                    this.isheigh = true
                 } else {
-                    this.$refs.qiyebox.style.height = '';
+                    this.isheigh = false
                 }
             },
         }
@@ -304,5 +305,7 @@
 </script>
 
 <style scoped>
-
+.heigh {
+    height: 500px;
+}
 </style>

+ 10 - 5
frontend/saas-portal-web/src/components/conenter/enterprise.vue

@@ -137,14 +137,19 @@ import { setTimeout } from 'timers';
             },
             //退出
             loginout(){
-                this.$router.push({path:'/name'});
-                this.loginout2()
-            },
-            loginout2(){
+                //this.$router.push({path:'/name'});
                 const frame = window.frames[window.frames.length - 1]
                 frame.postMessage('', '*')
                 Session.remove()
-            } 
+                window.location.href=this.$url.sso+'/logquit?appId=sp&returnURL=https://'+window.location.host
+                // this.loginout2()
+            }
+            // ,
+            // loginout2(){
+            //     const frame = window.frames[window.frames.length - 1]
+            //     frame.postMessage('', '*')
+            //     Session.remove()
+            // } 
         },
     }
 </script>

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

@@ -41,7 +41,7 @@
           </ul>
         </div>
         </div>
-        
+
     </div>
 
     <iframe hidden :src="setTokenPage"></iframe>
@@ -114,7 +114,7 @@
           <!-- 1 -->
           <div class="ts-box">
             <div class="ts-boximg">
-              <img src="/static/img/feature/illustration1@2x.png" alt="">
+              <img src="/static/img/feature/mix13x.png" alt="">
             </div>
             <div>
               <img class="ts-img" src="/static/img/feature/blue1@2x.png" alt="">
@@ -125,14 +125,14 @@
             <div>
               <img class="ts-img" src="/static/img/feature/yellow2@2x.png" alt="">
             </div>
-            <div class="ts-boximg" style="right:0">
-              <img src="/static/img/feature/illustration2@2x.png" alt="">
+            <div class="ts-boximg">
+              <img style="float: right;" src="/static/img/feature/mix23x.png" alt="">
             </div>
           </div>
           <!-- 3 -->
           <div class="ts-box">
             <div class="ts-boximg">
-              <img src="/static/img/feature/illustration3@2x.png" alt="">
+              <img src="/static/img/feature/mix33x.png" alt="">
             </div>
             <div>
               <img class="ts-img" src="/static/img/feature/blue3@2x.png" alt="">
@@ -143,8 +143,8 @@
             <div>
               <img class="ts-img" src="/static/img/feature/yellow4@2x.png" alt="">
             </div>
-            <div class="ts-boximg" style="right:0">
-              <img src="/static/img/feature/illustration4@2x.png" alt="">
+            <div class="ts-boximg">
+              <img style="float: right;" src="/static/img/feature/mix43x.png" alt="">
             </div>
           </div>
         </div>
@@ -339,10 +339,8 @@
       }
     },
     created(){
-      var uid = this.getCookie('uid');
-      if(uid){
         this.$ajax({
-          url: '/api/auth/info',
+          url: this.$url.api+'/api/auth/info',
           method: 'get',
           async:false,
           withCredentials:true
@@ -352,11 +350,11 @@
           account.companies = account.companies || []
           session.account = account
           Session.set(session);
+          this.account = Session.getAccount();
         })
         .catch(err=>{
           console.log("请求失败",err)
         })
-      }
     },
     mounted() {
       this.clientId = Math.random().toString(36).substr(2)
@@ -379,20 +377,20 @@
       }
     },
     methods: {
-        getCookie(cookieName){  
-          var cookieValue="";  
-          if (document.cookie && document.cookie != '') {   
-              var cookies = document.cookie.split(';');  
-              for (var i = 0; i < cookies.length; i++) {   
-                  var cookie = cookies[i];  
-                  if (cookie.substring(0, cookieName.length + 2).trim() == cookieName.trim() + "=") {  
-                        cookieValue = cookie.substring(cookieName.length + 2, cookie.length);   
-                        break;  
-                  }  
-              }  
-          }   
-          return cookieValue;  
-      }, 
+      //   hasCookie(cookieName){
+      //     var hasUid=false;
+      //     if (document.cookie && document.cookie != '') {
+      //         var cookies = document.cookie.split(';');
+      //         for (var i = 0; i < cookies.length; i++) {
+      //             var cookie = cookies[i];
+      //             if (cookie.substring(0, cookieName.length+1).trim() == cookieName.trim() + "=") {
+      //                   hasUid=true;
+      //                   break;
+      //             }
+      //         }
+      //     }
+      //     return hasUid;
+      // },
       tab(i){
         this.Nowindex = i;
       },
@@ -418,7 +416,7 @@
               // 跳转应用页面
               window.location.href = me.$url.web
             }
-           } 
+           }
           }, false)
           frame.postMessage(JSON.stringify(session), '*')
         })
@@ -438,7 +436,8 @@
         const frame = window.frames[window.frames.length - 1]
         frame.postMessage('', '*')
         Session.remove()
-        this.$router.go(0); 
+        window.location.href=this.$url.sso+'/logquit?appId=sp&returnURL=https://'+window.location.host
+        //this.$router.go(0);
       },
       // 关闭窗口
       closeModal() {
@@ -495,7 +494,7 @@
                 // console.log("请求失败",err)
             })
           }
-        } 
+        }
       },
     }
   }

+ 3 - 2
frontend/saas-portal-web/src/components/footer/footer.vue

@@ -12,7 +12,7 @@
 					</div>
 					<div class="link">
 						<ul>
-							<li><span>常用链接</span></li>
+							<li><span>常用链接</span></li>
 							<li><a href="https://uas.usoftchina.com/" target="_blank">UAS官网</a></li>
 							<li><a href="https://www.usoftchina.com/" target="_blank">U软云</a></li>
 							<li><a href="http://www.yitoa.com/" target="_blank">英唐官网</a></li>
@@ -40,7 +40,8 @@
 					<div class="qr">
 						<div class="qr-top">
 							<div class="qr-tech qr-code">
-								<img src="/static/img/qr-tech.png" alt="">
+								<!-- <img src="/static/img/qr-tech.png" alt=""> -->
+								<img src="/static/img/qrusoftchina_1.jpg" alt="">
 								<div class="db-text">
 									<span>科技公众号</span>
 								</div>

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

@@ -342,6 +342,9 @@ main > section {
     position: absolute;
     top: 40px;
 }
+.ts-boximg img {
+    width: 70%;
+}
 .ts-lefttext p {
     text-align: right;
 }
@@ -359,7 +362,8 @@ main > section {
     float: right;
 }
 .ts-img {
-    width: 100%;
+    width: 96%;
+    margin-left: 2%;
 }
 .right-text {
     text-align: right;

BIN
frontend/saas-portal-web/static/img/feature/illustration1@2x.png


BIN
frontend/saas-portal-web/static/img/feature/illustration2@2x.png


BIN
frontend/saas-portal-web/static/img/feature/illustration3@2x.png


BIN
frontend/saas-portal-web/static/img/feature/illustration4@2x.png


BIN
frontend/saas-portal-web/static/img/feature/mix13x.png


BIN
frontend/saas-portal-web/static/img/feature/mix23x.png


BIN
frontend/saas-portal-web/static/img/feature/mix33x.png


BIN
frontend/saas-portal-web/static/img/feature/mix43x.png


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


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


+ 2 - 1
frontend/saas-web/app/model/sale/Saledetail.js

@@ -13,7 +13,8 @@ Ext.define('saas.model.sale.Saledetail', {
         { name: 'sd_delivery', type: 'date' },
         { name: 'sd_taxtotal', type: 'float' },
         { name: 'sd_pucode', type: 'string' },
-        { name: 'sd_text1', type: 'string' }
+        { name: 'sd_text1', type: 'string' },
+        { name: 'sd_remark', type: 'string' }
     ],
     //一对一映射
     associations: [{ type: 'hasOne', model: 'saas.model.document.Product', associationKey: 'productDTO'}]

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

@@ -131,6 +131,9 @@ Ext.define('saas.view.core.base.ImportWindow', {
                     buttonConfig:{
                         xtype:'button',
                         handler:function(b){
+                            var caller = b.ownerCt.ownerCt.ownerCt.ownerCt.caller;
+                            //获取模版
+                            window.location.href = 'http://192.168.253.58:8560/api/commons/excel/import/templet?caller='+caller;
                         }
                     }
                 },{

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

@@ -52,15 +52,6 @@ Ext.define('saas.view.core.form.FormPanel', {
         me.initFormItems();
 
         me.defaultBtns = me.defaultBtns || [{
-            cls: 'x-formpanel-btn-blue',
-            xtype: 'button',
-            text: '刷新',
-            hidden: true,
-            bind: {
-                hidden: '{!id}'
-            },
-            handler: 'refresh'
-        }, {
             cls: 'x-formpanel-btn-blue',
             xtype: 'button',
             text: '新增',
@@ -104,6 +95,15 @@ Ext.define('saas.view.core.form.FormPanel', {
                 hidden:'{!showAuditBtn}'
             },
             handler: "auditBtnClick",
+        }, {
+            cls: 'x-formpanel-btn-white',
+            xtype: 'button',
+            text: '刷新',
+            hidden: true,
+            bind: {
+                hidden: '{!id}'
+            },
+            handler: 'refresh'
         }, {
             cls:'x-formpanel-btn-white',
             text:'打印',

+ 33 - 27
frontend/saas-web/app/view/core/report/ReportPanel.js

@@ -84,42 +84,48 @@ Ext.define('saas.view.core.report.ReportPanel', {
                                     includeSummary: true
                                 }
                             }, {
-                                text: 'Excel xml',
-                                cfg: {
-                                    type: 'excel03',
-                                    ext: 'xml'
-                                }
-                            }, {
-                                text: 'Excel xml (包含分组合计)',
-                                cfg: {
-                                    type: 'excel03',
-                                    ext: 'xml',
-                                    includeGroups: true,
-                                    includeSummary: true
-                                }
-                            }, {
+                            //     text: 'Excel xml',
+                            //     cfg: {
+                            //         type: 'excel03',
+                            //         ext: 'xml'
+                            //     }
+                            // }, {
+                            //     text: 'Excel xml (包含分组合计)',
+                            //     cfg: {
+                            //         type: 'excel03',
+                            //         ext: 'xml',
+                            //         includeGroups: true,
+                            //         includeSummary: true
+                            //     }
+                            // }, {
                                 text: 'CSV',
                                 cfg: {
                                     type: 'csv'
                                 }
                             }, {
-                                text: 'TSV',
-                                cfg: {
-                                    type: 'tsv',
-                                    ext: 'csv'
-                                }
-                            }, {
-                                text: 'HTML',
-                                cfg: {
-                                    type: 'html'
-                                }
-                            }, {
-                                text: 'HTML (包含分组合计)',
+                                text: 'CSV (包含分组合计)',
                                 cfg: {
-                                    type: 'html',
+                                    type: 'csv',
                                     includeGroups: true,
                                     includeSummary: true
                                 }
+                            //     text: 'TSV',
+                            //     cfg: {
+                            //         type: 'tsv',
+                            //         ext: 'csv'
+                            //     }
+                            // }, {
+                            //     text: 'HTML',
+                            //     cfg: {
+                            //         type: 'html'
+                            //     }
+                            // }, {
+                            //     text: 'HTML (包含分组合计)',
+                            //     cfg: {
+                            //         type: 'html',
+                            //         includeGroups: true,
+                            //         includeSummary: true
+                            //     }
                             }]
                         }
                     }]

+ 1 - 1
frontend/saas-web/app/view/core/report/ReportPanelController.js

@@ -30,7 +30,7 @@ Ext.define('saas.view.core.report.ReportPanelController', {
                 }
                 //font:
             },
-            fileName: title + Ext.Date.format(new Date(),'Y-m-d_H-i-s') +'.' + (btn.cfg.ext || btn.cfg.type)
+            fileName: title + Ext.Date.format(new Date(),'Y-m-d H-i-s') +'.' + (btn.cfg.ext || btn.cfg.type)
         }, btn.cfg);
         grid.store.exportPageSize = 5000;
         grid.store.exportNumber = 1;

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

@@ -123,7 +123,8 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
                             from:'sl_namount',
                             to:'pbd_nowbalance'
                         }],
-                        defaultCondition: "sl_vendid<>0 and sl_kind in ('期初余额','采购验收单','采购验退单') and sl_namount<>0" 
+                        defaultCondition: "sl_vendid<>0 and ((sl_kind in ('采购验收单','采购验退单')) or (sl_kind='期初余额' and sl_ym="+
+                                  "'(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0'"
                     });
                 }
             },
@@ -204,7 +205,6 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
             saas.util.BaseUtil.showErrorToast(form.invalidText);
             return false;
         }
-
         var sum_pd_amount = store1.sum('pd_amount'); // 付款金额合计
         var pb_discounts = viewModel.get('pb_discounts'); // 折扣金额
         var sum_pbd_nowbalance = store2.sum('pbd_nowbalance'); // 本次核销金额合计
@@ -234,7 +234,8 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
         }else{
             c ='';
         }
-        dbfindtrigger.defaultCondition = "sl_vendid<>0 and sl_kind in ('期初余额','采购验收单','采购验退单') and sl_namount<>0" + c;
+        dbfindtrigger.defaultCondition="((sl_kind in ('采购验收单','采购验退单')) or (sl_kind='期初余额' and sl_ym="+
+        "(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0" + c
     },
     myInitCopyData: function(formData) {
         var main = formData.main;

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

@@ -137,7 +137,8 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                             from: 'sl_namount',
                             to: 'rbd_nowbalance'
                         }],
-                        defaultCondition: "sl_custid<>0 and sl_kind in ('期初余额','出货单','销售退货单') and sl_namount<>0"
+                        defaultCondition: "sl_custid<>0 and ((sl_kind in ('出货单','销售退货单')) or (sl_kind='期初余额' and sl_ym="+
+                        "'(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0'"
                     });
 
                 }
@@ -231,7 +232,8 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
         }else{
             c ='';
         }
-        dbfindtrigger.defaultCondition = "sl_custid<>0 and sl_kind in ('期初余额','出货单','销售退货单') and sl_namount<>0" + c;
+        dbfindtrigger.defaultCondition="((sl_kind in ('出货单','销售退货单')) or (sl_kind='期初余额' and sl_ym="+
+        "(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0 " + c
 
     },
     myInitCopyData: function(formData) {

+ 6 - 2
frontend/saas-web/app/view/viewport/ViewportController.js

@@ -76,7 +76,11 @@ Ext.define('saas.view.viewport.ViewportController', {
             //没有session时  判断cookie中的uid
             var hasValidCookie = Ext.util.Cookies.get('uid')?me.getAccountCookie():false;
             if(!hasValidCookie){
-                me.redirectTo('login', {replace: true});
+                if(window.location.host.indexOf('.usoftchina.com')>-1){
+                    window.location.href = Ext.manifest.server.accountCenter
+                }else{
+                    me.redirectTo('login', {replace: true});
+                }
             }else{
                 me.redirectTo('main', {replace: true});
             }
@@ -94,7 +98,7 @@ Ext.define('saas.view.viewport.ViewportController', {
     getAccountCookie:function(){
         var hasValidCookie = false;
         Ext.Ajax.request({
-            url: 'http://192.168.253.31:8560/api/auth/info',
+            url: '/api/auth/info',
             withCredentials: true,
             async:false,
             dataType: 'json',