Browse Source

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

chenw 7 years ago
parent
commit
e030d21282
100 changed files with 1868 additions and 640 deletions
  1. 2 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 45 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/HomePageController.java
  3. 16 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/HomePageMapper.java
  4. 41 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/HomePageService.java
  5. 80 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/HomePageServiceImpl.java
  6. 62 0
      applications/commons/commons-server/src/main/resources/mapper/HomePageMapper.xml
  7. 3 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  8. 9 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/FundtransferController.java
  9. 9 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthreceiptsController.java
  10. 9 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/OthspengdingsController.java
  11. 10 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java
  12. 10 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/RecbalanceContorller.java
  13. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/BanksubledgerMapper.java
  14. 10 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Paybalance.java
  15. 20 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Paybalancedetail.java
  16. 9 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Recbalance.java
  17. 19 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Recbalancedetail.java
  18. 32 17
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  19. 16 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  20. 6 6
      applications/money/money-server/src/main/resources/mapper/FundtransferdetailMapper.xml
  21. 10 6
      applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml
  22. 1 1
      applications/money/money-server/src/main/resources/mapper/PaybalancedetMapper.xml
  23. 8 3
      applications/money/money-server/src/main/resources/mapper/PaybalancedetailMapper.xml
  24. 11 6
      applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml
  25. 1 1
      applications/money/money-server/src/main/resources/mapper/RecbalancedetMapper.xml
  26. 9 4
      applications/money/money-server/src/main/resources/mapper/RecbalancedetailMapper.xml
  27. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java
  28. 30 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOutList.java
  29. 5 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  30. 28 1
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml
  31. 5 0
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml
  32. 30 0
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOutList.java
  33. 2 2
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/ProdInOutServiceImpl.java
  34. 29 1
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutListMapper.xml
  35. 16 1
      frontend/saas-web/app/Application.scss
  36. 15 0
      frontend/saas-web/app/model/document/ProductDetail.js
  37. 8 0
      frontend/saas-web/app/model/home/Info.js
  38. 11 31
      frontend/saas-web/app/view/core/form/FormPanel.js
  39. 4 1
      frontend/saas-web/app/view/core/form/FormPanel.scss
  40. 39 2
      frontend/saas-web/app/view/core/form/FormPanelController.js
  41. 9 4
      frontend/saas-web/app/view/core/form/MseeageLog.js
  42. 1 1
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  43. 125 0
      frontend/saas-web/app/view/core/form/field/Month.js
  44. 3 2
      frontend/saas-web/app/view/core/query/QueryFormPanel.js
  45. 30 13
      frontend/saas-web/app/view/core/query/QueryGridPanel.js
  46. 2 2
      frontend/saas-web/app/view/core/query/QueryPanel.js
  47. 0 1
      frontend/saas-web/app/view/core/query/QueryPanel.scss
  48. 6 8
      frontend/saas-web/app/view/document/customer/FormPanel.js
  49. 5 5
      frontend/saas-web/app/view/document/kind/ChildForm.js
  50. 9 9
      frontend/saas-web/app/view/document/kind/Kind.js
  51. 44 24
      frontend/saas-web/app/view/document/product/BasePanel.js
  52. 65 0
      frontend/saas-web/app/view/document/product/FormController.js
  53. 175 107
      frontend/saas-web/app/view/document/product/FormPanel.js
  54. 4 1
      frontend/saas-web/app/view/document/vendor/BasePanel.js
  55. 6 6
      frontend/saas-web/app/view/document/vendor/FormPanel.js
  56. 10 36
      frontend/saas-web/app/view/home/Home.js
  57. 21 2
      frontend/saas-web/app/view/home/Home.scss
  58. 31 2
      frontend/saas-web/app/view/home/HomeModel.js
  59. 135 92
      frontend/saas-web/app/view/home/InfoCard.js
  60. 47 35
      frontend/saas-web/app/view/home/InfoCard.scss
  61. 63 40
      frontend/saas-web/app/view/main/Main.js
  62. 92 29
      frontend/saas-web/app/view/main/Main.scss
  63. 1 1
      frontend/saas-web/app/view/main/MainContainerWrap.js
  64. 23 0
      frontend/saas-web/app/view/main/MainController.js
  65. 15 18
      frontend/saas-web/app/view/money/fundtransfer/FormPanel.js
  66. 2 2
      frontend/saas-web/app/view/money/fundtransfer/FormPanelController.js
  67. 1 0
      frontend/saas-web/app/view/money/othreceipts/FormPanel.js
  68. 4 1
      frontend/saas-web/app/view/money/othreceipts/FormPanelController.js
  69. 10 1
      frontend/saas-web/app/view/money/othreceipts/QueryPanelController.js
  70. 1 0
      frontend/saas-web/app/view/money/othspendings/FormPanel.js
  71. 4 1
      frontend/saas-web/app/view/money/othspendings/QueryPanelController.js
  72. 18 10
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  73. 10 6
      frontend/saas-web/app/view/money/payBalance/FormPanelController.js
  74. 0 1
      frontend/saas-web/app/view/money/payBalance/QueryPanel.js
  75. 4 1
      frontend/saas-web/app/view/money/payBalance/QueryPanelController.js
  76. 12 6
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  77. 13 6
      frontend/saas-web/app/view/money/recBalance/FormPanelController.js
  78. 4 1
      frontend/saas-web/app/view/money/recBalance/QueryPanelController.js
  79. 2 2
      frontend/saas-web/app/view/money/report/AccountBalance.js
  80. 3 3
      frontend/saas-web/app/view/money/report/CustomerCheck.js
  81. 4 1
      frontend/saas-web/app/view/money/report/CustomerCheckController.js
  82. 2 2
      frontend/saas-web/app/view/money/report/PayDetail.js
  83. 4 1
      frontend/saas-web/app/view/money/report/PayDetailController.js
  84. 2 2
      frontend/saas-web/app/view/money/report/RecDetail.js
  85. 4 1
      frontend/saas-web/app/view/money/report/RecDetailController.js
  86. 2 2
      frontend/saas-web/app/view/money/report/VendorCheck.js
  87. 4 1
      frontend/saas-web/app/view/money/report/VendorCheckController.js
  88. 4 1
      frontend/saas-web/app/view/purchase/purchase/FormPanelController.js
  89. 46 11
      frontend/saas-web/app/view/purchase/purchase/QueryPanel.js
  90. 4 1
      frontend/saas-web/app/view/purchase/purchase/QueryPanelController.js
  91. 8 0
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js
  92. 4 1
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js
  93. 35 21
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  94. 4 1
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanelController.js
  95. 8 0
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js
  96. 4 1
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanelController.js
  97. 34 24
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js
  98. 4 1
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanelController.js
  99. 4 1
      frontend/saas-web/app/view/purchase/report/PurchaseController.js
  100. 4 1
      frontend/saas-web/app/view/purchase/report/PurchasePayController.js

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

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

+ 45 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/HomePageController.java

@@ -0,0 +1,45 @@
+package com.usoftchina.saas.commons.controller;
+
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.service.HomePageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletRequest;
+
+/**
+ * @author: guq
+ * @create: 2018-11-12 19:19
+ * saas首页接口
+ **/
+@RestController
+@RequestMapping("homePage")
+public class HomePageController {
+
+    @Autowired
+    private HomePageService homePageService;
+
+
+    @GetMapping("liveData")
+    public Result liveData(ServletRequest req) {
+        return homePageService.liveDate();
+    }
+
+    @GetMapping("purchaseData")
+    public Result purchaseData(Boolean sixMonths) {
+        return homePageService.purchaseData(sixMonths);
+    }
+
+    @GetMapping("storageData")
+    public Result storageData(ServletRequest req) {
+        return homePageService.storageData();
+    }
+
+
+    @RequestMapping("payAndRecData")
+    public Result payAndRecData(ServletRequest req) {
+        return homePageService.payAndRecData();
+    }
+}

+ 16 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/HomePageMapper.java

@@ -0,0 +1,16 @@
+package com.usoftchina.saas.commons.mapper;
+
+import java.util.Map;
+
+public interface HomePageMapper {
+
+    void getLiveData(Map<String, Object> map);
+
+    String getPurchaseDataNow(Long componyId);
+
+    String getPurchaseDataInSixMonth(Long componyId);
+
+    String getStorageData(Long componyId);
+
+    String getPayAndRecData(Long companyId);
+}

+ 41 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/HomePageService.java

@@ -0,0 +1,41 @@
+package com.usoftchina.saas.commons.service;
+
+import com.usoftchina.saas.base.Result;
+
+public interface HomePageService {
+
+    /**
+    * @Description 获取首页实时数据
+    * @Param: []
+    * @return: com.usoftchina.saas.base.Result
+    * @Author: guq
+    * @Date: 2018/11/12
+    */
+    Result liveDate();
+
+    /**
+    * @Description  获取采购额
+    * @Param: [sixMonths] 区别本月与6个月
+    * @return: com.usoftchina.saas.base.Result
+    * @Author: guq
+    * @Date: 2018/11/13
+    */
+    Result purchaseData(Boolean sixMonths);
+
+    /**
+    * @Description 获取库存数据
+    * @Param: []
+    * @return: com.usoftchina.saas.base.Result
+    * @Author: guq
+    * @Date: 2018/11/13
+    */
+    Result storageData();
+    /**
+    * @Description 获取本月收入支出数据
+    * @Param: []
+    * @return: com.usoftchina.saas.base.Result
+    * @Author: guq
+    * @Date: 2018/11/13
+    */
+    Result payAndRecData();
+}

+ 80 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/HomePageServiceImpl.java

@@ -0,0 +1,80 @@
+package com.usoftchina.saas.commons.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.mapper.HomePageMapper;
+import com.usoftchina.saas.commons.service.HomePageService;
+import com.usoftchina.saas.context.BaseContextHolder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author: guq
+ * @create: 2018-11-12 19:30
+ **/
+@Service
+public class HomePageServiceImpl implements HomePageService{
+
+    @Autowired
+    private HomePageMapper homePageMapper;
+
+    @Override
+    public Result liveDate() {
+        Long componyId = BaseContextHolder.getCompanyId();
+        Object json = null;
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("componyid", componyId);
+        map.put("res", "");
+        homePageMapper.getLiveData(map);
+        if (null != map.get("res")) {
+            json = parseJson(map.get("res").toString());
+        }
+        return Result.success(json);
+    }
+
+    @Override
+    public Result purchaseData(Boolean sixMonths) {
+        Long componyId = BaseContextHolder.getCompanyId();
+        String res = null;
+        Object json = null;
+        if (null != sixMonths && sixMonths) {
+            res = homePageMapper.getPurchaseDataInSixMonth(componyId);
+            json = parseJson(res);
+            return Result.success(json);
+        }
+        res = homePageMapper.getPurchaseDataNow(componyId);
+        json = parseJson(res);
+        return Result.success(json);
+    }
+
+    @Override
+    public Result storageData() {
+        Long componyId = BaseContextHolder.getCompanyId();
+        Object json = parseJson(homePageMapper.getStorageData(componyId));
+        return Result.success(json);
+    }
+
+    @Override
+    public Result payAndRecData() {
+        Long componyId = BaseContextHolder.getCompanyId();
+        Object json = parseJson(homePageMapper.getPayAndRecData(componyId));
+        return Result.success(json);
+    }
+
+    private Object parseJson(String text) {
+        Object json = null;
+        if (null != text) {
+            try {
+                json = JSON.parse(text);
+            }catch (Exception e) {
+                e.printStackTrace();
+            }
+            return json;
+        }
+        return null;
+    }
+}

+ 62 - 0
applications/commons/commons-server/src/main/resources/mapper/HomePageMapper.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.usoftchina.saas.commons.mapper.HomePageMapper" >
+    <parameterMap id="sp_livedata" type="java.util.Map">
+        <parameter property="componyid"  mode="IN" />
+        <parameter property="res" jdbcType="VARCHAR" mode="OUT" />
+    </parameterMap>
+
+    <select id="getLiveData" parameterMap="sp_livedata" statementType="CALLABLE">
+        CALL  SP_LIVEDATA(?,?)
+    </select>
+
+    <select id="getPurchaseDataNow" parameterType="long" resultType="string">
+        select concat('{',GROUP_CONCAT(concat('"',si_vendname,'":',IFNULL(si_amount,0))),'}') from statsinfo
+        where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='PURC' ORDER BY si_amount desc
+    </select>
+
+    <select id="getPurchaseDataInSixMonth" parameterType="long" resultType="string">
+    select concat('{',d1,',',d2,',',d3,',',d4,',',d5,',',d6,'}') from (
+(select concat('"',DATE_FORMAT(now(),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='PURC' ORDER BY si_amount desc) data_1,
+
+(select concat('"',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_2,
+
+
+(select concat('"',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_3,
+
+
+(select concat('"',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc) data_4,
+
+
+(select concat('"',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_5,
+
+(select concat('"',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_6)
+ </select>
+
+
+    <select id="getStorageData" parameterType="long" resultType="string">
+      select concat('{',d1,',',d2,',',d3,',',d4,',',d5,',',d6,'}') from (
+
+(select concat('"',DATE_FORMAT(now(),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc) data_1,
+
+(select concat('"',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_2,
+
+
+(select concat('"',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_3,
+
+
+(select concat('"',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc) data_4,
+
+
+(select concat('"',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_5,
+
+(select concat('"',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_6);
+    </select>
+
+
+    <select id="getPayAndRecData" parameterType="long" resultType="string">
+     select concat('{"支出":',ifnull(si_amount_pay,'0'),',"收入":',ifnull(si_amount_rec,'0'),'}') from statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='FUND'
+    </select>
+
+
+</mapper>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

+ 32 - 17
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=从表二金额合计
@@ -223,11 +224,13 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount-amountTotal2-preamount-amountTotal);
         paybalanceMapper.updateVendorByPrimaryKeySelective(vendor);
 
-        for (Paybalancedetail detail:paybalancedetail) {
-            Subledger subledger1 = new Subledger();
-            subledger1.setId(Long.valueOf(String.valueOf(detail.getPbd_slid())));
-            subledger1.setSl_yamount(detail.getPbd_nowbalance()+detail.getPbd_amount());
-            subledgerMapper.updateByPrimaryKeySelective(subledger1);
+        for (Paybalancedetail detail: paybalancedetail) {
+            Subledger newsubledger = new Subledger();
+            Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getPbd_slid());
+            newsubledger.setId(Long.valueOf(String.valueOf(detail.getPbd_slid())));
+            newsubledger.setSl_yamount(detail.getPbd_nowbalance()+nowSubledger.getSl_yamount());//已核销
+            newsubledger.setSl_namount(nowSubledger.getSl_namount()-detail.getPbd_nowbalance());//未核销
+            subledgerMapper.updateByPrimaryKeySelective(newsubledger);
         }
     }
 
@@ -240,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();
-        Double pay_pbdamount = 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();
-        Double beginapamount = vendorData.getVe_beginapamount();
-        Double beginprepayamount= vendorData.getVe_beginprepayamount();
-        Double payamount = 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);
 
         //更新账户资料金额
@@ -259,10 +262,20 @@ 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);
         }
 
+        List<Paybalancedetail> paybalancedetail = paybalancedetailMapper.selectByPrimaryKey(id);
+        for(Paybalancedetail detail: paybalancedetail) {
+            Subledger subledger1 = new Subledger();
+            Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getPbd_slid());
+            subledger1.setId(Long.valueOf(String.valueOf(detail.getPbd_slid())));
+            subledger1.setSl_yamount(nowSubledger.getSl_yamount()-detail.getPbd_nowbalance());//已核销
+            subledger1.setSl_namount(nowSubledger.getSl_namount()+detail.getPbd_nowbalance());//未核销
+            subledgerMapper.updateByPrimaryKeySelective(subledger1);
+        }
 
         Paybalance paybalance = new Paybalance();
         paybalance.setId(Long.valueOf(id));
@@ -460,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);

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

@@ -244,16 +244,19 @@ public class RecbalanceServiceImpl implements RecbalanceService {
 
         Customer customer = new Customer();
         customer.setId(Long.valueOf(String.valueOf(recbalance.getRb_custid())));
+        customer.setId(Long.valueOf(String.valueOf(recbalance.getRb_custid())));
         customer.setCu_preamount(preamount+amountTotal);
         customer.setCu_recamount(recamount-amountTotal2);
         customer.setCu_leftamount(beginapamount-beginprepayamount+recamount-amountTotal2-preamount-amountTotal);
         recbalanceMapper.updateCustomerByPrimaryKeySelective(customer);
 
         //更新本次核销金额
-        for (Recbalancedetail detail:recbalancedetail) {
+        for (Recbalancedetail detail: recbalancedetail) {
             Subledger subledger1 = new Subledger();
+            Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getRbd_slid());
             subledger1.setId(Long.valueOf(String.valueOf(detail.getRbd_slid())));
-            subledger1.setSl_yamount(detail.getRbd_nowbalance() - detail.getRbd_amount());
+            subledger1.setSl_yamount(detail.getRbd_nowbalance() + nowSubledger.getSl_yamount());//已核销
+            subledger1.setSl_namount(nowSubledger.getSl_namount() - detail.getRbd_nowbalance());//未核销
             subledgerMapper.updateByPrimaryKeySelective(subledger1);
         }
     }
@@ -301,6 +304,17 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         recbalance = recbalanceMapper.selectByPrimaryKey(id.intValue());
         subledgerMapper.deleteByPrimaryKey(recbalance.getRb_code(), recbalance.getRb_kind());
         banksubledgerMapper.deleteByPrimaryKey(recbalance.getRb_code(), recbalance.getRb_kind());
+
+        //更新源单数据
+        List<Recbalancedetail> recbalancedetail = recbalancedetailMapper.selectByPrimaryKey(Math.toIntExact(id));
+        for(Recbalancedetail detail: recbalancedetail) {
+            Subledger subledger1 = new Subledger();
+            Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getRbd_slid());
+            subledger1.setId(Long.valueOf(String.valueOf(detail.getRbd_slid())));
+            subledger1.setSl_yamount(nowSubledger.getSl_yamount()-detail.getRbd_nowbalance());//已核销
+            subledger1.setSl_namount(nowSubledger.getSl_namount()+detail.getRbd_nowbalance());//未核销
+            subledgerMapper.updateByPrimaryKeySelective(subledger1);
+        }
     }
 
     public PageInfo<Recbalance> selectList(PageRequest page, ListReqDTO reqDTO) {

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

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

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

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

+ 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

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

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

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

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

+ 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

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

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

+ 16 - 1
frontend/saas-web/app/Application.scss

@@ -175,7 +175,22 @@ body.launching {
       color:#fff !important;
   }
 }
-
+.x-formpanel-btn-white {
+    border: 1px solid #c1c1c1 !important;
+    //border-radius: 2px;
+    box-shadow: 0 1px 1px rgba(0,0,0,.15);
+    /*background: #fff;
+    background: -moz-linear-gradient(top,#fff,#f4f4f4);
+    background: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f4f4f4));
+    background: -o-linear-gradient(top,#fff,#f4f4f4);
+    background: -ms-linear-gradient(top,#fff 0,#f4f4f4 100%);
+    background: linear-gradient(top,#fff,#f4f4f4); */
+    border-color: #fff;
+    background: linear-gradient(to bottom,#fff,#f4f4f4 100%) !important;
+    .x-btn-inner-default-toolbar-small{
+      color: #555;
+  }
+}
 .x-grid-body {
   border-width: 1px;
   border-color: #ABDAFF;

+ 15 - 0
frontend/saas-web/app/model/document/ProductDetail.js

@@ -0,0 +1,15 @@
+Ext.define('saas.model.document.ProductDetail', {
+    extend: 'saas.model.Base',
+    fields: [
+        { name: 'id', type: 'int' },
+        { name: 'pd_prodid', type: 'int' },
+        { name: 'pd_prodcode', type: 'string' },
+        { name: 'pd_detno', type: 'int' },
+        { name: 'pd_whcode', type: 'string' },
+        { name: 'pd_whname', type: 'string' },
+        { name: 'pd_whid', type: 'int' },
+        { name: 'pd_price', type: 'string' },
+        { name: 'pd_amount', type: 'int' },
+        { name: 'pd_num', type: 'int' }
+    ]
+});

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

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

+ 11 - 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,
@@ -46,35 +46,8 @@ Ext.define('saas.view.core.form.FormPanel', {
         unAuditText: '未审核',
         auditBtnText: '审核',
         unAuditBtnText: '反审核',
+        messageLogText:'操作日志'
     },
-    buttons:[{
-        text:'操作日志',
-        handler:function(btn){
-            var form = btn.up('form'),
-            mlKeyvalue = form.viewModel.get(form._idField)||0,
-            win = Ext.getCmp(form.xtype+mlKeyvalue);
-            if (!win) {
-                win = Ext.create('Ext.window.Window', {
-                    modal: true,
-                    id:form.xtype+mlKeyvalue,
-                    height: '80%',
-                    width: '80%',
-                    title: '操作日志('+form.viewModel.get(form._codeField)+')',
-                    scrollable: true,
-                    //bodyPadding: 10,
-                    constrain: true,
-                    closable: true,
-                    layout: 'fit',
-                    renderTo: Ext.getCmp('main-tab-panel').getActiveTab().down('form').getEl(),
-                    items: [{
-                        xtype: 'core-form-mseeageLog',
-                        mlKeyvalue:mlKeyvalue
-                    }]
-                });
-            };
-            win.show();
-        }
-    }],
     initComponent: function () {
         var me = this,
         auditTexts = me.auditTexts;
@@ -121,7 +94,14 @@ Ext.define('saas.view.core.form.FormPanel', {
                 hidden:'{!showAuditBtn}'
             },
             handler: "auditBtnClick",
-        }];
+        }, {
+            cls:'x-formpanel-btn-white',
+            text:'操作日志',
+            bind: {
+                hidden: '{!id}'
+            },
+            handler:"showMessageLog"
+        } ];
 
         Ext.apply(me, {
             dockedItems: [{

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

+ 39 - 2
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;
     },
     
@@ -170,11 +175,12 @@ Ext.define('saas.view.core.form.FormPanelController', {
         form = this.getView(),
         detailCount = form.detailCount,
         viewModel = me.getViewModel(),
+        id = viewModel.get(form._idField),
         modelData = viewModel.getData();
 
         var dirty = form.isDirty();
 
-        if(dirty) {
+        if(id && dirty) {
             showConfirm('提示', form.dirtyAuditText)
             .then(function(yes) {
                 if(yes == 'yes') {
@@ -291,7 +297,38 @@ Ext.define('saas.view.core.form.FormPanelController', {
         var me = this,
         viewModel = me.getViewModel(),
         codeEditable = viewModel.get('base.codeEditable');
-
         viewModel.set('base.codeEditable', !codeEditable);
+    },
+    showMessageLog:function(btn){
+        var me = this,
+        form = me.getView(),
+        viewModel = me.getViewModel(),
+        mlKeyvalue = viewModel.get(form._idField),
+        mlCaller = form.caller,
+        win = Ext.getCmp(form.xtype+mlKeyvalue);
+        if (!win&&mlKeyvalue!=0) {
+            var win = form.add(Ext.create('Ext.window.Window', {
+                modal: true,
+                id:me.xtype+mlKeyvalue,
+                height: '60%',
+                width: '80%',
+                title: '操作日志('+viewModel.get(form._codeField)+')',
+                scrollable: true,
+                constrain: true,
+                closable: true,
+                layout: 'fit',
+                items: [{
+                    xtype: 'core-form-mseeageLog',
+                    mlKeyvalue:mlKeyvalue,
+                    mlCaller:mlCaller
+                }],
+                listeners:{
+                    'close':function(){
+                        btn.removeCls('x-btn-focus');
+                    }
+                }
+            }));
+        };
+        win.show();
     }
 });

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

@@ -71,14 +71,19 @@ 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
+        },{
+            type: 'string',
+            field: 'ml_caller',
+            operation: '=',
+            value: me.mlCaller
         }];
         if(me.columns){
             var fields = me.columns.map(column => column.dataIndex);
@@ -104,7 +109,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, {
@@ -133,7 +138,7 @@ Ext.define('saas.view.core.form.MseeageLog', {
      */
     getCondition: function(items) {
         var me = this,
-        conditions = [];
+        conditions = me.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, 
 

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

@@ -0,0 +1,125 @@
+/**
+ * Created by zhouy on 2018/11/12.
+ */
+Ext.define('saas.view.core.form.field.Month', {
+    extend:'Ext.form.field.Picker',
+    alias: 'widget.monthdatefield',
+    requires: ['Ext.picker.Month'],
+    format : "Ym",
+    disabledDaysText : "Disabled",
+    disabledDatesText : "Disabled",
+    triggerCls : Ext.baseCSSPrefix + 'form-date-trigger',
+    matchFieldWidth: false,
+    componentCls: Ext.baseCSSPrefix + 'form-field-date',
+    ariaRole: 'combobox',
+    validateOnFocusLeave: true,
+    hideOnSelect:true,
+    editable:false,
+    autoValue:true,
+    initComponent: function() {
+        var me = this,
+            isString = Ext.isString,
+            min, max;
+
+        min = me.minValue;
+        max = me.maxValue;
+        if(isString(min)){
+            me.minValue = me.parseDate(min);
+        }
+        if(isString(max)){
+            me.maxValue = me.parseDate(max);
+        }
+     /*   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({
+            id: me.id + '-picker',
+            pickerField: me,
+            floating: true,
+            preventRefocus: true,
+            value:me.getPickerValues(),
+            format: me.format,
+            ownerCmp: me,
+            listeners: {
+                scope:me,
+                cancelclick: me.onCancelClick,
+                okclick: me.onOkClick,
+                yeardblclick: me.onOkClick,
+                monthdblclick: me.onOkClick
+            },
+            keyNavConfig: {
+                esc: function() {
+                    me.inputEl.focus();
+                    me.collapse();
+                }
+            }
+        });
+    },
+    getActive: function(){
+        return this.activeDate || this.value;
+    },
+    onOkClick: function(picker, value) {
+        var me = this,
+            month = value[0],
+            year = value[1];
+        if (value.length == 2) {
+            month = month == null ? new Date().getMonth() : month;
+            month = Number(month) + 1;
+            month = month < 10 ? '0' + month : month;
+            year = year == null ? new Date().getFullYear() : year;
+            if (this.minValue) {
+                if (Number(year + '' + month) < this.minYearMonth) {
+                    return;
+                }
+            }
+            if (this.maxValue) {
+                if (Number(year + '' + month) > this.maxYearMonth) {
+                    return;
+                }
+            }
+            this.setValue(year + '' + month);
+        }
+        me.onSelect();
+    },
+    getCurrentVal:function(){
+        return Ext.Date.format(new Date(),this.format);
+    },
+    onCancelClick: function() {
+        this.onSelect();
+    },
+    getPickerValues:function() {
+        var val = this.value, year, month;
+        if (val && val.length == 6) {
+            year = Ext.Number.from(val.substring(0, 4), 0);
+            month = Ext.Number.from(val.substring(4, 6), 0);
+            month = month-1;
+        } else {
+            year = new Date().getFullYear();
+            month = new Date().getMonth();
+        }
+        return [month, year];
+    },
+    setValue : function(value) {
+        if (Ext.isEmpty(value)) {
+            value =me.getCurrentVal();
+        }
+        this.callParent(arguments);
+    },
+    onSelect: function() {
+        this.monthPicker.hide();
+    }
+
+});

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

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

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

+ 6 - 8
frontend/saas-web/app/view/document/customer/FormPanel.js

@@ -28,18 +28,18 @@ Ext.define('saas.view.document.customer.FormPanel', {
         fieldLabel: 'id',
         allowBlank: true,
         columnWidth: 0.25
-    },{
-        xtype: 'textfield',
-        name: 'cu_name',
-        fieldLabel: '客户名称',
-        allowBlank: false,
-        columnWidth: 0.5
     },{
         xtype: 'textfield',
         name: 'cu_code',
         fieldLabel: '客户编号',
         allowBlank: false,
         columnWidth: 0.25
+    },{
+        xtype: 'textfield',
+        name: 'cu_name',
+        fieldLabel: '客户名称',
+        allowBlank: false,
+        columnWidth: 0.5
     },{
         editable:false,
         xtype : "remotecombo", 
@@ -215,7 +215,6 @@ Ext.define('saas.view.document.customer.FormPanel', {
         hidden:true,
         columnWidth : 0
     }, {
-        height: 169,
         xtype : "detailGridField", 
         storeModel:'saas.model.document.customercontact',
         detnoColumn: 'cc_detno',
@@ -321,7 +320,6 @@ Ext.define('saas.view.document.customer.FormPanel', {
                 }
             }]
     } ,{
-        height: 169,
         xtype : "detailGridField", 
         storeModel:'saas.model.document.customeraddress',
         detnoColumn: 'ca_detno',

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

@@ -94,15 +94,15 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 name:'id'
             },{
                 xtype:'textfield',
-                name:'bk_bankname',
+                name:'bk_bankcode',
                 allowBlank:false,
-                fieldLabel:'账户名称',
+                fieldLabel:'账户编号',
                 maxLength: 20
             },{
                 xtype:'textfield',
-                name:'bk_bankcode',
+                name:'bk_bankname',
                 allowBlank:false,
-                fieldLabel:'账户编号',
+                fieldLabel:'账户名称',
                 maxLength: 20
             },{
                 xtype:'numberfield',
@@ -135,7 +135,7 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 xtype:'datefield',
                 name:'bk_date',
                 fieldLabel:'建账日期',
-                format:'Y-m-d H:i:s',
+                format:'Y-m-d',
                 listeners:{
                     beforerender:function(d){
                         d.setValue(new Date())

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

@@ -137,7 +137,7 @@ Ext.define('saas.view.document.kind.Kind', {
             },{
                 xtype:'datecolumn',
                 text: '建账日期',
-                format:'Y-m-d H:i:s',
+                format:'Y-m-d',
                 dataIndex: 'bk_date',
                 flex: 1
             },{
@@ -213,7 +213,12 @@ Ext.define('saas.view.document.kind.Kind', {
             reqUrl:'/api/commons/number/save'
         },
         personpower:{
-            columns: [{
+            columns: [ {
+                text : "编号", 
+                dataIndex : "code", 
+                width : 120.0, 
+                xtype : "", 
+            },{
                 text : "角色名称", 
                 width : 200.0, 
                 dataIndex : "name", 
@@ -224,13 +229,8 @@ Ext.define('saas.view.document.kind.Kind', {
                 dataIndex : "description", 
                 width : 120.0, 
                 xtype : "", 
-            },
-            {
-                text : "编号", 
-                dataIndex : "code", 
-                width : 120.0, 
-                xtype : "", 
-            }],
+            }
+           ],
             keyField:'id',
             reqUrl:'/api/account/role/save',
             updateUrl:'/api/account/role/update',

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

+ 65 - 0
frontend/saas-web/app/view/document/product/FormController.js

@@ -133,6 +133,71 @@ Ext.define('saas.view.document.product.FormController', {
                     }) ;   
 
                 }
+            },
+            //放大镜赋值关系 以及 tpl模板
+            'dbfindtrigger[name=pd_whname]': {
+                beforerender: function (f) {
+                    Ext.apply(f, {
+                        dataUrl: '/api/document/warehouse/list',
+                        addXtype: 'other-warehouse',
+                        addTitle: '仓库资料',
+                        defaultCondition:"wh_statuscode='OPEN'",
+                        dbfinds: [{
+                            from: 'id',
+                            to: 'pd_whid',ignore:true
+                        }, {
+                            from: 'wh_code',
+                            to: 'pd_whcode'
+                        }, {
+                            from: 'wh_description',
+                            to: 'pd_whname'
+                        }],
+                        dbtpls: [{
+                            field: 'pd_whcode',
+                            width: 100
+                        }, {
+                            field: 'pd_whname',
+                            width: 100
+                        }],
+                        dbSearchFields:[{
+                            emptyText:'输入仓库编号或名称',
+                            xtype : "textfield", 
+                            name : "wh_code", 
+                            allowBlank : true, 
+                            columnWidth : 0.25,
+                            getCondition:function(v){
+                                return "(upper(wh_code) like '%"+v.toUpperCase()+"%' or upper(wh_description) like '%"+v.toUpperCase()+"%')";
+                            }
+                        }],                        
+                        dbColumns: [{
+                            "text": "仓库ID",
+                            "flex": 0,
+                            "dataIndex": "id",
+                            "width": 0,
+                            "xtype": "",
+                            "items": null
+                        }, {
+                            "text": "仓库编号",
+                            "flex": 1,
+                            "dataIndex": "wh_code",
+                            "width": 100,
+                            "xtype": "",
+                            "items": null
+                        }, {
+                            "text": "仓库名称",
+                            "flex": 1,
+                            "dataIndex": "wh_description",
+                            "xtype": "",
+                            "items": null
+                        },{
+                            "text": "仓库类型",
+                            "flex": 1,
+                            "dataIndex": "wh_type",
+                            "xtype": "",
+                            "items": null
+                        }]
+                    });
+                },
             }
         });
 

+ 175 - 107
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,37 +76,25 @@ Ext.define('saas.view.document.product.FormPanel', {
             this.dialog.show();
         }
     },{
-        xtype : "dbfindtrigger",   
-        name : "pr_vendcode", 
-        bind : "{pr_vendcode}", 
-        fieldLabel : "供应商编号", 
-        allowBlank : true, 
-        columnWidth : 0.25, 
-    }, {
-        xtype : "textfield", 
-        name : "pr_vendname", 
-        bind : "{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,
@@ -125,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,
@@ -156,103 +127,200 @@ 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 : "更新时间"
+    },{
+        xtype : "detailGridField", 
+        storeModel:'saas.model.document.ProductDetail',
+        detnoColumn: 'pd_detno',
+        showCount: false,
+        deleteDetailUrl:'/api/document/customer/delete/',
+        columns : [{
+            text : "ID", 
+            dataIndex : "id", 
+            hidden : true,  
+            xtype : "numbercolumn"
+        },
+        {
+            text : "物料ID", 
+            dataIndex : "pd_prodid", 
+            hidden : true,  
+            xtype : "numbercolumn"
+        },
+        {
+            allowBlank:false,
+            text : "仓库编号", 
+            editor : {
+                displayField : "display", 
+                editable : true, 
+                format : "", 
+                hideTrigger : false, 
+                maxLength : 100.0, 
+                minValue : null, 
+                positiveNum : false, 
+                queryMode : "local", 
+                store : null, 
+                valueField : "value", 
+                xtype : "dbfindtrigger"
+            },
+            dataIndex : "pd_whcode", 
+            xtype : "", 
+            items : null
+        },
+        {
+            allowBlank:true,
+            readOnly:true,
+            editable:false,
+            text : "仓库名称", 
+            dataIndex : "pd_whname", 
+            xtype : "", 
+        },{
+            allowBlank:true,
+            hidden:true,
+            text : "仓库ID", 
+            dataIndex : "pd_whid", 
+            xtype : "numberfield", 
+        },
+        {
+            allowBlank:true,
+            text : "期初数量", 
+            dataIndex : "pd_num", 
+            xtype: 'numbercolumn',
+            width : 120.0,
+            allowBlank : false,
+            editor : {
+                xtype : "numberfield",
+                decimalPrecision: 0,
+                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);
+            },
+            summaryType: 'sum',
+            summaryRenderer: 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);
+            }
+        },
+        {
+            text : "单位成本", 
+            dataIndex : "pd_price", 
+            allowBlank:false,
+            xtype: 'numbercolumn',
+            width : 120.0,
+            allowBlank : false,
+            editor : {
+                xtype : "numberfield",
+                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);
+            },
+            summaryType: 'sum',
+            summaryRenderer: 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);
+            }
+        },
+        {
+            text : "期初总价", 
+            dataIndex : "pd_amount", 
+            xtype: 'numbercolumn',
+            width : 120.0,
+            allowBlank : true,
+            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);
+            },
+            summaryType: 'sum',
+            summaryRenderer: 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);
+            }
+        }]
     }],
 
     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", 

+ 6 - 6
frontend/saas-web/app/view/document/vendor/FormPanel.js

@@ -28,18 +28,18 @@ Ext.define('saas.view.document.vendor.FormPanel', {
         fieldLabel: 'id',
         allowBlank: true,
         columnWidth: 0.25
-    },{
-        xtype: 'textfield',
-        name: 've_name',
-        fieldLabel: '供应商名称',
-        allowBlank: false,
-        columnWidth: 0.5
     },{
         xtype: 'textfield',
         name: 've_code',
         fieldLabel: '供应商编号',
         allowBlank: false,
         columnWidth: 0.25
+    },{
+        xtype: 'textfield',
+        name: 've_name',
+        fieldLabel: '供应商名称',
+        allowBlank: false,
+        columnWidth: 0.5
     },{
         xtype: 'hidden',
         name: 've_status',

+ 10 - 36
frontend/saas-web/app/view/home/Home.js

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

+ 21 - 2
frontend/saas-web/app/view/home/Home.scss

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

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

@@ -1,8 +1,37 @@
-Ext.define('saas.view.home.ChartsModel', {
+Ext.define('saas.view.home.HomeModel', {
     extend: 'Ext.app.ViewModel',
-    alias: 'viewmodel.chartsmodel',
+    alias: 'viewmodel.home',
 
     stores: {
+        infoData: {
+            model: 'saas.model.home.Info',
+            autoLoad: true,
+            proxy: {
+                type: 'ajax',
+                // url: 'http://192.168.253.58:8920/homePage/liveData',
+                url: '/api/common/homePage/liveData',
+                reader: {
+                    type: 'json'
+                },
+                listeners: {
+                    exception: function(proxy, response, operation, eOpts) {
+                        Ext.getCmp('infocard').setLoading(false);
+                    }
+                }
+            },
+            listeners: {
+                beforeload: function() {
+                    Ext.getCmp('infocard').setLoading(true);
+                },
+                load: function(s, d) {
+                    Ext.getCmp('infocard').setLoading(false);
+
+                    var res = d[0].data.data || {};
+
+                    Ext.getCmp('infocard').addCardItems(res);
+                }
+            }
+        },
         barData: {
             model: 'saas.model.chart.DataXY',
             data: [

+ 135 - 92
frontend/saas-web/app/view/home/InfoCard.js

@@ -2,127 +2,170 @@ Ext.define('saas.view.home.InfoCard', {
     extend: 'Ext.panel.Panel',
     xtype: 'infocard',
 
-    latyou: 'fit',
+    id: 'infocard',
 
-    initComponent: function() {
-        var me = this;
+    requires: [
+        'Ext.layout.container.Card'
+    ],
 
-        var view = Ext.create('Ext.view.View', {
-            store : Ext.create('Ext.data.Store', {
-				fields: ['title', 'content', 'color'],
-				data: me.infoData,
-			}),
-            tpl: new Ext.XTemplate([
-                '<div class="x-row">',
-                    '<tpl for=".">',
-                    '<div class="x-col">',
-                        '<div>',
-                            '<div class="x-box ',
-                                '<tpl if="color"> x-bg-{color}</tpl>',
-                                '<tpl else"> x-bg-default</tpl>',
-                            '">',
-                                '<h3>{title}</h3>',
-                                '<p>{content}</p>',
-                            '</div>',
-                        '</div>',
-                    '</div>',
-                    '</tpl>',
-                '</div>'
-            ]),
-            itemSelector: 'div.x-info-card-body',
-        });
+    BaseUtil: Ext.create('saas.util.BaseUtil'),
+
+    layout: 'card',
+    cardTpl: [
+        '<div class="x-row">',
+        '<tpl for=".">',
+        '<div class="x-col">',
+        '<div>',
+        '<div class="x-box ',
+        '<tpl if="color"> x-bg-{color}</tpl>',
+        '<tpl else"> x-bg-default</tpl>',
+        '">',
+        '<h3>{title}</h3>',
+        '<p>{content}</p>',
+        '</div>',
+        '</div>',
+        '</div>',
+        '</tpl>',
+        '</div>'
+    ],
+
+    cards: {
+        unship: {
+            title: '七天内待出货销售',
+            color: 'yellow'
+        },
+        unstorage: {
+            title: '七天内待入库采购',
+            color: 'purple'
+        },
+        unpay: {
+            title: '七天内代付款',
+            color: 'red'
+        },
+        unreceive: {
+            title: '七天内代收款',
+            color: 'pink'
+        },
+        unauditcheck: {
+            title: '未审核验收',
+            color: 'blue'
+        },
+        unauditship: {
+            title: '未审核出货',
+            color: ''
+        }
+    },
+
+    initComponent: function () {
+        var me = this;
 
         Ext.apply(me, {
             userCls: 'x-info-card ' + me.userCls,
-            items: [{
-                xtype: 'button',
+            lbar: [{
+                itemId: 'card-prev',
                 cls: 'x-scroller-button x-scroller-button-left',
-                // iconCls: 'x-sa sa-arrows-left',
-                disabled: true,
                 handler: function() {
-                    me.scrollBody(1);
-                }
-            }, view, {
-                xtype: 'button',
+                    me. showPrevious();
+                },
+                disabled: true
+            }],
+            rbar: [{
+                itemId: 'card-next',
                 cls: 'x-scroller-button x-scroller-button-right',
-                // iconCls: 'x-sa sa-arrows-right',
                 handler: function() {
-                    me.scrollBody(-1);
+                    me.showNext();
                 }
-            }]
+            }],
+            items: [],
         });
 
         me.callParent(arguments);
     },
 
     listeners: {
-        boxready: function(th) {
-            var list = Ext.fly(th.items.items[1].el.dom);
-            var listWidth = Number(list.getStyle('width').replace('px', ''));
-            var bodyWidth = th.body.getBox().width;
-            var btns = th.query('button');
-
-            if(listWidth <= (bodyWidth-88)) {
-                btns[0].setVisible(false);
-                btns[1].setVisible(false);
-                return;
-            }
-
-            Ext.fly(th.body).on('mousewheel', function() {
-                var ev = window.event;
-                var delta = ev.wheelDelta;
-
-                if(ev.preventDefault) {
-                    ev.preventDefault();  
-                }
-                else {
-                    ev.cancel=true;
-                }
-                th.scrollBody(delta/120);
-            })
+        boforerender: function(m) {
+            m.addCardItems();
         }
     },
 
-    scrollBody: function(delta) {
-        var me = this;
-        var list = Ext.fly(me.items.items[1].el.dom);
-        var marginLeft = Number(list.getStyle('marginLeft').replace('px', ''));
-        var le = marginLeft + delta * 50;
-        var MAX_LEN = list.getBox().width - (me.body.getBox().width - 88);
-
-        if(le > 0) {
-            le = 0;
-            me.scrollLeftDisabled();
-        }else if(le < -MAX_LEN) {
-            le = -MAX_LEN;
-            me.scrollRightDisabled();
-        }else {
-            me.scrollEnable();
+    addCardItems: function(infoData) {
+        infoData = infoData || {};
+        var me = this,
+        p = me.up('home'),
+        cards = me.cards,
+        datas = [],
+        items = [];
+        size = Math.ceil(me.body.el.getBox().width / 235);
+
+        me.removeAll();
+
+        var cl = Ext.Object.getAllKeys(cards);
+
+        for(var x = 0; x < cl.length;) {
+            var d = [];
+            for(var y = 0; y < size && x < cl.length; y++) {
+                var key = cl[x];
+                d.push(Ext.merge(cards[key], {
+                    content: infoData[key] || 0
+                }));
+                x++;
+            }
+            datas.push(d);
         }
 
-        list.setStyle({
-            marginLeft: le + 'px'
+        console.log(datas);
+
+        Ext.Array.each(datas, function(d, i) {
+
+            var store = Ext.create('Ext.data.Store', {
+                fields: ['title', 'content', 'color'],
+                data: d,
+            });
+
+            var view = Ext.create('Ext.view.View', {
+                store: store,
+                tpl: new Ext.XTemplate(me.cardTpl),
+                itemSelector: 'div.x-info-card-body',
+            });
+
+            var item = {
+                xtype: 'panel',
+                id: 'card-' + i,
+                items: view
+            };
+            me.add(item);
         });
+
+        if(datas.length <= 1) {
+            me.hidePageTrigger();
+        }
+
+        me.updateLayout(true);
     },
-    
-    scrollLeftDisabled: function() {
+
+    hidePageTrigger: function() {
         var me = this;
-        var leftBtn = me.query('button')[0];
-        leftBtn.setDisabled(true);
+        me.down('#card-prev').hide();
+        me.down('#card-next').hide();
     },
 
-    scrollRightDisabled: function() {
-        var me = this;
-        var rightBtn = me.query('button')[1];
-        rightBtn.setDisabled(true);
+    showNext: function () {
+        this.doCardNavigation(1);
     },
 
-    scrollEnable: function() {
+    showPrevious: function (btn) {
+        this.doCardNavigation(-1);
+    },
+
+    doCardNavigation: function (incr) {
         var me = this;
-        var btns = me.query('button');
+        var l = me.getLayout();
+        var i = l.activeItem.id.split('card-')[1];
+        var c = me.items.items.length;
+        var next = parseInt(i, 10) + incr;
+        l.setActiveItem(next);
 
-        for(var i = 0; i < btns.length; i ++) {
-            btns[i].setDisabled(false);
-        }
+        me.down('#card-prev').setDisabled(next === 0);
+        me.down('#card-next').setDisabled(next === (c-1));
     }
 });

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

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

+ 63 - 40
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,7 @@ Ext.define('saas.view.main.Main', {
                     iconCls:'x-fa fa-question',
                     ui: 'header',
                     arrowVisible: false,
-                    //tooltip: '帮助',
+                    tooltip: '帮助',
                     width:50, 
                     listeners:{
                         'mouseover':function(){
@@ -82,85 +81,109 @@ Ext.define('saas.view.main.Main', {
                             }
                         },'mouseleave':function(enu){
                             this.hide();
-                        } 
+                        }
                     },
                     menu: {
+                        cls:'x-main-menu',
                         items: [{
                             text: '新手导航',
-                            iconCls:'x-fa icon-userGuite',
+                            iconCls:'x-fa fa-comment-o',
                             handler:function(){
                                console.log("新手导航");
+                               openTab('sys-guide-formpanel','新手导航', 'sys-guide-formpanel-nav');
                             }
                         },{
                             text: '用户手册',
-                            iconCls:'x-fa icon-userBook',
+                            iconCls:'x-fa fa-comment-o',
                             handler:function(){
-                                console.log("用户手册");
+                                window.open('http://www.usoftchina.com','_blank');
                             }
                         },{
                             text: '常见问题',
-                            iconCls:'x-fa icon-commonQuestion',
+                            iconCls:'x-fa fa-question-circle-o',
                             handler:function(){
-                                console.log("常见问题");
+                                window.open('http://www.usoftchina.com','_blank');
                             }
                         },{
                             text: '客服热线',
-                            iconCls:'x-fa icon-serviceOnline',
-                            handler:function(){
-                                console.log("客服热线");
-                            }
+                            iconCls:'x-fa fa-comment-o',
+                            menu:{
+                                items:[{
+                                    text:'<span onclick="javascript:window.open(\'http://www.usoftchina.com\');" style="text-decoration:underline;color:blue;">优软科技官网</span>'
+                                },{	
+                                    text:'<span>电话:400-830-1818</span>'
+                                },{	
+                                    text:'<span>邮箱:info@usoftchina.com</span>'
+                                }]
+                            }/* ,listeners: {
+                                'mouseover': function() {
+                                    this.over = true;
+                                },
+                                'mouseleave': function() {
+                                    this.over = false;
+                                    this.hide();
+                                }
+                            } */
                         }]
                     }
                 },
                 {
-                    ui: 'header',
+                    margin: '0 0 0 0',
+                    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",    
+                    width: 50,
+                    height:50,    
+                    bind: {
+                        html:'<img class="x-img x-box-item x-toolbar-item x-img-header" style="height:35px;width:35px;margin-top: 6px;margin-left: 14px;" src="{avatarUrl}" alt="">'
+                    }, 
                     menu: {
+                        cls:'x-main-menu2',
                         items: [ {  
                             text: '账户中心',
-                            iconCls:'x-fa icon-accountCenter',
+                            iconCls:'x-fa x-fa fa-user-o',
                             handler:function(){
-                            console.log("账户中心");
+                                window.open('http://www.usoftchina.com','_blank');
                             }
                         },{  
                             text: '意见反馈',
-                            iconCls:'x-fa icon-feedback',
-                            handler:function(){
-                            console.log("意见反馈");
-                            }
+                            iconCls:'x-fa fa-comment-o',
+                            handler:'feedbackMsg'
                         }, {
                             text: '退出',
+                            iconCls:'x-fa fa-power-off',
                             handler: 'onLogout'
                         }]
                     } ,
-                    listeners:{
-                        'mouseover':function(){
-                            this.showMenu(); 
+                     listeners:{
+                        'mouseover':function(btn){
+                            console.log("btn:",btn);
+                            btn.menu ? (btn.menu.isVisible() ? '' : btn.showMenu()) : '';
                         },
                         'mouseout':function(btn,e){
-                            var cx = e.browserEvent.clientX, cy = e.browserEvent.clientY;
-                            var btnLayout = btn.el.dom.getBoundingClientRect();
-                            if(cx <= btnLayout.left || cx >= btnLayout.left+btnLayout.width || cy <= btnLayout.top) {
-                                btn.hideMenu();
-                            }
-                        },'mouseleave':function(enu){
-                            this.hide();
-                        } 
-                    }
-                    
+                            console.log("btn:",btn);
+                            window.setTimeout(function(){
+                                var cx = e.browserEvent.clientX, cy = e.browserEvent.clientY;
+                                console.log(btn.el.dom);
+                                var btnLayout = btn.el.dom.getBoundingClientRect();
+                                if(cx <= btnLayout.left || cx >= btnLayout.left+btnLayout.width || cy <= btnLayout.top) {
+                                    btn.hideMenu();
+                                }
+                            }, 10); 
+                        }
+                    } 
                 }
             ]
         },

+ 92 - 29
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,68 @@ 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;
+.nav-menu{
+    color: #48C1F8 !important;
 }
-.icon-userBook{
+.icon-feedback{
     margin-top: 0px;
-    background: url(../../../../resources/images/nav/userBook.png) 0 0 no-repeat; 
+    background: url(../../../../resources/images/nav/feedback.png) 0 0 no-repeat; 
     background-size: 16px 16px;
     background-position: center;
-}
-.icon-commonQuestion{
+} 
+.user-icon{
     margin-top: 0px;
-    background: url(../../../../resources/images/nav/commonQuestion.png) 0 0 no-repeat; 
-    background-size: 16px 16px;
+    background: url(../../../../resources/images/default/user-icon.png) 0 0 no-repeat; 
+    background-size: 32px 32px;
     background-position: center;
 }
-.icon-serviceOnline{
-    margin-top: 0px;
-    background: url(../../../../resources/images/nav/serviceOnline.png) 0 0 no-repeat; 
-    background-size: 16px 16px;
-    background-position: center;
+.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;
+.x-main-menu::before{
+    content: ' ';
+    display: block;
+    border-style: solid;
+    box-shadow: 0px 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(15, 136, 232, 0.6);
+    box-shadow: aliceblue;
+    border-width: 17px;
+    border-color: #cccccc;
+    /* border-color: #cccccc #6e838e #9c9d9e #bdc3c5; */
+    position: fixed;
+    /* left: 100%; */
+    top: 26px;
+    -moz-clip-path: polygon(100% 0px, 0 50%, 100% 100%);
+    -webkit-clip-path: polygon(100% 0px, 0 50%, 100% 100%);
+    -o-clip-path: polygon(100% 0px, 0 50%, 100% 100%);
+    -ms-clip-path: polygon(100% 0px, 0 50%, 100% 100%);
+    -khtml-clip-path: polygon(100% 0px, 0 50%, 100% 100%);
+    clip-path: polygon(0 100%, 50% 0, 100% 100%);
+    margin-top: 17px;
+    margin-left: 7px;
+}
+.x-main-menu2::before{
+    content: ' ';
+    display: block;
+    border-style: solid;
+    box-shadow: 0px 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(15, 136, 232, 0.6);
+    box-shadow: aliceblue;
+    border-width: 17px;
+    border-color: #cccccc;
+    /* border-color: #cccccc #6e838e #9c9d9e #bdc3c5; */
+    position: fixed;
+    /* left: 100%; */
+    top: 26px;
+    -moz-clip-path: polygon(100% 0px, 0 50%, 100% 100%);
+    -webkit-clip-path: polygon(100% 0px, 0 50%, 100% 100%);
+    -o-clip-path: polygon(100% 0px, 0 50%, 100% 100%);
+    -ms-clip-path: polygon(100% 0px, 0 50%, 100% 100%);
+    -khtml-clip-path: polygon(100% 0px, 0 50%, 100% 100%);
+    clip-path: polygon(0 100%, 50% 0, 100% 100%);
+    margin-top: 25px;
+    margin-left: 47px;
 }
-.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: '关闭当前页',

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

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

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

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

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

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

+ 1 - 0
frontend/saas-web/app/view/money/othreceipts/FormPanel.js

@@ -56,6 +56,7 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
         xtype:'datefield',
         name : 'or_date',
         fieldLabel : '单据日期',
+        defaultValue: new Date(),
         allowBlank : false
     },{
         name : "detailGridField", 

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

@@ -93,7 +93,10 @@ Ext.define('saas.view.money.othreceipts.FormPanelController', {
                             "dataIndex": "cu_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align:'end'
+                            align:'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "额度",
                             "flex": 1,

+ 10 - 1
frontend/saas-web/app/view/money/othreceipts/QueryPanelController.js

@@ -77,13 +77,22 @@ Ext.define('saas.view.money.othreceipts.QueryPanelController', {
                                 "dataIndex": "cu_promisedays",
                                 align: 'end',
                                 xtype: 'numbercolumn',
-                                "width": 100
+                                "width": 100, 
+                                renderer : function(v) {
+                                    return Ext.util.Format.number(v, '0');
+                                }
                             }, {
                                 "text": "额度",
                                 "flex": 1,
                                 "dataIndex": "cu_credit",
                                 "width": 100,
                                 xtype: 'numbercolumn',
+                                renderer : function(v) {
+                                    var arr = (v + '.').split('.');
+                                    var xr = (new Array(arr[1].length)).fill('0');
+                                    var format = '0,000.' + xr.join();
+                                    return Ext.util.Format.number(v, format);
+                                }
                             }, {
                                 "text": "客户地址",
                                 "flex": 1,

+ 1 - 0
frontend/saas-web/app/view/money/othspendings/FormPanel.js

@@ -56,6 +56,7 @@ Ext.define('saas.view.money.othspendings.FormPanel', {
         xtype:'datefield',
         name : 'os_date',
         fieldLabel : '单据日期',
+        defaultValue: new Date(),
         allowBlank : false
     },{
         name : "detailGridField", 

+ 4 - 1
frontend/saas-web/app/view/money/othspendings/QueryPanelController.js

@@ -69,7 +69,10 @@ Ext.define('saas.view.money.othspendings.QueryPanelController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align: 'end'
+                            align: 'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

+ 18 - 10
frontend/saas-web/app/view/money/payBalance/FormPanel.js

@@ -21,10 +21,10 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
     _unAuditUrl: '/api/money/paybalance/unAudit/',
     _deleteUrl: '/api/money/paybalance/delete/',
 
-    _readUrl: 'http://192.168.253.35:8880/paybalance/read/',
+    // _readUrl: 'http://192.168.253.35:8880/paybalance/read/',
     // _saveUrl: 'http://192.168.253.129:8940/money/paybalance/save/',
-    _auditUrl: 'http://192.168.253.35:8880/paybalance/audit/',
-    // _unAuditUrl: 'http://192.168.253.35Pb_pdamount:8880/paybalance/unAudit/',
+    // _auditUrl: 'http://192.168.253.35:8880/paybalance/audit/',
+    // _unAuditUrl: 'http://192.168.253.35:8880/paybalance/unAudit/',
     // _deleteUrl: 'http://192.168.253.129:8940/money/paybalance/delete/',
     
     initId: 0,
@@ -64,6 +64,7 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
         xtype: "datefield",
         name: "pb_date",
         fieldLabel: "日期",
+        defaultValue: new Date(),
         allowBlank : false
     },{
         xtype: 'textfield',
@@ -85,7 +86,8 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
     }, {
         xtype: 'numberfield',
         name: 'pb_discounts',
-        fieldLabel: '整单折扣'
+        fieldLabel: '整单折扣',
+        hidden: true
     }, {
         xtype: 'hidden',
         name: 'pb_havebalance',
@@ -154,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:"微信转账"}
+                        ]
                 })
             }
         }, {
@@ -244,7 +250,8 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
         }, {
             text: "已核销金额",
             xtype: 'numbercolumn',
-            dataIndex: "pbd_havebalance",
+            dataIndex: "sl_yamount",
+            ignore:true,
             // editor : {
             //     xtype : "numberfield",
             //     decimalPrecision: 2
@@ -258,14 +265,15 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
         }, {
             text: "未核销金额",
             xtype: 'numbercolumn',
-            dataIndex: "pbd_pbdamount",
+            dataIndex: "sl_namount",
+            ignore:true,
             // editor : {
             //     xtype : "numberfield",
             //     decimalPrecision: 2
@@ -279,7 +287,7 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }

+ 10 - 6
frontend/saas-web/app/view/money/payBalance/FormPanelController.js

@@ -72,7 +72,10 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
                         }, {
                             "text": "承付天数",
                             "dataIndex": "ve_promisedays",
-                            "width": 100
+                            "width": 100, 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",
@@ -106,10 +109,10 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
                             to: 'pbd_amount'
                         },{
                             from: 'sl_yamount',
-                            to: 'pb_havebalance'
+                            to: 'sl_yamount'
                         },{
                             from: 'sl_namount',
-                            to: 'pb_pbdamount'
+                            to: 'sl_namount'
                         },{
                             from:'sl_date',
                             to:'pbd_sldate'
@@ -160,9 +163,9 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
                             align:'end'
                         }, {
                             "text": "已核销金额",
-                            "flex": 0,
+                            "flex": 1,
                             "dataIndex": "sl_yamount",
-                            "width": 200,
+                            "width": 150,
                             xtype: 'numbercolumn',
                             align:'end',
                             "items": null
@@ -177,7 +180,8 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
                             "text": "单据日期",
                             "flex": 1,
                             "dataIndex": "sl_date",
-                            "width": 150,
+                            "width": 120,
+                            xtype: 'datecolumn',
                             align:'end'
                         }]
                     });

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

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

+ 4 - 1
frontend/saas-web/app/view/money/payBalance/QueryPanelController.js

@@ -61,7 +61,10 @@ Ext.define('saas.view.money.paybalance.QueryPanelController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align: 'end'
+                            align: 'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

+ 12 - 6
frontend/saas-web/app/view/money/recBalance/FormPanel.js

@@ -23,6 +23,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
     _deleteUrl: '/api/money/recbalance/delete/',
 
     // _saveUrl: 'http://192.168.253.35:8880/recbalance/save/',
+    // _readUrl: 'http://192.168.253.35:8880/recbalance/read/',
     // _auditUrl: 'http://192.168.253.35:8880/recbalance/audit/',
     // _unAuditUrl: 'http://192.168.253.35:8880/recbalance/unAudit/',
 
@@ -54,8 +55,9 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         allowBlank : false
     }, {
         xtype: "numberfield",
-        name: "rb_rdamount",
+        name: "cu_leftamount",
         fieldLabel: "总欠款",
+        ignore: true,
         readOnly: true
     }, {
         xtype: 'hidden',
@@ -65,6 +67,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         xtype: "datefield",
         name: "rb_date",
         fieldLabel: "日期",
+        defaultValue: new Date(),
         allowBlank : false
     }, {
         xtype: "textfield",
@@ -78,7 +81,8 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
     }, {
         xtype: "numberfield",
         name: "rb_discounts",
-        fieldLabel: "整单折扣"
+        fieldLabel: "整单折扣",
+        hidden: true
     }, {
         xtype: 'numberfield',
         name: 'rb_preamount',
@@ -249,7 +253,8 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         }, {
             text: "已核销金额",
             xtype: 'numbercolumn',
-            dataIndex: "rbd_havebalance",
+            dataIndex: "sl_yamount",
+            ignore:true,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length)).fill('0');
@@ -259,17 +264,18 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
             summaryType: 'sum',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             }
         }, {
             text: "未核销金额",
             xtype: 'numbercolumn',
-            dataIndex: "rbd_pbdamount",
+            dataIndex: "sl_namount",
+            ignore:true,
             renderer : function(v) {
                 var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length)).fill('0');
+                var xr = (new Array(arr[1].length<=4?arr[1].length:4)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },

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

@@ -20,7 +20,7 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                         },{
                             from:'cu_name', to:'rb_custname'
                         },{
-                            from:'cu_leftamount', to:'rb_rdamount'
+                            from:'cu_leftamount', to:'cu_leftamount'
                         }],
                         //联想设置
                         dbtpls:[{
@@ -79,7 +79,10 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                             "dataIndex": "cu_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align:'end'
+                            align:'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         },{
                             "text": "额度",
                             "dataIndex": "cu_credit",
@@ -156,7 +159,10 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                             "dataIndex": "cu_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align:'end'
+                            align:'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         },{
                             "text": "额度",
                             "dataIndex": "cu_credit",
@@ -184,10 +190,10 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                             to: 'rbd_amount'
                         },{
                             from: 'sl_yamount',
-                            to: 'rbd_havebalance'
+                            to: 'sl_yamount'
                         },{
                             from: 'sl_namount',
-                            to: 'rbd_pbdamount'
+                            to: 'sl_namount'
                         },{
                             from:'sl_date',
                             to:'rbd_sldate'
@@ -255,7 +261,8 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                             "text": "单据日期",
                             "flex": 1,
                             "dataIndex": "sl_date",
-                            "width": 150,
+                            "width": 120,
+                            xtype: 'datecolumn',
                             align:'end'
                         }]
                     });

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

@@ -62,7 +62,10 @@ Ext.define('saas.view.money.recBalance.QueryPanelController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align: 'end'
+                            align: 'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

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

@@ -11,13 +11,13 @@ Ext.define('saas.view.money.report.AccountBalance', {
     listUrl: '/api/money/report/accountBalance',
     defaultCondition: null,
     reportTitle: '资金账户收支明细',
-    QueryWidth:0.2,
+    QueryWidth:0.25,
     //筛选:账户、日期(必填)
     searchItems: [ {
         xtype: 'dbfindtrigger',
         name: 'bankcode',
         fieldLabel: '账户名称',
-        columnWidth: 0.2
+        columnWidth: 0.25
     }, {
         xtype: 'condatefield',
         name: 'date',

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

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

+ 4 - 1
frontend/saas-web/app/view/money/report/CustomerCheckController.js

@@ -69,7 +69,10 @@ Ext.define('saas.view.money.report.CustomerCheckController', {
                             "dataIndex": "cu_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align:'end'
+                            align:'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         },{
                             "text": "额度",
                             "dataIndex": "cu_credit",

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

@@ -10,13 +10,13 @@ Ext.define('saas.view.money.report.PayDetail', {
     listUrl: '/api/money/report/payDetail',
     defaultCondition: null,
     reportTitle: '应付账款明细表',
-    QueryWidth:0.2,
+    QueryWidth:0.25,
     //筛选:供应商、日期(必填)
     searchItems: [ {
         xtype: 'dbfindtrigger',
         name: 'pi_vendname',
         fieldLabel: '供应商名称',
-        columnWidth: 0.2
+        columnWidth: 0.25
     }, {
         xtype: 'condatefield',
         name: 'pb_date',

+ 4 - 1
frontend/saas-web/app/view/money/report/PayDetailController.js

@@ -60,7 +60,10 @@ Ext.define('saas.view.money.report.PayDetailController', {
                                 "dataIndex": "ve_promisedays",
                                 "width": 100,
                                 xtype: 'numbercolumn',
-                                align: 'end'
+                                align: 'end', 
+                                renderer : function(v) {
+                                    return Ext.util.Format.number(v, '0');
+                                }
                             }, {
                                 "text": "纳税人识别号",
                                 "dataIndex": "ve_bankaccount",

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

@@ -11,13 +11,13 @@ Ext.define('saas.view.money.report.RecDetail', {
     listUrl: '/api/money/report/recDetail',
     defaultCondition: null,
     reportTitle: '应收账款明细',
-    QueryWidth:0.2,
+    QueryWidth:0.25,
     //筛选:客户、日期(必填)
     searchItems: [ {
         xtype: 'dbfindtrigger',
         name: 'pi_custname',
         fieldLabel: '客户名称',
-        columnWidth: 0.2
+        columnWidth: 0.25
     }, {
         xtype: 'condatefield',
         name: 'pb_date',

+ 4 - 1
frontend/saas-web/app/view/money/report/RecDetailController.js

@@ -69,7 +69,10 @@ Ext.define('saas.view.money.report.RecDetailController', {
                             "dataIndex": "cu_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align:'end'
+                            align:'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         },{
                             "text": "额度",
                             "dataIndex": "cu_credit",

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

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

+ 4 - 1
frontend/saas-web/app/view/money/report/VendorCheckController.js

@@ -60,7 +60,10 @@ Ext.define('saas.view.money.report.VendorCheckController', {
                                 "dataIndex": "ve_promisedays",
                                 "width": 100,
                                 xtype: 'numbercolumn',
-                                align: 'end'
+                                align: 'end', 
+                                renderer : function(v) {
+                                    return Ext.util.Format.number(v, '0');
+                                }
                             }, {
                                 "text": "纳税人识别号",
                                 "dataIndex": "ve_bankaccount",

+ 4 - 1
frontend/saas-web/app/view/purchase/purchase/FormPanelController.js

@@ -69,7 +69,10 @@ Ext.define('saas.view.purchase.purchase.FormPanelController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align: 'end'
+                            align: 'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

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

+ 4 - 1
frontend/saas-web/app/view/purchase/purchase/QueryPanelController.js

@@ -61,7 +61,10 @@ Ext.define('saas.view.purchase.purchase.QueryPanelController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align: 'end'
+                            align: 'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

+ 8 - 0
frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js

@@ -322,6 +322,14 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                 renderer: function(v) {
                     return v ? v : null;
                 }
+            },{
+                text : "备注", 
+                dataIndex : "pd_remark",
+                width : 250, 
+                items : null,
+                editor : {
+                    xtype : "textfield"
+                },
             }
         ]
     },{

+ 4 - 1
frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js

@@ -74,7 +74,10 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanelController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align:'end'
+                            align:'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

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

+ 4 - 1
frontend/saas-web/app/view/purchase/purchaseIn/QueryPanelController.js

@@ -63,7 +63,10 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanelController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align: 'end'
+                            align: 'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

+ 8 - 0
frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js

@@ -304,6 +304,14 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                 renderer: function(v) {
                     return v ? v : null;
                 }
+            },{
+                text : "备注", 
+                dataIndex : "pd_remark",
+                width : 250, 
+                items : null,
+                editor : {
+                    xtype : "textfield"
+                },
             }
         ]
     },{

+ 4 - 1
frontend/saas-web/app/view/purchase/purchaseOut/FormPanelController.js

@@ -73,7 +73,10 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanelController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align:'end'
+                            align:'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

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

+ 4 - 1
frontend/saas-web/app/view/purchase/purchaseOut/QueryPanelController.js

@@ -62,7 +62,10 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanelController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align: 'end'
+                            align: 'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

+ 4 - 1
frontend/saas-web/app/view/purchase/report/PurchaseController.js

@@ -60,7 +60,10 @@ Ext.define('saas.view.purchase.report.PurchaseController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align: 'end'
+                            align: 'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

+ 4 - 1
frontend/saas-web/app/view/purchase/report/PurchasePayController.js

@@ -61,7 +61,10 @@ Ext.define('saas.view.purchase.report.PurchasePayController', {
                             "dataIndex": "ve_promisedays",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align: 'end'
+                            align: 'end', 
+                            renderer : function(v) {
+                                return Ext.util.Format.number(v, '0');
+                            }
                         }, {
                             "text": "纳税人识别号",
                             "dataIndex": "ve_bankaccount",

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