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

Merge remote-tracking branch 'origin/dev' into dev

heqinwei 7 лет назад
Родитель
Сommit
643e7b1c84
21 измененных файлов с 978 добавлено и 189 удалено
  1. 18 7
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  2. 29 0
      frontend/saas-web/app/model/report/Purchase.js
  3. 4 0
      frontend/saas-web/app/util/FormUtil.js
  4. 21 9
      frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js
  5. 3 1
      frontend/saas-web/app/view/core/dbfind/MultiDbfindTrigger.js
  6. 214 0
      frontend/saas-web/app/view/core/form/DataMultiCombo.js
  7. 9 0
      frontend/saas-web/app/view/core/form/FormPanel.js
  8. 5 1
      frontend/saas-web/app/view/core/form/FormPanelController.js
  9. 4 68
      frontend/saas-web/app/view/core/report/ReportPanel.js
  10. 28 0
      frontend/saas-web/app/view/document/kind/ChildForm.js
  11. 1 0
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js
  12. 1 0
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js
  13. 2 12
      frontend/saas-web/app/view/purchase/report/Purchase.js
  14. 2 1
      frontend/saas-web/app/view/sale/sale/FormPanel.js
  15. 1 0
      frontend/saas-web/app/view/sale/saleOut/FormPanel.js
  16. 7 8
      frontend/saas-web/app/view/sys/account/DataList.js
  17. 321 0
      frontend/saas-web/app/view/sys/baseconfig/FormPanel.js
  18. 66 0
      frontend/saas-web/app/view/sys/baseconfig/FormPanelController.js
  19. 5 0
      frontend/saas-web/app/view/sys/baseconfig/FormPanelModel.js
  20. 232 82
      frontend/saas-web/app/view/sys/config/FormPanel.js
  21. 5 0
      frontend/saas-web/app/view/sys/manager/FormPanel.js

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

@@ -21,16 +21,21 @@ import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.server.error.ServletErrorUtils;
 import com.usoftchina.saas.socket.api.SocketMessageApi;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.JsonUtils;
 import com.usoftchina.saas.utils.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 
 /**
  * @author yingp
@@ -67,6 +72,8 @@ public class AuthController {
     @Autowired
     private SocketMessageApi socketMessageApi;
 
+    private Logger logger = LoggerFactory.getLogger(AuthController.class);
+
     /**
      * 登录认证获取token
      *
@@ -111,14 +118,15 @@ public class AuthController {
     }
 
     /**
-     * 账户中心登录回调
+     * 账户中心登录时jsonp回调
      *
      * @param clientId 客户端唯一标志,发起请求到账户中心时带上
      * @param info
      * @return
      */
-    @PostMapping("/sso/callback")
-    public Result ssoCallback(HttpServletRequest request, @RequestParam String clientId, CookieInfo info) {
+    @GetMapping("/sso/callback")
+    public void ssoCallback(HttpServletRequest request, HttpServletResponse response,
+                            String clientId, CookieInfo info) throws IOException{
         if (null != info && null != info.getMobile()) {
             AccountDTO accountDTO = null;
             Result<AccountDTO> result = accountApi.getAccount(info.getMobile());
@@ -127,7 +135,9 @@ public class AuthController {
                     // 新用户,自动注册
                     accountDTO = createAccountByCookieInfo(info);
                 } else {
-                    return Result.error(result.getCode(), result.getMessage());
+                    logger.error(result.getMessage());
+                    ServletErrorUtils.writeMessage(response, "successCallback({success:'0'})");
+                    return;
                 }
             } else {
                 accountDTO = result.getData();
@@ -136,7 +146,9 @@ public class AuthController {
                     accountDTO.setUu(info.getUserUU());
                     Result updateResult = accountApi.update(BeanMapper.map(accountDTO, AccountUpdateDTO.class));
                     if (!updateResult.isSuccess()) {
-                        return Result.error(updateResult.getCode(), updateResult.getMessage());
+                        logger.error(updateResult.getMessage());
+                        ServletErrorUtils.writeMessage(response, "successCallback({success:'0'})");
+                        return;
                     }
                 }
             }
@@ -157,9 +169,8 @@ public class AuthController {
                 TokenDTO tokenDTO = BeanMapper.map(jwtToken, TokenDTO.class);
                 socketMessageApi.sendToClient(clientId, JsonUtils.toJsonString(new AuthDTO(tokenDTO, accountDTO)));
             }
-            return Result.success();
+            ServletErrorUtils.writeMessage(response, "successCallback({success:'1'})");
         }
-        return Result.error(ExceptionCode.COOKIE_ILLEGAL_ARGUMENT);
     }
 
     /**

+ 29 - 0
frontend/saas-web/app/model/report/Purchase.js

@@ -0,0 +1,29 @@
+Ext.define('saas.model.report.Purchase', {
+    extend: 'saas.model.Base',
+
+    fields: [
+
+        { name: 'id', type: 'int' },
+        { name: 'pu_code', type: 'string' },
+        { name: 'pu_vendcode', type: 'string' },
+        { name: 'pu_vendname', type: 'string' },
+        { name: 'pu_acceptstatus', type: 'string' },
+        { name: 'pu_buyername', type: 'string' },
+        { name: 'pu_date', type: 'date' },
+        { name: 'pd_detno', type: 'int' },
+        { name: 'pd_prodcode', type: 'string' },
+        { name: 'pr_detail', type: 'string' },
+        { name: 'pr_spec', type: 'string' },
+        { name: 'pr_brand', type: 'string' },
+        { name: 'pr_unit', type: 'string' },
+        { name: 'pd_qyt', type: 'float' },
+        { name: 'pd_price', type: 'float' },
+        { name: 'pd_taxrate', type: 'float' },
+        { name: 'pd_total', type: 'float' },
+        { name: 'pd_taxprice', type: 'float' },
+        { name: 'pd_taxtotal', type: 'float' },
+        { name: 'pd_acceptqty', type: 'float' },
+        { name: 'pd_accepttotal', type: 'float' },
+        { name: 'pd_remark', type: 'string' },
+    ],
+});

+ 4 - 0
frontend/saas-web/app/util/FormUtil.js

@@ -252,6 +252,10 @@ Ext.define('saas.util.FormUtil', {
                         }else {
                             throw new Error('请求单据编号错误');
                         }
+                    }else {
+                        return {
+                            main: {},
+                        }
                     }
                 }).then(function(formData) {
                     var initData = form.initData;

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

@@ -106,17 +106,12 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                             });
                             grid.condition = grid.getCondition(items);
                             grid.store.loadPage(1);
+                            grid.selModel.noChange = true;
+                            grid.selModel.deselectAll();
+                            grid.selModel.select(grid.selectRecordArr);
+                            grid.selModel.noChange = false;
                         }
                     },'->',{
-                        xtype:'button',
-                        text:'新增',
-                        handler:function(b){
-                            var grid = me;
-                            var trigger = grid.ownerCt.trigger;
-                            saas.util.BaseUtil.openTab(trigger.addXtype, '新增'+trigger.addTitle,trigger.addXtype + '_add');
-                        }
-                    },{
-                        xtype:'button',
                         text:'确定',
                         cls:'x-formpanel-btn-blue',
                         handler:function(b){
@@ -147,6 +142,23 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                             mainGrid.up('detailGridField').fireEvent('edit');
                             grid.ownerCt.close();
                         }
+                    },{
+                        xtype:'button',
+                        text:'新增',
+                        handler:function(b){
+                            var grid = me;
+                            var trigger = grid.ownerCt.trigger;
+                            saas.util.BaseUtil.openTab(trigger.addXtype, '新增'+trigger.addTitle,trigger.addXtype + '_add');
+                        },
+                        listeners:{
+                            afterrender:function(b){
+                                var grid = me;
+                                var trigger = grid.ownerCt.trigger;
+                                if(!trigger.addXtype||trigger.addXtype==''){
+                                    b.hide();
+                                }
+                            }
+                        }
                     }])
                 },{
                     xtype: 'pagingtoolbar',

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

@@ -226,7 +226,9 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
                             if(nowRec.get(item.to)&&nowRec.get(item.to)!=""){
                                 nowRec.set(item.to,null);
                             }
-                            delete nowRec.modified[item.to];
+                            if(nowRec.modified){
+                                delete nowRec.modified[item.to];
+                            }
                             if(JSON.stringify(nowRec.modified)=="{}"){
                                 nowRec.dirty = false
                             }

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

@@ -0,0 +1,214 @@
+/**
+ * Created by zhouy on 2018/10/17.
+ */
+Ext.define('saas.view.core.form.DataMultiCombo', {
+    extend: 'Ext.form.field.Trigger',
+    alias: 'widget.datamulticombo',
+    editable : false,
+    matchFieldWidth: true,
+    value: [],
+    cachedConfig: {
+        menuAlign: 'tl-bl?',
+        destroyMenu: true
+    },
+    initComponent: function() {
+        var me = this;
+        //获取数据
+        if(me.dataUrl){
+            Ext.Ajax.request({  
+                url : me.dataUrl,
+                timeout: 100000000,  
+                method : 'post',  
+                params : {}  ,
+                headers:{
+                    'Access-Control-Allow-Origin': '*',
+                    'Authorization':  saas.util.State.get('session').token
+                },
+                success: function(fp, o){
+                    // if(o.result.error){
+                    //     showError(o.result.error);
+                    // } else {
+                    //     var msg = Ext.getCmp('baseform').ownerCt.ownerCt.down('htmleditor[name=msg]');
+                    //     var imgel=msg.getEl().dom.getElementsByTagName('iframe')[0].contentWindow.document.body;
+                    //     if(imgel.getElementsByTagName('img').length>0){
+                    //       imgel.removeChild(imgel.getElementsByTagName('img')[0]);
+                    //     }
+                    //     //Ext.getCmp('baseform').ownerCt.ownerCt.down('hidden').setValue('../../../'+o.result.path);
+                    //     Ext.getCmp('baseform').ownerCt.setValue(o.result.path);
+                    //     var element = document.createElement("img");
+                    //     element.src = basePath + 'common/download.action?path=' + o.result.path.replace(/\+/g, '%2B');
+                    //     element.style="width:100%;height:100%";            
+                    //     element.title = '&img' + o.result.filepath + ";";
+                    //     msg.setValue('<img src="'+element.src+'" style=width:100%;height:100%;>');
+                    // }
+                },
+                failure: function (response, opts) {
+                    showToast('上传失败: ' + response.responseText);
+                }
+            });
+            me.BaseUtil.request({
+                url: me.dataUrl,
+                params: '',
+                method: 'POST',
+                async:false
+            })
+            .then(function(localJson) {
+                if(localJson.success){
+                }
+            })
+            .catch(function(res) {
+                console.error(res);
+                showToast('保存失败: ' + res.message);
+            });
+
+            // datas: [
+            //     ["已审核", "已审核"],
+            //     ["未审核", "未审核"]
+            // ]
+        }
+        me.callParent(arguments);
+    },
+    listeners:{
+        afterrender:function(f){
+            this.mon(f.el,{
+                mouseover: this.onMouseOver,
+                mouseleave:this.onMouseLeave,
+                scope:this
+            });
+        }
+
+    },
+    onMouseOver:function(){
+       this.showMenu();
+    },
+    onMouseLeave:function(a,b,c){
+        this.hideMenu(a.parentEvent?a:b);//el光标离开第二个参数为Event对象
+    },
+    onTriggerClick:function(){
+        this.showMenu();
+    },
+    getMenu: function() {
+        var me = this;
+
+        if (!me.menu) {
+
+            me.menu = Ext.create('Ext.menu.Menu',{
+                hideOnParentHide: false,
+                items: me.getMenuItems(),
+                listeners:{
+                    mouseleave:me.onMouseLeave,
+                    scope:me
+                }
+            });
+        }
+        return me.menu;
+    },
+    getMenuItems:function(){
+        var me = this,
+            i = 0,
+            item,
+            items = me.datas,
+            itemsLn = me.datas.length,
+            menuItems = [],
+            value = me.value;
+        for (; i < itemsLn; i++) {
+            item = items[i];
+            var checked = !!value.find(function(v) {
+                return v.value = iem[0];
+            });
+            menuItem = new Ext.menu.CheckItem({
+                text: item[1],
+                checked: checked,
+                checkValue:item[0],
+                hideOnClick: false,
+                checkHandler: this.onCheckChange,
+                scope: this
+            });
+            menuItems.push(menuItem);
+        }
+        return menuItems.length ? menuItems : null;
+    },
+    onCheckChange:function(checkItem, checked){
+        var items=this.menu.items.items,
+            checkedItems = [];
+        Ext.Array.each(items,function(item){
+            if(item.checked){
+                checkedItems.push({
+                    text: item.text,
+                    value: item.checkValue
+                });
+            }
+        });
+        this.setValue(checkedItems);
+    },
+
+    setValue: function(items) {
+        var me = this, rawV = '',
+        datas = me.datas,
+        menu = me.menu;
+        if(!Ext.isArray(items)) {
+            items = [items]
+        }
+        items.map(function(item, index) {
+            if(Ext.isString(item)) {
+                var data = datas.find(function(d) {
+                    return d[0] == item;
+                });
+                items[index] = {
+                    text: data[1],
+                    value: data[0]
+                }
+            }
+        })
+        rawV = items.map(function(item) {
+            return item.text
+        }).join(',');
+        this.setRawValue(rawV);
+        this.value = items;
+        if(menu) {
+            Ext.Array.each(menu.items.items, function(item) {
+                item.setChecked(!!items.find(function(i) {
+                    return i.value == item.checkValue;
+                }));
+            });
+        }
+        this.publishState('value', items);
+    },
+
+    showMenu: function (e, menu) {
+        menu = menu || this.getMenu();
+        /**
+         * menu上边框样式待处理
+         * */
+        if (menu) {
+            if (menu.isVisible()) {
+                    menu.focus();
+            } else {
+                menu.autoFocus = true;
+                if(this.matchFieldWidth){
+                    menu.setWidth(this.bodyEl.getWidth());
+                }
+                if (menu.isMenu) {
+                    menu.showBy(this.inputEl, this.getMenuAlign(),[-1, 0]);
+                } else if (menu.isViewportMenu) {
+                    menu.setDisplayed(!menu.getDisplayed());
+                } else {
+                    menu.show();
+                }
+            }
+        }
+    },
+    hideMenu: function(b) {
+        if (this.hasVisibleMenu()) {
+            var target=b.parentEvent.relatedTarget;
+            if(!((target.className && target.className.indexOf('x-menu')!=-1) || (target.name && target.name.indexOf(this.name)!=-1))){
+                this.menu.hide();
+            }
+        }
+        return this;
+    },
+    hasVisibleMenu: function() {
+        var menu = this.menu;
+        return menu && menu.rendered && menu.isVisible();
+    }
+});

+ 9 - 0
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -95,9 +95,18 @@ Ext.define('saas.view.core.form.FormPanel', {
                 hidden:'{!showAuditBtn}'
             },
             handler: "auditBtnClick",
+        }, {
+            cls:'x-formpanel-btn-white',
+            text:'打印',
+            hidden: true,
+            bind: {
+                // hidden: '{!id}'
+            },
+            handler:"onPrint"
         }, {
             cls:'x-formpanel-btn-white',
             text:'操作日志',
+            hidden: true,
             bind: {
                 hidden: '{!id}'
             },

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

@@ -365,5 +365,9 @@ Ext.define('saas.view.core.form.FormPanelController', {
             }));
         };
         win.show();
-    }
+    },
+
+    onPrint: function() {
+        console.log('print');
+    },
 });

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

@@ -74,7 +74,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
                                     ext: 'xlsx'
                                 }
                             }, {
-                                text: 'Excel xlsx (include groups)',
+                                text: 'Excel xlsx (包含分组合计)',
                                 cfg: {
                                     type: 'excel07',
                                     ext: 'xlsx',
@@ -88,7 +88,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
                                     ext: 'xml'
                                 }
                             }, {
-                                text: 'Excel xml (include groups)',
+                                text: 'Excel xml (包含分组合计)',
                                 cfg: {
                                     includeGroups: true,
                                     includeSummary: true
@@ -110,7 +110,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
                                     type: 'html'
                                 }
                             }, {
-                                text: 'HTML (include groups)',
+                                text: 'HTML (包含分组合计)',
                                 cfg: {
                                     type: 'html',
                                     includeGroups: true,
@@ -179,6 +179,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
         var me = this;
         var store = Ext.create('Ext.data.Store', {
             fields: me.getFields(),
+            // model: me.reportModel,
             autoLoad: true,
             pageSize: 15,
             data: [],
@@ -326,71 +327,6 @@ Ext.define('saas.view.core.report.ReportPanel', {
         return items;
     },
 
-    initToolBarItems: function () {
-        var me = this;
-
-        return ['->', {
-            ui: 'default-toolbar',
-            xtype: 'button',
-            text: '导出为...',
-            menu: {
-                defaults: {
-                    handler: 'exportTo'
-                },
-                items: [{
-                    text: 'Excel xlsx',
-                    cfg: {
-                        type: 'excel07',
-                        ext: 'xlsx'
-                    }
-                }, {
-                    text: 'Excel xlsx (include groups)',
-                    cfg: {
-                        type: 'excel07',
-                        ext: 'xlsx',
-                        includeGroups: true,
-                        includeSummary: true
-                    }
-                }, {
-                    text: 'Excel xml',
-                    cfg: {
-                        type: 'excel03',
-                        ext: 'xml'
-                    }
-                }, {
-                    text: 'Excel xml (include groups)',
-                    cfg: {
-                        includeGroups: true,
-                        includeSummary: true
-                    }
-                }, {
-                    text: 'CSV',
-                    cfg: {
-                        type: 'csv'
-                    }
-                }, {
-                    text: 'TSV',
-                    cfg: {
-                        type: 'tsv',
-                        ext: 'csv'
-                    }
-                }, {
-                    text: 'HTML',
-                    cfg: {
-                        type: 'html'
-                    }
-                }, {
-                    text: 'HTML (include groups)',
-                    cfg: {
-                        type: 'html',
-                        includeGroups: true,
-                        includeSummary: true
-                    }
-                }]
-            }
-        }]
-    },
-
     getConditions: function() {
         var me = this,
         formItems = me.searchItems,

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

@@ -219,6 +219,34 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 maxLength: 200
             }]
         },
+        accountinformation:{
+            items:[{
+                xtype:'hidden',
+                name:'roleIds',
+                hidden:true,
+            },{
+                xtype:'datamulticombo',
+                dataUrl:'/api/account/role/list',
+                fieldLabel: '关联角色',
+                name: 'roleNames',
+                allowBlank:false,
+                maxLength: 20
+            },{
+                xtype:'textfield',
+                fieldLabel: '联系电话',
+                name: 'mobile',
+                allowBlank:true,
+                maxLength: 30,
+                beforeLabelTextTpl: "",
+            },{
+                xtype:'textfield',
+                fieldLabel: '联系邮件',
+                name: 'email',
+                allowBlank:true,
+                maxLength: 30,
+                beforeLabelTextTpl: "",
+            }]
+        },
         warehouse:{
             items:[{
                 xtype:'hidden',

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

@@ -27,6 +27,7 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
      toolBtns: [{
          xtype: 'button',
          text: '转采购验收单',
+         hidden: true,
          bind: {
             hidden: '{turnHidden}'
         },

+ 1 - 0
frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js

@@ -27,6 +27,7 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
     toolBtns: [{
         xtype: 'button',
         text: '转采购验退单',
+        hidden: true,
         bind: {
            hidden: '{turnHidden}'
        },

+ 2 - 12
frontend/saas-web/app/view/purchase/report/Purchase.js

@@ -36,6 +36,8 @@ Ext.define('saas.view.purchase.report.Purchase', {
         ]
     }],
 
+    reportModel: 'saas.model.report.Purchase',
+
     reportColumns: [
     {
         text: 'id',
@@ -74,27 +76,15 @@ Ext.define('saas.view.purchase.report.Purchase', {
     }, {
         text: '物料名称',
         dataIndex: 'pr_detail', 
-        renderer: function (v, m, r) {
-            return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:v;
-        }
     }, {
         text: '物料规格',
         dataIndex: 'pr_spec', 
-        renderer: function (v, m, r) {
-            return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:v;
-        }
     }, {
         text: '品牌',
         dataIndex: 'pr_brand', 
-        renderer: function (v, m, r) {
-            return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:v;
-        }
     }, {
         text: '单位',
         dataIndex: 'pr_unit', 
-        renderer: function (v, m, r) {
-            return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:v;
-        }
     }, {
         text: '采购数量',
         dataIndex: 'pd_qty',

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

@@ -27,6 +27,7 @@ Ext.define('saas.view.sale.sale.FormPanel', {
      toolBtns: [{
          xtype: 'button',
          text: '转出货单',
+         hidden: true,
          handler: 'turnOut',
          bind: {
              hidden: '{sa_statuscode!="AUDITED"}'
@@ -59,7 +60,7 @@ Ext.define('saas.view.sale.sale.FormPanel', {
         fieldLabel : "交货地址", 
         allowBlank : false, 
         columnWidth : 0.5,
-        hiddenBtn:false,//true 则会关闭新增按钮功能
+        hiddenBtn:true,//true 则会关闭新增按钮功能
         addHandler:function(b){
             var document = Ext.create('saas.view.document.kind.Kind',{});
             var form = this.ownerCmp.ownerCt;

+ 1 - 0
frontend/saas-web/app/view/sale/saleOut/FormPanel.js

@@ -28,6 +28,7 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
         xtype: 'button',
         text: '转销售退货',
         handler: 'turnProdIn',
+        hidden: true,
         bind: {
             hidden: '{pi_statuscode!="AUDITED"}'
         }

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

@@ -73,7 +73,7 @@ Ext.define('saas.view.sys.account.DataList', {
     },{
         text : '联系邮箱', 
         dataIndex : 'email', 
-        width : 120.0, 
+        width : 220.0, 
         xtype : '', 
     },{
         text : '关联角色id', 
@@ -84,7 +84,7 @@ Ext.define('saas.view.sys.account.DataList', {
     },{
         text : '关联角色', 
         dataIndex : 'roleNames', 
-        width : 120.0, 
+        flex:1,
         xtype : '', 
     }],
 
@@ -185,15 +185,14 @@ Ext.define('saas.view.sys.account.DataList', {
             if(classList.indexOf('fa-pencil')>-1){
                 var document = Ext.create('saas.view.document.kind.Kind',{});
                 var form = this.ownerCt;
-                this.dialog = form.getController().getView().add({
+                this.dialog = this.getController().getView().add({
                     xtype: 'document-kind-childwin',
                     bind: {
-                        title: '修改单据编码规则'
+                        title: '修改账户信息'
                     },
-                    dataKind:'maxnumbers',
-                    belong:document.etc['maxnumbers'],
-                    _parent:form,
-                    _combo:this,
+                    dataKind:'accountinformation',
+                    belong:document.etc['accountinformation'],
+                    _parent:this,
                     record:record,
                     session: true
                 });

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

@@ -0,0 +1,321 @@
+Ext.define('saas.view.sys.baseconfig.FormPanel', {
+    extend: 'Ext.form.Panel',
+    xtype: 'sys-baseconfig-formpanel',
+
+    controller: 'sys-baseconfig-formpanel',
+    viewModel: 'sys-baseconfig-formpanel',
+    //工具类
+    FormUtil: Ext.create('saas.util.FormUtil'),
+    BaseUtil: Ext.create('saas.util.BaseUtil'),
+    
+    //字段属性
+    _idField: 'id',
+    _readUrl:'http://192.168.253.31:8560/api/account/company/read/current',
+    _saveUrl:'http://192.168.253.31:8560/api/account/company/save',
+
+    //基础属性
+    frame:true,
+    initId: 0,
+    layout: 'vbox',
+    autoScroll: true,
+    border: 1,
+    bodyPadding: 5,
+
+    fieldDefaults: {
+        margin: '0 5 5 30',
+        labelAlign: 'right',
+        labelWidth: 90,
+        width:300,
+        blankText: '该字段不能为空'
+    },
+
+    bbar:{
+        frame:true,
+        items:['->',{
+            text:'保存',
+            formBind:true,
+            name:'save'
+        },'->']
+    },
+
+    items: [{
+        bind:'{id}',
+        xtype: 'hidden',
+        name: 'id',
+        fieldLabel: 'id',
+        allowBlank: true,
+        width:600
+    },{
+        bind:'{name}',
+        xtype: 'textfield',
+        name: 'name',
+        fieldLabel: '公司名称',
+        allowBlank: true,
+        editable:false,
+        readOnly:true,
+        width:600
+    },{
+        bind:'{address}',
+        xtype: 'textfield',
+        name: 'address',
+        fieldLabel: '公司地址',
+        beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
+        allowBlank: false,
+        width:600
+    },{
+        bind:'{tel}',
+        xtype: 'textfield',
+        name: 'tel',
+        fieldLabel: '电话',
+        beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
+        allowBlank: false,
+        width:500
+    },{
+        bind:'{fax}',
+        xtype: 'textfield',
+        name: 'fax',
+        fieldLabel: '传真',
+        allowBlank: true,
+        width:500
+    }
+    // ,{
+    //     bind:'{en_begindate}',
+    //     xtype : "datefield", 
+    //     name : "en_begindate",
+    //     format:'Y-m-d H:i:s', 
+    //     fieldLabel : "开账日期", 
+    //     allowBlank : true, 
+    //     editable:false,
+    //     hideTrigger:true,
+    //     readOnly:true,
+    //     width:500
+    // }
+    // ,{ 
+    //     bind:'{en_pricemethod}',
+    //     displayField : "display", 
+    //     editable:false,
+    //     hideTrigger : false, 
+    //     maxLength : 100.0, 
+    //     width:500,
+    //     minValue : null, 
+    //     queryMode : "local", 
+    //     valueField : "value", 
+    //     xtype : "combo",
+    //     value:'WACC',
+    //     store:{
+    //         fields: ['display', 'value'],
+    //         data : [
+    //             {"display":"加权平均法", "value":'WACC'},
+    //             {"display":"先进先出法", "value":'FIFO'}
+    //         ]
+    //     },
+    //     name : "en_pricemethod", 
+    //     beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
+    //     fieldLabel : "库存计算方式", 
+    //     allowBlank : false, 
+    // }
+    // ,{  
+    //     ignore:true,
+    //     bind:'{updateTime}',
+    //     xtype : "datefield", 
+    //     name : "updateTime", 
+    //     fieldLabel : "更新时间", 
+    //     allowBlank : true, 
+    //     hideTrigger:true,
+    //     format:'Y-m-d H:i:s',
+    //     editable:false,
+    //     readOnly:true,
+    //     width:500,
+    // }
+    ,{
+        xtype: 'form',
+		width:600,
+		frame: false,
+		border: false,
+		minHeight: 22,
+		bodyStyle: 'padding:2px;',
+        layout: 'hbox',
+        items:[{
+            bind:'{signet}',
+            name : "signet", 
+            allowBlank : true, 
+            hidden:true,
+            xtype:'numberfield'
+        },{
+            allowBlank : true, 
+            width:500,
+            fieldLabel:'打印章上传',
+            xtype: 'filefield',
+            emptyText: '请选择图片',
+            buttonText: '',
+            buttonConfig: {
+                iconCls: 'x-fa fa-picture-o',
+            },
+            createFileInput : function() {
+                    var me = this;
+                    me.fileInputEl = me.button.el.createChild({
+                    name: me.getName(),
+                    cls: Ext.baseCSSPrefix + 'form-file-input',
+                    tag: 'input',
+                    type: 'file',
+                    size: 1,
+                    accept:"image/*"
+                }).on('change', me.onFileChange, me);
+            },
+            listeners: {
+                afterrender:function(field,ops){
+                    var fileEl = field.fileInputEl.dom;
+                    fileEl.setAttribute("accept","image/*");
+                },
+                change: function(field){
+                    var form = field.ownerCt.ownerCt;
+                    var myForm = field.ownerCt;
+                    var fileEl = field.fileInputEl.dom;
+                    var fd = new FormData();
+                    fd.append('file', fileEl.files[0]);
+                    form.setLoading(true);
+                    Ext.Ajax.request({
+                        url: 'http://192.168.253.31:8560/api/file/upload',//这里是填写需要跨域访问的URL
+                        cors: true,
+                        useDefaultXhrHeader: false,
+                        method: 'post',
+                        rawData: fd,
+                        headers: {
+                            'Access-Control-Allow-Origin': '*',
+                            'Authorization':  saas.util.State.get('session').token,
+                            //"Content-Type": 'multipart/form-data'  //文件上传的格式, 
+                            "Content-Type":null
+                        },
+                        success: function (response, opts) {
+                            form.setLoading(false);
+                            showToast('上传成功');
+                            var res = Ext.decode(response.responseText);
+                            if(res.success){
+                                var data = res.data;
+                                var name = data.name + "  (" + Ext.util.Format.fileSize(data.size) + ")";
+                                myForm.down('[name=signet]').setValue(data.id);
+                                field.setRawValue(name);
+                            }else{
+                                showToast('上传失败: ' + res.message);
+                            }
+                        },
+                        failure: function (response, opts) {
+                            form.setLoading(false);
+                            var res = Ext.decode(response.responseText);
+                            showToast('上传失败: ' + res.message);
+                        }
+                    });
+                }
+            }
+        },{
+            hidden:true,
+            name:'showSignetPhoto',
+            xtype:'button',
+            iconCls: 'x-fa fa-picture-o'
+        }]
+    },{
+        xtype: 'form',
+		width:600,
+		frame: false,
+		border: false,
+		minHeight: 22,
+		bodyStyle: 'padding:2px;',
+        layout: 'hbox',
+        items:[{
+            bind:'{logoUrl}',
+            name : "logoUrl", 
+            allowBlank : true, 
+            hidden:true,
+            xtype:'numberfield'
+        },{
+            allowBlank : true, 
+            width:500,
+            fieldLabel:'Logo上传',
+            xtype: 'filefield',
+            emptyText: '请选择图片',
+            buttonText: '',
+            buttonConfig: {
+                iconCls: 'x-fa fa-picture-o',
+            },
+            createFileInput : function() {
+                    var me = this;
+                    me.fileInputEl = me.button.el.createChild({
+                    name: me.getName(),
+                    cls: Ext.baseCSSPrefix + 'form-file-input',
+                    tag: 'input',
+                    type: 'file',
+                    size: 1,
+                    accept:"image/*"
+                }).on('change', me.onFileChange, me);
+            },
+            listeners: {
+                change: function(field){
+                    var form = field.ownerCt.ownerCt;
+                    var myForm = field.ownerCt;
+                    var fileEl = field.fileInputEl.dom;
+                    var fd = new FormData();
+                    fd.append('file', fileEl.files[0]);
+                    form.setLoading(true);
+                    Ext.Ajax.request({
+                        url: 'http://192.168.253.31:8560/api/file/upload',//这里是填写需要跨域访问的URL
+                        cors: true,
+                        useDefaultXhrHeader: false,
+                        method: 'post',
+                        rawData: fd,
+                        headers: {
+                            'Access-Control-Allow-Origin': '*',
+                            'Authorization':  saas.util.State.get('session').token,
+                            //"Content-Type": 'multipart/form-data'  //文件上传的格式, 
+                            "Content-Type":null
+                        },
+                        success: function (response, opts) {
+                            form.setLoading(false);
+                            showToast('上传成功');
+                            var res = Ext.decode(response.responseText);
+                            if(res.success){
+                                var data = res.data;
+                                var name = data.name + "  (" + Ext.util.Format.fileSize(data.size) + ")";
+                                myForm.down('[name=logoUrl]').setValue(data.id);
+                                field.setRawValue(name);
+                            }else{
+                                showToast('上传失败: ' + res.message);
+                            }
+                        },
+                        failure: function (response, opts) {
+                            form.setLoading(false);
+                            var res = Ext.decode(response.responseText);
+                            showToast('上传失败: ' + res.message);
+                        }
+                    });
+                }
+            }
+        },{
+            hidden:true,
+            name:'showLogoPhoto',
+            xtype:'button',
+            iconCls: 'x-fa fa-picture-o'
+        }]
+    }],
+
+    initComponent: function () {
+        var me = this,
+        viewModel = me.getViewModel();
+        var url = me._readUrl;
+        me.BaseUtil.request({url })
+        .then(function(res) {
+            if(res.success) {
+                var d = res.data;
+                viewModel.setData(d)
+            }
+        })
+        .catch(function(response) {
+            console.error(response);
+        });
+
+        me.callParent(arguments);
+    },
+
+    refresh:function(){
+        this.ownerCt.setTitle('参数设置')
+    }
+});

+ 66 - 0
frontend/saas-web/app/view/sys/baseconfig/FormPanelController.js

@@ -0,0 +1,66 @@
+Ext.define('saas.view.sys.baseconfig.FormPanelController', {
+    extend: 'Ext.app.ViewController',
+    alias: 'controller.sys-baseconfig-formpanel',
+
+    BaseUtil: Ext.create('saas.util.BaseUtil'),
+    FormUtil: Ext.create('saas.util.FormUtil'),
+
+    init: function (form) {
+        var me = this;
+        this.control({
+            'button[name=save]':{
+                click:function(){
+                    me.onSave();
+                }
+            }
+        });
+    },
+
+    onSave: function() {
+        var me = this,
+        form = this.getView();
+
+        var valid = form.isValid();
+        if(!valid) {
+            showToast('表单校验有误,请检查');
+            return false;
+        }
+
+        if(form.getForm().wasDirty==false){
+            showToast('未修改数据,请修改后保存');
+            return false;
+        }
+        
+        viewModel = me.getViewModel();
+        var formData = viewModel.data;
+        formData.en_name = null;
+        formData.updateTime = null;
+        me.BaseUtil.request({
+            url: form._saveUrl,
+            params: JSON.stringify(formData),
+            method: 'POST',
+        })
+        .then(function(localJson) {
+            if(localJson.success){
+                showToast('保存成功');
+                viewModel = form.getViewModel();
+                var url = form._readUrl;
+                form.BaseUtil.request({url })
+                .then(function(res) {
+                    if(res.success) {
+                        var d = res.data;
+                        viewModel.setData(d)
+                    }
+                })
+                .catch(function(response) {
+                    console.error(response);
+                });
+            }
+        })
+        .catch(function(res) {
+            console.error(res);
+            showToast('保存失败: ' + res.message);
+        });
+    }
+
+});

+ 5 - 0
frontend/saas-web/app/view/sys/baseconfig/FormPanelModel.js

@@ -0,0 +1,5 @@
+Ext.define('saas.view.sys.baseconfig.FormPanelModel', {
+    extend: 'Ext.app.ViewModel',
+    alias: 'viewmodel.sys-baseconfig-formpanel',
+
+});

+ 232 - 82
frontend/saas-web/app/view/sys/config/FormPanel.js

@@ -7,8 +7,8 @@ Ext.define('saas.view.sys.config.FormPanel', {
     
     //字段属性
     _idField: 'id',
-    _readUrl:'/api/commons/enterprise/read',
-    _saveUrl:'/api/commons/enterprise/save',
+    _readUrl:'http://192.168.253.31:8560/api/account/company/read/current',
+    _saveUrl:'http://192.168.253.31:8560/api/account/company/save',
 
     //基础属性
     frame:true,
@@ -36,116 +36,266 @@ Ext.define('saas.view.sys.config.FormPanel', {
     },
 
     items: [{
-        bind:'{companyId}',
+        bind:'{id}',
         xtype: 'hidden',
-        name: 'companyId',
+        name: 'id',
         fieldLabel: 'id',
         allowBlank: true,
         width:600
     },{
-        bind:'{en_name}',
+        bind:'{name}',
         xtype: 'textfield',
-        name: 'en_name',
+        name: 'name',
         fieldLabel: '公司名称',
         allowBlank: true,
         editable:false,
         readOnly:true,
         width:600
     },{
-        bind:'{en_address}',
+        bind:'{address}',
         xtype: 'textfield',
-        name: 'en_address',
+        name: 'address',
         fieldLabel: '公司地址',
         beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
         allowBlank: false,
         width:600
     },{
-        bind:'{en_tel}',
+        bind:'{tel}',
         xtype: 'textfield',
-        name: 'en_tel',
+        name: 'tel',
         fieldLabel: '电话',
         beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
         allowBlank: false,
         width:500
     },{
-        bind:'{en_fax}',
+        bind:'{fax}',
         xtype: 'textfield',
-        name: 'en_fax',
+        name: 'fax',
         fieldLabel: '传真',
         allowBlank: true,
         width:500
-    },{
-        bind:'{en_begindate}',
-        xtype : "datefield", 
-        name : "en_begindate",
-        format:'Y-m-d H:i:s', 
-        fieldLabel : "开账日期", 
-        allowBlank : true, 
-        editable:false,
-        hideTrigger:true,
-        readOnly:true,
-        width:500
-    },{ 
-        bind:'{en_pricemethod}',
-        displayField : "display", 
-        editable:false,
-        hideTrigger : false, 
-        maxLength : 100.0, 
-        width:500,
-        minValue : null, 
-        queryMode : "local", 
-        valueField : "value", 
-        xtype : "combo",
-        value:'WACC',
-        store:{
-            fields: ['display', 'value'],
-            data : [
-                {"display":"加权平均法", "value":'WACC'},
-                {"display":"先进先出法", "value":'FIFO'}
-            ]
-        },
-        name : "en_pricemethod", 
-        beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
-        fieldLabel : "库存计算方式", 
-        allowBlank : false, 
-    },{  
-        bind:'{en_signet}',
-        name : "en_signet", 
-        fieldLabel : "打印章上传", 
-        allowBlank : false, 
-        width:500,
-        xtype: 'filefield',
-        beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
-        emptyText: '请选择图片',
-        buttonText: '',
-        buttonConfig: {
+    }
+    // ,{
+    //     bind:'{en_begindate}',
+    //     xtype : "datefield", 
+    //     name : "en_begindate",
+    //     format:'Y-m-d H:i:s', 
+    //     fieldLabel : "开账日期", 
+    //     allowBlank : true, 
+    //     editable:false,
+    //     hideTrigger:true,
+    //     readOnly:true,
+    //     width:500
+    // }
+    // ,{ 
+    //     bind:'{en_pricemethod}',
+    //     displayField : "display", 
+    //     editable:false,
+    //     hideTrigger : false, 
+    //     maxLength : 100.0, 
+    //     width:500,
+    //     minValue : null, 
+    //     queryMode : "local", 
+    //     valueField : "value", 
+    //     xtype : "combo",
+    //     value:'WACC',
+    //     store:{
+    //         fields: ['display', 'value'],
+    //         data : [
+    //             {"display":"加权平均法", "value":'WACC'},
+    //             {"display":"先进先出法", "value":'FIFO'}
+    //         ]
+    //     },
+    //     name : "en_pricemethod", 
+    //     beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
+    //     fieldLabel : "库存计算方式", 
+    //     allowBlank : false, 
+    // }
+    // ,{  
+    //     ignore:true,
+    //     bind:'{updateTime}',
+    //     xtype : "datefield", 
+    //     name : "updateTime", 
+    //     fieldLabel : "更新时间", 
+    //     allowBlank : true, 
+    //     hideTrigger:true,
+    //     format:'Y-m-d H:i:s',
+    //     editable:false,
+    //     readOnly:true,
+    //     width:500,
+    // }
+    ,{
+        xtype: 'form',
+		width:600,
+		frame: false,
+		border: false,
+		minHeight: 22,
+		bodyStyle: 'padding:2px;',
+        layout: 'hbox',
+        items:[{
+            bind:'{signet}',
+            name : "signet", 
+            allowBlank : true, 
+            hidden:true,
+            xtype:'numberfield'
+        },{
+            allowBlank : true, 
+            width:500,
+            fieldLabel:'打印章上传',
+            xtype: 'filefield',
+            emptyText: '请选择图片',
+            buttonText: '',
+            buttonConfig: {
+                iconCls: 'x-fa fa-picture-o',
+            },
+            createFileInput : function() {
+                    var me = this;
+                    me.fileInputEl = me.button.el.createChild({
+                    name: me.getName(),
+                    cls: Ext.baseCSSPrefix + 'form-file-input',
+                    tag: 'input',
+                    type: 'file',
+                    size: 1,
+                    accept:"image/*"
+                }).on('change', me.onFileChange, me);
+            },
+            listeners: {
+                afterrender:function(field,ops){
+                    var fileEl = field.fileInputEl.dom;
+                    fileEl.setAttribute("accept","image/*");
+                },
+                change: function(field){
+                    var form = field.ownerCt.ownerCt;
+                    var myForm = field.ownerCt;
+                    var fileEl = field.fileInputEl.dom;
+                    var fd = new FormData();
+                    fd.append('file', fileEl.files[0]);
+                    form.setLoading(true);
+                    Ext.Ajax.request({
+                        url: 'http://192.168.253.31:8560/api/file/upload',//这里是填写需要跨域访问的URL
+                        cors: true,
+                        useDefaultXhrHeader: false,
+                        method: 'post',
+                        rawData: fd,
+                        headers: {
+                            'Access-Control-Allow-Origin': '*',
+                            'Authorization':  saas.util.State.get('session').token,
+                            //"Content-Type": 'multipart/form-data'  //文件上传的格式, 
+                            "Content-Type":null
+                        },
+                        success: function (response, opts) {
+                            form.setLoading(false);
+                            showToast('上传成功');
+                            var res = Ext.decode(response.responseText);
+                            if(res.success){
+                                var data = res.data;
+                                var name = data.name + "  (" + Ext.util.Format.fileSize(data.size) + ")";
+                                myForm.down('[name=signet]').setValue(data.id);
+                                field.setRawValue(name);
+                            }else{
+                                showToast('上传失败: ' + res.message);
+                            }
+                        },
+                        failure: function (response, opts) {
+                            form.setLoading(false);
+                            var res = Ext.decode(response.responseText);
+                            showToast('上传失败: ' + res.message);
+                        }
+                    });
+                }
+            }
+        },{
+            hidden:true,
+            name:'showSignetPhoto',
+            xtype:'button',
             iconCls: 'x-fa fa-picture-o'
-        }
-    },{  
-        bind:'{en_logo}',
-        name : "en_logo", 
-        fieldLabel : "Logo上传", 
-        allowBlank : false, 
-        width:500,
-        xtype: 'filefield',
-        beforeLabelTextTpl : "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>",
-        emptyText: '请选择图片',
-        buttonText: '',
-        buttonConfig: {
+        }]
+    },{
+        xtype: 'form',
+		width:600,
+		frame: false,
+		border: false,
+		minHeight: 22,
+		bodyStyle: 'padding:2px;',
+        layout: 'hbox',
+        items:[{
+            bind:'{logoUrl}',
+            name : "logoUrl", 
+            allowBlank : true, 
+            hidden:true,
+            xtype:'numberfield'
+        },{
+            allowBlank : true, 
+            width:500,
+            fieldLabel:'Logo上传',
+            xtype: 'filefield',
+            emptyText: '请选择图片',
+            buttonText: '',
+            buttonConfig: {
+                iconCls: 'x-fa fa-picture-o',
+            },
+            createFileInput : function() {
+                    var me = this;
+                    me.fileInputEl = me.button.el.createChild({
+                    name: me.getName(),
+                    cls: Ext.baseCSSPrefix + 'form-file-input',
+                    tag: 'input',
+                    type: 'file',
+                    size: 1,
+                    accept:"image/*"
+                }).on('change', me.onFileChange, me);
+            },
+            listeners: {
+                afterrender:function(field,ops){
+                    var fileEl = field.fileInputEl.dom;
+                    fileEl.setAttribute("accept","image/*");
+                },
+                change: function(field){
+                    var form = field.ownerCt.ownerCt;
+                    var myForm = field.ownerCt;
+                    var fileEl = field.fileInputEl.dom;
+                    var fd = new FormData();
+                    fd.append('file', fileEl.files[0]);
+                    form.setLoading(true);
+                    Ext.Ajax.request({
+                        url: 'http://192.168.253.31:8560/api/file/upload',//这里是填写需要跨域访问的URL
+                        cors: true,
+                        useDefaultXhrHeader: false,
+                        method: 'post',
+                        rawData: fd,
+                        headers: {
+                            'Access-Control-Allow-Origin': '*',
+                            'Authorization':  saas.util.State.get('session').token,
+                            //"Content-Type": 'multipart/form-data'  //文件上传的格式, 
+                            "Content-Type":null
+                        },
+                        success: function (response, opts) {
+                            form.setLoading(false);
+                            showToast('上传成功');
+                            var res = Ext.decode(response.responseText);
+                            if(res.success){
+                                var data = res.data;
+                                var name = data.name + "  (" + Ext.util.Format.fileSize(data.size) + ")";
+                                myForm.down('[name=logoUrl]').setValue(data.id);
+                                field.setRawValue(name);
+                            }else{
+                                showToast('上传失败: ' + res.message);
+                            }
+                        },
+                        failure: function (response, opts) {
+                            form.setLoading(false);
+                            var res = Ext.decode(response.responseText);
+                            showToast('上传失败: ' + res.message);
+                        }
+                    });
+                }
+            }
+        },{
+            hidden:true,
+            name:'showLogoPhoto',
+            xtype:'button',
             iconCls: 'x-fa fa-picture-o'
-        }
-    },{  
-        ignore:true,
-        bind:'{updateTime}',
-        xtype : "datefield", 
-        name : "updateTime", 
-        fieldLabel : "更新时间", 
-        allowBlank : true, 
-        hideTrigger:true,
-        format:'Y-m-d H:i:s',
-        editable:false,
-        readOnly:true,
-        width:500,
+        }]
     }],
 
     initComponent: function () {

+ 5 - 0
frontend/saas-web/app/view/sys/manager/FormPanel.js

@@ -38,6 +38,11 @@ Ext.define('saas.view.sys.manager.FormPanel', {
         iconCls:'x-fa fa-user-circle-o',
         title: '权限设置',
         xtype:'sys-power-formpanel'
+    },{
+        cls:'sys-config-formpanel',
+        iconCls:'x-fa fa-cog',
+        title: '参数设置',
+        xtype:'sys-baseconfig-formpanel'
     }],
 
     initComponent: function () {