chenw 7 лет назад
Родитель
Сommit
c67405676f
55 измененных файлов с 870 добавлено и 819 удалено
  1. 12 0
      applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/MaxnumberService.java
  2. 5 0
      applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/MaxnumberServiceFallback.java
  3. 4 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  4. 6 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/MaxnumberController.java
  5. 1 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/MaxnumberService.java
  6. 12 12
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java
  7. 4 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java
  8. 12 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  9. 9 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  10. 9 2
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  11. 171 0
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckDTO.java
  12. 90 0
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckDetailDTO.java
  13. 3 3
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/po/Apcheck.java
  14. 14 12
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java
  15. 9 9
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDTO.java
  16. 3 3
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDetailDTO.java
  17. 2 1
      applications/transfers/transfers-auth/src/main/java/com/usoftchina/saas/transfers/auth/interceptor/OpenApiAuthInterceptor.java
  18. 7 3
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/ApCheckController.java
  19. 9 4
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/SaleDownController.java
  20. 9 9
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/po/SaleDown.java
  21. 9 9
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/po/SaleDownDetail.java
  22. 2 2
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/ApCheckServiceImpl.java
  23. 2 2
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/SaleDownServiceImpl.java
  24. 6 13
      applications/transfers/transfers-server/src/main/resources/mapper/ApcheckMapper.xml
  25. 6 6
      applications/transfers/transfers-server/src/main/resources/mapper/SaledownMapper.xml
  26. 3 0
      framework/core/src/main/java/com/usoftchina/saas/utils/JsonUtils.java
  27. 2 1
      frontend/operation-web/app/util/State.js
  28. 3 6
      frontend/saas-portal-web/src/components/conenter/addenterprise.vue
  29. 3 6
      frontend/saas-portal-web/src/components/conenter/company.vue
  30. 3 6
      frontend/saas-portal-web/src/components/conenter/details.vue
  31. 1 22
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  32. 10 10
      frontend/saas-portal-web/src/components/conenter/home.vue
  33. 1 1
      frontend/saas-portal-web/src/components/footer/footer.vue
  34. 5 5
      frontend/saas-portal-web/src/utils/session.js
  35. 3 3
      frontend/saas-portal-web/static/set-token.html
  36. 1 0
      frontend/saas-web/app/util/State.js
  37. 6 5
      frontend/saas-web/app/view/core/base/BasePanel.js
  38. 36 31
      frontend/saas-web/app/view/core/base/GridPanel.js
  39. 4 4
      frontend/saas-web/app/view/main/Main.js
  40. 20 20
      frontend/saas-web/app/view/money/othreceipts/FormPanel.js
  41. 6 0
      frontend/saas-web/app/view/money/othreceipts/FormPanelController.js
  42. 1 1
      frontend/saas-web/app/view/money/othspendings/FormPanel.js
  43. 6 0
      frontend/saas-web/app/view/money/othspendings/FormPanelController.js
  44. 7 7
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  45. 6 6
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  46. 42 42
      frontend/saas-web/app/view/money/verification/FormPanel.js
  47. 64 6
      frontend/saas-web/app/view/sale/business/Business.js
  48. 97 79
      frontend/saas-web/app/view/sale/business/Product.js
  49. 1 1
      frontend/saas-web/app/view/sys/invitation/DataList.js
  50. 92 431
      frontend/saas-web/app/view/sys/maxnumbers/DataList.js
  51. 0 5
      frontend/saas-web/app/view/sys/maxnumbers/DataListController.js
  52. 17 17
      frontend/saas-web/app/view/viewport/ViewportController.js
  53. 5 0
      frontend/saas-web/resources/json/navigation.json
  54. 2 2
      frontend/saas-web/set-token.html
  55. 7 7
      frontend/web/src/utils/auth.js

+ 12 - 0
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/MaxnumberService.java

@@ -31,4 +31,16 @@ public interface MaxnumberService {
      */
     @PostMapping("/number/getMaxnumber")
     public Result<String> getMaxnumber(@RequestParam("caller") String caller, @RequestParam("update") boolean update);
+
+    /**
+     * @Description 获取单号
+     * @Param: [caller, update]
+     * @return: com.usoftchina.saas.base.Result
+     * @Author: guq
+     * @Date: 2018/10/22
+     */
+    @PostMapping("/number/getMaxnumberByCompanyid")
+    public Result<String> getMaxnumberByCompanyid(@RequestParam("caller") String caller, @RequestParam("update") boolean update,
+                                       @RequestParam("companyid") Long companyid);
+
 }

+ 5 - 0
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/MaxnumberServiceFallback.java

@@ -18,4 +18,9 @@ public class MaxnumberServiceFallback implements MaxnumberService {
     public Result<String> getMaxnumber(String caller, boolean update) {
         return Result.error("网络异常,请稍后重试!");
     }
+
+    @Override
+    public Result<String> getMaxnumberByCompanyid(String caller, boolean update, Long companyid) {
+        return Result.error("网络异常,请稍后重试!");
+    }
 }

+ 4 - 1
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -41,6 +41,8 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_REPORT_NOCALLER(79316, "报表配置不存在"),
     BIZ_REPORT_NOTCORRECT(79317, "导入数据无效"),
     BIZ_IMPORT_ERROREXCEL(79318, "请导入对应的单据数据"),
+    BIZ_ENABLE_B2B(79350, "未启用B2B"),
+
 
     NO_OPRATIONDATA(79400,"无可操作单据"),
     NULL_DATA(23232,"无数据"),
@@ -73,6 +75,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     REQUIREDFIELD_NULL(79508,"存在必填字段为空"),
     USER_EXIST(79509, ""),
     CURRENCY_VALID(79510, "币别与源单据不一致不允许修改"),
+    BIZ_SAME(79511, "账户名称重复"),
 
     //采购 70000-71999
     PURCCHECKIN_POST_ERROR(70000,""),
@@ -116,7 +119,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     DOCUMENTS_AUDITED(74009,"存在已审核单据:%S"),
     DOCUMENTS_UNAUDITED(74010,"存在未审核单据:%S"),
     BANK_AMOUNT_NOTENOUGHS(74011, "资金账户:%S 余额不足"),
-    CURRENCY_NOT_EQUALS(74012, "币别不一致"),
+    BANKNAME_NOT_EQUALS(74012, "转出账户与转入账户相同"),
 
     //反结账
     EARLY_USERING(74012, "期初余额被使用,无法反结账"),

+ 6 - 1
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/MaxnumberController.java

@@ -25,7 +25,12 @@ public class MaxnumberController {
 
     @PostMapping("/getMaxnumber")
     public Result<String> getMaxnumber(String caller, boolean update) {
-        return Result.success(maxnumberService.getMaxnumner(caller, update));
+        return Result.success(maxnumberService.getMaxnumner(caller, update, null));
+    }
+
+    @PostMapping("/getMaxnumberByCompanyid")
+    public Result<String> getMaxnumberByCompanyid(String caller, boolean update, Long companyid) {
+        return Result.success(maxnumberService.getMaxnumner(caller, update, companyid));
     }
 
     @PostMapping("/pushMaxnubmer")

+ 1 - 1
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/MaxnumberService.java

@@ -14,7 +14,7 @@ import com.usoftchina.saas.page.PageRequest;
  * @create: 2018-10-18 18:01
  **/
 public interface MaxnumberService extends CommonBaseService<MaxnumbersMapper, Maxnumbers> {
-    String getMaxnumner(String caller, boolean update);
+    String getMaxnumner(String caller, boolean update, Long companyid);
 
     Result pushMaxnubmer(Integer count, String code, String caller);
 

+ 12 - 12
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java

@@ -51,7 +51,7 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
     * @Date: 2018/10/18
     */
     @Override
-    public String getMaxnumner(String caller, boolean update) {
+    public String getMaxnumner(String caller, boolean update, Long companyId) {
         if (null == caller) {
             throw new BizException(BizExceptionCode.BIZ_NULLCALLER);
         }
@@ -65,17 +65,17 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
         Integer length = 0;
         //流水最大数
         Integer maxno = 1;
-        Long companyId = BaseContextHolder.getCompanyId();
+        companyId = companyId == null ? BaseContextHolder.getCompanyId() : companyId;
         Long userId = BaseContextHolder.getUserId();
         //查询编号规则
-        Maxnumbers maxnumbers = findMaxnumbers(caller);
+        Maxnumbers maxnumbers = findMaxnumbers(caller, companyId);
         if (maxnumbers == null) {
             throw new BizException(BizExceptionCode.NULL_CODERULE);
         }
        rulecode = getRulecode(maxnumbers);
        length = maxnumbers.getMn_number();
         //查询从表是否存在该规则数据
-        Maxnumbersdetail detail = getMaxDetail(caller, rulecode);
+        Maxnumbersdetail detail = getMaxDetail(caller, rulecode, companyId);
         if (null == detail) {
             //不存在则插入
             detail = new Maxnumbersdetail();
@@ -93,7 +93,7 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
         maxcode = rulecode + createSerialNum(length, maxno);
         //如果以更新方式取编号
         if (update) {
-            maxnumbersdetailMapper.updateMaxno(detail.getId(), maxno, BaseContextHolder.getCompanyId());
+            maxnumbersdetailMapper.updateMaxno(detail.getId(), maxno, companyId);
         }
         return maxcode;
     }
@@ -118,7 +118,7 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
         //流水位数
         Integer length = 0;
         //查询编号规则
-        Maxnumbers maxnumbers = findMaxnumbers(caller);
+        Maxnumbers maxnumbers = findMaxnumbers(caller, companyId);
         if (null == maxnumbers) {
             throw new BizException(BizExceptionCode.NULL_CODERULE);
         }
@@ -132,11 +132,11 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
         }
         //与规则匹配的编号
         if (count > 0) {
-            return Result.success(getMaxnumner(caller, true));
+            return Result.success(getMaxnumner(caller, true, null));
         }
 
         //查询从表是否存在该规则数据
-        Maxnumbersdetail detail = getMaxDetail(caller, rulecode);
+        Maxnumbersdetail detail = getMaxDetail(caller, rulecode, companyId);
         if (null != detail) {
             //存在则更新表中最大流水号
             length = maxnumbers.getMn_number();
@@ -241,8 +241,8 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
     * @Author: guq
     * @Date: 2018/10/19
     */
-    private Maxnumbers findMaxnumbers(String caller) {
-       Long companyId = BaseContextHolder.getCompanyId();
+    private Maxnumbers findMaxnumbers(String caller, Long companyId) {
+       //Long companyId = BaseContextHolder.getCompanyId();
         return maxnumbersMapper.selectByCaller(caller, companyId);
     }
     /**
@@ -253,10 +253,10 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
     * @Author: guq
     * @Date: 2018/10/18
     */
-    private Maxnumbersdetail getMaxDetail(String caller, String rulecode) {
+    private Maxnumbersdetail getMaxDetail(String caller, String rulecode, Long companyid) {
         MaxnumbersdetailExample detailexample = new MaxnumbersdetailExample();
         MaxnumbersdetailExample.Criteria detailcta = detailexample.createCriteria();
-        detailcta.andCompanyIdEqualTo(BaseContextHolder.getCompanyId());
+        detailcta.andCompanyIdEqualTo(companyid);
         detailcta.andMd_callerEqualTo(caller);
         detailcta.andMd_leadcodeEqualTo(rulecode);
         List<Maxnumbersdetail> details = maxnumbersdetailMapper.selectByExample(detailexample);

+ 4 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java

@@ -36,4 +36,8 @@ public interface BankinformationMapper extends CommonBaseMapper<Bankinformation>
 
     int validateCodeWhenUpdate(@Param("code") String code, @Param("id") Long id, @Param("companyId") Long company);
 
+    int getBankNameSame(@Param("name") String name, @Param("companyId") Long company);
+
+    int getBankNameSameById(@Param("name") String name, @Param("id") Long id, @Param("companyId") Long company);
+
 }

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

@@ -33,6 +33,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static com.usoftchina.saas.commons.exception.BizExceptionCode.BIZ_SAME;
+
 /**
  * @author heqw
  * @date 2018/10/25 15:36
@@ -101,6 +103,16 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
                 }
             }
 
+
+            //判断账户名称是否存在
+            if (bankinformationMapper.getBankNameSame(bankinformation.getBk_bankname(), BaseContextHolder.getCompanyId()) > 1){
+                throw new BizException(BIZ_SAME.getCode(),BIZ_SAME.getMessage());
+            }else if (bankinformationMapper.getBankNameSame(bankinformation.getBk_bankname(), BaseContextHolder.getCompanyId()) == 1){
+                if (bankinformationMapper.getBankNameSameById(bankinformation.getBk_bankname(), docBaseDTO.getId(),
+                        BaseContextHolder.getCompanyId()) == 1){
+                    throw new BizException(BIZ_SAME.getCode(),BIZ_SAME.getMessage());
+                }
+            }
 //            Long id = bankinformationMapper.selectBankId(bankinformation.getBk_bankcode(), BaseContextHolder.getCompanyId());
             if (bktion > 0){
                     bankinformationMapper.updateByPrimaryKeySelective(bankinformation);

+ 9 - 2
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java

@@ -10,6 +10,7 @@ import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
+import com.usoftchina.saas.commons.cache.ConfigsCache;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.ComboDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
@@ -28,6 +29,7 @@ import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.inquiry.api.PublicProductApi;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.transfers.api.SendMessageApi;
+import com.usoftchina.saas.transfers.dto.MessageInfo;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.JsonUtils;
 import com.usoftchina.saas.utils.ObjectUtils;
@@ -752,8 +754,13 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
      */
     @Override
     public void uploadToB2B() {
-        /*MessageInfo messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PRODUCT.name(), "", BaseContextHolder.getCompanyId());
-        sendMessageApi.sendMsg(messageInfo);*/
+        boolean enable = ConfigsCache.current().enableB2B();
+        if (enable) {
+            MessageInfo messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PRODUCT.name(), "", BaseContextHolder.getCompanyId());
+            sendMessageApi.sendMsg(messageInfo);
+        }else {
+            throw new BizException(BizExceptionCode.BIZ_ENABLE_B2B);
+        }
     }
 
     /**

+ 9 - 2
applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml

@@ -24,7 +24,6 @@
     <result column="bk_spending" property="bk_spending" jdbcType="DOUBLE" />
     <result column="bk_income" property="bk_income" jdbcType="DOUBLE" />
     <result column="bk_currency" property="bk_currency" jdbcType="VARCHAR" />
-    <result column="cr_rate" property="cr_rate" jdbcType="DOUBLE" />
   </resultMap>
   <resultMap id="ResultMapWithBLOBs" type="com.usoftchina.saas.document.entities.Bankinformation" extends="BaseResultMap" >
     <result column="bk_remark" property="bk_remark" jdbcType="LONGVARCHAR" />
@@ -32,7 +31,7 @@
   <sql id="Base_Column_List" >
     bk_id, bk_bankcode, bk_bankname, bk_date, bk_type, bk_beginamount, bk_thisamount, 
     bk_status, bk_statuscode, bk_ym, bankinformation.companyid companyid,
-    bankinformation.updaterId updaterId, bankinformation.updateTime updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_remark,bk_currency,cr_rate
+    bankinformation.updaterId updaterId, bankinformation.updateTime updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_remark,bk_currency
   </sql>
   <sql id="Blob_Column_List" >
     bk_remark
@@ -367,4 +366,12 @@
   <select id="validateCodeWhenUpdate" resultType="int" >
         select count(*) from bankinformation where bk_bankcode = #{code} and bk_id != #{id} and companyId =#{companyId}
     </select>
+
+  <select id="getBankNameSame" resultType="int">
+    select count(*) from bankinformation where bk_bankname = #{name} and companyId =#{companyId}
+  </select>
+
+  <select id="getBankNameSameById" resultType="int">
+    select count(*) from bankinformation where bk_bankname = #{name} and bk_id != #{id} and companyId =#{companyId}
+  </select>
 </mapper>

+ 171 - 0
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckDTO.java

@@ -0,0 +1,171 @@
+package com.usoftchina.saas.money.dto;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author: guq
+ * @create: 2019-01-14 11:54
+ **/
+public class ApcheckDTO implements Serializable {
+
+    private Long ac_b2bid;//平台来源Id
+
+    private Date ac_date;//对账日期
+
+    private Date ac_apdate;//应付日期
+
+    private Date ac_fromdate;//对账起始日期
+
+    private Date ac_todate;//对账截至日期
+
+    private Long ac_venduu;//供应商uu
+
+    private String ac_currency;//币别
+
+    private Double ac_rate;//汇率
+
+    private Double ac_checkamount;//对账金额
+
+    private String ac_remark;//备注
+
+    private Double ac_thisamount;//本期应付金额
+
+    private Double ac_thisuncheck;//本期未对账
+
+    private Double ac_thispay;//本期已付
+
+    private Double ac_thissend;//本期发货
+
+    private Double ac_thischeck;//本期已对账
+
+    private Double ac_payamont;//应付总额
+
+    public Long getAc_b2bid() {
+        return ac_b2bid;
+    }
+
+    public void setAc_b2bid(Long ac_b2bid) {
+        this.ac_b2bid = ac_b2bid;
+    }
+
+    public Date getAc_date() {
+        return ac_date;
+    }
+
+    public void setAc_date(Date ac_date) {
+        this.ac_date = ac_date;
+    }
+
+    public Date getAc_apdate() {
+        return ac_apdate;
+    }
+
+    public void setAc_apdate(Date ac_apdate) {
+        this.ac_apdate = ac_apdate;
+    }
+
+    public Date getAc_fromdate() {
+        return ac_fromdate;
+    }
+
+    public void setAc_fromdate(Date ac_fromdate) {
+        this.ac_fromdate = ac_fromdate;
+    }
+
+    public Date getAc_todate() {
+        return ac_todate;
+    }
+
+    public void setAc_todate(Date ac_todate) {
+        this.ac_todate = ac_todate;
+    }
+
+    public Long getAc_venduu() {
+        return ac_venduu;
+    }
+
+    public void setAc_venduu(Long ac_venduu) {
+        this.ac_venduu = ac_venduu;
+    }
+
+    public String getAc_currency() {
+        return ac_currency;
+    }
+
+    public void setAc_currency(String ac_currency) {
+        this.ac_currency = ac_currency;
+    }
+
+    public Double getAc_rate() {
+        return ac_rate;
+    }
+
+    public void setAc_rate(Double ac_rate) {
+        this.ac_rate = ac_rate;
+    }
+
+    public Double getAc_checkamount() {
+        return ac_checkamount;
+    }
+
+    public void setAc_checkamount(Double ac_checkamount) {
+        this.ac_checkamount = ac_checkamount;
+    }
+
+    public String getAc_remark() {
+        return ac_remark;
+    }
+
+    public void setAc_remark(String ac_remark) {
+        this.ac_remark = ac_remark;
+    }
+
+    public Double getAc_thisamount() {
+        return ac_thisamount;
+    }
+
+    public void setAc_thisamount(Double ac_thisamount) {
+        this.ac_thisamount = ac_thisamount;
+    }
+
+    public Double getAc_thisuncheck() {
+        return ac_thisuncheck;
+    }
+
+    public void setAc_thisuncheck(Double ac_thisuncheck) {
+        this.ac_thisuncheck = ac_thisuncheck;
+    }
+
+    public Double getAc_thispay() {
+        return ac_thispay;
+    }
+
+    public void setAc_thispay(Double ac_thispay) {
+        this.ac_thispay = ac_thispay;
+    }
+
+    public Double getAc_thissend() {
+        return ac_thissend;
+    }
+
+    public void setAc_thissend(Double ac_thissend) {
+        this.ac_thissend = ac_thissend;
+    }
+
+    public Double getAc_thischeck() {
+        return ac_thischeck;
+    }
+
+    public void setAc_thischeck(Double ac_thischeck) {
+        this.ac_thischeck = ac_thischeck;
+    }
+
+    public Double getAc_payamont() {
+        return ac_payamont;
+    }
+
+    public void setAc_payamont(Double ac_payamont) {
+        this.ac_payamont = ac_payamont;
+    }
+}

+ 90 - 0
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckDetailDTO.java

@@ -0,0 +1,90 @@
+package com.usoftchina.saas.money.dto;
+
+import java.io.Serializable;
+
+/**
+ * @author: guq
+ * @create: 2019-01-14 12:39
+ **/
+public class ApcheckDetailDTO implements Serializable{
+
+    private Integer ad_detno;//序号
+
+    private String ad_inoutno;//出入库单号
+
+    private Integer ad_pdno;//出入库序号
+
+    private String ad_prodcode;//物料编号
+
+    private String ad_pucode;//采购单号
+
+    private Double ad_price;//单价
+
+    private Double ad_taxrate;//税率%
+
+    private Double ad_b2bqty;//供应商对账数
+
+    public Integer getAd_detno() {
+        return ad_detno;
+    }
+
+    public void setAd_detno(Integer ad_detno) {
+        this.ad_detno = ad_detno;
+    }
+
+    public String getAd_inoutno() {
+        return ad_inoutno;
+    }
+
+    public void setAd_inoutno(String ad_inoutno) {
+        this.ad_inoutno = ad_inoutno;
+    }
+
+    public Integer getAd_pdno() {
+        return ad_pdno;
+    }
+
+    public void setAd_pdno(Integer ad_pdno) {
+        this.ad_pdno = ad_pdno;
+    }
+
+    public String getAd_prodcode() {
+        return ad_prodcode;
+    }
+
+    public void setAd_prodcode(String ad_prodcode) {
+        this.ad_prodcode = ad_prodcode;
+    }
+
+    public String getAd_pucode() {
+        return ad_pucode;
+    }
+
+    public void setAd_pucode(String ad_pucode) {
+        this.ad_pucode = ad_pucode;
+    }
+
+    public Double getAd_price() {
+        return ad_price;
+    }
+
+    public void setAd_price(Double ad_price) {
+        this.ad_price = ad_price;
+    }
+
+    public Double getAd_taxrate() {
+        return ad_taxrate;
+    }
+
+    public void setAd_taxrate(Double ad_taxrate) {
+        this.ad_taxrate = ad_taxrate;
+    }
+
+    public Double getAd_b2bqty() {
+        return ad_b2bqty;
+    }
+
+    public void setAd_b2bqty(Double ad_b2bqty) {
+        this.ad_b2bqty = ad_b2bqty;
+    }
+}

+ 3 - 3
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/po/Apcheck.java

@@ -10,7 +10,7 @@ import java.util.Date;
  **/
 public class Apcheck extends CommonBaseEntity{
 
-    private Integer ac_b2bid;
+    private Long ac_b2bid;
 
     private String ac_code;
 
@@ -60,11 +60,11 @@ public class Apcheck extends CommonBaseEntity{
 
     private Long companyId;
 
-    public Integer getAc_b2bid() {
+    public Long getAc_b2bid() {
         return ac_b2bid;
     }
 
-    public void setAc_b2bid(Integer ac_b2bid) {
+    public void setAc_b2bid(Long ac_b2bid) {
         this.ac_b2bid = ac_b2bid;
     }
 

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

@@ -93,9 +93,9 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             fundtransferdetail.setCompanyId(BaseContextHolder.getCompanyId());
             fundtransferdetail.setFtd_ftid(Math.toIntExact(id));
             fundtransferdetail.setFt_date(fundtransfer.getFt_date());
-//            if (!(fundtransferdetail.getFtd_currency().equals(fundtransferdetail.getFtd_incurrency()))){
-//                throw new BizException(500, BizExceptionCode.CURRENCY_NOT_EQUALS.getMessage());
-//            }
+            if (fundtransferdetail.getFtd_inbankname().equals(fundtransferdetail.getFtd_bankname())){
+                throw new BizException(BizExceptionCode.BANKNAME_NOT_EQUALS.getCode(), BizExceptionCode.BANKNAME_NOT_EQUALS.getMessage());
+            }
             if (fundtransferdetail.getId() > 0 ){
                 fundtransferdetailMapper.updateByPrimaryKeySelective(fundtransferdetail);
             }else {
@@ -118,12 +118,13 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         DocBaseDTO docBaseDTO = this.insert(fundtran);
         Long id = docBaseDTO.getId();
 
-        List<String> bankName = fundtransferMapper.checkAmount(BaseContextHolder.getCompanyId(), id);
-        if (bankName.size() > 0){
-            String name = org.apache.commons.lang3.StringUtils.join(bankName, ",");
-            String message = BizExceptionCode.BANK_AMOUNT_NOTENOUGHS.getMessage();
-            throw new BizException(500, String.format(message, name));
-        }
+        //判断资金余额
+//        List<String> bankName = fundtransferMapper.checkAmount(BaseContextHolder.getCompanyId(), id);
+//        if (bankName.size() > 0){
+//            String name = org.apache.commons.lang3.StringUtils.join(bankName, ",");
+//            String message = BizExceptionCode.BANK_AMOUNT_NOTENOUGHS.getMessage();
+//            throw new BizException(500, String.format(message, name));
+//        }
 
 
         //取从表金额更新中间表、资金账号表
@@ -227,7 +228,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             Double inamount = banksubledgerMapper.selectThisamount(fundtransferdetail.getFtd_inbankcode(), BaseContextHolder.getCompanyId());
             banksubledgerMapper.updateBankcode(amount, fundtransferdetail.getFtd_nowbalance(),
                     fundtransferdetail.getFtd_bankcode(), "+", BaseContextHolder.getCompanyId());
-            banksubledgerMapper.updateBankcode(inamount, fundtransferdetail.getFtd_nowbalance(),
+            banksubledgerMapper.updateBankcode(inamount, fundtransferdetail.getFtd_innowbalance(),
                     fundtransferdetail.getFtd_bankcode(), "-", BaseContextHolder.getCompanyId());
 
             //资金账号表
@@ -235,6 +236,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             int bk_inid = fundtransferdetail.getFtd_inbankid();
 
             Double bk_amount = fundtransferdetail.getFtd_nowbalance();
+            Double bk_inamount = fundtransferdetail.getFtd_innowbalance();
             //付款方
             Bankinformation bankinformation = bankinformationMapper.selectByPrimaryKey(bk_id);
             Double beginamount = bankinformation.getBk_beginamount()== null ? new Double(0) : bankinformation.getBk_beginamount();
@@ -253,8 +255,8 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             Double inspending = inbankinformation.getBk_spending() == null ? new Double(0) : inbankinformation.getBk_spending();
             Double inincomme = inbankinformation.getBk_income() == null ? new Double(0) : inbankinformation.getBk_income();
             Bankinformation newinbankinformation = new Bankinformation();
-            newinbankinformation.setBk_thisamount(inbeginamount + (inincomme-bk_amount) - inspending );
-            newinbankinformation.setBk_income(inincomme-bk_amount);
+            newinbankinformation.setBk_thisamount(inbeginamount + (inincomme-bk_inamount) - inspending );
+            newinbankinformation.setBk_income(inincomme-bk_inamount);
             newinbankinformation.setBk_spending(inspending);
             newinbankinformation.setId(Long.valueOf(bk_inid));
             newinbankinformation.setCompanyId(BaseContextHolder.getCompanyId());

+ 9 - 9
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDTO.java

@@ -29,7 +29,7 @@ public class SaleDownDTO implements Serializable{
 
     private String sa_pocode;//PO号
 
-    private Integer b2b_pu_id;//B2BID
+    private Long b2b_pu_id;//B2BID
 
     private String sa_remark;//备注
 
@@ -108,14 +108,6 @@ public class SaleDownDTO implements Serializable{
         this.sa_pocode = sa_pocode;
     }
 
-    public Integer getB2b_pu_id() {
-        return b2b_pu_id;
-    }
-
-    public void setB2b_pu_id(Integer b2b_pu_id) {
-        this.b2b_pu_id = b2b_pu_id;
-    }
-
     public String getSa_remark() {
         return sa_remark;
     }
@@ -123,4 +115,12 @@ public class SaleDownDTO implements Serializable{
     public void setSa_remark(String sa_remark) {
         this.sa_remark = sa_remark;
     }
+
+    public Long getB2b_pu_id() {
+        return b2b_pu_id;
+    }
+
+    public void setB2b_pu_id(Long b2b_pu_id) {
+        this.b2b_pu_id = b2b_pu_id;
+    }
 }

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

@@ -13,7 +13,7 @@ public class SaleDownDetailDTO implements Serializable{
 
     private Integer sd_detno;//序号
 
-    private Integer b2b_pd_id;//B2BID
+    private Long b2b_pd_id;//B2BID
 
     private String sd_custorispeccode;//客户物料型号
 
@@ -47,11 +47,11 @@ public class SaleDownDetailDTO implements Serializable{
         this.sd_detno = sd_detno;
     }
 
-    public Integer getB2b_pd_id() {
+    public Long getB2b_pd_id() {
         return b2b_pd_id;
     }
 
-    public void setB2b_pd_id(Integer b2b_pd_id) {
+    public void setB2b_pd_id(Long b2b_pd_id) {
         this.b2b_pd_id = b2b_pd_id;
     }
 

+ 2 - 1
applications/transfers/transfers-auth/src/main/java/com/usoftchina/saas/transfers/auth/interceptor/OpenApiAuthInterceptor.java

@@ -53,7 +53,7 @@ public class OpenApiAuthInterceptor extends HandlerInterceptorAdapter{
             String sign = request.getParameter(openApiConfig.getSignatureParam());
             String companyuu = request.getParameter(openApiConfig.getCompanyuu());
             if (!StringUtils.isEmpty(sign) && !StringUtils.isEmpty(companyuu)) {
-                String urlMessage = request.getRequestURL() + "?"
+                String urlMessage = request.getRequestURI() + "?"
                         + request.getQueryString().substring(0, request.getQueryString().indexOf(openApiConfig.getSignatureParam()) - 1);
 
                 logger.info("urlMessage:{}", urlMessage);
@@ -72,6 +72,7 @@ public class OpenApiAuthInterceptor extends HandlerInterceptorAdapter{
                                 HmacUtils.encode(urlMessage, companyResult.getData().getAccessKey());
 
                     if (servletPath.indexOf("b2b") > -1) {
+                        logger.info("自己生产的sign:{}-----传入的sign:{}", localSign, sign);
                         check = sign.equals(localSign);
                     }
 

+ 7 - 3
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/ApCheckController.java

@@ -5,6 +5,7 @@ import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.money.dto.ApcheckFormDTO;
+import com.usoftchina.saas.transfers.auth.annotation.IgnoreOpenApiAuth;
 import com.usoftchina.saas.transfers.service.ApCheckService;
 import com.usoftchina.saas.utils.JsonUtils;
 import com.usoftchina.saas.utils.StringUtils;
@@ -14,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.util.List;
 
 /**
@@ -31,12 +34,13 @@ public class ApCheckController {
     private ApCheckService apcheckService;
 
     @PostMapping("/save")
-    public Result saveApcheck(@RequestParam("data") String data) {
+    public Result saveApcheck(@RequestParam("data") String data) throws UnsupportedEncodingException {
         if (StringUtils.isEmpty(data)) {
             throw new BizException(BizExceptionCode.NULL_DATA);
         }
+        data = URLDecoder.decode(data, "UTF-8");
         List<ApcheckFormDTO> forms = JsonUtils.fromJsonArray(data, ApcheckFormDTO.class);
-        apcheckService.save(forms);
-        return Result.success();
+        String ids = apcheckService.save(forms);
+        return Result.success(ids);
     }
 }

+ 9 - 4
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/SaleDownController.java

@@ -13,6 +13,9 @@ import com.usoftchina.saas.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
 import java.util.List;
 
 /**
@@ -23,7 +26,6 @@ import java.util.List;
 @IgnoreAuth
 @RestController
 @RequestMapping("/b2b/saledown")
-@IgnoreOpenApiAuth
 public class SaleDownController {
 
     @Autowired
@@ -34,10 +36,11 @@ public class SaleDownController {
      * @return
      */
     @PostMapping("/save")
-    public Result<String> saveSaleDown(@RequestParam("data") String data) {
+    public Result<String> saveSaleDown(@RequestParam("data") String data) throws UnsupportedEncodingException {
         if (StringUtils.isEmpty(data)) {
             throw new BizException(BizExceptionCode.NULL_DATA);
         }
+        data = URLDecoder.decode(data, "UTF-8");
         List<SaleDownFormDTO> forms = JsonUtils.fromJsonArray(data, SaleDownFormDTO.class);
         String idStr = saleDownService.saveData(forms);
         return Result.success(idStr);
@@ -48,10 +51,11 @@ public class SaleDownController {
      * @return
      */
     @PostMapping("/close")
-    public Result<String> closeSaleDown(@RequestParam("data") String data) {
+    public Result<String> closeSaleDown(@RequestParam("data") String data) throws UnsupportedEncodingException {
         if (StringUtils.isEmpty(data)) {
             throw new BizException(BizExceptionCode.NULL_DATA);
         }
+        data = URLDecoder.decode(data, "UTF-8");
          saleDownService.closeSaleDown(data);
         return Result.success();
     }
@@ -61,10 +65,11 @@ public class SaleDownController {
      * @return
      */
     @PostMapping("/resClose")
-    public Result<String> resCloseSaleDown(@RequestParam("data") String data) {
+    public Result<String> resCloseSaleDown(@RequestParam("data") String data) throws UnsupportedEncodingException {
         if (StringUtils.isEmpty(data)) {
             throw new BizException(BizExceptionCode.NULL_DATA);
         }
+        data = URLDecoder.decode(data, "UTF-8");
         saleDownService.resCloseSaleDown(data);
         return Result.success();
     }

+ 9 - 9
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/po/SaleDown.java

@@ -44,7 +44,7 @@ public class SaleDown extends CommonBaseEntity{
 
     private String sa_pocode;
 
-    private Integer b2b_pu_id;
+    private Long b2b_pu_id;
 
     private String sa_printstatus;
 
@@ -111,6 +111,10 @@ public class SaleDown extends CommonBaseEntity{
         this.sa_custcode = sa_custcode == null ? null : sa_custcode.trim();
     }
 
+    public void setB2b_pu_id(Long b2b_pu_id) {
+        this.b2b_pu_id = b2b_pu_id;
+    }
+
     public String getSa_custname() {
         return sa_custname;
     }
@@ -188,6 +192,10 @@ public class SaleDown extends CommonBaseEntity{
         return sa_selleruu;
     }
 
+    public Long getB2b_pu_id() {
+        return b2b_pu_id;
+    }
+
     public void setSa_selleruu(Long sa_selleruu) {
         this.sa_selleruu = sa_selleruu;
     }
@@ -216,14 +224,6 @@ public class SaleDown extends CommonBaseEntity{
         this.sa_pocode = sa_pocode == null ? null : sa_pocode.trim();
     }
 
-    public Integer getB2b_pu_id() {
-        return b2b_pu_id;
-    }
-
-    public void setB2b_pu_id(Integer b2b_pu_id) {
-        this.b2b_pu_id = b2b_pu_id;
-    }
-
     public String getSa_printstatus() {
         return sa_printstatus;
     }

+ 9 - 9
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/po/SaleDownDetail.java

@@ -16,7 +16,7 @@ public class SaleDownDetail extends CommonBaseEntity{
 
     private Integer sd_detno;
 
-    private Integer b2b_pd_id;
+    private Long b2b_pd_id;
 
     private Long sd_prodid;
 
@@ -76,14 +76,6 @@ public class SaleDownDetail extends CommonBaseEntity{
         this.sd_detno = sd_detno;
     }
 
-    public Integer getB2b_pd_id() {
-        return b2b_pd_id;
-    }
-
-    public void setB2b_pd_id(Integer b2b_pd_id) {
-        this.b2b_pd_id = b2b_pd_id;
-    }
-
     public Long getSd_prodid() {
         return sd_prodid;
     }
@@ -100,6 +92,14 @@ public class SaleDownDetail extends CommonBaseEntity{
         this.sd_prodcode = sd_prodcode == null ? null : sd_prodcode.trim();
     }
 
+    public Long getB2b_pd_id() {
+        return b2b_pd_id;
+    }
+
+    public void setB2b_pd_id(Long b2b_pd_id) {
+        this.b2b_pd_id = b2b_pd_id;
+    }
+
     public String getSd_prodspec() {
         return sd_prodspec;
     }

+ 2 - 2
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/ApCheckServiceImpl.java

@@ -33,7 +33,7 @@ public class ApCheckServiceImpl implements ApCheckService{
     @Override
     public String save(List<ApcheckFormDTO> forms) {
         if (CollectionUtils.isEmpty(forms) || forms.size() == 0) {
-            return null;
+            throw new IllegalStateException("无效数据");
         }
         StringBuilder ids = new StringBuilder();
         Long companyId = TransfersContextHodler.getB2bCompanyId();
@@ -54,7 +54,7 @@ public class ApCheckServiceImpl implements ApCheckService{
             main.setCompanyId(companyId);
             main.setCreateTime(new Date());
             //获取编号
-            String code = maxnumberService.getMaxnumber(BillCodeSeq.APCHECK.getCaller(), false).getData();
+            String code = maxnumberService.getMaxnumberByCompanyid(BillCodeSeq.APCHECK.getCaller(), true, companyId).getData();
             main.setAc_code(code);
             apcheckMapper.insertSelective(main);
 

+ 2 - 2
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/SaleDownServiceImpl.java

@@ -47,7 +47,7 @@ public class SaleDownServiceImpl implements SaleDownService{
     @Override
     public String saveData(List<SaleDownFormDTO> forms) {
         if (CollectionUtils.isEmpty(forms) || forms.size() == 0) {
-            return null;
+            throw new IllegalStateException("无效数据");
         }
         StringBuilder ids = new StringBuilder();
         Long companyId = TransfersContextHodler.getB2bCompanyId();
@@ -69,7 +69,7 @@ public class SaleDownServiceImpl implements SaleDownService{
                 main.setSa_custid(customer.getId());
             }
             //取编号
-            String code = maxnumberService.getMaxnumber(BillCodeSeq.SALEDOWN.getCaller(), false).getData();
+            String code = maxnumberService.getMaxnumberByCompanyid(BillCodeSeq.SALEDOWN.getCaller(), true, companyId).getData();
             //补充必要数据
             main.setSa_code(code);
             main.setCreateTime(new Date());

+ 6 - 13
applications/transfers/transfers-server/src/main/resources/mapper/ApcheckMapper.xml

@@ -57,7 +57,7 @@
     ac_vendid, ac_vendcode, ac_vendname, ac_currency, ac_rate, ac_checkamount, ac_confirmstatus, 
     ac_confirmstatuscode, ac_confirmdate, ac_remark, ac_sendstatus, ac_thisamount, ac_thisuncheck, 
     ac_thispay, ac_thissend, ac_thischeck, ac_payamont, creatorId, creatorName, companyId, 
-    updaterId, updaterName, updatetime, createTime
+    updaterId, updaterName, createTime
   </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select 
@@ -163,9 +163,6 @@
       <if test="updaterName != null" >
         updaterName,
       </if>
-      <if test="updatetime != null" >
-        updatetime,
-      </if>
       <if test="createTime != null" >
         createTime,
       </if>
@@ -258,9 +255,6 @@
       <if test="updaterName != null" >
         #{updaterName,jdbcType=VARCHAR},
       </if>
-      <if test="updatetime != null" >
-        #{updatetime,jdbcType=TIMESTAMP},
-      </if>
       <if test="createTime != null" >
         #{createTime,jdbcType=TIMESTAMP},
       </if>
@@ -277,11 +271,11 @@
     values
     <foreach collection="list" item="item" index="index" open="" close="" separator=",">
       (
-      #{ad_acid,jdbcType=INTEGER}, #{ad_detno,jdbcType=INTEGER},
-      #{ad_inoutno,jdbcType=VARCHAR}, #{ad_pdno,jdbcType=INTEGER}, #{ad_prodcode,jdbcType=VARCHAR},
-      #{ad_pucode,jdbcType=VARCHAR}, #{ad_price,jdbcType=DOUBLE}, #{ad_taxrate,jdbcType=DOUBLE},
-      #{ad_b2bqty,jdbcType=DOUBLE}, #{companyId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP},
-      #{creatorId,jdbcType=INTEGER}, #{creatorName,jdbcType=VARCHAR}
+      #{item.ad_acid}, #{item.ad_detno,jdbcType=INTEGER},
+      #{item.ad_inoutno,jdbcType=VARCHAR}, #{item.ad_pdno,jdbcType=INTEGER}, #{item.ad_prodcode,jdbcType=VARCHAR},
+      #{item.ad_pucode,jdbcType=VARCHAR}, #{item.ad_price,jdbcType=DOUBLE}, #{item.ad_taxrate,jdbcType=DOUBLE},
+      #{item.ad_b2bqty,jdbcType=DOUBLE}, #{item.companyId,jdbcType=BIGINT}, #{item.createTime,jdbcType=TIMESTAMP},
+      #{item.creatorId,jdbcType=INTEGER}, #{item.creatorName,jdbcType=VARCHAR}
       )
     </foreach>
   </insert>
@@ -304,7 +298,6 @@
     <result column="ve_statuscode" property="ve_statuscode" jdbcType="VARCHAR" />
     <result column="companyId" property="companyId" jdbcType="INTEGER" />
     <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
-    <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
     <result column="ve_text1" property="ve_text1" jdbcType="VARCHAR" />
     <result column="ve_text2" property="ve_text2" jdbcType="VARCHAR" />
     <result column="ve_text3" property="ve_text3" jdbcType="VARCHAR" />

+ 6 - 6
applications/transfers/transfers-server/src/main/resources/mapper/SaledownMapper.xml

@@ -386,14 +386,14 @@
   </update>
 
   <select id="findProductBySpec" resultMap="productMap">
-    select * from product where pr_spec=#{spec} and companyid =#{companyid}
+    select * from product where pr_orispeccode=#{spec} and companyid =#{companyid}
   </select>
 
 
   <insert id="batchInsert" parameterType="java.util.List" >
     insert into saledowndetail (sd_said, sd_detno,sd_code,
-    sd_prodid, sd_prodcode, sd_prodspec,sd_orispeccode,sp_produnit,
-    sd_custorispeccode,sd_custprodcode,sd_custproddetail,sd_custprodspec
+    sd_prodid, sd_prodcode, sd_prodspec,sd_orispeccode,sd_produnit,
+    sd_custorispeccode,sd_custprodcode,sd_custproddetail,sd_custprodspec,
     sd_qty,
     sd_price, sd_total, sd_taxrate,
     sd_delivery,
@@ -404,7 +404,7 @@
       (
       #{item.sd_said,jdbcType=INTEGER}, #{item.sd_detno,jdbcType=INTEGER},#{item.sd_code,jdbcType=VARCHAR},
       #{item.sd_prodid,jdbcType=INTEGER}, #{item.sd_prodcode,jdbcType=VARCHAR},
-      #{item.sd_prodspec,jdbcType=VARCHAR},#{item.sd_orispeccode,jdbcType=VARCHAR},#{item.sp_produnit,jdbcType=VARCHAR},
+      #{item.sd_prodspec,jdbcType=VARCHAR},#{item.sd_orispeccode,jdbcType=VARCHAR},#{item.sd_produnit,jdbcType=VARCHAR},
       #{item.sd_custorispeccode,jdbcType=VARCHAR},#{item.sd_custprodcode,jdbcType=VARCHAR},#{item.sd_custproddetail,jdbcType=VARCHAR},
       #{item.sd_custprodspec,jdbcType=VARCHAR},
       #{item.sd_qty,jdbcType=DOUBLE},
@@ -418,12 +418,12 @@
 
   <update id="batchUpdateClose">
     update saledown set sa_status='已关闭', sa_statuscode='CLOSE' where
-    b2b_pd_id in #{data} and companyid =#{companyid}
+    b2b_pu_id in (${data}) and companyid =${companyid}
   </update>
 
   <update id="batchUpdateResClose">
     update saledown set sa_status='已审核',sa_statuscode='AUDITED' where
-     b2b_pd_id in #{data} and companyid =#{companyid}
+      b2b_pu_id in (${data}) and companyid =${companyid}
   </update>
 
   <select id="getCustomer" resultMap="customerMap">

+ 3 - 0
framework/core/src/main/java/com/usoftchina/saas/utils/JsonUtils.java

@@ -78,6 +78,9 @@ public class JsonUtils {
             return null;
         }
         try {
+            if (!json.startsWith("[")) {
+                json = "[" + json + "]";
+            }
             return mapper.readValue(json, getJavaType(List.class, targetCls));
         } catch (Exception e) {
             e.printStackTrace();

+ 2 - 1
frontend/operation-web/app/util/State.js

@@ -7,7 +7,8 @@ Ext.define('saas.util.State', {
     ],
 
     store: new Ext.util.LocalStorage({
-        id: 'app-state'
+        id: 'app-state',
+        session: true
     }),
 
     get: function(key, defaultValue) {

+ 3 - 6
frontend/saas-portal-web/src/components/conenter/addenterprise.vue

@@ -186,8 +186,7 @@ import { setTimeout, clearTimeout } from 'timers';
             },
             //取消添加企业
             tjquxiao(){
-                document.documentElement.scrollTop = 0;
-                window.pageYOffset = 0;
+                $(document).scrollTop(0);
                 this.$router.push({name:'company',}); 
             },
             //检测企业名称1
@@ -401,8 +400,7 @@ import { setTimeout, clearTimeout } from 'timers';
                             // this.$store.state.ishongdian = true;//显示红点
                             setTimeout(()=>{
                                 this.$router.push({name:'company'});
-                                document.documentElement.scrollTop = 0;
-                                window.pageYOffset = 0;
+                                $(document).scrollTop(0);
                             },3000)
                         } else {
                             this.$message.error(res.data.message);
@@ -495,8 +493,7 @@ import { setTimeout, clearTimeout } from 'timers';
                             .then(res=>{
                                 this.isadd = true;//添加成功弹窗
                                 setTimeout(()=>{
-                                    document.documentElement.scrollTop = 0;
-                                    window.pageYOffset = 0;
+                                    $(document).scrollTop(0);
                                     let session = Session.get();
                                     session.account.realname = name;
                                     session.account.email = email;

+ 3 - 6
frontend/saas-portal-web/src/components/conenter/company.vue

@@ -219,8 +219,7 @@
         methods: {
             //分页
             handleCurrentChange(val){
-                document.documentElement.scrollTop = 0;
-                window.pageYOffset = 0;
+                $(document).scrollTop(0);
                 this.pagingtion(val,this.size);
             },
             //分页函数
@@ -383,15 +382,13 @@
             },
             //查看企业详情
             getEnterpriseInfo(d){
-                document.documentElement.scrollTop = 0;
-                window.pageYOffset = 0;
+                $(document).scrollTop(0);
                 window.sessionStorage.setItem('content',JSON.stringify(d))
                 this.$router.push({path:'/details'});
             },
              //添加企业
             addEnterprise(){
-                document.documentElement.scrollTop = 0;
-                window.pageYOffset = 0;
+                $(document).scrollTop(0);
             },
             //关闭弹窗
             guanbitc(){

+ 3 - 6
frontend/saas-portal-web/src/components/conenter/details.vue

@@ -140,8 +140,7 @@ import Session from '@/utils/session'
             },
             //修改企业信息
             xiugaiqiye(){
-                document.documentElement.scrollTop = 0;
-                window.pageYOffset = 0;
+                $(document).scrollTop(0);
                 this.modify = false;
                 setTimeout(()=>{
                     this.selects()
@@ -170,8 +169,7 @@ import Session from '@/utils/session'
             },
             // 取消修改
             quxiaoxiugai(){
-                document.documentElement.scrollTop = 0;
-                window.pageYOffset = 0;
+                $(document).scrollTop(0);
                 this.modify = true;
             },
             // 保存修改
@@ -200,8 +198,7 @@ import Session from '@/utils/session'
                     })
                     .then(res=>{
                         if (res.data.success) {
-                            document.documentElement.scrollTop = 0;
-                            window.pageYOffset = 0;
+                            $(document).scrollTop(0);
                             this.modify = true;
                             let session = Session.get();
                             session.account.email = email;

+ 1 - 22
frontend/saas-portal-web/src/components/conenter/enterprise.vue

@@ -153,15 +153,6 @@
                     <div class="gs-news" ref="qiyebox" :class="isheigh ? 'heigh' : ''">
                         <ul>
                             <li>
-                                <!-- <span>消息类型</span>
-                                <span>时间</span>
-                                <span class="newscentent" style="position: relative;top: 7px;">
-                                    <span>消息内容</span>
-                                    <span>管理员</span>
-                                    <span>联系方式</span>
-                                </span>
-                                <span>状态</span>
-                                <span>操作</span> -->
                                 <span>内容</span>
                                 <span>状态</span>
                                 <span>时间</span>
@@ -177,16 +168,6 @@
                                 <span v-else-if='d.status == 1' style="color: #3CC600;">已通过</span>
                                 <span v-else-if='d.status == 2' style="color: #1E88F5;">待批准</span>
                                 <span>{{d.createTime}}</span>
-                                <!-- <span>{{d.createTime}}</span>
-                                <span class="newscentent" style="position:relative;top:9px">
-                                    <span>{{d.companyName}}</span>
-                                    <span>{{d.admin}}</span>
-                                    <span>{{d.adminMobile}}</span>
-                                </span>
-                                <span v-if='d.status == 0' style="color: #FF3900;">未通过</span>
-                                <span v-else-if='d.status == 1' style="color: #3CC600;">已通过</span>
-                                <span v-else-if='d.status == 2' style="color: #1E88F5;">待批准</span>
-                                <span><button v-if="d.status == 0" @click="Rejoin(i)" class="news-btn">重新加入</button></span> -->
                             </li>
                             <li v-if="!isnews" class="wushuju">
                                 <img src="/static/img/zanwushuju2x.png" alt="">
@@ -473,9 +454,7 @@ import { setTimeout } from 'timers';
                 this.$store.commit('problemtrue')
             },
             scrollout(){
-                document.documentElement.scrollTop = 0;
-                window.pageYOffset = 0;
-                document.body.scrollTop = 0;
+                $(document).scrollTop(0)
             },
             //内容不足500固定高度
             boxheight(){

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

@@ -318,7 +318,7 @@
         this.isproblem = this.$route.params.isporblem
       };
       let token = '';
-      if(localStorage.getItem('app-state-session')){
+      if(sessionStorage.getItem('app-state-session')){
         token = Session.getToken();
       }
       this.$ajax({
@@ -395,7 +395,7 @@
     },
     methods: {
       handleFun(){
-        let top = $(window).scrollTop();
+        let top = $(document).scrollTop();
         let Y = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
         if ($('#feature').offset()) {
           // var scrollH = Math.floor($('#feature').offset().top) - 260;//500
@@ -611,6 +611,7 @@
           let featH = Math.floor($('#feature').offset().top) - 70;
           this.animate(featH);//690
         },10);
+        // console.log($(document).scrollTop())
       },
       //功能
       service2(){
@@ -642,14 +643,13 @@
             var step = (target - leader) / 10;
             step = step > 0 ? Math.ceil(step) : Math.floor(step);
             leader = leader + step;
-            document.documentElement.scrollTop++;
-            if(window.pageYOffset){
-              window.pageYOffset = leader;
-          }else if(document.documentElement.scrollTop ){
-              document.documentElement.scrollTop = leader;
-          }else if(document.body.scrolltop){
-              document.body.scrolltop = leader;
-          }
+            $(document).scrollTop(leader);
+        //     document.documentElement.scrollTop++;
+        //     if(document.documentElement.scrollTop ){
+        //       document.documentElement.scrollTop = leader;
+        //   }else if(document.body.scrolltop){
+        //       document.body.scrolltop = leader;
+        //   }
             if (leader == target) {
                 clearInterval(this.timer);
             }

+ 1 - 1
frontend/saas-portal-web/src/components/footer/footer.vue

@@ -66,7 +66,7 @@
 			problem(){
 				this.$router.push({name: 'Home', params: {isporblem: false}})
 				this.$store.commit("problemfalse")
-				document.documentElement.scrollTop = 0;
+				$(document).scrollTop(0)
 			},
 			gohome(){
 				this.$store.commit("problemtrue")

+ 5 - 5
frontend/saas-portal-web/src/utils/session.js

@@ -6,7 +6,7 @@ function isValid(session) {
 
 export default {
   get() {
-    const str = localStorage.getItem(storeKey)
+    const str = sessionStorage.getItem(storeKey)
     if (str) {
       return JSON.parse(str)
     }
@@ -14,16 +14,16 @@ export default {
   },
   set(session) {
     session.span = session.timestamp - new Date().getTime()
-    return localStorage.setItem(storeKey, JSON.stringify(session))
+    return sessionStorage.setItem(storeKey, JSON.stringify(session))
   },
   remove() {
-    return localStorage.removeItem(storeKey)
+    return sessionStorage.removeItem(storeKey)
   },
   // Authorization Header
   getToken() {
     const session = this.get()
     if (!isValid(session)) {
-      localStorage.removeItem(storeKey)
+      sessionStorage.removeItem(storeKey)
       return null
     }
     return session.token
@@ -31,7 +31,7 @@ export default {
   getAccount() {
     const session = this.get()
     if (!isValid(session)) {
-      localStorage.removeItem(storeKey)
+      sessionStorage.removeItem(storeKey)
       return null
     }
     return session.account

+ 3 - 3
frontend/saas-portal-web/static/set-token.html

@@ -6,10 +6,10 @@
         }
         var storeKey = 'app-state-session';
         if (e.data) {
-            localStorage.setItem(storeKey, e.data);
+            sessionStorage.setItem(storeKey, e.data);
         } else {
-            localStorage.removeItem(storeKey);
+            sessionStorage.removeItem(storeKey);
         }
         window.parent.postMessage("success", "*");
     });
-</script>
+</script>

+ 1 - 0
frontend/saas-web/app/util/State.js

@@ -7,6 +7,7 @@ Ext.define('saas.util.State', {
     ],
 
     store: new Ext.util.LocalStorage({
+        session: true,
         id: 'app-state'
     }),
 

+ 6 - 5
frontend/saas-web/app/view/core/base/BasePanel.js

@@ -23,6 +23,7 @@ Ext.define('saas.view.core.base.BasePanel', {
     },
     
     searchField:[],
+    toolButtons: [],
     gridColumns: [],
 
     deleteMoreMsg: '确认删除所选单据?',
@@ -49,18 +50,18 @@ Ext.define('saas.view.core.base.BasePanel', {
                 frame:false,
                 xtype: 'toolbar',
                 dock: 'top',
-                layout: 'column',
+                // layout: 'column',
                 style: {
                     margin: '0 0 12px 0',
                     padding: '10px 0 14px 8px',
                 },
-                items: me.searchField.concat([{
+                items: Ext.Array.merge(me.searchField, [{
                     xtype: 'button',
                     text: '查询',
                     handler: function() {
                         me.onQuery()
                     }
-                }])
+                }], ['->'], me.toolButtons)
             }],
             items: [gridcfg]
         });
@@ -113,7 +114,7 @@ Ext.define('saas.view.core.base.BasePanel', {
             value = item.value,
             condition;
 
-            if(value&&value!=''){
+            if(value !== undefined && value !== null && value !== ''){
                 if(typeof func == 'function') {
                     condition = {
                         type: 'condition',
@@ -124,7 +125,7 @@ Ext.define('saas.view.core.base.BasePanel', {
                     operation = item.operation || me.getDefaultFieldOperation(item),
                     conditionValue = me.getConditionValue(item, value);
         
-                    if(!conditionValue) {
+                    if(conditionValue === undefined && conditionValue === null && conditionValue === '') {
                         continue;
                     }
                     condition = {

+ 36 - 31
frontend/saas-web/app/view/core/base/GridPanel.js

@@ -208,37 +208,9 @@ Ext.define('saas.view.core.base.GridPanel', {
             store.setPageSize(pageSize);
         },
         itemClick: function(view,record,a,index,c) {
-            var classList = c.target.classList.value;
-            var form = view.ownerCt.ownerCt;
-            if(classList.indexOf('fa-pencil')>-1){
-                var config = {};
-                config.initId = record.get('id');
-                saas.util.BaseUtil.openTab(form._formXtype, '修改'+form._title, form._formXtype+config.initId, config);
-            }else if(classList.indexOf('fa-trash-o')>-1){
-                //删除
-                var id = record.get('id');
-                if(id){
-                    saas.util.BaseUtil.showConfirm('警告', form.deleteOneMsg)
-                    .then(function(yes) {
-                        if(yes == 'yes') {
-                            saas.util.BaseUtil.request({
-                                url: form._deleteUrl+'/'+id,
-                                method: 'POST',
-                            })
-                            .then(function(localJson) {
-                                if(localJson.success){
-                                    //解析参数
-                                    saas.util.BaseUtil.showSuccessToast('删除成功');
-                                    view.ownerCt.store.load();
-                                }
-                            })
-                            .catch(function(e) {
-                                saas.util.BaseUtil.showErrorToast('删除失败: ' + e.message);
-                            });
-                        }
-                    });
-                }
-            }
+            var form = view.up('core-base-basepanel');
+            var grid = view.up('core-base-gridpanel');
+            grid.onItemClick(form, grid,record,a,index,c);
         }
     },
 
@@ -263,6 +235,39 @@ Ext.define('saas.view.core.base.GridPanel', {
         });
     },
 
+    onItemClick: function(form, grid, record,a,index,c) {
+        var classList = c.target.classList.value;
+        if(classList.indexOf('fa-pencil')>-1){
+            var config = {};
+            config.initId = record.get('id');
+            saas.util.BaseUtil.openTab(form._formXtype, '修改'+form._title, form._formXtype+config.initId, config);
+        }else if(classList.indexOf('fa-trash-o')>-1){
+            //删除
+            var id = record.get('id');
+            if(id){
+                saas.util.BaseUtil.showConfirm('警告', form.deleteOneMsg)
+                .then(function(yes) {
+                    if(yes == 'yes') {
+                        saas.util.BaseUtil.request({
+                            url: form._deleteUrl+'/'+id,
+                            method: 'POST',
+                        })
+                        .then(function(localJson) {
+                            if(localJson.success){
+                                //解析参数
+                                saas.util.BaseUtil.showSuccessToast('删除成功');
+                                grid.store.load();
+                            }
+                        })
+                        .catch(function(e) {
+                            saas.util.BaseUtil.showErrorToast('删除失败: ' + e.message);
+                        });
+                    }
+                });
+            }
+        }
+    },
+
     onLoad:function(){
         this.ownerCt.ownerCt.store.load();
     },

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

@@ -138,10 +138,10 @@ Ext.define('saas.view.main.Main', {
                         afterrender:function(b){
                             var main = b.ownerCt.ownerCt;
                             //调用
-                            var _localStorage = Ext.decode(localStorage.getItem('app-state-session'));
-                            var nowCompanyId = _localStorage.account.companyId;
-                            if(_localStorage.account.rolesMap){
-                                var rolesMap = _localStorage.account.rolesMap[nowCompanyId];
+                            var user = saas.util.BaseUtil.getCurrentUser();
+                            var nowCompanyId = user.companyId;
+                            if(user.rolesMap){
+                                var rolesMap = user.rolesMap[nowCompanyId];
                                 if(rolesMap&&rolesMap.length>0){
                                     for(var i = 0; i < rolesMap.length; i++) {
                                         if(rolesMap[i].type==0){

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

@@ -56,12 +56,6 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
                 name: "or_bankname",
                 fieldLabel: "账户名称",
                 allowBlank: false
-            }, {
-                xtype: 'datefield',
-                name: 'or_date',
-                fieldLabel: '单据日期',
-                defaultValue: new Date(),
-                allowBlank: false
             }, {
                 xtype: 'condbfindtrigger',
                 fieldLabel: '币别汇率',
@@ -78,7 +72,7 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
                 // },
                 mainFieldConfig: {
                     readOnly: true,
-                    defaultReadOnly: false,
+                    defaultReadOnly: true,
                 },
                 supFieldConfig: {
                     xtype: 'numberfield',
@@ -87,19 +81,25 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
                     decimalPrecision: 6,
                     vtype: 'positiveNumber'
                 },
-            // }, {
-            //     xtype: "currencyDbfindTrigger",
-            //     name: "or_currency",
-            //     fieldLabel: "币别",
-            //     defaultValue: 'RMB'
-            // }, {
-            //     xtype: "numberfield",
-            //     name: "or_rate",
-            //     fieldLabel: "汇率",
-            //     defaultValue: 1,
-            //     decimalPrecision: 6,
-            //     vtype: 'positiveNumber'
-            }, {
+                // }, {
+                //     xtype: "currencyDbfindTrigger",
+                //     name: "or_currency",
+                //     fieldLabel: "币别",
+                //     defaultValue: 'RMB'
+                // }, {
+                //     xtype: "numberfield",
+                //     name: "or_rate",
+                //     fieldLabel: "汇率",
+                //     defaultValue: 1,
+                //     decimalPrecision: 6,
+                //     vtype: 'positiveNumber'
+            },{
+                xtype: 'datefield',
+                name: 'or_date',
+                fieldLabel: '单据日期',
+                defaultValue: new Date(),
+                allowBlank: false
+            },  {
                 name: "detailGridField",
                 xtype: "detailGridField",
                 storeModel: 'saas.model.money.Othreceipts',

+ 6 - 0
frontend/saas-web/app/view/money/othreceipts/FormPanelController.js

@@ -83,6 +83,12 @@ Ext.define('saas.view.money.othreceipts.FormPanelController', {
                         }, {
                             from: 'cu_name',
                             to: 'or_custname'
+                        }, {
+                            from: 'cu_currency',
+                            to: 'or_currency'
+                        }, {
+                            from: 'cr_rate',
+                            to: 'or_rate'
                         }],
                     });
 

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

@@ -72,7 +72,7 @@ Ext.define('saas.view.money.othspendings.FormPanel', {
                 // },
                 mainFieldConfig: {
                     readOnly: true,
-                    defaultReadOnly: false,
+                    defaultReadOnly: true,
                 },
                 supFieldConfig: {
                     xtype: 'numberfield',

+ 6 - 0
frontend/saas-web/app/view/money/othspendings/FormPanelController.js

@@ -74,6 +74,12 @@ Ext.define('saas.view.money.othspendings.FormPanelController', {
                         }, {
                             from: 've_name',
                             to: 'os_vendname'
+                        }, {
+                            from: 've_currency',
+                            to: 'os_currency'
+                        }, {
+                            from: 'cr_rate',
+                            to: 'os_rate'
                         }],
                     });
 

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

@@ -54,12 +54,6 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
                 listeners: {
                     change: 'clearDetails'
                 }
-            }, {
-                xtype: "datefield",
-                name: "pb_date",
-                fieldLabel: "日期",
-                defaultValue: new Date(),
-                allowBlank: false
             }, {
                 xtype: 'condbfindtrigger',
                 fieldLabel: '币别汇率',
@@ -80,7 +74,13 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
                     decimalPrecision: 6,
                     vtype: 'positiveNumber'
                 }
-            }, {
+            },{
+                xtype: "datefield",
+                name: "pb_date",
+                fieldLabel: "日期",
+                defaultValue: new Date(),
+                allowBlank: false
+            },  {
                 xtype: 'textfield',
                 name: 'pb_manname',
                 fieldLabel: '付款人',

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

@@ -53,12 +53,6 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
                 listeners: {
                     change: 'clearDetails'
                 }
-            }, {
-                xtype: "datefield",
-                name: "rb_date",
-                fieldLabel: "日期",
-                defaultValue: new Date(),
-                allowBlank: false
             }, {
                 xtype: 'condbfindtrigger',
                 fieldLabel: '币别汇率',
@@ -79,6 +73,12 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
                     decimalPrecision: 6,
                     vtype: 'positiveNumber'
                 }
+            },{
+                xtype: "datefield",
+                name: "rb_date",
+                fieldLabel: "日期",
+                defaultValue: new Date(),
+                allowBlank: false
             }, {
                 xtype: "textfield",
                 name: "rb_manname",

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

@@ -510,21 +510,6 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         listeners: {
                             change: 'clearDetails'
                         }
-                    }, {
-                        fieldLabel: '客户编号',
-                        xtype: 'hidden',
-                        name: 'vc_custcode',
-                    }, {
-                        fieldLabel: '客户名称',
-                        xtype: 'customerDbfindTrigger',
-                        name: 'vc_custname',
-                        allowBlank: false
-                    }, {
-                        fieldLabel: '日期',
-                        xtype: 'datefield',
-                        defaultValue: new Date(),
-                        allowBlank: false,
-                        name: 'vc_date'
                     }, {
                         xtype: 'condbfindtrigger',
                         fieldLabel: '币别汇率',
@@ -547,7 +532,22 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             decimalPrecision: 6,
                             vtype: 'positiveNumber'
                         },
+                    },  {
+                        fieldLabel: '客户编号',
+                        xtype: 'hidden',
+                        name: 'vc_custcode',
+                    }, {
+                        fieldLabel: '客户名称',
+                        xtype: 'customerDbfindTrigger',
+                        name: 'vc_custname',
+                        allowBlank: false
                     }, {
+                        fieldLabel: '日期',
+                        xtype: 'datefield',
+                        defaultValue: new Date(),
+                        allowBlank: false,
+                        name: 'vc_date'
+                    },{
                         xtype: 'hidden',
                         name: 'vc_amount1',
                         thousandSeparator: ',',
@@ -581,12 +581,6 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         name: "vc_vendname",
                         fieldLabel: "供应商名称",
                         allowBlank: false
-                    }, {
-                        fieldLabel: '日期',
-                        xtype: 'datefield',
-                        defaultValue: new Date(),
-                        allowBlank: false,
-                        name: 'vc_date'
                     }, {
                         xtype: 'condbfindtrigger',
                         fieldLabel: '币别汇率',
@@ -609,6 +603,12 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             decimalPrecision: 6,
                             vtype: 'positiveNumber'
                         },
+                    }, {
+                        fieldLabel: '日期',
+                        xtype: 'datefield',
+                        defaultValue: new Date(),
+                        allowBlank: false,
+                        name: 'vc_date'
                     }, {
                         xtype: 'hidden',
                         name: 'vc_amount1',
@@ -671,13 +671,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             from: 've_name',
                             to: 'vc_vendname'
                         }],
-                    }, {
-                        fieldLabel: '日期',
-                        xtype: 'datefield',
-                        defaultValue: new Date(),
-                        allowBlank: false,
-                        name: 'vc_date'
-                    }, {
+                    },  {
                         xtype: 'condbfindtrigger',
                         fieldLabel: '币别汇率',
                         allowBlank: false,
@@ -700,6 +694,12 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             vtype: 'positiveNumber'
                         },
                     }, {
+                        fieldLabel: '日期',
+                        xtype: 'datefield',
+                        defaultValue: new Date(),
+                        allowBlank: false,
+                        name: 'vc_date'
+                    },{
                         xtype: 'hidden',
                         name: 'vc_amount1',
                         thousandSeparator: ',',
@@ -749,13 +749,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         xtype: 'customerDbfindTrigger',
                         name: 'vc_turncustname',
                         allowBlank: false,
-                    }, {
-                        fieldLabel: '日期',
-                        xtype: 'datefield',
-                        defaultValue: new Date(),
-                        allowBlank: false,
-                        name: 'vc_date'
-                    }, {
+                    },  {
                         xtype: 'condbfindtrigger',
                         fieldLabel: '币别汇率',
                         allowBlank: false,
@@ -778,6 +772,12 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             vtype: 'positiveNumber'
                         },
                     }, {
+                        fieldLabel: '日期',
+                        xtype: 'datefield',
+                        defaultValue: new Date(),
+                        allowBlank: false,
+                        name: 'vc_date'
+                    },{
                         xtype: 'hidden',
                         name: 'vc_amount1',
                         thousandSeparator: ',',
@@ -827,12 +827,6 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         xtype: 'vendorDbfindTrigger',
                         name: 'vc_turnvendname',
                         allowBlank: false,
-                    }, {
-                        fieldLabel: '日期',
-                        xtype: 'datefield',
-                        defaultValue: new Date(),
-                        allowBlank: false,
-                        name: 'vc_date'
                     }, {
                         xtype: 'condbfindtrigger',
                         fieldLabel: '币别汇率',
@@ -855,7 +849,13 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             decimalPrecision: 6,
                             vtype: 'positiveNumber'
                         },
-                    }, {
+                    },{
+                        fieldLabel: '日期',
+                        xtype: 'datefield',
+                        defaultValue: new Date(),
+                        allowBlank: false,
+                        name: 'vc_date'
+                    },  {
                         xtype: 'hidden',
                         name: 'vc_amount1',
                         thousandSeparator: ',',

+ 64 - 6
frontend/saas-web/app/view/sale/business/Business.js

@@ -33,14 +33,14 @@ Ext.define('saas.view.sale.business.Business', {
                 queryMode: 'local',
                 displayField: 'name',
                 valueField: 'value',
-                emptyText :'全部',
+                emptyText :'未报价',
+                value: '0',
                 editable:false,
                 labelWidth: 80,
                 columnWidth: 0.2,
                 store: Ext.create('Ext.data.ArrayStore', {
                     fields: ['name', 'value'],
                     data: [
-                        ["全部", "all"],
                         ["未报价", "0"],
                         ["已报价", "1"]
                     ]
@@ -131,8 +131,60 @@ Ext.define('saas.view.sale.business.Business', {
                 }, {
                     text: '操作',
                     dataIndex: 'quoted',
-                    renderer: function(v, m) {
-                        return v == 1 ? '<a style="color: green; cursor: pointer;">报价中</a>' : '<a style="color: #35BAF6; cursor: pointer;">报价</a>';
+                    renderer:function(val, meta, record,x,y,store, view){
+                        if(val == 0){
+                            return '<a style="color: #35BAF6; cursor: pointer;">点击报价</a>';
+                        }
+                        var id = record.id;
+                        var grid = view.up('grid');
+                        
+                        if(!view.tip) {
+                            view.tip = Ext.create('Ext.tip.ToolTip', {
+                                hidden: true,
+                                target: view.el,
+                                delegate: '.x-grid-cell-'+meta.column.id,
+                                trackMouse: true,
+                                renderTo: Ext.getBody(),	
+                                maxWidth :830,
+                                layout:'anchor',
+                                listeners: {								          
+                                    beforeshow: function updateTipBody(tip) {
+                                        var dg = Ext.getCmp('grid-'+id);
+                                        var record = grid.focusRecord;
+                                        if(record.data.qutations.agreed) {
+                                            this.setHtml(null);
+                                            var replies = record.data.qutations.replies;
+                                            dg.store.loadData(replies);
+                                            dg.show();
+                                        }else {
+                                            dg.hide();
+                                            this.setHtml(record.data.qutations.refusereason || '无');
+                                        }
+                                    }
+                                },
+                                items : [Ext.create('Ext.grid.Panel', {
+                                    id: 'grid-'+id,
+                                    frame:true,
+                                    anchor: '100% 100%',
+                                    width:205,
+                                    store:[],
+                                    columns: [{
+                                        text: '分段数量',
+                                        dataIndex: 'lapQty',
+                                        width: 110
+                                    }, {
+                                        text: '分段价格',
+                                        dataIndex: 'price',
+                                        width: 90
+                                    }]
+                                })]
+                            });
+                        }
+                        if(record.data.qutations.agreed) {
+                            return '<div style="text-align: center;color: green;">查看报价信息</div>';
+                        }else {
+                            return '<div style="text-align: center;color:#ff6c00;">查看拒绝理由</div>';
+                        }
                     },
                     listeners: {
                         click: function(tableView, td, rowIdx, colIdx, e, model, tr) {
@@ -143,9 +195,15 @@ Ext.define('saas.view.sale.business.Business', {
                             if(value == '0') {
                                 me.getController().showQuoteWin(record);
                             }
-                        }
+                        },
+                    }
+                }],
+                listeners: {
+                    itemmouseenter: function(view, record, item, index, e, eOpts) {
+                        var grid = view.up('grid');
+                        grid.focusRecord = record;
                     }
-                }]
+                }
             },
         });
         this.callParent(arguments);

+ 97 - 79
frontend/saas-web/app/view/sale/business/Product.js

@@ -5,50 +5,73 @@ Ext.define('saas.view.sale.business.Product', {
     extend: 'saas.view.core.base.BasePanel',
     xtype: 'sale-business-product',
 
-    controller: 'sale-business-Product',
-    viewModel: 'sale-business-Product',
     viewName: 'sale-business-Product',
 
 
-    // dataUrl: 'http://10.1.80.23:8560/api/sale/sale/enterprise/businessChance',
-    dataUrl: '/api/sale/sale/enterprise/businessChance',
+    // dataUrl: 'http://10.1.80.23:8560/api/document/product/prodStorage/list',
+    dataUrl: '/api/document/product/prodStorage/list',
     initComponent: function() {
         var me = this;
         Ext.apply(this, {
             searchField: [{
                 xtype: 'textfield',
                 name: 'keyword',
-                columnWidth: 0.15,
-                emptyText:'请输入物料编号/名称/型号/品牌'
+                columnWidth: 0.2,
+                emptyText:'请输入物料编号/名称/型号/品牌',
+                getCondition: function(value) {
+                    return  ' (prodCode like\'%' + value + '%\' or prodBrand like \'%'+value+'%\' or prodName like \'%'+value+'%\' or prodSpeccode like \'%'+value+'%\') ';
+                }
             }, {
                 xtype: 'combobox',
-                name: 'uploaded',
+                name: 'b2bStatus',
                 fieldLabel: '上传状态',
                 queryMode: 'local',
                 displayField: 'name',
                 valueField: 'value',
                 emptyText :'全部',
-                editable:false,
+                value: 0,
+                editable:true,
                 labelWidth: 80,
                 columnWidth: 0.2,
                 store: Ext.create('Ext.data.ArrayStore', {
                     fields: ['name', 'value'],
                     data: [
                         ["全部", "all"],
-                        ["未上传", "0"],
-                        ["已上传", "1"]
+                        ["待上传", "待上传"],
+                        ["已上传", "已上传"]
                     ]
-                })
+                }),
+                getCondition: function(v) {
+                    if(v == 'all') {
+                        return '1=1'
+                    }else {
+                        return 'ifnull(b2bStatus,\'待上传\')=' + '\'' + v + '\'';
+                    }
+                }
             }, {
                 xtype: 'checkbox',
-                name: 'self',
-                fieldLabel: '我的产品库'
+                name: 'status',
+                fieldLabel: '我的产品库',
+                columnWidth: 0.2,
+                getCondition: function(v) {
+                    if(v) {
+                        return 'status=' + Number(v);
+                    }else {
+                        return '1=1';
+                    }
+                }
+            }],
+
+            toolButtons: [{
+                xtype: 'button',
+                text: '上传公司产品',
+                handler: function() {
+                    me.onUpload();
+                }
             }],
         
             gridConfig: {
                 dataUrl: me.dataUrl,
-                rootProperty: 'data.content',
-                totalProperty: 'data.totalElements',
                 actionColumn: [],
                 selModel: {
                     type: 'cellmodel'
@@ -59,7 +82,7 @@ Ext.define('saas.view.sale.business.Product', {
                 }],
                 columns : [{
                     text: '物料编号',
-                    dataIndex: 'custName',
+                    dataIndex: 'prodCode',
                     width: 120
                 }, {
                     text: '品牌',
@@ -82,77 +105,72 @@ Ext.define('saas.view.sale.business.Product', {
                     dataIndex: 'prodUnit'
                 }, {
                     text: '上传状态',
-                    dataIndex: 'needQty'
+                    dataIndex: 'b2bStatus',
+                    renderer: function(v, m, r) {
+                        return v || '待上传';
+                    }
                 }, {
                     text: '我的产品',
-                    dataIndex: 'startDate'
+                    dataIndex: 'status',
+                    xtype: 'actioncolumn',
+                    align : 'center',
+                    items: [{
+                        iconCls:'',
+                        getClass: function(v, meta, rec) {
+                            if(rec.get('status')){
+                                return 'x-grid-checkcolumn-checked-btn';
+                            }else{
+                                return 'x-grid-checkcolumn-btn';
+                            }
+                        },
+                        handler: function(view, rowIndex, colIndex) {
+                            var rec = view.getStore().getAt(rowIndex);
+                            //  禁用/启用
+                            var grid = this.ownerCt.ownerCt;
+                            var params = {
+                                prodId: rec.get('prodId'),
+                                prodCode: rec.get('prodCode'),
+                                operate: new Number(!rec.get('status'))
+                            };
+                            grid.setLoading(true);
+                            saas.util.BaseUtil.request({
+                                url: 'http://10.1.80.23:8560/api/document/product/prodStorage/saler',
+                                params: JSON.stringify(params),
+                                method: 'POST',
+                            })
+                            .then(function(localJson) {
+                                grid.setLoading(false);
+                                if(localJson.success){
+                                    saas.util.BaseUtil.showSuccessToast('操作成功');
+                                    grid.store.load();
+                                }
+                            })
+                            .catch(function(e) {
+                                grid.setLoading(false);
+                                saas.util.BaseUtil.showErrorToast('操作失败: ' + e.message);
+                            });
+                        }
+                    }]
                 }]
             },
         });
         this.callParent(arguments);
     },
 
-    /**
-     * 处理部分字段值
-     */
-    getConditionValue: function (field, value) {
-        var me = this,
-            xtypes = field.getXTypes().split('/'),
-            conditionValue;
-        if (me.isContainsAny(xtypes, ['datefield'])) {
-            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
-        } else if (me.isContainsAny(xtypes, ['conmonthfield'])) {
-            var from = value.from,
-                to = value.to;
-
-            conditionValue = from + ',' + to;
-        } else if (me.isContainsAny(xtypes, ['condatefield'])) {
-            var from = value.from,
-                to = value.to;
-
-            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d 00:00:00') + ',' + Ext.Date.format(new Date(to), 'Y-m-d 23:59:59');
-        } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
-            conditionValue = value;
-        } else if (me.isContainsAny(xtypes, ['combobox', 'combo'])) {
-            conditionValue = value;
-        } else if (me.isContainsAny(xtypes, ['multicombo'])) {
-            conditionValue = value.map ? value.map(function (v) {
-                return v.value;
-            }).join(',') : '';
-        } else {
-            conditionValue = value;
-        }
-
-        return conditionValue;
+    onUpload: function() {
+        var me = this;
+        me.setLoading(true);
+        saas.util.BaseUtil.request({
+            url: '/api/document/product/b2b/upload',
+            method: 'POST',
+        }).then(function(res) {
+            me.setLoading(false);
+            saas.util.BaseUtil.showSuccessToast('上传成功');
+            me.refresh();
+        }).catch(function(e) {
+            me.setLoading(false);
+            saas.util.BaseUtil.showErrorToast('上传失败: ' + e.message);
+        });
     },
 
-    getExtraParams: function(store, op, condition) {
-        var temp = {};
-
-        for(let x = 0; x < condition.length; x++) {
-            let c = condition[x];
-            if(c.field == 'keyword') {
-                temp.keyword = c.value;
-            }else if(c.field == 'date') {
-                temp.fromDate = new Date(c.value.split(',')[0]).getTime();
-                temp.endDate = new Date(c.value.split(',')[1]).getTime();
-            }else if(c.field == 'quoted') {
-                temp.quoted = c.value == 'all' ? null : c.value;
-            }else if(c.field == 'closed') {
-                // temp.endDate = c.value == 'all' ? null : (
-                //     c.value == '0' ? 
-                // );
-            }
-        }
-        let obj = {
-            pageNumber: store.exportNumber?store.exportNumber:op._page,
-            pageSize: store.exportPageSize?store.exportPageSize:store.pageSize
-        };
-        for(let k in temp) {
-            if(!!temp[k]) {
-                obj[k] = temp[k];
-            }
-        }
-        return obj;
-     },
 });

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

@@ -223,7 +223,7 @@ Ext.define('saas.view.sys.invitation.DataList', {
                         if (Ext.isEmpty(condition)) {
                             condition = [];
                         }
-                        var _localStorage = Ext.decode(localStorage.getItem('app-state-session'));
+                        var _localStorage = Ext.decode(sessionStorage.getItem('app-state-session'));
                         var nowCompanyId = _localStorage.account.companyId;
                         condition.push({
                             type:'condition',

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

@@ -1,445 +1,106 @@
-/**
- * Created by zhouy on 2018/10/18.
- */
-Ext.define('saas.view.sys.maxnumbers.DataList', {
-    extend: 'Ext.grid.Panel',
+Ext.define('saas.view.sys.maxnumbers.DataList1', {
+    extend: 'saas.view.core.base.BasePanel',
     xtype: 'sys-maxnumbers-datalist',
+
     controller: 'sys-maxnumbers-datalist',
     viewModel: 'sys-maxnumbers-datalist',
-    autoScroll: true,
-    frame:true,
-    layout:'fit',
-    
-    dataUrl:'/api/commons/number/list',                 
-    deleteUrl:'/api/commons/number/delete/',
-
-    plugins: [{
-        ptype: 'menuclipboard'
-    }],
-
-    tbar: [{
-        width: 110,
-        name: 'mn_name',
-        xtype: 'textfield',
-        emptyText : '单据名称',
-        enableKeyEvents: true,
-        listeners: {
-            keydown: {
-                fn: function(th, e, eOpts) {
-                    if(e.keyCode == 13) {
-                        var grid = th.up('grid');
-                        grid.condition = grid.getConditions();
-                        grid.store.loadPage(1);
-                    }
-                }
-            }
-        }
-    },{
-        width: 110,
-        name: 'mn_leadcode',
-        xtype: 'textfield',
-        emptyText : '单据前缀',
-        enableKeyEvents: true,
-        listeners: {
-            keydown: {
-                fn: function(th, e, eOpts) {
-                    if(e.keyCode == 13) {
-                        var grid = th.up('grid');
-                        grid.condition = grid.getConditions();
-                        grid.store.loadPage(1);
-                    }
-                }
-            }
-        }
-    },{
-        cls:'x-formpanel-btn-blue',
-        xtype:'button',
-        text:'查询',
-        listeners: {
-            click:function(b){
-                var grid = b.ownerCt.ownerCt;
-                grid.condition = grid.getConditions();
-                grid.store.loadPage(1);
-            }
-        }
-    },'->',{
-        cls:'x-formpanel-btn-blue',
-        xtype:'button',
-        text:'新增',
-        hidden:true,
-        listeners: {
-            click: function(){
-                var form = this.ownerCt.ownerCt;
-                var grid = this.ownerCt.ownerCt.items.items[0].grid;
-                this.dialog = form.getController().getView().add({
-                    xtype: 'sys-maxnumbers-window',
-                    bind: {
-                        title: '新增单据编码规则'
-                    },
-                    _parent:form,
-                    _combo:grid,
-                    record:null,
-                    session: true
-                });
-                this.dialog.show();
-            }
-        }
-    }],
+    viewName: 'sys-maxnumbers-datalist',
 
-    columns : [{
-        text : 'id', 
-        width : 0, 
-        dataIndex : 'id', 
-        xtype : 'numbercolumn', 
-        hidden:true
-    },{
-        text : '单据名称', 
-        width : 200.0, 
-        dataIndex : 'mn_name', 
-        xtype : '', 
-    }, 
-    {
-        text : '单据前缀', 
-        dataIndex : 'mn_leadcode', 
-        width : 110.0, 
-        xtype : '', 
-    }, 
-    {
-        text : '单据规则', 
-        dataIndex : 'mn_rule', 
-        width : 150.0,
-        renderer: function(v) {
-            var o = {
-                yyyymmdd: '年月日',
-                yyyymm: '年月',
-                无: '无'
-            }
-            return o[v];
-        },
-    },{
-        text : '流水长度', 
-        dataIndex : 'mn_number',
-        xtype: 'numbercolumn',
-        width : 110.0,
-        renderer: function(v) {
-            return saas.util.BaseUtil.numberFormat(v, 0, false);
-        }
-    }, {
-        dataIndex: '',
-        flex: 1
-    }],
-
-    dbSearchFields: [],
-    condition:'',
 
+    dataUrl: '/api/commons/number/list',
+    // deleteUrl:'/api/commons/number/delete/',
     initComponent: function() {
         var me = this;
-        if(me.columns){
-            var fields = me.columns.map(column => column.dataIndex);
-            me.columns = me.insertFirstColumn(me.columns);
-            me.store = Ext.create('Ext.data.Store',{
-                fields:fields,
-                autoLoad: true,
-                pageSize: 11,
-                data: [],
-                proxy: {
-                    timeout:8000,
-                    type: 'ajax',
-                    url: me.dataUrl,
-                    actionMethods: {
-                        read: 'GET'
-                    },
-                    reader: {
-                        type: 'json',
-                        rootProperty: 'data.list',
-                        totalProperty: 'data.total',
+        Ext.apply(this, {
+            searchField: [{
+                xtype: 'textfield',
+                name: 'mn_name',
+                columnWidth: 0.2,
+                emptyText:'请输入单据名称'
+            }, {
+                name: 'mn_leadcode',
+                xtype: 'textfield',
+                emptyText : '单据前缀'
+            }],
+        
+            gridConfig: {
+                dataUrl: me.dataUrl,
+                deleteUrl:'/api/commons/number/delete/',
+                actionColumn: [{
+                    xtype:'actioncolumn',
+                    width:50,
+                    dataIndex:'actioncolumn',
+                    text:'操作',
+                    align: 'center',
+                    items: [{
+                        tooltip: '编辑',
+                        iconCls: 'x-fa fa-pencil fa-fw',
+                        scope:this
+                    }]
+                }],
+                onItemClick: function(form, grid, record,a,index,c) {
+                    var classList = c.target.classList.value;
+                    if(classList.indexOf('fa-pencil')>-1){
+                        var form = this.ownerCt;
+                        this.dialog = form.getController().getView().add({
+                            xtype: 'sys-maxnumbers-window',
+                            bind: {
+                                title: '修改单据编码规则'
+                            },
+                            _parent:form,
+                            _combo:this,
+                            record:record,
+                            session: true
+                        });
+                        this.dialog.show();
                     }
                 },
-                listeners: {
-                    beforeload: function (store, op) {
-                        var condition = me.condition;
-                        if (Ext.isEmpty(condition)) {
-                            condition = '';
+                selModel: {
+                    type: 'cellmodel'
+                },
+                hiddenTools: true,
+                data: [{
+
+                }],
+                columns : [{
+                    text : 'id', 
+                    width : 0, 
+                    dataIndex : 'id', 
+                    xtype : 'numbercolumn', 
+                    hidden:true
+                },{
+                    text : '单据名称', 
+                    width : 200.0, 
+                    dataIndex : 'mn_name', 
+                }, 
+                {
+                    text : '单据前缀', 
+                    dataIndex : 'mn_leadcode', 
+                    width : 110.0, 
+                }, 
+                {
+                    text : '单据规则', 
+                    dataIndex : 'mn_rule', 
+                    width : 150.0,
+                    renderer: function(v) {
+                        var o = {
+                            yyyymmdd: '年月日',
+                            yyyymm: '年月',
+                            无: '无'
                         }
-                        Ext.apply(store.proxy.extraParams, {
-                            number: op._page,
-                            size: store.pageSize,
-                            condition: JSON.stringify(condition)
-                        });
-                    }
-                }
-            });
-
-            Ext.apply(me, {
-                dockedItems:[{
-                    xtype: 'pagingtoolbar',
-                    dock: 'bottom',
-                    displayInfo: true,
-                    store: me.store
-                }]
-            });
-        }
-        me.callParent(arguments);
-    },
-
-    onVastDeal:function(url,type){
-        var form = this.ownerCt;
-        var grid = this;
-        var data = grid.getGridSelected(type);
-        if(!data){
-            saas.util.BaseUtil.showErrorToast('请勾选符合条件的行进行操作。');
-            return false;
-        }
-        if(data&&data.length>0){
-            var params = JSON.stringify({baseDTOs:data});
-            saas.util.BaseUtil.request({
-                    url: url,
-                    params: params,
-                    method: 'POST',
-                    async:false
-                })
-                .then(function() {
-                    saas.util.BaseUtil.showSuccessToast('操作成功');
-                    grid.store.load();
-                })
-                .catch(function(e) {
-                    saas.util.BaseUtil.showErrorToast('操作失败: ' + e.message);
-                });
-        }else{
-            saas.util.BaseUtil.showErrorToast('请勾选至少一条明细。');
-        }
-    },
-
-    listeners:{
-        boxready: function(grid, width, height, eOpts) {
-            var store = grid.getStore(),
-            gridBodyBox = grid.body.dom.getBoundingClientRect(),
-            gridBodyBoxHeight = gridBodyBox.height;
-
-            var pageSize = Math.floor(gridBodyBoxHeight / 32);
-
-            store.setPageSize(pageSize);
-
-            grid.ownerCt.el.dom.style.left = '8px';
-            grid.el.dom.style.padding = '0px'
-        },
-        itemClick: function(view,record,a,index,c) {
-            var classList = c.target.classList.value;
-            var grid = this;
-            if(classList.indexOf('fa-pencil')>-1){
-                var form = this.ownerCt;
-                this.dialog = form.getController().getView().add({
-                    xtype: 'sys-maxnumbers-window',
-                    bind: {
-                        title: '修改单据编码规则'
+                        return o[v];
                     },
-                    _parent:form,
-                    _combo:this,
-                    record:record,
-                    session: true
-                });
-                this.dialog.show();
-            }else if(classList.indexOf('fa-trash-o')>-1){
-                //删除
-                var id = record.get('id');
-                if(id){
-                    saas.util.BaseUtil.request({
-                        url: grid.deleteUrl+id,
-                        method: 'POST',
-                    })
-                    .then(function(localJson) {
-                        if(localJson.success){
-                            //解析参数
-                            saas.util.BaseUtil.showSuccessToast('删除成功');
-                            view.ownerCt.store.load();
-                        }
-                    })
-                    .catch(function(e) {
-                        saas.util.BaseUtil.showErrorToast('删除失败: ' + e.message);
-                    });
-                }
-            }
-        }
-    },
-
-    insertFirstColumn:function(columns){
-        var me=this;
-        if(columns.length>0 && columns[0].xtype!='actioncolumn'){
-            return Ext.Array.insert(columns,0,[{
-                xtype:'actioncolumn',
-                width:50,
-                dataIndex:'actioncolumn',
-                text:'操作',
-                align: 'center',
-                items: [{
-                    tooltip: '编辑',
-                    iconCls: 'x-fa fa-pencil fa-fw',
-                    scope:this
+                },{
+                    text : '流水长度', 
+                    dataIndex : 'mn_number',
+                    xtype: 'numbercolumn',
+                    width : 110.0,
+                    renderer: function(v) {
+                        return saas.util.BaseUtil.numberFormat(v, 0, false);
+                    }
                 }]
-            }]);
-        }
-        return columns;
-    },
-
-    getGridSelected:function(type){
-        var isErrorSelect = false;
-        var checkField = this.statusCodeField;
-        var me = this,
-        items = me.selModel.getSelection(),
-        data = new Array() ;
-        Ext.each(items, function(item, index){
-            if(!Ext.isEmpty(item.data[me.idField])){
-                var o = new Object();
-                if(me.idField){
-                    o['id'] = item.data[me.idField];
-                }
-                if(me.codeField){
-                    o['code'] = item.data[me.codeField];
-                }
-                if(type&&type==item.data[checkField]){
-                    isErrorSelect = true
-                }
-                data.push(o);
-            }
+            },
         });
-        if(isErrorSelect){
-            return false;
-        }
-		return data;
-    },
-
-    /**
-     * 获得过滤条件
-     */
-    getConditions: function() {
-        var me = this,
-        tbar = me.getDockedItems()[0],
-        items = Ext.Array.filter(tbar.items.items, function(item) {
-            return !!item.name;
-        }),
-        conditions = [];
-        for(var i = 0; i < items.length; i++) {
-            var item = items[i];
-            var field = item.name,
-            func = item.getCondition,
-            value = item.value,
-            condition;
-
-            if(value&&value!=''){
-                if(typeof func == 'function') {
-                    condition = {
-                        type: 'condition',
-                        value: func(value)
-                    }
-                }else {
-                    var type = item.fieldType || me.getDefaultFieldType(item),
-                    operation = item.operation || me.getDefaultFieldOperation(item),
-                    conditionValue = me.getConditionValue(item, value);
-        
-                    if(!conditionValue) {
-                        continue;
-                    }
-                    condition = {
-                        type: type,
-                        field: field,
-                        operation: operation,
-                        value: conditionValue
-                    }
-                }
-                conditions.push(condition);
-            }
-        }
-
-        return conditions;
-    },
-
-    /**
-     * 只要arr1和arr2中存在相同项即返回真
-     */
-    isContainsAny: function (arr1, arr2) {
-        for (var i = 0; i < arr2.length; i++) {
-            var a2 = arr2[i];
-            if (!!arr1.find(function (a1) {
-                    return a1 == a2
-                })) {
-                return true;
-            }
-        }
-        return false;
-    },
-
-    getDefaultFieldType: function (field) {
-        var me = this,
-            xtypes = field.getXTypes().split('/'),
-            type;
-
-        if (me.isContainsAny(xtypes, ['numberfield'])) {
-            type = 'number';
-        } else if (me.isContainsAny(xtypes, ['datefield', 'condatefield', 'conmonthfield'])) {
-            type = 'date';
-        } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
-            type = 'enum';
-        } else if (me.isContainsAny(xtypes, ['combobox', 'multicombo', 'combo', 'radiofield', 'radio'])) {
-            type = 'enum';
-        } else {
-            type = 'string';
-        }
-
-        return type;
-    },
-
-    getDefaultFieldOperation: function (field) {
-        var me = this,
-            xtypes = field.getXTypes().split('/'),
-            operation;
-
-        if (me.isContainsAny(xtypes, ['numberfield', 'datefield', 'dbfindtrigger'])) {
-            operation = '=';
-        } else if (me.isContainsAny(xtypes, ['condatefield', 'conmonthfield'])) {
-            operation = 'between';
-        } else if (me.isContainsAny(xtypes, ['multidbfindtrigger', 'combobox', 'multicombo', 'combo'])) {
-            operation = 'in';
-        } else {
-            operation = 'like';
-        }
-
-        return operation;
-    },
-
-    /**
-     * 处理部分字段值
-     */
-    getConditionValue: function (field, value) {
-        var me = this,
-            xtypes = field.getXTypes().split('/'),
-            conditionValue;
-        if (me.isContainsAny(xtypes, ['datefield'])) {
-            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
-        } else if (me.isContainsAny(xtypes, ['conmonthfield'])) {
-            var from = value.from,
-                to = value.to;
-
-            conditionValue = from + ',' + to;
-        } else if (me.isContainsAny(xtypes, ['condatefield'])) {
-            var from = value.from,
-                to = value.to;
-
-            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d 00:00:00') + ',' + Ext.Date.format(new Date(to), 'Y-m-d 23:59:59');
-        } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
-            conditionValue = value;
-        } else if (me.isContainsAny(xtypes, ['combobox', 'combo'])) {
-            conditionValue = '\'' + value + '\'';
-        } else if (me.isContainsAny(xtypes, ['multicombo'])) {
-            conditionValue = value.map ? value.map(function (v) {
-                return '\'' + v.value + '\'';
-            }).join(',') : '';
-        } else {
-            conditionValue = value;
-        }
-
-        return conditionValue;
+        this.callParent(arguments);
     }
-
-})
-
-
+});

+ 0 - 5
frontend/saas-web/app/view/sys/maxnumbers/DataListController.js

@@ -2,9 +2,4 @@ Ext.define('saas.view.sys.maxnumbers.DataListController', {
     extend: 'saas.view.core.base.BasePanelController',
     alias: 'controller.sys-maxnumbers-datalist',
 
-    init: function (form) {
-        var me = this;
-        this.control({
-        });
-    }
 });

+ 17 - 17
frontend/saas-web/app/view/viewport/ViewportController.js

@@ -42,23 +42,6 @@ Ext.define('saas.view.viewport.ViewportController', {
         if(!Ext.isChrome && !Ext.isFirefox) {
             saas.util.BaseUtil.showConfirm('温馨提示', '为了更好地呈现页面效果,推荐使用Chrome浏览器或火狐浏览器');
         }
-        //读取系统参数
-        saas.util.BaseUtil.request({url:'/api/commons/configs/list'})
-        .then(function(res) {
-            if(res.success) {
-                var list = res.data.list;
-                if(list.length>0){
-                    var d = {};
-                    Ext.each(list, function(item, index){
-                        d[item.code] = item.data;
-                    });
-                    me.getViewModel().setData(d)
-                }
-            }
-        })
-        .catch(function(e) {
-            console.error(e);
-        });
     },
 
     showView: function(xtype) {
@@ -82,6 +65,23 @@ Ext.define('saas.view.viewport.ViewportController', {
 
     showMain: function() {
         var me = this;
+        //读取系统参数
+        saas.util.BaseUtil.request({url:'/api/commons/configs/list'})
+        .then(function(res) {
+            if(res.success) {
+                var list = res.data.list;
+                if(list.length>0){
+                    var d = {};
+                    Ext.each(list, function(item, index){
+                        d[item.code] = item.data;
+                    });
+                    me.getViewModel().setData(d)
+                }
+            }
+        })
+        .catch(function(e) {
+            console.error(e);
+        });
         me.showView('main');
     },
 

+ 5 - 0
frontend/saas-web/resources/json/navigation.json

@@ -70,6 +70,11 @@
             "text": "销售退货单",
             "addType": "sale-salein-formpanel",
             "viewType": "sale-salein-querypanel"
+        }, {
+            "b2b":true,
+            "id": "sale-business-product",
+            "text": "产品库",
+            "viewType": "sale-business-product"
         }, {
             "b2b":true,
             "id": "sale-business-business",

+ 2 - 2
frontend/saas-web/set-token.html

@@ -6,9 +6,9 @@
         }
         var storeKey = 'app-state-session';
         if (e.data) {
-            localStorage.setItem(storeKey, e.data);
+            sessionStorage.setItem(storeKey, e.data);
         } else {
-            localStorage.removeItem(storeKey);
+            sessionStorage.removeItem(storeKey);
         }
         window.parent.postMessage("success", "*");
     });

+ 7 - 7
frontend/web/src/utils/auth.js

@@ -2,12 +2,12 @@ const authKey = 'Authorization'
 const expireAt = 'Authorization-Expire-At'
 
 function setExpire(expire) {
-  localStorage.setItem(expireAt, new Date().getTime() + expire * 1000)
+  sessionStorage.setItem(expireAt, new Date().getTime() + expire * 1000)
 }
 
 // 是否过期
 function isExpire() {
-  const expire = localStorage.getItem(expireAt)
+  const expire = sessionStorage.getItem(expireAt)
   if (expire) {
     return Number(expire) <= new Date().getTime()
   }
@@ -16,18 +16,18 @@ function isExpire() {
 
 export function getToken() {
   if (isExpire()) {
-    localStorage.removeItem(expireAt)
-    localStorage.removeItem(authKey)
+    sessionStorage.removeItem(expireAt)
+    sessionStorage.removeItem(authKey)
     return null
   }
-  return localStorage.getItem(authKey)
+  return sessionStorage.getItem(authKey)
 }
 
 export function setToken(token, expire) {
   setExpire(expire)
-  return localStorage.setItem(authKey, token)
+  return sessionStorage.setItem(authKey, token)
 }
 
 export function removeToken() {
-  return localStorage.removeItem(authKey)
+  return sessionStorage.removeItem(authKey)
 }