Browse Source

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

zhoudw 7 years ago
parent
commit
74ec4f074d
18 changed files with 543 additions and 26 deletions
  1. 53 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/config/WebConfig.java
  2. 19 4
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/MessageLogController.java
  3. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/MessagelogMapper.java
  4. 5 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/MessageLogService.java
  5. 38 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MessageLogServiceImpl.java
  6. 12 0
      applications/commons/commons-server/src/main/resources/mapper/MessagelogMapper.xml
  7. 2 2
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/controller/SaleController.java
  8. 1 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/SaleService.java
  9. 9 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  10. 13 14
      base-servers/auth/auth-dto/src/main/java/com/usoftchina/saas/auth/dto/AuthDTO.java
  11. 1 1
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  12. 1 0
      frontend/saas-web/app/view/core/base/GridPanel.js
  13. 1 1
      frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js
  14. 1 1
      frontend/saas-web/app/view/core/dbfind/MultiDbfindTrigger.js
  15. 1 1
      frontend/saas-web/app/view/document/kind/KindModel.js
  16. 240 0
      frontend/saas-web/app/view/sys/maxnumbers/DataList.js
  17. 121 0
      frontend/saas-web/app/view/sys/messagelog/DataList.js
  18. 23 0
      frontend/saas-web/resources/json/navigation.json

+ 53 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/config/WebConfig.java

@@ -0,0 +1,53 @@
+package com.usoftchina.saas.commons.config;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+import java.nio.charset.Charset;
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+
+/**
+ * @author: guq
+ * @create: 2018-10-30 11:20
+ **/
+
+@Configuration
+public class WebConfig extends WebMvcConfigurationSupport{
+    @Bean
+    public HttpMessageConverter<String> responseBodyConverter() {
+        StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
+        return converter;
+    }
+
+    @Bean
+    public MappingJackson2HttpMessageConverter MappingJacksonHttpMessageConverter(){
+        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
+        ObjectMapper objectMapper = new ObjectMapper();
+        objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
+        converter.setObjectMapper(objectMapper);
+        return converter;
+    }
+
+    @Override
+    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+        super.configureMessageConverters(converters);
+        converters.add(responseBodyConverter());
+        converters.add(MappingJacksonHttpMessageConverter());
+    }
+
+    @Override
+    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
+        configurer.favorPathExtension(false);
+    }
+
+}

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

@@ -1,14 +1,16 @@
 package com.usoftchina.saas.commons.controller;
 
+import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
+import com.usoftchina.saas.commons.dto.ListReqDTO;
+import com.usoftchina.saas.commons.po.Messagelog;
 import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.service.MessageLogService;
 
+import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.context.request.async.DeferredResult;
 
 import java.util.concurrent.CompletableFuture;
@@ -24,6 +26,19 @@ public class MessageLogController {
     @Autowired
     private MessageLogService messageLogService;
 
+    /**
+     * 采购订单列表
+     *
+     * @param page
+     * @param req
+     * @return
+     */
+    @GetMapping("/list")
+    public Result<PageInfo<Messagelog>> getListData(PageRequest page, ListReqDTO req) {
+        PageInfo<Messagelog> listData = messageLogService.getListData(page, req);
+        return Result.success(listData);
+    }
+
     @RequestMapping("/save")
     public DeferredResult<String> save(@RequestBody DocBaseDTO baseDTO) {
         // Create the deferredResult and initiate a callback object, task, with it

+ 2 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/MessagelogMapper.java

@@ -28,4 +28,6 @@ public interface MessagelogMapper extends CommonBaseMapper<Messagelog>{
     int updateByPrimaryKeySelective(Messagelog record);
 
     int updateByPrimaryKey(Messagelog record);
+
+    List<Messagelog> selectMessageLog(@Param("con") String con, @Param("companyId") Long companyId);
 }

+ 5 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/MessageLogService.java

@@ -1,10 +1,13 @@
 package com.usoftchina.saas.commons.service;
 
+import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.service.CommonBaseService;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
+import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.mapper.MessagelogMapper;
 import com.usoftchina.saas.commons.po.Messagelog;
 import com.usoftchina.saas.commons.po.Operation;
+import com.usoftchina.saas.page.PageRequest;
 
 public interface MessageLogService extends CommonBaseService<MessagelogMapper, Messagelog>{
     String save(DocBaseDTO baseDTO);
@@ -24,4 +27,6 @@ public interface MessageLogService extends CommonBaseService<MessagelogMapper, M
     String open(DocBaseDTO baseDTO);
 
     String customizeLog(DocBaseDTO baseDTO, Operation operation);
+
+    PageInfo<Messagelog> getListData(PageRequest page, ListReqDTO req);
 }

+ 38 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MessageLogServiceImpl.java

@@ -1,19 +1,25 @@
 package com.usoftchina.saas.commons.service.impl;
 
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
+import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.mapper.MessagelogMapper;
 import com.usoftchina.saas.commons.po.Messagelog;
 import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.service.MessageLogService;
 import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.page.PageRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.MessageSource;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Locale;
 
 /**
@@ -25,6 +31,8 @@ public class MessageLogServiceImpl extends CommonBaseServiceImpl<MessagelogMappe
 
     @Autowired
     private MessageSource messageSource;
+    @Autowired
+    private MessagelogMapper messagelogMapper;
 
     @Override
     public String save(DocBaseDTO baseDTO) {
@@ -72,6 +80,22 @@ public class MessageLogServiceImpl extends CommonBaseServiceImpl<MessagelogMappe
         return log(operation, baseDTO);
     }
 
+    @Override
+    public PageInfo<Messagelog> getListData(PageRequest page, ListReqDTO req) {
+        //设置默认分页
+        if (null == page || page.getSize() == 0 || page.getNumber() == 0) {
+            page = new PageRequest();
+            page.setNumber(1);
+            page.setSize(10);
+        }
+        PageHelper.startPage(page.getNumber(), page.getSize());
+        //查询数据
+        List<Messagelog> lists = getListByMode(req);
+        //取分页信息
+        PageInfo<Messagelog> pageInfo = new PageInfo<Messagelog>(lists);
+        return pageInfo;
+    }
+
     private String log(Operation operation, DocBaseDTO baseDTO) {
         String language = "zh_CN";
         Messagelog msg = new Messagelog();
@@ -90,4 +114,18 @@ public class MessageLogServiceImpl extends CommonBaseServiceImpl<MessagelogMappe
     private String getLocalMessage(String msg, String language) {
        return messageSource.getMessage(msg, null, Locale.CHINA);
     }
+
+
+    private List<Messagelog> getListByMode(ListReqDTO req) {
+        List<Messagelog> list = null;
+        Long companyId = BaseContextHolder.getCompanyId();
+        String con = req.getFinalCondition();
+        if (null == con) {
+            con = "1=1";
+        }
+        if (null == req || StringUtils.isEmpty(req.getMode()) || "MAIN".equals(req.getMode())) {
+            list = messagelogMapper.selectMessageLog(con, companyId);
+        }
+        return list;
+    }
 }

+ 12 - 0
applications/commons/commons-server/src/main/resources/mapper/MessagelogMapper.xml

@@ -304,4 +304,16 @@
       updaterId = #{updaterId,jdbcType=INTEGER}
     where ml_id = #{id,jdbcType=INTEGER}
   </update>
+  <select id="selectMessageLog" resultMap="BaseResultMap">
+    select  *  from messagelog
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and  companyId = #{companyId}
+      </if>
+    </where>
+    order by ml_id
+  </select>
 </mapper>

+ 2 - 2
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/controller/SaleController.java

@@ -159,8 +159,8 @@ public class SaleController {
 
     @PostMapping("/turnProdOut/{id}")
     public Result turnOut(@PathVariable("id") Long id) {
-        saleService.turnOut(id);
-        return Result.success();
+        DocBaseDTO baseDTO = saleService.turnOut(id);
+        return Result.success(baseDTO);
     }
 
     @GetMapping("/test")

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

@@ -39,5 +39,5 @@ public interface SaleService {
 
     void open(long id);
 
-    void turnOut(Long id);
+    DocBaseDTO turnOut(Long id);
 }

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

@@ -9,6 +9,7 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.exception.BizException;
@@ -116,6 +117,8 @@ public class SaleServiceImpl implements SaleService{
         sale.setCreateTime(new Date());
         sale.setSa_recorderid(userId);
         sale.setSa_recorder("test");
+        sale.setSa_sendstatus(Status.UNTURNOUT.getDisplay());
+        sale.setSa_sendstatuscode(Status.UNTURNOUT.name());
 
         //编号校验
         sa_code = pushMaxnubmer(sa_code, sa_id);
@@ -383,7 +386,7 @@ public class SaleServiceImpl implements SaleService{
 
     @Override
     @Transactional
-    public void turnOut(Long id) {
+    public DocBaseDTO turnOut(Long id) {
         Integer count = 0;
         double pdQty = 0;
         double pdYqty = 0;
@@ -453,6 +456,7 @@ public class SaleServiceImpl implements SaleService{
             prodIODetail.setPd_sdid(saleDetail.getId());
             prodIODetail.setPd_prodid(saleDetail.getSd_prodid());
             prodIODetail.setPd_prodcode(saleDetail.getSd_prodcode());
+            prodIODetail.setPd_taxrate(saleDetail.getSd_taxrate());
             //公司id
             prodIODetail.setCompanyId(companyId);
             //本次转单数
@@ -468,6 +472,10 @@ public class SaleServiceImpl implements SaleService{
         sale.setSa_sendstatuscode(Status.TURNOUT.name());
         //更新存在字段
          saleMapper.updateByPrimaryKeySelective(sale);
+         //日志记录
+         DocBaseDTO baseDTO = new DocBaseDTO(pi_id, pi_inoutno, BillCodeSeq.SALEOUT.getCaller());
+         //messageLogService.customizeLog(baseDTO, Operation.);
+         return baseDTO;
     }
 
     //更新最新销售总额

+ 13 - 14
base-servers/auth/auth-dto/src/main/java/com/usoftchina/saas/auth/dto/AuthDTO.java

@@ -1,9 +1,8 @@
 package com.usoftchina.saas.auth.dto;
 
-import com.usoftchina.saas.account.dto.CompanyBaseDTO;
+import com.usoftchina.saas.account.dto.AccountDTO;
 
 import java.io.Serializable;
-import java.util.List;
 
 /**
  * @author yingp
@@ -11,37 +10,37 @@ import java.util.List;
  */
 public class AuthDTO implements Serializable{
     private TokenDTO token;
-    private List<CompanyBaseDTO> companies;
+    private AccountDTO account;
 
     public AuthDTO() {
     }
 
-    public AuthDTO(TokenDTO token, List<CompanyBaseDTO> companies) {
+    public AuthDTO(TokenDTO token, AccountDTO account) {
         this.token = token;
-        this.companies = companies;
+        this.account = account;
     }
 
-    public TokenDTO getToken() {
-        return token;
+    public AccountDTO getAccount() {
+        return account;
     }
 
-    public void setToken(TokenDTO token) {
-        this.token = token;
+    public void setAccount(AccountDTO account) {
+        this.account = account;
     }
 
-    public List<CompanyBaseDTO> getCompanies() {
-        return companies;
+    public TokenDTO getToken() {
+        return token;
     }
 
-    public void setCompanies(List<CompanyBaseDTO> companies) {
-        this.companies = companies;
+    public void setToken(TokenDTO token) {
+        this.token = token;
     }
 
     @Override
     public String toString() {
         return "AuthDTO{" +
                 "token=" + token +
-                ", companies=" + companies +
+                ", account=" + account +
                 '}';
     }
 }

+ 1 - 1
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java

@@ -62,7 +62,7 @@ public class AuthController {
             JwtInfo info = new JwtInfo(appId, companyId, accountDTO.getId(), accountDTO.getUsername());
             TokenVO tokenVO = JwtHelper.generateToken(info, privateKeyPath, expire);
             TokenDTO tokenDTO = BeanMapper.map(tokenVO, TokenDTO.class);
-            return Result.success(new AuthDTO(tokenDTO, accountDTO.getCompanies()));
+            return Result.success(new AuthDTO(tokenDTO, accountDTO));
         }
         return Result.error(result.getCode(), result.getMessage());
     }

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

@@ -217,6 +217,7 @@ Ext.define('saas.view.core.base.GridPanel', {
             return Ext.Array.insert(columns,0,[{
                 xtype:'actioncolumn',
                 width:70,
+                dataIndex:'actioncolumn',
                 text:'操作',
                 items: [{
                     tooltip: '编辑',

+ 1 - 1
frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js

@@ -23,7 +23,7 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                     var selectRecordArr = selModel.view.ownerCt.selectRecordArr;
                     var index = -1;
                     index = selectRecordArr.findIndex(function(f){
-                        return f.id==record.id
+                        return f.id==(rec&&rec.id?rec.id:0)
                     });
                     if(index>-1){
                         selectRecordArr.splice(index,1);

+ 1 - 1
frontend/saas-web/app/view/core/dbfind/MultiDbfindTrigger.js

@@ -103,7 +103,7 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
         //判断dbfindtrigger归属
         f.judge(f);
         var panel = f.up('core-tab-panel'),panelEl;
-        if(f.ownerCt.ownerCt.id.indexOf('window-')>-1){
+        if(!f.column&&f.ownerCt.ownerCt.id.indexOf('window-')>-1){
             panelEl = f.ownerCt.ownerCt.getEl();
         }else{
             panelEl = panel.getEl()

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

@@ -234,7 +234,7 @@ Ext.define('saas.view.document.kind.KindModel', {
                 }
             }
         },
-        productunit: {
+        productunit: {    
             fields:[
                 {name: 'id', type: 'int'},
                 {name: 'pu_name',  type: 'string'}

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

@@ -0,0 +1,240 @@
+/**
+ * Created by zhouy on 2018/10/18.
+ */
+Ext.define('saas.view.sys.maxnumbers.DataList', {
+    extend: 'Ext.grid.Panel',
+    xtype: 'sys-maxnumbers-datalist',
+    autoScroll: true,
+    frame:true,
+    layout:'fit',
+    dataUrl:'http://192.168.253.31:8920/number/list',
+    saveUrl:'http://192.168.253.31:8920/number/save',
+    deleteUrl:'http://192.168.253.31:8920/number/delete/',
+
+    tbar: [{
+        cls:'x-formpanel-btn-orange',
+        xtype:'button',
+        text:'查询',
+        listeners: {
+            click: 'onQuery'
+        }
+    },'->',{
+        cls:'x-formpanel-btn-blue',
+        xtype:'button',
+        text:'新增',
+        listeners: {
+            click: 'onAdd'
+        }
+    }],
+
+    columns : [{
+        text : "id", 
+        width : 0, 
+        dataIndex : "id", 
+        xtype : "numbercolumn", 
+    },{
+        text : "单据caller", 
+        width : 200.0, 
+        dataIndex : "mn_caller", 
+        xtype : "", 
+    }, 
+    {
+        text : "单据前缀", 
+        dataIndex : "mn_leadcode", 
+        width : 120.0, 
+        xtype : "", 
+    }, 
+    {
+        text : "单据规则", 
+        dataIndex : "mn_rule", 
+        width : 220.0, 
+        xtype : "", 
+    },{
+        text : "规则长度", 
+        dataIndex : "mn_number", 
+        width : 120.0, 
+        xtype : "", 
+    }],
+
+    dbSearchFields: [],
+    condition:'',
+
+    initComponent: function() {
+        var me = this;
+        if(me.columns){
+            var fields = me.columns.map(column => column.dataIndex);
+            me.columns = me.insertFirstColumn(me.columns);
+            me.store = Ext.create('Ext.data.Store',{
+                fields:fields,
+                autoLoad: true,
+                pageSize: 10,
+                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,
+                    emptyMsg: "暂无数据",
+                    store: me.store,
+                    displayMsg: '显示{0}到{1}条数据,共有{2}条',
+                    beforePageText: "当前第",
+                    afterPageText: "页,共{0}页"
+                }]
+            });
+        }
+        me.callParent(arguments);
+    },
+
+    onVastDeal:function(url,type){
+        var form = this.ownerCt;
+        var grid = this;
+        var data = grid.getGridSelected(type);
+        if(!data){
+            showToast('请勾选符合条件的行进行操作。');
+            return false;
+        }
+        if(data&&data.length>0){
+            var params = JSON.stringify({baseDTOs:data});
+            form.BaseUtil.request({
+                    url: url,
+                    params: params,
+                    method: 'POST',
+                    async:false
+                })
+                .then(function() {
+                    showToast('操作成功');
+                    grid.store.load();
+                })
+                .catch(function(response) {
+                    showToast('操作失败');
+                });
+        }else{
+            showToast('请勾选至少一条明细。');
+        }
+    },
+
+    listeners:{
+        itemClick: function(view,record,a,index,c) {
+            var classList = c.target.classList.value;
+            var form = view.ownerCt.ownerCt;
+            if(classList.indexOf('fa-pencil')>-1){
+                var config = {};
+                config.initId = record.get('id');
+                openTab(form._formXtype, '修改'+form._title, form._formXtype+config.initId, config);
+            }else if(classList.indexOf('fa-trash-o')>-1){
+                //删除
+                var id = record.get('id');
+                if(id){
+                    form.BaseUtil.request({
+                        url: form._deleteUrl+id,
+                        method: 'POST',
+                    })
+                    .then(function(localJson) {
+                        if(localJson.success){
+                            //解析参数
+                            showToast('删除成功');
+                            view.ownerCt.store.load();
+                        }
+                    })
+                    .catch(function() {
+                        showToast('删除失败');
+                    });
+                }
+            }
+        }
+    },
+
+    getCondition: function(f,conditionExpression){
+        var condition = '';
+        if((f.xtype == 'checkbox' || f.xtype == 'radio')&&f.logic){
+            
+        }else if(f.xtype=='textfield'&&f.value!=''){
+            condition=conditionExpression.replace(new RegExp("\\{0}","g"), f.value);
+        }
+        if(condition.length>0){
+            condition+= ' AND ';
+        }
+        return condition;
+    },
+
+    insertFirstColumn:function(columns){
+        var me=this;
+        if(columns.length>0 && columns[0].xtype!='actioncolumn'){
+            return Ext.Array.insert(columns,0,[{
+                xtype:'actioncolumn',
+                width:70,
+                dataIndex:'actioncolumn',
+                text:'操作',
+                items: [{
+                    tooltip: '编辑',
+                    iconCls: 'x-fa fa-pencil fa-fw',
+                    scope:this
+                },{
+                    text:'删除',
+                    iconCls:'x-fa fa-trash-o fa-fw',
+                    tooltip: '删除',
+                    scope:this
+                }]
+            }]);
+        }
+        return columns;
+    },
+
+    getGridSelected:function(type){
+        var isErrorSelect = false;
+        var checkField = this.statusCodeField;
+        var me = this,
+        items = me.selModel.getSelection(),
+        data = new Array() ;
+        Ext.each(items, function(item, index){
+            if(!Ext.isEmpty(item.data[me.idField])){
+                var o = new Object();
+                if(me.idField){
+                    o['id'] = item.data[me.idField];
+                }
+                if(me.codeField){
+                    o['code'] = item.data[me.codeField];
+                }
+                if(type&&type==item.data[checkField]){
+                    isErrorSelect = true
+                }
+                data.push(o);
+            }
+        });
+        if(isErrorSelect){
+            return false;
+        }
+		return data;
+    }
+
+})
+
+

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

@@ -0,0 +1,121 @@
+Ext.define('saas.view.sys.messagelog.DataList', {
+    extend: 'Ext.grid.Panel',
+    xtype: 'sys-messagelog-datalist',
+
+    autoScroll: true,
+    frame:true,
+    layout:'fit',
+    dataUrl:'http://192.168.253.58:8920/messagelog/list',
+    saveUrl:'/api/common/number/save',
+    deleteUrl:'/api/common/number/delete/',
+
+    tbar: [{
+        cls:'x-formpanel-btn-orange',
+        xtype:'button',
+        text:'查询',
+        listeners: {
+            click: 'onQuery'
+        }
+    },'->'],
+
+    //字段属性
+    columns : [{
+        text : "id", 
+        width : 0, 
+        dataIndex : "id", 
+        xtype : "numbercolumn",   
+    },{
+        text : "单据编号", 
+        width : 200.0, 
+        dataIndex : "ml_code", 
+    }, 
+    {
+        text : "操作", 
+        dataIndex : "ml_content", 
+        width : 220.0, 
+    }, 
+    {
+        text : "结果", 
+        dataIndex : "ml_result", 
+        width : 120.0, 
+    }, 
+    {
+        text : "处理人", 
+        dataIndex : "ml_man", 
+        width : 200, 
+    }],
+
+    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: 10,
+                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,
+                    emptyMsg: "暂无数据",
+                    store: me.store,
+                    displayMsg: '显示{0}到{1}条数据,共有{2}条',
+                    beforePageText: "当前第",
+                    afterPageText: "页,共{0}页"
+                }]
+            });
+        }
+        me.callParent(arguments);
+    },
+
+    getCondition: function(f,conditionExpression){
+        var condition = '';
+        if((f.xtype == 'checkbox' || f.xtype == 'radio')&&f.logic){
+            
+        }else if(f.xtype=='textfield'&&f.value!=''){
+            condition=conditionExpression.replace(new RegExp("\\{0}","g"), f.value);
+        }
+        if(condition.length>0){
+            condition+= ' AND ';
+        }
+        return condition;
+    },
+
+    refresh:function(){
+        //debugger
+    }
+
+});

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

@@ -246,4 +246,27 @@
             "leaf": true
         }]
     }]
+},{
+    "text": "设置",
+    "iconCls": "x-fa fa-cog",
+    "items": [{
+        "text": "系统设置",
+        "items": [{
+            "id":"sys-messagelog-datalist",
+            "text": "操作日志",
+            "viewType": "sys-messagelog-datalist",
+            "leaf": true
+        }, {
+            "id":"sys-messagelog-datalist",
+            "text": "单据编码规则",
+            "viewType": "sys-maxnumbers-datalist",
+            "leaf": true
+        }, {
+            "id":"product-list-formpanel",
+            "text": "结账/反结账",
+            "viewType": "document-product-basepanel",
+            "addType":"document-product-formpanel",
+            "leaf": true
+        }]
+    }]
 }]