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

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

chenw 7 лет назад
Родитель
Сommit
94f99384b0
23 измененных файлов с 431 добавлено и 101 удалено
  1. 3 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/CustomerCheckViewMapper.java
  2. 0 3
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/SubledgerMapper.java
  3. 2 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/VendorAcountViewMapper.java
  4. 10 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/CustomerCheckView.java
  5. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VendOrCustAdd.java
  6. 56 37
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/MoneyReportServiceImpl.java
  7. 19 0
      applications/money/money-server/src/main/resources/mapper/CustomerCheckViewMapper.xml
  8. 2 2
      applications/money/money-server/src/main/resources/mapper/VendorAcountViewMapper.xml
  9. 1 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  10. 1 1
      frontend/saas-portal-web/src/components/conenter/addgongsi.vue
  11. 2 2
      frontend/saas-portal-web/src/components/conenter/company.vue
  12. 1 1
      frontend/saas-portal-web/src/components/conenter/qiyexiangxi.vue
  13. 4 2
      frontend/saas-portal-web/static/css/gongsi.css
  14. 3 2
      frontend/saas-portal-web/static/css/main.css
  15. 52 0
      frontend/saas-web/app/view/core/base/BasePanel.scss
  16. 159 22
      frontend/saas-web/app/view/core/base/ImportWindow.js
  17. 16 16
      frontend/saas-web/app/view/core/query/QueryGridPanel.js
  18. 1 1
      frontend/saas-web/app/view/core/query/QueryPanel.js
  19. 51 0
      frontend/saas-web/app/view/document/kind/ChildForm.js
  20. 43 4
      frontend/saas-web/app/view/money/report/CustomerCheck.js
  21. 1 1
      frontend/saas-web/app/view/stock/stockamount/DataList.js
  22. 2 2
      frontend/saas-web/app/view/sys/account/DataList.js
  23. 1 1
      frontend/saas-web/app/view/sys/baseconfig/FormPanel.js

+ 3 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/CustomerCheckViewMapper.java

@@ -2,6 +2,7 @@ package com.usoftchina.saas.money.mapper;
 
 import com.usoftchina.saas.money.po.AcountbalanceView;
 import com.usoftchina.saas.money.po.CustomerCheckView;
+import com.usoftchina.saas.money.po.VendOrCustAdd;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -9,4 +10,6 @@ import java.util.List;
 public interface CustomerCheckViewMapper {
     List<CustomerCheckView> selectByCondition(@Param("con") String con, @Param("companyId") Long companyId);
     String selectCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
+    VendOrCustAdd selectCustAdd(@Param("sl_custid") Integer sl_vendid, @Param("sl_ym") Integer sl_ym, @Param("companyId") Long companyId);
+    Integer getId(@Param("code") String code, @Param("companyId") Long companyId);
 }

+ 0 - 3
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/SubledgerMapper.java

@@ -1,10 +1,7 @@
 package com.usoftchina.saas.money.mapper;
 
-import com.usoftchina.saas.money.po.Recbalance;
 import com.usoftchina.saas.money.po.Subledger;
-import com.usoftchina.saas.money.po.VendorAdd;
 import org.apache.ibatis.annotations.Param;
-import org.springframework.web.bind.annotation.PostMapping;
 
 import java.util.List;
 

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/VendorAcountViewMapper.java

@@ -1,7 +1,7 @@
 package com.usoftchina.saas.money.mapper;
 
 import com.usoftchina.saas.money.po.VendorAcountView;
-import com.usoftchina.saas.money.po.VendorAdd;
+import com.usoftchina.saas.money.po.VendOrCustAdd;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -9,6 +9,6 @@ import java.util.List;
 public interface VendorAcountViewMapper {
     List<VendorAcountView> selectByCondition(@Param("con")String con, @Param("companyId")Long companyId);
     String selectCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
-    VendorAdd selectVendAdd(@Param("sl_vendid") Integer sl_vendid, @Param("sl_ym") Integer sl_ym, @Param("companyId") Long companyId);
+    VendOrCustAdd selectVendAdd(@Param("sl_vendid") Integer sl_vendid, @Param("sl_ym") Integer sl_ym, @Param("companyId") Long companyId);
     Integer getId(@Param("code") String code, @Param("companyId") Long companyId);
 }

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

@@ -35,6 +35,16 @@ public class CustomerCheckView {
 
     private Double pd_nettotal;
 
+    private Long companyId;
+
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
+
     public String getPi_inoutno() {
         return pi_inoutno;
     }

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VendorAdd.java → applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VendOrCustAdd.java

@@ -4,7 +4,7 @@ package com.usoftchina.saas.money.po;
  * @author heqw
  * @date 2018/11/23 11:44
  **/
-public class VendorAdd {
+public class VendOrCustAdd {
     private Double beginamount;
     private Double nowamount;
     private Double nowpay;

+ 56 - 37
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/MoneyReportServiceImpl.java

@@ -1,22 +1,19 @@
 package com.usoftchina.saas.money.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
-import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonArrayFormatVisitor;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.money.mapper.*;
+import com.usoftchina.saas.money.po.CustomerCheckView;
 import com.usoftchina.saas.money.po.VendorAcountView;
-import com.usoftchina.saas.money.po.VendorAdd;
+import com.usoftchina.saas.money.po.VendOrCustAdd;
 import com.usoftchina.saas.money.service.MoneyReportService;
 import com.usoftchina.saas.page.PageRequest;
-import com.usoftchina.saas.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
-import springfox.documentation.spring.web.json.Json;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -101,41 +98,36 @@ public class MoneyReportServiceImpl implements MoneyReportService {
         }
 
         String res = null;
-        VendorAdd vendorAdd = new VendorAdd();
+        VendOrCustAdd vendOrCustAdd = new VendOrCustAdd();
         List<Map<String, Double>> list1 = new ArrayList<>();
         if ("Supplier".equals(type)) {
             list = vendorAcountViewMapper.selectByCondition(con, companyId);
-//            if (!StringUtils.isEmpty(calculateFieldsSql)) {
-//                res = vendorAcountViewMapper.selectCalculateFields(calculateFieldsSql, con, companyId);
-//            }
-
-            VendorAcountView vendorAcountView = (VendorAcountView) list.get(0);
-            Integer vid = new Integer(0);
-            if (list.size() >0){
+            if (list.size() >0) {
+                VendorAcountView vendorAcountView = (VendorAcountView) list.get(0);
+                Integer vid = new Integer(0);
                 vid = vendorAcountViewMapper.getId(vendorAcountView.getPi_vendcode(), Long.valueOf(vendorAcountView.getCompanyId()));
+                Integer ym = Integer.valueOf(req.getYm());
+                vendOrCustAdd = vendorAcountViewMapper.selectVendAdd(vid, ym, Long.valueOf(vendorAcountView.getCompanyId()));
+                vendOrCustAdd.setNowbalance((vendOrCustAdd.getBeginamount() == null ? new Double(0) : vendOrCustAdd.getBeginamount())
+                        + (vendOrCustAdd.getNowamount() == null ? new Double(0) : vendOrCustAdd.getNowamount())
+                        - (vendOrCustAdd.getNowpay() == null ? new Double(0) : vendOrCustAdd.getNowpay()));
+                //封装成list
+                Map<String, Double> map1 = new HashMap<>();
+                map1.put("beginamount", vendOrCustAdd.getBeginamount());
+                list1.add(map1);
+
+                Map<String, Double> map2 = new HashMap<>();
+                map2.put("nowamount", vendOrCustAdd.getNowamount());
+                list1.add(map2);
+
+                Map<String, Double> map3 = new HashMap<>();
+                map3.put("nowpay", vendOrCustAdd.getNowpay());
+                list1.add(map3);
+
+                Map<String, Double> map4 = new HashMap<>();
+                map4.put("nowbalance", vendOrCustAdd.getNowbalance());
+                list1.add(map4);
             }
-            Integer ym = Integer.valueOf(req.getYm());
-            vendorAdd = vendorAcountViewMapper.selectVendAdd(vid, ym, Long.valueOf(vendorAcountView.getCompanyId()));
-            vendorAdd.setNowbalance((vendorAdd.getBeginamount() == null ? new Double(0) : vendorAdd.getBeginamount())
-                    + (vendorAdd.getNowamount() == null ? new Double(0) : vendorAdd.getNowamount())
-                    - (vendorAdd.getNowpay() == null ? new Double(0) : vendorAdd.getNowpay()));
-            //封装成list
-            Map<String, Double> map1 = new HashMap<>();
-            map1.put("beginamount", vendorAdd.getBeginamount());
-            list1.add(map1);
-
-            Map<String, Double> map2 = new HashMap<>();
-            map2.put("nowamount" ,vendorAdd.getNowamount());
-            list1.add(map2);
-
-            Map<String, Double> map3 = new HashMap<>();
-            map3.put("nowpay" ,vendorAdd.getNowpay());
-            list1.add(map3);
-
-            Map<String, Double> map4 = new HashMap<>();
-            map4.put("nowbalance",vendorAdd.getNowbalance());
-            list1.add(map4);
-
         } else if("payDetail".equals(type)){
             list = paydetailViewMapper.selectByCondition(con, companyId);
             if (!StringUtils.isEmpty(calculateFieldsSql)) {
@@ -153,8 +145,35 @@ public class MoneyReportServiceImpl implements MoneyReportService {
             }
         }else if ("customercheck".equals(type)){
             list = customerCheckViewMapper.selectByCondition(con, companyId);
-            if (!StringUtils.isEmpty(calculateFieldsSql)) {
-                res = customerCheckViewMapper.selectCalculateFields(calculateFieldsSql, con, companyId);
+//            if (!StringUtils.isEmpty(calculateFieldsSql)) {
+//                res = customerCheckViewMapper.selectCalculateFields(calculateFieldsSql, con, companyId);
+//            }
+            if (list.size() >0) {
+                CustomerCheckView customerCheckView = (CustomerCheckView) list.get(0);
+                Integer vid = new Integer(0);
+
+                vid = customerCheckViewMapper.getId(customerCheckView.getPi_custcode(), Long.valueOf(customerCheckView.getCompanyId()));
+                Integer ym = Integer.valueOf(req.getYm());
+                vendOrCustAdd = customerCheckViewMapper.selectCustAdd(vid, ym, Long.valueOf(customerCheckView.getCompanyId()));
+                vendOrCustAdd.setNowbalance((vendOrCustAdd.getBeginamount() == null ? new Double(0) : vendOrCustAdd.getBeginamount())
+                        + (vendOrCustAdd.getNowamount() == null ? new Double(0) : vendOrCustAdd.getNowamount())
+                        - (vendOrCustAdd.getNowpay() == null ? new Double(0) : vendOrCustAdd.getNowpay()));
+                //封装成list
+                Map<String, Double> map1 = new HashMap<>();
+                map1.put("beginamount", vendOrCustAdd.getBeginamount());
+                list1.add(map1);
+
+                Map<String, Double> map2 = new HashMap<>();
+                map2.put("nowamount", vendOrCustAdd.getNowamount());
+                list1.add(map2);
+
+                Map<String, Double> map3 = new HashMap<>();
+                map3.put("nowpay", vendOrCustAdd.getNowpay());
+                list1.add(map3);
+
+                Map<String, Double> map4 = new HashMap<>();
+                map4.put("nowbalance", vendOrCustAdd.getNowbalance());
+                list1.add(map4);
             }
         }else if ("accountdetails".equals(type)){
             list = accountDetailsViewMapper.selectByCondition(con, companyId);

+ 19 - 0
applications/money/money-server/src/main/resources/mapper/CustomerCheckViewMapper.xml

@@ -45,4 +45,23 @@
         </where>
     </select>
 
+
+    <resultMap id="BaseAddMap" type="com.usoftchina.saas.money.po.VendOrCustAdd" >
+        <result column="beginamount" property="beginamount" jdbcType="DOUBLE" />
+        <result column="nowamount" property="nowamount" jdbcType="DOUBLE" />
+        <result column="nowpay" property="beginamount" jdbcType="DOUBLE" />
+    </resultMap>
+    <select id="selectCustAdd" resultMap="BaseAddMap">
+    select distinct a.sl_orderamount as beginamount, b.sl_orderamount as nowamount, c.sl_orderamount as nowpay FROM
+(select sl_orderamount,sl_custid,sl_ym, companyid from subledger where sl_kind = '期初余额') a
+left join (select sum(sl_orderamount) sl_orderamount,sl_custid,sl_ym from subledger where sl_kind = '出货单' or sl_kind = '销售退货单'
+group by sl_custid,sl_ym) b on a.sl_custid=b.sl_custid
+left join (select sum(sl_orderamount) sl_orderamount,sl_custid,sl_ym from subledger where sl_kind = '收款单' or sl_kind = '其他收入单'
+group by sl_custid,sl_ym) c on a.sl_custid=c.sl_custid
+ where a.sl_custid=#{sl_custid,jdbcType=INTEGER} and a.sl_ym=#{sl_ym, jdbcType=INTEGER} and a.companyid = #{companyId}
+  </select>
+
+    <select id="getId" resultType="java.lang.Integer">
+    select cu_id from customer where cu_code = #{code} and companyId = #{companyId}
+  </select>
 </mapper>

+ 2 - 2
applications/money/money-server/src/main/resources/mapper/VendorAcountViewMapper.xml

@@ -49,13 +49,13 @@
   </select>
 
 
-  <resultMap id="BaseAddMap" type="com.usoftchina.saas.money.po.VendorAdd" >
+  <resultMap id="BaseAddMap" type="com.usoftchina.saas.money.po.VendOrCustAdd" >
     <result column="beginamount" property="beginamount" jdbcType="DOUBLE" />
     <result column="nowamount" property="nowamount" jdbcType="DOUBLE" />
     <result column="nowpay" property="beginamount" jdbcType="DOUBLE" />
   </resultMap>
   <select id="selectVendAdd" resultMap="BaseAddMap">
-    select a.sl_orderamount as beginamount, b.sl_orderamount as nowamount, c.sl_orderamount as nowpay FROM
+    select distinct a.sl_orderamount as beginamount, b.sl_orderamount as nowamount, c.sl_orderamount as nowpay FROM
 (select sl_orderamount,sl_vendid,sl_ym, companyid from subledger where sl_kind = '期初余额') a
 left join (select sum(sl_orderamount) sl_orderamount,sl_vendid,sl_ym from subledger where sl_kind = '采购验收单' or sl_kind = '采购验退单'
 group by sl_vendid,sl_ym) b on a.sl_vendid=b.sl_vendid

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

@@ -407,7 +407,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         //检查转单状态
         String acceptstatus = purchase.getPu_acceptstatuscode();
 
-        if ("CLOSED".equals(acceptstatus)){
+        if (Status.CLOSE.name().equals(acceptstatus)){
             return Result.error(ExceptionCode.CLOSED_EXIST);
         }
         List<PurchaseDetail> purchaseDetails = purchasedetailMapper.selectByFK(id);

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

@@ -197,7 +197,7 @@ import VDistpicker from 'v-distpicker'
                 let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu}
                 if (name != '' && qyname != '' && this.qymingzi && this.isaddress && this.isname && this.isspaceName && this.isemail) {
                     this.$ajax({
-                        url: this.rul.api+"/api/account/accountCenter/companyAccount/save",//http://192.168.253.31:8560
+                        url: this.$url.api+"/api/account/accountCenter/companyAccount/save",//http://192.168.253.31:8560
                         method: 'post',
                         data: {
                             companyRegDTO:company,

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

@@ -122,7 +122,7 @@
             let token = String(mytoken.token);
             //企业列表
             this.$ajax({
-                    url: this.rul.api+"/api/account/accountCenter/company/list",
+                    url: this.$url.api+"/api/account/accountCenter/company/list",//http://192.168.253.31:8560
                     method: 'get',
                     params: {
                         mobile: mytoken.account.mobile
@@ -192,7 +192,7 @@
                 let token = this.mytoken.token;
                 const frame = window.frames[window.frames.length - 1];
                 this.$ajax({
-                    url: this.$url.api+'/api/auth/switch/company?companyId='+id,//http://192.168.253.31:8560
+                    url: this.$url.api+'/api/auth/switch/company?companyId='+id,
                     method :'get',
                     headers: {
                         "Authorization":token

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

@@ -166,7 +166,7 @@
                     let company = {'name':qyname,'address':address, 'id':companyId, 'type':qyindustry};
                     let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu};
                     this.$ajax({
-                        url: this.rul.api+"/api/account/accountCenter/companyAccount/update",//http://192.168.253.31:8560
+                        url: this.$url.api+"/api/account/accountCenter/companyAccount/update",//http://192.168.253.31:8560
                         method: 'post',
                         data: {
                             companyRegDTO:company,

+ 4 - 2
frontend/saas-portal-web/static/css/gongsi.css

@@ -1,7 +1,7 @@
 .xs:hover {
     cursor:pointer;
-    border-bottom: 1px solid #2868c8;
-    box-shadow: 1px 1px 1px #ccc;
+    /* border-bottom: 1px solid #2868c8; */
+    /* box-shadow: 1px 1px 1px #ccc; */
 }
 .dianji:hover{
     border-bottom: 1px solid #2868c8;
@@ -230,6 +230,8 @@
 .qy-xiangxi {
     width: 84% !important;
     margin-top: 10px;
+    font-size: 12px;
+    padding-left: 10px;
 }
 .tj-bqleft {
     float: left;

+ 3 - 2
frontend/saas-portal-web/static/css/main.css

@@ -326,10 +326,11 @@ main > section {
     width: 100%;
     padding: 0;
     margin: 0;
+    margin-top: 100px;
 }
 .ts-box {
     overflow: hidden;
-    margin-top: 50px;
+    /* margin-top: 50px; */
     position: relative;
 }
 .ts-minimg {
@@ -743,7 +744,7 @@ main > section {
 }
 
 .section-title {
-    margin-bottom: 80px;
+    /* margin-bottom: 80px; */
 }
 
 .section-title.white {

+ 52 - 0
frontend/saas-web/app/view/core/base/BasePanel.scss

@@ -32,4 +32,56 @@
 .x-basepanel-pagingtoolbar{
     border:1px solid #abdaff !important;
     border-top-width: 0 !important;
+}
+
+.x-btn-import-middle:after{
+    content: ' ';
+    display: block;
+    width: 0;
+    height: 0;
+    border-style: solid;
+    border-width: 15px 0 16px 18px;
+    border-color: transparent transparent transparent #34baf6;
+    position: absolute;
+    left: 0;
+    top: 0;
+}
+
+.x-btn-import-middle-next:after{
+    content: ' ';
+    display: block;
+    width: 0;
+    height: 0;
+    border-style: solid;
+    border-width: 15px 0 16px 18px;
+    border-color: transparent transparent transparent #fff;
+    position: absolute;
+    left: 0;
+    top: 0;
+}
+
+.x-btn-import-first{
+    .x-btn-wrap{
+        .x-btn-button{
+          .x-btn-inner{
+            color:#fff !important
+          }
+        }
+    }
+}
+
+.x-btn-import-last{
+    .x-btn-wrap{
+        .x-btn-button{
+          .x-btn-inner{
+            color:#34baf6 !important
+          }
+        }
+    }
+}
+
+.x-btn-import-last{
+    .x-btn.x-btn-disabled.x-btn-default-toolbar-small .x-btn-inner-default-toolbar-small {
+        color: #34baf6;
+    }
 }

+ 159 - 22
frontend/saas-web/app/view/core/base/ImportWindow.js

@@ -4,35 +4,172 @@ Ext.define('saas.view.core.base.ImportWindow', {
     layout:'fit',
 
     requires: [
+        'Ext.form.field.File',
         'Ext.container.ButtonGroup'
     ],
 
-    items:[{
-        xtype:'panel',
-        layout:'column',
-        defaults:{
-            columnWidth:1
-        },
-        tbar:['->',{
-            width:300,
-            text:'下载模板并填写'
-        },{
-            width:300,
-            text:'上传导入文件'
-        },'->'],
-        items:[{
-            xtype:'container',
-            html:'asddddddddddddddddddddd',
-        },{
-            xtype:'fieldset',
-            items:[{
-                text:'asddddddddddddddddddddd'
-            }]
-        }]
+    bbar:['->',{
+        hidden:true,
+        name:'prev',
+        text:'上一步',
+        handler:function(b){
+            var p = this.ownerCt.ownerCt.items.items[0];
+            var tbar = p.dockedItems.items[0];
+            //first
+            var first = tbar.down('[name=first]').el.dom;
+            first.classList.add('x-btn-import-first');
+            first.style.background = '#34baf6';
+            first.childNodes[0].childNodes[0].childNodes[1].style.color = '#fff';
+            //middle
+            var middle = tbar.down('[name=middle]').el.dom;
+            middle.classList.add('x-btn-import-middle');
+            middle.classList.remove('x-btn-import-middle-next');
+            middle.style.background = '#fff';
+            //last
+            var last = tbar.down('[name=last]').el.dom;
+            last.classList.add('x-btn-import-last');
+            last.style.background = '#fff';
+            last.childNodes[0].childNodes[0].childNodes[1].style.color = '#34baf6';
+            //按钮逻辑
+            b.hide();
+            b.ownerCt.down('[name=next]').show();
+            b.ownerCt.down('[name=over]').hide();
+            //字段逻辑
+            p.down('[name=download]').show();
+            p.down('[name=upload]').hide();
+            p.down('[name=detail]').show();
+            p.down('[name=message]').hide();
+        }
+    },{
+        name:'next',
+        text:'下一步',
+        handler:function(b){
+            var p = this.ownerCt.ownerCt.items.items[0];
+            var tbar = p.dockedItems.items[0];
+            //first
+            var first = tbar.down('[name=first]').el.dom;
+            first.classList.remove('x-btn-import-first');
+            first.style.background = '#fff';
+            first.childNodes[0].childNodes[0].childNodes[1].style.color = '#34baf6';
+            //middle
+            var middle = tbar.down('[name=middle]').el.dom;
+            middle.classList.remove('x-btn-import-middle');
+            middle.classList.add('x-btn-import-middle-next');
+            middle.style.background = '#34baf6';
+            //last
+            var last = tbar.down('[name=last]').el.dom;
+            last.classList.remove('x-btn-import-last');
+            last.style.background = '#34baf6';
+            last.childNodes[0].childNodes[0].childNodes[1].style.color = '#fff';
+            //按钮逻辑
+            b.hide();
+            b.ownerCt.down('[name=prev]').show();
+            b.ownerCt.down('[name=over]').show();
+            //字段逻辑
+            p.down('[name=download]').hide();
+            p.down('[name=upload]').show();
+            p.down('[name=detail]').hide();
+            p.down('[name=message]').show();
+        }
+    },{
+        hidden:true,
+        name:'over',
+        text:'完成',
+        handler:function(b){
+            b.ownerCt.ownerCt.close()
+        }
+    },{
+        name:'close',
+        text:'关闭',
+        handler:function(b){
+            b.ownerCt.ownerCt.close()
+        }
     }],
 
     initComponent: function() {
         var me = this;
+        Ext.apply(me, {
+            items:[{
+                cls:'x-panel-import',
+                padding:'10px 100px 10px 100px',
+                xtype:'panel',
+                layout:'vbox',
+                tbar:['->',{
+                    name:'first',
+                    cls:'x-btn-import-first',
+                    style:'background: #34baf6;border-color: #35baf6;    opacity: 1;',
+                    focusable:false,
+                    disabled:true,
+                    width:300,
+                    text:'下载模板并填写',
+                },{
+                    name:'middle',
+                    disabled:true,
+                    focusable:false,
+                    style:'width: 20px;margin: 0px;margin-left: -16px;border-width: 1px 0px;min-width: 0px;border-style: solid;border-color: rgb(53, 186, 246);    opacity: 1;    background-color: #fff;',
+                    width:20,
+                    cls:'x-btn-import-middle'
+                },{
+                    name:'last',
+                    disabled:true,
+                    cls:'x-btn-import-last',
+                    style:'border-left-width: 0px;background: #fff;border-color: #35baf6;opacity:1;background-color: #fff;',
+                    focusable:false,
+                    margin:'0 0 0 -1',
+                    width:300,
+                    text:'上传导入文件',
+                },'->'],
+                items:[{
+                    margin:'15px 0 0 0',
+                    width: 240,
+                    labelWidth:160,
+                    buttonOnly:true,
+                    fieldLabel:'客户导入模板下载',
+                    name:'download',
+                    xtype: 'filefield',
+                    buttonText: '下载模板',
+                    buttonConfig:{
+                        xtype:'button',
+                        handler:function(b){
+                        }
+                    }
+                },{
+                    margin:'10px 0 0 45px',
+                    xtype: 'fieldset',
+                    title: '导入说明',
+                    name:'detail',
+                    collapsible: false,
+                    items: [{
+                        xtype : 'fieldcontainer',
+                        html: me.showDetail?me.showDetail:'请配置showDetail属性',
+                    }]
+                },{
+                    hidden:true,
+                    margin:'15px 0 0 0',
+                    width: 180,
+                    labelWidth:100,
+                    buttonOnly:true,
+                    fieldLabel:'上传文件',
+                    name:'upload',
+                    xtype: 'filefield',
+                    buttonText: '选择文件',
+                    buttonConfig:{
+                        xtype:'button',
+                    }
+                },{
+                    hidden:true,
+                    margin:'10px 0 0 45px',
+                    xtype: 'fieldset',
+                    title: '导入详情',
+                    name:'message',
+                    collapsible: false,
+                    items: [{
+                        xtype : 'fieldcontainer',
+                        html: '暂无',
+                    }]
+                }]
+            }]
+        });
         me.callParent(arguments);
     }
 

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

@@ -210,23 +210,23 @@ Ext.define('saas.view.core.query.QueryGridPanel', {
                         hidden: '{!auditEnable}'
                     }
                 },  {
-                    text: '导',
+                    text: '导',
                     handler: me.onImport,
-                    menu: {
-                        cls:'x-query-menu',
-                        width: 80,
-                        items: [{
-                            text:'导出',
-                            handler:function(){
-                                me.onExport(this)
-                            }
-                        }],
-                        listeners: {
-                            'mouseleave':function(enu){
-                                this.hide();
-                            } 
-                        }
-                    },
+                    // menu: {
+                    //     cls:'x-query-menu',
+                    //     width: 80,
+                    //     items: [{
+                    //         text:'导出',
+                    //         handler:function(){
+                    //             me.onExport(this)
+                    //         }
+                    //     }],
+                    //     // listeners: {
+                    //     //     'mouseleave':function(enu){
+                    //     //         this.hide();
+                    //     //     } 
+                    //     // }
+                    // },
                     bind: {
                         hidden: '{!importEnable}'
                     }

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

@@ -16,7 +16,7 @@ Ext.define('saas.view.core.query.QueryPanel', {
         reference: 'queryform',
         xtype: 'core-query-queryformpanel',
         width: '100%',
-        height:56,
+        height:54,
         margin: '0 0 12 0',
     }, {
         // margin: '12 0 0 0',

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

@@ -15,6 +15,17 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
           if(w.record){
               w.down('form').loadRecord(w.record);
           }
+          //自动适应窗口
+          var items = w.down('form').items.items;
+          var count = 0;
+          Ext.Array.each(items,function(item) {
+            if(item.xtype!='hidden'){
+                count++;
+            }
+          });
+          if(count!=0&&count<4){
+            w.setHeight(114+40*count)
+          }
       }
     },
     initComponent:function(){
@@ -325,9 +336,49 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 fieldLabel: '邮箱',
                 name: 'email',
                 allowBlank:false,
+                beforeLabelTextTpl: "",
                 regex:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
                 regexText:'请输入正确的邮箱',
                 maxLength: 30,
+                listeners:{
+                    blur:function(f,a,b,c){
+                        var form = f.ownerCt;
+                        if(f.value&&f.value!=''&&f.isValid()&&f._lastCheckValue!=f.value){
+                            form.setLoading(true);
+                            f._lastCheckValue = f.value
+                            Ext.Ajax.request({
+                                url: '/api/account/account/checkEmail?email='+f.value,
+                                method: 'GET',
+                                headers:{
+                                    'Access-Control-Allow-Origin': '*',
+                                    "Content-Type": 'application/json;charset=UTF-8'
+                                },
+                                success: function (response) {
+                                    form.setLoading(false);
+                                    var localJson = Ext.decode(response.responseText);
+                                    if(localJson.success){
+                                        if(localJson.data.hasRegister){
+                                            saas.util.BaseUtil.showSuccessToast('校验成功:手机号已在优软云注册');
+                                        }else{
+                                            saas.util.BaseUtil.showErrorToast('校验失败:手机号未在优软云注册');
+                                            f.setValue('');
+                                        }
+                                    }else{
+                                        saas.util.BaseUtil.showErrorToast('校验失败:'+localJson.message);
+                                    }
+                                },
+                                failure: function (response) {
+                                    if(response.responseText){
+                                        var localJson = Ext.decode(response.responseText);
+                                        saas.util.BaseUtil.showErrorToast('校验失败:'+localJson.message);
+                                    }else{
+                                        saas.util.BaseUtil.showErrorToast('邮箱校验接口连接超时');
+                                    }
+                                }
+                            });
+                        }
+                    }
+                }
             }]
         },
         warehouse:{

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

@@ -11,20 +11,25 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
     listUrl: '/api/money/report/customercheck',
     defaultCondition: null,
     reportTitle: '客户对账单',
-    QueryWidth:0.25,
+    QueryWidth:0.2,
     autoLoad:false,
     //筛选:客户、日期(必填)
     searchItems: [ {
         xtype: 'customerDbfindTrigger',
         name: 'pi_custname',
         fieldLabel: '客户名称',
-        columnWidth: 0.25,
+        columnWidth: 0.2,
         allowBlank:false,
+    }, {
+        xtype: 'monthdatefield',
+        name: 'ym',
+        fieldLabel: '期初日期',
+        columnWidth: 0.2
     }, {
         xtype: 'condatefield',
         name: 'pi_date',
         fieldLabel: '单据日期',
-        columnWidth: 0.5
+        columnWidth: 0.4
     }],
 
     reportColumns: [
@@ -129,5 +134,39 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
             text: '备注',
             dataIndex: 'pd_remark',
             width: 250
-        }]
+        }, {
+            text: '期初应付',
+            dataIndex: 'beginamount',
+            hidden: true,
+            width: 0,
+            summaryType: 'cus',
+        }, {
+            text: '本期发生',
+            dataIndex: 'nowamount',
+            hidden: true,
+            width: 0,
+            summaryType: 'cus',
+        }, {
+            text: '本期付款',
+            dataIndex: 'nowpay',
+            hidden: true,
+            width: 0,
+            summaryType: 'cus',
+        }, {
+            text: '本期结余',
+            dataIndex: 'nowbalance',
+            hidden: true,
+            width: 0,
+            summaryType: 'cus',
+        }],
+        applyParams: function(p) {
+            var me = this,
+            viewModel = me.getViewModel(),
+            formData = viewModel.get('form'),
+            ym = formData.ym;
+    
+            return Ext.Object.merge(p, {
+                ym: ym
+            });
+        }
 });

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

@@ -31,7 +31,7 @@ Ext.define('saas.view.stock.stockamount.DataList', {
         emptyText : '仓库编号'
     },{
         width: 200,
-        name: 'wh_name',
+        name: 'wh_description',
         xtype: 'textfield',
         emptyText : '仓库名称'
     },{

+ 2 - 2
frontend/saas-web/app/view/sys/account/DataList.js

@@ -19,10 +19,10 @@ Ext.define('saas.view.sys.account.DataList', {
         xtype: 'textfield',
         emptyText : '账户名称'
     },{
-        width: 110,
+        width: 140,
         name: 'mobile',
         xtype: 'textfield',
-        emptyText : '电话'
+        emptyText : '联系电话'
     },{
         xtype:'button',
         text:'查询',

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

@@ -11,7 +11,7 @@ Ext.define('saas.view.sys.baseconfig.FormPanel', {
     //字段属性
     _idField: 'id',
     _readUrl:'/api/commons/configs/list',
-    _saveUrl:'/api/commons/configs/save',
+    _saveUrl:'/api/commons/configs/update',
 
     //基础属性
     frame:true,