hy 7 years ago
parent
commit
580e608517
57 changed files with 857 additions and 402 deletions
  1. 3 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  2. 9 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/FundtransferController.java
  3. 9 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthreceiptsController.java
  4. 9 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthspengdingsController.java
  5. 6 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java
  6. 6 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/RecbalanceContorller.java
  7. 10 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Paybalance.java
  8. 20 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Paybalancedetail.java
  9. 9 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Recbalance.java
  10. 19 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Recbalancedetail.java
  11. 16 5
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  12. 22 9
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  13. 6 6
      applications/money/money-server/src/main/resources/mapper/FundtransferdetailMapper.xml
  14. 10 6
      applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml
  15. 9 4
      applications/money/money-server/src/main/resources/mapper/PaybalancedetailMapper.xml
  16. 11 6
      applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml
  17. 8 3
      applications/money/money-server/src/main/resources/mapper/RecbalancedetailMapper.xml
  18. 8 0
      frontend/saas-web/app/model/home/Info.js
  19. 2 31
      frontend/saas-web/app/view/core/form/FormPanel.js
  20. 4 1
      frontend/saas-web/app/view/core/form/FormPanel.scss
  21. 2 1
      frontend/saas-web/app/view/core/form/FormPanelController.js
  22. 5 4
      frontend/saas-web/app/view/core/form/MseeageLog.js
  23. 1 1
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  24. 14 14
      frontend/saas-web/app/view/core/form/field/Month.js
  25. 3 2
      frontend/saas-web/app/view/core/query/QueryFormPanel.js
  26. 2 2
      frontend/saas-web/app/view/core/query/QueryPanel.js
  27. 0 1
      frontend/saas-web/app/view/core/query/QueryPanel.scss
  28. 8 8
      frontend/saas-web/app/view/document/kind/Kind.js
  29. 6 31
      frontend/saas-web/app/view/home/Home.js
  30. 28 8
      frontend/saas-web/app/view/home/Home.scss
  31. 67 2
      frontend/saas-web/app/view/home/HomeModel.js
  32. 95 93
      frontend/saas-web/app/view/home/InfoCard.js
  33. 47 35
      frontend/saas-web/app/view/home/InfoCard.scss
  34. 60 34
      frontend/saas-web/app/view/main/Main.js
  35. 21 31
      frontend/saas-web/app/view/main/Main.scss
  36. 1 1
      frontend/saas-web/app/view/main/MainContainerWrap.js
  37. 23 0
      frontend/saas-web/app/view/main/MainController.js
  38. 15 18
      frontend/saas-web/app/view/money/fundtransfer/FormPanel.js
  39. 2 2
      frontend/saas-web/app/view/money/fundtransfer/FormPanelController.js
  40. 9 5
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  41. 0 1
      frontend/saas-web/app/view/money/payBalance/QueryPanel.js
  42. 7 3
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  43. 1 1
      frontend/saas-web/app/view/money/recBalance/FormPanelController.js
  44. 2 2
      frontend/saas-web/app/view/money/report/CustomerCheck.js
  45. 0 29
      frontend/saas-web/app/view/sale/sale/FormPanelController.js
  46. 48 0
      frontend/saas-web/app/view/sys/feedback/FormPanel.js
  47. 16 0
      frontend/saas-web/app/view/sys/feedback/FormPanelController.js
  48. 4 0
      frontend/saas-web/app/view/sys/feedback/FormPanelModel.js
  49. 1 1
      frontend/saas-web/app/view/viewport/ViewportModel.js
  50. 145 0
      frontend/saas-web/overrides/form/field/Number.js
  51. BIN
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.eot
  52. 0 0
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.js
  53. 0 0
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.svg
  54. BIN
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.ttf
  55. BIN
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.woff
  56. 2 0
      frontend/saas-web/packages/font-saas/sass/etc/icons.scss
  57. 26 0
      frontend/saas-web/resources/json/info.json

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

@@ -28,6 +28,9 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
     @Override
     public boolean save(Bankinformation bankinformation){
         bankinformation.setCompanyId(BaseContextHolder.getCompanyId());
+        if (bankinformation.getBk_thisamount() == null || bankinformation.getBk_thisamount() == 0){
+            bankinformation.setBk_thisamount(bankinformation.getBk_beginamount());
+        }
         if(bankinformation.getId() == 0){
             bankinformationMapper.insertSelective(bankinformation);
         }else{

+ 9 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/FundtransferController.java

@@ -10,6 +10,7 @@ import com.usoftchina.saas.money.po.Fundtransfer;
 import com.usoftchina.saas.money.service.FundtransferService;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -22,6 +23,7 @@ public class FundtransferController {
     @Autowired
     private FundtransferService fundtransferService;
 
+    @Transactional
     @RequestMapping("/save")
     public Result insert(@RequestBody Fundtran body) {
         DocBaseDTO docBaseDTO = fundtransferService.insert(body);
@@ -29,30 +31,35 @@ public class FundtransferController {
     }
 
 
+    @Transactional
     @PostMapping("/delete/{id}")
     public Result delete(@PathVariable("id") int id){
         fundtransferService.delete(id);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/deleteDetail/{id}")
     public Result deleteItem(@PathVariable("id") int id){
         fundtransferService.deleteItem(id);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchDelete")
     public Result funBatchDelete(@RequestBody BatchDealBaseDTO body){
         fundtransferService.fundtransferDelete(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchAudit")
     public Result funBatchAudit(@RequestBody BatchDealBaseDTO body){
         fundtransferService.fundtransferBatchAudit(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchUnAudit")
     public Result funBatchUnAudit(@RequestBody BatchDealBaseDTO body){
         fundtransferService.fundtransferBatchUnAudit(body);
@@ -70,12 +77,14 @@ public class FundtransferController {
         return Result.success(list);
     }
 
+    @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Fundtran body){
         fundtransferService.audit(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/unAudit/{id}")
     public Result unAudit(@PathVariable("id") int id){
         fundtransferService.unAudit(id);

+ 9 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthreceiptsController.java

@@ -10,6 +10,7 @@ import com.usoftchina.saas.money.po.Othte;
 import com.usoftchina.saas.money.service.OthreceiptsService;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -22,6 +23,7 @@ public class OthreceiptsController {
     @Autowired
     private OthreceiptsService othreceiptsService;
 
+    @Transactional
     @RequestMapping("/save")
     public Result insert(@RequestBody Othte body) {
         DocBaseDTO docBaseDTO = othreceiptsService.insert(body);
@@ -29,12 +31,14 @@ public class OthreceiptsController {
     }
 
 
+    @Transactional
     @PostMapping("/delete/{id}")
     public Result deletePaybalance(@PathVariable("id") int id){
         othreceiptsService.delete(id);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/deleteDetail/{id}")
     public Result deleteItem(@PathVariable("id") int id){
         othreceiptsService.deleteItem(id);
@@ -52,30 +56,35 @@ public class OthreceiptsController {
         return Result.success(list);
     }
 
+    @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Othte body){
         othreceiptsService.audit(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/unAudit/{id}")
     public Result unAudit(@PathVariable("id") int id){
         othreceiptsService.unAudit(id);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchDelete")
     public Result othreceiptsBatchDelete(@RequestBody BatchDealBaseDTO body){
         othreceiptsService.othreceiptsDelete(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchAudit")
     public Result othreceiptsBatchAudit(@RequestBody BatchDealBaseDTO body){
         othreceiptsService.othreceiptsBatchAudit(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchUnAudit")
     public Result othreceiptsBatchUnAudit(@RequestBody BatchDealBaseDTO body){
         othreceiptsService.othreceiptsBatchUnAudit(body);

+ 9 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthspengdingsController.java

@@ -13,6 +13,7 @@ import com.usoftchina.saas.money.service.OthspendingsService;
 import com.usoftchina.saas.page.PageRequest;
 import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -25,6 +26,7 @@ public class OthspengdingsController {
     @Autowired
     private OthspendingsService othspendingsService;
 
+    @Transactional
     @RequestMapping("/save")
     public Result insert(@RequestBody Othsp body) {
         DocBaseDTO docBaseDTO = othspendingsService.insert(body);
@@ -32,12 +34,14 @@ public class OthspengdingsController {
     }
 
 
+    @Transactional
     @PostMapping("/delete/{id}")
     public Result deletePaybalance(@PathVariable("id") int id){
         othspendingsService.delete(id);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/deleteDetail/{id}")
     public Result deleteItem(@PathVariable("id") int id){
         othspendingsService.deleteItem(id);
@@ -55,30 +59,35 @@ public class OthspengdingsController {
         return Result.success(list);
     }
 
+    @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Othsp body){
         othspendingsService.audit(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/unAudit/{id}")
     public Result unAudit(@PathVariable("id") int id){
         othspendingsService.unAudit(id);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchDelete")
     public Result othspendingsBatchDelete(@RequestBody BatchDealBaseDTO body){
         othspendingsService.othspendingBatchDelete(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchAudit")
     public Result othspendingsBatchAudit(@RequestBody BatchDealBaseDTO body){
         othspendingsService.othspendingBatchAudit(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchUnAudit")
     public Result othspendingsBatchUnAudit(@RequestBody BatchDealBaseDTO body){
         othspendingsService.othspendingBatchUnAudit(body);

+ 6 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java

@@ -30,19 +30,21 @@ public class PaybalanceController {
         return Result.success(docBaseDTO);
     }
 
-
+    @Transactional
     @PostMapping("/delete/{id}")
     public Result deletePaybalance(@PathVariable("id") int id){
         paybalanceService.delete(id);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/deleteDetail/{id}")
     public Result deleteItem(@PathVariable("id") int id){
         paybalanceService.deleteItem(id);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/deleteDetai2/{id}")
     public Result deleteItems(@PathVariable("id") int id){
         paybalanceService.deleteItems(id);
@@ -74,18 +76,21 @@ public class PaybalanceController {
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchDelete")
     public Result payBatchDelete(@RequestBody BatchDealBaseDTO body){
         paybalanceService.paybalanceDelete(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchAudit")
     public Result payBatchAudit(@RequestBody BatchDealBaseDTO body){
         paybalanceService.paybalanceBatchAudit(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchUnAudit")
     public Result payBatchUnAudit(@RequestBody BatchDealBaseDTO body){
         paybalanceService.paybalanceBatchUnAudit(body);

+ 6 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/RecbalanceContorller.java

@@ -32,18 +32,21 @@ public class RecbalanceContorller {
         return Result.success(docBaseDTO);
     }
 
+    @Transactional
     @PostMapping("/delete/{id}")
     public Result delete(@PathVariable("id") int id){
         recbalanceService.delete(id);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/deleteDetail1/{id}")
     public Result deleteItem(@PathVariable("id") int id){
         recbalanceService.deleteItem(id);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/deleteDetail2/{id}")
     public Result deleteItems(@PathVariable("id") int id){
         recbalanceService.deleteItems(id);
@@ -74,18 +77,21 @@ public class RecbalanceContorller {
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchDelete")
     public Result recbalanceBatchDelete(@RequestBody BatchDealBaseDTO body){
         recbalanceService.recbalanceDelete(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchAudit")
     public Result recbalanceBatchAudit(@RequestBody BatchDealBaseDTO body){
         recbalanceService.recbalanceBatchAudit(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/batchUnAudit")
     public Result recbalanceBatchUnAudit(@RequestBody BatchDealBaseDTO body){
         recbalanceService.recbalanceBatchUnAudit(body);

+ 10 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Paybalance.java

@@ -61,6 +61,8 @@ public class Paybalance extends CommonBaseEntity implements Serializable {
 
     private String pb_text5;
 
+    private Double ve_leftamount;
+
     public Date getUpdatedate() {
         return updatedate;
     }
@@ -252,4 +254,12 @@ public class Paybalance extends CommonBaseEntity implements Serializable {
     public void setPb_text5(String pb_text5) {
         this.pb_text5 = pb_text5 == null ? null : pb_text5.trim();
     }
+
+    public Double getVe_leftamount() {
+        return ve_leftamount;
+    }
+
+    public void setVe_leftamount(Double ve_leftamount) {
+        this.ve_leftamount = ve_leftamount;
+    }
 }

+ 20 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Paybalancedetail.java

@@ -40,6 +40,10 @@ public class Paybalancedetail extends CommonBaseEntity implements Serializable {
     private String pbd_text5;
     private Date pb_date;
 
+    private Double sl_yamount;
+
+    private Double sl_namount;
+
     public Date getPb_date() {
         return pb_date;
     }
@@ -175,4 +179,20 @@ public class Paybalancedetail extends CommonBaseEntity implements Serializable {
     public void setPbd_text5(String pbd_text5) {
         this.pbd_text5 = pbd_text5;
     }
+
+    public Double getSl_yamount() {
+        return sl_yamount;
+    }
+
+    public void setSl_yamount(Double sl_yamount) {
+        this.sl_yamount = sl_yamount;
+    }
+
+    public Double getSl_namount() {
+        return sl_namount;
+    }
+
+    public void setSl_namount(Double sl_namount) {
+        this.sl_namount = sl_namount;
+    }
 }

+ 9 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Recbalance.java

@@ -61,6 +61,8 @@ public class Recbalance extends CommonBaseEntity implements Serializable {
 
     private String rb_text5;
 
+    private Double cu_leftamount;
+
     public Date getUpdatedate() {
         return updatedate;
     }
@@ -253,4 +255,11 @@ public class Recbalance extends CommonBaseEntity implements Serializable {
         this.rb_text5 = rb_text5 == null ? null : rb_text5.trim();
     }
 
+    public Double getCu_leftamount() {
+        return cu_leftamount;
+    }
+
+    public void setCu_leftamount(Double cu_leftamount) {
+        this.cu_leftamount = cu_leftamount;
+    }
 }

+ 19 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Recbalancedetail.java

@@ -39,6 +39,9 @@ public class Recbalancedetail extends CommonBaseEntity implements Serializable {
     private String rbd_text5;
     private Date rb_date;
 
+    private Double sl_yamount;
+
+    private Double sl_namount;
 
     public Date getRb_date() {
         return rb_date;
@@ -176,6 +179,22 @@ public class Recbalancedetail extends CommonBaseEntity implements Serializable {
         this.updatedate = updatedate;
     }
 
+    public Double getSl_yamount() {
+        return sl_yamount;
+    }
+
+    public void setSl_yamount(Double sl_yamount) {
+        this.sl_yamount = sl_yamount;
+    }
+
+    public Double getSl_namount() {
+        return sl_namount;
+    }
+
+    public void setSl_namount(Double sl_namount) {
+        this.sl_namount = sl_namount;
+    }
+
     @Override
     public String toString() {
         return "Recbalancedetail{" +

+ 16 - 5
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java

@@ -224,11 +224,13 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount-amountTotal2-preamount-amountTotal);
         paybalanceMapper.updateVendorByPrimaryKeySelective(vendor);
 
-        for (Paybalancedetail detail:paybalancedetail) {
-            Subledger subledger1 = new Subledger();
-            subledger1.setId(Long.valueOf(String.valueOf(detail.getPbd_slid())));
-            subledger1.setSl_yamount(detail.getPbd_nowbalance()+detail.getPbd_amount());
-            subledgerMapper.updateByPrimaryKeySelective(subledger1);
+        for (Paybalancedetail detail: paybalancedetail) {
+            Subledger newsubledger = new Subledger();
+            Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getPbd_slid());
+            newsubledger.setId(Long.valueOf(String.valueOf(detail.getPbd_slid())));
+            newsubledger.setSl_yamount(detail.getPbd_nowbalance()+nowSubledger.getSl_yamount());//已核销
+            newsubledger.setSl_namount(nowSubledger.getSl_namount()-detail.getPbd_nowbalance());//未核销
+            subledgerMapper.updateByPrimaryKeySelective(newsubledger);
         }
     }
 
@@ -265,6 +267,15 @@ public class PaybalanceServiceImpl implements PaybalanceService {
             paybalanceMapper.updateBankByPrimaryKeySelective(bankinformation);
         }
 
+        List<Paybalancedetail> paybalancedetail = paybalancedetailMapper.selectByPrimaryKey(id);
+        for(Paybalancedetail detail: paybalancedetail) {
+            Subledger subledger1 = new Subledger();
+            Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getPbd_slid());
+            subledger1.setId(Long.valueOf(String.valueOf(detail.getPbd_slid())));
+            subledger1.setSl_yamount(nowSubledger.getSl_yamount()-detail.getPbd_nowbalance());//已核销
+            subledger1.setSl_namount(nowSubledger.getSl_namount()+detail.getPbd_nowbalance());//未核销
+            subledgerMapper.updateByPrimaryKeySelective(subledger1);
+        }
 
         Paybalance paybalance = new Paybalance();
         paybalance.setId(Long.valueOf(id));

+ 22 - 9
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java

@@ -244,16 +244,19 @@ public class RecbalanceServiceImpl implements RecbalanceService {
 
         Customer customer = new Customer();
         customer.setId(Long.valueOf(String.valueOf(recbalance.getRb_custid())));
-        customer.setCu_preamount(preamount + amountTotal);
-        customer.setCu_recamount(recamount - amountTotal2);
-        customer.setCu_leftamount(beginapamount - beginprepayamount + recamount - amountTotal2 - preamount - amountTotal);
+        customer.setId(Long.valueOf(String.valueOf(recbalance.getRb_custid())));
+        customer.setCu_preamount(preamount+amountTotal);
+        customer.setCu_recamount(recamount-amountTotal2);
+        customer.setCu_leftamount(beginapamount-beginprepayamount+recamount-amountTotal2-preamount-amountTotal);
         recbalanceMapper.updateCustomerByPrimaryKeySelective(customer);
 
         //更新本次核销金额
-        for (Recbalancedetail detail:recbalancedetail) {
+        for (Recbalancedetail detail: recbalancedetail) {
             Subledger subledger1 = new Subledger();
+            Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getRbd_slid());
             subledger1.setId(Long.valueOf(String.valueOf(detail.getRbd_slid())));
-            subledger1.setSl_yamount(detail.getRbd_nowbalance() - detail.getRbd_amount());
+            subledger1.setSl_yamount(detail.getRbd_nowbalance() + nowSubledger.getSl_yamount());//已核销
+            subledger1.setSl_namount(nowSubledger.getSl_namount() - detail.getRbd_nowbalance());//未核销
             subledgerMapper.updateByPrimaryKeySelective(subledger1);
         }
     }
@@ -276,8 +279,8 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         Double recamount = customerData.getCu_recamount()==null?new Double(0):customerData.getCu_recamount();
         Customer customer = new Customer();
         customer.setId(Long.valueOf(String.valueOf(rec.getRb_custid())));
-        customer.setCu_preamount(preamount - pay_preamount);
-        customer.setCu_recamount(recamount + pay_pbdamount);
+        customer.setCu_preamount(preamount-pay_preamount);
+        customer.setCu_recamount(recamount+pay_pbdamount);
         customer.setCu_leftamount(beginapamount-beginprepayamount+recamount+pay_pbdamount-preamount+pay_preamount);
         recbalanceMapper.updateCustomerByPrimaryKeySelective(customer);
 
@@ -286,8 +289,7 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         for (Recbalancedet det:recbalancedet) {
             Bankinformation bankinformation = new Bankinformation();
             Bankinformation nowBankInformation = recbalanceMapper.selectBankInformationByPrimaryKey(det.getRd_bankid());
-            bankinformation.setBk_thisamount((nowBankInformation.getBk_thisamount() == null ? new Double(0) : nowBankInformation.getBk_thisamount()) -
-                    (det.getRd_amount() == null ? new Double(0) : det.getRd_amount()));
+            bankinformation.setBk_thisamount(nowBankInformation.getBk_thisamount()-det.getRd_amount());
             recbalanceMapper.updateBankByPrimaryKeySelective(bankinformation);
         }
 
@@ -302,6 +304,17 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         recbalance = recbalanceMapper.selectByPrimaryKey(id.intValue());
         subledgerMapper.deleteByPrimaryKey(recbalance.getRb_code(), recbalance.getRb_kind());
         banksubledgerMapper.deleteByPrimaryKey(recbalance.getRb_code(), recbalance.getRb_kind());
+
+        //更新源单数据
+        List<Recbalancedetail> recbalancedetail = recbalancedetailMapper.selectByPrimaryKey(Math.toIntExact(id));
+        for(Recbalancedetail detail: recbalancedetail) {
+            Subledger subledger1 = new Subledger();
+            Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getRbd_slid());
+            subledger1.setId(Long.valueOf(String.valueOf(detail.getRbd_slid())));
+            subledger1.setSl_yamount(nowSubledger.getSl_yamount()-detail.getRbd_nowbalance());//已核销
+            subledger1.setSl_namount(nowSubledger.getSl_namount()+detail.getRbd_nowbalance());//未核销
+            subledgerMapper.updateByPrimaryKeySelective(subledger1);
+        }
     }
 
     public PageInfo<Recbalance> selectList(PageRequest page, ListReqDTO reqDTO) {

+ 6 - 6
applications/money/money-server/src/main/resources/mapper/FundtransferdetailMapper.xml

@@ -75,9 +75,9 @@
       <if test="ftd_detno != null" >
         ftd_detno,
       </if>
-      <!--<if test="ft_date != null" >-->
-        <!--ftd_ym,-->
-      <!--</if>-->
+      <if test="ft_date != null" >
+        ftd_ym,
+      </if>
       <if test="ftd_bankid != null" >
         ftd_bankid,
       </if>
@@ -140,9 +140,9 @@
       <if test="ftd_detno != null" >
         #{ftd_detno,jdbcType=INTEGER},
       </if>
-      <!--<if test="ft_date != null" >-->
-        <!--CONVERT(date_format(#{ft_date,jdbcType=TIMESTAMP},'%Y%m'),SIGNED),-->
-      <!--</if>-->
+      <if test="ft_date != null" >
+        CONVERT(date_format(#{ft_date,jdbcType=TIMESTAMP},'%Y%m'),SIGNED),
+      </if>
       <if test="ftd_bankid != null" >
         #{ftd_bankid,jdbcType=INTEGER},
       </if>

+ 10 - 6
applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml

@@ -29,6 +29,7 @@
     <result column="pb_text3" jdbcType="VARCHAR" property="pb_text3" />
     <result column="pb_text4" jdbcType="VARCHAR" property="pb_text4" />
     <result column="pb_text5" jdbcType="VARCHAR" property="pb_text5" />
+    <result column="ve_leftamount" jdbcType="DOUBLE" property="ve_leftamount" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -91,19 +92,22 @@
   <sql id="Base_Column_List">
     pb_id, pb_code, pb_kind, pb_date, pb_vendid, pb_vendcode, pb_vendname, pb_manname, 
     pb_pdamount, pb_pbdamount, pb_preamount, pb_discounts, pb_havebalance, pb_recorderid, 
-    pb_recorder, pb_recorddate, pb_status, pb_statuscode, pb_remark, companyId, updaterId,
-    updatedate, pb_text1, pb_text2, pb_text3, pb_text4, pb_text5
+    pb_recorder, pb_recorddate, pb_status, pb_statuscode, pb_remark, paybalance.companyId,
+    paybalance.updaterId,paybalance.updatedate, pb_text1, pb_text2, pb_text3, pb_text4, pb_text5
+  </sql>
+  <sql id="left_Column_List">
+    ve_leftamount
   </sql>
   <select id="selectList" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List" />
     from paybalance
   </select>
-
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
-    select 
-    <include refid="Base_Column_List" />
-    from paybalance
+    select
+    <include refid="Base_Column_List" />,
+    <include refid="left_Column_List" />
+    from paybalance left join vendor on ve_id=pb_vendid and vendor.companyId=paybalance.companyId
     where pb_id = #{id,jdbcType=INTEGER}
   </select>
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">

+ 9 - 4
applications/money/money-server/src/main/resources/mapper/PaybalancedetailMapper.xml

@@ -25,14 +25,19 @@
   </resultMap>
   <sql id="Base_Column_List" >
     pbd_id, pbd_pbid, pbd_detno, pbd_ym, pbd_slid, pbd_slcode, pbd_slkind, pbd_sldate,
-    pbd_amount, pbd_nowbalance, pbd_remark, companyId, updaterId, updatedate, pbd_text1,
+    pbd_amount, pbd_nowbalance, pbd_remark, paybalancedetail.companyId, paybalancedetail.updaterId,
+    paybalancedetail.updatedate, pbd_text1,
     pbd_text2, pbd_text3, pbd_text4, pbd_text5
   </sql>
+  <sql id="subledger_Column_List" >
+    sl_yamount,sl_namount
+  </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select
-    <include refid="Base_Column_List" />
-    from paybalancedetail
-    where pbd_pbid = #{id,jdbcType=INTEGER} order by pbd_sldate desc
+    <include refid="Base_Column_List" />,
+    <include refid="subledger_Column_List" />
+    from paybalancedetail left join subledger on sl_id=pbd_slid and subledger.companyid=paybalancedetail.companyId
+    where pbd_pbid = #{id,jdbcType=INTEGER}
   </select>
   <delete id="deleteItem" parameterType="java.lang.Integer" >
     delete from paybalancedetail

+ 11 - 6
applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml

@@ -29,6 +29,7 @@
     <result column="rb_text3" jdbcType="VARCHAR" property="rb_text3" />
     <result column="rb_text4" jdbcType="VARCHAR" property="rb_text4" />
     <result column="rb_text5" jdbcType="VARCHAR" property="rb_text5" />
+    <result column="cu_leftamount" jdbcType="DOUBLE" property="cu_leftamount" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -89,10 +90,13 @@
     </where>
   </sql>
   <sql id="Base_Column_List">
-    rb_id, rb_code, rb_kind, rb_date, rb_custid, rb_custcode, rb_custname, rb_manname, 
-    rb_rdamount, rb_rbdamount, rb_preamount, rb_discounts, rb_havebalance, rb_recorderid, 
-    rb_recorder, rb_recorddate, rb_status, rb_statuscode, rb_remark, companyId, updaterId,
-    updatedate, rb_text1, rb_text2, rb_text3, rb_text4, rb_text5
+    rb_id, rb_code, rb_kind, rb_date, rb_custid, rb_custcode, rb_custname, rb_manname,
+    rb_rdamount, rb_rbdamount, rb_preamount, rb_discounts, rb_havebalance, rb_recorderid,
+    rb_recorder, rb_recorddate, rb_status, rb_statuscode, rb_remark, recbalance.companyId,
+    recbalance.updaterId,recbalance.updatedate, rb_text1, rb_text2, rb_text3, rb_text4, rb_text5
+  </sql>
+  <sql id="left_Column_List">
+    cu_leftamount
   </sql>
   <select id="selectByExample" parameterType="com.usoftchina.saas.money.po.RecbalanceExample" resultMap="BaseResultMap">
     select
@@ -110,8 +114,9 @@
   </select>
   <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
     select 
-    <include refid="Base_Column_List" />
-    from recbalance
+    <include refid="Base_Column_List" />,
+    <include refid="left_Column_List" />
+    from recbalance left join customer on cu_id=rb_custid and recbalance.companyId= customer.companyId
     where rb_id = #{id,jdbcType=INTEGER}
   </select>
 

+ 8 - 3
applications/money/money-server/src/main/resources/mapper/RecbalancedetailMapper.xml

@@ -25,13 +25,18 @@
   </resultMap>
   <sql id="Base_Column_List" >
     rbd_id, rbd_rbid, rbd_detno, rbd_ym, rbd_slid, rbd_slcode, rbd_slkind, rbd_sldate, 
-    rbd_amount, rbd_nowbalance, rbd_remark, companyId, updaterId, updatedate, rbd_text1,
+    rbd_amount, rbd_nowbalance, rbd_remark, recbalancedetail.companyId, recbalancedetail.updaterId,
+     recbalancedetail.updatedate, rbd_text1,
     rbd_text2, rbd_text3, rbd_text4, rbd_text5
   </sql>
+  <sql id="subledger_Column_List" >
+    sl_yamount,sl_namount
+  </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select 
-    <include refid="Base_Column_List" />
-    from recbalancedetail
+    <include refid="Base_Column_List" />,
+    <include refid="subledger_Column_List" />
+    from recbalancedetail left join subledger on sl_id=rbd_slid and subledger.companyid=recbalancedetail.companyId
     where rbd_rbid = #{id,jdbcType=INTEGER}
   </select>
   <delete id="deleteItem" parameterType="java.lang.Integer" >

+ 8 - 0
frontend/saas-web/app/model/home/Info.js

@@ -0,0 +1,8 @@
+Ext.define('saas.model.home.Info', {
+    extend: 'saas.model.Base',
+    fields: [
+        { name: 'title', type: 'string' },
+        { name: 'content', type: 'string' },
+        { name: 'color', type: 'string' }
+    ]
+});

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

@@ -21,10 +21,10 @@ Ext.define('saas.view.core.form.FormPanel', {
     initId: 0,
     layout: 'column',
     autoScroll: true,
-    bodyPadding: 5,
+    bodyPadding: 0,
 
     fieldDefaults: {
-        margin: '0 5 5 0',
+        margin: '0 0 10 0',
         labelAlign: 'right',
         labelWidth: 90,
         columnWidth: 0.25,
@@ -48,35 +48,6 @@ Ext.define('saas.view.core.form.FormPanel', {
         unAuditBtnText: '反审核',
         messageLogText:'操作日志'
     },
-    /* buttons:[{
-        text:'操作日志',
-        bind: {
-            hidden: 'isNewPanle'
-        },
-        handler:function(btn){
-            var form = btn.up('form'),
-            mlKeyvalue = form.viewModel.get(form._idField)||0,
-            win = Ext.getCmp(form.xtype+mlKeyvalue);
-            if (!win&&mlKeyvalue!=0) {
-                var win = form.add(Ext.create('Ext.window.Window', {
-                    modal: true,
-                    id:form.xtype+mlKeyvalue,
-                    height: '60%',
-                    width: '80%',
-                    title: '操作日志('+form.viewModel.get(form._codeField)+')',
-                    scrollable: true,
-                    constrain: true,
-                    closable: true,
-                    layout: 'fit',
-                    items: [{
-                        xtype: 'core-form-mseeageLog',
-                        mlKeyvalue:mlKeyvalue
-                    }]
-                }));
-            };
-            win.show();
-        }
-    }], */
     initComponent: function () {
         var me = this,
         auditTexts = me.auditTexts;

+ 4 - 1
frontend/saas-web/app/view/core/form/FormPanel.scss

@@ -1,6 +1,9 @@
 .x-core-form {
-    padding: 24px;
+    padding: 8px 12px 8px 12px;
 
+    .x-toolbar-default-docked-top{
+        padding: 6px 0 12px 8px;
+    }
     .x-tb {
         color: #A2A2A2;
         letter-spacing: 0.72px;

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

@@ -175,11 +175,12 @@ Ext.define('saas.view.core.form.FormPanelController', {
         form = this.getView(),
         detailCount = form.detailCount,
         viewModel = me.getViewModel(),
+        id = viewModel.get(form._idField),
         modelData = viewModel.getData();
 
         var dirty = form.isDirty();
 
-        if(dirty) {
+        if(id && dirty) {
             showConfirm('提示', form.dirtyAuditText)
             .then(function(yes) {
                 if(yes == 'yes') {

+ 5 - 4
frontend/saas-web/app/view/core/form/MseeageLog.js

@@ -71,15 +71,15 @@ Ext.define('saas.view.core.form.MseeageLog', {
         width : 120.0, 
         flex:1
     }],
-
+    condition:[],
     initComponent: function() {
         var me = this;
-        me.condition = [{
+        me.defualtCondition = {
             type: 'number',
             field: 'ml_keyvalue',
             operation: '=',
             value: me.mlKeyvalue
-        }];
+        };
         if(me.columns){
             var fields = me.columns.map(column => column.dataIndex);
             me.store = Ext.create('Ext.data.Store',{
@@ -104,7 +104,7 @@ Ext.define('saas.view.core.form.MseeageLog', {
                     beforeload: function (store, op) {
                         var condition = me.condition;
                         if (Ext.isEmpty(condition)) {
-                            condition = "";
+                            condition = [me.defualtCondition];
                         }
                         
                         Ext.apply(store.proxy.extraParams, {
@@ -134,6 +134,7 @@ Ext.define('saas.view.core.form.MseeageLog', {
     getCondition: function(items) {
         var me = this,
         conditions = [];
+        conditions.push(this.defualtCondition);
         for(var i = 0; i < items.length; i++) {
             var item = items[i];
             var field = item.name,

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

@@ -7,7 +7,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     cls: 'x-detailgridfield',
 
     border: 1,
-    margin: '0 5 5 0', // formpanel的fieldDefaults未生效
+    margin: '0 0 10 0', // formpanel的fieldDefaults未生效
     height: 245,
     columnWidth : 1.0, 
 

+ 14 - 14
frontend/saas-web/app/view/core/form/field/Month.js

@@ -29,17 +29,23 @@ Ext.define('saas.view.core.form.field.Month', {
         if(isString(max)){
             me.maxValue = me.parseDate(max);
         }
-        me.disabledDatesRE = null;
-        if(Ext.isEmpty(me.value)){
+     /*   if(Ext.isEmpty(me.value)){
             me.value=me.getCurrentVal();
-        }
+        }*/
         me.callParent();
     },
+    listeners : {
+        afterrender: function (field) {
+            if(field.autoValue && Ext.isEmpty(field.value)){
+                field.setValue(field.getCurrentVal());
+            }
+        }
+    },
     createPicker: function() {
         var me = this,
             picker = me.monthPicker,
             format = Ext.String.format;
-       return me.monthPicker=picker=new Ext.picker.Month({
+        return me.monthPicker=picker=new Ext.picker.Month({
             id: me.id + '-picker',
             pickerField: me,
             floating: true,
@@ -89,7 +95,7 @@ Ext.define('saas.view.core.form.field.Month', {
         me.onSelect();
     },
     getCurrentVal:function(){
-        return Ext.Date.format(new Date(), this.format);
+        return Ext.Date.format(new Date(),this.format);
     },
     onCancelClick: function() {
         this.onSelect();
@@ -106,17 +112,11 @@ Ext.define('saas.view.core.form.field.Month', {
         }
         return [month, year];
     },
-    setValue: function (value) {
+    setValue : function(value) {
         if (Ext.isEmpty(value)) {
-            value =this.getCurrentVal();
-        }
-        var f = value.match(/^(\d{4})(\d{2})$/);
-        if(f) {
-            var d = f[1] + '-' + f[2];
-            value = Ext.Date.format(new Date(d), this.format);
+            value =me.getCurrentVal();
         }
-        this.callParent([value]);
-        this.publishState('value', value);
+        this.callParent(arguments);
     },
     onSelect: function() {
         this.monthPicker.hide();

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

@@ -4,13 +4,14 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
 
     layout: 'column',
     autoScroll: true,
-    bodyPadding: '16 10 0 10',
+    //padding: 8px 12px 8px 12px;//'16 10 0 10',
+    bodyPadding: '14 10 0 10',
     labelSeparator : ':',
 
     cls: 'x-queryform',
 
     defaults:{
-		margin: '0 5 5 0',
+        margin: '0 0 10 0',
         labelAlign: 'right',
         labelWidth: 90,
         columnWidth: 0.25,

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

@@ -17,8 +17,8 @@ Ext.define('saas.view.core.query.QueryPanel', {
         xtype: 'core-query-queryformpanel',
         width: '100%',
     }, {
-        margin: '24 0 0 0',
-        padding: '24',
+        margin: '12 0 0 0',
+        padding: '8 12 8 12',// padding: 8px 12px 8px 12px;
         reference: 'querygrid',
         xtype: 'core-query-querygridpanel',
         width: '100%',

+ 0 - 1
frontend/saas-web/app/view/core/query/QueryPanel.scss

@@ -30,7 +30,6 @@
                         .x-panel-bodyWrap {
 
                             .x-toolbar {
-                                margin-bottom: 16px;
                                 border: none;
 
                                 .x-box-inner {

+ 8 - 8
frontend/saas-web/app/view/document/kind/Kind.js

@@ -213,7 +213,12 @@ Ext.define('saas.view.document.kind.Kind', {
             reqUrl:'/api/commons/number/save'
         },
         personpower:{
-            columns: [{
+            columns: [ {
+                text : "编号", 
+                dataIndex : "code", 
+                width : 120.0, 
+                xtype : "", 
+            },{
                 text : "角色名称", 
                 width : 200.0, 
                 dataIndex : "name", 
@@ -224,13 +229,8 @@ Ext.define('saas.view.document.kind.Kind', {
                 dataIndex : "description", 
                 width : 120.0, 
                 xtype : "", 
-            },
-            {
-                text : "编号", 
-                dataIndex : "code", 
-                width : 120.0, 
-                xtype : "", 
-            }],
+            }
+           ],
             keyField:'id',
             reqUrl:'/api/account/role/save',
             updateUrl:'/api/account/role/update',

+ 6 - 31
frontend/saas-web/app/view/home/Home.js

@@ -11,51 +11,26 @@ Ext.define('saas.view.home.Home', {
 
     controller: 'home',
     viewModel: {
-        type: 'chartsmodel'
+        type: 'home'
     },
 
+    cls: 'x-home-panel',
+
     layout: 'responsivecolumn',
 
     scrollable: true,
 
     defaults: {
         shadow: true,
-        xtype: 'panel',
-        layout: 'column',
-        cls: 'x-home-panel',
+        cls: 'x-home-box',
         userCls: 'big-100 small-100',
     },
 
     items: [{
         title: '实时数据',
-        xtype: 'infocard',
-        infoData: [{
-            title: '七天内待出货销售',
-            content: '168件',
-            color: 'yellow',
-        }, {
-            title: '七天内待入库采购',
-            content: '168件',
-            color: 'purple',
-        }, {
-            title: '七天内代付款',
-            content: '168件',
-            color: 'red',
-        }, {
-            title: '七天内代收款',
-            content: '168件',
-            color: 'yellow',
-        }, {
-            title: '未审核验收',
-            content: '168件'
-        }, {
-            title: '七天内待出货销售',
-            content: '168件'
-        }, {
-            title: '未审核出货',
-            content: '168件'
-        }]
+        xtype: 'infocard'
     }, {
+        xtype: 'panel',
         title: '2018年11月经营分析',
         latyout: 'column',
         // items: [{

+ 28 - 8
frontend/saas-web/app/view/home/Home.scss

@@ -92,6 +92,17 @@ $unaudit-purc-container-color: dynamic(#e91e63);
 }
 
 .x-home-panel {
+
+    &> .x-autocontainer-outerCt {
+        display: block;
+
+        &> .x-autocontainer-innerCt {
+            display: block;
+        }
+    }
+}
+
+.x-home-box {
     border-radius: 2px;
 
     &>.x-panel-header {
@@ -123,30 +134,37 @@ $unaudit-purc-container-color: dynamic(#e91e63);
 
 .x-responsivecolumn {
     padding: 0;
+    display: block;
 }
 
 .big-100 {
-    @include responsivecolumn-item(100%);
+    width: 100%;
+    // @include responsivecolumn-item(100%);
 }
 
 .big-60 {
-    @include responsivecolumn-item(60%);
+    width: 60%;
+    // @include responsivecolumn-item(60%);
 }
 
 .big-50 {
-    @include responsivecolumn-item(50%);
+    width: 50%;
+    // @include responsivecolumn-item(50%);
 }
 
 .big-40 {
-    @include responsivecolumn-item(40%);
+    width: 40%;
+    // @include responsivecolumn-item(40%);
 }
 
 .big-33 {
-    @include responsivecolumn-item(33.33%);
+    width: 30%;
+    // @include responsivecolumn-item(33.33%);
 }
 
 .big-20 {
-    @include responsivecolumn-item(20%);
+    width: 20%;
+    // @include responsivecolumn-item(20%);
 }
 
 //--------------------------------------------------------
@@ -154,10 +172,12 @@ $unaudit-purc-container-color: dynamic(#e91e63);
 
  .x-responsivecolumn-small {
      > .small-100 {
-         @include responsivecolumn-item(100%);
+        width: 100%;
+        // @include responsivecolumn-item(100%);
      }
 
      > .small-50 {
-         @include responsivecolumn-item(50%);
+        width: 50%;
+        // @include responsivecolumn-item(50%);
      }
 }

+ 67 - 2
frontend/saas-web/app/view/home/ChartsModel.js → frontend/saas-web/app/view/home/HomeModel.js

@@ -1,8 +1,73 @@
-Ext.define('saas.view.home.ChartsModel', {
+Ext.define('saas.view.home.HomeModel', {
     extend: 'Ext.app.ViewModel',
-    alias: 'viewmodel.chartsmodel',
+    alias: 'viewmodel.home',
 
     stores: {
+        infoData: {
+            model: 'saas.model.home.Info',
+            autoLoad: true,
+            proxy: {
+                type: 'ajax',
+                // url: 'http://192.168.253.58:8920/homePage/liveData',
+                url: '/api/common/homePage/liveData',
+                reader: {
+                    type: 'json'
+                },
+                listeners: {
+                    exception: function(proxy, response, operation, eOpts) {
+                        Ext.getCmp('infocard').setLoading(false);
+                    }
+                }
+            },
+            listeners: {
+                beforeload: function() {
+                    Ext.getCmp('infocard').setLoading(true);
+                },
+                load: function(s, d) {
+                    Ext.getCmp('infocard').setLoading(false);
+
+                    var titles = {
+                        unship: {
+                            text: '七天内待出货销售',
+                            color: 'yellow'
+                        },
+                        unstorage: {
+                            text: '七天内待入库采购',
+                            color: 'purple'
+                        },
+                        unpay: {
+                            text: '七天内代付款',
+                            color: 'red'
+                        },
+                        unreceive: {
+                            text: '七天内代收款',
+                            color: 'pink'
+                        },
+                        unauditcheck: {
+                            text: '未审核验收',
+                            color: 'blue'
+                        },
+                        unauditship: {
+                            text: '未审核出货',
+                            color: ''
+                        }
+                    };
+                    var res = d[0].data.data;
+                    var data = [];
+                    if(res) {
+                        for(var k in res) {
+                            data.push({
+                                title: titles[k].text,
+                                content: res[k] + '件',
+                                color: titles[k].color
+                            });
+                        }
+                    }
+
+                    Ext.getCmp('infocard').addCardItems(data);
+                }
+            }
+        },
         barData: {
             model: 'saas.model.chart.DataXY',
             data: [

+ 95 - 93
frontend/saas-web/app/view/home/InfoCard.js

@@ -2,127 +2,129 @@ Ext.define('saas.view.home.InfoCard', {
     extend: 'Ext.panel.Panel',
     xtype: 'infocard',
 
-    latyou: 'fit',
+    id: 'infocard',
 
-    initComponent: function() {
-        var me = this;
+    requires: [
+        'Ext.layout.container.Card'
+    ],
 
-        var view = Ext.create('Ext.view.View', {
-            store : Ext.create('Ext.data.Store', {
-				fields: ['title', 'content', 'color'],
-				data: me.infoData,
-			}),
-            tpl: new Ext.XTemplate([
-                '<div class="x-row">',
-                    '<tpl for=".">',
-                    '<div class="x-col">',
-                        '<div>',
-                            '<div class="x-box ',
-                                '<tpl if="color"> x-bg-{color}</tpl>',
-                                '<tpl else"> x-bg-default</tpl>',
-                            '">',
-                                '<h3>{title}</h3>',
-                                '<p>{content}</p>',
-                            '</div>',
-                        '</div>',
-                    '</div>',
-                    '</tpl>',
-                '</div>'
-            ]),
-            itemSelector: 'div.x-info-card-body',
-        });
+    BaseUtil: Ext.create('saas.util.BaseUtil'),
+
+    layout: 'card',
+    cardTpl: [
+        '<div class="x-row">',
+        '<tpl for=".">',
+        '<div class="x-col">',
+        '<div>',
+        '<div class="x-box ',
+        '<tpl if="color"> x-bg-{color}</tpl>',
+        '<tpl else"> x-bg-default</tpl>',
+        '">',
+        '<h3>{title}</h3>',
+        '<p>{content}</p>',
+        '</div>',
+        '</div>',
+        '</div>',
+        '</tpl>',
+        '</div>'
+    ],
+
+    initComponent: function () {
+        var me = this;
 
         Ext.apply(me, {
             userCls: 'x-info-card ' + me.userCls,
-            items: [{
-                xtype: 'button',
+            lbar: [{
+                itemId: 'card-prev',
                 cls: 'x-scroller-button x-scroller-button-left',
-                // iconCls: 'x-sa sa-arrows-left',
-                disabled: true,
                 handler: function() {
-                    me.scrollBody(1);
-                }
-            }, view, {
-                xtype: 'button',
+                    me. showPrevious();
+                },
+                disabled: true
+            }],
+            rbar: [{
+                itemId: 'card-next',
                 cls: 'x-scroller-button x-scroller-button-right',
-                // iconCls: 'x-sa sa-arrows-right',
                 handler: function() {
-                    me.scrollBody(-1);
+                    me.showNext();
                 }
-            }]
+            }],
+            items: [],
         });
 
         me.callParent(arguments);
     },
 
-    listeners: {
-        boxready: function(th) {
-            var list = Ext.fly(th.items.items[1].el.dom);
-            var listWidth = Number(list.getStyle('width').replace('px', ''));
-            var bodyWidth = th.body.getBox().width;
-            var btns = th.query('button');
-
-            if(listWidth <= (bodyWidth-88)) {
-                btns[0].setVisible(false);
-                btns[1].setVisible(false);
-                return;
+    addCardItems: function(infoData) {
+        var me = this,
+        p = me.up('home'),
+        // viewModel = p.getViewModel(),
+        // infoData = viewModel.get('infoData'),
+        datas = [],
+        items = [];
+        size = Math.ceil(me.body.el.getBox().width / 235);
+
+        me.removeAll();
+        for(var x = 0; x < infoData.length;) {
+            var d = [];
+            for(var y = 0; y < size && x < infoData.length; y++) {
+                d.push(infoData[x]);
+                x++;
             }
+            datas.push(d);
+        }
 
-            Ext.fly(th.body).on('mousewheel', function() {
-                var ev = window.event;
-                var delta = ev.wheelDelta;
+        Ext.Array.each(datas, function(d, i) {
 
-                if(ev.preventDefault) {
-                    ev.preventDefault();  
-                }
-                else {
-                    ev.cancel=true;
-                }
-                th.scrollBody(delta/120);
-            })
-        }
-    },
+            var store = Ext.create('Ext.data.Store', {
+                fields: ['title', 'content', 'color'],
+                data: d,
+            });
 
-    scrollBody: function(delta) {
-        var me = this;
-        var list = Ext.fly(me.items.items[1].el.dom);
-        var marginLeft = Number(list.getStyle('marginLeft').replace('px', ''));
-        var le = marginLeft + delta * 50;
-        var MAX_LEN = list.getBox().width - (me.body.getBox().width - 88);
-
-        if(le > 0) {
-            le = 0;
-            me.scrollLeftDisabled();
-        }else if(le < -MAX_LEN) {
-            le = -MAX_LEN;
-            me.scrollRightDisabled();
-        }else {
-            me.scrollEnable();
-        }
+            var view = Ext.create('Ext.view.View', {
+                store: store,
+                tpl: new Ext.XTemplate(me.cardTpl),
+                itemSelector: 'div.x-info-card-body',
+            });
 
-        list.setStyle({
-            marginLeft: le + 'px'
+            var item = {
+                xtype: 'panel',
+                id: 'card-' + i,
+                items: view
+            };
+            me.add(item);
         });
+
+        if(datas.length <= 1) {
+            me.hidePageTrigger();
+        }
+
+        me.updateLayout(true);
     },
-    
-    scrollLeftDisabled: function() {
+
+    hidePageTrigger: function() {
         var me = this;
-        var leftBtn = me.query('button')[0];
-        leftBtn.setDisabled(true);
+        me.down('#card-prev').hide();
+        me.down('#card-next').hide();
     },
 
-    scrollRightDisabled: function() {
-        var me = this;
-        var rightBtn = me.query('button')[1];
-        rightBtn.setDisabled(true);
+    showNext: function () {
+        this.doCardNavigation(1);
     },
 
-    scrollEnable: function() {
+    showPrevious: function (btn) {
+        this.doCardNavigation(-1);
+    },
+
+    doCardNavigation: function (incr) {
         var me = this;
-        var btns = me.query('button');
+        var l = me.getLayout();
+        var i = l.activeItem.id.split('card-')[1];
+        var c = me.items.items.length;
+        var next = parseInt(i, 10) + incr;
+        l.setActiveItem(next);
 
-        for(var i = 0; i < btns.length; i ++) {
-            btns[i].setDisabled(false);
-        }
+        me.down('#card-prev').setDisabled(next === 0);
+        me.down('#card-next').setDisabled(next === (c-1));
     }
 });

+ 47 - 35
frontend/saas-web/app/view/home/InfoCard.scss

@@ -1,39 +1,41 @@
-$card-width: 200px;
+$max-card-width: 235px;
 
 .x-info-card {
 
     .x-panel-bodyWrap {
         .x-autocontainer-innerCt {
-            padding: 0 44px;
-        }
-        .x-row {
-            display: flex;
-            flex-wrap: nowrap;
-        
-            .x-col {
-        
-                color: #fff;
-                padding: 10px;
-        
-                .x-box {
-                    padding: 16px;
-                    width: 235px;
-                    height: 131px;
-                    border-radius: 0.5rem;
-                    box-shadow: 0 0 1px rgba(0,0,0,.125), 0 1px 3px rgba(0,0,0,.2);
-                    position: relative;
-                    display: block;
-        
-                    h3 {
-                        font-size: 16px;
-                    }
-        
-                    p {
-                        font-size: 24px;
-                        text-align: center;
-                        margin-top: 32px;
+
+            .x-row {
+                display: flex;
+                width: 100%;
+                justify-content: flex-start;
+            
+                .x-col {
+            
+                    flex: 1;
+                    max-width: $max-card-width;
+                    color: #fff;
+                    padding: 10px;
+            
+                    .x-box {
+                        padding: 16px;
+                        height: 131px;
+                        border-radius: 0.5rem;
+                        box-shadow: 0 0 1px rgba(0,0,0,.125), 0 1px 3px rgba(0,0,0,.2);
+                        position: relative;
+                        display: block;
+            
+                        h3 {
+                            font-size: 16px;
+                        }
+            
+                        p {
+                            font-size: 24px;
+                            text-align: center;
+                            margin-top: 32px;
+                        }
+            
                     }
-        
                 }
             }
         }
@@ -41,12 +43,13 @@ $card-width: 200px;
 }
 
 .x-scroller-button {
-    position: absolute;
+    position: absolute !important;
     z-index: 1;
-    width: 44px;
-    height: 100%;
-    padding: 0;
-    background-color: white;
+    width: 44px !important;
+    min-width: 44px !important;
+    height: 145px !important;
+    padding: 0 !important;
+    background-color: white !important;
     border: none !important;
     box-shadow: none !important;
     background-repeat: no-repeat !important;
@@ -85,4 +88,13 @@ $card-width: 200px;
 }
 .x-bg-red {
     background: linear-gradient(to right, #FA8B86 , #F36487);
+}
+.x-bg-blue {
+    background: linear-gradient(to right, #1AD0C5 , #26CBDB);
+}
+.x-bg-pink {
+    background: linear-gradient(to right, #FA8A86 , #F26187);
+}
+.x-bg-gray {
+    background: linear-gradient(to right, #D8D8D8 , #D8D8D8);
 }

+ 60 - 34
frontend/saas-web/app/view/main/Main.js

@@ -45,7 +45,6 @@ Ext.define('saas.view.main.Main', {
                     reference: 'mainprofile',
                     arrowVisible: false,
                     ui: 'header',
-                    tooltip: '所属公司',
                     bind: {
                         text: '{company.name}'
                     },
@@ -88,77 +87,104 @@ Ext.define('saas.view.main.Main', {
                         cls:'x-main-menu',
                         items: [{
                             text: '新手导航',
-                            iconCls:'x-fa icon-userGuite',
+                            iconCls:'x-fa fa-comment-o',
                             handler:function(){
                                console.log("新手导航");
+                               openTab('sys-guide-formpanel','新手导航', 'sys-guide-formpanel-nav');
                             }
                         },{
                             text: '用户手册',
-                            iconCls:'x-fa icon-userBook',
+                            iconCls:'x-fa fa-comment-o',
                             handler:function(){
-                                console.log("用户手册");
+                                window.open('http://www.usoftchina.com','_blank');
                             }
                         },{
                             text: '常见问题',
-                            iconCls:'x-fa icon-commonQuestion',
+                            iconCls:'x-fa fa-question-circle-o',
                             handler:function(){
-                                console.log("常见问题");
+                                window.open('http://www.usoftchina.com','_blank');
                             }
                         },{
                             text: '客服热线',
-                            iconCls:'x-fa icon-serviceOnline',
-                            handler:function(){
-                                console.log("客服热线");
-                            }
+                            iconCls:'x-fa fa-comment-o',
+                            menu:{
+                                items:[{
+                                    text:'<span onclick="javascript:window.open(\'http://www.usoftchina.com\');" style="text-decoration:underline;color:blue;">优软科技官网</span>'
+                                },{	
+                                    text:'<span>电话:400-830-1818</span>'
+                                },{	
+                                    text:'<span>邮箱:info@usoftchina.com</span>'
+                                }]
+                            }/* ,listeners: {
+                                'mouseover': function() {
+                                    this.over = true;
+                                },
+                                'mouseleave': function() {
+                                    this.over = false;
+                                    this.hide();
+                                }
+                            } */
                         }]
                     }
                 },
                 {
-                    ui: 'header',
+                    margin: '0 0 0 8',
+                    xtype: 'tbtext',
+                    cls:'nav-realname',
                     bind: {
-                        tooltip: '{account.realname}',
-                        text: '{account.realname}'
+                        //tooltip: '{account.realname}',
+                        html: '{account.realname}'
+                    },
+                    style:{
+                        cursor:'default',
+                        textAlign:'center'
                     }
                 },
                 {
                     ui: 'header',
                     arrowVisible: false,
                     cls: 'header-right-profile-image',
-                    height: 70,
-                    width: 70,
+                    id:"userImage",
+                    height: 35,
+                    width: 35,
+                    bind: {
+                        html:'<img class="x-img x-box-item x-toolbar-item x-img-header" style="width: 35px; height: 35px; margin: 0px;" src="{avatarUrl}" alt="">'
+                    }, 
                     menu: {
+                        cls:'nav-menu',
                         items: [ {  
                             text: '账户中心',
-                            iconCls:'x-fa icon-accountCenter',
+                            iconCls:'x-fa x-fa fa-user-o',
                             handler:function(){
-                            console.log("账户中心");
+                                window.open('http://www.usoftchina.com','_blank');
                             }
                         },{  
                             text: '意见反馈',
-                            iconCls:'x-fa icon-feedback',
-                            handler:function(){
-                            console.log("意见反馈");
-                            }
+                            iconCls:'x-fa fa-comment-o',
+                            handler:'feedbackMsg'
                         }, {
                             text: '退出',
+                            iconCls:'x-fa fa-power-off',
                             handler: 'onLogout'
                         }]
                     } ,
-                    listeners:{
-                        'mouseover':function(){
-                            this.showMenu(); 
+                     listeners:{
+                        'mouseover':function(btn){
+                            console.log("btn:",btn);
+                            btn.menu ? (btn.menu.isVisible() ? '' : btn.showMenu()) : '';
                         },
                         'mouseout':function(btn,e){
-                            var cx = e.browserEvent.clientX, cy = e.browserEvent.clientY;
-                            var btnLayout = btn.el.dom.getBoundingClientRect();
-                            if(cx <= btnLayout.left || cx >= btnLayout.left+btnLayout.width || cy <= btnLayout.top) {
-                                btn.hideMenu();
-                            }
-                        },'mouseleave':function(enu){
-                            this.hide();
-                        } 
-                    }
-                    
+                            console.log("btn:",btn);
+                            window.setTimeout(function(){
+                                var cx = e.browserEvent.clientX, cy = e.browserEvent.clientY;
+                                console.log(btn.el.dom);
+                                var btnLayout = btn.el.dom.getBoundingClientRect();
+                                if(cx <= btnLayout.left || cx >= btnLayout.left+btnLayout.width || cy <= btnLayout.top) {
+                                    btn.hideMenu();
+                                }
+                            }, 10); 
+                        }
+                    } 
                 }
             ]
         },

+ 21 - 31
frontend/saas-web/app/view/main/Main.scss

@@ -47,8 +47,10 @@ $treelist-nav-ui: (
 
         #main-tab-panel-body {
             background: #EEF4F9;
+
         }
     }
+
 }
 
 .main-logo-wrap {
@@ -82,7 +84,18 @@ $treelist-nav-ui: (
         }
     }
 }
-
+/*.x-tab-bar-default-top > .x-tab-bar-body-default {
+    padding: 0px 4px 0 0px;
+}
+.x-tab-bar-default-top .x-box-scroller-tab-bar-default {
+    margin-top: -2px;
+}
+.x-tab-default-top{
+    padding: 12px 12px 12px 12px;
+}*/
+.x-keyboard-mode .x-tab-focus.x-tab-default {
+    outline: 0px;
+}
 .main-headerbar {
     padding: 0 30px 0 0;
     position: fixed;
@@ -91,11 +104,15 @@ $treelist-nav-ui: (
     border: none;
 
     .header-right-profile-image {
-        border-radius: 20px;
         background: url(../../../../resources/images/default/user-profile-default.png) 0 0 no-repeat;
         background-position: center;
     }
 }
+.x-btn.header-right-profile-image.x-btn-menu-active.x-btn-header-small,
+.x-btn.header-right-profile-image.x-btn-pressed.x-btn-header-small {
+    background: url(../../../../resources/images/default/user-profile-default.png) 0 0 no-repeat !important;
+    background-position: center;
+}
 .top-english-button {
     .x-btn-icon-el {
         width: 21px;
@@ -181,35 +198,8 @@ body > .x-mask {
     background: url(../../../../resources/images/nav/usoftchina.png) 0 0 no-repeat; 
    
 }
-.icon-userGuite{
-    margin-top: 0px;
-    background: url(../../../../resources/images/nav/userGuite.png) 0 0 no-repeat;
-    background-size: 16px 16px;
-    background-position: center;
-}
-.icon-userBook{
-    margin-top: 0px;
-    background: url(../../../../resources/images/nav/userBook.png) 0 0 no-repeat; 
-    background-size: 16px 16px;
-    background-position: center;
-}
-.icon-commonQuestion{
-    margin-top: 0px;
-    background: url(../../../../resources/images/nav/commonQuestion.png) 0 0 no-repeat; 
-    background-size: 16px 16px;
-    background-position: center;
-}
-.icon-serviceOnline{
-    margin-top: 0px;
-    background: url(../../../../resources/images/nav/serviceOnline.png) 0 0 no-repeat; 
-    background-size: 16px 16px;
-    background-position: center;
-}
-.icon-accountCenter{
-    margin-top: 0px;
-    background: url(../../../../resources/images/nav/accountCenter.png) 0 0 no-repeat; 
-    background-size: 16px 16px;
-    background-position: center;
+.nav-menu{
+    color: #48C1F8 !important;
 }
 .icon-feedback{
     margin-top: 0px;

+ 1 - 1
frontend/saas-web/app/view/main/MainContainerWrap.js

@@ -29,7 +29,7 @@ Ext.define('saas.view.main.MainContainerWrap', {
             itemId: 'contentPanel',
             defaults: {
                 closable: true,
-                margin: 20
+                margin: 16
             },
             plugins: [new Ext.ux.TabCloseMenu({
                 closeTabText: '关闭当前页',

+ 23 - 0
frontend/saas-web/app/view/main/MainController.js

@@ -111,5 +111,28 @@ Ext.define('saas.view.main.MainController', {
 
     onLogout: function() {
         this.fireEvent('logout');
+    },
+
+    feedbackMsg:function(btn){
+        var me = this,
+        win = Ext.getCmp("feedbackWin");
+        if (!win) {
+             win = Ext.create('Ext.window.Window', {
+                modal: true,
+                id:"feedbackWin",
+                height: '50%',
+                width: '50%',
+                title: '意见反馈',
+                scrollable: true,
+                constrain: true,
+                closable: true,
+                layout: 'fit',
+
+                items: [{
+                    xtype: 'sys-feedback-formpanel'
+                }]
+            }); 
+        };
+        win.show();
     }
 });

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

@@ -140,28 +140,25 @@ Ext.define('saas.view.money.fundtransfer.FormPanel', {
             }, {
                 text : "结算方式", 
                 width : 150.0, 
-                dataIndex : "ftd_paymethod", 
-                xtype : "", 
-                items : null,
-                editor:{
-                    xtype: 'combobox',
-                    name: 'ftd_paymethod',
+                dataIndex : "ftd_paymethod",
+                editor : {
+                    xtype:'combo',
                     queryMode: 'local',
-                    displayField: 'ftd_paymethod_d',
-                    valueField: 'ftd_paymethod',
-                    editable:false,
-                    store: Ext.create('Ext.data.ArrayStore', {
-                        fields: ['ftd_paymethod', 'ftd_paymethod_d'],
-                        data: [
-                            ["无", "无"],
-                            ["支付宝转账", "支付宝转账"],
-                            ["微信转账", "微信转账"],
-                            ["现金", "现金"],
-                            ["银行转账", "银行转账"]
+                    displayField: 'display',
+                    valueField: 'value',
+                    store:Ext.create('Ext.data.Store', {
+                        fields: ['value', 'display'],
+                        data : [
+                            {value:"信用卡", display:"信用卡"},
+                            {value:"支票", display:"支票"},
+                            {value:"汇票", display:"汇票"},
+                            {value:"现金", display:"现金"},
+                            {value:"银行转账", display:"银行转账"},
+                            {value:"支付宝转账", display:"支付宝转账"},
+                            {value:"微信转账", display:"微信转账"}
                         ]
                     })
                 }
-                
             }, {
                 text : "备注", 
                 dataIndex : "ftd_remark",

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

@@ -52,13 +52,13 @@ Ext.define('saas.view.money.fundtransfer.FormPanelController', {
                             "width": 150,
                             "xtype": ""
                         }, {
-                            "text": "账户类",
+                            "text": "账户类",
                             "flex": 1,
                             "dataIndex": "bk_type",
                             "width": 120,
                             "xtype": ""
                         }, {
-                            "text": "账户余额",
+                            "text": "当前余额",
                             "flex": 1,
                             "dataIndex": "bk_thisamount",
                             "width": 120,

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

@@ -24,7 +24,7 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
     // _readUrl: 'http://192.168.253.35:8880/paybalance/read/',
     // _saveUrl: 'http://192.168.253.129:8940/money/paybalance/save/',
     // _auditUrl: 'http://192.168.253.35:8880/paybalance/audit/',
-    // _unAuditUrl: 'http://192.168.253.35Pb_pdamount:8880/paybalance/unAudit/',
+    // _unAuditUrl: 'http://192.168.253.35:8880/paybalance/unAudit/',
     // _deleteUrl: 'http://192.168.253.129:8940/money/paybalance/delete/',
     
     initId: 0,
@@ -156,11 +156,15 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
                 valueField: 'value',
                 store:Ext.create('Ext.data.Store', {
                     fields: ['value', 'display'],
-                    data : [{value:"信用卡", display:"信用卡"},
+                    data : [
+                        {value:"信用卡", display:"信用卡"},
                         {value:"支票", display:"支票"},
                         {value:"汇票", display:"汇票"},
                         {value:"现金", display:"现金"},
-                        {value:"银行转账", display:"银行转账"}]
+                        {value:"银行转账", display:"银行转账"},
+                        {value:"支付宝转账", display:"支付宝转账"},
+                        {value:"微信转账", display:"微信转账"}
+                        ]
                 })
             }
         }, {
@@ -261,7 +265,7 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
@@ -283,7 +287,7 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }

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

@@ -36,7 +36,6 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
         addXtype: 'money-paybalance-formpanel',
         defaultCondition:'1=1',
         baseVastUrl: '/api/money/paybalance/',
-        // baseVastUrl: 'http://192.168.253.129:8881/paybalance/',
         baseColumn: [{
             text: 'id',
             dataIndex: 'id',

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

@@ -23,6 +23,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
     _deleteUrl: '/api/money/recbalance/delete/',
 
     // _saveUrl: 'http://192.168.253.35:8880/recbalance/save/',
+    // _readUrl: 'http://192.168.253.35:8880/recbalance/read/',
     // _auditUrl: 'http://192.168.253.35:8880/recbalance/audit/',
     // _unAuditUrl: 'http://192.168.253.35:8880/recbalance/unAudit/',
 
@@ -54,8 +55,9 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         allowBlank : false
     }, {
         xtype: "numberfield",
-        name: "rb_rdamount",
+        name: "cu_leftamount",
         fieldLabel: "总欠款",
+        ignore: true,
         readOnly: true
     }, {
         xtype: 'hidden',
@@ -252,6 +254,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             text: "已核销金额",
             xtype: 'numbercolumn',
             dataIndex: "sl_yamount",
+            ignore:true,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length)).fill('0');
@@ -261,7 +264,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
@@ -269,9 +272,10 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             text: "未核销金额",
             xtype: 'numbercolumn',
             dataIndex: "sl_namount",
+            ignore:true,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },

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

@@ -20,7 +20,7 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                         },{
                             from:'cu_name', to:'rb_custname'
                         },{
-                            from:'cu_leftamount', to:'rb_rdamount'
+                            from:'cu_leftamount', to:'cu_leftamount'
                         }],
                         //联想设置
                         dbtpls:[{

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

@@ -11,13 +11,13 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
     listUrl: '/api/money/report/customercheck',
     defaultCondition: null,
     reportTitle: '客户对账单',
-    QueryWidth:0.1,
+    QueryWidth:0.25,
     //筛选:客户、日期(必填)
     searchItems: [ {
         xtype: 'dbfindtrigger',
         name: 'pi_custname',
         fieldLabel: '客户名称',
-        columnWidth: 0.2
+        columnWidth: 0.25
     }, {
         xtype: 'condatefield',
         name: 'pi_date',

+ 0 - 29
frontend/saas-web/app/view/sale/sale/FormPanelController.js

@@ -215,35 +215,6 @@ Ext.define('saas.view.sale.sale.FormPanelController', {
             }
         });
 
-    },
-    delete: function(){
-        var me = this;
-        var form = this.getView();
-        warnMsg('确定删除该单据吗?', function(btn){
-			if(btn == '是'){
-                var viewModel = me.getViewModel();
-                var id = viewModel.get(form._idField);
-                var code = viewModel.get(form._codeField);
-                if(id&&id.value!=0){
-                    me.BaseUtil.request({
-                        url: form._deleteUrl+id,
-                        method: 'POST',
-                    })
-                    .then(function(localJson) {
-                        if(localJson.success){
-                            var mainTab = Ext.getCmp('main-tab-panel');
-                            mainTab.getActiveTab().close();
-                            //解析参数
-                            showToast('删除成功');
-                        }
-                    })
-                    .catch(function(res) {
-                        console.error(res);
-                        showToast('删除失败: ' + res.message);
-                    });
-                }
-                }
-});
     },
     turnOut: function() {
         var me = this,

+ 48 - 0
frontend/saas-web/app/view/sys/feedback/FormPanel.js

@@ -0,0 +1,48 @@
+Ext.define('saas.view.sys.feedback.FormPanel', {
+    extend: 'Ext.panel.Panel',
+    xtype: 'sys-feedback-formpanel',
+
+    controller: 'sys-feedback-formpanel',
+    viewModel: 'sys-feedback-formpanel',
+
+    viewName: 'sys-feedback-formpanel',
+    caller:'feedBack',
+    
+    defaultType: 'textfield',
+        fieldDefaults: {
+            labelWidth: 60
+        },
+
+        layout: {
+            type: 'vbox',
+            align: 'stretch'
+        },
+
+        bodyPadding: 10,
+        border: false,
+
+    items: [{
+        xtype: 'hidden',
+        name: 'id',
+        fieldLabel: 'id'
+    }, {
+        xtype : "textfield", 
+        name : "fb_name", 
+        fieldLabel : "姓名"
+    }, {
+        xtype : "textfield", 
+        name : "fb_mobile", 
+        fieldLabel : "联系方式"
+    }, {
+        xtype : "textarea", 
+        name : "fb_email", 
+        fieldLabel : "反馈内容",
+        flex: 1
+    }],buttons: [{
+        text: '提交',
+        handler:'onSubmit'
+    },{
+        text: '关闭',
+        handler:'onClose'
+    }]
+});

+ 16 - 0
frontend/saas-web/app/view/sys/feedback/FormPanelController.js

@@ -0,0 +1,16 @@
+Ext.define('saas.view.sys.feedback.FormPanelController', {
+    extend: 'Ext.app.ViewController',
+    alias: 'controller.sys-feedback-formpanel',
+    init: function (form) {
+        var me = this;
+        this.control({
+        });
+    },
+    onSubmit:function(){
+        showToast('提交成功!');
+        Ext.destroy(Ext.getCmp("feedbackWin"));
+    },
+    onClose:function(){
+        Ext.destroy(Ext.getCmp("feedbackWin"));
+    }
+});

+ 4 - 0
frontend/saas-web/app/view/sys/feedback/FormPanelModel.js

@@ -0,0 +1,4 @@
+Ext.define('saas.view.sys.feedback.FormPanelModel', {
+    extend: 'Ext.app.ViewModel',
+    alias: 'viewmodel.sys-feedback-formpanel',
+});

+ 1 - 1
frontend/saas-web/app/view/viewport/ViewportModel.js

@@ -15,7 +15,7 @@ Ext.define('saas.view.viewport.ViewportModel', {
         },
         avatarUrl: function (get) {
             var account = get('account');
-            return (account && account.avatarUrl) || 'resources/images/default/user-profile-default.png'
+            return (account && account.avatarUrl) || 'resources/images/default/user-icon.png'
         }
     }    
 });

+ 145 - 0
frontend/saas-web/overrides/form/field/Number.js

@@ -0,0 +1,145 @@
+Ext.define("saas.override.form.field.Number", {
+    override: "Ext.form.field.Number",
+    
+    /**
+    * @cfg {Boolean} thousandSeparator
+    */
+    thousandSeparator: false,
+    
+    /**
+     * @inheritdoc
+     */
+    toRawNumber: function (value) {
+        return String(value).replace(this.decimalSeparator, '.').replace(new RegExp(Ext.util.Format.thousandSeparator, "g"), '');
+    },
+    
+    /**
+     * @inheritdoc
+     */
+    getErrors: function (value) {
+        if (!this.thousandSeparator)
+            return this.callParent(arguments);
+        var me = this,
+            errors = Ext.form.field.Text.prototype.getErrors.apply(me, arguments),
+            format = Ext.String.format,
+            num;
+
+        value = Ext.isDefined(value) ? value : this.processRawValue(this.getRawValue());
+
+        if (value.length < 1) { // if it's blank and textfield didn't flag it then it's valid
+            return errors;
+        }
+
+        value = me.toRawNumber(value);
+
+        if (isNaN(value.replace(Ext.util.Format.thousandSeparator, ''))) {
+            errors.push(format(me.nanText, value));
+        }
+
+        num = me.parseValue(value);
+
+        if (me.minValue === 0 && num < 0) {
+            errors.push(this.negativeText);
+        }
+        else if (num < me.minValue) {
+            errors.push(format(me.minText, me.minValue));
+        }
+
+        if (num > me.maxValue) {
+            errors.push(format(me.maxText, me.maxValue));
+        }
+
+        return errors;
+    },
+    
+    /**
+     * @inheritdoc
+     */
+     valueToRaw: function (value) {
+        if (!this.thousandSeparator)
+            return this.callParent(arguments);
+        var me = this;
+
+        var format = "000,000";
+        var l = (value+'').split('.')[1] ? (value+'').split('.')[1] : 0;
+        
+        for (var i = 0; i < l && i < me.decimalPrecision; i++) {
+            if (i == 0)
+                format += ".";
+            format += "0";
+        }
+        value = me.parseValue(Ext.util.Format.number(value, format));
+        value = me.fixPrecision(value);
+        value = Ext.isNumber(value) ? value : parseFloat(me.toRawNumber(value));
+        console.log('v1', format, value);
+
+        // var l = (value+'').split('.')[1] ? (value+'').split('.')[1] : 0;
+        // format = format.split('.')[0] + new Array(l).map(function() {return '0'}).join('');
+
+        value = isNaN(value) ? '' : String(Ext.util.Format.number(value, format)).replace('.', me.decimalSeparator);
+        console.log('v2', format, value);
+        return value;
+    },
+    
+    /**
+     * @inheritdoc
+     */
+    getSubmitValue: function () {
+        if (!this.thousandSeparator)
+            return this.callParent(arguments);
+        var me = this,
+            value = me.callParent();
+
+        if (!me.submitLocaleSeparator) {
+            value = me.toRawNumber(value);
+        }
+        return value;
+    },
+    
+    /**
+     * @inheritdoc
+     */
+    setMinValue: function (value) {
+        if (!this.thousandSeparator)
+            return this.callParent(arguments);
+        var me = this,
+            allowed;
+
+        me.minValue = Ext.Number.from(value, Number.NEGATIVE_INFINITY);
+        me.toggleSpinners();
+
+        // Build regexes for masking and stripping based on the configured options
+        if (me.disableKeyFilter !== true) {
+            allowed = me.baseChars + '';
+
+            if (me.allowExponential) {
+                allowed += me.decimalSeparator + 'e+-';
+            }
+            else {
+                allowed += Ext.util.Format.thousandSeparator;
+                if (me.allowDecimals) {
+                    allowed += me.decimalSeparator;
+                }
+                if (me.minValue < 0) {
+                    allowed += '-';
+                }
+            }
+
+            allowed = Ext.String.escapeRegex(allowed);
+            me.maskRe = new RegExp('[' + allowed + ']');
+            if (me.autoStripChars) {
+                me.stripCharsRe = new RegExp('[^' + allowed + ']', 'gi');
+            }
+        }
+    },
+    
+    /**
+     * @private
+     */
+    parseValue: function (value) {
+        if (!this.thousandSeparator)
+            return this.callParent(arguments);
+        value = parseFloat(this.toRawNumber(value));
+        return isNaN(value) ? null : value;
+    }
+});

BIN
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.eot


File diff suppressed because it is too large
+ 0 - 0
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.js


File diff suppressed because it is too large
+ 0 - 0
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.svg


BIN
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.ttf


BIN
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.woff


+ 2 - 0
frontend/saas-web/packages/font-saas/sass/etc/icons.scss

@@ -1,6 +1,8 @@
 
 .sa-purchase:before { content: "\e613"; }
 
+.sa-xiu:before { content: "\e605"; }
+
 .sa-weibiaoti1:before { content: "\ef04"; }
 
 .sa-document:before { content: "\e654"; }

+ 26 - 0
frontend/saas-web/resources/json/info.json

@@ -0,0 +1,26 @@
+[{
+    "title": "七天内待出货销售",
+    "content": "168件",
+    "color": "yellow"
+}, {
+    "title": "七天内待入库采购",
+    "content": "168件",
+    "color": "purple"
+}, {
+    "title": "七天内代付款",
+    "content": "168件",
+    "color": "red"
+}, {
+    "title": "七天内代收款",
+    "content": "168件",
+    "color": "yellow"
+}, {
+    "title": "未审核验收",
+    "content": "168件"
+}, {
+    "title": "七天内待出货销售",
+    "content": "168件"
+}, {
+    "title": "未审核出货",
+    "content": "168件"
+}]

Some files were not shown because too many files changed in this diff