Browse Source

Merge remote-tracking branch 'origin/dev' into dev

heqinwei 7 years ago
parent
commit
db9e5f93d7
51 changed files with 294 additions and 253 deletions
  1. 5 1
      applications/commons/commons-server/pom.xml
  2. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/CommonsApplication.java
  3. 5 74
      applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/ProductReserveCostDTO.java
  4. 4 0
      applications/document/document-server/pom.xml
  5. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/DocumentApplication.java
  6. 4 0
      applications/money/money-server/pom.xml
  7. 2 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/MoneyApplicatiion.java
  8. 4 0
      applications/sale/sale-server/pom.xml
  9. 2 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/SaleApplication.java
  10. 4 0
      applications/storage/storage-server/pom.xml
  11. 2 0
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/StorageApplication.java
  12. 3 2
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  13. 1 1
      base-servers/datacenter/datacenter-dto/src/main/java/com/usoftchina/saas/dc/dto/DataSourceInfoDTO.java
  14. 4 9
      base-servers/socket/socket-api/src/main/java/com/usoftchina/saas/socket/api/SocketMessageApi.java
  15. 60 0
      base-servers/socket/socket-api/src/main/java/com/usoftchina/saas/socket/dto/ClientMessage.java
  16. 4 0
      base-servers/socket/socket-server/pom.xml
  17. 14 8
      base-servers/socket/socket-server/src/main/java/com/usoftchina/saas/socket/controller/MessageController.java
  18. 1 0
      framework/core/src/main/java/com/usoftchina/saas/exception/ExceptionCode.java
  19. 8 5
      frontend/saas-portal-web/src/components/conenter/home.vue
  20. 0 25
      frontend/saas-portal-web/src/pages/remove-token/remove-token.html
  21. 0 0
      frontend/saas-portal-web/src/pages/remove-token/remove-token.js
  22. 0 15
      frontend/saas-portal-web/src/pages/remove-token/remove-token.vue
  23. 5 2
      frontend/saas-web/app/view/core/dbfind/types/AccountDbfindTrigger.js
  24. 3 0
      frontend/saas-web/app/view/core/dbfind/types/BankInfoDbfindTrigger.js
  25. 3 0
      frontend/saas-web/app/view/core/dbfind/types/BomDbfindTrigger.js
  26. 3 0
      frontend/saas-web/app/view/core/dbfind/types/CustomerDbfindTrigger.js
  27. 3 0
      frontend/saas-web/app/view/core/dbfind/types/EmployeeDbfindTrigger.js
  28. 3 0
      frontend/saas-web/app/view/core/dbfind/types/OriOrderMutiDbfindTrigger.js
  29. 3 0
      frontend/saas-web/app/view/core/dbfind/types/ProductAddMultiDbfindTrigger.js
  30. 3 0
      frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js
  31. 3 0
      frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js
  32. 3 0
      frontend/saas-web/app/view/core/dbfind/types/VendorDbfindTrigger.js
  33. 3 0
      frontend/saas-web/app/view/core/dbfind/types/WarehouseDbfindTrigger.js
  34. 3 0
      frontend/saas-web/app/view/core/form/RemoteCombo.js
  35. 1 2
      frontend/saas-web/app/view/document/customer/FormPanel.js
  36. 1 1
      frontend/saas-web/app/view/document/kind/ChildForm.js
  37. 2 2
      frontend/saas-web/app/view/money/report/AccountDetails.js
  38. 2 1
      frontend/saas-web/app/view/money/report/PayDetail.js
  39. 2 1
      frontend/saas-web/app/view/money/report/RecDetail.js
  40. 42 19
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js
  41. 0 22
      frontend/saas-web/app/view/purchase/purchase/FormPanelController.js
  42. 14 14
      frontend/saas-web/app/view/sale/saleIn/FormPanel.js
  43. 14 14
      frontend/saas-web/app/view/sale/saleOut/FormPanel.js
  44. 14 14
      frontend/saas-web/app/view/stock/otherIn/FormPanel.js
  45. 14 14
      frontend/saas-web/app/view/stock/otherOut/FormPanel.js
  46. 2 0
      frontend/saas-web/app/view/stock/report/DataListController.js
  47. 6 6
      frontend/saas-web/app/view/sys/guide/FormPanel.js
  48. BIN
      frontend/saas-web/resources/images/guide/background.png
  49. BIN
      frontend/saas-web/resources/images/guide/font-background.png
  50. 4 1
      frontend/saas-web/resources/othcss/imagehover.css
  51. 7 0
      pom.xml

+ 5 - 1
applications/commons/commons-server/pom.xml

@@ -66,10 +66,14 @@
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>datacenter-client</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>
-            <version>3.17</version>
         </dependency>
     </dependencies>
 

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

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.commons;
 
 import com.usoftchina.saas.auth.client.EnableAuthClient;
+import com.usoftchina.saas.server.jdbc.EnableDynamicDataSource;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -15,6 +16,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @SpringBootApplication
 @EnableEurekaClient
 @EnableTransactionManagement
+@EnableDynamicDataSource
 @EnableFeignClients("com.usoftchina.saas")
 @MapperScan("com.usoftchina.saas.commons.mapper")
 @EnableAuthClient

+ 5 - 74
applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/ProductReserveCostDTO.java

@@ -1,12 +1,14 @@
 package com.usoftchina.saas.document.dto;
 
 import com.usoftchina.saas.base.dto.CommonBaseDTO;
+import lombok.Data;
 
 import java.io.Serializable;
 
 /**
  * 物料库存数量金额表
  */
+@Data
 public class ProductReserveCostDTO extends CommonBaseDTO implements Serializable {
 
     /**
@@ -36,85 +38,14 @@ public class ProductReserveCostDTO extends CommonBaseDTO implements Serializable
     /**
      * 数量
      */
-    private String rc_number;
+    private Double rc_number;
     /**
      * 单价
      */
-    private String rc_price;
+    private Double rc_price;
     /**
      * 金额
      */
-    private String rc_amount;
+    private Double rc_amount;
 
-    public String getRc_prodCode() {
-        return rc_prodCode;
-    }
-
-    public void setRc_prodCode(String rc_prodCode) {
-        this.rc_prodCode = rc_prodCode;
-    }
-
-    public String getRc_prodDetail() {
-        return rc_prodDetail;
-    }
-
-    public void setRc_prodDetail(String rc_prodDetail) {
-        this.rc_prodDetail = rc_prodDetail;
-    }
-
-    public String getRc_prodSpec() {
-        return rc_prodSpec;
-    }
-
-    public void setRc_prodSpec(String rc_prodSpec) {
-        this.rc_prodSpec = rc_prodSpec;
-    }
-
-    public String getRc_prodUnit() {
-        return rc_prodUnit;
-    }
-
-    public void setRc_prodUnit(String rc_prodUnit) {
-        this.rc_prodUnit = rc_prodUnit;
-    }
-
-    public String getRc_whCode() {
-        return rc_whCode;
-    }
-
-    public void setRc_whCode(String rc_whCode) {
-        this.rc_whCode = rc_whCode;
-    }
-
-    public String getRc_whName() {
-        return rc_whName;
-    }
-
-    public void setRc_whName(String rc_whName) {
-        this.rc_whName = rc_whName;
-    }
-
-    public String getRc_number() {
-        return rc_number;
-    }
-
-    public void setRc_number(String rc_number) {
-        this.rc_number = rc_number;
-    }
-
-    public String getRc_price() {
-        return rc_price;
-    }
-
-    public void setRc_price(String rc_price) {
-        this.rc_price = rc_price;
-    }
-
-    public String getRc_amount() {
-        return rc_amount;
-    }
-
-    public void setRc_amount(String rc_amount) {
-        this.rc_amount = rc_amount;
-    }
 }

+ 4 - 0
applications/document/document-server/pom.xml

@@ -79,6 +79,10 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>account-dto</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>datacenter-client</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/DocumentApplication.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.document;
 
 import com.usoftchina.saas.auth.client.EnableAuthClient;
+import com.usoftchina.saas.server.jdbc.EnableDynamicDataSource;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -14,6 +15,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @EnableTransactionManagement
 @EnableFeignClients("com.usoftchina.saas")
 @MapperScan("com.usoftchina.saas.document.mapper")
+@EnableDynamicDataSource
 public class DocumentApplication {
     public static void main(String[] args) {
         SpringApplication.run(DocumentApplication.class, args);

+ 4 - 0
applications/money/money-server/pom.xml

@@ -11,6 +11,10 @@
 
     <artifactId>money-server</artifactId>
     <dependencies>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>datacenter-client</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>server-starter</artifactId>

+ 2 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/MoneyApplicatiion.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.money;
 
 import com.usoftchina.saas.auth.client.EnableAuthClient;
+import com.usoftchina.saas.server.jdbc.EnableDynamicDataSource;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -19,6 +20,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @EnableFeignClients("com.usoftchina.saas")
 @EnableAuthClient
 @MapperScan("com.usoftchina.saas.money.mapper")
+@EnableDynamicDataSource
 public class MoneyApplicatiion {
     public static void main(String[] args) {
         SpringApplication.run(MoneyApplicatiion.class, args);

+ 4 - 0
applications/sale/sale-server/pom.xml

@@ -12,6 +12,10 @@
     <artifactId>sale-server</artifactId>
     
     <dependencies>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>datacenter-client</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>sale-dto</artifactId>

+ 2 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/SaleApplication.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.sale;
 
 import com.usoftchina.saas.auth.client.EnableAuthClient;
+import com.usoftchina.saas.server.jdbc.EnableDynamicDataSource;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -17,6 +18,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
 @EnableEurekaClient
 @EnableFeignClients("com.usoftchina.saas")
 @EnableAuthClient
+@EnableDynamicDataSource
 public class SaleApplication  {
     public static void main(String[] args) {
         SpringApplication.run(SaleApplication.class, args);

+ 4 - 0
applications/storage/storage-server/pom.xml

@@ -12,6 +12,10 @@
     <artifactId>storage-server</artifactId>
 
     <dependencies>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>datacenter-client</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>document-api</artifactId>

+ 2 - 0
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/StorageApplication.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.storage;
 
 import com.usoftchina.saas.auth.client.EnableAuthClient;
+import com.usoftchina.saas.server.jdbc.EnableDynamicDataSource;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -14,6 +15,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @EnableTransactionManagement
 @EnableFeignClients("com.usoftchina.saas")
 @MapperScan("com.usoftchina.saas.storage.mapper")
+@EnableDynamicDataSource
 public class StorageApplication {
 
     public static void main(String[] args) {

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

@@ -25,6 +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.socket.dto.ClientMessage;
 import com.usoftchina.saas.utils.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -261,8 +262,8 @@ 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);
-                socketMessageApi.sendToClient(clientId, "/sso/callback",
-                        JsonUtils.toJsonString(new AuthDTO(tokenDTO, accountDTO)));
+                socketMessageApi.sendToClient(new ClientMessage(clientId, "/sso/callback",
+                        JsonUtils.toJsonString(new AuthDTO(tokenDTO, accountDTO))));
             }
             ServletUtils.writeJsonPMessage(response, callback, true);
         }

+ 1 - 1
base-servers/datacenter/datacenter-dto/src/main/java/com/usoftchina/saas/dc/dto/DataSourceInfoDTO.java

@@ -93,7 +93,7 @@ public class DataSourceInfoDTO implements Connectable, Serializable{
 
     @Override
     public String url() {
-        return String.format("jdbc:mysql://%s:%s/%s?characterEncoding=utf-8&useSSL=false",
+        return String.format("jdbc:mysql://%s:%s/%s?characterEncoding=utf-8&useSSL=false&allowMultiQueries=true",
                 dbHost, dbPort, dbRealName);
     }
 

+ 4 - 9
base-servers/socket/socket-api/src/main/java/com/usoftchina/saas/socket/api/SocketMessageApi.java

@@ -1,9 +1,10 @@
 package com.usoftchina.saas.socket.api;
 
 import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.socket.dto.ClientMessage;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * @author yingp
@@ -14,24 +15,18 @@ public interface SocketMessageApi {
     /**
      * 发送信息给指定用户
      *
-     * @param clientId
-     * @param dest
      * @param message
      * @return
      */
     @PostMapping("/message/clients")
-    Result sendToClient(@RequestParam("clientId") String clientId,
-                        @RequestParam(value = "dest", required = false) String dest,
-                        @RequestParam("message") String message);
+    Result sendToClient(@RequestBody ClientMessage message);
 
     /**
      * 广播信息
      *
-     * @param dest
      * @param message
      * @return
      */
     @PostMapping("/message/clients/all")
-    Result sendToAllClients(@RequestParam(value = "dest", required = false) String dest,
-                            @RequestParam("message") String message);
+    Result sendToAllClients(@RequestBody ClientMessage message);
 }

+ 60 - 0
base-servers/socket/socket-api/src/main/java/com/usoftchina/saas/socket/dto/ClientMessage.java

@@ -0,0 +1,60 @@
+package com.usoftchina.saas.socket.dto;
+
+import java.io.Serializable;
+
+/**
+ * @author yingp
+ * @date 2018/12/12
+ */
+public class ClientMessage implements Serializable{
+    /**
+     * 客户端ID
+     */
+    private String clientId;
+    /**
+     * destination
+     */
+    private String dest;
+    /**
+     * 消息内容
+     */
+    private String message;
+
+    public ClientMessage() {
+    }
+
+    public ClientMessage(String dest, String message) {
+        this.dest = dest;
+        this.message = message;
+    }
+
+    public ClientMessage(String clientId, String dest, String message) {
+        this.clientId = clientId;
+        this.dest = dest;
+        this.message = message;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getDest() {
+        return dest;
+    }
+
+    public void setDest(String dest) {
+        this.dest = dest;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}

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

@@ -35,6 +35,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-websocket</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>socket-api</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 14 - 8
base-servers/socket/socket-server/src/main/java/com/usoftchina/saas/socket/controller/MessageController.java

@@ -1,6 +1,10 @@
 package com.usoftchina.saas.socket.controller;
 
 import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.exception.ExceptionCode;
+import com.usoftchina.saas.socket.api.SocketMessageApi;
+import com.usoftchina.saas.socket.dto.ClientMessage;
+import com.usoftchina.saas.utils.BizAssert;
 import org.springframework.messaging.simp.SimpMessagingTemplate;
 import org.springframework.web.bind.annotation.*;
 
@@ -12,7 +16,7 @@ import javax.annotation.Resource;
  */
 @RestController
 @RequestMapping("/message")
-public class MessageController {
+public class MessageController implements SocketMessageApi{
 
     @Resource
     private SimpMessagingTemplate simpMessagingTemplate;
@@ -20,39 +24,41 @@ public class MessageController {
     /**
      * 发送信息给指定用户
      *
-     * @param clientId
-     * @param dest
      * @param message
      * @return
      */
+    @Override
     @PostMapping("/clients")
-    public Result sendToClient(@RequestParam String clientId, String dest, @RequestParam String message) {
+    public Result sendToClient(@RequestBody ClientMessage message) {
+        BizAssert.hasText(message.getClientId(), ExceptionCode.ILLEGAL_ARGUMENTS);
+        BizAssert.hasText(message.getDest(), ExceptionCode.ILLEGAL_ARGUMENTS);
         /**
          * 前端使用
          * <pre>
          *     stomp.subscribe('/clients/{clientId}/{dest}', function(message){});
          * </pre>
          */
-        simpMessagingTemplate.convertAndSendToUser(clientId, dest, message);
+        simpMessagingTemplate.convertAndSendToUser(message.getClientId(), message.getDest(), message.getMessage());
         return Result.success();
     }
 
     /**
      * 广播信息
      *
-     * @param dest
      * @param message
      * @return
      */
+    @Override
     @PostMapping("/clients/all")
-    public Result sendToAllClients(String dest, @RequestParam String message) {
+    public Result sendToAllClients(@RequestBody ClientMessage message) {
+        BizAssert.hasText(message.getDest(), ExceptionCode.ILLEGAL_ARGUMENTS);
         /**
          * 前端使用
          * <pre>
          *     stomp.subscribe('/clients/{dest}', function(message){});
          * </pre>
          */
-        simpMessagingTemplate.convertAndSend(dest, message);
+        simpMessagingTemplate.convertAndSend(message.getDest(), message.getMessage());
         return Result.success();
     }
 }

+ 1 - 0
framework/core/src/main/java/com/usoftchina/saas/exception/ExceptionCode.java

@@ -10,6 +10,7 @@ public enum ExceptionCode implements BaseExceptionCode {
     SYSTEM_TIMEOUT(-2, "系统超时,请稍候再试"),
 
     INVALID_DEFAULT_PAGE(10001, "无效默认分页参数"),
+    ILLEGAL_ARGUMENTS(20001, "参数错误"),
     // jwt token 相关 start
     // 过期
     JWT_TOKEN_EXPIRED(40001, "token超时,请检查 token 的有效期"),

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

@@ -269,11 +269,14 @@
         withCredentials:true
       })
       .then(res=>{
-        const data=res.data.data,session = data.token, account = data.account
-        account.companies = account.companies || []
-        session.account = account
-        Session.set(session);
-        this.account = Session.getAccount();
+        const data=res.data.data;
+        if(data&&data!=null){
+          const session = data.token, account = data.account
+          account.companies = account.companies || []
+          session.account = account
+          Session.set(session);
+          this.account = Session.getAccount();
+        }
       })
     },
     mounted() {

+ 0 - 25
frontend/saas-portal-web/src/pages/remove-token/remove-token.html

@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta http-equiv="X-UA-Compatible" content="ie=edge">
-    <title>Document</title>
-</head>
-<body>
-    <div id="app">hello</div>
-    <script>
-        // iframe接收消息
-        window.addEventListener('message', function(e) {
-            if (e.data == 'removeToken') {
-                if (e.source != window.parent) {
-                    return;
-                }
-                var storeKey = 'app-state-session';
-                localStorage.removeItem(storeKey);
-                window.parent.postMessage("success", "*");
-            }
-        });
-    </script>
-</body>
-</html>

+ 0 - 0
frontend/saas-portal-web/src/pages/remove-token/remove-token.js


+ 0 - 15
frontend/saas-portal-web/src/pages/remove-token/remove-token.vue

@@ -1,15 +0,0 @@
-<template>
-    <div>
-
-    </div>
-</template>
-
-<script>
-    export default {
-        
-    }
-</script>
-
-<style scoped>
-
-</style>

+ 5 - 2
frontend/saas-web/app/view/core/dbfind/types/AccountDbfindTrigger.js

@@ -15,7 +15,7 @@ Ext.define('saas.view.core.dbfind.types.AccountDbfindTrigger', {
     }],
     defaultCondition: "d.status=1",
     dbSearchFields:[{
-        emptyText:'输入账户名称或真实姓名',
+        emptyText:'输入账户名称或姓名',
         xtype : "textfield", 
         name : "search", 
         getCondition: function(v) {
@@ -34,7 +34,7 @@ Ext.define('saas.view.core.dbfind.types.AccountDbfindTrigger', {
     },{
         text: "账号名称",
         dataIndex: "username",
-        hidden:true
+        // hidden:true
     }, {
         text: "姓名",
         dataIndex: "realname",
@@ -51,6 +51,9 @@ Ext.define('saas.view.core.dbfind.types.AccountDbfindTrigger', {
         text: "岗位角色",
         dataIndex: "roleNames",
         width: 200
+    }, {
+        dataIndex: "",
+        flex: 1
     }]
 
 });

+ 3 - 0
frontend/saas-web/app/view/core/dbfind/types/BankInfoDbfindTrigger.js

@@ -56,5 +56,8 @@ Ext.define('saas.view.core.dbfind.types.BankInfoDbfindTrigger', {
         xtype: "datecolumn",
         dataIndex: "bk_date",
         width: 110
+    }, {
+        dataIndex: '',
+        flex: 1
     }]
 });

+ 3 - 0
frontend/saas-web/app/view/core/dbfind/types/BomDbfindTrigger.js

@@ -52,6 +52,9 @@ Ext.define('saas.view.core.dbfind.types.BomDbfindTrigger', {
         text: "版本",
         width: 80,
         dataIndex: "bo_version"
+    }, {
+        dataIndex: '',
+        flex: 1
     }]
 
 });

+ 3 - 0
frontend/saas-web/app/view/core/dbfind/types/CustomerDbfindTrigger.js

@@ -68,6 +68,9 @@ Ext.define('saas.view.core.dbfind.types.CustomerDbfindTrigger', {
         text: "备注",
         dataIndex: "cu_remark",
         width: 250
+    }, {
+        dataIndex: '',
+        flex: 1
     }]
 
 });

+ 3 - 0
frontend/saas-web/app/view/core/dbfind/types/EmployeeDbfindTrigger.js

@@ -53,6 +53,9 @@ Ext.define('saas.view.core.dbfind.types.EmployeeDbfindTrigger', {
         text: "邮箱",
         dataIndex: "em_email",
         width: 180
+    }, {
+        dataIndex: '',
+        flex: 1
     }]
 
 });

+ 3 - 0
frontend/saas-web/app/view/core/dbfind/types/OriOrderMutiDbfindTrigger.js

@@ -56,5 +56,8 @@ Ext.define('saas.view.core.dbfind.types.OriOrderMutiDbfindTrigger', {
         "dataIndex": "sl_date",
         "width": 110,
         xtype: 'datecolumn'
+    }, {
+        dataIndex: '',
+        flex: 1
     }]
 });

+ 3 - 0
frontend/saas-web/app/view/core/dbfind/types/ProductAddMultiDbfindTrigger.js

@@ -100,6 +100,9 @@ Ext.define('saas.view.core.dbfind.types.ProductAddMultiDbfindTrigger', {
         dataIndex: "pr_saleprice",
         xtype: 'numbercolumn',
         hidden:true
+    }, {
+        dataIndex: '',
+        flex: 1
     }]
 
 });

+ 3 - 0
frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js

@@ -100,5 +100,8 @@ Ext.define('saas.view.core.dbfind.types.ProductDbfindTrigger', {
         dataIndex: "po_avprice",
         xtype: 'numbercolumn',
         hidden:true
+    }, {
+        dataIndex: '',
+        flex: 1
     }]
 });

+ 3 - 0
frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js

@@ -107,6 +107,9 @@ Ext.define('saas.view.core.dbfind.types.ProductMultiDbfindTrigger', {
         dataIndex: "po_avprice",
         xtype: 'numbercolumn',
         hidden:true
+    }, {
+        dataIndex: '',
+        flex: 1
     }]
 
 });

+ 3 - 0
frontend/saas-web/app/view/core/dbfind/types/VendorDbfindTrigger.js

@@ -68,6 +68,9 @@ Ext.define('saas.view.core.dbfind.types.VendorDbfindTrigger', {
         text: "备注",
         dataIndex: "ve_remark",
         width: 250
+    }, {
+        dataIndex: '',
+        flex: 1
     }]
 
 });

+ 3 - 0
frontend/saas-web/app/view/core/dbfind/types/WarehouseDbfindTrigger.js

@@ -44,6 +44,9 @@ Ext.define('saas.view.core.dbfind.types.WarehouseDbfindTrigger', {
         text: "仓库类型",
         dataIndex: "wh_type",
         width: 110
+    }, {
+        dataIndex: '',
+        flex: 1
     }],
 
     onAddClick: function() {

+ 3 - 0
frontend/saas-web/app/view/core/form/RemoteCombo.js

@@ -7,6 +7,9 @@ Ext.define('saas.view.core.form.RemoteCombo', {
     displayField: 'display',
     valueField: 'value',
     queryMode: 'local',//只在组件加载的时候请求一次
+    listConfig: {
+        maxHeight: (Ext.isIE?screen.height:window.innerHeight)*0.5-50,
+    },
     initComponent: function() {
         var me = this;
         Ext.applyIf(this,{

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

@@ -163,8 +163,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
     }, {
         xtype : "employeeDbfindTrigger", 
         name : "cu_sellername", 
-        fieldLabel : "业务员", 
-        allowBlank : false, 
+        fieldLabel : "业务员",  
         columnWidth : 0.25
     },{
         xtype : "hidden", 

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

@@ -53,7 +53,7 @@ Ext.define('saas.view.document.kind.ChildForm', {
                     }
                 }).catch(function(res) {
                     saas.util.BaseUtil.showErrorToast(res.message);
-                    w.setLoading(true);
+                    w.setLoading(false);
                 })
               }
           }

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

@@ -10,7 +10,7 @@ Ext.define('saas.view.money.report.AccountDetails', {
     // groupField: null,
     listUrl: '/api/money/report/accountdetails',
     defaultCondition: null,
-    reportTitle: '核销对账表',
+    reportTitle: '核销明细表',
     QueryWidth: 0.2,
     //筛选:客户/供应商、日期、单据类型(必填)
     searchItems: [{
@@ -26,7 +26,7 @@ Ext.define('saas.view.money.report.AccountDetails', {
         datas: [
             ["采购验收单", "采购验收单"],
             ["采购验退单", "采购验退单"],
-            ["出货单", "出货单"],
+            ["出货单", "销售出货单"],
             ["销售退货单", "销售退货单"],
             ["完工入库单", "完工入库单"],
             ["生产领料单", "生产领料单"],

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

@@ -129,8 +129,9 @@ Ext.define('saas.view.money.report.PayDetail', {
                 var d = data[i];
                 var n = Number(d[dataIndex]);
                 var v = isNaN(n) ? 0 : n;
+                var gv = d[groupField];
 
-                lasts[groupField] = v;
+                lasts[gv] = v;
             }
 
             keys = Ext.Object.getAllKeys(lasts);

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

@@ -137,8 +137,9 @@ Ext.define('saas.view.money.report.RecDetail', {
                 var d = data[i];
                 var n = Number(d[dataIndex]);
                 var v = isNaN(n) ? 0 : n;
+                var gv = d[groupField];
 
-                lasts[groupField] = v;
+                lasts[gv] = v;
             }
 
             keys = Ext.Object.getAllKeys(lasts);

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

@@ -172,6 +172,21 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                             var format = '0,000.' + xr.join('');
                             return Ext.util.Format.number(v, format);
                         },
+                    }, 
+                    {
+                        text : "税率", 
+                        xtype: 'numbercolumn',
+                        dataIndex : "pd_taxrate", 
+                        width : 80.0,
+                        editor : {
+                            xtype : "numberfield",
+                            decimalPrecision: 0,
+                            minValue: 0,
+                            maxValue: 100
+                        },
+                        renderer : function(v) {
+                            return Ext.util.Format.number(v, '0');
+                        }
                     },
                     {
                         text : "已转数", 
@@ -197,21 +212,6 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                             var format = '0.' + xr.join('');
                             return Ext.util.Format.number(v, format);
                         }
-                    }, 
-                    {
-                        text : "税率", 
-                        xtype: 'numbercolumn',
-                        dataIndex : "pd_taxrate", 
-                        width : 80.0,
-                        editor : {
-                            xtype : "numberfield",
-                            decimalPrecision: 0,
-                            minValue: 0,
-                            maxValue: 100
-                        },
-                        renderer : function(v) {
-                            return Ext.util.Format.number(v, '0');
-                        }
                     },{
                         text : "需求日期", 
                         dataIndex : "pd_delivery", 
@@ -287,7 +287,8 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                     {
                         text : "关联销售单号", 
                         dataIndex : "pd_salecode", 
-                        width : 150.0
+                        width : 150.0,
+                        ignore:true,
                     },{
                         text : "备注", 
                         dataIndex : "pd_remark",
@@ -383,7 +384,29 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
             hidden: '{turnHidden}'
         },
          handler: 'turnIn'
-     }]
-
-
+     }],
+     initFormData: function(data) {
+        var me = this;
+        me.setFormData(data);
+        if(data.main.pu_statuscode!='AUDITED'&&!data.main.pu_shipaddresscode){
+            //读取默认地址
+            saas.util.BaseUtil.request({
+                url: '/api/document/address/getDefault',
+                method: 'GET',
+            })
+            .then(function (localJson) {
+                var data = localJson.data;
+                if(data&&data.ad_address){
+                    var f = me.down('[name=pu_shipaddresscode]');
+                    f.setValue(data.ad_address)
+                }else{
+                    saas.util.BaseUtil.showErrorToast('未设置默认采购交货地址,维护后新增会自动给采购交货地址赋默认值');
+                }
+            })
+            .catch(function (res) {
+                saas.util.BaseUtil.showErrorToast('获取默认采购交货地址失败' + res.message);
+            });
+        }
+        me.clearDirty();
+    }
 });

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

@@ -61,28 +61,6 @@ Ext.define('saas.view.purchase.purchase.FormPanelController', {
                     });
 
                 }
-            },
-            'remotecombo[name=pu_shipaddresscode]':{
-                afterrender:function(f){
-                    if(f.ownerCt.initId==0){
-                        //读取默认地址
-                        saas.util.BaseUtil.request({
-                            url: '/api/document/address/getDefault',
-                            method: 'GET',
-                        })
-                        .then(function (localJson) {
-                            var data = localJson.data;
-                            if(data&&data.ad_address){
-                                f.setValue(data.ad_address)
-                            }else{
-                                saas.util.BaseUtil.showErrorToast('未设置默认采购交货地址,维护后新增会自动给采购交货地址赋默认值');
-                            }
-                        })
-                        .catch(function (res) {
-                            saas.util.BaseUtil.showErrorToast('获取默认采购交货地址失败' + res.message);
-                        });
-                    }
-                }
             }
         });
     },

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

@@ -228,6 +228,20 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                     var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
+            }, {
+                text : "税率", 
+                xtype: 'numbercolumn',
+                dataIndex : "pd_taxrate", 
+                width : 80.0, 
+                editor : {
+                    xtype : "numberfield",
+                    decimalPrecision: 0,
+                    minValue: 0,
+                    maxValue: 100
+                },
+                renderer : function(v) {
+                    return Ext.util.Format.number(v, '0');
+                },
             }, 
            {
                 text : "含税金额", 
@@ -247,20 +261,6 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                     var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
-            }, {
-                text : "税率", 
-                xtype: 'numbercolumn',
-                dataIndex : "pd_taxrate", 
-                width : 80.0, 
-                editor : {
-                    xtype : "numberfield",
-                    decimalPrecision: 0,
-                    minValue: 0,
-                    maxValue: 100
-                },
-                renderer : function(v) {
-                    return Ext.util.Format.number(v, '0');
-                },
             },
             {
                 text : "未税金额", 

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

@@ -240,6 +240,20 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
                     var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
+            }, {
+                text : "税率", 
+                xtype: 'numbercolumn',
+                dataIndex : "pd_taxrate", 
+                width : 80.0, 
+                editor : {
+                    xtype : "numberfield",
+                    decimalPrecision: 0,
+                    minValue: 0,
+                    maxValue: 100
+                }, 
+                renderer : function(v) {
+                    return Ext.util.Format.number(v, '0');
+                }
             }, 
            {
                 text : "含税金额", 
@@ -259,20 +273,6 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
                     var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
-            }, {
-                text : "税率", 
-                xtype: 'numbercolumn',
-                dataIndex : "pd_taxrate", 
-                width : 80.0, 
-                editor : {
-                    xtype : "numberfield",
-                    decimalPrecision: 0,
-                    minValue: 0,
-                    maxValue: 100
-                }, 
-                renderer : function(v) {
-                    return Ext.util.Format.number(v, '0');
-                }
             },
             {
                 text : "未税金额", 

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

@@ -220,6 +220,20 @@ Ext.define('saas.view.stock.otherIn.FormPanel', {
                     var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
+            }, {
+                text : "税率", 
+                xtype: 'numbercolumn',
+                dataIndex : "pd_taxrate", 
+                width : 80.0,
+                editor : {
+                    xtype : "numberfield",
+                    decimalPrecision: 0,
+                    minValue: 0,
+                    maxValue: 100
+                },
+                renderer : function(v) {
+                    return Ext.util.Format.number(v, '0');
+                }
             }, 
            {
                 text : "含税金额", 
@@ -244,20 +258,6 @@ Ext.define('saas.view.stock.otherIn.FormPanel', {
                     var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
-            }, {
-                text : "税率", 
-                xtype: 'numbercolumn',
-                dataIndex : "pd_taxrate", 
-                width : 80.0,
-                editor : {
-                    xtype : "numberfield",
-                    decimalPrecision: 0,
-                    minValue: 0,
-                    maxValue: 100
-                },
-                renderer : function(v) {
-                    return Ext.util.Format.number(v, '0');
-                }
             },
             {
                 text : "未税金额", 

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

@@ -198,6 +198,20 @@ Ext.define('saas.view.stock.otherOut.FormPanel', {
                     var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
+            }, {
+                text: "税率",
+                xtype: 'numbercolumn',
+                dataIndex: "pd_taxrate", 
+                width : 80.0,
+                editor : {
+                    xtype : "numberfield",
+                    decimalPrecision: 0,
+                    minValue: 0,
+                    maxValue: 100
+                },
+                renderer : function(v) {
+                    return Ext.util.Format.number(v, '0');
+                }
             },
             {
                 text: "含税金额",
@@ -217,20 +231,6 @@ Ext.define('saas.view.stock.otherOut.FormPanel', {
                     var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
-            }, {
-                text: "税率",
-                xtype: 'numbercolumn',
-                dataIndex: "pd_taxrate", 
-                width : 80.0,
-                editor : {
-                    xtype : "numberfield",
-                    decimalPrecision: 0,
-                    minValue: 0,
-                    maxValue: 100
-                },
-                renderer : function(v) {
-                    return Ext.util.Format.number(v, '0');
-                }
             },
             {
                 text: "未税金额",

+ 2 - 0
frontend/saas-web/app/view/stock/report/DataListController.js

@@ -8,6 +8,7 @@ Ext.define('saas.view.stock.report.DataListController', {
         form = reportPanel.down('form'),
         grid = reportPanel.down('grid'),
         columns = grid.columns,
+        mySummaryBar = grid.getDockedItems()[2],
         toggleColumns = [],
         store = grid.store;
 
@@ -31,6 +32,7 @@ Ext.define('saas.view.stock.report.DataListController', {
             con.columnWidth = 0.65;
             reportPanel.queryMode = 'MAIN';
         }
+        mySummaryBar.setHidden(newValue);
         
         form.updateLayout();
         toggleColumns.map(function(c) {

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

@@ -63,7 +63,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
                         '<figure style="margin: 0 185px 0 180px;cursor: pointer;" align="center" class="imghvr-zoom-out" onClick="showInformation(\'baseSet\')">',
                         '<img class="',
                             '<tpl if="!baseSet">x-guide-mask </tpl>',
-                            '" src="resources/images/guide/baseSet.png" style="background: #d5efff;" align ="center" width="135" height="90" alt="基础设置"  >',
+                            '" src="resources/images/guide/baseSet.png" align ="center" width="135" height="90" alt="基础设置"  >',
                         '<figcaption>',
                         '公司信息、权限和账户管理',
                         '</figcaption>',
@@ -72,7 +72,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
                         '<figure style="margin:0 185px 0 0;cursor: pointer;" align="center" class="imghvr-zoom-out" onClick="showInformation(\'warehouse\')">',
                         '<img class="',
                         '<tpl if="!warehouse">x-guide-mask </tpl>',
-                        '"src="resources/images/guide/warehouse.png" style="background: #d5efff;" align ="center" width="135" height="90" alt="仓库资料"  >',
+                        '"src="resources/images/guide/warehouse.png" align ="center" width="135" height="90" alt="仓库资料"  >',
                         '<figcaption>',
                         '仓库信息管理',
                         '</figcaption>',
@@ -81,7 +81,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
                         '<figure style="margin:0 185px 0 0;cursor: pointer;" align="center" class="imghvr-zoom-out" onClick="showInformation(\'product\')">',
                         '<img class="',
                         '<tpl if="!product">x-guide-mask </tpl>',
-                        '"src="resources/images/guide/product.png" style="background: #d5efff;" align ="center" width="135" height="90" alt="物料资料"  >',
+                        '"src="resources/images/guide/product.png" align ="center" width="135" height="90" alt="物料资料"  >',
                         '<figcaption>',
                         '物料信息管理',
                         '</figcaption>',
@@ -122,7 +122,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
                         '<figure style="margin: 40px 185px 0 182px;cursor: pointer;" align="center" class="imghvr-zoom-out" onClick="showInformation(\'customer\')">',
                         '<img class="',
                         '<tpl if="!customer">x-guide-mask </tpl>',
-                        '"src="resources/images/guide/customer.png" style="background: #ffffff;" align ="center" width="135" height="90" alt="客户资料"  >',
+                        '"src="resources/images/guide/customer.png" align ="center" width="135" height="90" alt="客户资料"  >',
                         '<figcaption>',
                         '客户信息管理',
                         '</figcaption>',
@@ -131,7 +131,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
                         '<figure style="margin: 0px 185px 0 0px;cursor: pointer;" align="center" class="imghvr-zoom-out" onClick="showInformation(\'vendor\')">',
                         '<img class="',
                         '<tpl if="!vendor">x-guide-mask </tpl>',
-                        '"src="resources/images/guide/vendor.png" style="background: #ffffff;" align ="center" width="135" height="90" alt="供应商资料"  >',
+                        '"src="resources/images/guide/vendor.png" align ="center" width="135" height="90" alt="供应商资料"  >',
                         '<figcaption>',
                         '供应商信息管理',
                         '</figcaption>',
@@ -140,7 +140,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
                         '<figure style="margin: 0 185px 0 0px;cursor: pointer;" align="center" class="imghvr-zoom-out" onClick="showInformation(\'begin\',\'{begin}\')">',
                         '<img class="',
                         '<tpl if="!begin">x-guide-mask </tpl>',
-                        '" src="resources/images/guide/begin.png" style="background: #ffffff;" align ="center" width="135" height="90" alt="开始使用"  >',
+                        '" src="resources/images/guide/begin.png" align ="center" width="135" height="90" alt="开始使用"  >',
                         '<figcaption>',
                         '开启U企云服务',
                         '</figcaption>',

BIN
frontend/saas-web/resources/images/guide/background.png


BIN
frontend/saas-web/resources/images/guide/font-background.png


+ 4 - 1
frontend/saas-web/resources/othcss/imagehover.css

@@ -13,7 +13,7 @@
   display: inline-block;
   margin: 0px;
   max-width: 100%;
-  background-color: rgb(52, 186, 246);
+  /* background-color: rgb(52, 186, 246); */
   color: #fff;
   overflow: hidden;
   -webkit-backface-visibility: hidden;
@@ -754,6 +754,9 @@
   -webkit-transform: scale(1);
   transform: scale(1);
   opacity: 1;
+  background-position: center;
+  background-repeat: no-repeat;
+  background-image: url(../../../../resources/images/guide/font-background.png);
   -webkit-transition-delay: 0.3s;
   transition-delay: 0.3s;
 }

+ 7 - 0
pom.xml

@@ -43,6 +43,7 @@
         <docker.registry.name>saas</docker.registry.name>
         <guava.version>18.0</guava.version>
         <fastdfs.client.version>1.26.3</fastdfs.client.version>
+        <poi.version>3.17</poi.version>
     </properties>
 
     <repositories>
@@ -371,6 +372,12 @@
                 <artifactId>commons-compress</artifactId>
                 <version>${commons.compress.version}</version>
             </dependency>
+            <!--excel-->
+            <dependency>
+                <groupId>org.apache.poi</groupId>
+                <artifactId>poi-ooxml</artifactId>
+                <version>${poi.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>