Browse Source

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

rainco 7 years ago
parent
commit
11f6cad5b1
37 changed files with 750 additions and 1003 deletions
  1. 4 0
      applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/CommonService.java
  2. 10 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/CommonController.java
  3. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/CommonService.java
  4. 33 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/CommonServiceImpl.java
  5. 2 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/ProductService.java
  6. 5 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  7. 26 22
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  8. 4 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  9. 47 26
      frontend/saas-portal-web/src/components/conenter/addgongsi.vue
  10. 11 9
      frontend/saas-portal-web/src/components/conenter/company.vue
  11. 0 8
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  12. 34 111
      frontend/saas-portal-web/src/components/conenter/home.vue
  13. 82 0
      frontend/saas-portal-web/src/components/conenter/problem.vue
  14. 14 19
      frontend/saas-portal-web/src/components/footer/footer.vue
  15. 7 0
      frontend/saas-portal-web/src/store/index.js
  16. 12 12
      frontend/saas-portal-web/static/css/main.css
  17. BIN
      frontend/saas-portal-web/static/img/Triangle Copy 4.png
  18. BIN
      frontend/saas-portal-web/static/img/banner@3x@2x.png
  19. 3 6
      frontend/saas-portal-web/static/js/mains.js
  20. 1 1
      frontend/saas-web/app/view/core/report/ReportPanel.js
  21. 0 1
      frontend/saas-web/app/view/document/bom/FormPanel.js
  22. 79 80
      frontend/saas-web/app/view/money/report/AccountBalance.js
  23. 64 303
      frontend/saas-web/app/view/money/report/AccountDetails.js
  24. 1 25
      frontend/saas-web/app/view/money/report/AccountDetailsController.js
  25. 1 1
      frontend/saas-web/app/view/money/report/AccountDetailsMode.js
  26. 4 2
      frontend/saas-web/app/view/money/report/VendorCheck.js
  27. 61 1
      frontend/saas-web/app/view/money/verification/FormPanelController.js
  28. 106 36
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  29. 107 0
      frontend/saas-web/app/view/stock/report/DataList.js
  30. 10 0
      frontend/saas-web/app/view/stock/report/DataListController.js
  31. 4 0
      frontend/saas-web/app/view/stock/report/DataListlModel.js
  32. 1 1
      frontend/saas-web/app/view/stock/report/Prodiodetail.js
  33. 0 312
      frontend/saas-web/app/view/stock/stockamount/DataList.js
  34. 0 10
      frontend/saas-web/app/view/stock/stockamount/DataListController.js
  35. 0 4
      frontend/saas-web/app/view/stock/stockamount/DataListlModel.js
  36. 13 7
      frontend/saas-web/app/view/sys/config/FormPanel.js
  37. 2 2
      frontend/saas-web/resources/json/navigation.json

+ 4 - 0
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/CommonService.java

@@ -9,4 +9,8 @@ public interface CommonService {
     @PostMapping("/action/audit")
     public String commonAudit(@RequestParam("table") String table, @RequestParam("keyvalue") String keyvalue, @RequestParam("status") String status,
                                       @RequestParam("statuscode") String statuscode, @RequestParam("auditdate") String auditdate, @RequestParam("auditman") String auditman);
+
+    @PostMapping("/action/resAudit")
+    public String commonResAudit(@RequestParam("table") String table, @RequestParam("keyvalue") String keyvalue, @RequestParam("status") String status,
+                              @RequestParam("statuscode") String statuscode, @RequestParam("auditdate") String auditdate, @RequestParam("auditman") String auditman);
 }

+ 10 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/CommonController.java

@@ -39,6 +39,16 @@ public class CommonController {
         return deferredResult;
     }
 
+    @PostMapping("/action/resAudit")
+    public DeferredResult commonResAudit(@RequestParam("table") String table, @RequestParam("keyvalue") String keyvalue, @RequestParam("status") String status,
+                                      @RequestParam("statuscode") String statuscode, @RequestParam("auditdate") String auditdate, @RequestParam("auditman") String auditman) {
+
+        DeferredResult<String> deferredResult = new DeferredResult<>();
+        CompletableFuture.supplyAsync(() -> commonService.commonResAudit(table, keyvalue, status, statuscode, auditdate, auditman))
+                .whenCompleteAsync((result, throwable) -> deferredResult.setResult(result));
+        return deferredResult;
+    }
+
     @GetMapping("/timeout/test")
     public void timeout(@RequestParam("time") Long time){
         try {

+ 2 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/CommonService.java

@@ -11,4 +11,6 @@ public interface CommonService {
     InitStatusDTO initCheck();
 
     String commonAudit(String table, String keyvalue, String status, String statuscode, String auditdate, String auditman);
+
+    String commonResAudit(String table, String keyvalue, String status, String statuscode, String auditdate, String auditman);
 }

+ 33 - 1
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/CommonServiceImpl.java

@@ -61,7 +61,18 @@ public class CommonServiceImpl implements CommonService {
         }
         return "success";
     }
-
+    @Override
+    public String commonResAudit(String table, String keyvalue, String status, String statuscode, String auditdate, String auditman) {
+        Long companyId = BaseContextHolder.getCompanyId();
+        if (StringUtils.isEmpty(table) || StringUtils.isEmpty(keyvalue)) {
+            return null;
+        }
+        String sql = resAuditedSql(table, keyvalue, status, statuscode, auditdate, auditman, companyId);
+        if (null != sql) {
+            commonMapper.commonAudit(sql);
+        }
+        return "success";
+    }
     private String praseSql(String table, String keyvalue, String status, String statuscode, String auditdate, String auditman, Long companyId) {
         String sql = "update " + table + " set ";
         StringBuilder sb = new StringBuilder();
@@ -83,4 +94,25 @@ public class CommonServiceImpl implements CommonService {
         }
         return null;
     }
+    private String resAuditedSql(String table, String keyvalue, String status, String statuscode, String auditdate, String auditman, Long companyId) {
+        String sql = "update " + table + " set ";
+        StringBuilder sb = new StringBuilder();
+        if (!StringUtils.isEmpty(status)) {
+            sb.append(" " + status + " = '" + Status.UNAUDITED.getDisplay() + "',");
+        }
+        if (!StringUtils.isEmpty(statuscode)) {
+            sb.append(" " + statuscode + "='" + Status.UNAUDITED.name() + "',");
+        }
+        if (!StringUtils.isEmpty(auditdate)) {
+            sb.append(" " + auditdate + "= null ,");
+        }
+        if (!StringUtils.isEmpty(auditman)) {
+            sb.append(" " + auditman + "= null ,");
+        }
+        if (sb.length() > 0) {
+            sql =  sql + sb.substring(0, sb.length() - 1) + " where " + keyvalue + " and companyId=" + companyId;
+            return sql;
+        }
+        return null;
+    }
 }

+ 2 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/ProductService.java

@@ -17,6 +17,7 @@ import com.usoftchina.saas.document.mapper.ProductMapper;
 import com.usoftchina.saas.page.PageRequest;
 
 import java.util.List;
+import java.util.Map;
 
 public interface ProductService extends CommonBaseService<ProductMapper, Product> {
 
@@ -109,7 +110,7 @@ public interface ProductService extends CommonBaseService<ProductMapper, Product
      * @param listReqDTO
      * @return
      */
-    PageInfo<ProductReserveCostDTO> getReserveCost(PageRequest page, ListReqDTO listReqDTO);
+    Map<String, Object> getReserveCost(PageRequest page, ListReqDTO listReqDTO);
 
     /**
      * 通过明细ID删除明细

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

@@ -481,7 +481,8 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
     }
 
     @Override
-    public PageInfo<ProductReserveCostDTO> getReserveCost(PageRequest page, ListReqDTO listReqDTO) {
+    public Map<String, Object> getReserveCost(PageRequest page, ListReqDTO listReqDTO) {
+        Map<String, Object> map = new HashMap<String, Object>();
         //设置分页
         if (null == page || page.getSize() == 0 || page.getNumber() == 0) {
             page = new PageRequest();
@@ -492,7 +493,9 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
         List<ProductReserveCostDTO> reserveCostList = geReserveCost(listReqDTO);
         //取分页信息
         PageInfo<ProductReserveCostDTO> pageInfo = new PageInfo<ProductReserveCostDTO>(reserveCostList);
-        return pageInfo;
+        map.put("list", pageInfo);
+        map.put("calculate", null);
+        return map;
     }
 
     @Override

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

@@ -305,17 +305,19 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
      */
     private void updateAuditSubledeger(Long id , Double nowBalance){
         Subledger subledger = subledgerMapper.selectByPrimaryKey(Math.toIntExact(id));
-        Subledger newSubledeger = new Subledger();
-        newSubledeger.setId(id);
-        Double newNamout = subledger.getSl_namount()==null?new Double(0):subledger.getSl_namount()-nowBalance;
-        Double newYamout = subledger.getSl_yamount()==null?new Double(0):subledger.getSl_yamount()+nowBalance;
-        newSubledeger.setSl_yamount(newYamout);
-        newSubledeger.setSl_namount(newNamout);
-        newSubledeger.setCompanyId(BaseContextHolder.getCompanyId());
-        newSubledeger.setUpdaterName(BaseContextHolder.getUserName());
-        newSubledeger.setUpdaterId(BaseContextHolder.getUserId());
-        newSubledeger.setUpdateTime(new Date());
-        subledgerMapper.updateByPrimaryKeySelective(newSubledeger);
+        if (subledger != null) {
+            Subledger newSubledeger = new Subledger();
+            newSubledeger.setId(id);
+            Double newNamout = subledger.getSl_namount() == null ? new Double(0) : subledger.getSl_namount() - nowBalance;
+            Double newYamout = subledger.getSl_yamount() == null ? new Double(0) : subledger.getSl_yamount() + nowBalance;
+            newSubledeger.setSl_yamount(newYamout);
+            newSubledeger.setSl_namount(newNamout);
+            newSubledeger.setCompanyId(BaseContextHolder.getCompanyId());
+            newSubledeger.setUpdaterName(BaseContextHolder.getUserName());
+            newSubledeger.setUpdaterId(BaseContextHolder.getUserId());
+            newSubledeger.setUpdateTime(new Date());
+            subledgerMapper.updateByPrimaryKeySelective(newSubledeger);
+        }
     }
     /**
      * 反审核更新来源单据的已核销,未核销
@@ -324,17 +326,19 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
      */
     private void updateResAuditSubledeger(Long id , Double nowBalance){
         Subledger subledger = subledgerMapper.selectByPrimaryKey(Math.toIntExact(id));
-        Subledger newSubledeger = new Subledger();
-        newSubledeger.setId(Long.valueOf(String.valueOf(id)));
-        Double newNamout = subledger.getSl_namount()==null?new Double(0):subledger.getSl_namount()+nowBalance;
-        Double newYamout = subledger.getSl_yamount()==null?new Double(0):subledger.getSl_yamount()-nowBalance;
-        newSubledeger.setSl_yamount(newYamout);
-        newSubledeger.setSl_namount(newNamout);
-        newSubledeger.setCompanyId(BaseContextHolder.getCompanyId());
-        newSubledeger.setUpdaterName(BaseContextHolder.getUserName());
-        newSubledeger.setUpdaterId(BaseContextHolder.getUserId());
-        newSubledeger.setUpdateTime(new Date());
-        subledgerMapper.updateByPrimaryKeySelective(newSubledeger);
+        if(subledger != null) {
+            Subledger newSubledeger = new Subledger();
+            newSubledeger.setId(Long.valueOf(String.valueOf(id)));
+            Double newNamout = subledger.getSl_namount() == null ? new Double(0) : subledger.getSl_namount() + nowBalance;
+            Double newYamout = subledger.getSl_yamount() == null ? new Double(0) : subledger.getSl_yamount() - nowBalance;
+            newSubledeger.setSl_yamount(newYamout);
+            newSubledeger.setSl_namount(newNamout);
+            newSubledeger.setCompanyId(BaseContextHolder.getCompanyId());
+            newSubledeger.setUpdaterName(BaseContextHolder.getUserName());
+            newSubledeger.setUpdaterId(BaseContextHolder.getUserId());
+            newSubledeger.setUpdateTime(new Date());
+            subledgerMapper.updateByPrimaryKeySelective(newSubledeger);
+        }
     }
     /**
      * 转换核销单类型

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

@@ -319,6 +319,8 @@ public class SaleServiceImpl implements SaleService{
         sale.setUpdaterId(BaseContextHolder.getUserId());
         //更新存在字段
         saleMapper.updateByPrimaryKeySelective(sale);
+        commonService.commonResAudit("sale", "sa_id=" + id, "sa_status",
+                "sa_statuscode", "sa_auditdate", "sa_auditman");
         DocBaseDTO docBaseDTO = getBaseDTOById(id);
         //日志
         messageLogService.unAudit(docBaseDTO);
@@ -512,6 +514,8 @@ public class SaleServiceImpl implements SaleService{
         saleMapper.updateByPrimaryKeySelective(sale);
         prodIODetailMapper.updatePDSaleOut(pi_id);
         prodInOutMapper.updatePiTotal(pi_id);
+        //更新创建人
+        prodInOutMapper.updateCreator(BaseContextHolder.getUserId(), BaseContextHolder.getUserName(), pi_id);
         //日志记录
         DocBaseDTO log = new DocBaseDTO(id, sale.getSa_code(), BillCodeSeq.SALEOUT.getCaller());
         messageLogService.customizeLog(log, Operation.TURNPRODOUT);

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

@@ -92,6 +92,7 @@ import VDistpicker from 'v-distpicker'
                 mytoken: JSON.parse(localStorage.getItem('app-state-session')),//本地储存的用户信息
                 reg: new RegExp(/[\@\#\$\%\&\*!\¥]/),//非法字符
                 isaddress: false,//公司地址验证
+                isaddressname: false,//公司地址是否为空
                 isname: true,//姓名验证
                 isspaceName: false,//公司名验证
                 isemail: true,//验证邮箱
@@ -165,7 +166,9 @@ import VDistpicker from 'v-distpicker'
                 let address = this.$refs.address.value.replace(/\s+/g, "");//过滤空格
                 if (address == '') {
                     this.$refs.ress.innerHTML = '地址不能为空'
+                    this.isaddressname = false
                 } else {
+                    this.isaddressname = true
                     if (this.reg.test(address)) {
                         this.$refs.ress.innerHTML = '不能包含非法字符'
                         this.isaddress = false
@@ -211,33 +214,51 @@ import VDistpicker from 'v-distpicker'
                 // console.log('姓名',this.isname)//个人姓名正则
                 // console.log('企业名字',this.isspaceName)//企业名字正则
                 // console.log('邮箱',this.isemail)//邮箱正则
-                if (name != '' && qyname != '' && this.qymingzi && this.isaddress && this.isname && this.isspaceName && this.isemail) {
-                    
-                    this.$ajax({
-                        url: this.$url.api+"/api/account/accountCenter/companyAccount/save",//http://192.168.253.31:8560
-                        method: 'post',
-                        data: {
-                            companyRegDTO:company,
-                            accountRegDTO:account,
-                            type: 0
-                        },
-                        headers: {
-                            "Authorization":token,
-                        }
-                    })
-                    .then(res=>{
-                        // console.log("请求成功",res)
-                        document.documentElement.scrollTop = 0;
-                        this.$router.push({name:'company'})
-                    })
-                    .catch(err=>{
-                        // console.log("请求失败",err)
-                    })
+                if (name == '') {
+                    this.$refs.tjtishi.innerHTML = '个人姓名不能为空'
+                } else if (qyname == '') {
+                    this.$refs.tjtishi.innerHTML = '企业名字不能为空'
                 } else {
-                    this.$refs.tjtishi.innerHTML = '企业名称,地址,姓名不能为空或包含有非法字符'
-                    setTimeout(() => {
-                        this.$refs.tjtishi.innerHTML = ''
-                    }, 3000);
+                    switch (this.qymingzi && this.isaddress && this.isname && this.isspaceName && this.isemail && this.isaddressname) {
+                        case this.qymingzi:
+                        if (this.qymingzi) {
+                            this.$ajax({
+                                url: this.$url.api+"/api/account/accountCenter/companyAccount/save",//http://192.168.253.31:8560
+                                method: 'post',
+                                data: {
+                                    companyRegDTO:company,
+                                    accountRegDTO:account,
+                                    type: 0
+                                },
+                                headers: {
+                                    "Authorization":token,
+                                }
+                            })
+                            .then(res=>{
+                                document.documentElement.scrollTop = 0;
+                                this.$router.push({name:'company'})
+                            })
+                            this.$refs.tjtishi.innerHTML = ''
+                        } else {
+                            this.$refs.tjtishi.innerHTML = '企业名字已在优软云注册'
+                        }
+                        break;
+                        case this.isaddressname:
+                        this.$refs.tjtishi.innerHTML = '企业地址不能为空'
+                        break;
+                        case this.isaddress:
+                        this.$refs.tjtishi.innerHTML = '企业地址不能包含非法字符'
+                        break;
+                        case this.isname:
+                        this.$refs.tjtishi.innerHTML = '个人姓名不能包含非法字符'
+                        break;
+                        case this.isspaceName:
+                        this.$refs.tjtishi.innerHTML = '企业名字不能包含非法字符'
+                        break;
+                        case this.isemail:
+                        this.$refs.tjtishi.innerHTML = '请输入正确邮箱'
+                        break;
+                    }
                 }
             },
             //获取省市区

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

@@ -118,7 +118,7 @@
                 })
             }
         },
-        mounted(){
+        created(){
             let mytoken = JSON.parse(localStorage.getItem('app-state-session'));
             let token = String(mytoken.token);
             //企业列表
@@ -155,6 +155,8 @@
                 .catch(err=>{
                     // console.log("请求失败",err)
                 })
+        },
+        mounted(){
             this.boxheight();
         },
         methods: {
@@ -257,8 +259,9 @@
                 .then(res=>{
                     // console.log('请求成功',res)
                     if (res.data.success) {
-                        this.saasid = res.data.data
-                        this.ktsass = false;
+                        // this.saasid = res.data.data
+                        // this.ktsass = false;
+                        this.$router.go(0);
                     } else {
                         this.isokopensaas = true;
                     }
@@ -268,12 +271,11 @@
                 })
             },
             //进入saas服务
-            showServeWin(){
-                let id = this.saasid;
-                this.isOpensaas = false;
-                // this.$options.methods.selectServe(id);
-                this.selectServe(id)
-            },
+            // showServeWin(){
+            //     let id = this.saasid;
+            //     this.isOpensaas = false;
+            //     this.selectServe(id)
+            // },
             //查看企业详情
             getEnterpriseInfo(d){
                 document.documentElement.scrollTop = 0;

+ 0 - 8
frontend/saas-portal-web/src/components/conenter/enterprise.vue

@@ -137,19 +137,11 @@ import { setTimeout } from 'timers';
             },
             //退出
             loginout(){
-                //this.$router.push({path:'/name'});
                 const frame = window.frames[window.frames.length - 1]
                 frame.postMessage('', '*')
                 Session.remove()
                 window.location.href=this.$url.sso+'/logquit?appId=sp&returnURL=https://'+window.location.host
-                // this.loginout2()
             }
-            // ,
-            // loginout2(){
-            //     const frame = window.frames[window.frames.length - 1]
-            //     frame.postMessage('', '*')
-            //     Session.remove()
-            // } 
         },
     }
 </script>

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

@@ -16,7 +16,7 @@
                 </h1>
             </div>
             <div class="collapse navbar-collapse navbar-right" role="navigation">
-          <ul id="nav" class="nav navbar-nav menu">
+          <ul @click="gohome" id="nav" class="nav navbar-nav menu">
             <li><a href="#"><span>首页</span></a></li>
             <li><a href="https://www.usoftchina.com/" target="_blank"><span>优软云</span></a></li>
             <li>
@@ -41,17 +41,14 @@
           </ul>
         </div>
         </div>
-
     </div>
 
     <iframe hidden :src="setTokenPage"></iframe>
-    <main class="site-content" role="main">
-      <!-- 遮罩 -->
+    <!-- 遮罩 -->
       <div class="zhezhao" v-if="isLogin || isRegister || isexperience"></div>
       <div class="box" v-if="isLogin || isRegister">
         <div>
-          <img @click="closeModal" class="tc-on shut"
-               src="/static/img/qiye/chahao.png" alt="">
+          <img @click="closeModal" class="tc-on shut" src="/static/img/qiye/chahao.png" alt="">
         </div>
         <iframe id="iframe" width="430" height="504" :src="ssoPage"></iframe>
         <iframe hidden :src="setTokenPage"></iframe>
@@ -77,24 +74,19 @@
           <span>客服电话:400-830-1818</span>
         </div>
       </div>
-
+    <main v-if="isproblem" class="site-content" role="main">
       <!--Home Slider==================================== -->
-      <section id="home-slider">
+      <!-- <section id="home-slider">
         <div id="slider" class="sl-slider-wrapper">
           <div class="sl-slider">
-
             <div class="sl-slide" data-orientation="horizontal" data-slice1-rotation="-25" data-slice2-rotation="-25"
                  data-slice1-scale="2" data-slice2-scale="2">
               <div class="mask-overly"></div>
               <div class="bg-img slider-1">
-                <img src="/static/img/banner@2x@2x.png" alt="">
-                <!-- <img src="/static/img/banner@3x@2x.png" alt=""> -->
-                <!-- <img src="/static/img/banner.png" alt=""> -->
+                <img src="/static/img/banner@3x@2x.png" alt="">
               </div>
-              <!-- 首页内容 -->
               <div class="my-text">
                 <button class='my-tiyan' @click="experience">立即体验</button>
-
               </div>
               <div class="slide-caption">
                 <div class="caption-content"></div>
@@ -102,8 +94,15 @@
             </div>
           </div>
         </div>
-      </section>
-
+      </section> -->
+      <div>
+        <div class="bg-img slider-1" style="position: relative;">
+          <img src="/static/img/banner@3x@2x.png" alt="">
+          <div class="my-text" style="top:63%">
+            <button class='my-tiyan' @click="experience">立即体验</button>
+          </div>
+        </div>
+      </div>
       <!-- End Home SliderEnd==================================== -->
 
       <!-- 特色 -->
@@ -250,76 +249,8 @@
         </div>
       </section>
       <!-- end Service section -->
-
-      <!-- 帮助中心 -->
-      <!-- <section id="prototype">
-        <div class="container">
-          <div class="row">
-            <div class="section-title text-center">
-              <p class="ts-title">帮助中心</p>
-            </div>
-            <div class="bz-worp">
-              <div class="bz-box">
-                <div class="bz-sskuang">
-                  <span><img class="bz-sousuoimg" src="/static/img/assets/sou.png" alt=""></span>
-                  <input class="bz-sousuo" type="text" placeholder="输入标题搜索"/>
-                </div>
-                <button class="bz-btn">搜索</button>
-              </div>
-              <div class="bz-content">
-                <div class="bz-left">
-                  <ul class="bz-ul">
-                    <li v-for="(d,i) in arr" :key="i" :class= "{active:Nowindex == i}" @click="tab(i)">{{d}}</li>
-                  </ul>
-                </div>
-                <div class="bz-right">
-                  <div class="bz-right-conent">
-                    <div :class= "{shows:Nowindex == 0}">
-                      <ul>
-                        <li>
-                          <span class="left bz-yuandian"></span>
-                          <span class="left">方式不同吧好像是差不多 </span>
-                          <span class="right">2018年10月31日  12:00</span>
-                        </li>
-                        <li>
-                          <span class="left bz-yuandian"></span>
-                          <span class="left">XXXXXXXXXXXXXXX操作文档</span>
-                          <span class="right">2018年10月31日  12:00</span>
-                        </li>
-                        <li>
-                          <span class="left bz-yuandian"></span>
-                          <span class="left">XXXXXXXXXXXXXXX操作文档</span>
-                          <span class="right">2018年10月31日  12:00</span>
-                        </li>
-                      </ul>
-                    </div>
-                    <div :class= "{shows:Nowindex == 1}">
-                      <ul>
-                        <li>
-                          <span class="left bz-yuandian"></span>
-                          <span class="left">方式不同吧好像是差不多哇来访黑哇哦发检测句ID回复开展了好xxxxx常见问题 </span>
-                          <span class="right">2018年11月24日  12:00</span>
-                        </li>
-                        <li>
-                          <span class="left bz-yuandian"></span>
-                          <span class="left">方式不同吧好像是差不多哇来访黑哇哦发检测句ID回复开展了好xxxxx常见问题</span>
-                          <span class="right">2018年11月24日  12:00</span>
-                        </li>
-                        <li>
-                          <span class="left bz-yuandian"></span>
-                          <span class="left">XXXXXXXXXXXXXXX常见问题</span>
-                          <span class="right">2018年11月24日  12:00</span>
-                        </li>
-                      </ul>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </section> -->
     </main>
+    <problem v-else></problem>
   </div>
 </template>
 
@@ -327,6 +258,7 @@
   import {subscribe, disconnect} from '@/api/socket'
   import Session from '@/utils/session'
   import { setTimeout } from 'timers'
+  import problem from '../conenter/problem.vue'
 
   export default {
     data() {
@@ -336,8 +268,15 @@
         clientId: null,
         account: null,
         isexperience: false,
-        arr: ["操作文档","常见手册"],
-        Nowindex: 0,
+        isproblem: true,//常见问题
+      }
+    },
+    components: {
+      problem
+    },
+    watch: {
+      getnewproblem(val){
+          this.isproblem = val
       }
     },
     created(){
@@ -355,7 +294,7 @@
           this.account = Session.getAccount();
         })
         .catch(err=>{
-          console.log("请求失败",err)
+          // console.log("请求失败",err)
         })
     },
     mounted() {
@@ -376,26 +315,12 @@
           return this.$url.sso + '/sassLogin/register?appId=sp&baseUrl=' +
             encodeURIComponent(this.$url.api + '/api/auth/sso/callback/' + this.clientId)
         }
+      },
+      getnewproblem() {
+        return this.$store.state.isproblem;
       }
     },
     methods: {
-      //   hasCookie(cookieName){
-      //     var hasUid=false;
-      //     if (document.cookie && document.cookie != '') {
-      //         var cookies = document.cookie.split(';');
-      //         for (var i = 0; i < cookies.length; i++) {
-      //             var cookie = cookies[i];
-      //             if (cookie.substring(0, cookieName.length+1).trim() == cookieName.trim() + "=") {
-      //                   hasUid=true;
-      //                   break;
-      //             }
-      //         }
-      //     }
-      //     return hasUid;
-      // },
-      tab(i){
-        this.Nowindex = i;
-      },
       home() {
         document.documentElement.scrollTop = 0;
       },
@@ -498,17 +423,15 @@
           }
         }
       },
+      gohome(e){
+        this.$store.commit('problemtrue')
+        this.isproblem = true
+      }
     }
   }
 </script>
 
 <style scoped>
-.shows {
-  display: block !important;
-}
-.bz-right-conent div {
-  display: none;
-}
 .shut {
   cursor: pointer;
   position: absolute;

+ 82 - 0
frontend/saas-portal-web/src/components/conenter/problem.vue

@@ -0,0 +1,82 @@
+<template>
+    <div>
+        <div class="bz-container">
+            <div class="bz-title">
+              <span>常见问题</span>
+            </div>
+          <div class="bz-titlebox">
+            <div class="bz-worp">
+              <div class="bz-box">
+                <div class="bz-sskuang">
+                  <span><img class="bz-sousuoimg" src="/static/img/assets/sou.png" alt=""></span>
+                  <input class="bz-sousuo" type="text" placeholder="请输入标题搜索"/>
+                </div>
+                <button class="bz-btn">搜索</button>
+              </div>
+              <div class="bz-content">
+                <div class="bz-right">
+                  <div class="bz-right-conent">
+                    <div class= "shows">
+                      <ul>
+                        <li>
+                          <span class="left bz-yuandian"></span>
+                          <span class="left">方式不同吧好像是差不多 </span>
+                          <img class="right bz-copy" src="/static/img/Triangle Copy 4.png" alt="">
+                        </li>
+                        <li>
+                          <span class="left bz-yuandian"></span>
+                          <span class="left">XXXXXXXXXXXXXXX操作文档</span>
+                          <img class="right bz-copy" src="/static/img/Triangle Copy 4.png" alt="">
+                        </li>
+                        <li>
+                          <span class="left bz-yuandian"></span>
+                          <span class="left">XXXXXXXXXXXXXXX操作文档</span>
+                          <img class="right bz-copy" src="/static/img/Triangle Copy 4.png" alt="">
+                        </li>
+                      </ul>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+    </div>
+</template>
+
+<script>
+    export default {
+        
+    }
+</script>
+
+<style scoped>
+.bz-container {
+    width: 55%;
+    margin: 0 auto;
+    font-size: 14px;
+    margin-top: 180px;
+    margin-bottom: 190px;
+}
+.bz-titlebox {
+    background: #FFFFFF;
+    border: 1px solid rgba(30,136,245,0.32);
+    box-shadow: 0 20px 60px 10px rgba(13,37,62,0.05);
+    border-radius: 4px;
+}
+.bz-title {
+    text-align: left;
+    font-size: 14px;
+    color: white;
+    margin-bottom: 36px;
+}
+.bz-title span {
+    background: #1E88F5;
+    border-radius: 2px;
+    padding: 6px 24px;
+}
+.bz-copy {
+    margin-right: 7px;
+    cursor: pointer;
+}
+</style>

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

@@ -4,7 +4,6 @@
 			<div class="container">
 				<div class="footer-list">
 					<div class="about">
-						<!-- <div class="logo"><img src="../../../static/img/logo_w.png" alt=""/></div> -->
 						<div class="logo"><img src="/static/img/assets/dalogo@2x_1.png" alt=""/></div>
 						<div class="time">客服热线:400-830-1818</div>
 						<div class="time">工作时间:周一至周五08:30~18:00</div>
@@ -19,7 +18,7 @@
 						</ul>
 						<ul>
 							<li><span>帮助中心</span></li>
-							<li><a href="#">常见问题</a></li>
+							<li><a @click="problem">常见问题</a></li>
 							<li><a href="#">操作手册</a></li>
 						</ul>
 						<ul>
@@ -40,22 +39,12 @@
 					<div class="qr">
 						<div class="qr-top">
 							<div class="qr-tech qr-code">
-								<!-- <img src="/static/img/qr-tech.png" alt=""> -->
 								<img src="/static/img/qrusoftchina_1.jpg" alt="">
 								<div class="db-text">
 									<span>科技公众号</span>
 								</div>
 							</div>
-							
-							<!-- <div class="qr-mall qr-code">
-								<img src="./img/qr_mall.jpg" alt="">
-								商城公众号
-							</div> -->
 						</div>
-						<!-- <div class="qr-bottom">
-							粤ICP备15112126号
-							<br/>2018 © 深圳市优软科技有限公司
-						</div> -->
 					</div>
 				</div>
 				
@@ -63,19 +52,25 @@
 		</div>
 		<div class="friend-link">
 			<span>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</span>
-			<!-- <ul>
-				<li><span>常用链接:</span></li>
-				<li><a href="https://uas.usoftchina.com/" target="_blank">UAS官网</a></li>
-				<li><a href="https://www.usoftchina.com/" target="_blank">U软云</a></li>
-				<li><a href="http://www.yitoa.com/" target="_blank">英唐官网</a></li>
-			</ul> -->
 		</div>
     </div>
 </template>
 
 <script>
     export default {
-        
+        data(){
+			return {
+
+			}
+		},
+		methods:{
+			problem(){
+				this.$router.push({path: '/name', query: {isporblem: false}})
+				// this.$router.go(0)
+				this.$store.commit("problemfalse")
+				document.documentElement.scrollTop = 0;
+			}
+		}
     }
 </script>
 

+ 7 - 0
frontend/saas-portal-web/src/store/index.js

@@ -7,6 +7,7 @@ export default new Vuex.Store({
         data: [],
         email:'',
         isAutoLogin: false,
+        isproblem: true,//常见问题
     },
     mutations:{
          Logintrue(state) {
@@ -15,5 +16,11 @@ export default new Vuex.Store({
          Loginfalse(state) {
              state.isAutoLogin = false;   
          },
+         problemfalse(state) {
+            state.isproblem = false;
+         },
+         problemtrue(state) {
+            state.isproblem = true;
+         }
     }
 })

+ 12 - 12
frontend/saas-portal-web/static/css/main.css

@@ -316,7 +316,7 @@ main > section {
     z-index: 1000;
 }
 .my-tiyan {
-    background: #5172DD;
+    background: #1E88F5;
     border-radius: 4px;
     width: 100%;
     height: 100%;
@@ -434,9 +434,8 @@ main > section {
 /* 帮助 ........................................*/
 .bz-worp {
     background: white;
-    width: 90%;
     margin: 0 auto;
-    padding: 40px;
+    padding: 42px 40px 109px 48px;
 }
 .bz-box {
     border: 1px solid #1E88F5;
@@ -444,12 +443,12 @@ main > section {
     border-right: 0;
 }
 .bz-sskuang {
-    width: 90%;
+    width: 88%;
     float: left;
     line-height: 38px;
 }
 .bz-sousuo {
-    width: 94%;
+    width: 70%;
     margin: 0 -5px;
     border: 0;
     outline: none;
@@ -460,7 +459,7 @@ main > section {
 .bz-btn {
     background: #1E88F5;
     border-radius: 0 5px 5px 0;
-    width: 10%;
+    width: 12%;
     border: 0;
     color: white;
     height: 40px;
@@ -500,15 +499,16 @@ main > section {
     border-radius: 50%;
     margin: 4px 8px 0 0;
 }
-.bz-right-conent div {
-    display: none;
-}
 .bz-right-conent li {
-    margin-bottom: 14px;
+    border-bottom: 1px solid #E8ECEF;
+    padding: 10px 0;
     list-style: none;
     overflow: hidden;
     margin-left: -40px;
 }
+.bz-right-conent li:last-child {
+    border-bottom: 0;
+}
 .bz-right-conent {
     /* margin: 30px; */
 }
@@ -954,13 +954,13 @@ h1.navbar-brand {
 }
 .slider-1 img{
     width: 100%;
-    height: 100%;
+    /* height: 100%; */
 }
 .sl-slider-wrapper {
     width: 100%;
     margin: 0 auto;
     position: relative;
-    overflow: hidden;
+    /* overflow: hidden; */
 }
 
 .sl-slider {

BIN
frontend/saas-portal-web/static/img/Triangle Copy 4.png


BIN
frontend/saas-portal-web/static/img/banner@3x@2x.png


+ 3 - 6
frontend/saas-portal-web/static/js/mains.js

@@ -118,16 +118,13 @@ $(document).ready(function(){
 
     // Slider Height
     var slideHeight = $(window).height();
-
+    let W = $(window).width();
     $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
-
     $(window).resize(function(){
         $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
-        $(".slider-1 img").css("height",slideHeight)
+        // $(".slider-1 img").css("height",slideHeight)
+        $("bg-img").css('width',W)
     });
-    // $(window).resize(function(){'use strict',
-    //     $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
-    // });
 	
 	$("#works, #testimonial").owlCarousel({	 
 		navigation : true,

+ 1 - 1
frontend/saas-web/app/view/core/report/ReportPanel.js

@@ -244,7 +244,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
                                     c.summaryValue = 0;
                                 }
                             });
-                            return data.data.list.list;
+                            return data.data ? (data.data.list ? data.data.list.list : []) : [];
                         }catch(e) {
                             saas.util.BaseUtil.showErrorToast(e.message);
                         }

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

@@ -70,7 +70,6 @@ Ext.define('saas.view.document.bom.FormPanel', {
         name: 'pr_spec',
         fieldLabel: '产品规格',
         reddOnly:true,
-        ignore:true
     },{
         xtype: 'hidden',
         name: 'bo_statuscode',

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

@@ -11,9 +11,9 @@ Ext.define('saas.view.money.report.AccountBalance', {
     listUrl: '/api/money/report/accountBalance',
     defaultCondition: null,
     reportTitle: '资金账户余额表',
-    QueryWidth:0.25,
+    QueryWidth: 0.25,
     //筛选:账户、日期(必填)
-    searchItems: [ {
+    searchItems: [{
         xtype: 'bandinfoDbfindTrigger',
         name: 'bankname',
         fieldLabel: '账户名称',
@@ -25,82 +25,81 @@ Ext.define('saas.view.money.report.AccountBalance', {
         columnWidth: 0.5
     }],
 
-    reportColumns: [
-         {
-            text: '账户编号',
-            dataIndex: 'bankcode',
-            width: 150
-        }, {
-            text: '账户名称',
-            dataIndex: 'bankname',
-            width: 200
-        }, {
-            text: '日期',
-            dataIndex: 'date',
-            xtype:'datecolumn',
-            width: 110
-        }, {
-            text: '业务类型',
-            dataIndex: 'kind',
-            width: 110
-        },{
-            text:'收入',
-            dataIndex:'inamount',
-            xtype: 'numbercolumn',
-            width: 110,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            summaryType: 'sum',
-            summaryRenderer: function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
-        },{
-            text:'支出',
-            dataIndex:'outamount',
-            xtype: 'numbercolumn',
-            width: 110,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
-            summaryType: 'sum',
-            summaryRenderer: function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
-        },{
-            text: '账户余额',
-            dataIndex: 'thisamount',
-            xtype: 'numbercolumn',
-            width: 110,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            }
-        }, {
-            text: '往来单位',
-            dataIndex: 'bname',
-            width: 150
-        }, {
-            text: '收付款人',
-            dataIndex: 'bmanname',
-            width: 110
-        }, {
-            text: '备注',
-            dataIndex: 'remark',
-            width: 250,
-        }]
+    reportColumns: [{
+        text: '账户编号',
+        dataIndex: 'bankcode',
+        width: 150
+    }, {
+        text: '账户名称',
+        dataIndex: 'bankname',
+        width: 200
+    }, {
+        text: '日期',
+        dataIndex: 'date',
+        xtype: 'datecolumn',
+        width: 110
+    }, {
+        text: '业务类型',
+        dataIndex: 'kind',
+        width: 110
+    }, {
+        text: '收入',
+        dataIndex: 'inamount',
+        xtype: 'numbercolumn',
+        width: 110,
+        renderer: function (v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function (v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
+    }, {
+        text: '支出',
+        dataIndex: 'outamount',
+        xtype: 'numbercolumn',
+        width: 110,
+        renderer: function (v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+        summaryType: 'sum',
+        summaryRenderer: function (v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
+    }, {
+        text: '账户余额',
+        dataIndex: 'thisamount',
+        xtype: 'numbercolumn',
+        width: 110,
+        renderer: function (v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
+    }, {
+        text: '往来单位',
+        dataIndex: 'bname',
+        width: 150
+    }, {
+        text: '收付款人',
+        dataIndex: 'bmanname',
+        width: 110
+    }, {
+        text: '备注',
+        dataIndex: 'remark',
+        width: 250,
+    }]
 });

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

@@ -1,39 +1,28 @@
 Ext.define('saas.view.money.report.AccountDetails', {
-    extend: 'Ext.grid.Panel',
+    extend: 'saas.view.core.report.ReportPanel',
     xtype: 'monry-report-accountdetails',
 
     controller: 'money-report-accountdetails',
     viewModel: 'money-report-accountdetails',
 
     viewName: 'money-report-accountdetails',
-    autoScroll: true,
-    frame:true,
-    layout:'fit',
-    //工具类
-    FormUtil: Ext.create('saas.util.FormUtil'),
-    BaseUtil: Ext.create('saas.util.BaseUtil'),
 
     // groupField: null,
-    dataUrl: '/api/money/report/accountdetails',
+    listUrl: '/api/money/report/accountdetails',
     defaultCondition: null,
     reportTitle: '核销对账表',
-    QueryWidth:0.25,
+    QueryWidth: 0.2,
     //筛选:客户/供应商、日期、单据类型(必填)
-    tbar: [{
-        width: 150,
+    searchItems: [{
         name: 'sl_code',
         xtype: 'textfield',
-        emptyText : '单号'
-    },{
-        width: 400,
-        name: 'date',
-        xtype: 'condatefield',
-        emptyText : '日期'
+        emptyText: '单号',
+        columnWidth: 0.1
     }, {
         xtype: 'multicombo',
         name: 'sl_kind',
-        fieldLabel: '单据类型',
-        width: 150,
+        emptyText: '单据类型',
+        columnWidth: 0.1,
         datas: [
             ["采购验收单", "采购验收单"],
             ["采购验退单", "采购验退单"],
@@ -45,295 +34,67 @@ Ext.define('saas.view.money.report.AccountDetails', {
             ["其它入库单", "其它入库单"],
             ["其它出库单", "其它出库单"],
             ["调拨单", "调拨单"],
-            ["库存初始化","库存初始化"]
+            ["库存初始化", "库存初始化"]
         ]
     }, {
-        width: 150,
-        name: 'pb_code',
-        xtype: 'textfield',
-        emptyText : '核销单号'
+        name: 'date',
+        xtype: 'condatefield',
+        emptyText: '日期',
+        columnWidth: 0.3
     }, {
-        xtype : "customerDbfindTrigger", 
-        width: 200,
-        name : "cu_name", 
-        fieldLabel : "客户",
-        emptyText:'请输入客户编号或名称'
+    //     name: 'pb_code',
+    //     xtype: 'textfield',
+    //     emptyText: '核销单号',
+    //     columnWidth: 0.1
+    // }, {
+        xtype: "customerDbfindTrigger",
+        name: "cu_name",
+        emptyText: '客户编号/名称',
+        columnWidth: 0.15
     }, {
         xtype: 'vendorDbfindTrigger',
-        width: 200,
         name: 've_name',
-        fieldLabel: '供应商',
-        emptyText :'请输入供应商编号或名称'
+        emptyText: '供应商编号/名称',
+        columnWidth: 0.15
+    }],
+    reportColumns: [{
+        text: 'id',
+        dataIndex: 'pi_id',
+        hidden: true
     }, {
-        cls:'x-formpanel-btn-blue',
-        xtype:'button',
-        text:'查询',
-        listeners: {
-            click:function(b){
-                var grid = b.ownerCt.ownerCt;
-                var tbar = b.ownerCt;
-                grid.condition = '';
-                var items = [];
-                var fields = tbar.items.items.map(f => f.name);
-                Ext.each(fields, function(f, index){
-                    var field = tbar.down('[name='+f+']');
-                    if(field){
-                        items.push(field);
-                    }
-                });
-                grid.condition = grid.getCondition(items);
-                grid.store.loadPage(1);
-            }
-        }
-    },'->'],
-    columns: [
-        {
-            text: 'id',
-            dataIndex: 'pi_id',
-            hidden: true
-        }, {
-            text: '单据编号',
-            dataIndex: 'sl_code',
-            width: 150
-        }, {
-            text: '单据类型',
-            dataIndex: 'sl_kind',
-            width: 110
-        }, {
-            text: '单据日期',
-            dataIndex: 'date',
-            xtype:'datecolumn',
-            width: 110
-        },{
-            text:'供应商名称',
-            dataIndex:'ve_name',
-            width: 200
-        },{
-            text:'客户名称',
-            dataIndex:'cu_name',
-            width: 200
-        },{
-            text:'核销单号',
-            dataIndex:'pb_code',
-            width: 200
-        },{
-            text: '本期核销金额',
-            dataIndex: 'sl_amount',
-            xtype: 'numbercolumn',
-            width: 130,
-            // renderer : function(v) {
-            //     var arr = (v + '.').split('.');
-            //     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            //     var format = '0.' + xr.join();
-            //     return Ext.util.Format.number(v, format);
-            // },
-            // summaryType: 'sum',
-            // summaryRenderer: function(v) {
-            //     var arr = (v + '.').split('.');
-            //     var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-            //     var format = '0.' + xr.join();
-            //     return Ext.util.Format.number(v, format);
-            // }
-        },{
-            text: '总金额',
-            dataIndex: 'total',
-            xtype: 'numbercolumn',
-            width: 110,
-            // renderer : function(v) {
-            //     var arr = (v + '.').split('.');
-            //     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            //     var format = '0,000.' + xr.join();
-            //     return Ext.util.Format.number(v, format);
-            // },
-            // summaryType: 'sum',
-            // summaryRenderer: function(v) {
-            //     var arr = (v + '.').split('.');
-            //     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-            //     var format = '0,000.' + xr.join();
-            //     return Ext.util.Format.number(v, format);
-            // }
-        }],
-
-    dbSearchFields: [],
-    condition:'',
-
-    initComponent: function() {
-        var me = this;
-        if(me.columns){
-            var fields = me.columns.map(column => column.dataIndex);
-            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.list',
-                        totalProperty: 'data.list.total',
-                    }
-                },
-                listeners: {
-                    beforeload: function (store, op) {
-                        var condition = me.condition;
-                        if (Ext.isEmpty(condition)) {
-                            condition = "";
-                        }
-                        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);
-    },
-
-    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;
-    },
-
-    /**
-     * 获得过滤条件
-     */
-    getCondition: function(items) {
-        var me = this,
-            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(typeof func == 'function') {
-                condition = {
-                    type: 'condition',
-                    value: func(value)
-                }
-            }else {
-                var xtype = item.xtype || 'textfield',
-                    type = item.fieldType || me.getDefaultFieldType(xtype),
-                    operation = item.operation || me.getDefaultFieldOperation(xtype),
-                    conditionValue = me.getConditionValue(xtype, value);
-
-                if(!conditionValue) {
-                    continue;
-                }
-                condition = {
-                    type: type,
-                    field: field,
-                    operation: operation,
-                    value: conditionValue
-                }
-            }
-            conditions.push(condition);
-        };
-        return conditions;
-    },
-
-    getDefaultFieldType: function(xtype) {
-        var type;
-
-        if(Ext.Array.contains(['numberfield'], xtype)) {
-            type = 'number';
-        }else if(Ext.Array.contains(['datefield', 'condatefield'], xtype)) {
-            type = 'date';
-        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo', 'radiofield', 'radio'], xtype)) {
-            type = 'enum';
-        }else {
-            type = 'string';
-        }
-
-        return type;
-    },
-
-    getDefaultFieldOperation: function(xtype) {
-        var operation;
-
-        if(Ext.Array.contains(['numberfield'], xtype)) {
-            operation = '=';
-        }else if(Ext.Array.contains(['datefield'], xtype)) {
-            operation = '=';
-        }else if(Ext.Array.contains(['condatefield'], xtype)) {
-            operation = 'between';
-        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo'], xtype)) {
-            operation = 'in';
-        }else {
-            operation = 'like';
-        }
-
-        return operation;
-    },
-
-    /**
-     * 处理部分字段值
-     */
-    getConditionValue: function(xtype, value) {
-        var conditionValue;
-        if(xtype == 'datefield') {
-            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
-        }else if(xtype == '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(xtype == 'combobox' || xtype == 'combo') {
-            conditionValue = '\'' + value + '\'';
-        }else if(xtype == 'multicombo') {
-            conditionValue = value.map(function(v) {
-                return '\'' + v.value + '\'';
-            }).join(',');
-        }else {
-            conditionValue = value;
-        }
-
-        return conditionValue;
-    },
-
-    refresh:function(){
-        //debugger
-    }
-
+        text: '单据编号',
+        dataIndex: 'sl_code',
+        width: 150
+    }, {
+        text: '单据类型',
+        dataIndex: 'sl_kind',
+        width: 110
+    }, {
+        text: '单据日期',
+        dataIndex: 'date',
+        xtype: 'datecolumn',
+        width: 110
+    }, {
+        text: '供应商名称',
+        dataIndex: 've_name',
+        width: 200
+    }, {
+        text: '客户名称',
+        dataIndex: 'cu_name',
+        width: 200
+    }, {
+        text: '核销单号',
+        dataIndex: 'pb_code',
+        width: 200
+    }, {
+        text: '本期核销金额',
+        dataIndex: 'sl_amount',
+        xtype: 'numbercolumn',
+        width: 130
+    }, {
+        text: '总金额',
+        dataIndex: 'total',
+        xtype: 'numbercolumn',
+        width: 110
+    }],
 });

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

@@ -1,30 +1,6 @@
 Ext.define('saas.view.money.report.AccountDetailsController', {
-    extend: 'saas.view.core.base.BasePanelController',
+    extend: 'saas.view.core.report.ReportPanelController',
     alias: 'controller.money-report-accountdetails',
-    // init: function (form) {
-    //     this.control({
-    //         // 供应商编号
-    //         'dbfindtrigger[name=ve_name]':{
-    //             beforerender:function(f){
-    //                 Ext.apply(f,{
-    //                     dbfinds:[{
-    //                         from:'ve_name',to:'ve_name'
-    //                     }],
-    //                 }) ;
-    //             }
-    //         },
-    //         // 客户编号
-    //         'dbfindtrigger[name=cu_name]':{
-    //             beforerender:function(f){
-    //                 Ext.apply(f,{
-    //                     dbfinds:[{
-    //                         from:'cu_name',to:'cu_name'
-    //                     }],
-    //                 }) ;
-    //             }
-    //         }
-    //     });
-    // }
 
     init: function (form) {
         var me = this;

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

@@ -1,4 +1,4 @@
 Ext.define('saas.view.money.report.AccountDetailsModel', {
-    extend: 'saas.view.core.base.BasePanelModel',
+    extend: 'saas.view.core.report.ReportPanelModel',
     alias: 'viewmodel.money-report-accountdetails'
 });

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

@@ -61,11 +61,13 @@ Ext.define('saas.view.money.report.VendorCheck', {
     },{
         text:'供应商编号',
         dataIndex:'pi_vendcode',
-        width: 150
+        width: 150,
+        hidden:true
     },{
         text:'供应商名称',
         dataIndex:'pi_vendname',
-        width: 200
+        width: 200,
+        hidden:true
     },{
         text: '物料编号',
         dataIndex: 'pr_code',

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

@@ -599,5 +599,65 @@ Ext.define('saas.view.money.verification.FormPanelController', {
             saas.util.BaseUtil.showErrorToast('保存失败: ' + res.message);
             form.fireEvent('aftersave', false, form, res);
         });
-    }
+    },
+    audit: function() {
+        var me = this,
+        form = me.getView(),
+        viewModel = me.getViewModel(),
+        detailCount = form.detailCount,
+        modelData = viewModel.getData();
+
+        //form里面数据
+        var formData = form.getFormData();
+        var params = {
+            main: formData.main
+        };
+
+        for(var i = 0; i < detailCount; i++) {
+            params['items' + ( i + 1)] = formData['detail' + i];
+        }
+
+        saas.util.BaseUtil.request({
+            url: form._auditUrl,
+            params: JSON.stringify(params),
+            method: 'POST',
+        })
+        .then(function(localJson) {
+            if(localJson.success){
+                // 未保存直接审核会返回id
+                if(localJson.data) {
+                    var id = localJson.data.id;
+                    var code = localJson.data.code;
+                    
+                    form.initId = id;
+
+                    var newId = form.xtype + '-' + id;
+                    var newTitle = form._title + '(' + code + ')';
+
+                    saas.util.BaseUtil.refreshTabTitle(newId, newTitle);
+                }
+                saas.util.FormUtil.loadData(form);
+                form.setEditable(false);
+                saas.util.BaseUtil.showSuccessToast('审核成功' + (localJson.message ? ': ' + localJson.message : ''));
+                form.fireEvent('afteraudit', true, form, localJson);
+            }
+        })
+        .catch(function(res) {
+            console.error(res);
+            if(res.data) {
+                var id = localJson.data.id;
+                var code = localJson.data.code;
+                
+                form.initId = id;
+
+                var newId = form.xtype + '-' + id;
+                var newTitle = form._title + '(' + code + ')';
+
+                saas.util.BaseUtil.refreshTabTitle(newId, newTitle);
+                saas.util.FormUtil.loadData(form);
+            }
+            saas.util.BaseUtil.showErrorToast('审核失败: ' + res.message);
+            form.fireEvent('afteraudit', false, form, res);
+        });
+    },
 });

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

@@ -253,16 +253,15 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         var me = this;
         if(me.columns){
             var fields = me.columns.map(column => column.dataIndex);
-            me.store = Ext.create('Ext.data.Store',{
-                model:'saas.model.document.stocking',
-                fields:fields,
+            me.store = Ext.create('Ext.data.Store', {
+                fields: fields,
                 autoLoad: true,
-                pageSize: 11,
+                pageSize: 15,
                 data: [],
                 proxy: {
-                    timeout:8000,
                     type: 'ajax',
                     url: me.dataUrl,
+                    timeout: 8000,
                     actionMethods: {
                         read: 'GET'
                     },
@@ -270,6 +269,21 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
                         type: 'json',
                         rootProperty: 'data.list',
                         totalProperty: 'data.total',
+                    },
+                    listeners: {
+                        exception: function(proxy, response, operation, eOpts) {
+                            if(operation.success) {
+                                if(response.timedout) {
+                                    saas.util.BaseUtil.showErrorToast('请求超时');
+                                }
+                            }else {
+                                if(response.timedout) {
+                                    saas.util.BaseUtil.showErrorToast('请求超时');
+                                }else{
+                                    saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                                }
+                            }
+                        }
                     }
                 },
                 listeners: {
@@ -278,11 +292,6 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
                         if (Ext.isEmpty(condition)) {
                             condition = "";
                         }
-                        // Ext.apply(store.proxy.extraParams, {
-                        //     number: op._page,
-                        //     size: store.pageSize,
-                        //     condition: JSON.stringify(condition)
-                        // });
                         Ext.apply(store.proxy.extraParams, {
                             number: store.exportNumber?store.exportNumber:op._page,
                             size: store.exportPageSize?store.exportPageSize:store.pageSize,
@@ -305,41 +314,100 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         me.callParent(arguments);
     },
 
+    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);
+        },
+    },
+
      /**
      * 获得过滤条件
      */
-    getCondition: function(items) {
+    getConditions: function(moreQuery) {
         var me = this,
+        formItems = me.queryFormItems,
+        moreQueryFormItems = me.moreQueryFormItems,
+        viewModel = me.getViewModel(),
+        viewModelData = viewModel.getData(),
+        bindItems = viewModelData['form'],
+        moreItems = viewModelData['moreForm'],
+        condition,
         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(typeof func == 'function') {
-                condition = {
-                    type: 'condition',
-                    value: func(value)
-                }
-            }else {
-                var xtype = item.xtype || 'textfield',
-                type = item.fieldType || me.getDefaultFieldType(xtype),
-                operation = item.operation || me.getDefaultFieldOperation(xtype),
-                conditionValue = me.getConditionValue(xtype, value);
+
+        if(moreQuery) {
+            for(k in moreItems) {
+                var item = Ext.Array.findBy(moreQueryFormItems, function(i) {
+                    return i.name == k;
+                });
+                var field = item.name,
+                func = item.getCondition,
+                value = moreItems[k],
+                condition;
     
-                if(!conditionValue) {
-                    continue;
+                if(typeof func == 'function') {
+                    condition = {
+                        type: 'condition',
+                        value: func(value)
+                    }
+                }else {
+                    var xtype = item.xtype || 'textfield',
+                    type = item.fieldType || me.getDefaultFieldType(xtype),
+                    operation = item.operation || me.getDefaultFieldOperation(xtype),
+                    conditionValue = me.getConditionValue(xtype, value);
+        
+                    if(!conditionValue) {
+                        continue;
+                    }
+                    condition = {
+                        type: type,
+                        field: field,
+                        operation: operation,
+                        value: conditionValue
+                    }
                 }
-                condition = {
-                    type: type,
-                    field: field,
-                    operation: operation,
-                    value: conditionValue
+                conditions.push(condition);
+            }
+        }else {
+            for(k in bindItems) {
+                var item = Ext.Array.findBy(formItems, function(i) {
+                    return i.name == k;
+                });
+                var field = item.name,
+                func = item.getCondition,
+                value = bindItems[k],
+                condition;
+    
+                if(typeof func == 'function') {
+                    condition = {
+                        type: 'condition',
+                        value: func(value)
+                    }
+                }else {
+                    var xtype = item.xtype || 'textfield',
+                    type = item.fieldType || me.getDefaultFieldType(xtype),
+                    operation = item.operation || me.getDefaultFieldOperation(xtype),
+                    conditionValue = me.getConditionValue(xtype, value);
+        
+                    if(!conditionValue) {
+                        continue;
+                    }
+                    condition = {
+                        type: type,
+                        field: field,
+                        operation: operation,
+                        value: conditionValue
+                    }
                 }
+                conditions.push(condition);
             }
-            conditions.push(condition);
-        };
+        }
+
         return conditions;
     },
 
@@ -358,6 +426,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
 
         return type;
     },
+
     getDefaultFieldOperation: function(xtype) {
         var operation;
 
@@ -375,6 +444,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
 
         return operation;
     },
+
     /**
      * 处理部分字段值
      */

+ 107 - 0
frontend/saas-web/app/view/stock/report/DataList.js

@@ -0,0 +1,107 @@
+Ext.define('saas.view.stock.report.DataList', {
+    extend: 'saas.view.core.report.ReportPanel',
+    xtype: 'stock-report-datalist',
+
+    controller: 'stock-report-datalist',
+    viewModel: 'stock-report-datalist',
+
+    viewName: 'stock-report-datalist',
+
+    groupField: null,
+    listUrl: '/api/document/product/ReserveCost',
+    defaultCondition: null,
+    reportTitle: '物料库存数量金额表',
+    QueryWidth:0.2,
+
+    searchItems: [{
+        name: 'pr_code',
+        xtype: 'textfield',
+        emptyText : '物料编号',
+        columnWidth: 0.2
+    },{
+        name: 'pr_detail',
+        xtype: 'textfield',
+        emptyText : '物料名称',
+        columnWidth: 0.2
+    },{
+        name: 'wh_code',
+        xtype: 'textfield',
+        emptyText : '仓库编号',
+        columnWidth: 0.2
+    },{
+        name: 'wh_description',
+        xtype: 'textfield',
+        emptyText : '仓库名称',
+        columnWidth: 0.2
+    }],
+
+    reportColumns : [{
+        text : "物料编号", 
+        width : 150, 
+        dataIndex : "rc_prodCode", 
+        xtype : "", 
+    },{
+        text : "物料名称", 
+        width : 200.0, 
+        dataIndex : "rc_prodDetail", 
+    }, 
+    {
+        text : "物料规格", 
+        dataIndex : "rc_prodSpec", 
+        width : 150.0, 
+    }, 
+    {
+        text : "单位", 
+        dataIndex : "rc_prodUnit", 
+        width : 80.0, 
+    }, 
+    {
+        text : "仓库编号", 
+        dataIndex : "rc_whCode", 
+        width : 150, 
+    }, 
+    {
+        text : "仓库名称", 
+        dataIndex : "rc_whName", 
+        width : 200.0, 
+    }, 
+    {
+        text : "数量",
+        xtype: 'numbercolumn',
+        dataIndex : "rc_number", 
+        width : 110.0, 
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length>3?3:arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
+    }, 
+    {
+        text : "单价",
+        xtype: 'numbercolumn',
+        align: 'end',
+        dataIndex : "rc_price", 
+        width : 110.0, 
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length>8?8:arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
+    }, 
+    {
+        text : "金额", 
+        xtype: 'numbercolumn',
+        dataIndex : "rc_amount", 
+        width : 110.0,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length>2?2:arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+    }],
+})
+
+

+ 10 - 0
frontend/saas-web/app/view/stock/report/DataListController.js

@@ -0,0 +1,10 @@
+Ext.define('saas.view.stock.report.DataListController', {
+    extend: 'saas.view.core.report.ReportPanelController',
+    alias: 'controller.stock-report-datalist',
+
+    init: function (form) {
+        var me = this;
+        this.control({
+        });
+    }
+});

+ 4 - 0
frontend/saas-web/app/view/stock/report/DataListlModel.js

@@ -0,0 +1,4 @@
+Ext.define('saas.view.stock.report.DataListModel', {
+    extend: 'saas.view.core.report.ReportPanelModel',
+    alias: 'viewmodel.stock-report-datalist'
+});

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

@@ -95,7 +95,7 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         width: 150
     }, {
         text: '单位',
-        dataIndex: 'pd_unit',
+        dataIndex: 'pr_unit',
         width: 80
     }, {
         text: '入库数量',

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

@@ -1,312 +0,0 @@
-/**
- * Created by zhouy on 2018/10/18.
- */
-Ext.define('saas.view.stock.stockamount.DataList', {
-    extend: 'Ext.grid.Panel',
-    xtype: 'stock-stockamount-datalist',
-    controller: 'stock-stockamount-datalist',
-    viewModel: 'stock-stockamount-datalist',
-    autoScroll: true,
-    frame:true,
-    layout:'fit',
-    //工具类
-    FormUtil: Ext.create('saas.util.FormUtil'),
-    BaseUtil: Ext.create('saas.util.BaseUtil'),
-    dataUrl:'/api/document/product/ReserveCost',                 
-
-    tbar: [{
-        width: 150,
-        name: 'pr_code',
-        xtype: 'textfield',
-        emptyText : '物料编号'
-    },{
-        width: 200,
-        name: 'pr_detail',
-        xtype: 'textfield',
-        emptyText : '物料名称'
-    },{
-        width: 150,
-        name: 'wh_code',
-        xtype: 'textfield',
-        emptyText : '仓库编号'
-    },{
-        width: 200,
-        name: 'wh_description',
-        xtype: 'textfield',
-        emptyText : '仓库名称'
-    },{
-        cls:'x-formpanel-btn-blue',
-        xtype:'button',
-        text:'查询',
-        listeners: {
-            click:function(b){
-                var grid = b.ownerCt.ownerCt;
-                var tbar = b.ownerCt;
-                grid.condition = '';
-                var items = [];
-                var fields = tbar.items.items.map(f => f.name);
-                Ext.each(fields, function(f, index){
-                    var field = tbar.down('[name='+f+']');
-                    if(field){
-                        items.push(field);
-                    }
-                });
-                grid.condition = grid.getCondition(items);
-                grid.store.loadPage(1);
-            }
-        }
-    },'->'],
-
-    columns : [{
-        text : "物料编号", 
-        width : 150, 
-        dataIndex : "rc_prodCode", 
-        xtype : "", 
-    },{
-        text : "物料名称", 
-        width : 200.0, 
-        dataIndex : "rc_prodDetail", 
-    }, 
-    {
-        text : "物料规格", 
-        dataIndex : "rc_prodSpec", 
-        width : 150.0, 
-    }, 
-    {
-        text : "单位", 
-        dataIndex : "rc_prodUnit", 
-        width : 80.0, 
-    }, 
-    {
-        text : "仓库编号", 
-        dataIndex : "rc_whCode", 
-        width : 150, 
-    }, 
-    {
-        text : "仓库名称", 
-        dataIndex : "rc_whName", 
-        width : 200.0, 
-    }, 
-    {
-        text : "数量",
-        xtype: 'numbercolumn',
-        dataIndex : "rc_number", 
-        width : 110.0, 
-        renderer : function(v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length>3?3:arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
-            return Ext.util.Format.number(v, format);
-        }
-    }, 
-    {
-        text : "单价",
-        xtype: 'numbercolumn',
-        align: 'end',
-        dataIndex : "rc_price", 
-        width : 110.0, 
-        renderer : function(v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length>8?8:arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
-            return Ext.util.Format.number(v, format);
-        }
-    }, 
-    {
-        text : "金额", 
-        xtype: 'numbercolumn',
-        dataIndex : "rc_amount", 
-        width : 110.0,
-        renderer : function(v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length>2?2:arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
-            return Ext.util.Format.number(v, format);
-        },
-    }],
-
-    dbSearchFields: [],
-    condition:'',
-
-    initComponent: function() {
-        var me = this;
-        if(me.columns){
-            var fields = me.columns.map(column => column.dataIndex);
-            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',
-                    }
-                },
-                listeners: {
-                    beforeload: function (store, op) {
-                        var condition = me.condition;
-                        if (Ext.isEmpty(condition)) {
-                            condition = "";
-                        }
-                        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);
-    },
-
-    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;
-    },
-
-    /**
-     * 获得过滤条件
-     */
-    getCondition: function(items) {
-        var me = this,
-        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(typeof func == 'function') {
-                condition = {
-                    type: 'condition',
-                    value: func(value)
-                }
-            }else {
-                var xtype = item.xtype || 'textfield',
-                type = item.fieldType || me.getDefaultFieldType(xtype),
-                operation = item.operation || me.getDefaultFieldOperation(xtype),
-                conditionValue = me.getConditionValue(xtype, value);
-    
-                if(!conditionValue) {
-                    continue;
-                }
-                condition = {
-                    type: type,
-                    field: field,
-                    operation: operation,
-                    value: conditionValue
-                }
-            }
-            conditions.push(condition);
-        };
-        return conditions;
-    },
-
-    getDefaultFieldType: function(xtype) {
-        var type;
-
-        if(Ext.Array.contains(['numberfield'], xtype)) {
-            type = 'number';
-        }else if(Ext.Array.contains(['datefield', 'condatefield'], xtype)) {
-            type = 'date';
-        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo', 'radiofield', 'radio'], xtype)) {
-            type = 'enum';
-        }else {
-            type = 'string';
-        }
-
-        return type;
-    },
-
-    getDefaultFieldOperation: function(xtype) {
-        var operation;
-
-        if(Ext.Array.contains(['numberfield'], xtype)) {
-            operation = '=';
-        }else if(Ext.Array.contains(['datefield'], xtype)) {
-            operation = '=';
-        }else if(Ext.Array.contains(['condatefield'], xtype)) {
-            operation = 'between';
-        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo'], xtype)) {
-            operation = 'in';
-        }else {
-            operation = 'like';
-        }
-
-        return operation;
-    },
-
-    /**
-     * 处理部分字段值
-     */
-    getConditionValue: function(xtype, value) {
-        var conditionValue;
-        if(xtype == 'datefield') {
-            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
-        }else if(xtype == '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(xtype == 'combobox' || xtype == 'combo') {
-            conditionValue = '\'' + value + '\'';
-        }else if(xtype == 'multicombo') {
-            conditionValue = value.map(function(v) {
-                return '\'' + v.value + '\'';
-            }).join(',');
-        }else {
-            conditionValue = value;
-        }
-
-        return conditionValue;
-    },
-
-    refresh:function(){
-        //debugger
-    }
-
-})
-
-

+ 0 - 10
frontend/saas-web/app/view/stock/stockamount/DataListController.js

@@ -1,10 +0,0 @@
-Ext.define('saas.view.stock.stockamount.DataListController', {
-    extend: 'saas.view.core.base.BasePanelController',
-    alias: 'controller.stock-stockamount-datalist',
-
-    init: function (form) {
-        var me = this;
-        this.control({
-        });
-    }
-});

+ 0 - 4
frontend/saas-web/app/view/stock/stockamount/DataListlModel.js

@@ -1,4 +0,0 @@
-Ext.define('saas.view.stock.stockamount.DataListModel', {
-    extend: 'saas.view.core.base.BasePanelModel',
-    alias: 'viewmodel.stock-stockamount-datalist'
-});

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

@@ -166,7 +166,10 @@ Ext.define('saas.view.sys.config.FormPanel', {
                     var fileEl = field.fileInputEl.dom;
                     fileEl.setAttribute("accept","image/*");
                 },
-                change: function(field){
+                change: function(field,nowValue,oldValue){
+                    if(nowValue==""){
+                        return true;
+                    }
                     var form = field.ownerCt.ownerCt;
                     var myForm = field.ownerCt;
                     var fileEl = field.fileInputEl.dom;
@@ -199,7 +202,7 @@ Ext.define('saas.view.sys.config.FormPanel', {
                                 if(data.id){
                                     var serverOptions = Ext.manifest.server;
                                     var img = myForm.down('[name=SignetPhoto]');
-                                    img.el.dom.src = serverOptions.basePath.http?serverOptions.basePath.http:serverOptions.basePath + '/api/file/download?path='+data.fullPath;
+                                    img.el.dom.src = (serverOptions.basePath.http?serverOptions.basePath.http:serverOptions.basePath) + '/api/file/download?path='+data.fullPath;
                                     var showSignetPhoto = form.down('[name=showSignetPhoto]');
                                     showSignetPhoto.show();
                                 }
@@ -293,7 +296,10 @@ Ext.define('saas.view.sys.config.FormPanel', {
                     var fileEl = field.fileInputEl.dom;
                     fileEl.setAttribute("accept","image/*");
                 },
-                change: function(field){
+                change: function(field,nowValue,oldValue){
+                    if(nowValue==""){
+                        return true;
+                    }
                     var form = field.ownerCt.ownerCt;
                     var myForm = field.ownerCt;
                     var fileEl = field.fileInputEl.dom;
@@ -325,7 +331,7 @@ Ext.define('saas.view.sys.config.FormPanel', {
                                 if(data.id){
                                     var serverOptions = Ext.manifest.server;
                                     var img = myForm.down('[name=LogoPhoto]');
-                                    img.el.dom.src = serverOptions.basePath.http?serverOptions.basePath.http:serverOptions.basePath + '/api/file/download?path='+data.fullPath;
+                                    img.el.dom.src = (serverOptions.basePath.http?serverOptions.basePath.http:serverOptions.basePath) + '/api/file/download?path='+data.fullPath;
                                     var showLogoPhoto = form.down('[name=showLogoPhoto]');
                                     showLogoPhoto.show();
                                 }
@@ -414,7 +420,7 @@ Ext.define('saas.view.sys.config.FormPanel', {
         var signet = form.down('[name=signet]').value;
         if(signet&&signet!=''){
             var img = form.down('[name=SignetPhoto]');
-            img.el.dom.src = serverOptions.basePath.http?serverOptions.basePath.http:serverOptions.basePath + '/api/file/download?path='+signet;
+            img.el.dom.src = (serverOptions.basePath.http?serverOptions.basePath.http:serverOptions.basePath) + '/api/file/download?path='+signet;
             var showSignetPhoto = form.down('[name=showSignetPhoto]');
             showSignetPhoto.show();
         }
@@ -422,7 +428,7 @@ Ext.define('saas.view.sys.config.FormPanel', {
         var logoUrl = form.down('[name=logoUrl]').value;
         if(logoUrl&&logoUrl!=''){
             var img = form.down('[name=LogoPhoto]');
-            img.el.dom.src = serverOptions.basePath.http?serverOptions.basePath.http:serverOptions.basePath + '/api/file/download?path='+logoUrl;
+            img.el.dom.src = (serverOptions.basePath.http?serverOptions.basePath.http:serverOptions.basePath) + '/api/file/download?path='+logoUrl;
             var showLogoPhoto = form.down('[name=showLogoPhoto]');
             showLogoPhoto.show();
         }
@@ -472,7 +478,7 @@ Ext.define('saas.view.sys.config.FormPanel', {
 
     downLoad:function(path){
         var serverOptions = Ext.manifest.server;
-        window.location.href = serverOptions.basePath.http?serverOptions.basePath.http:serverOptions.basePath + '/api/file/download?path='+path;
+        window.location.href = (serverOptions.basePath.http?serverOptions.basePath.http:serverOptions.basePath) + '/api/file/download?path='+path;
         //ajax 响应下载必须要创建一个form实例
         // if (!Ext.fly('ext-attach-download')) {  
 		// 	var frm = document.createElement('form');  

+ 2 - 2
frontend/saas-web/resources/json/navigation.json

@@ -110,8 +110,8 @@
             "viewType": "stock-report-prodinoutCount"
         }, {
             "text": "物料库存数量金额表",
-            "id":"stock-stockamount-datalist",
-            "viewType": "stock-stockamount-datalist"
+            "id":"stock-report-datalist",
+            "viewType": "stock-report-datalist"
         }]
     }]
 }, {