Browse Source

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

chenw 7 years ago
parent
commit
66d5417d2d
51 changed files with 403 additions and 87 deletions
  1. 1 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 4 4
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/JasperReportController.java
  3. 1 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/JasperReportService.java
  4. 10 2
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/JasperReportServiceImpl.java
  5. 29 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/EmployeeController.java
  6. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java
  7. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CustomerMapper.java
  8. 4 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/EmployeeService.java
  9. 19 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  10. 18 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  11. 52 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/EmployeeServiceImpl.java
  12. 4 0
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  13. 5 0
      applications/document/document-server/src/main/resources/mapper/CustomerMapper.xml
  14. 6 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/SaleList.java
  15. 1 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  16. 1 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  17. 3 0
      applications/sale/sale-server/src/main/resources/mapper/SaleListMapper.xml
  18. 1 0
      frontend/saas-web/app/view/core/form/DataMultiCombo.js
  19. 2 1
      frontend/saas-web/app/view/core/form/FormPanel.js
  20. 1 1
      frontend/saas-web/app/view/core/form/RemoteCombo.js
  21. 4 1
      frontend/saas-web/app/view/core/form/field/ConDateField.js
  22. 37 14
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  23. 14 8
      frontend/saas-web/app/view/core/query/QueryFormPanel.js
  24. 2 1
      frontend/saas-web/app/view/core/query/QueryGridPanel.js
  25. 2 0
      frontend/saas-web/app/view/document/bom/BasePanel.js
  26. 1 1
      frontend/saas-web/app/view/document/bom/FormPanel.js
  27. 9 0
      frontend/saas-web/app/view/document/kind/ChildForm.js
  28. 1 0
      frontend/saas-web/app/view/document/kind/Kind.js
  29. 18 13
      frontend/saas-web/app/view/document/kind/KindController.js
  30. 3 0
      frontend/saas-web/app/view/document/vendor/BasePanel.js
  31. 9 2
      frontend/saas-web/app/view/home/charts/MonthSale.js
  32. 1 0
      frontend/saas-web/app/view/home/charts/MonthSale.scss
  33. 84 11
      frontend/saas-web/app/view/home/charts/SaleTrend.js
  34. 5 3
      frontend/saas-web/app/view/main/Main.js
  35. 1 1
      frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js
  36. 1 1
      frontend/saas-web/app/view/money/payBalance/QueryPanel.js
  37. 1 1
      frontend/saas-web/app/view/money/payBalance/QueryPanelController.js
  38. 2 2
      frontend/saas-web/app/view/money/recBalance/FormPanelController.js
  39. 1 1
      frontend/saas-web/app/view/money/recBalance/QueryPanelController.js
  40. 7 1
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  41. 7 1
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js
  42. 2 2
      frontend/saas-web/app/view/sale/sale/QueryPanel.js
  43. 3 1
      frontend/saas-web/app/view/stock/otherIn/QueryPanel.js
  44. 4 1
      frontend/saas-web/app/view/stock/otherOut/QueryPanel.js
  45. 2 0
      frontend/saas-web/app/view/sys/config/FormPanel.js
  46. 1 1
      frontend/saas-web/app/view/sys/feedback/FormPanel.js
  47. 3 2
      frontend/saas-web/app/view/sys/manager/FormPanel.scss
  48. 1 2
      frontend/saas-web/app/view/sys/power/GroupGrid.js
  49. 4 0
      frontend/saas-web/app/view/viewport/Viewport.js
  50. 6 0
      frontend/saas-web/app/view/viewport/ViewportController.js
  51. 1 1
      frontend/saas-web/resources/json/navigation.json

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

@@ -32,6 +32,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_RELDELETE_DELETEPROD(79308,"存在关联单据,不允许删除"),
     BIZ_PRODWHCODE_REPEAT(79309, "明细仓库重复"),
     BIZ_UNENDPRODUCT(79310,"系统还未结账,不能反结账"),
+    BIZ_RELUPDATE_CODEANDNAME(79311,"存在关联单据,不允许更新编号,名称"),
     NO_OPRATIONDATA(79400,"无可操作单据"),
     BOM_SAVE(79401, "产品编号+版本号已存在"),
     REPEAT_NAME(79501, "名称重复"),

+ 4 - 4
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/JasperReportController.java

@@ -30,14 +30,14 @@ public class JasperReportController {
     }
 
     @PostMapping("/print")
-    public Result print(String caller, String reportName, Integer id, boolean isProdIO) {
-        JasperResult print = jasperReportService.print(caller, reportName, id, isProdIO, false);
+    public Result print(String caller, String code, String reportName, Integer id, boolean isProdIO) {
+        JasperResult print = jasperReportService.print(caller, code, reportName, id, isProdIO, false);
         return Result.success(print);
     }
 
     @PostMapping("/printByDefault")
-    public Result printByDefault(String caller, String reportName, Integer id, boolean isProdIO) {
-        JasperResult print = jasperReportService.print(caller, reportName, id, isProdIO, true);
+    public Result printByDefault(String caller, String code, String reportName, Integer id, boolean isProdIO) {
+        JasperResult print = jasperReportService.print(caller, code, reportName, id, isProdIO, true);
         return Result.success(print);
     }
 }

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

@@ -9,5 +9,5 @@ public interface JasperReportService {
 
     List<SysPrintSet> getPrintSet(String caller);
 
-    JasperResult print(String caller, String reportName, Integer id, boolean isProdIO, boolean isDefault);
+    JasperResult print(String caller, String code, String reportName, Integer id, boolean isProdIO, boolean isDefault);
 }

+ 10 - 2
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/JasperReportServiceImpl.java

@@ -1,11 +1,14 @@
 package com.usoftchina.saas.commons.service.impl;
 
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.mapper.SysprintsetMapper;
 import com.usoftchina.saas.commons.po.Configs;
 import com.usoftchina.saas.commons.po.JasperResult;
+import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.SysPrintSet;
 import com.usoftchina.saas.commons.service.ConfigsService;
 import com.usoftchina.saas.commons.service.JasperReportService;
+import com.usoftchina.saas.commons.service.MessageLogService;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.context.SpringContextHolder;
 import com.usoftchina.saas.exception.BizException;
@@ -29,6 +32,8 @@ public class JasperReportServiceImpl implements JasperReportService{
     private SysprintsetMapper sysprintsetMapper;
     @Autowired
     private ConfigsService configsService;
+    @Autowired
+    private MessageLogService messageLogService;
 
     @Override
     public List<SysPrintSet> getPrintSet(String caller) {
@@ -40,7 +45,7 @@ public class JasperReportServiceImpl implements JasperReportService{
     }
 
     @Override
-    public JasperResult print(String caller, String reportName, Integer id, boolean isProdIO, boolean isDefault) {
+    public JasperResult print(String caller, String code, String reportName, Integer id, boolean isProdIO, boolean isDefault) {
         Long companyId = BaseContextHolder.getCompanyId();
         JasperResult result = new JasperResult();
         SysPrintSet printSet = null;
@@ -71,9 +76,12 @@ public class JasperReportServiceImpl implements JasperReportService{
         if (!StringUtils.isEmpty(printSet.getDefaultcondition())) {
             condition += " and " + printSet.getDefaultcondition();
         }
+        //日志记录
+        DocBaseDTO baseDTO = new DocBaseDTO(Long.valueOf(id), code, caller);
+        messageLogService.customizeLog(baseDTO, Operation.PRINT);
 
         result.setReportName(printSet.getReportname());
-        result.setTitle(printSet.getTitle());
+        result.setTitle(StringUtils.isEmpty(code) ? printSet.getTitle() : printSet.getTitle() + "(" + code + ")");
         result.setPrinturl(printUrl);
         result.setWhereCondition(condition);
         result.setPrinttype(StringUtils.isEmpty(printSet.getPrinttype()) ? "" : printSet.getPrinttype());

+ 29 - 3
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/EmployeeController.java

@@ -7,7 +7,7 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.document.dto.CustomerFormDTO;
 import com.usoftchina.saas.document.dto.EmployeeDTO;
-import com.usoftchina.saas.document.dto.EmployeeFormDTO;
+import com.usoftchina.saas.document.entities.Employee;
 import com.usoftchina.saas.document.service.EmployeeService;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -60,8 +60,8 @@ public class EmployeeController {
      * @return
      */
     @PostMapping("/save")
-    public Result<DocBaseDTO> saveFormData(@RequestBody EmployeeFormDTO data) {
-        DocBaseDTO save = employeeService.saveFormData(data.getMain());
+    public Result<DocBaseDTO> saveFormData(@RequestBody Employee employee) {
+        DocBaseDTO save = employeeService.saveFormData(employee);
         return Result.success(save);
     }
 
@@ -90,6 +90,32 @@ public class EmployeeController {
         return Result.success();
     }
 
+    /**
+     * 关闭
+     * @param id
+     * @return
+     */
+    @PostMapping("/close/{id}")
+    public Result close(@PathVariable("id") Long id){
+        DocBaseDTO docBaseDTO = employeeService.close(id);
+        return Result.success(docBaseDTO);
+    }
+
+    /**
+     * 开启
+     * @param id
+     * @return
+     */
+    @PostMapping("/open/{id}")
+    public Result open(@PathVariable("id") Long id){
+        DocBaseDTO docBaseDTO = employeeService.open(id);
+        return Result.success(docBaseDTO);
+    }
+
+
+
+
+
     @GetMapping("/getEmployeeByAccount")
     public Map<String,Object> getEmployeeByAccount(){
         return employeeService.getEmployeeByAccount();

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

@@ -29,4 +29,6 @@ public interface BankinformationMapper extends CommonBaseMapper<Bankinformation>
 
     void check(Map<String, Object> map);
 
+    Double selectamount(Long id);
+
 }

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CustomerMapper.java

@@ -31,4 +31,6 @@ public interface CustomerMapper extends CommonBaseMapper<Customer> {
     int validFinish(@Param("id") Long id,@Param("companyId") Long companyId);
 
     void check(Map<String, Object> map);
+
+    int validNameAndCodeWhenRelated(Customer customer);
 }

+ 4 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/EmployeeService.java

@@ -29,4 +29,8 @@ public interface EmployeeService extends CommonBaseService<EmployeeMapper, Emplo
     void batchDelete(BatchDealBaseDTO baseDTOs);
 
     Map<String,Object> getEmployeeByAccount();
+
+    DocBaseDTO close(Long id);
+
+    DocBaseDTO open(Long id);
 }

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

@@ -47,6 +47,7 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
         bankinformation.setCompanyId(BaseContextHolder.getCompanyId());
         bankinformation.setBk_income(new Double(0));
         bankinformation.setBk_spending(new Double(0));
+        int bid = Math.toIntExact(bankinformation.getId());
 
         String bktion = bankinformationMapper.selectBankcode(bankinformation.getBk_bankcode());
         //先判断ID,再判断编号
@@ -58,6 +59,24 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
             bankinformation.setBk_thisamount(bankinformation.getBk_beginamount());
             bankinformationMapper.insertSelective(bankinformation);
         }else {
+            //判断是否能修改期初金额
+            Double beginamount = bankinformationMapper.selectamount(bankinformation.getId());
+            Double fbeginamount = bankinformation.getBk_beginamount();
+            if (!(fbeginamount.equals(beginamount))){
+                DocBaseDTO docBaseDTO = getBaseDTOById(bid);
+                Map<String, Object> map = new HashMap<String, Object>();
+                map.put("v_id",bid);
+                map.put("v_code", docBaseDTO.getCode());
+                map.put("v_type","bank");
+                map.put("v_companyid",BaseContextHolder.getCompanyId());
+                map.put("v_res","");
+                bankinformationMapper.check(map);
+                Object result =  map.get("v_res");
+                if(!StringUtils.isEmpty(result)){
+                    throw new BizException(BizExceptionCode.USING_EXISTS.getCode(),result.toString());
+                }
+            }
+
             Long id = bankinformationMapper.selectBankId(bankinformation.getBk_bankcode());
             if (bktion != null){
                 if (id.equals(bankinformation.getId())){

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

@@ -138,13 +138,13 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         cu_code = pushMaxnubmer(cu_code, cu_id);
         //单号赋值
         customer.setCu_code(cu_code);
+        //新增
         if (StringUtils.isEmpty(cu_id) || "0".equals(cu_id.toString())) {
             //检查名称和编号
             int count = getMapper().validNameAndCodeWhenInsert(customer);
             if (count>0) {
                 throw new BizException(BizExceptionCode.REPEAT_CUSTOMERCODE);
             }
-            //插入操作
             getMapper().insertSelective(customer);
             cu_id = customer.getId();
             //添加从表传输对象
@@ -173,6 +173,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             if (insertDetail2.size()>0) {
                 customeraddressMapper.batchInsert(insertDetail2);
             }
+            //更新
         }else {
             //检查名称和编号
             int count = getMapper().validNameAndCodeWhenUpdate(customer);
@@ -180,6 +181,22 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
                 throw new BizException(BizExceptionCode.REPEAT_CUSTOMERCODE);
             }
 
+            //有关联时不可修改名称编号
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("v_id",cu_id);
+            map.put("v_code", cu_code);
+            map.put("v_type","cust");
+            map.put("v_companyid",BaseContextHolder.getCompanyId());
+            map.put("v_res","");
+            customerMapper.check(map);
+            Object result =  map.get("v_res");
+            if(!StringUtils.isEmpty(result)){
+                count = getMapper().validNameAndCodeWhenRelated(customer);
+                if (count > 0) {
+                    throw new BizException(BizExceptionCode.BIZ_RELUPDATE_CODEANDNAME);
+                }
+            }
+
             //检查期初日期是否已结转
             count = getMapper().validFinish(cu_id, companyId);
             if (count > 0) {

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

@@ -122,6 +122,58 @@ public class EmployeeServiceImpl extends CommonBaseServiceImpl<EmployeeMapper, E
         return map;
     }
 
+    @Override
+    public DocBaseDTO close(Long id) {
+        if (id != null && id > 0){
+            Employee employee = getMapper().selectByPrimaryKey(id);
+            if (employee == null) {
+                throw new BizException(BizExceptionCode.NO_DATA);
+            }
+            if ("正式".equals(employee.getEm_class())){
+                String code = employee.getEm_code();
+                employee = new Employee();
+                employee.setId(id);
+                employee.setEm_class("离职");
+                employee.setUpdaterId(BaseContextHolder.getUserId());
+                employee.setUpdateTime(new Date());
+                getMapper().updateByPrimaryKeySelective(employee);
+                DocBaseDTO docBaseDTO = generateMsgObj(id,code);
+                messageLogService.open(docBaseDTO);
+                return docBaseDTO;
+            }else {
+                throw new BizException(BizExceptionCode.BIZ_CLOSE);
+            }
+        }else {
+            throw new BizException(BizExceptionCode.ILLEGAL_ID);
+        }
+    }
+
+    @Override
+    public DocBaseDTO open(Long id) {
+        if (id != null && id > 0){
+            Employee employee = getMapper().selectByPrimaryKey(id);
+            if (employee == null) {
+                throw new BizException(BizExceptionCode.NO_DATA);
+            }
+            if ("离职".equals(employee.getEm_class())){
+                String code = employee.getEm_code();
+                employee = new Employee();
+                employee.setId(id);
+                employee.setEm_class("正式");
+                employee.setUpdaterId(BaseContextHolder.getUserId());
+                employee.setUpdateTime(new Date());
+                getMapper().updateByPrimaryKeySelective(employee);
+                DocBaseDTO docBaseDTO = generateMsgObj(id,code);
+                messageLogService.open(docBaseDTO);
+                return docBaseDTO;
+            }else {
+                throw new BizException(BizExceptionCode.BIZ_OPEN);
+            }
+        }else {
+            throw new BizException(BizExceptionCode.ILLEGAL_ID);
+        }
+    }
+
     private List<EmployeeDTO> getList(ListReqDTO listReqDTO){
         Long companyId = BaseContextHolder.getCompanyId();
         String condition = listReqDTO.getFinalCondition();

+ 4 - 0
applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml

@@ -344,6 +344,10 @@
         select bk_id from bankinformation where bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR}
    </select>
 
+  <select id="selectamount" parameterType="java.lang.Long" resultType="java.lang.Double">
+        select bk_beginamount from bankinformation where bk_id = #{bk_id,jdbcType=INTEGER}
+   </select>
+
   <select id="check" parameterMap="checkParamMap" statementType="CALLABLE">
         CALL SP_LIMITBASE(?, ?, ?, ?,?)
     </select>

+ 5 - 0
applications/document/document-server/src/main/resources/mapper/CustomerMapper.xml

@@ -402,5 +402,10 @@
     <parameter property="v_res" jdbcType="VARCHAR" mode="OUT" />
   </parameterMap>
 
+  <select id="validNameAndCodeWhenRelated" parameterType="com.usoftchina.saas.document.entities.Customer" resultType="int">
+    select count(1) from customer where (cu_code != #{cu_code,jdbcType=VARCHAR} or cu_name != #{cu_name,jdbcType=VARCHAR})
+    and cu_id != #{id} and companyId =#{companyId}
+  </select>
+
 
 </mapper>

+ 6 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/SaleList.java

@@ -67,6 +67,10 @@ public class SaleList implements Serializable {
 
     private String sa_text5;
 
+    private String creatorname;
+
+    private String sa_auditman;
+
     private Integer sd_id;
 
     private Integer sd_said;
@@ -106,6 +110,8 @@ public class SaleList implements Serializable {
     private String sd_text4;
 
     private String sd_text5;
+    //已转数
+    private Double sd_yqty;
 
     //private ProductDTO productDTO;级联属性会导致分页查询出现BUG,设置数与查询数量不一致
     private Long pr_id;

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

@@ -481,7 +481,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         setTotal(targetPi);
 
         //日志记录
-        DocBaseDTO baseDTO = new DocBaseDTO(pi_id, piInoutno, BillCodeSeq.SALEIN.getName());
+        DocBaseDTO baseDTO = new DocBaseDTO(id, sourcePi.getPi_inoutno(), BillCodeSeq.SALEIN.getCaller());
         messageLogService.customizeLog(baseDTO, Operation.TURNPRODOUTRETURN);
         return baseDTO;
 

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

@@ -492,7 +492,7 @@ public class SaleServiceImpl implements SaleService{
         prodIODetailMapper.updatePDSaleOut(pi_id);
         prodInOutMapper.updatePiTotal(pi_id);
         //日志记录
-        DocBaseDTO baseDTO = new DocBaseDTO(pi_id, pi_inoutno, BillCodeSeq.SALEOUT.getName());
+        DocBaseDTO baseDTO = new DocBaseDTO(id, sale.getSa_code(), BillCodeSeq.SALEOUT.getCaller());
         messageLogService.customizeLog(baseDTO, Operation.TURNPRODOUT);
         return baseDTO;
     }

+ 3 - 0
applications/sale/sale-server/src/main/resources/mapper/SaleListMapper.xml

@@ -19,6 +19,8 @@
         <result column="sa_printstatuscode" property="sa_printstatuscode" jdbcType="VARCHAR" />
         <result column="sa_recorderid" property="sa_recorderid" jdbcType="INTEGER" />
         <result column="sa_recorder" property="sa_recorder" jdbcType="VARCHAR" />
+        <result column="creatorname" property="creatorname" jdbcType="VARCHAR" />
+        <result column="sa_auditman" property="sa_auditman" jdbcType="VARCHAR" />
         <result column="sa_recorddate" property="sa_recorddate" jdbcType="TIMESTAMP" />
         <result column="companyid" property="companyid" jdbcType="INTEGER" />
         <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
@@ -42,6 +44,7 @@
         <result column="sd_nettotal" property="sd_nettotal" jdbcType="DOUBLE" />
         <result column="sd_delivery" property="sd_delivery" jdbcType="TIMESTAMP" />
         <result column="sd_sendqty" property="sd_sendqty" jdbcType="DOUBLE" />
+        <result column="sd_yqty" property="sd_yqty" jdbcType="DOUBLE" />
         <result column="sd_pdqty" property="sd_pdqty" jdbcType="DOUBLE" />
         <result column="sd_remark" property="sd_remark" jdbcType="VARCHAR" />
         <result column="sd_text1" property="sd_text1" jdbcType="VARCHAR" />

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

@@ -6,6 +6,7 @@ Ext.define('saas.view.core.form.DataMultiCombo', {
     alias: 'widget.datamulticombo',
     editable : false,
     matchFieldWidth: true,
+    autoScroll:true,
     value: [],
     cachedConfig: {
         menuAlign: 'tl-bl?',

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

@@ -47,7 +47,7 @@ Ext.define('saas.view.core.form.FormPanel', {
     initComponent: function () {
         var me = this,
         auditTexts = me.auditTexts;
-
+        me._deleteMsg = '删除的'+me._title+'将不能恢复,请确认是否删除?';
         me.initViewModel();
         saas.util.FormUtil.setItems(me);
 
@@ -300,6 +300,7 @@ Ext.define('saas.view.core.form.FormPanel', {
                 detnoColumn = grid.detnoColumn,
                 store = detail.detailStore;
 
+            store.removeAll();
             if (detailData.length > 0) {
 
                 for(var j = 0; j < detailData.length; j++) {

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

@@ -37,7 +37,7 @@ Ext.define('saas.view.core.form.RemoteCombo', {
             picker;
         var count = this.store.getCount();
         var pickerCfg = Ext.apply({
-                height: count>5?248-(me.hiddenBtn?50:0):(33*count+me.hiddenBtn?0:50),
+                height: count>5?248-(me.hiddenBtn?50:0):(33*count+(me.hiddenBtn?0:50)),
                 hiddenBtn:me.hiddenBtn,
                 xtype: 'boundlistadd',
                 id: me.id + '-picker',

+ 4 - 1
frontend/saas-web/app/view/core/form/ConDateField.js → frontend/saas-web/app/view/core/form/field/ConDateField.js

@@ -1,7 +1,7 @@
 /**
  * Created by UAS30 on 2018/10/11.
  */
-Ext.define('saas.view.core.form.ConDateField', {
+Ext.define('saas.view.core.form.field.ConDateField', {
     extend: 'Ext.form.FieldContainer',
     alias: 'widget.condatefield',
     layout: 'hbox',
@@ -14,6 +14,9 @@ Ext.define('saas.view.core.form.ConDateField', {
     },
     columnWidth: 0.5,
     defaultBindProperty: 'value',
+
+    cls: 'x-condatefield',
+
     initComponent : function(){
         this.cls = (this.cls || '') + ' x-form-field-multi';
         this.callParent(arguments);

+ 37 - 14
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -4,6 +4,8 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
 
     cls: 'x-detailgridfield',
 
+    sortableColumns: false,
+    enableColumnHide: false,
     border: 1,
     margin: '0 0 10 0', // formpanel的fieldDefaults未生效
     height: 245,
@@ -223,23 +225,44 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         records = store.getData().items,
         selectedRecord = records.find(function(r) {
             return r.get(detnoColumn) == v;
-        }),
-        detno = 0;
+        });
+
+        store.each(function(item){
+            var t = item.data[detnoColumn];
+            if(t > v) {
+                item.set(detnoColumn, t + 1);
+            }
+        });
 
-        //当前行后序号全部加1
-        if(selectedRecord){
-            detno = selectedRecord.data[detnoColumn];
-            var store = me.store;
-            store.each(function(item){
-                var t = item.data[detnoColumn];
-                if(Number(t) > detno) {
-                    item.set(detnoColumn, Number(t) + 1);
-                }
-            });
-        }
         var data = d || {};
-        data[detnoColumn] = detno + 1;
+        data[detnoColumn] = v + 1;
         var r = store.insert(store.indexOf(selectedRecord) + 1, data);
+
+        store.each(function(s) {
+            var itemFields = s.fields,
+            itemData = s.getData(),
+            dirtyFields = [];
+
+            for(var x = 0; x < itemFields.length; x++) {
+                var field = itemFields[x],
+                name = field.name,
+                type = field.type;
+
+                if(type == 'int' && itemData[name] == 0) {
+                }else if(type == 'string' && itemData[name] == '') {
+                }else if(type == 'float' && itemData[name] == 0) {
+                }else if(type == 'date' && itemData[name] == null) {
+                }else {
+                    dirtyFields.push(name);
+                }
+            }
+
+            // 如果有有效数据(非ID和序号列)才算dirty,否则直接commit
+            if(dirtyFields.length == 2 && Ext.Array.contains(dirtyFields, 'id') && Ext.Array.contains(dirtyFields, detnoColumn)) {
+                s.commit()
+            }
+        });
+
         me.fireEvent('validChange');
         return r;
     },

+ 14 - 8
frontend/saas-web/app/view/core/query/QueryFormPanel.js

@@ -34,14 +34,20 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
 
     listeners: {
         beforerender: function(form) {
-            var fiels = form.getForm().getFields();
-            fiels.each(function(f) {
-                f.on && f.on({
-                    keydown: {
-                        fn: 'onQuery',
-                    }
-                });
-            });
+            // var fiels = form.getForm().getFields();
+            // fiels.each(function(f) {
+            //     console.log(f, f.on);
+            //     f.on && f.on({
+            //         keydown: {
+            //             // fn: 'onQuery',
+            //             fn: function(th, e, eOpts) {
+            //                 if(e.keyCode == 13) {
+            //                     form.up('core-query-querypanel').getController().onQuery()
+            //                 }
+            //             }
+            //         }
+            //     });
+            // });
         }
     }
 

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

@@ -367,8 +367,9 @@ Ext.define('saas.view.core.query.QueryGridPanel', {
     onDelete: function (btns) {
         var grid = btns.up('grid');
         var data = grid.getGridSelected();
+        var deleteMsg =grid.addTitle?"删除的"+grid.addTitle+"将不能恢复,请确认是否删除?":"是否删除所选单据?";
         if(data&&data.length>0){
-            saas.util.BaseUtil.warnMsg("是否删除所选单据?",function(btn){
+            saas.util.BaseUtil.warnMsg(deleteMsg,function(btn){
                 if(btn == 'yes'){
                     grid.vastOperation("batchDelete");
                 }

+ 2 - 0
frontend/saas-web/app/view/document/bom/BasePanel.js

@@ -5,6 +5,8 @@ Ext.define('saas.view.document.bom.BasePanel', {
     controller: 'document-bom-basepanel',
     viewModel: 'document-bom-basepanel',
 
+    deleteMoreMsg: '删除的BOM资料将不能恢复,请确认是否删除?',
+    deleteOneMsg: '删除的BOM资料将不能恢复,请确认是否删除?',
     searchField:[{ 
         xtype : "textfield", 
         name : "bo_mothercode", 

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

@@ -19,7 +19,7 @@ Ext.define('saas.view.document.bom.FormPanel', {
     _closeUrl:'/api/document/bom/close',
     _deleteUrl:'/api/document/bom/delete/',
     initId:0,
-
+    _deleteMsg: '删除的BOM资料将不能恢复,请确认是否删除?',
     codeInHeader: false,
 
     defaultButtons:[{

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

@@ -224,6 +224,15 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 xtype:'hidden',
                 name:'accountId',
                 hidden:true,
+            },{
+                xtype:'textfield',
+                fieldLabel: '真实姓名',
+                name: 'realname',
+                readOnly:true,
+                editable:false,
+                allowBlank:true,
+                maxLength: 30,
+                beforeLabelTextTpl: "",
             },{
                 xtype:'datamulticombo',
                 dataUrl:'/api/account/role/list',

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

@@ -78,6 +78,7 @@ Ext.define('saas.view.document.kind.Kind', {
                 dataIndex: 'ck_name',
                 flex: 1
             }],
+            
             keyField:'id',
             reqUrl:'/api/document/customerkind/save',
             delUrl:'/api/document/customerkind/delete'

+ 18 - 13
frontend/saas-web/app/view/document/kind/KindController.js

@@ -74,20 +74,25 @@ Ext.define('saas.view.document.kind.KindController', {
         var dataKind=dk.getViewModel().getData()['dataKind'].value,
         rec = grid.getStore().getAt(row);
         var keyV=rec.get(dk.etc[dataKind].keyField);
-        //删除接口
-        saas.util.BaseUtil.request({
-            url: dk.etc[dataKind].delUrl+'/'+keyV,
-            method: 'POST'
-        })
-        .then(function(localJson) {
-            if(localJson.success){
-                saas.util.BaseUtil.showToast('删除成功');
-                grid.store.load();
+        var deleteMsg = '删除的'+dk.getViewModel().getData()['title']+'将不能恢复,请确认是否删除?';
+        saas.util.BaseUtil.deleteWarn(deleteMsg,function(btn){
+            if(btn == 'yes'){
+                //删除接口
+                saas.util.BaseUtil.request({
+                    url: dk.etc[dataKind].delUrl+'/'+keyV,
+                    method: 'POST'
+                })
+                .then(function(localJson) {
+                    if(localJson.success){
+                        saas.util.BaseUtil.showToast('删除成功');
+                        grid.store.load();
+                    }
+                })
+                .catch(function(res) {
+                    console.error(res);
+                    saas.util.BaseUtil.showToast('删除失败: ' + res.message);
+                });
             }
-        })
-        .catch(function(res) {
-            console.error(res);
-            saas.util.BaseUtil.showToast('删除失败: ' + res.message);
         });
     },
     createDialog: function(dataKind,record,dk) {

+ 3 - 0
frontend/saas-web/app/view/document/vendor/BasePanel.js

@@ -4,6 +4,9 @@ Ext.define('saas.view.document.vendor.BasePanel', {
     controller: 'document-vendor-basepanel',
     viewModel: 'document-vendor-basepanel',
 
+    deleteMoreMsg: '删除的供应商资料将不能恢复,请确认是否删除?',
+    deleteOneMsg: '删除的供应商资料将不能恢复,请确认是否删除?',
+
     searchField:[{
         xtype : "vendorDbfindTrigger", 
         name : "ve_code", 

+ 9 - 2
frontend/saas-web/app/view/home/charts/MonthSale.js

@@ -50,7 +50,8 @@ Ext.define('saas.view.home.charts.MonthSale', {
                     '#1E90FF',
                     '#B0E0E6'
                 ],
-                innerPadding: 0,
+                interactions: ['rotate', 'itemhighlight'],
+                innerPadding: 2,
                 legend: {
                     type: 'dom',
                     docked: 'right',
@@ -76,11 +77,17 @@ Ext.define('saas.view.home.charts.MonthSale', {
                         color: '#fff',
                         font: '12px Microsoft YaHei'
                     },
+                    style: {
+                        // lineWidth: 0,
+                        // strokeStyle: 'transparent',
+                        // fillStyle: 'transparent',
+                        // fillOpacity: 0
+                    },
                     // label: {
                     //     field: 'x',
                     //     renderer: me.onLabelRender
                     // },
-                    highlight: true,
+                    highlight: false,
                     tooltip: {
                         trackMouse: true,
                         renderer: me.onSeriesTooltipRender

+ 1 - 0
frontend/saas-web/app/view/home/charts/MonthSale.scss

@@ -11,6 +11,7 @@
                 text-align: left;
 
                 .x-legend-item-marker {
+                    box-shadow: none;
                     border-radius: 50%;
                 }
             }

+ 84 - 11
frontend/saas-web/app/view/home/charts/SaleTrend.js

@@ -71,15 +71,31 @@ Ext.define('saas.view.home.charts.SaleTrend', {
                     },
                 }],
                 series: [{
-                    type: 'line',
-                    smooth: true,
-                    title: '销售额',
-                    xField: 'x',
-                    yField: ['sale'],
                     tooltip: {
                         trackMouse: true,
                         renderer: me.onSeriesTooltipRender
-                    }
+                    },
+                    type: 'line',
+                    smooth: true,
+                    xField: 'x',
+                    yField: 'sale',
+                    marker: {
+                        radius: 0,
+                        lineWidth: 0
+                    },
+                    highlight: {
+                        fillStyle: '#53A8E2',
+                        fillOpacity: 1,
+                        strokeStyle: '#A3D0EE',
+                        radius: 5,
+                        lineWidth: 2,
+                    },
+                    style: {
+                        lineWidth: 2,
+                        fillStyle: '#53A8E2',
+                        fillOpacity: 0.1,
+                    },
+                    // renderer: me.onSeriesRenderer
                 }, {
                     type: 'line',
                     smooth: true,
@@ -89,21 +105,78 @@ Ext.define('saas.view.home.charts.SaleTrend', {
                     tooltip: {
                         trackMouse: true,
                         renderer: me.onSeriesTooltipRender
-                    }
-                }]
+                    },
+                    marker: {
+                        radius: 0,
+                        lineWidth: 0
+                    },
+                    highlight: {
+                        fillStyle: '#D54F65',
+                        fillOpacity: 1,
+                        strokeStyle: '#FF9BAC',
+                        radius: 5,
+                        lineWidth: 2,
+                    },
+                    style: {
+                        lineWidth: 2,
+                        fillStyle: '#D54F65',
+                        fillOpacity: 0.1,
+                    },
+                }],
+                listeners: {
+                    itemhighlightchange: me.itemhighlightchange
+                }
             }]
         });
 
         me.callParent(arguments);
     },
 
+    onSeriesRender: function (sprite, config, rendererData, index) {
+        var store = rendererData.store,
+            storeItems = store.getData().items,
+            currentRecord = storeItems[index],
+            previousRecord = (index > 0 ? storeItems[index-1] : currentRecord),
+            current = currentRecord && currentRecord.data['g1'],
+            previous = previousRecord && previousRecord.data['g1'],
+            isUp = current >= previous,
+            changes = {};
+
+        switch (config.type) {
+            case 'marker':
+                changes.strokeStyle = (isUp ? 'cornflowerblue' : 'tomato');
+                changes.fillStyle = (isUp ? 'aliceblue' : 'lightpink');
+                break;
+            case 'line':
+                changes.strokeStyle = (isUp ? 'cornflowerblue' : 'tomato');
+                changes.fillStyle = (isUp ? 'rgba(100, 149, 237, 0.4)' : 'rgba(255, 99, 71, 0.4)');
+                break;
+        }
+
+        return changes;
+    },
+
     onSeriesTooltipRender: function (tooltip, record, item) {
-        var title = item.series.getTitle();
-        tooltip.setHtml(record.get('x') + title + record.get(item.series.getYField()) + '万元');
+        tooltip.setHtml(record.get('x') + '月: ' + record.get(item.series.getYField()) + '万元');
     },
 
     categoryRender: function(axis, label, layoutContext, lastLabel) {
         return label + '月';
-    }
+    },
+
+    itemhighlightchange: function(chart, newHighlightItem, oldHighlightItem) {
+        debugger;
+        this.setSeriesLineWidth(newHighlightItem, 4);
+        this.setSeriesLineWidth(oldHighlightItem, 2);
+    },
+
+    setSeriesLineWidth: function (item, lineWidth) {
+        console.log('xxxx');
+        if (item) {
+            item.series.setStyle({
+                lineWidth: lineWidth
+            });
+        }
+    },
 
 });

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

@@ -76,13 +76,15 @@ Ext.define('saas.view.main.Main', {
                         cls:'x-main-menu sa-nav-menu',
                         items: [{
                             text: '新手导航',
-                            iconCls:'x-fa fa-comment-o sa-navicon',
+                            //fa-comment-o sa-userGuite
+                            iconCls:'x-fa sa-navicon fa-comment-o',
                             handler:function(){
                                saas.util.BaseUtil.openTab('sys-guide-formpanel','新手导航', 'sys-guide-formpanel-nav');
                             }
                         },{
                             text: '用户手册',
-                            iconCls:'x-fa fa-address-book-o sa-navicon',
+                            //fa-address-book-o sa-userBook
+                            iconCls:'x-fa sa-navicon  fa-address-book-o',
                             handler:function(){
                                 window.open('http://www.usoftchina.com','_blank');
                             }
@@ -94,7 +96,7 @@ Ext.define('saas.view.main.Main', {
                             }
                         },{
                             text: '客服热线',
-                            iconCls:'x-fa fa-comment-o sa-navicon',
+                            iconCls:'x-fa fa-phone-o sa-navicon',
                             menu:{
                                 cls:'sa-nav-menu',
                                 items:[{

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

@@ -134,7 +134,7 @@ Ext.define('saas.view.money.fundtransfer.QueryPanel', {
             dataIndex: 'ftd_paymethod',
             width: 120
         }, {
-            text: '结算号',
+            text: '结算号',
             dataIndex: 'ftd_paycode',
             width: 120
         }, {

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

@@ -14,7 +14,7 @@ Ext.define('saas.view.money.paybalance.QueryPanel', {
     },{
         xtype: 'vendorDbfindTrigger',
         name: 'pb_vendname',
-        fieldLabel: '供应商',
+        fieldLabel: '供应商名称',
     },{
         xtype: 'textfield',
         name: 'pb_manname',

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

@@ -21,7 +21,7 @@ Ext.define('saas.view.money.paybalance.QueryPanelController', {
                 beforerender:function(f){
                     Ext.apply(f,{
                         dbfinds:[{
-                            from:'pr_code',to:'pd_prodcode',
+                            from:'pr_code',to:'pd_prodcode'
                         }, {
                             from:'pr_detail',to:'pr_detail'
                         }],

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

@@ -27,7 +27,7 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                     Ext.apply(f,{
                         //赋值 
                         dbfinds:[{
-                            from: 'id', to: 'rd_bankid'
+                            from: 'id', to: 'rd_bankid',ignore:true
                         }, {
                             from:'bk_bankcode', to:'rd_bankcode'
                         },{
@@ -44,7 +44,7 @@ Ext.define('saas.view.money.recBalance.FormPanelController', {
                         addTitle: '源单单据',
                         dbfinds: [{
                             from: 'id',
-                            to: 'rbd_slid'
+                            to: 'rbd_slid',ignore:true
                         }, {
                             from: 'sl_code',
                             to: 'rbd_slcode'

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

@@ -10,7 +10,7 @@ Ext.define('saas.view.money.recBalance.QueryPanelController', {
                     Ext.apply(f,{
                         //赋值
                         dbfinds:[{
-                            from: 'id', to: 'rb_custid'
+                            from: 'id', to: 'rb_custid',ignore:true
                         }, {
                             from:'cu_code', to:'rb_custcode'
                         },{

+ 7 - 1
frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js

@@ -207,9 +207,15 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
             dataIndex: 'pd_whname',
             width: 120
         },{
-            text: '单位成本',
+            text: '单',
             dataIndex: 'pd_orderprice',
             xtype:'numbercolumn',
+            renderer : function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length)).fill('0');
+                var format = '0,000.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            },            
             width: 120
         },{
             text: '税率',

+ 7 - 1
frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js

@@ -215,9 +215,15 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
             dataIndex: 'pd_whname',
             width: 120
         },{
-            text: '单位成本',
+            text: '单',
             dataIndex: 'pd_orderprice',
             xtype:'numbercolumn',
+            renderer : function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length)).fill('0');
+                var format = '0,000.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            },            
             width: 120
         },{
             text: '税率',

+ 2 - 2
frontend/saas-web/app/view/sale/sale/QueryPanel.js

@@ -126,7 +126,7 @@ Ext.define('saas.view.sale.sale.QueryPanel', {
             }
         }, {
             text: '制单人',
-            dataIndex: 'sa_recorder',
+            dataIndex: 'creatorname',
             width: 120
         }, {
             text: '审核人',
@@ -208,7 +208,7 @@ Ext.define('saas.view.sale.sale.QueryPanel', {
             },
         }, {
             text: '已转数',
-            dataIndex: 'sd_ytqy',
+            dataIndex: 'sd_yqty',
             xtype: 'numbercolumn',
             width: 120,
             renderer : function(v) {

+ 3 - 1
frontend/saas-web/app/view/stock/otherIn/QueryPanel.js

@@ -215,7 +215,9 @@ Ext.define('saas.view.stock.otherIn.QueryPanel', {
             text: '税率',
             dataIndex: 'pd_taxrate',
             xtype:'numbercolumn',
-            width: 120
+            width: 120,            renderer : function(v) {
+                return Ext.util.Format.number(v, '0');
+            },
         },{
             text: '金额',
             dataIndex: 'pd_total',

+ 4 - 1
frontend/saas-web/app/view/stock/otherOut/QueryPanel.js

@@ -196,7 +196,10 @@ Ext.define('saas.view.stock.otherOut.QueryPanel', {
             text: '税率',
             dataIndex: 'pd_taxrate',
             xtype:'numbercolumn',
-            width: 120
+            width: 120,
+            renderer : function(v) {
+                return Ext.util.Format.number(v, '0');
+            },
         },{
             text: '金额',
             dataIndex: 'pd_total',

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

@@ -172,6 +172,7 @@ Ext.define('saas.view.sys.config.FormPanel', {
                     var fileEl = field.fileInputEl.dom;
                     var fd = new FormData();
                     fd.append('file', fileEl.files[0]);
+                    fd.append('folderId', 0);
                     form.setLoading(true);
                     Ext.Ajax.request({
                         url: '/api/file/upload',//这里是填写需要跨域访问的URL
@@ -297,6 +298,7 @@ Ext.define('saas.view.sys.config.FormPanel', {
                     var myForm = field.ownerCt;
                     var fileEl = field.fileInputEl.dom;
                     var fd = new FormData();
+                    fd.append('folderId', 0);
                     fd.append('file', fileEl.files[0]);
                     form.setLoading(true);
                     Ext.Ajax.request({

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

@@ -47,7 +47,7 @@ Ext.define('saas.view.sys.feedback.FormPanel', {
             name : "fb_wechat", 
             fieldLabel : "微信"
         }, {
-            xtype : "htmleditor", 
+            xtype : "textfield", 
             name : "fb_msg", 
             fieldLabel : "反馈内容",
             columnWidth: 1

+ 3 - 2
frontend/saas-web/app/view/sys/manager/FormPanel.scss

@@ -56,12 +56,13 @@
         border:none !important;
     }
     .x-keyboard-mode .x-grid-item-focused .x-grid-cell-inner:before{
-        border:0px solid #ffffff !important;
+        border:none !important;
     }
     .x-keyboard-mode .x-grid-item-focused{
         border:0px solid #ffffff !important;
     }
     .x-grid-cell-inner .x-grid-cell-inner-action-col::before{
-        border:0px solid #ffffff !important;
+        content: '';
+        border:none !important;
     }
 }

+ 1 - 2
frontend/saas-web/app/view/sys/power/GroupGrid.js

@@ -12,8 +12,7 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         text:'保存',
         name:'savepower',
         margin:'0 10 0 2',
-        cls:'x-formpanel-btn-orange',
-        style:'background:#da8282;border-color:#cccccc'
+        style:'background:#34baf6;border-color:#cccccc'
     }],
     features : [Ext.create('Ext.grid.feature.Grouping',{
         collapseTip:null,

+ 4 - 0
frontend/saas-web/app/view/viewport/Viewport.js

@@ -7,5 +7,9 @@ Ext.define('saas.view.viewport.Viewport', {
     layout: {
         type: 'card',
         anchor: '100%'
+    },
+
+    listeners: {
+        boxready: 'mainviewboxready'
     }
 });

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

@@ -22,6 +22,12 @@ Ext.define('saas.view.viewport.ViewportController', {
         this.restoreSession();
     },
 
+    mainviewboxready: function() {
+        if(!Ext.isChrome && !Ext.isFirefox) {
+            saas.util.BaseUtil.showConfirm('温馨提示', '为了更好地呈现页面效果,推荐使用Chrome浏览器或火狐浏览器');
+        }
+    },
+
     showView: function(xtype) {
         var view = this.lookup(xtype),
             viewport = this.getView();

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

@@ -171,7 +171,7 @@
             "id": "monry-report-customercheck",
             "viewType":"monry-report-customercheck"
         }, {
-            "text": "应收款明细表",
+            "text": "应收款明细表",
             "id": "monry-report-recdetail",
             "viewType":"monry-report-recdetail"
         }, {