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

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

# Conflicts:
#	applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
#	applications/money/money-server/src/main/resources/mapper/PaybalancedetailMapper.xml
#	frontend/saas-web/app/view/money/payBalance/QueryPanel.js
#	frontend/saas-web/app/view/money/recBalance/FormPanel.js
huangx 7 лет назад
Родитель
Сommit
5a6851a0e7
60 измененных файлов с 1226 добавлено и 508 удалено
  1. 2 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.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. 10 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java
  6. 10 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/RecbalanceContorller.java
  7. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/BanksubledgerMapper.java
  8. 17 12
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  9. 6 6
      applications/money/money-server/src/main/resources/mapper/FundtransferdetailMapper.xml
  10. 1 1
      applications/money/money-server/src/main/resources/mapper/PaybalancedetMapper.xml
  11. 1 1
      applications/money/money-server/src/main/resources/mapper/RecbalancedetMapper.xml
  12. 1 1
      applications/money/money-server/src/main/resources/mapper/RecbalancedetailMapper.xml
  13. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java
  14. 30 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOutList.java
  15. 5 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  16. 28 1
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml
  17. 5 0
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml
  18. 30 0
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOutList.java
  19. 2 2
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/ProdInOutServiceImpl.java
  20. 29 1
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutListMapper.xml
  21. 2 31
      frontend/saas-web/app/view/core/form/FormPanel.js
  22. 4 1
      frontend/saas-web/app/view/core/form/FormPanel.scss
  23. 5 0
      frontend/saas-web/app/view/core/form/FormPanelController.js
  24. 5 4
      frontend/saas-web/app/view/core/form/MseeageLog.js
  25. 1 1
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  26. 13 7
      frontend/saas-web/app/view/core/form/field/Month.js
  27. 3 2
      frontend/saas-web/app/view/core/query/QueryFormPanel.js
  28. 30 13
      frontend/saas-web/app/view/core/query/QueryGridPanel.js
  29. 2 2
      frontend/saas-web/app/view/core/query/QueryPanel.js
  30. 0 1
      frontend/saas-web/app/view/core/query/QueryPanel.scss
  31. 44 24
      frontend/saas-web/app/view/document/product/BasePanel.js
  32. 51 105
      frontend/saas-web/app/view/document/product/FormPanel.js
  33. 4 1
      frontend/saas-web/app/view/document/vendor/BasePanel.js
  34. 39 33
      frontend/saas-web/app/view/main/Main.js
  35. 45 36
      frontend/saas-web/app/view/main/Main.scss
  36. 1 1
      frontend/saas-web/app/view/main/MainContainerWrap.js
  37. 8 0
      frontend/saas-web/app/view/main/MainController.js
  38. 15 18
      frontend/saas-web/app/view/money/fundtransfer/FormPanel.js
  39. 6 2
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  40. 46 11
      frontend/saas-web/app/view/purchase/purchase/QueryPanel.js
  41. 35 21
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  42. 34 24
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js
  43. 1 1
      frontend/saas-web/app/view/stock/make/FormPanelController.js
  44. 0 17
      frontend/saas-web/app/view/stock/otherIn/FormPanel.js
  45. 40 30
      frontend/saas-web/app/view/stock/otherIn/QueryPanel.js
  46. 80 2
      frontend/saas-web/app/view/stock/otherIn/QueryPanelController.js
  47. 0 17
      frontend/saas-web/app/view/stock/otherOut/FormPanel.js
  48. 40 32
      frontend/saas-web/app/view/stock/otherOut/QueryPanel.js
  49. 80 2
      frontend/saas-web/app/view/stock/otherOut/QueryPanelController.js
  50. 1 4
      frontend/saas-web/app/view/stock/report/ProdinoutCount.js
  51. 224 37
      frontend/saas-web/app/view/sys/guide/FormPanel.js
  52. 145 0
      frontend/saas-web/overrides/form/field/Number.js
  53. BIN
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.eot
  54. 0 0
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.js
  55. 0 0
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.svg
  56. BIN
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.ttf
  57. BIN
      frontend/saas-web/packages/font-saas/resources/fonts/iconfont.woff
  58. 15 1
      frontend/saas-web/packages/font-saas/sass/etc/icons.scss
  59. BIN
      frontend/saas-web/resources/images/guide/end.png
  60. BIN
      frontend/saas-web/resources/images/guide/information.png

+ 2 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -38,6 +38,8 @@ public enum BizExceptionCode implements BaseExceptionCode {
 
     //采购 70000-71999
     PURCCHECKIN_POST_ERROR(70000,""),
+    PURCHASE_UNAUDIT_ERROR(72006,"采购订单已转采购验收单,无法反审核"),
+
 
     //销售
     SALE_ALL_TURNOUT(72000, "该销售单已全部转出货,无法转出货单"),

+ 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);

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

@@ -10,6 +10,7 @@ import com.usoftchina.saas.money.po.Paybalance;
 import com.usoftchina.saas.money.service.PaybalanceService;
 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,25 +23,28 @@ public class PaybalanceController {
     @Autowired
     private PaybalanceService paybalanceService;
 
+    @Transactional
     @RequestMapping("/save")
     public Result saveFormData(@RequestBody Pay body) {
         DocBaseDTO docBaseDTO = paybalanceService.insert(body);
         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);
@@ -58,30 +62,35 @@ public class PaybalanceController {
         return Result.success(list);
     }
 
+    @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Pay body){
         paybalanceService.audit(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/unAudit/{id}")
     public Result unAudit(@PathVariable("id") int id){
         paybalanceService.unAudit(id);
         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);

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

@@ -10,6 +10,7 @@ import com.usoftchina.saas.money.po.Recbalance;
 import com.usoftchina.saas.money.service.RecbalanceService;
 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.*;
 
 import java.util.Iterator;
@@ -24,24 +25,28 @@ public class RecbalanceContorller {
     @Autowired
     private RecbalanceService recbalanceService;
 
+    @Transactional
     @RequestMapping("/save")
     public Result saveFormData(@RequestBody Rec body){
         DocBaseDTO docBaseDTO = recbalanceService.insert(body);
         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);
@@ -58,30 +63,35 @@ public class RecbalanceContorller {
         return Result.success(recbalanceService.selectList(page, condition));
     }
 
+    @Transactional
     @RequestMapping("/audit")
     public Result audit(@RequestBody Rec body){
         recbalanceService.audit(body);
         return Result.success();
     }
 
+    @Transactional
     @PostMapping("/unAudit/{id}")
     public Result unAudit(@PathVariable("id") Long id){
         recbalanceService.unAudit(id);
         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);

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

@@ -22,7 +22,7 @@ public interface BanksubledgerMapper extends CommonBaseMapper<Banksubledger> {
 //    Long insert(Banksubledger record);
 
     int insertSelective(Banksubledger record);
-    String selectCode(String code);
+    List<String> selectCode(String code);
 
     List<Banksubledger> selectByExample(BanksubledgerExample example);
 

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

@@ -192,7 +192,8 @@ public class PaybalanceServiceImpl implements PaybalanceService {
             //更新账户资料金额
             Bankinformation bankinformation = new Bankinformation();
             Bankinformation nowBankInformation = paybalanceMapper.selectBankInformationByPrimaryKey(det.getPd_bankid());
-            bankinformation.setBk_thisamount(nowBankInformation.getBk_thisamount()+det.getPd_amount());
+            bankinformation.setBk_thisamount((nowBankInformation.getBk_thisamount() == null ? new Double(0) : nowBankInformation.getBk_thisamount())
+                    + (det.getPd_amount() == null ? 0.0 : det.getPd_amount()));
             paybalanceMapper.updateBankByPrimaryKeySelective(bankinformation);
         }
         //更新主表pb_pbdamount=从表二金额合计
@@ -204,6 +205,7 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         updatePay.setPb_pdamount(amountTotal);
         updatePay.setPb_pbdamount(amountTotal2);
         paybalanceMapper.updateByPrimaryKeySelective(updatePay);
+        //updateByPrimaryKeySelective
         /**
          * ve_preamount=nvl(ve_preamount,0)+pb_preamount,
          * ve_payamount=nvl(ve_payamount,0)-pb_pbdamount,
@@ -241,18 +243,18 @@ public class PaybalanceServiceImpl implements PaybalanceService {
          * ve_leftamount=ve_beginapamount-ve_beginprepayamount+ve_payamount-ve_preamount;
          */
         Paybalance pay = paybalanceMapper.selectByPrimaryKey(Long.valueOf(id));
-        Double pay_preamount = pay.getPb_preamount()==null?new Double(0):pay.getPb_preamount();
-        Double pay_pbdamount = pay.getPb_pbdamount()==null?new Double(0):pay.getPb_pbdamount();
+        Double pay_preamount = pay.getPb_preamount() == null ? new Double(0): pay.getPb_preamount();
+        Double pay_pbdamount = pay.getPb_pbdamount() == null ? new Double(0): pay.getPb_pbdamount();
         Vendor vendorData = paybalanceMapper.selectVendorByPrimaryKey(pay.getPb_vendid());
-        Double preamount = vendorData.getVe_preamount()==null?new Double(0):vendorData.getVe_preamount();
-        Double beginapamount = vendorData.getVe_beginapamount()==null?new Double(0):vendorData.getVe_beginapamount();
-        Double beginprepayamount= vendorData.getVe_beginprepayamount()==null?new Double(0):vendorData.getVe_beginprepayamount();
-        Double payamount = vendorData.getVe_payamount()==null?new Double(0):vendorData.getVe_payamount();
+        Double preamount = vendorData.getVe_preamount() == null ? new Double(0) : vendorData.getVe_preamount();
+        Double beginapamount = vendorData.getVe_beginapamount() == null ? new Double(0) : vendorData.getVe_beginapamount();
+        Double beginprepayamount= vendorData.getVe_beginprepayamount() == null ? new Double(0) : vendorData.getVe_beginprepayamount();
+        Double payamount = vendorData.getVe_payamount() == null ? new Double(0) : vendorData.getVe_payamount() ;
         Vendor vendor = new Vendor();
         vendor.setId(Long.valueOf(String.valueOf(pay.getPb_vendid())));
-        vendor.setVe_preamount(preamount-pay_preamount);
-        vendor.setVe_payamount(payamount+pay_pbdamount);
-        vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount+pay_pbdamount-preamount+pay_preamount);
+        vendor.setVe_preamount(preamount - pay_preamount);
+        vendor.setVe_payamount(payamount + pay_pbdamount);
+        vendor.setVe_leftamount(beginapamount - beginprepayamount + payamount + pay_pbdamount - preamount + pay_preamount);
         paybalanceMapper.updateVendorByPrimaryKeySelective(vendor);
 
         //更新账户资料金额
@@ -260,7 +262,8 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         for (Paybalancedet det:paybalancedet) {
             Bankinformation bankinformation = new Bankinformation();
             Bankinformation nowBankInformation = paybalanceMapper.selectBankInformationByPrimaryKey(det.getPd_bankid());
-            bankinformation.setBk_thisamount(nowBankInformation.getBk_thisamount()-det.getPd_amount());
+            bankinformation.setBk_thisamount((nowBankInformation.getBk_thisamount() == null ? new Double(0) : nowBankInformation.getBk_thisamount())
+                    - (det.getPd_amount() == null ? new Double(0) : det.getPd_amount()));
             paybalanceMapper.updateBankByPrimaryKeySelective(bankinformation);
         }
 
@@ -470,7 +473,9 @@ public class PaybalanceServiceImpl implements PaybalanceService {
             banksubledger.setBl_manname(paybalance.getPb_manname());
             banksubledger.setBl_remark(paybalancedet.getPd_remark());
             banksubledger.setBl_orderamount(paybalancedet.getPd_amount() * -1);
-            if (banksubledgerMapper.selectCode(banksubledger.getBl_code()) == null){
+
+            List<String> bankList = banksubledgerMapper.selectCode(banksubledger.getBl_code());
+            if (bankList.size() == 0){
                 banksubledgerMapper.insertSelective(banksubledger);
             }else {
                 banksubledgerMapper.updateByPrimaryKeySelective(banksubledger);

+ 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>

+ 1 - 1
applications/money/money-server/src/main/resources/mapper/PaybalancedetMapper.xml

@@ -32,7 +32,7 @@
     select 
     <include refid="Base_Column_List" />
     from paybalancedet
-    where pd_pbid = #{id,jdbcType=INTEGER}
+    where pd_pbid = #{id,jdbcType=INTEGER} order by pd_id desc
   </select>
   <delete id="deleteItem" parameterType="java.lang.Integer" >
     delete from paybalancedet

+ 1 - 1
applications/money/money-server/src/main/resources/mapper/RecbalancedetMapper.xml

@@ -90,7 +90,7 @@
     select 
     <include refid="Base_Column_List" />
     from recbalancedet
-    where rd_rbid = #{id,jdbcType=INTEGER}
+    where rd_rbid = #{id,jdbcType=INTEGER} order by rd_id desc
   </select>
   <delete id="deleteItem" parameterType="java.lang.Integer">
     delete from recbalancedet

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

@@ -41,7 +41,7 @@
   </select>
   <delete id="deleteItem" parameterType="java.lang.Integer" >
     delete from recbalancedetail
-    where rbd_id = #{id,jdbcType=INTEGER}
+    where rbd_id = #{id,jdbcType=INTEGER} order by rbd_sldate desc
   </delete>
 
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >

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

@@ -26,4 +26,6 @@ public interface PurchaseMapper extends CommonBaseMapper<Purchase>{
                                    @Param("companyId") Long companyId);
 
     String selectCodeById(Long id);
+
+    Integer checkTurnInstatus(Long id);
 }

+ 30 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOutList.java

@@ -144,4 +144,34 @@ public class ProdInOutList extends CommonBaseEntity{
 
     private Long pd_ioid;
 
+    //private ProductDTO productDTO;
+    private Long pr_id;
+    private String pr_code;
+    private String pr_detail;
+    private String pr_spec;
+    private String pr_unit;
+    private String pr_kind;
+    private String pr_orispeccode;
+    private long pr_whid;
+    private String pr_whcode;
+    private String pr_whname;
+    private long pr_zxbzs;
+    private long pr_leadtime;
+    private String pr_brand;
+    private String pr_standardprice;
+    private String pr_purcprice;
+    private String pr_saleprice;
+    private long pr_vendid;
+    private String pr_vendname;
+    private String pr_vendcode;
+    private Date pr_docdate;
+    private long pr_recordmanid;
+    private String pr_recordman;
+    private String pr_status;
+    private String pr_statuscode;
+    private String pr_text1;
+    private String pr_text2;
+    private String pr_text3;
+    private String pr_text4;
+
 }

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

@@ -498,6 +498,11 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     @Transactional
     private void singleUnAudit(Long id) {
         Purchase purchase = new Purchase();
+        //检查是否已转验收单
+        Integer num = getMapper().checkTurnInstatus(id);
+        if (num > 0) {
+            throw new BizException(BizExceptionCode.PURCHASE_UNAUDIT_ERROR);
+        }
         //生成更新对象
         purchase.setId(id);
         purchase.setPu_status(Status.UNAUDITED.getDisplay());

+ 28 - 1
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -71,7 +71,34 @@
     <result column="pd_ym" jdbcType="INTEGER" property="pd_ym" />
     <result column="pd_yqty" jdbcType="DOUBLE" property="pd_yqty" />
     <result column="pd_ioid" jdbcType="INTEGER" property="pd_ioid" />
-
+    <result column="pr_id" property="pr_id"/>
+    <result column="pr_code" property="pr_code"/>
+    <result column="pr_detail" property="pr_detail"/>
+    <result column="pr_spec" property="pr_spec"/>
+    <result column="pr_unit" property="pr_unit"/>
+    <result column="pr_kind" property="pr_kind"/>
+    <result column="pr_orispeccode" property="pr_orispeccode"/>
+    <result column="pr_whid" property="pr_whid"/>
+    <result column="pr_whcode" property="pr_whcode"/>
+    <result column="pr_whname" property="pr_whname"/>
+    <result column="pr_zxbzs" property="pr_zxbzs"/>
+    <result column="pr_leadtime" property="pr_leadtime"/>
+    <result column="pr_brand" property="pr_brand"/>
+    <result column="pr_standardprice" property="pr_standardprice"/>
+    <result column="pr_purcprice" property="pr_purcprice"/>
+    <result column="pr_saleprice" property="pr_saleprice"/>
+    <result column="pr_vendid" property="pr_vendid"/>
+    <result column="pr_vendname" property="pr_vendname"/>
+    <result column="pr_vendcode" property="pr_vendcode"/>
+    <result column="pr_docdate" property="pr_docdate"/>
+    <result column="pr_recordmanid" property="pr_recordmanid"/>
+    <result column="pr_recordman" property="pr_recordman"/>
+    <result column="pr_status" property="pr_status"/>
+    <result column="pr_statuscode" property="pr_statuscode"/>
+    <result column="pr_text1" property="pr_text1"/>
+    <result column="pr_text2" property="pr_text2"/>
+    <result column="pr_text3" property="pr_text3"/>
+    <result column="pr_text4" property="pr_text4"/>
   </resultMap>
 
   <select id="selectProdInOutBycondition"  resultMap="BaseResultMap">

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

@@ -422,4 +422,9 @@
   <select id="selectCodeById" resultType="string" parameterType="long">
     select pu_code from purchase where pu_id=#{id}
   </select>
+
+  <select id="checkTurnInstatus" resultType="int" >
+    select count(1) from purchasedetail where PD_PUID=#{id} and PD_YQTY !=0;
+</select>
+
 </mapper>

+ 30 - 0
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOutList.java

@@ -145,4 +145,34 @@ public class ProdInOutList extends CommonBaseEntity{
     private Double pi_nettotal;
 
     private String pi_remark;
+
+    //private ProductDTO productDTO;
+    private Long pr_id;
+    private String pr_code;
+    private String pr_detail;
+    private String pr_spec;
+    private String pr_unit;
+    private String pr_kind;
+    private String pr_orispeccode;
+    private long pr_whid;
+    private String pr_whcode;
+    private String pr_whname;
+    private long pr_zxbzs;
+    private long pr_leadtime;
+    private String pr_brand;
+    private String pr_standardprice;
+    private String pr_purcprice;
+    private String pr_saleprice;
+    private long pr_vendid;
+    private String pr_vendname;
+    private String pr_vendcode;
+    private Date pr_docdate;
+    private long pr_recordmanid;
+    private String pr_recordman;
+    private String pr_status;
+    private String pr_statuscode;
+    private String pr_text1;
+    private String pr_text2;
+    private String pr_text3;
+    private String pr_text4;
 }

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

@@ -77,9 +77,9 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             con = "1=1";
         }
         if (null == req || StringUtils.isEmpty(req.getMode()) || "MAIN".equals(req.getMode())) {
-            list = prodInOutListMapper.selectProdInOutListByCondition(con,companyId);
-        } else {
             list = prodInOutListMapper.selectProdInOutBycondition(con,companyId);
+        } else {
+            list = prodInOutListMapper.selectProdInOutListByCondition(con,companyId);
         }
         return list;
     }

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

@@ -73,12 +73,40 @@
     <result column="pd_ym" jdbcType="INTEGER" property="pd_ym" />
     <result column="pd_yqty" jdbcType="DOUBLE" property="pd_yqty" />
     <result column="pd_ioid" jdbcType="INTEGER" property="pd_ioid" />
-
+    <result column="pr_id" property="pr_id"/>
+    <result column="pr_code" property="pr_code"/>
+    <result column="pr_detail" property="pr_detail"/>
+    <result column="pr_spec" property="pr_spec"/>
+    <result column="pr_unit" property="pr_unit"/>
+    <result column="pr_kind" property="pr_kind"/>
+    <result column="pr_orispeccode" property="pr_orispeccode"/>
+    <result column="pr_whid" property="pr_whid"/>
+    <result column="pr_whcode" property="pr_whcode"/>
+    <result column="pr_whname" property="pr_whname"/>
+    <result column="pr_zxbzs" property="pr_zxbzs"/>
+    <result column="pr_leadtime" property="pr_leadtime"/>
+    <result column="pr_brand" property="pr_brand"/>
+    <result column="pr_standardprice" property="pr_standardprice"/>
+    <result column="pr_purcprice" property="pr_purcprice"/>
+    <result column="pr_saleprice" property="pr_saleprice"/>
+    <result column="pr_vendid" property="pr_vendid"/>
+    <result column="pr_vendname" property="pr_vendname"/>
+    <result column="pr_vendcode" property="pr_vendcode"/>
+    <result column="pr_docdate" property="pr_docdate"/>
+    <result column="pr_recordmanid" property="pr_recordmanid"/>
+    <result column="pr_recordman" property="pr_recordman"/>
+    <result column="pr_status" property="pr_status"/>
+    <result column="pr_statuscode" property="pr_statuscode"/>
+    <result column="pr_text1" property="pr_text1"/>
+    <result column="pr_text2" property="pr_text2"/>
+    <result column="pr_text3" property="pr_text3"/>
+    <result column="pr_text4" property="pr_text4"/>
   </resultMap>
 
 
   <select id="selectProdInOutListByCondition"  resultMap="BaseResultMap">
     select  *  from prodinout left join prodiodetail on pi_id = pd_piid
+    left join product on pd_prodcode=pr_code
     <where>
       <if test="con != null">
         ${con}

+ 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;

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

@@ -32,6 +32,7 @@ Ext.define('saas.view.core.form.FormPanelController', {
     },
 
     initCopyData: function(formData) {
+        var me = this;
         var form = this.getView();
         var detailCount = form.detailCount;
         var main = formData.main;
@@ -67,6 +68,10 @@ Ext.define('saas.view.core.form.FormPanelController', {
             }
         }
 
+        return me.myInitCopyData(formData);;
+    },
+
+    myInitCopyData: function(formData) {
         return formData;
     },
     

+ 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, 
 

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

@@ -5,7 +5,7 @@ Ext.define('saas.view.core.form.field.Month', {
     extend:'Ext.form.field.Picker',
     alias: 'widget.monthdatefield',
     requires: ['Ext.picker.Month'],
-    format : "m/Y",
+    format : "Ym",
     disabledDaysText : "Disabled",
     disabledDatesText : "Disabled",
     triggerCls : Ext.baseCSSPrefix + 'form-date-trigger',
@@ -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(),'Ym');
+        return Ext.Date.format(new Date(),this.format);
     },
     onCancelClick: function() {
         this.onSelect();
@@ -107,7 +113,7 @@ Ext.define('saas.view.core.form.field.Month', {
         return [month, year];
     },
     setValue : function(value) {
-       if (Ext.isEmpty(value)) {
+        if (Ext.isEmpty(value)) {
             value =me.getCurrentVal();
         }
         this.callParent(arguments);

+ 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,

+ 30 - 13
frontend/saas-web/app/view/core/query/QueryGridPanel.js

@@ -288,19 +288,36 @@ Ext.define('saas.view.core.query.QueryGridPanel', {
     },
     onExport: function (me) {
         var grid = me.ownerCt.ownerCmp.ownerCt.ownerCt;
-
-        grid.store.exportPageSize = 5000;
-        grid.store.exportNumber = 1;
-        grid.store.load(function(records, operation, success) {
-            grid.saveDocumentAs({
-                type: 'xlsx',
-                title: grid.addTitle + '列表',
-                fileName: grid.addTitle + '列表.xlsx'
-            });
-            grid.store.exportPageSize = null;
-            grid.store.exportNumber = null;
-            grid.store.load(function(records, operation, success) {
-            });
+        //导出接口权限设置
+        var _url = grid.baseVastUrl.substring(0,grid.baseVastUrl.length-1);
+        var lastIndex = _url.lastIndexOf('/');
+        var caller = _url.substring(lastIndex);
+        var url = '/api/commons'+caller+'/export';
+        grid.BaseUtil.request({
+            url: url,
+            params: '',
+            method: 'POST',
+        })
+        .then(function(localJson) {
+            if(localJson.success){
+                grid.store.exportPageSize = 5000;
+                grid.store.exportNumber = 1;
+                grid.store.load(function(records, operation, success) {
+                    grid.saveDocumentAs({
+                        type: 'xlsx',
+                        title: grid.addTitle + '列表',
+                        fileName: grid.addTitle + '列表.xlsx'
+                    });
+                    grid.store.exportPageSize = null;
+                    grid.store.exportNumber = null;
+                    grid.store.load(function(records, operation, success) {
+                    });
+                });
+            }
+        })
+        .catch(function(res) {
+            console.error(res);
+            showToast('导出失败: ' + res.message);
         });
     },
     onCloseOrder:function(me){

+ 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 {

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

@@ -44,7 +44,6 @@ Ext.define('saas.view.document.product.BasePanel', {
     _formXtype:'document-product-formpanel',
     _title:'物料资料',
     _deleteUrl:'/api/document/product/delete/',
-    // _dataUrl:'http://192.168.253.31:9480/product/list',
     _batchOpenUrl:'/api/document/product/batchOpen',
     _batchCloseUrl:'/api/document/product/batchClose',
     _batchDeleteUrl:'/api/document/product/batchDelete',
@@ -62,32 +61,53 @@ Ext.define('saas.view.document.product.BasePanel', {
         },{
             text : "物料编号", 
             width : 200.0, 
-            dataIndex : "pr_code", 
-            xtype : "", 
-        }, 
-        {
+            dataIndex : "pr_code"
+        }, {
             text : "物料名称", 
             dataIndex : "pr_detail", 
-            width : 120.0, 
-            xtype : "", 
-        },
-        {
+            width : 120.0
+        }, {
+            text : "规格", 
+            dataIndex : "pr_spec"
+        }, {
+            text : "类型", 
+            dataIndex : "pr_kind"
+        }, {
+            text : "单位", 
+            dataIndex : "pr_unit"
+        }, {
+            text : "总库存数", 
+            dataIndex : "po_onhand",
+            xtype: 'numbercolumn'
+        }, {
+            text : "单位成本", 
+            dataIndex : "pr_standardprice",
+            xtype: 'numbercolumn'
+        }, {
+            text : "最新采购单价", 
+            dataIndex : "pr_purcprice",
+            xtype: 'numbercolumn'
+        }, {
+            text : "最新出库单价", 
+            dataIndex : "pr_saleprice",
+            xtype: 'numbercolumn'
+        }, {
+            text : "型号", 
+            dataIndex : "pr_orispeccode"
+        }, {
+            text : "品牌", 
+            dataIndex : "pr_brand"
+        }, {
+            text : "最小包装", 
+            dataIndex : "pr_zxbzs",
+            xtype: 'numbercolumn'
+        }, {
+            text : "L/T", 
+            dataIndex : "pr_leadtime",
+            xtype: 'numbercolumn'
+        }, {
             text : "状态", 
-            dataIndex : "pr_status", 
-            width : 120.0, 
-            xtype : ""
-        }, 
-        {
-            text : "状态码", 
-            dataIndex : "pr_statuscode", 
-            width : 0, 
-            xtype : ""
-        }, 
-        {
-            text : "物料种类", 
-            dataIndex : "pr_kind", 
-            width : 120.0, 
-            xtype : "",
+            dataIndex : "pr_status"
         }]
     },
 

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

@@ -23,62 +23,51 @@ Ext.define('saas.view.document.product.FormPanel', {
 
     codeInHeader: false,
 
-
     defaultItems: [{
         xtype: 'hidden',
         name: 'id',
         fieldLabel: 'id',
-        allowBlank: true,
-        columnWidth: 0.25
+        allowBlank: true
     },{
         xtype: 'textfield',
         name: 'pr_code',
         fieldLabel: '物料编号',
-        allowBlank: false,
-        columnWidth: 0.25
+        allowBlank: false
     },{
         xtype: 'textfield',
         name: 'pr_detail',
         fieldLabel: '物料名称',
-        allowBlank: false,
-        columnWidth: 0.25
+        allowBlank: false
     },{
         xtype: 'hidden',
         name: 'pr_status',
-        fieldLabel: '状态',
-        allowBlank: true,
-        columnWidth: 0.25
+        fieldLabel: '状态'
     },{
         xtype: 'hidden',
         name: 'pr_statuscode',
-        fieldLabel: '状态码',
-        allowBlank: true,
-        columnWidth: 0.25
+        fieldLabel: '状态码'
     },{
         xtype: 'textfield',
         name: 'pr_spec',
         fieldLabel: '规格',
-        allowBlank: false,
-        columnWidth: 0.25
-    },{  
+        allowBlank: false
+    },{
         editable:false,
         xtype : "remotecombo", 
-        storeUrl:'/api/document/productunit/getCombo',
-        name : "pr_unit", 
-        fieldLabel : "单位", 
+        storeUrl:'/api/document/producttype/getCombo',
+        name : "pr_kind", 
+        fieldLabel : "类型", 
         allowBlank : false, 
-        columnWidth : 0.25,
-        editable:false,
         addHandler:function(b){
             var document = Ext.create('saas.view.document.kind.Kind',{});
             var form = this.ownerCmp.ownerCt;
             this.dialog = form.getController().getView().add({
                 xtype: 'document-kind-childwin',
                 bind: {
-                    title: '新增物料单位'
+                    title: '新增物料类型'
                 },
-                dataKind:'productunit',
-                belong:document.etc['productunit'],
+                dataKind:'productkind',
+                belong:document.etc['productkind'],
                 _parent:form,
                 _combo:this.ownerCmp,
                 record:null,
@@ -87,35 +76,25 @@ Ext.define('saas.view.document.product.FormPanel', {
             this.dialog.show();
         }
     },{
-        xtype : "dbfindtrigger",   
-        name : "pr_vendcode", 
-        fieldLabel : "供应商编号", 
-        allowBlank : true, 
-        columnWidth : 0.25, 
-    }, {
-        xtype : "textfield", 
-        name : "pr_vendname", 
-        fieldLabel : "供应商名称", 
-        allowBlank : true, 
-        columnWidth : 0.25
+        xtype: 'textfield',
+        name: 'pr_orispeccode',
+        fieldLabel: '型号'
     },{
         editable:false,
         xtype : "remotecombo", 
-        storeUrl:'/api/document/producttype/getCombo',
-        name : "pr_kind", 
-        fieldLabel : "类型", 
-        allowBlank : false, 
-        columnWidth : 0.25,
+        storeUrl:'/api/document/productbrand/getCombo',
+        name : "pr_brand", 
+        fieldLabel : "品牌", 
         addHandler:function(b){
             var document = Ext.create('saas.view.document.kind.Kind',{});
             var form = this.ownerCmp.ownerCt;
             this.dialog = form.getController().getView().add({
                 xtype: 'document-kind-childwin',
                 bind: {
-                    title: '新增物料类型'
+                    title: '新增物料品牌'
                 },
-                dataKind:'productkind',
-                belong:document.etc['productkind'],
+                dataKind:'productbrand',
+                belong:document.etc['productbrand'],
                 _parent:form,
                 _combo:this.ownerCmp,
                 record:null,
@@ -123,30 +102,24 @@ Ext.define('saas.view.document.product.FormPanel', {
             });
             this.dialog.show();
         }
-    },{
-        xtype: 'textfield',
-        name: 'pr_orispeccode',
-        fieldLabel: '型号',
-        allowBlank: true,
-        columnWidth: 0.25
-    },{
+    },{  
         editable:false,
         xtype : "remotecombo", 
-        storeUrl:'/api/document/productbrand/getCombo',
-        name : "pr_brand", 
-        fieldLabel : "物料品牌", 
-        allowBlank : true, 
-        columnWidth : 0.25,
+        storeUrl:'/api/document/productunit/getCombo',
+        name : "pr_unit", 
+        fieldLabel : "单位", 
+        allowBlank : false, 
+        editable:false,
         addHandler:function(b){
             var document = Ext.create('saas.view.document.kind.Kind',{});
             var form = this.ownerCmp.ownerCt;
             this.dialog = form.getController().getView().add({
                 xtype: 'document-kind-childwin',
                 bind: {
-                    title: '新增物料品牌'
+                    title: '新增物料单位'
                 },
-                dataKind:'productbrand',
-                belong:document.etc['productbrand'],
+                dataKind:'productunit',
+                belong:document.etc['productunit'],
                 _parent:form,
                 _combo:this.ownerCmp,
                 record:null,
@@ -154,103 +127,76 @@ Ext.define('saas.view.document.product.FormPanel', {
             });
             this.dialog.show();
         }
-    },{
-        xtype : "hidden", 
-        name : "pr_vendid", 
-        bind : "{pr_vendid}", 
-        fieldLabel : "供应商ID", 
-        allowBlank : true, 
-        columnWidth : 0
     },{
         xtype : "hidden", 
         name : "pr_whid", 
-        bind : "{pr_whid}", 
-        fieldLabel : "仓库ID", 
-        allowBlank : true, 
-        columnWidth : 0
+        fieldLabel : "仓库ID"
     },{  
         xtype : "dbfindtrigger",     
         name : "pr_whcode", 
-        bind : "{pr_whcode}", 
         fieldLabel : "仓库编号", 
-        allowBlank : true, 
-        columnWidth : 0.25, 
     }, {
         xtype : "textfield", 
         name : "pr_whname", 
         fieldLabel : "仓库名称", 
         allowBlank : true, 
         columnWidth : 0.25
+    },{
+        xtype : "hidden", 
+        name : "pr_vendid", 
+        fieldLabel : "供应商ID", 
+        columnWidth : 0
+    },{
+        xtype : "dbfindtrigger",   
+        name : "pr_vendcode", 
+        fieldLabel : "供应商编号"
+    }, {
+        xtype : "textfield", 
+        name : "pr_vendname", 
+        fieldLabel : "供应商名称"
     },{
         xtype : "numberfield", 
-        bind : "{pr_standardprice}",
         name : "pr_standardprice", 
         fieldLabel : "标准单价", 
         allowBlank : true, 
         columnWidth : 0.25,
         decimalPrecision: 8,
-        minValue:0,
-        renderer : function(v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
-            return Ext.util.Format.number(v, format);
-        },
+        minValue:0
     },{
         ignore:true,
         readOnly:true,
         xtype : "numberfield", 
-        bind : "{pr_purcprice}",
         name : "pr_purcprice", 
         fieldLabel : "最新采购单价", 
         allowBlank : true, 
         columnWidth : 0.25,
         decimalPrecision: 8,
-        minValue:0,
-        renderer : function(v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
-            return Ext.util.Format.number(v, format);
-        },
+        minValue:0
     },{
         ignore:true,
         readOnly:true,
         xtype : "numberfield", 
         name : "pr_saleprice", 
         fieldLabel : "最新出货单价", 
-        allowBlank : true, 
-        columnWidth : 0.25,
         decimalPrecision: 8,
-        minValue:0,
-        renderer : function(v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
-            return Ext.util.Format.number(v, format);
-        },
+        minValue:0
     },{
         xtype : "numberfield", 
         name : "pr_zxbzs", 
         fieldLabel : "最小包装数", 
         minValue:0,
         decimalPrecision: 0,
-        allowBlank : true, 
-        columnWidth : 0.25
+        allowBlank : true
     },{  
         hidden:true,
         xtype : "datefield", 
         name : "createTime", 
-        fieldLabel : "创建时间", 
-        allowBlank : true, 
-        columnWidth : 0.25
+        fieldLabel : "创建时间"
     },{  
         hidden:true,
         xtype : "datefield", 
         name : "updateTime", 
-        fieldLabel : "更新时间", 
-        allowBlank : true, 
-        columnWidth : 0.25
+        fieldLabel : "更新时间"
     }],
 
     defaultButtons:[{

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

@@ -77,7 +77,10 @@ Ext.define('saas.view.document.vendor.BasePanel', {
             xtype: 'numbercolumn',
             dataIndex : "ve_promisedays", 
             width : 120.0, 
-            align:'end'
+            align:'end', 
+            renderer : function(v) {
+                return Ext.util.Format.number(v, '0');
+            }
         }, {
             text : "纳税人识别号", 
             dataIndex : "ve_nsrzh", 

+ 39 - 33
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}'
                     },
@@ -68,7 +67,6 @@ Ext.define('saas.view.main.Main', {
                     iconCls:'x-fa fa-question',
                     ui: 'header',
                     arrowVisible: false,
-                    //tooltip: '帮助',
                     width:50, 
                     listeners:{
                         'mouseover':function(){
@@ -80,32 +78,31 @@ Ext.define('saas.view.main.Main', {
                             if(cx <= btnLayout.left || cx >= btnLayout.left+btnLayout.width || cy <= btnLayout.top) {
                                 btn.hideMenu();
                             }
-                        },'mouseleave':function(enu){
-                            this.hide();
                         } 
                     },
                     menu: {
+                        cls:'nav-menu',
                         items: [{
                             text: '新手导航',
-                            iconCls:'x-fa icon-userGuite',
+                            iconCls:'x-fa fa-comment-o',
                             handler:function(){
                                console.log("新手导航");
                             }
                         },{
                             text: '用户手册',
-                            iconCls:'x-fa icon-userBook',
+                            iconCls:'x-fa fa-comment-o',
                             handler:function(){
                                 console.log("用户手册");
                             }
                         },{
                             text: '常见问题',
-                            iconCls:'x-fa icon-commonQuestion',
+                            iconCls:'x-fa fa-question-circle-o',
                             handler:function(){
                                 console.log("常见问题");
                             }
                         },{
                             text: '客服热线',
-                            iconCls:'x-fa icon-serviceOnline',
+                            iconCls:'x-fa fa-comment-o',
                             handler:function(){
                                 console.log("客服热线");
                             }
@@ -113,54 +110,63 @@ Ext.define('saas.view.main.Main', {
                     }
                 },
                 {
-                    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,
-                   /*  bind: {
-                        src: '{avatarUrl}'
-                    }, */
+                    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("账户中心");
                             }
                         },{  
                             text: '意见反馈',
-                            iconCls:'x-fa icon-feedback',
+                            iconCls:'x-fa fa-comment-o',
                             handler:function(){
                             console.log("意见反馈");
                             }
                         }, {
                             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); 
+                        }
+                    } 
                 }
             ]
         },

+ 45 - 36
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;
@@ -143,6 +160,23 @@ $treelist-nav-ui: (
     font: 400 16px/17px 'Microsoft YaHei';
 }
 
+.x-gudie-information{
+    width: 64px;
+    height: 64px;
+    background: url(../../../../resources/images/guide/information.png) 0 0 no-repeat;
+}
+
+.x-gudie-end{
+    width: 64px;
+    height: 64px;
+    background: url(../../../../resources/images/guide/end.png) 0 0 no-repeat;
+}
+
+.x-guide-background{
+    background-size: 100% 100% !important;
+    background: url(../../../../resources/images/guide/background.png) no-repeat;
+}
+
 .x-grid-checkcolumn-btn {
 	margin-top: -1px;
     width: 34px;
@@ -164,39 +198,14 @@ 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;
+.nav-menu{
+    color: #48C1F8 !important;
 }
-.icon-serviceOnline{
-    margin-top: 0px;
-    background: url(../../../../resources/images/nav/serviceOnline.png) 0 0 no-repeat; 
-    background-size: 16px 16px;
-    background-position: center;
+.x-guide-mask{
+    -webkit-filter: grayscale(100%);
+    -moz-filter: grayscale(100%);
+    -ms-filter: grayscale(100%);
+    -o-filter: grayscale(100%);
+    filter: grayscale(100%);
+    filter: gray;
 }
-.icon-accountCenter{
-    margin-top: 0px;
-    background: url(../../../../resources/images/nav/accountCenter.png) 0 0 no-repeat; 
-    background-size: 16px 16px;
-    background-position: center;
-}
-.icon-feedback{
-    margin-top: 0px;
-    background: url(../../../../resources/images/nav/feedback.png) 0 0 no-repeat; 
-    background-size: 16px 16px;
-    background-position: center;
-} 

+ 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: '关闭当前页',

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

@@ -111,5 +111,13 @@ Ext.define('saas.view.main.MainController', {
 
     onLogout: function() {
         this.fireEvent('logout');
+    },
+
+    accountCenterClick:function(e, t, eOpts){
+        console.log("!!!");
+    },
+    accountCenterMouseover:function(e, t, eOpts){
+        console.log("userImage???");
+        var userImage = Ext.getCmp('userImage');
     }
 });

+ 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",

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

@@ -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:"微信转账"}
+                        ]
                 })
             }
         }, {

+ 46 - 11
frontend/saas-web/app/view/purchase/purchase/QueryPanel.js

@@ -116,7 +116,7 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             width: 120
         },{
             text: '单据日期',
-            dataIndex: 'pu_indate',
+            dataIndex: 'pu_date',
             xtype: 'datecolumn',
             width: 200
         }, {
@@ -143,24 +143,32 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             width: 100,
             hidden: true
         }, {
-            text: '单据编号',
+            text: '采购单号',
             dataIndex: 'pu_code',
             width: 200
+        },{
+            text: '供应商编号',
+            dataIndex: 'pu_vendcode',
+            width: 120
+        },{
+            text: '供应商名称',
+            dataIndex: 'pu_vendname',
+            width: 120
         }, {
             text: '审核状态',
             dataIndex: 'pu_status',
             width: 120
+        },{
+            text: '业务状态',
+            dataIndex: 'pu_acceptstatus',
+            width: 120
         }, {
             text: '单据日期',
-            dataIndex: 'pu_indate',
+            dataIndex: 'pu_date',
             xtype: 'datecolumn',
             width: 200
         }, {
-            text: '供应商名称',
-            dataIndex: 'pu_vendname',
-            width: 120
-        }, {
-            text: '采购序号',
+            text: '序号',
             dataIndex: 'pd_detno',
             xtype: 'numbercolumn',
             width: 120
@@ -168,19 +176,46 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             text: '物料编号',
             dataIndex: 'pd_prodcode',
             width: 120
+        },{
+            text: '物料名称',
+            dataIndex: 'pr_detail',
+            width: 120
+        }, {
+            text: '物料规格',
+            dataIndex: 'pr_spec',
+            width: 120
         }, {
-            text: '数量',
+            text: '单位',
+            dataIndex: 'pr_spec',
+            width: 120
+        },{
+            text: '采购数量',
             dataIndex: 'pd_qty',
             xtype: 'numbercolumn',
             width: 120
         }, {
+            text: '交货日期',
+            dataIndex: 'pd_delivery',
+            xtype: 'datecolumn',
+            width: 200
+        },{
             text: '单价',
             dataIndex: 'pd_price',
             xtype: 'numbercolumn',
             width: 120
         }, {
-            text: '已转数',
-            dataIndex: 'pd_ytqy',
+            text: '税率',
+            dataIndex: 'pd_taxrate',
+            xtype: 'numbercolumn',
+            width: 120
+        },{
+            text: '金额',
+            dataIndex: 'pd_total',
+            xtype: 'numbercolumn',
+            width: 120
+        },{
+            text: '备注',
+            dataIndex: 'pu_remark',
             xtype: 'numbercolumn',
             width: 120
         }]

+ 35 - 21
frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js

@@ -115,6 +115,10 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
             text: '审核状态',
             dataIndex: 'pi_status',
             width: 120
+        },{
+            text: '供应商编号',
+            dataIndex: 'pi_vendcode',
+            width: 120
         },{
             text: '供应商名称',
             dataIndex: 'pi_vendname',
@@ -139,47 +143,52 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
             hidden:true
         }, {
             text: '单据编号',
-            dataIndex: 'pd_inoutno',
+            dataIndex: 'pi_inoutno',
             width: 200
         }, {
+            text: '单据类型',
+            dataIndex: 'pd_piclass',
+            width: 200
+        },{
             text: '审核状态',
             dataIndex: 'pi_status',
             width: 120
-        }, {
-            text: '单据日期',
-            dataIndex: 'pi_date',
-            xtype:'datecolumn',
-            width: 200
+        },{
+            text: '供应商编号',
+            dataIndex: 'pi_vendcode',
+            width: 120
         },{
             text: '供应商名称',
             dataIndex: 'pi_vendname',
             width: 120
         },{
-            text: '采购单号',
-            dataIndex: 'pd_ordercode',
+            text: '物料编号',
+            dataIndex: 'pd_prodcode',
             width: 120
         },{
-            text: '采购序号',
-            dataIndex: 'pd_orderdetno',
-            xtype:'numbercolumn',
+            text: '物料名称',
+            dataIndex: 'pr_detail',
             width: 120
         },{
-            text: '物料编号',
-            dataIndex: 'pd_prodcode',
+            text: '物料规格',
+            dataIndex: 'pr_spec',
+            width: 120
+        },{
+            text: '单位',
+            dataIndex: 'pr_unit',
             width: 120
         },{
-            text: '验收数量',
+            text: '数量',
             dataIndex: 'pd_inqty',
             xtype:'numbercolumn',
             width: 120
         },{
-            text: '采购单价',
-            dataIndex: 'pd_orderprice',
-            xtype:'numbercolumn',
+            text: '仓库',
+            dataIndex: 'pd_whname',
             width: 120
         },{
-            text: '金额',
-            dataIndex: 'pd_total',
+            text: '单位成本',
+            dataIndex: 'pd_orderprice',
             xtype:'numbercolumn',
             width: 120
         },{
@@ -188,8 +197,13 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
             xtype:'numbercolumn',
             width: 120
         },{
-            text: '成本单价',
-            dataIndex: 'pd_price',
+            text: '金额',
+            dataIndex: 'pd_total',
+            xtype:'numbercolumn',
+            width: 120
+        },{
+            text: '相关单号',
+            dataIndex: 'pd_ordercode',
             xtype:'numbercolumn',
             width: 120
         }]

+ 34 - 24
frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js

@@ -143,51 +143,56 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
         relativeColumn: [{
             text: 'id',
             dataIndex: 'pu_id',
-            width: 0,
-            xtype: 'numbercolumn'
+            xtype: 'numbercolumn',
+            hidden:true
         }, {
             text: '单据编号',
-            dataIndex: 'pd_inoutno',
+            dataIndex: 'pi_inoutno',
             width: 200
         }, {
+            text: '单据类型',
+            dataIndex: 'pd_piclass',
+            width: 200
+        },{
             text: '审核状态',
             dataIndex: 'pi_status',
             width: 120
-        }, {
-            text: '单据日期',
-            dataIndex: 'pi_date',
-            xtype:'datecolumn',
-            width: 200
+        },{
+            text: '供应商编号',
+            dataIndex: 'pi_vendcode',
+            width: 120
         },{
             text: '供应商名称',
             dataIndex: 'pi_vendname',
             width: 120
         },{
-            text: '采购单号',
-            dataIndex: 'pd_ordercode',
+            text: '物料编号',
+            dataIndex: 'pd_prodcode',
             width: 120
         },{
-            text: '采购序号',
-            dataIndex: 'pd_orderdetno',
-            xtype:'numbercolumn',
+            text: '物料名称',
+            dataIndex: 'pr_detail',
             width: 120
         },{
-            text: '物料编号',
-            dataIndex: 'pd_prodcode',
+            text: '物料规格',
+            dataIndex: 'pr_spec',
+            width: 120
+        },{
+            text: '单位',
+            dataIndex: 'pr_unit',
             width: 120
         },{
-            text: '验收数量',
+            text: '数量',
             dataIndex: 'pd_inqty',
             xtype:'numbercolumn',
             width: 120
         },{
-            text: '采购单价',
-            dataIndex: 'pd_orderprice',
-            xtype:'numbercolumn',
+            text: '仓库',
+            dataIndex: 'pd_whname',
             width: 120
         },{
-            text: '金额',
-            dataIndex: 'pd_total',
+            text: '单位成本',
+            dataIndex: 'pd_orderprice',
             xtype:'numbercolumn',
             width: 120
         },{
@@ -196,10 +201,15 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
             xtype:'numbercolumn',
             width: 120
         },{
-            text: '成本单价',
-            dataIndex: 'pd_price',
+            text: '金额',
+            dataIndex: 'pd_total',
+            xtype:'numbercolumn',
+            width: 120
+        },{
+            text: '相关单号',
+            dataIndex: 'pd_ordercode',
             xtype:'numbercolumn',
-            width: 120,
+            width: 120
         }]
     }
 });

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

@@ -247,7 +247,7 @@ Ext.define('saas.view.stock.make.FormPanelController', {
                         addTitle: 'BOM资料',
                         //放大镜赋值设置
                         dbfinds:[{
-                            from:'id',to:'ma_prodid'
+                            from:'bo_motherid',to:'ma_prodid'
                         },{
                             from:'bo_mothercode',to:'ma_prodcode'
                         },{

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

@@ -49,23 +49,6 @@ Ext.define('saas.view.stock.otherIn.FormPanel', {
         readOnly:true,
         allowBlank : true, 
         columnWidth : 0.25
-    }, {
-        xtype : "hidden", 
-        name : "pi_vendid", 
-        bind : "{pi_vendid}", 
-        fieldLabel : "供应商ID", 
-        allowBlank : true, 
-        columnWidth : 0.0
-    },{
-        xtype: 'hidden',
-        name: 'pi_vendcode',
-        bind: '{pi_vendcode}',
-        fieldLabel: '供应商编号'
-    }, {
-        xtype: 'dbfindtrigger',
-        name: 'pi_vendname',
-        bind: '{pi_vendname}',
-        fieldLabel: '供应商名称'
     },{
         xtype : "hidden", 
         name : "pi_custid", 

+ 40 - 30
frontend/saas-web/app/view/stock/otherIn/QueryPanel.js

@@ -30,15 +30,15 @@ Ext.define('saas.view.stock.otherIn.QueryPanel', {
         columnWidth: 0.5
     }, {
         xtype: 'textfield',
-        name: 'pi_vendcode',
-        fieldLabel: '供应商编号',
+        name: 'pi_custcode',
+        fieldLabel: '客户编号',
         allowBlank: true,
         hidden:true,
         columnWidth: 0.25
     }, {
         xtype: 'dbfindtrigger',
-        name: 'pi_vendname',
-        fieldLabel: '供应商名称',
+        name: 'pi_custname',
+        fieldLabel: '客户名称',
         allowBlank: true,
         columnWidth: 0.25
     }, {
@@ -128,51 +128,56 @@ Ext.define('saas.view.stock.otherIn.QueryPanel', {
         relativeColumn: [{
             text: 'id',
             dataIndex: 'pu_id',
-            width: 0,
-            xtype: 'numbercolumn'
+            xtype: 'numbercolumn',
+            hidden:true
         }, {
             text: '单据编号',
-            dataIndex: 'pd_inoutno',
+            dataIndex: 'pi_inoutno',
             width: 200
         }, {
-            text: '审核状态',
-            dataIndex: 'pi_status',
-            width: 120
-        }, {
-            text: '单据日期',
-            dataIndex: 'pi_date',
-            xtype:'datecolumn',
+            text: '单据类型',
+            dataIndex: 'pd_piclass',
             width: 200
         },{
-            text: '供应商名称',
-            dataIndex: 'pi_vendname',
+            text: '审核状态',
+            dataIndex: 'pi_status',
             width: 120
         },{
-            text: '采购单号',
-            dataIndex: 'pd_ordercode',
+            text: '客户编号',
+            dataIndex: 'pi_custcode',
             width: 120
         },{
-            text: '采购序号',
-            dataIndex: 'pd_orderdetno',
-            xtype:'numbercolumn',
+            text: '客户名称',
+            dataIndex: 'pi_custname',
             width: 120
         },{
             text: '物料编号',
             dataIndex: 'pd_prodcode',
             width: 120
         },{
-            text: '验收数量',
+            text: '物料名称',
+            dataIndex: 'pr_detail',
+            width: 120
+        },{
+            text: '物料规格',
+            dataIndex: 'pr_spec',
+            width: 120
+        },{
+            text: '单位',
+            dataIndex: 'pr_unit',
+            width: 120
+        },{
+            text: '数量',
             dataIndex: 'pd_inqty',
             xtype:'numbercolumn',
             width: 120
         },{
-            text: '采购单价',
-            dataIndex: 'pd_orderprice',
-            xtype:'numbercolumn',
+            text: '仓库',
+            dataIndex: 'pd_whname',
             width: 120
         },{
-            text: '金额',
-            dataIndex: 'pd_total',
+            text: '单位成本',
+            dataIndex: 'pd_orderprice',
             xtype:'numbercolumn',
             width: 120
         },{
@@ -181,10 +186,15 @@ Ext.define('saas.view.stock.otherIn.QueryPanel', {
             xtype:'numbercolumn',
             width: 120
         },{
-            text: '成本单价',
-            dataIndex: 'pd_price',
+            text: '金额',
+            dataIndex: 'pd_total',
+            xtype:'numbercolumn',
+            width: 120
+        },{
+            text: '相关单号',
+            dataIndex: 'pd_ordercode',
             xtype:'numbercolumn',
-            width: 120,
+            width: 120
         }]
     }
 });

+ 80 - 2
frontend/saas-web/app/view/stock/otherIn/QueryPanelController.js

@@ -90,6 +90,8 @@ Ext.define('saas.view.stock.otherIn.QueryPanelController', {
                         addXtype: 'document-product-formpanel',
                         addTitle: '物料资料',
                         dbfinds:[{
+                            from:'pr_detail',to:'pr_detail',
+                        },{
                             from:'pr_code',to:'pd_prodcode',
                         }, {
                             from:'pr_detail',to:'pr_detail'
@@ -101,7 +103,7 @@ Ext.define('saas.view.stock.otherIn.QueryPanelController', {
                         }],
                         defaultCondition: "pr_statuscode='OPEN'",
                         dbSearchFields:[{
-                            emptyText:'输入物料编号、名称或规格',
+                            emptyText:'输入物料编号或名称',
                             xtype : "textfield", 
                             name : "search", 
                             width: 200,
@@ -179,7 +181,83 @@ Ext.define('saas.view.stock.otherIn.QueryPanelController', {
                     }) ;   
 
                 }
-            }
+            },
+            'dbfindtrigger[name=pi_custname]': {
+                beforerender: function (f) {
+                    Ext.apply(f, {
+                        addXtype: 'document-customer-formpanel',
+                        addTitle: '客户资料',
+                        dataUrl: '/api/document/customer/list',
+                        // dataUrl:'http://localhost:9480/customer/list',
+                        dbfinds: [{
+                            from: 'id',to: 'pi_custid',ignore:true
+                        }, {
+                            from: 'cu_code',to: 'pi_custcode'
+                        }, {
+                            from: 'cu_name',to: 'pi_custname'
+                        }],
+                        dbtpls: [{
+                            field: 'cu_code',
+                            width: 100
+                        }, {
+                            field: 'cu_name',
+                            width: 100
+                        }],
+                        defaultCondition:"cu_statuscode='OPEN'",
+                        //放大镜窗口字段
+                        dbSearchFields:[{
+                            emptyText:'输入客户编号或名称',
+                            xtype : "textfield", 
+                            name : "cu_name", 
+                            allowBlank : true, 
+                            columnWidth : 0.25,
+                            getCondition:function(v){
+                                return "(upper(cu_name) like '%"+v.toUpperCase()+"%' or upper(cu_code) like '%"+v.toUpperCase()+"%')";
+                            }
+                        }],
+                        dbColumns:[{
+                            "text": "客户ID",
+                            "hidden": true,
+                            "dataIndex": "id",
+                        },{
+                            "text": "客户编号",
+                            "dataIndex": "cu_code",
+                            "width": 200,
+                        }, {
+                            "text": "客户名称",
+                            "dataIndex": "cu_name",
+                            "width": 200
+                        },{
+                            "text": "客户类型",
+                            "dataIndex": "cu_name",
+                            "width": 100
+                        },{
+                            "text": "业务员",
+                            "dataIndex": "cu_sellername",
+                            "width": 100
+                        },{
+                            "text": "税率",
+                            "dataIndex": "cu_taxrate",
+                            "width": 100,
+                            xtype: 'numbercolumn',
+                            align:'end'
+                        },{
+                            "text": "承付天数",
+                            "dataIndex": "cu_promisedays",
+                            "width": 100,
+                            xtype: 'numbercolumn',
+                            align:'end'
+                        },{
+                            "text": "额度",
+                            "dataIndex": "cu_credit",
+                            "width": 100,
+                            xtype: 'numbercolumn',
+                            align:'end'
+                        }]
+                    });
+
+                }
+            },            
         });
 
     }

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

@@ -47,23 +47,6 @@ Ext.define('saas.view.stock.otherOut.FormPanel', {
         readOnly: true,
         allowBlank: true,
         columnWidth: 0.25
-    }, {
-        xtype: "hidden",
-        name: "pi_vendid",
-        bind: "{pi_vendid}",
-        fieldLabel: "供应商ID",
-        allowBlank: true,
-        columnWidth: 0.0
-    }, {
-        xtype: 'hidden',
-        name: 'pi_vendcode',
-        bind: '{pi_vendcode}',
-        fieldLabel: '供应商编号'
-    }, {
-        xtype: 'dbfindtrigger',
-        name: 'pi_vendname',
-        bind: '{pi_vendname}',
-        fieldLabel: '供应商名称'
     }, {
         xtype: "hidden",
         name: "pi_custid",

+ 40 - 32
frontend/saas-web/app/view/stock/otherOut/QueryPanel.js

@@ -30,17 +30,15 @@ Ext.define('saas.view.stock.otherOut.QueryPanel', {
         columnWidth: 0.5
     }, {
         xtype: 'textfield',
-        name: 'pi_vendcode',
-        bind: '{pi_vendcode}',
-        fieldLabel: '供应商编号',
+        name: 'pi_custcode',
+        fieldLabel: '客户编号',
         allowBlank: true,
         hidden:true,
         columnWidth: 0.25
     }, {
         xtype: 'dbfindtrigger',
-        name: 'pi_vendname',
-        bind: '{pi_vendname}',
-        fieldLabel: '供应商名称',
+        name: 'pi_custname',
+        fieldLabel: '客户名称',
         allowBlank: true,
         columnWidth: 0.25
     }, {
@@ -130,51 +128,56 @@ Ext.define('saas.view.stock.otherOut.QueryPanel', {
         relativeColumn: [{
             text: 'id',
             dataIndex: 'pu_id',
-            width: 0,
-            xtype: 'numbercolumn'
+            xtype: 'numbercolumn',
+            hidden:true
         }, {
             text: '单据编号',
-            dataIndex: 'pd_inoutno',
+            dataIndex: 'pi_inoutno',
             width: 200
         }, {
-            text: '审核状态',
-            dataIndex: 'pi_status',
-            width: 120
-        }, {
-            text: '单据日期',
-            dataIndex: 'pi_date',
-            xtype:'datecolumn',
+            text: '单据类型',
+            dataIndex: 'pd_piclass',
             width: 200
         },{
-            text: '供应商名称',
-            dataIndex: 'pi_vendname',
+            text: '审核状态',
+            dataIndex: 'pi_status',
             width: 120
         },{
-            text: '采购单号',
-            dataIndex: 'pd_ordercode',
+            text: '客户编号',
+            dataIndex: 'pi_custcode',
             width: 120
         },{
-            text: '采购序号',
-            dataIndex: 'pd_orderdetno',
-            xtype:'numbercolumn',
+            text: '客户名称',
+            dataIndex: 'pi_custname',
             width: 120
         },{
             text: '物料编号',
             dataIndex: 'pd_prodcode',
             width: 120
         },{
-            text: '验收数量',
+            text: '物料名称',
+            dataIndex: 'pr_detail',
+            width: 120
+        },{
+            text: '物料规格',
+            dataIndex: 'pr_spec',
+            width: 120
+        },{
+            text: '单位',
+            dataIndex: 'pr_unit',
+            width: 120
+        },{
+            text: '数量',
             dataIndex: 'pd_inqty',
             xtype:'numbercolumn',
             width: 120
         },{
-            text: '采购单价',
-            dataIndex: 'pd_orderprice',
-            xtype:'numbercolumn',
+            text: '仓库',
+            dataIndex: 'pd_whname',
             width: 120
         },{
-            text: '金额',
-            dataIndex: 'pd_total',
+            text: '单位成本',
+            dataIndex: 'pd_orderprice',
             xtype:'numbercolumn',
             width: 120
         },{
@@ -183,10 +186,15 @@ Ext.define('saas.view.stock.otherOut.QueryPanel', {
             xtype:'numbercolumn',
             width: 120
         },{
-            text: '成本单价',
-            dataIndex: 'pd_price',
+            text: '金额',
+            dataIndex: 'pd_total',
+            xtype:'numbercolumn',
+            width: 120
+        },{
+            text: '相关单号',
+            dataIndex: 'pd_ordercode',
             xtype:'numbercolumn',
-            width: 120,
+            width: 120
         }]
     }
 });

+ 80 - 2
frontend/saas-web/app/view/stock/otherOut/QueryPanelController.js

@@ -90,6 +90,8 @@ Ext.define('saas.view.stock.otherOut.QueryPanelController', {
                         addXtype: 'document-product-formpanel',
                         addTitle: '物料资料',
                         dbfinds:[{
+                            from:'pr_detail',to:'pr_detail',
+                        },{
                             from:'pr_code',to:'pd_prodcode',
                         }, {
                             from:'pr_detail',to:'pr_detail'
@@ -101,7 +103,7 @@ Ext.define('saas.view.stock.otherOut.QueryPanelController', {
                         }],
                         defaultCondition: "pr_statuscode='OPEN'",
                         dbSearchFields:[{
-                            emptyText:'输入物料编号、名称或规格',
+                            emptyText:'输入物料编号或名称',
                             xtype : "textfield", 
                             name : "search", 
                             width: 200,
@@ -179,7 +181,83 @@ Ext.define('saas.view.stock.otherOut.QueryPanelController', {
                     }) ;   
 
                 }
-            }
+            },
+            'dbfindtrigger[name=pi_custname]': {
+                beforerender: function (f) {
+                    Ext.apply(f, {
+                        addXtype: 'document-customer-formpanel',
+                        addTitle: '客户资料',
+                        dataUrl: '/api/document/customer/list',
+                        // dataUrl:'http://localhost:9480/customer/list',
+                        dbfinds: [{
+                            from: 'id',to: 'pi_custid',ignore:true
+                        }, {
+                            from: 'cu_code',to: 'pi_custcode'
+                        }, {
+                            from: 'cu_name',to: 'pi_custname'
+                        }],
+                        dbtpls: [{
+                            field: 'cu_code',
+                            width: 100
+                        }, {
+                            field: 'cu_name',
+                            width: 100
+                        }],
+                        defaultCondition:"cu_statuscode='OPEN'",
+                        //放大镜窗口字段
+                        dbSearchFields:[{
+                            emptyText:'输入客户编号或名称',
+                            xtype : "textfield", 
+                            name : "cu_name", 
+                            allowBlank : true, 
+                            columnWidth : 0.25,
+                            getCondition:function(v){
+                                return "(upper(cu_name) like '%"+v.toUpperCase()+"%' or upper(cu_code) like '%"+v.toUpperCase()+"%')";
+                            }
+                        }],
+                        dbColumns:[{
+                            "text": "客户ID",
+                            "hidden": true,
+                            "dataIndex": "id",
+                        },{
+                            "text": "客户编号",
+                            "dataIndex": "cu_code",
+                            "width": 200,
+                        }, {
+                            "text": "客户名称",
+                            "dataIndex": "cu_name",
+                            "width": 200
+                        },{
+                            "text": "客户类型",
+                            "dataIndex": "cu_name",
+                            "width": 100
+                        },{
+                            "text": "业务员",
+                            "dataIndex": "cu_sellername",
+                            "width": 100
+                        },{
+                            "text": "税率",
+                            "dataIndex": "cu_taxrate",
+                            "width": 100,
+                            xtype: 'numbercolumn',
+                            align:'end'
+                        },{
+                            "text": "承付天数",
+                            "dataIndex": "cu_promisedays",
+                            "width": 100,
+                            xtype: 'numbercolumn',
+                            align:'end'
+                        },{
+                            "text": "额度",
+                            "dataIndex": "cu_credit",
+                            "width": 100,
+                            xtype: 'numbercolumn',
+                            align:'end'
+                        }]
+                    });
+
+                }
+            },             
         });
 
     }

+ 1 - 4
frontend/saas-web/app/view/stock/report/ProdinoutCount.js

@@ -24,12 +24,9 @@ Ext.define('saas.view.stock.report.ProdinoutCount', {
         fieldLabel: '物料编号',
         columnWidth: 0.2
     }, {
-        //xtype: 'datefield',
-        xtype: 'textfield',
+        xtype: 'monthdatefield',
         name: 'pwm_yearmonth',
         fieldLabel: '单据日期',
-        format: 'YYYYMM',
-       // defaultValue: new Date(),
         columnWidth: 0.2
     }],
     reportColumns: [{

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

@@ -4,80 +4,267 @@ Ext.define('saas.view.sys.guide.FormPanel', {
 
     layout:'fit',
 
-    cls:'x-guide-background',
-
-    // bodyStyle: {
-    //     background: 'url(resources/images/guide/background.png)'
-    // },
+    bodyCls:'x-guide-background',
+    //工具类
+    FormUtil: Ext.create('saas.util.FormUtil'),
+    BaseUtil: Ext.create('saas.util.BaseUtil'),
+    dataUrl:'/api/commons/init/check',
 
     initComponent: function () {
         var me = this;
+        showInformation = function(type,value) {
+			me.showInformation(type,value)
+		}
 		var view = new Ext.DataView({
             style:"margin:7% 0 7% 0;",
+            store : Ext.create('Ext.data.Store', {
+				fields: [{
+                    name:'baseSet',type:'boolean'
+                },{
+                    name:'warehouse',type:'boolean'
+                },{
+                    name:'product',type:'boolean'
+                },{
+                    name:'customer',type:'boolean'
+                },{
+                    name:'vendor',type:'boolean'
+                },{
+                    name:'begin',type:'boolean'
+                }],
+				autoLoad: true,
+                pageSize: 10,
+                data: [{
+                    baseSet:false,
+                    warehouse:false,
+                    product:false,
+                    customer:false,
+                    vendor:false,
+                    begin:false,
+                }],
+                proxy: {
+                    timeout:8000,
+                    type: 'ajax',
+                    url: me.dataUrl,
+                    actionMethods: {
+                        read: 'GET'
+                    },
+                    reader: {
+                        type: 'json',
+                        rootProperty: 'data',
+                        totalProperty: 'data',
+                    }
+                },
+			}),
 			tpl : new Ext.XTemplate(
+                '<tpl for=".">',
 				'<div class="x-guide-panel" align ="center">',
                     '<div class="x-guide-item" align ="center" >',
-                        '<img cls="afterLine" src="resources/images/guide/baseSet.png" style="margin:0 185px 0 0;" align ="center" width="135" height="90" data-qtip="基础设置" alt="基础设置" onClick="" >',
-                        '<img src="resources/images/guide/warehouse.png" style="margin:0 185px 0 0;" align ="center" width="135" height="90" data-qtip="仓库资料" alt="仓库资料" onClick="" >',
-                        '<img src="resources/images/guide/product.png" align ="center" width="135" height="90" data-qtip="物料资料" alt="物料资料" onClick="" >',
+                        '<img class="',
+                        '<tpl if="!baseSet">x-guide-mask </tpl>',
+                        '" src="resources/images/guide/baseSet.png" style="margin:0 185px 0 0;" align ="center" width="135" height="90" alt="基础设置" onClick="showInformation(\'baseSet\')" >',
+                        '<img class="',
+                        '<tpl if="!warehouse">x-guide-mask </tpl>',
+                        '"src="resources/images/guide/warehouse.png" style="margin:0 185px 0 0;" align ="center" width="135" height="90" alt="仓库资料" onClick="showInformation(\'warehouse\')" >',
+                        '<img class="',
+                        '<tpl if="!product">x-guide-mask </tpl>',
+                        '"src="resources/images/guide/product.png" align ="center" width="135" height="90" alt="物料资料" onClick="showInformation(\'product\')" >',
                     '</div>',
                     '<div class="x-guide-item" align ="center">',
-                        '<img src="resources/images/guide/1.png" style="margin: -20px 290px 0 0;" align ="center" width="32" height="32" >',
-                        '<img src="resources/images/guide/2.png" style="margin: -20px 290px 0 0;" align ="center" width="32" height="32" >',
-                        '<img src="resources/images/guide/3.png" style="margin: -20px 0px 0 0;" align ="center" width="32" height="32" >',
+                        '<img class="',
+                        '<tpl if="!baseSet">x-guide-mask </tpl>',
+                        '"src="resources/images/guide/1.png" style="margin: -20px 290px 0 0;" align ="center" width="32" height="32" onClick="showInformation(\'baseSet\')" >',
+                        '<img class="',
+                        '<tpl if="!warehouse">x-guide-mask </tpl>',
+                        '"src="resources/images/guide/2.png" style="margin: -20px 290px 0 0;" align ="center" width="32" height="32" onClick="showInformation(\'warehouse\')" >',
+                        '<img class="',
+                        '<tpl if="!product">x-guide-mask </tpl>',
+                        '"src="resources/images/guide/3.png" style="margin: -20px 0px 0 0;" align ="center" width="32" height="32" onClick="showInformation(\'product\')" >',
                     '</div>',
                     '<div class="x-guide-item" align ="center">',
-                        '<span  style="margin:0 270px 0px 0;" align ="center"  >基础设置</span>',
-                        '<span  style="margin:0 270px 0px 0;" align ="center" >仓库资料</span>',
-                        '<span  style="margin:0 0px 0px 0;" align ="center"  >物料资料</span>',
+                        '<span  style="margin:0 270px 0px 0;" align ="center" onClick="showInformation(\'baseSet\')" >基础设置</span>',
+                        '<span  style="margin:0 270px 0px 0;" align ="center" onClick="showInformation(\'warehouse\')" >仓库资料</span>',
+                        '<span  style="margin:0 0px 0px 0;" align ="center"  onClick="showInformation(\'product\')" >物料资料</span>',
                     '</div>',
                     '<div class="x-guide-item" align ="center">',
-                        '<img src="resources/images/guide/point.png" style="margin: 2px 306px 0 0;" align ="center" width="16" height="16" >',
-                        '<img src="resources/images/guide/point.png" style="margin: 2px 306px 0 0;" align ="center" width="16" height="16" >',
-                        '<img src="resources/images/guide/point.png" style="margin: 2px 0px 0 0;" align ="center" width="16" height="16" >',
+                        '<img class="',
+                        '<tpl if="!baseSet">x-guide-mask </tpl>',
+                        '"src="resources/images/guide/point.png" style="margin: 2px 306px 0 0;" align ="center" width="16" height="16" >',
+                        '<img class="',
+                        '<tpl if="!warehouse">x-guide-mask </tpl>',
+                        '"src="resources/images/guide/point.png" style="margin: 2px 306px 0 0;" align ="center" width="16" height="16" >',
+                        '<img class="',
+                        '<tpl if="!product">x-guide-mask </tpl>',
+                        '"src="resources/images/guide/point.png" style="margin: 2px 0px 0 0;" align ="center" width="16" height="16" >',
                         "<br>",
                         '<div class="x-guide-line"  height="1"  style="border:1px solid #E4F7FF;margin: -9px 0 0 0;width: 654px !important;" align ="center"></div>',
                     '</div>',
                     '<div class="x-guide-item" align ="center">',
-                        '<img src="resources/images/guide/customer.png" style="margin:50px 185px 0 0;" align ="center" width="135" height="90" data-qtip="客户资料" alt="客户资料" onClick="" >',
-                        '<img src="resources/images/guide/vendor.png" style="margin:50px 185px 0 0;" align ="center" width="135" height="90" data-qtip="供应商资料" alt="供应商资料" onClick="" >',
-                        '<img src="resources/images/guide/begin.png" style="margin:50px 0 0 0;" align ="center" width="135" height="90" data-qtip="开始使用" alt="开始使用" onClick="" >',
+                        '<img class="',
+                        '<tpl if="!customer">x-guide-mask </tpl>',
+                        '"src="resources/images/guide/customer.png" style="margin:50px 185px 0 0;" align ="center" width="135" height="90" alt="客户资料" onClick="showInformation(\'customer\')" >',
+                        '<img class="',
+                        '<tpl if="!vendor">x-guide-mask </tpl>',
+                        '"src="resources/images/guide/vendor.png" style="margin:50px 185px 0 0;" align ="center" width="135" height="90" alt="供应商资料" onClick="showInformation(\'vendor\')" >',
+                        '<img class="',
+                        '<tpl if="!begin">x-guide-mask </tpl>',
+                        '" src="resources/images/guide/begin.png" style="margin:50px 0 0 0;" align ="center" width="135" height="90" alt="开始使用" onClick="showInformation(\'begin\',\'{begin}\')" >',
                     '</div>',
                     '<div class="x-guide-item" align ="center">',
-                        '<img src="resources/images/guide/4.png" style="margin: -20px 290px 0 0;" align ="center" width="32" height="32" >',
-                        '<img src="resources/images/guide/5.png" style="margin: -20px 290px 0 0;" align ="center" width="32" height="32" >',
-                        '<img src="resources/images/guide/6.png" style="margin: -20px 0px 0 0;" align ="center" width="32" height="32" >',
+                        '<img class="',
+                        '<tpl if="!customer">x-guide-mask </tpl>',
+                        '" src="resources/images/guide/4.png" style="margin: -20px 290px 0 0;" align ="center" width="32" height="32" onClick="showInformation(\'customer\')" >',
+                        '<img class="',
+                        '<tpl if="!vendor">x-guide-mask </tpl>',
+                        '" src="resources/images/guide/5.png" style="margin: -20px 290px 0 0;" align ="center" width="32" height="32"  onClick="showInformation(\'vendor\')">',
+                        '<img class="',
+                        '<tpl if="!begin">x-guide-mask </tpl>',
+                        '" src="resources/images/guide/6.png" style="margin: -20px 0px 0 0;" align ="center" width="32" height="32" onClick="showInformation(\'begin\',\'{begin}\')" >',
                     '</div>',
                     '<div class="x-guide-item" align ="center">',
-                        '<span  style="margin:0 265px 100px 0;" align ="center"  >客户资料</span>',
-                        '<span  style="margin:0 265px 100px 0;" align ="center" >供应商资料</span>',
-                        '<span  style="margin:0 0px 100px 0;" align ="center"  >开始使用</span>',
+                        '<span  style="margin:0 265px 100px 0;" align ="center"  onClick="showInformation(\'customer\')" >客户资料</span>',
+                        '<span  style="margin:0 265px 100px 0;" align ="center" onClick="showInformation(\'vendor\')" >供应商资料</span>',
+                        '<span  style="margin:0 0px 100px 0;" align ="center" onClick="showInformation(\'begin\',\'{begin}\')"  >开始使用</span>',
                     '</div>',
                     '<div class="x-guide-item" align ="center">',
-                        '<img src="resources/images/guide/point.png" style="margin: 2px 306px 0 0;" align ="center" width="16" height="16" >',
-                        '<img src="resources/images/guide/point.png" style="margin: 2px 306px 0 0;" align ="center" width="16" height="16" >',
-                        '<img src="resources/images/guide/point.png" style="margin: 2px 0px 0 0;" align ="center" width="16" height="16" >',
+                        '<img class="',
+                        '<tpl if="!customer">x-guide-mask </tpl>',
+                        '" src="resources/images/guide/point.png" style="margin: 2px 306px 0 0;" align ="center" width="16" height="16" >',
+                        '<img class="',
+                        '<tpl if="!vendor">x-guide-mask </tpl>',
+                        '" src="resources/images/guide/point.png" style="margin: 2px 306px 0 0;" align ="center" width="16" height="16" >',
+                        '<img class="',
+                        '<tpl if="!begin">x-guide-mask </tpl>',
+                        '" src="resources/images/guide/point.png" style="margin: 2px 0px 0 0;" align ="center" width="16" height="16" >',
                         "<br>",
                         '<div class="x-guide-line"  height="1"  style="border:1px solid #E4F7FF;margin: -9px 0 0 0;width: 654px !important;" align ="center"></div>',
                     '</div>',
-				'</div>'
+                '</div>',
+                '</tpl>'
 			),
 			trackOver: true,
 			overItemCls : 'x-module-over',
 			selectedClass : 'selected',
 			singleSelect : true,
 			itemSelector : '.x-module-item'
-		});
-		
-		Ext.apply(me,{
-			items:[view]
-		});
-		me.view = view;
+        });
+
+        Ext.apply(me,{
+            items:[view]
+        });
+        me.view = view;
+
         me.callParent(arguments);
     },
 
     refresh:function(){
-        this.ownerCt.setTitle('新手指引')
+        this.ownerCt.setTitle('新手指引');
+        //刷新store数据
+    },
+
+    getData:function(store){
+        var me = this;
+        //获取数据
+        me.BaseUtil.request({
+            url: me.dataUrl,
+            params: '',
+            method: 'GET',
+        })
+        .then(function(localJson) {
+            if(localJson.success){
+                store;
+                debugger
+            }
+        })
+        .catch(function(res) {
+            console.error(res);
+            showToast('读取初始化信息失败: ' + res.message);
+        });
+    },
+
+    showInformation:function(type,value){
+        var message = '';
+        var xtype = '';
+        var icon = 'x-gudie-information';
+        var title = '';
+        if(type=='baseSet'){
+            message = '<h4>您可以在参数设置中编辑公司的信息。</br>'+
+            '录入完成后切换到“新手导航”页签继续下一步。</h4>';
+            xtype = 'sys-config-formpanel';
+        }
+        if(type=='warehouse'){
+            message = '<h4>因为新增物料时需要告知该物料所属仓库是哪里,所以需要首先进行仓库管理。</br>'+
+            '录入完成后切换到“新手导航”页签继续下一步。</h4>';
+            xtype = 'other-warehouse';
+            title = '仓库资料'
+        }
+        if(type=='product'){
+            message = '<h4>录入物料及其期初数量;开账后也可通过录采购单对物料库存进行增加,</br>录销售单物料库存相应减少。</br>'+
+            '录入完成后切换到“新手导航”页签继续下一步。</h4>';
+            xtype = 'document-product-basepanel';
+            title = '物料资料'
+        }
+        if(type=='customer'){
+            message = '<h4>对客户资料进行录入及管理。</br>'+
+            '录入完成后切换到“新手导航”页签继续下一步。</h4>';
+            xtype = 'document-customer-basepanel';
+            title = '客户资料'
+        }
+        if(type=='vendor'){
+            message = '<h4>录采购单时需选择供应商,在单据页面选择供应商时</br>也提供供应商新增功能,您也可以跳过此步。</br>'+
+            '录入完成后切换到“新手导航”页签继续下一步。</h4>';
+            xtype = 'document-vendor-basepanel';
+            title = '供应商资料'
+        }
+        if(type=='begin'){
+            message = '<h4>欢迎您使用优企云进销存!</br>'+
+            '温馨提示:开账后您还是可以通过左侧菜单栏对基础资料进行维护。</h4>';
+            xtype = "begin";
+            icon = 'x-gudie-end';
+            if(value=='false'){
+                icon = 'x-gudie-information';
+                message = '<h4>请激活所有模块后再使用系统!</h4>';
+            }
+        }
+        var me = this;
+        var form = this.view.ownerCt;
+        var panelEl = form.getEl()
+        var box = panelEl.getBox();
+        var height = box.height;
+        var width = box.width;
+
+        var win = form.add(Ext.create('Ext.window.MessageBox', {
+            buttonAlign : 'right',
+            height:0.5*height,
+            width:0.5*width,
+            buttons: [{
+                text: '我知道了',
+                cls:'x-formpanel-btn-orange',
+                handler: function(b) {
+                    var scope = b.ownerCt.ownerCt;
+                    if(xtype=='begin'&&value=='false'){
+                        scope.close();
+                        return true;
+                    }else if(xtype=='begin'&&value=='true'){
+                        me.ownerCt.close();
+                        return true;
+                    }
+                    openTab(xtype, title, xtype+'_add');
+                    scope.close();
+                }
+            },{
+                text: '取消',
+                cls:'x-formpanel-btn-blue',
+                handler: function(b) {
+                    var scope = b.ownerCt.ownerCt;
+                    scope.close();
+                }
+            }]
+        }));
+        win.show({
+            title : '模块介绍',
+            msg : message,
+            icon : icon
+        });
     }
 
 });

+ 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


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
frontend/saas-web/packages/font-saas/resources/fonts/iconfont.js


Разница между файлами не показана из-за своего большого размера
+ 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


+ 15 - 1
frontend/saas-web/packages/font-saas/sass/etc/icons.scss

@@ -1,8 +1,13 @@
-
 .sa-purchase:before { content: "\e613"; }
 
+.sa-xiu:before { content: "\e605"; }
+
 .sa-weibiaoti1:before { content: "\ef04"; }
 
+.sa-tuichu:before { content: "\e6b7"; }
+
+.sa-feedback:before { content: "\e672"; }
+
 .sa-document:before { content: "\e654"; }
 
 .sa-switch-on:before { content: "\e622"; }
@@ -11,8 +16,14 @@
 
 .sa-sale:before { content: "\e638"; }
 
+.sa-userBook:before { content: "\e600"; }
+
 .sa-arrows-left:before { content: "\ef02"; }
 
+.sa-serviceOnline:before { content: "\e60f"; }
+
+.sa-accountCenter:before { content: "\e61a"; }
+
 .sa-warehouse:before { content: "\e63c"; }
 
 .sa-setting:before { content: "\e64b"; }
@@ -21,5 +32,8 @@
 
 .sa-money:before { content: "\e6fa"; }
 
+.sa-commonQuestion:before { content: "\e673"; }
+
 .sa-arrows-right:before { content: "\ef01"; }
 
+.sa-userGuite:before { content: "\e656"; }

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


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


Некоторые файлы не были показаны из-за большого количества измененных файлов