ソースを参照

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

jinsy 7 年 前
コミット
399742fb9e
51 ファイル変更507 行追加117 行削除
  1. 1 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/dto/ListReqDTO.java
  2. 3 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  3. 4 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/SubledgerMapper.java
  4. 24 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  5. 35 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  6. 6 0
      applications/document/document-server/src/main/resources/mapper/SubledgerMapper.xml
  7. 4 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  8. 2 5
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseReportController.java
  9. 5 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseReportMapper.java
  10. 4 3
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseReportService.java
  11. 48 27
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseReportServiceImpl.java
  12. 39 1
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseReportMapper.xml
  13. 3 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/ProdInOutDTO.java
  14. 7 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  15. 6 6
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  16. 1 1
      applications/sale/sale-server/src/main/resources/mapper/ProdInOutMapper.xml
  17. 1 1
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/ProdInOutReportMapper.java
  18. 28 0
      frontend/saas-web/app/Application.scss
  19. 19 0
      frontend/saas-web/app/view/core/base/GridPanel.js
  20. 29 0
      frontend/saas-web/app/view/core/base/ImportWindow.js
  21. 1 1
      frontend/saas-web/app/view/core/form/FormPanel.js
  22. 1 1
      frontend/saas-web/app/view/core/form/MseeageLog.js
  23. 1 1
      frontend/saas-web/app/view/document/bom/FormPanel.js
  24. 1 1
      frontend/saas-web/app/view/document/customer/FormPanel.js
  25. 1 1
      frontend/saas-web/app/view/document/product/FormPanel.js
  26. 1 1
      frontend/saas-web/app/view/document/vendor/FormPanel.js
  27. 1 0
      frontend/saas-web/app/view/main/Main.js
  28. 10 0
      frontend/saas-web/app/view/main/Main.scss
  29. 2 1
      frontend/saas-web/app/view/money/othreceipts/FormPanel.js
  30. 1 0
      frontend/saas-web/app/view/money/othspendings/FormPanel.js
  31. 1 1
      frontend/saas-web/app/view/money/othspendings/QueryPanel.js
  32. 1 1
      frontend/saas-web/app/view/money/payBalance/FormPanelController.js
  33. 1 1
      frontend/saas-web/app/view/money/recBalance/FormPanelController.js
  34. 1 1
      frontend/saas-web/app/view/money/report/AccountBalance.js
  35. 1 1
      frontend/saas-web/app/view/money/report/AccountDetails.js
  36. 13 13
      frontend/saas-web/app/view/money/report/PayDetail.js
  37. 13 13
      frontend/saas-web/app/view/money/report/RecDetail.js
  38. 2 1
      frontend/saas-web/app/view/money/verification/FormPanel.js
  39. 46 0
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js
  40. 51 6
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanelController.js
  41. 1 1
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  42. 1 1
      frontend/saas-web/app/view/stock/stockamount/DataList.js
  43. 7 7
      frontend/saas-web/app/view/sys/config/FormPanel.js
  44. 1 1
      frontend/saas-web/app/view/sys/guide/FormPanel.js
  45. 1 1
      frontend/saas-web/app/view/sys/maxnumbers/DataList.js
  46. 1 1
      frontend/saas-web/app/view/sys/messagelog/DataList.js
  47. 0 7
      frontend/saas-web/app/view/sys/power/GroupGrid.js
  48. 3 2
      frontend/saas-web/app/view/sys/power/OtherField.js
  49. 4 0
      frontend/saas-web/overrides/button/Button.js
  50. 26 0
      frontend/saas-web/overrides/grid/column/Widget.js
  51. 43 0
      frontend/saas-web/overrides/grid/feature/Grouping.js

+ 1 - 1
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/dto/ListReqDTO.java

@@ -38,7 +38,7 @@ public class ListReqDTO implements Serializable {
                         fieldSql = new StringBuilder("'{");
                         fieldSql.append("\"" + field + "\":'");
                         fieldSql.append(",");
-                        fieldSql.append(operation + "(" + field + ")");
+                        fieldSql.append("ifnull(" + operation + "(" + field + ")" + ",'0')");
                         fieldSql.append(",");
                         fieldSql.append("',\"operation\":\"" + operation + "\"");
                         fieldSql.append("}'");

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

@@ -33,6 +33,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_PRODWHCODE_REPEAT(79309, "明细仓库重复"),
     BIZ_UNENDPRODUCT(79310,"系统还未结账,不能反结账"),
     BIZ_RELUPDATE_CODEANDNAME(79311,"存在关联单据,不允许更新编号,名称"),
+    BIZ_RELUPDATE_AMOUNT(79312,"存在关联单据,不允许更新期初应收,期初预收"),
     NO_OPRATIONDATA(79400,"无可操作单据"),
     BOM_SAVE(79401, "产品编号+版本号已存在"),
     REPEAT_NAME(79501, "名称重复"),
@@ -47,6 +48,8 @@ public enum BizExceptionCode implements BaseExceptionCode {
     ACCOUNT_EXISTS(79505, "账号已存在"),
     DEAL_FAILED(79800, "编号:<u>%s</u>处理失败,%s"),
     USING_EXISTS(79504, ""),
+    LIMIT_PERIOD_VENDOR(79505,"修改供应商失败!不能修改系统结账期间%s之前的供应商的期初"),
+    LIMIT_PERIOD_CUSTOMER(79506,"修改客户失败!不能修改系统结账期间%s之前的供应商的期初"),
 
     VENDOR_ISCLOSE(79505, "供应商已关闭"),
     PRODUCT_ISCLOSE(79506, "物料已关闭"),

+ 4 - 2
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/SubledgerMapper.java

@@ -26,14 +26,16 @@ public interface SubledgerMapper {
     List<Subledger> selectSubledgerBycondition(@Param("con") String con, @Param("companyId") Long companyId);
 
     Long selectByKindCodeCustid(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
-                                     @Param("sl_custid") Integer sl_custid ,@Param("companyid") Long companyid);
+                                     @Param("sl_custid") Integer sl_custid ,@Param("companyid") Long companyid,@Param("sl_ym") String sl_ym);
 
     Long selectByKindCodeVendid(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
-                                     @Param("sl_vendid") Integer sl_vendid ,@Param("companyid") Long companyid);
+                                     @Param("sl_vendid") Integer sl_vendid ,@Param("companyid") Long companyid,@Param("sl_ym") String sl_ym);
 
     void deleteCustomer(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
                         @Param("sl_custid") Integer sl_custid);
 
     void deleteVendor(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
                         @Param("sl_vendid") Integer sl_vendid);
+
+    String selectUnPeriod(@Param("companyId") Long companyId);
 }

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

@@ -134,6 +134,20 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         Double preamount = main.getCu_preamount()==null? new Double(0):main.getCu_preamount();
         customer.setCu_leftamount(beginapamount-beginprepayamount+recamount-preamount);
 
+        //获取已结账的期间
+        String YM = subledgerMapper.selectUnPeriod(companyId);
+        if(YM==null || YM.equals("")){
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
+            YM = simpleDateFormat.format(main.getCu_begindate());
+        }else{
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
+            String beginDate = simpleDateFormat.format(main.getCu_begindate());
+            if(Integer.valueOf(YM)>Integer.valueOf(beginDate)){
+                int code = BizExceptionCode.LIMIT_PERIOD_CUSTOMER.getCode();
+                String mes = String.format(BizExceptionCode.LIMIT_PERIOD_CUSTOMER.getMessage(),YM);
+                throw new BizException(code , mes);
+            }
+        }
         //编号校验
         cu_code = RegexpUtils.replaceSpecCharacter(cu_code);
         cu_code = pushMaxnubmer(cu_code, cu_id);
@@ -196,8 +210,17 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
                 if (count > 0) {
                     throw new BizException(BizExceptionCode.BIZ_RELUPDATE_CODEANDNAME);
                 }
+
+                //限制关联单据不可修改金额
+                Customer customer1 = getMapper().selectByPrimaryKey(customer.getId());
+                if (customer.getCu_beginaramount() != customer1.getCu_beginaramount() ||
+                        customer.getCu_beginprerecamount() != customer1.getCu_beginprerecamount()){
+                    throw new BizException(BizExceptionCode.BIZ_RELUPDATE_AMOUNT);
+                }
             }
 
+
+
             //检查期初日期是否已结转
             count = getMapper().validFinish(cu_id, companyId);
             if (count > 0) {
@@ -284,7 +307,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         subledger.setSl_namount(Math.abs(amount));
 
         Long sl_id  = subledgerMapper.selectByKindCodeCustid("期初余额","期初余额",
-                Math.toIntExact(customer.getId()),BaseContextHolder.getCompanyId());
+                Math.toIntExact(customer.getId()),BaseContextHolder.getCompanyId(),YM);
         subledger.setId(sl_id);
         if ( sl_id!=null && sl_id > 0 ) {
             subledgerMapper.updateByPrimaryKeySelective(subledger);

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

@@ -119,6 +119,21 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         main.setCompanyId(BaseContextHolder.getCompanyId());
         List<Vendorcontact> items = vendorListDTO.getItems();
         String ve_code = main.getVe_code().trim().toUpperCase();
+
+        //获取已结账的期间
+        String YM = subledgerMapper.selectUnPeriod(companyId);
+        if(YM==null || YM.equals("")){
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
+            YM = simpleDateFormat.format(main.getVe_begindate());
+        }else{
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
+            String beginDate = simpleDateFormat.format(main.getVe_begindate());
+            if(Integer.valueOf(YM)>Integer.valueOf(beginDate)){
+                int code = BizExceptionCode.LIMIT_PERIOD_VENDOR.getCode();
+                String mes = String.format(BizExceptionCode.LIMIT_PERIOD_VENDOR.getMessage(),YM);
+                throw new BizException(code , mes);
+            }
+        }
         ve_code = RegexpUtils.replaceSpecCharacter(ve_code);
         String code = pushMaxnubmer(ve_code, main.getId());
         if(main.getId() == 0){
@@ -171,6 +186,24 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
                 }
             }
 
+            //有关联时不可修改名称编号
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("v_id",main.getId());
+            map.put("v_code", ve_code);
+            map.put("v_type","vend");
+            map.put("v_companyid",BaseContextHolder.getCompanyId());
+            map.put("v_res","");
+            vendorMapper.check(map);
+            Object result =  map.get("v_res");
+            if(!StringUtils.isEmpty(result)){
+                //限制关联单据不可修改金额
+                Vendor vendor = getMapper().selectByPrimaryKey(main.getId());
+                if (vendor.getVe_beginapamount() != main.getVe_beginapamount() ||
+                        vendor.getVe_beginprepayamount() != main.getVe_beginprepayamount()){
+                    throw new BizException(BizExceptionCode.BIZ_RELUPDATE_AMOUNT);
+                }
+            }
+
             //检查期初日期是否已结转
             count = getMapper().validFinish(mainId,companyId);
             if (count>0) {
@@ -237,7 +270,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         subledger.setSl_orderamount(Math.abs(amount));
         subledger.setSl_namount(Math.abs(amount));
         Long sl_id = subledgerMapper.selectByKindCodeVendid("期初余额","期初余额",
-                Math.toIntExact(main.getId()),BaseContextHolder.getCompanyId());
+                Math.toIntExact(main.getId()),BaseContextHolder.getCompanyId(),YM);
         subledger.setId(sl_id);
         if ( sl_id!=null && sl_id > 0 ) {
             subledgerMapper.updateByPrimaryKeySelective(subledger);
@@ -279,6 +312,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         }
     }
 
+
     /**
      * 关闭
      * @param id

+ 6 - 0
applications/document/document-server/src/main/resources/mapper/SubledgerMapper.xml

@@ -253,6 +253,7 @@
   from subledger
   where sl_code = #{sl_code,jdbcType=VARCHAR} and sl_kind = #{sl_kind,jdbcType=VARCHAR} and
     sl_custid = #{sl_custid,jdbcType=INTEGER} and companyId = #{companyid,jdbcType=INTEGER}
+    and sl_ym=#{sl_ym,jdbcType=VARCHAR}
   </select>
 
   <select id="selectByKindCodeVendid" resultType="java.lang.Long">
@@ -261,6 +262,7 @@
     from subledger
     where sl_code = #{sl_code,jdbcType=VARCHAR} and sl_kind = #{sl_kind,jdbcType=VARCHAR} and
     sl_vendid = #{sl_vendid,jdbcType=INTEGER} and companyId = #{companyid,jdbcType=INTEGER}
+    and sl_ym=#{sl_ym,jdbcType=VARCHAR}
   </select>
 
   <delete id="deleteCustomer">
@@ -274,4 +276,8 @@
     where sl_code = #{sl_code,jdbcType=VARCHAR} and sl_kind = #{sl_kind, jdbcType=VARCHAR} and
     sl_vendid = #{sl_vendid,jdbcType=INTEGER}
   </delete>
+
+  <select id="selectUnPeriod" resultType="string">
+        select PD_DETNO from periodsdetail where companyid=#{companyId} and pd_status=99 order by PD_DETNO desc LIMIT 1;
+    </select>
 </mapper>

+ 4 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java

@@ -208,6 +208,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         List<Verificationdetail> items2 = verificationdetailMapper.selectByFK(id);
 
         String type = main.getVc_kind();
+        type = transferKind(type);
         if(type.equals("receipts_offset_receivable") || type.equals("prepaid_offset_payable") ||
                 type.equals("receivable_offset_payable")){
             Double total1 = new Double(0);
@@ -478,6 +479,9 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             }
         }
         baseDTO.setId(id);
+        baseDTO.setName(BillCodeSeq.VERIFICATION.getCaller());
+        baseDTO.setCode(formData.getMain().getVc_code());
+        messageLogService.audit(baseDTO);
         return baseDTO;
     }
 

+ 2 - 5
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseReportController.java

@@ -1,6 +1,5 @@
 package com.usoftchina.saas.purchase.controller;
 
-import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.page.PageRequest;
@@ -23,14 +22,12 @@ public class PurchaseReportController {
 
     @GetMapping("/purchasePay")
     public Result PurchasePay(PageRequest page, ListReqDTO req) {
-        PageInfo listData = purchaseReportService.getPurchasePayData(page, req);
-        return Result.success(listData);
+        return Result.success(purchaseReportService.getPurchasePayData(page, req));
     }
 
     @GetMapping("/purchaseDetail")
     public Result PurchaseDetail(PageRequest page, ListReqDTO req) {
-        PageInfo listData = purchaseReportService.getPurchaseDetailData(page, req);
-        return Result.success(listData);
+        return Result.success(purchaseReportService.getPurchaseDetailData(page, req));
     }
 
 }

+ 5 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseReportMapper.java

@@ -7,7 +7,11 @@ import org.apache.ibatis.annotations.Param;
 import java.util.List;
 
 public interface PurchaseReportMapper {
-    List<PurchasePay> selectByCondition(@Param("con") String con, @Param("companyId") Long companyId);
+    List<PurchasePay> selectPurchasePayByCondition(@Param("con") String con, @Param("companyId") Long companyId);
 
     List<PurchaseReportDetail> selectDetailByCondition(@Param("con") String con, @Param("companyId") Long companyId);
+
+    String selectPurchasePayCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
+
+    String selectDetailCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 }

+ 4 - 3
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseReportService.java

@@ -1,12 +1,13 @@
 package com.usoftchina.saas.purchase.service;
 
-import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.page.PageRequest;
 
+import java.util.Map;
+
 public interface PurchaseReportService {
 
-    PageInfo getPurchasePayData(PageRequest page, ListReqDTO req);
+    Map<String, Object> getPurchasePayData(PageRequest page, ListReqDTO req);
 
-    PageInfo getPurchaseDetailData(PageRequest page, ListReqDTO req);
+    Map<String, Object> getPurchaseDetailData(PageRequest page, ListReqDTO req);
 }

+ 48 - 27
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseReportServiceImpl.java

@@ -1,16 +1,21 @@
 package com.usoftchina.saas.purchase.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.purchase.mapper.PurchaseReportMapper;
 import com.usoftchina.saas.purchase.service.PurchaseReportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author: guq
@@ -23,43 +28,59 @@ public class PurchaseReportServiceImpl implements PurchaseReportService{
     private PurchaseReportMapper purchaseReportMapper;
 
     @Override
-    public PageInfo getPurchasePayData(PageRequest page, ListReqDTO req) {
-        return getListDATA(page, req, "PurchasePay");
-    }
-
-    @Override
-    public PageInfo getPurchaseDetailData(PageRequest page, ListReqDTO req) {
-        return getListDATA(page, req, "PurchaseReportDetail");
-    }
-
-    private PageInfo getListDATA(PageRequest page, ListReqDTO req, String type) {
-        //设置默认分页
-        if (null == page || page.getSize() == 0 || page.getNumber() == 0) {
-            page = new PageRequest();
-            page.setNumber(1);
-            page.setSize(10);
-        }
+    public Map<String, Object> getPurchasePayData(@PageDefault(size = 10)PageRequest page, ListReqDTO req) {
         PageHelper.startPage(page.getNumber(), page.getSize());
-        //查询数据
-        List lists = getListByType(req, type);
+        Map<String,Object> map = new HashMap<>();
+        List list = null;
+        Long companyId = BaseContextHolder.getCompanyId();
+        String con = req.getFinalCondition();
+        String calculateFieldsSql = req.getCalculateFieldsSql();
+        JSONArray arr = null;
+        if (null == con) {
+            con = "1=1";
+        }
+        list = purchaseReportMapper.selectPurchasePayByCondition(con, companyId);
         //取分页信息
-        PageInfo pageInfo = new PageInfo(lists);
-        return pageInfo;
+        PageInfo pageInfo = new PageInfo(list);
+        //取对应计算数据
+        if (!StringUtils.isEmpty(calculateFieldsSql)) {
+            String res = purchaseReportMapper.selectPurchasePayCalculateFields(calculateFieldsSql, con, companyId);
+            try {
+                arr = JSONArray.parseArray(res);
+            } catch (Exception e) {
+            }
+        }
+        map.put("list", pageInfo);
+        map.put("calculate", arr);
+        return map;
     }
 
-    private List getListByType(ListReqDTO req, String type) {
+    @Override
+    public Map<String, Object> getPurchaseDetailData(@PageDefault(size = 10)PageRequest page, ListReqDTO req) {
+        PageHelper.startPage(page.getNumber(), page.getSize());
+        Map<String,Object> map = new HashMap<>();
         List list = null;
         Long companyId = BaseContextHolder.getCompanyId();
-        companyId = 1l;
         String con = req.getFinalCondition();
+        String calculateFieldsSql = req.getCalculateFieldsSql();
+        JSONArray arr = null;
         if (null == con) {
             con = "1=1";
         }
-        if ("PurchasePay".equals(type)) {
-            list = purchaseReportMapper.selectByCondition(con, companyId);
-        } else if ("PurchaseReportDetail".equals(type)){
-            list = purchaseReportMapper.selectDetailByCondition(con, companyId);
+        list = purchaseReportMapper.selectDetailByCondition(con, companyId);
+        //取分页信息
+        PageInfo pageInfo = new PageInfo(list);
+        //取对应计算数据
+        if (!StringUtils.isEmpty(calculateFieldsSql)) {
+            String res = purchaseReportMapper.selectDetailCalculateFields(calculateFieldsSql, con, companyId);
+            try {
+                arr = JSONArray.parseArray(res);
+            } catch (Exception e) {
+            }
         }
-        return list;
+        map.put("list", pageInfo);
+        map.put("calculate", arr);
+        return map;
     }
+
 }

+ 39 - 1
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseReportMapper.xml

@@ -100,7 +100,7 @@
     <result column="pr_text4" property="pr_text4"/>
     <result column="pd_accepttotal" property="pd_accepttotal"/>
   </resultMap>
-  <select id="selectByCondition" resultMap="BaseResultMap">
+  <select id="selectPurchasePayByCondition" resultMap="BaseResultMap">
     select  *  from purchasepay_view
     <where>
       <if test="con != null">
@@ -125,4 +125,42 @@
       </if>
     </where>  order by pu_date desc
   </select>
+
+
+  <select id="selectPurchasePayCalculateFields" resultType="string">
+    select   ${fields}  from purchasepay_view
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and  companyId = #{companyId}
+      </if>
+    </where>
+    order by pb_id desc
+  </select>
+
+  <select id="selectDetailCalculateFields" resultType="string">
+    select   ${fields}  from purchase left join purchasedetail on pu_id=pd_puid
+    left join product on pd_prodid=pr_id
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and   purchase.companyId = #{companyId}
+      </if>
+    </where>  order by pu_date desc
+  </select>
+
+
+
+
+
+
+
+
+
+
+
 </mapper>

+ 3 - 0
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/ProdInOutDTO.java

@@ -75,4 +75,7 @@ public class ProdInOutDTO extends CommonBaseDTO implements Serializable {
 
     private String pi_iocode;
 
+    private String pi_auditman;
+
+    private Date pi_auditdate;
 }

+ 7 - 1
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java

@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+import com.usoftchina.saas.commons.api.CommonService;
 import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
@@ -50,6 +51,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     private MessageLogService messageLogService;
     @Autowired
     private WarehouseApi warehouseApi;
+    @Autowired
+    private CommonService commonService;
 
     @Override
     public ProdInOutFormDTO getFormData(Long id) {
@@ -95,7 +98,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         prodInOut.setCreateTime(new Date());
         prodInOut.setPi_recordmanid(userId);
         prodInOut.setPi_recorddate(new Date());
-        prodInOut.setPi_recordman("TESTADMIN");
+        prodInOut.setPi_recordman(BaseContextHolder.getUserName());
 
         if(prodInOut.getPi_date() == null){
             prodInOut.setPi_date(new Date());
@@ -268,6 +271,9 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         if(!StringUtils.isEmpty(result)){
             throw new BizException(BizExceptionCode.SALEOUT_POST_ERROR.getCode(),result.toString());
         }else{
+            //更新审核人、审核时间
+            commonService.commonAudit("prodinout", "pi_id=" + prodInOutDTO.getId(), "pi_status",
+                    "pi_statuscode", "pi_auditdate", "pi_auditman");
             //记录日志
             DocBaseDTO docBaseDTO = getBaseDTOById(prodInOutDTO.getId(),pi_class,pi_inoutno);
             //日志

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

@@ -571,20 +571,20 @@ public class SaleServiceImpl implements SaleService{
         Long purchaseId = purchase.getId();
         for (SaleList detail : dateilList){
             PurchaseDetailDTO purchaseDetail = new PurchaseDetailDTO();
-            Double taxPrice = detail.getPr_purcprice()==null?new Double(0):Double.valueOf(detail.getPr_purcprice());
-            Double taxrate = detail.getSd_taxrate()==null?new Double(0):detail.getSd_taxrate();
+            Double Price = detail.getPr_purcprice()==null?new Double(0):Double.valueOf(detail.getPr_purcprice());
+            Double taxRate = detail.getSd_taxrate()==null?new Double(0):detail.getSd_taxrate();
             Double qty = detail.getSd_qty()==null?new Double(0):detail.getSd_qty();
             purchaseDetail.setPd_prodid(Long.valueOf(String.valueOf(detail.getSd_prodid())));
             purchaseDetail.setPd_prodcode(detail.getSd_prodcode());
             purchaseDetail.setPd_detno(detail.getSd_detno());
             purchaseDetail.setPd_qty(detail.getSd_qty());
-            purchaseDetail.setPd_price(taxPrice/(1+taxrate));
+            purchaseDetail.setPd_price(Price);
             purchaseDetail.setPd_salecode(sale.getSa_code());
             purchaseDetail.setPd_saledetno(detail.getSd_detno());
             purchaseDetail.setPd_saleid(sale.getId());
-            purchaseDetail.setPd_taxrate(taxrate);
-            purchaseDetail.setPd_taxprice(taxPrice);
-            purchaseDetail.setPd_taxtotal(taxPrice*qty);
+            purchaseDetail.setPd_taxrate(taxRate);
+            purchaseDetail.setPd_taxprice(Price*(1+taxRate/100));
+            purchaseDetail.setPd_taxtotal((Price*(1+taxRate/100))*qty);
             purchaseDetail.setCompanyId(BaseContextHolder.getCompanyId());
             purchaseDetail.setCreatorId(BaseContextHolder.getUserId());
             purchaseDetail.setCreateTime(new Date());

+ 1 - 1
applications/sale/sale-server/src/main/resources/mapper/ProdInOutMapper.xml

@@ -573,6 +573,6 @@ update ProdInOut SET
     select pr_whid,pr_whcode,pr_whname from product where pr_code=#{code} and companyid=#{companyId} and pr_statuscode='OPEN'
   </select>
   <update id="updateCreator">
-    update ProdInOut set creatorId = #{userId} , creatorName=#{userName} where pi_id=#{id}
+    update ProdInOut set creatorId = #{userId} , createTime=now(), creatorName=#{userName} where pi_id=#{id}
   </update>
 </mapper>

+ 1 - 1
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/ProdInOutReportMapper.java

@@ -18,5 +18,5 @@ public interface ProdInOutReportMapper {
 
     String selectProdiodetailCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 
-    String selectProdinoutCountCalculateFields(String calculateFieldsSql, String con, Long companyId);
+    String selectProdinoutCountCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 }

+ 28 - 0
frontend/saas-web/app/Application.scss

@@ -128,11 +128,32 @@ body.launching {
 .x-btn.x-btn-menu-active.x-btn-default-toolbar-small,
 .x-btn.x-btn-pressed.x-btn-default-toolbar-small,
 .x-btn-over.x-btn-default-toolbar-small {
+  border-color: #1592ca;
   background: #34BAF6;
   opacity: 0.72;
 }
 
 .x-btn-over{
+  .x-btn-wrap{
+    .x-btn-button{
+      .x-btn-inner{
+        color:#fff;
+      }
+    }
+  }
+}
+
+.x-btn-pressed{
+  .x-btn-wrap{
+    .x-btn-button{
+      .x-btn-inner{
+        color:#fff !important;
+      }
+    }
+  }
+}
+
+.x-btn-menu-active{
   .x-btn-wrap{
     .x-btn-button{
       .x-btn-inner{
@@ -149,6 +170,13 @@ body.launching {
   border:1px solid #34BAF6;
 }
 
+.x-segmented-button-item .x-keyboard-mode .x-btn-focus.x-btn-default-toolbar-small {
+  background: #34BAF6 !important;
+  border:1px solid #34BAF6 !important;
+  opacity: 1;
+  box-shadow: none;
+}
+
 .x-keyboard-mode .x-btn-focus.x-btn-over.x-btn-default-toolbar-small {
   background: #34BAF6;
   box-shadow: none;

+ 19 - 0
frontend/saas-web/app/view/core/base/GridPanel.js

@@ -164,6 +164,25 @@ Ext.define('saas.view.core.base.GridPanel', {
 
     onImport:function(){
         var grid = this.ownerCt.ownerCt;
+        var form = grid.ownerCt,panelEl = form.getEl();
+        var box = panelEl.getBox();
+        var height = box.height;
+        var width = box.width;
+        var win = form.add(Ext.create('saas.view.core.base.ImportWindow', {  
+            cls:'x-window-dbfind', 
+            belong:form,  
+            modal:true,
+            height: height * 0.8,
+            width: width * 0.8,
+            title: form._title + '导入',
+            scrollable: true,
+            bodyPadding: 10,
+            constrain: true,
+            closable: true,
+            layout:'fit',
+            renderTo:form.getEl()
+        }));
+        win.show();
     },
 
     onExport:function(me){

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

@@ -1,6 +1,35 @@
 Ext.define('saas.view.core.base.ImportWindow', {
     extend: 'Ext.window.Window',
     xtype: 'importwindow',
+    layout:'fit',
+
+    requires: [
+        'Ext.container.ButtonGroup'
+    ],
+
+    items:[{
+        xtype:'panel',
+        layout:'column',
+        defaults:{
+            columnWidth:1
+        },
+        tbar:['->',{
+            width:300,
+            text:'下载模板并填写'
+        },{
+            width:300,
+            text:'上传导入文件'
+        },'->'],
+        items:[{
+            xtype:'container',
+            html:'asddddddddddddddddddddd',
+        },{
+            xtype:'fieldset',
+            items:[{
+                text:'asddddddddddddddddddddd'
+            }]
+        }]
+    }],
 
     initComponent: function() {
         var me = this;

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

@@ -52,7 +52,7 @@ Ext.define('saas.view.core.form.FormPanel', {
         me.initFormItems();
 
         me.defaultBtns = me.defaultBtns || [{
-            cls: 'x-formpanel-btn-orange',
+            cls: 'x-formpanel-btn-blue',
             xtype: 'button',
             text: '新增',
             hidden: true,

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

@@ -13,7 +13,7 @@ Ext.define('saas.view.core.form.MseeageLog', {
         xtype: 'textfield',
         emptyText : '操作人员'
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

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

@@ -23,7 +23,7 @@ Ext.define('saas.view.document.bom.FormPanel', {
     codeInHeader: false,
 
     defaultButtons:[{
-        cls: 'x-formpanel-btn-orange',
+        cls: 'x-formpanel-btn-blue',
         xtype: 'button',
         text: '新增',
         bind: {

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

@@ -415,7 +415,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
             }]
     }],
     defaultButtons:[{
-        cls: 'x-formpanel-btn-orange',
+        cls: 'x-formpanel-btn-blue',
         xtype: 'button',
         text: '新增',
         bind: {

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

@@ -336,7 +336,7 @@ Ext.define('saas.view.document.product.FormPanel', {
     }],
 
     defaultButtons:[{
-        cls: 'x-formpanel-btn-orange',
+        cls: 'x-formpanel-btn-blue',
         xtype: 'button',
         text: '新增',
         bind: {

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

@@ -298,7 +298,7 @@ Ext.define('saas.view.document.vendor.FormPanel', {
     ],
 
     defaultButtons:[{
-        cls: 'x-formpanel-btn-orange',
+        cls: 'x-formpanel-btn-blue',
         xtype: 'button',
         text: '新增',
         bind: {

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

@@ -45,6 +45,7 @@ Ext.define('saas.view.main.Main', {
                 },{
                     reference: 'mainprofile',
                     arrowVisible: false,
+                    cls:'x-main-master',
                     ui: 'header',
                     bind: {
                         text: '{company.name}'

+ 10 - 0
frontend/saas-web/app/view/main/Main.scss

@@ -364,3 +364,13 @@ body > .x-mask {
         background-position: center;
     }
 }
+
+.x-main-master{
+    .x-btn-wrap{
+        .x-btn-button{
+            .x-btn-inner{
+                color:#999 !important;
+            }
+        }
+    }
+}

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

@@ -87,6 +87,7 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
                 width : 150.0, 
                 dataIndex : "ord_type",
                 items : null,
+                allowBlank : false,
                 hiddenBtn:false,//true 则会关闭新增按钮功能
                 editor : {
                     xtype : "remotecombo", 
@@ -136,7 +137,7 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
                 dataIndex : "ord_remark",
                 width : 250, 
                 editor : {
-                    xtype : "textarea"
+                    xtype : "textfield"
                 }
             }
         ]

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

@@ -87,6 +87,7 @@ Ext.define('saas.view.money.othspendings.FormPanel', {
                 width : 150.0, 
                 dataIndex : "osd_type",
                 items : null,
+                allowBlank : false,
                 hiddenBtn:false,//true 则会关闭新增按钮功能
                 editor : {
                     xtype : "remotecombo",

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

@@ -19,7 +19,7 @@ Ext.define('saas.view.money.othspendings.QueryPanel', {
     },{
         xtype: 'textfield',
         name: 'os_code',
-        emptyText:'请输入单号或客户或账号',
+        emptyText:'请输入单号或供应商或账号',
         getCondition: function(value) {
             if(value == 'ALL') {
                 return '1=1';

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

@@ -146,7 +146,7 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
         if(flag != 0) {
             var t = flag > 0 ? '大' : '小';
 
-            saas.util.BaseUtil.showConfirm('提示', '付款金额' + t + '于本次折扣后核销金额,是否仍要保存?')
+            saas.util.BaseUtil.showConfirm('提示', '付款金额' + t + '于本次核销金额,是否仍要保存?')
             .then(function(y) {
                 if(y == 'yes') {
                     me.save();

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

@@ -139,7 +139,7 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
         if(flag != 0) {
             var t = flag > 0 ? '大' : '小';
 
-            saas.util.BaseUtil.showConfirm('提示', '收款金额' + t + '于本次折扣后核销金额,是否仍要保存?')
+            saas.util.BaseUtil.showConfirm('提示', '收款金额' + t + '于本次核销金额,是否仍要保存?')
                 .then(function(y) {
                     if(y == 'yes') {
                         me.save();

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

@@ -92,7 +92,7 @@ Ext.define('saas.view.money.report.AccountBalance', {
             }
         }, {
             text: '往来单位',
-            dataIndex: 'bcode',
+            dataIndex: 'bname',
             width: 150
         }, {
             text: '收付款人',

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

@@ -40,7 +40,7 @@ Ext.define('saas.view.money.report.AccountDetails', {
             xtype: 'textfield',
             emptyText : '客户名称'
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

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

@@ -98,19 +98,19 @@ Ext.define('saas.view.money.report.PayDetail', {
             dataIndex: 'mustpay',
             xtype: 'numbercolumn',
             width: 110,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + 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 > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
+            // renderer : function(v) {
+            //     var arr = (v + '.').split('.');
+            //     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            //     var format = '0,000.' + 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 > 2 ? 2 : arr[1].length)).fill('0');
+            //     var format = '0,000.' + xr.join();
+            //     return Ext.util.Format.number(v, format);
+            // }
         }, {
             text: '应付日期',
             xtype: 'datecolumn',

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

@@ -102,19 +102,19 @@ Ext.define('saas.view.money.report.RecDetail', {
             dataIndex: 'mustpay',
             xtype: 'numbercolumn',
             width: 110,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + 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 > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
+            // renderer : function(v) {
+            //     var arr = (v + '.').split('.');
+            //     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            //     var format = '0,000.' + 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 > 2 ? 2 : arr[1].length)).fill('0');
+            //     var format = '0,000.' + xr.join();
+            //     return Ext.util.Format.number(v, format);
+            // }
         }, {
             text: '应收日期',
             dataIndex: 'mustdate',

+ 2 - 1
frontend/saas-web/app/view/money/verification/FormPanel.js

@@ -543,7 +543,8 @@ Ext.define('saas.view.money.verification.FormPanel', {
 
         defaultConditions: {
             receipts_offset_receivable: ['ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0',
-                'ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 and sl_kind in (\'期初余额\',\'出货单\',\'销售退货单\')'],
+                'ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
+                'and sl_kind in (\'期初余额\',\'出货单\',\'销售退货单\')'],
             prepaid_offset_payable: ['ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0',
                 'ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0'],
             receivable_offset_payable: ['ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0',

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

@@ -92,7 +92,53 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanelController', {
             }],
             renderTo:this.ownerCmp.ownerCt.getEl()
         }).show();
+    },
+    initCopyData: function(formData) {
+        var me = this;
+        var form = this.getView();
+        var detailCount = form.detailCount;
+        var main = formData.main;
+        var auditTexts = form.auditTexts;
+
+        // 单号、id清空
+        main[form._idField] = 0;
+        main[form._codeField] = '';
+        //采购单id,采购单号清空
+        main['pi_puid'] = 0;
+        main['pi_pucode'] = '';
+
+        // 单据状态为录入状态(未审核)
+        main[form._statusCodeField] = auditTexts.unAuditCode;
+        main[form._statusField] = auditTexts.unAuditText;
+
+        for(var k in main) {
+            // 主表日期改为当前日期
+            if(saas.util.BaseUtil.isDateString(main[k])) {
+                main[k] = Ext.Date.format(new Date, 'Y-m-d H:i:s');
+            }
+        }
+
+        for(var j = 0; j < detailCount; j++) {
+            var detail = formData['detail' + j];
+            for(var x = 0; x < detail.length; x ++) {
+                var d = detail[x];
+
+                for(var k in d) {
+                    // 从表id清空
+                    delete d['id'];
+                    //采购单号清空
+                    delete d['pd_orderid'];
+                    delete d['pd_ordercode'];
+                    delete d['pd_orderdetno'];
 
+                    // 从表日期清空
+                    if(saas.util.BaseUtil.isDateString(d[k])) {
+                        d[k] = '';
+                    }
+                }
+            }
+        }
+        return me.myInitCopyData(formData);;
     },
     turnOut: function() {
         var me = this,

+ 51 - 6
frontend/saas-web/app/view/purchase/purchaseOut/FormPanelController.js

@@ -67,11 +67,6 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanelController', {
 
                 }
             }
-
-
-
-
-
         });
 
     },
@@ -97,6 +92,56 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanelController', {
             }],
             renderTo:this.ownerCmp.ownerCt.getEl()
         }).show();
+    },
+    initCopyData: function(formData) {
+        var me = this;
+        var form = this.getView();
+        var detailCount = form.detailCount;
+        var main = formData.main;
+        var auditTexts = form.auditTexts;
 
-    }
+        // 单号、id清空
+        main[form._idField] = 0;
+        main[form._codeField] = '';
+        //采购单id,采购单号清空
+        main['pi_puid'] = 0;
+        main['pi_pucode'] = '';
+        //采购验收单id清空
+        main['pi_ioid'] = 0;
+        main['pi_iocode'] = '';
+        // 单据状态为录入状态(未审核)
+        main[form._statusCodeField] = auditTexts.unAuditCode;
+        main[form._statusField] = auditTexts.unAuditText;
+
+        for(var k in main) {
+            // 主表日期改为当前日期
+            if(saas.util.BaseUtil.isDateString(main[k])) {
+                main[k] = Ext.Date.format(new Date, 'Y-m-d H:i:s');
+            }
+        }
+
+        for(var j = 0; j < detailCount; j++) {
+            var detail = formData['detail' + j];
+            for(var x = 0; x < detail.length; x ++) {
+                var d = detail[x];
+
+                for(var k in d) {
+                    // 从表id清空
+                    delete d['id'];
+                    //采购单号清空
+                    delete d['pd_orderid'];
+                    delete d['pd_ordercode'];
+                    delete d['pd_orderdetno'];
+                    //采购验收单清空
+                    delete d['pd_ioid'];
+
+                    // 从表日期清空
+                    if(saas.util.BaseUtil.isDateString(d[k])) {
+                        d[k] = '';
+                    }
+                }
+            }
+        }
+        return me.myInitCopyData(formData);;
+    }    
 });

+ 1 - 1
frontend/saas-web/app/view/stock/inventory/EditDataList.js

@@ -81,7 +81,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
             from:'pr_detail',to:'pr_detail'
         }]
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

+ 1 - 1
frontend/saas-web/app/view/stock/stockamount/DataList.js

@@ -35,7 +35,7 @@ Ext.define('saas.view.stock.stockamount.DataList', {
         xtype: 'textfield',
         emptyText : '仓库名称'
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

+ 7 - 7
frontend/saas-web/app/view/sys/config/FormPanel.js

@@ -427,13 +427,13 @@ Ext.define('saas.view.sys.config.FormPanel', {
             showLogoPhoto.show();
         }
         //文件名称
-        // var viewModel = form.getViewModel();
-        // if(viewModel.data.fileInfoList&&viewModel.data.fileInfoList.length!=0){
-        //     var logo = viewModel.data.fileInfoList[0].logo;
-        //     var logoName = logo.name + "  (" + Ext.util.Format.fileSize(logo.size) + ")";
-        //     var signet = viewModel.data.fileInfoList[0].signet;
-        //     var signetName = signet.name + "  (" + Ext.util.Format.fileSize(signet.size) + ")";
-        // }
+        var viewModel = form.getViewModel();
+        if(viewModel.data.fileInfoList&&viewModel.data.fileInfoList.length!=0){
+            var logo = viewModel.data.fileInfoList[0].logo;
+            var logoName = logo.name + "  (" + Ext.util.Format.fileSize(logo.size) + ")";
+            var signet = viewModel.data.fileInfoList[0].signet;
+            var signetName = signet.name + "  (" + Ext.util.Format.fileSize(signet.size) + ")";
+        }
     },
 
     lookPic:function(img){

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

@@ -270,7 +270,7 @@ Ext.define('saas.view.sys.guide.FormPanel', {
             width:0.5*width,
             buttons: [{
                 text: '我知道了',
-                cls:'x-formpanel-btn-orange',
+                cls:'x-formpanel-btn-blue',
                 handler: function(b) {
                     var scope = b.ownerCt.ownerCt;
                     if(xtype=='begin'&&value=='false'){

+ 1 - 1
frontend/saas-web/app/view/sys/maxnumbers/DataList.js

@@ -24,7 +24,7 @@ Ext.define('saas.view.sys.maxnumbers.DataList', {
         xtype: 'textfield',
         emptyText : '单据前缀'
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

+ 1 - 1
frontend/saas-web/app/view/sys/messagelog/DataList.js

@@ -23,7 +23,7 @@ Ext.define('saas.view.sys.messagelog.DataList', {
         xtype: 'textfield',
         emptyText : '操作人员'
     },{
-        cls:'x-formpanel-btn-orange',
+        cls:'x-formpanel-btn-blue',
         xtype:'button',
         text:'查询',
         listeners: {

+ 0 - 7
frontend/saas-web/app/view/sys/power/GroupGrid.js

@@ -15,11 +15,8 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         style:'background:#fff;border-color:#34baf6'
     }],
     features : [Ext.create('Ext.grid.feature.Grouping',{
-        collapseTip:null,
         collapsible:false,
-        expandTip:null,
 		showSummaryRow: false,
-        startCollapsed: false,
         groupHeaderTpl: Ext.create('Ext.XTemplate',
             '<div>{rows:this.formatName}</div>',
             {
@@ -29,7 +26,6 @@ Ext.define('saas.view.sys.power.GroupGrid', {
             }
         )
 	})],
-    initId:0,
     dataUrl:'/api/account/role/power/resource',
     selModel: {
         showHeaderCheckbox:false,
@@ -164,7 +160,6 @@ Ext.define('saas.view.sys.power.GroupGrid', {
             dataIndex:'other',
             xtype: 'widgetcolumn',
             menuDisabled:true,
-            producesHTML: false,
             widget: {
                 xtype: 'powerotherfield',
                 bind:'{record.other}'
@@ -198,9 +193,7 @@ Ext.define('saas.view.sys.power.GroupGrid', {
                     return other;
                 }}
             ],
-            groupDir:'ASC',
             groupField:'moduleId',
-            clearRemovedOnLoad : true,
             proxy: {
                 timeout:8000,
                 type: 'ajax',

+ 3 - 2
frontend/saas-web/app/view/sys/power/OtherField.js

@@ -16,8 +16,9 @@ Ext.define('saas.view.sys.power.OtherField', {
     },
     setItems:function(v){
         if(v){
+            var f = this;
             var len = v.length,items=[];
-            if(this.items.length>0)this.removeAll(true);
+            if(f.items.length>0)f.removeAll(true);
             for (i = 0; i < len; i++) {
                 items.push({
                    boxLabel:v[i].name,
@@ -44,7 +45,7 @@ Ext.define('saas.view.sys.power.OtherField', {
                    }
                 });
             }
-            this.add(items);
+            f.add(items);
         }
     }
 });

+ 4 - 0
frontend/saas-web/overrides/button/Button.js

@@ -0,0 +1,4 @@
+Ext.define('saas.override.button.Button', {
+    override: 'Ext.button.Button',
+    focusable:false,
+});

+ 26 - 0
frontend/saas-web/overrides/grid/column/Widget.js

@@ -0,0 +1,26 @@
+Ext.define('saas.override.grid.column.Widget', {
+    override: 'Ext.grid.column.Widget',
+
+    onCellsResized: function(newWidth) {
+        var me = this,
+            liveWidgets = me.ownerGrid.getManagedWidgets(me.getId()),
+            len = liveWidgets.length,
+            view = me.getView(),
+            i, cell;
+        if (!me.isFixedSize && me.rendered && view && view.viewReady) {
+            cell = view.getEl().down(me.getCellInnerSelector());
+            if (cell) {
+                // Subtract innerCell padding width
+                newWidth -= parseInt(me.getCachedStyle(cell, 'padding-left'), 10) + parseInt(me.getCachedStyle(cell, 'padding-right'), 10);
+                for (i = 0; i < len; ++i) {
+                    if(liveWidgets[i]){
+                        liveWidgets[i].ownerLayout = null;
+                        liveWidgets[i].setWidth(newWidth);
+                        liveWidgets[i].ownerLayout = view.componentLayout;
+                    }
+                }
+            }
+        }
+    }
+
+});

+ 43 - 0
frontend/saas-web/overrides/grid/feature/Grouping.js

@@ -0,0 +1,43 @@
+Ext.define('saas.override.grid.feature.Grouping', {
+    override: 'Ext.grid.feature.Grouping',
+
+    getMetaGroup: function(group) {
+        var me = this,
+            id = me.getId == null ? me.id : me.getId(),
+            key, metaGroup, Model, modelData, groupPlaceholder, aggregateRecord, groupingContext;
+        // Get the group from a member record or the group name
+        if (group.isModel || typeof group === 'string') {
+            group = me.getGroup(group);
+        }
+        if (group) {
+            key = group.getGroupKey();
+            groupingContext = group.$groupingContext || (group.$groupingContext = {});
+            metaGroup = groupingContext[id];
+            if (!metaGroup) {
+                Model = me.getGridStore().getModel();
+                // Add a placeholder record which represents the group if collapsed.
+                modelData = {};
+                modelData[me.getGroupField()] = key;
+                // Create the two records a group needs to produce a UI.
+                // One to represent a collapsed group.
+                // And one to append to the end of an expanded group.
+                groupPlaceholder = new Model(modelData);
+                groupPlaceholder.isNonData = groupPlaceholder.isCollapsedPlaceholder = true;
+                groupPlaceholder.groupKey = key;
+                aggregateRecord = new Ext.data.Model(modelData);
+                aggregateRecord.isNonData = aggregateRecord.isSummary = true;
+                aggregateRecord.groupKey = key;
+                metaGroup = groupingContext[id] = {
+                    placeholder: groupPlaceholder,
+                    isCollapsed: false,
+                    lastGroup: null,
+                    lastGroupGeneration: null,
+                    lastFilterGeneration: null,
+                    aggregateRecord: aggregateRecord
+                };
+            }
+        }
+        return metaGroup;
+    }
+
+});