Browse Source

合并 feature-panel 分支

sunyj 8 years ago
parent
commit
d2ca9f2478

+ 420 - 420
kanban-console/src/main/webapp/resources/app/view/desktop/BoardManageMainPanel.js

@@ -1,22 +1,22 @@
 Ext.define('erp.view.desktop.BoardManageMainPanel', {
-	extend: 'Ext.panel.Panel',
-	alias:'widget.managemain',
-	id:'managemain',
-	border: 0,
-	hideBorders: true,
-	layout: 'border',
-	style: {
-		'border-left': '1px solid silver'
-	},
-	initRecord: null,
-	initComponent:function(){
-		var me = this;
-		me.initRecord = null;
+    extend: 'Ext.panel.Panel',
+    alias:'widget.managemain',
+    id:'managemain',
+    border: 0,
+    hideBorders: true,
+    layout: 'border',
+    style: {
+        'border-left': '1px solid silver'
+    },
+    initRecord: null,
+    initComponent:function(){
+        var me = this;
+        me.initRecord = null;
         var dataTypeStore = Ext.create('Ext.data.Store', {
             fields: ['type', 'name'],
             data: [
                 { "type": "String", "name": "下拉框" },
-				{ "type": "SQL", "name": "SQL取数" }
+                { "type": "SQL", "name": "SQL取数" }
             ]
         });
         var dataTypeCombo = new Ext.form.ComboBox({
@@ -27,419 +27,419 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
             forceSelection: true,
             editable: false,
             triggerAction: 'all',
-			selectOnFocus: true,
-			listeners: {
-				change: function() {
-					var selected = Ext.getCmp('boardParamsGrid').getSelectionModel().getSelection()[0];
-					selected.set('optionalValues', '');
-				}
-			}
+            selectOnFocus: true,
+            listeners: {
+                change: function() {
+                    var selected = Ext.getCmp('boardParamsGrid').getSelectionModel().getSelection()[0];
+                    selected.set('optionalValues', '');
+                }
+            }
         });
-		me.items = [{
-			xtype: 'form',
-			id:'boardSetForm',
-			region: 'north',
-			height: '30%',
-			bodyStyle: {
-				border: 'none'
-			},
-			style: {
-				border: '1px solid silver'
-			},
-			bodyPadding: 10,
-			defaults: {
-				width: 300,
+        me.items = [{
+            xtype: 'form',
+            id:'boardSetForm',
+            region: 'north',
+            height: '30%',
+            bodyStyle: {
+                border: 'none'
+            },
+            style: {
+                border: '1px solid silver'
+            },
+            bodyPadding: 10,
+            defaults: {
+                width: 300,
                 labelWidth: 80
-			},
-			items: [{
-				xtype: 'hidden',
-				name: 'code',
-				id:'code'
-			},{
-				xtype: 'textfield',
-				name: 'name',
-				allowBlank: false,
-				fieldLabel: '名称'
-			},{  
-                xtype:'triggerfield',  
-                name:'iconCls',  
-                fieldLabel: '图标',  
+            },
+            items: [{
+                xtype: 'hidden',
+                name: 'code',
+                id:'code'
+            },{
+                xtype: 'textfield',
+                name: 'name',
+                allowBlank: false,
+                fieldLabel: '名称'
+            },{
+                xtype:'triggerfield',
+                name:'iconCls',
+                fieldLabel: '图标',
                 triggerCls: "icon-selecter",
                 overCls: '',
                 hideTrigger : false,
-				editable: false,
-				allowBlank: false,
+                editable: false,
+                allowBlank: false,
                 onTriggerClick : function(){
-                	me.showIcons(me);
-                }  
-			},{
-				xtype: 'radiogroup',
-				fieldLabel: '展示方式',
-				columns: 2,
-				allowBlank: false,
-				items: [
-		            { boxLabel: '自动切换', name: 'display', inputValue: 'AutoSwitch'},
-		            // { boxLabel: '分屏展示', name: 'display', inputValue: 'SplitScreen' }
-		        ]
-			}, {
-				xtype:'combo',
-				columnWidth:0.75,
-				fieldLabel:'数据源',
-				name:'dataSourceCode',
-				id:'dataSourceCode',
-				//value:'UAS',
-				editable:false,
-				allowBlank: false,
-				store:Ext.create('Ext.data.Store',{
-					fields:['username','code','name'],
-					proxy:{
-						type:'ajax',
-						url:'datasource/get',
-						reader: {
-							type: 'json',
-							root: 'content'
-						}
-					},
-					autoLoad: true
-				}),
-				queryMode: 'local',
-				displayField: 'name',
-				valueField: 'code'
-			}],
-			bbar: ['->', {
-				xtype: 'button',
-				text: '保存',
-				width: 100,
-				handler: function() {
-					var formpanel = Ext.getCmp('boardSetForm');
-					if(formpanel.isValid()) {
-						formpanel.savePanel(formpanel)
-					}else {
-						Ext.Msg.alert('警告', '有必填项未填!');
-					}
-				}
-			}, '->'],
-			savePanel: function(formpanel) {
-				var me = this;
-				var managePanel = Ext.getCmp('manage');
-				var el = me.getEl();
-				if(!managePanel.selectedPanelRecord) {
-					Ext.Msg.confirm('提示', '请先选择左侧面板')
-					return;
-				}
-				var newRecord = {
-					data: formpanel.getForm().getValues(),
-					getData: function() {
-						return this.data;
-					}
-				};
-		
-				var values = formpanel.getForm().getValues();
-				
-				var type;
-				if(values.code){
-					type = 'update';
-				}else{
-					type = 'save';
-				}
-				el.mask('保存中...');
-				Ext.Ajax.request({
-					url:'panel/'+type,
-					method:'POST',
-					params:{
-						json:Ext.encode(values)
-					},
-					callback:function(options,success,response){
-						el.unmask();
-						var res = Ext.decode(response.responseText);
-						if(typeof(res.success)!=='undefined'&&res.success==false){
-							Ext.Msg.alert('保存失败',res.message);
-						}else{
-							Ext.Msg.alert('提示','保存成功!');
-							var desktop = Ext.getCmp('desktop');
-							desktop.shortcutsView.store.reload();
-							if(type=='save'){
-								newRecord.data.code = res.code;
-							}
-							var r = {
-								data: newRecord.data,
-								get: function(key) {return this[key]},
-								set: function(key, value) {this[key] = value},
-								getData: function() {return this.data}
-							}
-							// 更新左侧item
-							var leftpanel = Ext.getCmp('manageleft');
-							leftpanel.updateItem(r);
-		
-							me.setPanelDisabled();
-						}
-					}
-				});
-			}
-		}, {
-			xtype: 'grid',
-			region: 'center',
-			height: '70%',
-			id:'boardParamsGrid',
-			store: Ext.create('Ext.data.JsonStore',{
-				fields: ['code', 'name', 'type', 'optionalValues'],
-				data: []
-			}),
-			autoScroll: true,
-			forceFit: true,
-			columnLines: true,
-			columns: [
-				{ text: 'ID', dataIndex: 'code', hidden: true },
-				{ text: '参数名称', dataIndex: 'name', flex: 1, editor: 'textfield' },
-				{ text: '数据类型', dataIndex: 'type', flex: 1, editor: dataTypeCombo, renderer: function (value, cellmeta, record) {
-					var index = dataTypeStore.find(dataTypeCombo.valueField, value);
-					var ehrRecord = dataTypeStore.getAt(index);
-					var returnvalue = "";
-					if (ehrRecord) {
-						returnvalue = ehrRecord.get('name');
-					}
-					return returnvalue;
-				}
-			},
-				{ text: '值', dataIndex: 'optionalValues', flex: 4 },
-				{ xtype:'actioncolumn', align: 'center', width: 50, items:[{
-					iconCls: 'save',
-					tooltip: '保存',
-					handler: function(th, rowIndex, colIndex) {
-						var grid =this.up('grid');
-						var rec = grid.getStore().getAt(rowIndex);
-						var data = Object.assign({}, rec.data);
-						if(data.type == 'String') {
-							data.optionalValues = data.optionalValues instanceof Array ? data.optionalValues : data.optionalValues.split(',')
-						}else if(data.type == 'SQL') {
-							data.optionalValues = data.optionalValues instanceof Array ? data.optionalValues : [data.optionalValues]
-						}
-						grid.saveParam(data);
-					}
-				}] }
-			],
-			tbar: [{
-				xtype: 'button',
-				text: '添加参数',
-				disabled: true,
-				handler: function() {
-					if(!me.initRecord.get('code')) {
-						Ext.Msg.alert('提示', '请先保存面板再执行添加参数操作!');
-						return;
-					}
-					var grid = this.up('grid');
-					var record = {
-						name: '新参数',
-						type: 'String',
-						inputMode: 'Radio',
-						optionalValues: []
-					};
-					grid.addParam(record);
-				}
-			}, {
-				xtype: 'button',
-				text: '删除参数',
-				disabled: true,
-				handler: function() {
-					var grid =this.up('grid');
-					var record = grid.getSelectionModel().getSelection()[0];
-					if(record) {
-						Ext.Msg.confirm('确认', '确定要删除参数  ' + record.get('name') + '?', function(btn) {
-							if(btn == 'yes') {
-								grid.deleteParam(record, grid.getStore().indexOf(record));
-							}
-						});
-					}
-				}
-			}],
-			plugins: [
-				Ext.create('Ext.grid.plugin.CellEditing', {
-					clicksToEdit: 2
-				})
-			],
-			listeners: {
-				celldblclick: function (gridview, colEl, colIndex, record, rowEl, rowIndex, e, eOpts) {
-					var types = ['String', 'SQL'];
-					var titles = ['下拉项', 'SQL定义'];
-					var i = types.indexOf(record.get('type'));
-					if(colIndex == 2 && i != -1) { // 值列
-						Ext.create('erp.view.desktop.ParamValueEditor',{
-							title: titles[i],
-							paramRecord: record
-						}).show();
-					}
-				}, 
-			},
-			loadGridData: function() {
-				var grid = this;
-				grid.getEl().mask('loading...');
-				Ext.Ajax.request({
-					url:'parameter/get/byPanel/' + me.initRecord.get('code'),
-					method:'POST',
-					callback:function(options,success,response){
-						grid.getEl().unmask();
-						if(response.responseText == '') return;
-						var res = JSON.parse(response.responseText);
-						if(success) {
-							res = res instanceof Array ? res : [res];
-							grid.getStore().loadData(res);
-						}else {
-							Ext.Msg.alert('失败', res.message);
-						}
-					}
-				});
-			},
-			addParam: function(record) {
-				var grid = this;
-				var rowIndex = grid.getStore().add(record);
-				grid.getPlugin().startEditByPosition({ row: grid.getStore().getCount() - 1, column: 0 });
-			},
-			saveParam: function(record) {
-				var grid = this;
-				var type;
-				if(record['code']) {
-					type = 'updatePart';
-				}else {
-					type = 'save';
-				}
-				record.inputMode = 'DropDownBox';
-				record.panelCode = me.initRecord.get('code');
-				grid.getEl().mask('保存中...');
-				Ext.Ajax.request({
-					url:'parameter/' + type,
-					method:'POST',
-					params:{
-						json:Ext.encode(record)
-					},
-					callback:function(options,success,response){
-						grid.getEl().unmask();
-						var res = JSON.parse(response.responseText);
-						if(success) {
-							if(grid) {
-								grid.loadGridData();
-								Ext.Msg.alert('成功', '已更新');
-							}
-						}else {
-							Ext.Msg.alert('失败', res.message);
-						}
-					}
-				});
-			},
-			deleteParam: function(record) {
-				var grid = this;
-				if(record.get('code')) {
-					grid.getEl().mask('删除中...');
-					Ext.Ajax.request({
-						url:'parameter/delete/' + record.get('code'),
-						method:'POST',
-						callback:function(options,success,response){
-							grid.getEl().unmask();
-							var res = JSON.parse(response.responseText);
-							if(success) {
-								grid.loadGridData();
-							}else {
-								Ext.Msg.alert('失败', res.message);
-							}
-						}
-					});
-				}else {
-					grid.getStore().remove(record);
-				}
-			}
-		}];
-		this.callParent(arguments);
-	},
-	load: function(record, item) {
-		var me = this;
-		me.initRecord = record;
-		var formpanel = me.down('form');
-		var form = formpanel.getForm();
-		me.reset();
-		// from添加数据
-		form.loadRecord(record);
+                    me.showIcons(me);
+                }
+            },{
+                xtype: 'radiogroup',
+                fieldLabel: '展示方式',
+                columns: 2,
+                allowBlank: false,
+                items: [
+                    { boxLabel: '自动切换', name: 'display', inputValue: 'AutoSwitch'},
+                    // { boxLabel: '分屏展示', name: 'display', inputValue: 'SplitScreen' }
+                ]
+            }, {
+                xtype:'combo',
+                columnWidth:0.75,
+                fieldLabel:'数据源',
+                name:'dataSourceCode',
+                id:'dataSourceCode',
+                //value:'UAS',
+                editable:false,
+                allowBlank: false,
+                store:Ext.create('Ext.data.Store',{
+                    fields:['username','code','name'],
+                    proxy:{
+                        type:'ajax',
+                        url:'datasource/get',
+                        reader: {
+                            type: 'json',
+                            root: 'content'
+                        }
+                    },
+                    autoLoad: true
+                }),
+                queryMode: 'local',
+                displayField: 'name',
+                valueField: 'code'
+            }],
+            bbar: ['->', {
+                xtype: 'button',
+                text: '保存',
+                width: 100,
+                handler: function() {
+                    var formpanel = Ext.getCmp('boardSetForm');
+                    if(formpanel.isValid()) {
+                        formpanel.savePanel(formpanel)
+                    }else {
+                        Ext.Msg.alert('警告', '有必填项未填!');
+                    }
+                }
+            }, '->'],
+            savePanel: function(formpanel) {
+                var me = this;
+                var managePanel = Ext.getCmp('manage');
+                var el = me.getEl();
+                if(!managePanel.selectedPanelRecord) {
+                    Ext.Msg.confirm('提示', '请先选择左侧面板')
+                    return;
+                }
+                var newRecord = {
+                    data: formpanel.getForm().getValues(),
+                    getData: function() {
+                        return this.data;
+                    }
+                };
 
-		// 参数grid添加数据
-		var paramGrid = Ext.getCmp('boardParamsGrid');
-		paramGrid.loadGridData();
-		// 看板grid添加数据
-		var boardGrid = Ext.getCmp('tplGrid');
-		boardGrid.loadGridData();
+                var values = formpanel.getForm().getValues();
 
-		// 设置各个按钮状态
-		me.setPanelDisabled();
-	},
-	setPanelDisabled: function() {
-		var me = this;
-		var rightpanel = Ext.getCmp('manageright');
-		var isDisabled =Ext.getCmp('manage').selectedPanelRecord ? false : true;
+                var type;
+                if(values.code){
+                    type = 'update';
+                }else{
+                    type = 'save';
+                }
+                el.mask('保存中...');
+                Ext.Ajax.request({
+                    url:'panel/'+type,
+                    method:'POST',
+                    params:{
+                        json:Ext.encode(values)
+                    },
+                    callback:function(options,success,response){
+                        el.unmask();
+                        var res = Ext.decode(response.responseText);
+                        if(typeof(res.success)!=='undefined'&&res.success==false){
+                            Ext.Msg.alert('保存失败',res.message);
+                        }else{
+                            Ext.Msg.alert('提示','保存成功!');
+                            var desktop = Ext.getCmp('desktop');
+                            desktop.shortcutsView.store.reload();
+                            if(type=='save'){
+                                newRecord.data.code = res.code;
+                            }
+                            var r = {
+                                data: newRecord.data,
+                                get: function(key) {return this[key]},
+                                set: function(key, value) {this[key] = value},
+                                getData: function() {return this.data}
+                            }
+                            // 更新左侧item
+                            var leftpanel = Ext.getCmp('manageleft');
+                            leftpanel.updateItem(r);
 
-		me.setButtonDisabled(isDisabled);
-		rightpanel.setButtonDisabled(isDisabled);
-	},
-	reset: function() {
-		var me = this;
-		var formpanel = me.down('form');
-		var form = formpanel.getForm();
-		form.reset();
-		var paramgrid = Ext.getCmp('boardParamsGrid');
-		paramgrid.getStore().removeAll();
-		var boardgrid = Ext.getCmp('tplGrid');
-		boardgrid.getStore().removeAll();
-	},
-	showIcons: function(me) {
-		var iconbox = Ext.create('Ext.window.Window', {
-			title: '选择图标',
-		    height: 200,
-		    width: 400,
-		    layout: 'fit',
-		    modal:true,
-			items: [{
-				xtype: 'dataview',
-	            overItemCls: 'icon-over',
-	            selectedItemCls: 'icon-selected',
-	            trackOver: true,
-	            itemSelector: 'div.select-icon-item',
-	            store: Ext.create('Ext.data.Store', {
-				    fields: ['name', 'iconCls', 'code'],
-				    data: [
-						{ iconCls: 'grid-shortcut'},
-						{ iconCls: 'accordion-shortcut'},
-						{ iconCls: 'cpu-shortcut'},
-						{ iconCls: 'notepad-shortcut'}
-					]
-				}),
-	            tpl: new Ext.XTemplate([
-			        '<tpl for=".">',
-			                '<div icon="{iconCls}" class="select-icon-item {iconCls}">',
-			                '</div>',
-			        '</tpl>',
-			        '<div class="x-clear"></div>'
-			    ]),
-			    renderTo: Ext.getBody(),
-			    listeners: {
-			    	afterrender: function() {
-			    		this.on('itemclick', function(th){
-			    			var icon = th.getSelectedNodes()[0].getAttribute('icon')
-			    			me.changeIcon(icon, th.up());
-			    		}, me);
-			    	}
-			    }
-	        }]
-		});
-		iconbox.show();
-	},
-	changeIcon: function(icon, iconbox) {
-		var form = this.items.items[0].getForm();
-		form.findField('iconCls').setValue(icon);
-		iconbox.close();
-	},
-	setButtonDisabled: function(isDisabled) {
-		var grid = this.down('grid');
-		var buttons = grid.dockedItems.items[1].items.items;
-		Ext.Array.each(buttons,function(btn){
-			if(btn.xtype=='button'&&btn.disabled!=isDisabled){
-				btn.setDisabled(isDisabled);
-			}
-		});
-	},
+                            me.setPanelDisabled();
+                        }
+                    }
+                });
+            }
+        }, {
+            xtype: 'grid',
+            region: 'center',
+            height: '70%',
+            id:'boardParamsGrid',
+            store: Ext.create('Ext.data.JsonStore',{
+                fields: ['code', 'name', 'type', 'optionalValues'],
+                data: []
+            }),
+            autoScroll: true,
+            forceFit: true,
+            columnLines: true,
+            columns: [
+                { text: 'ID', dataIndex: 'code', hidden: true },
+                { text: '参数名称', dataIndex: 'name', flex: 1, editor: 'textfield' },
+                { text: '数据类型', dataIndex: 'type', flex: 1, editor: dataTypeCombo, renderer: function (value, cellmeta, record) {
+                    var index = dataTypeStore.find(dataTypeCombo.valueField, value);
+                    var ehrRecord = dataTypeStore.getAt(index);
+                    var returnvalue = "";
+                    if (ehrRecord) {
+                        returnvalue = ehrRecord.get('name');
+                    }
+                    return returnvalue;
+                }
+                },
+                { text: '值', dataIndex: 'optionalValues', flex: 4 },
+                { xtype:'actioncolumn', align: 'center', width: 50, items:[{
+                    iconCls: 'save',
+                    tooltip: '保存',
+                    handler: function(th, rowIndex, colIndex) {
+                        var grid =this.up('grid');
+                        var rec = grid.getStore().getAt(rowIndex);
+                        var data = Object.assign({}, rec.data);
+                        if(data.type == 'String') {
+                            data.optionalValues = data.optionalValues instanceof Array ? data.optionalValues : data.optionalValues.split(',')
+                        }else if(data.type == 'SQL') {
+                            data.optionalValues = data.optionalValues instanceof Array ? data.optionalValues : [data.optionalValues]
+                        }
+                        grid.saveParam(data);
+                    }
+                }] }
+            ],
+            tbar: [{
+                xtype: 'button',
+                text: '添加参数',
+                disabled: true,
+                handler: function() {
+                    if(!me.initRecord.get('code')) {
+                        Ext.Msg.alert('提示', '请先保存面板再执行添加参数操作!');
+                        return;
+                    }
+                    var grid = this.up('grid');
+                    var record = {
+                        name: '新参数',
+                        type: 'String',
+                        inputMode: 'Radio',
+                        optionalValues: []
+                    };
+                    grid.addParam(record);
+                }
+            }, {
+                xtype: 'button',
+                text: '删除参数',
+                disabled: true,
+                handler: function() {
+                    var grid =this.up('grid');
+                    var record = grid.getSelectionModel().getSelection()[0];
+                    if(record) {
+                        Ext.Msg.confirm('确认', '确定要删除参数  ' + record.get('name') + '?', function(btn) {
+                            if(btn == 'yes') {
+                                grid.deleteParam(record, grid.getStore().indexOf(record));
+                            }
+                        });
+                    }
+                }
+            }],
+            plugins: [
+                Ext.create('Ext.grid.plugin.CellEditing', {
+                    clicksToEdit: 2
+                })
+            ],
+            listeners: {
+                celldblclick: function (gridview, colEl, colIndex, record, rowEl, rowIndex, e, eOpts) {
+                    var types = ['String', 'SQL'];
+                    var titles = ['下拉项', 'SQL定义'];
+                    var i = types.indexOf(record.get('type'));
+                    if(colIndex == 2 && i != -1) { // 值列
+                        Ext.create('erp.view.desktop.ParamValueEditor',{
+                            title: titles[i],
+                            paramRecord: record
+                        }).show();
+                    }
+                },
+            },
+            loadGridData: function() {
+                var grid = this;
+                grid.getEl().mask('loading...');
+                Ext.Ajax.request({
+                    url:'parameter/get/byPanel/' + me.initRecord.get('code'),
+                    method:'POST',
+                    callback:function(options,success,response){
+                        grid.getEl().unmask();
+                        if(response.responseText == '') return;
+                        var res = JSON.parse(response.responseText);
+                        if(success) {
+                            res = res instanceof Array ? res : [res];
+                            grid.getStore().loadData(res);
+                        }else {
+                            Ext.Msg.alert('失败', res.message);
+                        }
+                    }
+                });
+            },
+            addParam: function(record) {
+                var grid = this;
+                var rowIndex = grid.getStore().add(record);
+                grid.getPlugin().startEditByPosition({ row: grid.getStore().getCount() - 1, column: 0 });
+            },
+            saveParam: function(record) {
+                var grid = this;
+                var type;
+                if(record['code']) {
+                    type = 'updatePart';
+                }else {
+                    type = 'save';
+                }
+                record.inputMode = 'DropDownBox';
+                record.panelCode = me.initRecord.get('code');
+                grid.getEl().mask('保存中...');
+                Ext.Ajax.request({
+                    url:'parameter/' + type,
+                    method:'POST',
+                    params:{
+                        json:Ext.encode(record)
+                    },
+                    callback:function(options,success,response){
+                        grid.getEl().unmask();
+                        var res = JSON.parse(response.responseText);
+                        if(success) {
+                            if(grid) {
+                                grid.loadGridData();
+                                Ext.Msg.alert('成功', '已更新');
+                            }
+                        }else {
+                            Ext.Msg.alert('失败', res.message);
+                        }
+                    }
+                });
+            },
+            deleteParam: function(record) {
+                var grid = this;
+                if(record.get('code')) {
+                    grid.getEl().mask('删除中...');
+                    Ext.Ajax.request({
+                        url:'parameter/delete/' + record.get('code'),
+                        method:'POST',
+                        callback:function(options,success,response){
+                            grid.getEl().unmask();
+                            var res = JSON.parse(response.responseText);
+                            if(success) {
+                                grid.loadGridData();
+                            }else {
+                                Ext.Msg.alert('失败', res.message);
+                            }
+                        }
+                    });
+                }else {
+                    grid.getStore().remove(record);
+                }
+            }
+        }];
+        this.callParent(arguments);
+    },
+    load: function(record, item) {
+        var me = this;
+        me.initRecord = record;
+        var formpanel = me.down('form');
+        var form = formpanel.getForm();
+        me.reset();
+        // from添加数据
+        form.loadRecord(record);
+
+        // 参数grid添加数据
+        var paramGrid = Ext.getCmp('boardParamsGrid');
+        paramGrid.loadGridData();
+        // 看板grid添加数据
+        var boardGrid = Ext.getCmp('tplGrid');
+        boardGrid.loadGridData();
+
+        // 设置各个按钮状态
+        me.setPanelDisabled();
+    },
+    setPanelDisabled: function() {
+        var me = this;
+        var rightpanel = Ext.getCmp('manageright');
+        var isDisabled =Ext.getCmp('manage').selectedPanelRecord ? false : true;
+
+        me.setButtonDisabled(isDisabled);
+        rightpanel.setButtonDisabled(isDisabled);
+    },
+    reset: function() {
+        var me = this;
+        var formpanel = me.down('form');
+        var form = formpanel.getForm();
+        form.reset();
+        var paramgrid = Ext.getCmp('boardParamsGrid');
+        paramgrid.getStore().removeAll();
+        var boardgrid = Ext.getCmp('tplGrid');
+        boardgrid.getStore().removeAll();
+    },
+    showIcons: function(me) {
+        var iconbox = Ext.create('Ext.window.Window', {
+            title: '选择图标',
+            height: 200,
+            width: 400,
+            layout: 'fit',
+            modal:true,
+            items: [{
+                xtype: 'dataview',
+                overItemCls: 'icon-over',
+                selectedItemCls: 'icon-selected',
+                trackOver: true,
+                itemSelector: 'div.select-icon-item',
+                store: Ext.create('Ext.data.Store', {
+                    fields: ['name', 'iconCls', 'code'],
+                    data: [
+                        { iconCls: 'grid-shortcut'},
+                        { iconCls: 'accordion-shortcut'},
+                        { iconCls: 'cpu-shortcut'},
+                        { iconCls: 'notepad-shortcut'}
+                    ]
+                }),
+                tpl: new Ext.XTemplate([
+                    '<tpl for=".">',
+                    '<div icon="{iconCls}" class="select-icon-item {iconCls}">',
+                    '</div>',
+                    '</tpl>',
+                    '<div class="x-clear"></div>'
+                ]),
+                renderTo: Ext.getBody(),
+                listeners: {
+                    afterrender: function() {
+                        this.on('itemclick', function(th){
+                            var icon = th.getSelectedNodes()[0].getAttribute('icon')
+                            me.changeIcon(icon, th.up());
+                        }, me);
+                    }
+                }
+            }]
+        });
+        iconbox.show();
+    },
+    changeIcon: function(icon, iconbox) {
+        var form = this.items.items[0].getForm();
+        form.findField('iconCls').setValue(icon);
+        iconbox.close();
+    },
+    setButtonDisabled: function(isDisabled) {
+        var grid = this.down('grid');
+        var buttons = grid.dockedItems.items[1].items.items;
+        Ext.Array.each(buttons,function(btn){
+            if(btn.xtype=='button'&&btn.disabled!=isDisabled){
+                btn.setDisabled(isDisabled);
+            }
+        });
+    },
 });

+ 210 - 210
kanban-console/src/main/webapp/resources/app/view/desktop/BoardManageRightPanel.js

@@ -1,23 +1,23 @@
-Ext.QuickTips.init(); 
-Ext.define('erp.view.desktop.BoardManageRightPanel',{ 
-	extend: 'Ext.panel.Panel', 
-	alias:'widget.manageright',
-	id:'manageright',
-	border: 0,
-	layout:'fit',
-	autoScroll: true,
-	hideBorders: true, 
-	initComponent:function(){
-		var me = this;
+Ext.QuickTips.init();
+Ext.define('erp.view.desktop.BoardManageRightPanel',{
+    extend: 'Ext.panel.Panel',
+    alias:'widget.manageright',
+    id:'manageright',
+    border: 0,
+    layout:'fit',
+    autoScroll: true,
+    hideBorders: true,
+    initComponent:function(){
+        var me = this;
 
-		var enabledStore = Ext.create('Ext.data.Store', {
+        var enabledStore = Ext.create('Ext.data.Store', {
             fields: ['value', 'name'],
             data: [
                 { "value": true, "name": "是" },
-				{ "value": false, "name": "否" }
+                { "value": false, "name": "否" }
             ]
         });
-		var enabledCombo = new Ext.form.ComboBox({
+        var enabledCombo = new Ext.form.ComboBox({
             store: enabledStore,
             valueField: 'value',
             displayField: 'name',
@@ -25,205 +25,205 @@ Ext.define('erp.view.desktop.BoardManageRightPanel',{
             forceSelection: true,
             editable: false,
             triggerAction: 'all',
-			selectOnFocus: true
+            selectOnFocus: true
         });
-		me.items = [{
-			xtype: 'grid',
-			id:'tplGrid',
-			selectedIndex: 1,
-			store : Ext.create('Ext.data.Store', {
-				fields : ['code', 'content', 'enabled', 'description', 'name','title','panelCode'],
-				data: []
-			}),
-			columnLines:true,
-			columns: [
-				{ text: 'ID', dataIndex: 'code', hidden: true },
-				{ text: '看板名称', dataIndex: 'name', flex: 1, editor: 'textfield', renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
-					metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
-						return v;
-					}
-				},
-				{ text: '备注', dataIndex: 'description', flex: 1, editor: 'textfield', renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
-						metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
-						return v;
-					}
-				},
-				{
-					text: '是否生效', dataIndex: 'enabled', width: 100, editor: enabledCombo, renderer: function(value) {
-						return value ? '是' : '否'
-					}
-				},
-				{ xtype: 'actioncolumn', align: 'center', items: [{
-					iconCls: 'save',
-					tooltip: '保存',
-					handler: function(th, rowIndex, colIndex) {
-						var grid =this.up('grid');
-						var rec = grid.getStore().getAt(rowIndex);
-						var data = Object.assign({}, rec.data);
-						data.get = function(key) {
-							return this[key]
-						}
-						data.set = function(key, value) {
-							this[key] = value;
-						}
-						delete data.content;
-						delete data.title;
-						var record = {
-							code: data.code,
-							panelCode: data.panelCode,
-							description: data.description,
-							enabled: data.enabled,
-							name: data.name,
-							get: data.get,
-							set: data.set
-						}
-						grid.saveModel(record);
-					}
-				}, '-', {
-					iconCls: 'edit',
+        me.items = [{
+            xtype: 'grid',
+            id:'tplGrid',
+            selectedIndex: 1,
+            store : Ext.create('Ext.data.Store', {
+                fields : ['code', 'content', 'enabled', 'description', 'name','title','panelCode'],
+                data: []
+            }),
+            columnLines:true,
+            columns: [
+                { text: 'ID', dataIndex: 'code', hidden: true },
+                { text: '看板名称', dataIndex: 'name', flex: 1, editor: 'textfield', renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
+                    metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
+                    return v;
+                }
+                },
+                { text: '备注', dataIndex: 'description', flex: 1, editor: 'textfield', renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
+                    metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
+                    return v;
+                }
+                },
+                {
+                    text: '是否生效', dataIndex: 'enabled', width: 100, editor: enabledCombo, renderer: function(value) {
+                    return value ? '是' : '否'
+                }
+                },
+                { xtype: 'actioncolumn', align: 'center', items: [{
+                    iconCls: 'save',
+                    tooltip: '保存',
+                    handler: function(th, rowIndex, colIndex) {
+                        var grid =this.up('grid');
+                        var rec = grid.getStore().getAt(rowIndex);
+                        var data = Object.assign({}, rec.data);
+                        data.get = function(key) {
+                            return this[key]
+                        }
+                        data.set = function(key, value) {
+                            this[key] = value;
+                        }
+                        delete data.content;
+                        delete data.title;
+                        var record = {
+                            code: data.code,
+                            panelCode: data.panelCode,
+                            description: data.description,
+                            enabled: data.enabled,
+                            name: data.name,
+                            get: data.get,
+                            set: data.set
+                        }
+                        grid.saveModel(record);
+                    }
+                }, '-', {
+                    iconCls: 'edit',
                     tooltip: '看板配置',
                     handler: function(grid, rowIndex, colIndex, th, eOpts, record) {
-						var code = record.get('code');
-						var panelRecord = Ext.getCmp('managemain').initRecord;
-						window.open(basePath+'board?code=' + code + '&name=' + record.get('name') + '&panelCode=' + record.get('panelCode') + '&panelName=' + panelRecord.get('name'), code);
-					}
-				}] }
-			],
-			tbar: [{
-				xtype: 'button',
-				text: '添加看板',
-				disabled: true,
-				handler: function() {
-					if(!Ext.getCmp('managemain').initRecord.get('code')) {
-						Ext.Msg.alert('提示', '请先保存面板再执行添加看板操作!');
-						return;
-					}
-					var grid = this.up('grid');
-					var record = {
-						name: '新看板',
-						description: '',
-						content: '<content></content>',
-						panelCode: Ext.getCmp('managemain').initRecord.get('code'),
-						enabled: true
-					}
-					grid.addModel(record);
+                        var code = record.get('code');
+                        var panelRecord = Ext.getCmp('managemain').initRecord;
+                        window.open(basePath+'board?code=' + code + '&name=' + record.get('name') + '&panelCode=' + record.get('panelCode') + '&panelName=' + panelRecord.get('name'), code);
+                    }
+                }] }
+            ],
+            tbar: [{
+                xtype: 'button',
+                text: '添加看板',
+                disabled: true,
+                handler: function() {
+                    if(!Ext.getCmp('managemain').initRecord.get('code')) {
+                        Ext.Msg.alert('提示', '请先保存面板再执行添加看板操作!');
+                        return;
+                    }
+                    var grid = this.up('grid');
+                    var record = {
+                        name: '新看板',
+                        description: '',
+                        content: '<content></content>',
+                        panelCode: Ext.getCmp('managemain').initRecord.get('code'),
+                        enabled: true
+                    }
+                    grid.addModel(record);
+                }
+            }, {
+                xtype: 'button',
+                text: '删除看板',
+                disabled: true,
+                handler: function() {
+                    var grid = this.up('grid');
+                    var record = grid.getSelectionModel().getSelection()[0];
+                    if(record) {
+                        Ext.Msg.confirm('提示','是否确定删除看板 ' + record.get('name') + ' ?',function(btn){
+                            if(btn=='yes'){
+                                grid.deleteModel(record, grid.getStore().indexOf(record));
+                            }
+                        });
+                    }
                 }
-			}, {
-				xtype: 'button',
-				text: '删除看板',
-				disabled: true,
-				handler: function() {
-					var grid = this.up('grid');
-					var record = grid.getSelectionModel().getSelection()[0];
-					if(record) {
-						Ext.Msg.confirm('提示','是否确定删除看板 ' + record.get('name') + ' ?',function(btn){
-							if(btn=='yes'){
-								grid.deleteModel(record, grid.getStore().indexOf(record));
-							}
-						});
-					}
+            }],
+            plugins: [
+                Ext.create('Ext.grid.plugin.CellEditing', {
+                    clicksToEdit: 2
+                })
+            ],
+            loadGridData: function() {
+                var grid = this;
+                var panelRecord = Ext.getCmp('managemain').initRecord;
+                grid.getEl().mask('loading...');
+                Ext.Ajax.request({
+                    url:'kanban/get/byPanel/' + panelRecord.get('code'),
+                    method:'POST',
+                    callback:function(options,success,response){
+                        grid.getEl().unmask();
+                        if(response.responseText == '') return;
+                        var res = JSON.parse(response.responseText);
+                        if(success) {
+                            grid.selectedIndex = 1;
+                            res = res instanceof Array ? res : [res];
+                            grid.getStore().loadData(res);
+                            grid.getStore().sort('enabled', 'DESC');
+                        }else {
+                            Ext.Msg.alert('失败', res.message);
+                        }
+                    }
+                });
+            },
+            addModel: function(record) {
+                var grid = this;
+                grid.getStore().insert(grid.getStore().getCount(), record);
+                grid.getPlugin().startEditByPosition({ row: grid.getStore().getCount() - 1, column: 0 });
+            },
+            saveModel: function(record) {
+                var grid = this;
+                var type = record.get('code') ? 'updatePart' : 'savePart'
+                Ext.Ajax.request({
+                    url:'kanban/' + type,
+                    method:'POST',
+                    params:{
+                        json:Ext.encode(record)
+                    },
+                    callback:function(options,success,response){
+                        var res = JSON.parse(response.responseText);
+                        if(success) {
+                            if(grid) {
+                                grid.loadGridData();
+                                Ext.Msg.alert('成功', '已更新');
+                            }
+                        }else {
+                            Ext.Msg.alert('失败', res.message);
+                        }
+                    }
+                });
+            },
+            deleteModel: function (record) {
+                var grid = this;
+                if (record.get('code')) {
+                    Ext.Ajax.request({
+                        url: 'kanban/delete/' + record.get('code'),
+                        method: 'POST',
+                        callback: function (options, success, response) {
+                            var res = JSON.parse(response.responseText);
+                            if (success) {
+                                if (grid) {
+                                    grid.loadGridData();
+                                }
+                            } else {
+                                Ext.Msg.alert('失败', res.message);
+                            }
+                        }
+                    });
+                } else {
+                    grid.getStore().remove(record);
                 }
-			}],
-			plugins: [
-				Ext.create('Ext.grid.plugin.CellEditing', {
-					clicksToEdit: 2
-				})
-			],
-			loadGridData: function() {
-				var grid = this;
-				var panelRecord = Ext.getCmp('managemain').initRecord;
-				grid.getEl().mask('loading...');
-				Ext.Ajax.request({
-					url:'kanban/get/byPanel/' + panelRecord.get('code'),
-					method:'POST',
-					callback:function(options,success,response){
-						grid.getEl().unmask();
-						if(response.responseText == '') return;
-						var res = JSON.parse(response.responseText);
-						if(success) {
-							grid.selectedIndex = 1;
-							res = res instanceof Array ? res : [res];
-							grid.getStore().loadData(res);
-							grid.getStore().sort('enabled', 'DESC');
-						}else {
-							Ext.Msg.alert('失败', res.message);
-						}
-					}
-				});
-			},
-			addModel: function(record) {
-				var grid = this;
-				grid.getStore().insert(grid.getStore().getCount(), record);
-				grid.getPlugin().startEditByPosition({ row: grid.getStore().getCount() - 1, column: 0 });
-			},
-			saveModel: function(record) {
-				var grid = this;
-				var type = record.get('code') ? 'updatePart' : 'savePart'
-				Ext.Ajax.request({
-					url:'kanban/' + type,
-					method:'POST',
-					params:{
-						json:Ext.encode(record)
-					},
-					callback:function(options,success,response){
-						var res = JSON.parse(response.responseText);
-						if(success) {
-							if(grid) {
-								grid.loadGridData();
-								Ext.Msg.alert('成功', '已更新');
-							}
-						}else {
-							Ext.Msg.alert('失败', res.message);
-						}
-					}
-				});
-			},
-			deleteModel: function (record) {
-				var grid = this;
-				if (record.get('code')) {
-					Ext.Ajax.request({
-						url: 'kanban/delete/' + record.get('code'),
-						method: 'POST',
-						callback: function (options, success, response) {
-							var res = JSON.parse(response.responseText);
-							if (success) {
-								if (grid) {
-									grid.loadGridData();
-								}
-							} else {
-								Ext.Msg.alert('失败', res.message);
-							}
-						}
-					});
-				} else {
-					grid.getStore().remove(record);
-				}
-			}
-		}];
-		this.callParent(arguments);
-	},
-	setButtonDisabled: function(isDisabled) {
-		var grid = this.down('grid');
-		var buttons = grid.dockedItems.items[1].items.items;
-		Ext.Array.each(buttons,function(btn){
-			if(btn.xtype=='button'&&btn.disabled!=isDisabled){
-				btn.setDisabled(isDisabled);
-			}
-		});
-	},
-	selectModel:function(data){
-		var me = this;
-		grid.selectedIndex = 1;
-		var grid = Ext.getCmp('tplGrid');
-		var store = grid.getStore();
-		var records = new Array();
-		Ext.Array.each(store.data.items,function(rec,index){
-			Ext.Array.each(data,function(item){
-				if(rec.get('code')==item.code){
-					records.push(rec);
-				}
-			});
-		});
-		grid.getSelectionModel().select(records);
-	}
+            }
+        }];
+        this.callParent(arguments);
+    },
+    setButtonDisabled: function(isDisabled) {
+        var grid = this.down('grid');
+        var buttons = grid.dockedItems.items[1].items.items;
+        Ext.Array.each(buttons,function(btn){
+            if(btn.xtype=='button'&&btn.disabled!=isDisabled){
+                btn.setDisabled(isDisabled);
+            }
+        });
+    },
+    selectModel:function(data){
+        var me = this;
+        grid.selectedIndex = 1;
+        var grid = Ext.getCmp('tplGrid');
+        var store = grid.getStore();
+        var records = new Array();
+        Ext.Array.each(store.data.items,function(rec,index){
+            Ext.Array.each(data,function(item){
+                if(rec.get('code')==item.code){
+                    records.push(rec);
+                }
+            });
+        });
+        grid.getSelectionModel().select(records);
+    }
 });

+ 304 - 304
kanban-console/src/main/webapp/resources/app/view/desktop/BoardParamWindow.js

@@ -1,312 +1,312 @@
 Ext.define('erp.view.desktop.BoardParamWindow',{
-	extend:'Ext.window.Window',
-	alias:'widget.boardparamwin',
-	width:800,
-	height:450,
-	modal:true,
-	layout:'border',
-	id:'template',
-	resData:null,
-	initComponent:function(){
-		var me = this;
-		me.items = [{
-			xtype:'form',
-			id:'paramForm',
-			region: 'center',
-			layout:'column',
-			autoScroll: true,
-			defaults:{
-				columnWidth:1,
-				margin:'5 5 5 5'
-			},
-			items:[{
-				xtype:'fieldset',
-				title:'参数设置',
-			},{
-				xtype:'fieldset',
-				title:'运行设置',
-				layout:'column',
-				defaults:{
-					columnWidth:0.5,
-					labelWidth:120
-				},
-				items:[{
-					xtype:'numberfield',
-					id:'refreshFrequency',
-					name:'refreshFrequency',
-					fieldLabel:'刷新频率(秒/次)',
-					value:'5',
-					minValue:1,
-					allowBlank:false
-				},{
-					xtype:'numberfield',
-					id:'switchFrequency',
-					name:'switchFrequency',
-					fieldLabel:'切换频率(秒/次)',
-					minValue:3,
-					value:'30',
-					minValue:1
-				}]
-			}],
-			/**
-			 * 添加面板参数下拉组件
-			 */
-			addParamCombo: function() {
-				var form = this;
-				var items = me.resData.parameters;
-				var paramFieldSet = form.items.items[0];
-				paramFieldSet.removeAll();
-				var comboxs = [];
-				Ext.Array.each(items, function(item, index) {
-					var data = item.optionalValues ? item.optionalValues.map(function (v) {
-						return {
-							value: v,
-							name: v
-						}
-					}) : []
-					var combox = new Ext.form.field.ComboBox({
-						fieldLabel: item.name,
-						name: item.code,
-						store: Ext.create('Ext.data.Store', {
-							fields: ['value', 'name'],
-							data: data
-						}),
-						queryMode: 'local',
-						displayField: 'name',
-						valueField: 'value',
-						value: item.value || '',
-						allowBlank: false,
-					});  
-						comboxs.push(combox);
-				});
-				paramFieldSet.add(comboxs);
-				if(comboxs.length == 0) {
-					paramFieldSet.setVisible(false)
-				}
-				form.doLayout();
-			}
-		},{
-			xtype: 'grid',
-			id:'modelGrid',
-			selectedIndex: 1,
-			region: 'east',
-			width: 300,
-			store : Ext.create('Ext.data.Store', {
-				fields : ['code', 'content', 'enabled', 'description', 'name','title','panelCode'],
-				data: []
-			}),
-			selModel: Ext.create('Ext.selection.CheckboxModel'),
-		    columnLines:true,
-		    columns: [
-				{ text: 'ID', dataIndex: 'code', flex: 1, hidden: true },
-				{
-					text: '看板名称', dataIndex: 'name', flex: 1, editor: 'textfield', renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
-						metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
-						return v;
-					}
-				}
-			],
-			listeners: {
-				afterLayout: function(grid) {
-					grid.getSelectionModel().deselectAll();
-					grid.selectModel();
-				},
-			},
-			loadGridData: function() {
-				var grid = this;
-				res = me.resData.relatedKanbans || [];
-				grid.getStore().loadData(res);
-				grid.getStore().sort('enabled', 'DESC');
-			},
-			selectModel: function() {
-				var grid = this;
-				if(!me.resData) {
-					return;
-				}
-				var selectedModels = me.resData.relatedKanbans || [];
-				var modelStore = grid.getStore();
-				var records = [];
-				selectedModels.map(function(model) {
-					var record = modelStore.findRecord('code',model['code']);
-					if(record && model.enabled) {
-						records.push(record);
-					}
-				});
-				grid.getSelectionModel().select(records || []);
-			},
-			getSelectedModels: function() {
-				var grid = this;
-				var selectedModels = grid.getSelectionModel().getSelection();
-				return selectedModels || [];
-			},
-		}];
-		me.callParent(arguments);
-	},
-	buttonAlign: 'center',
-	buttons:[{
-		text:'确定',
-		formBind:true,
-		handler:function(){
-			var me = Ext.getCmp('template');
-			var formpanel = Ext.getCmp('paramForm');
-			if(formpanel.isValid()) {
-				me.savePanelInstance();
-				me.setFullScreen();
-			}else {
-				Ext.Msg.alert('警告', '有必填项未填!');
-			}
-		}
-	},{
-		text:'取消',
-		handler:function(btn){
-			btn.ownerCt.ownerCt.close()
-		}
-	}],
-	listeners: {
-		afterLayout: function(me) {
-			me.init();
-		}
-	},
-	load: function() {
-		var me = this;
-		// 添加参数下拉框
-		var paramForm = Ext.getCmp('paramForm');
-		paramForm.addParamCombo();
-		// 读取看板grid数据
-		var modelGrid = Ext.getCmp('modelGrid');
-		modelGrid.loadGridData();
-	},
-	init: function() {
-		var me = this;
-		var record = me.record;
-		var code = record.get('code');
-		var view = Ext.getCmp('desktopDataView');
+    extend:'Ext.window.Window',
+    alias:'widget.boardparamwin',
+    width:800,
+    height:450,
+    modal:true,
+    layout:'border',
+    id:'template',
+    resData:null,
+    initComponent:function(){
+        var me = this;
+        me.items = [{
+            xtype:'form',
+            id:'paramForm',
+            region: 'center',
+            layout:'column',
+            autoScroll: true,
+            defaults:{
+                columnWidth:1,
+                margin:'5 5 5 5'
+            },
+            items:[{
+                xtype:'fieldset',
+                title:'参数设置',
+            },{
+                xtype:'fieldset',
+                title:'运行设置',
+                layout:'column',
+                defaults:{
+                    columnWidth:0.5,
+                    labelWidth:120
+                },
+                items:[{
+                    xtype:'numberfield',
+                    id:'refreshFrequency',
+                    name:'refreshFrequency',
+                    fieldLabel:'刷新频率(秒/次)',
+                    value:'5',
+                    minValue:1,
+                    allowBlank:false
+                },{
+                    xtype:'numberfield',
+                    id:'switchFrequency',
+                    name:'switchFrequency',
+                    fieldLabel:'切换频率(秒/次)',
+                    minValue:3,
+                    value:'30',
+                    minValue:1
+                }]
+            }],
+            /**
+             * 添加面板参数下拉组件
+             */
+            addParamCombo: function() {
+                var form = this;
+                var items = me.resData.parameters;
+                var paramFieldSet = form.items.items[0];
+                paramFieldSet.removeAll();
+                var comboxs = [];
+                Ext.Array.each(items, function(item, index) {
+                    var data = item.optionalValues ? item.optionalValues.map(function (v) {
+                        return {
+                            value: v,
+                            name: v
+                        }
+                    }) : []
+                    var combox = new Ext.form.field.ComboBox({
+                        fieldLabel: item.name,
+                        name: item.code,
+                        store: Ext.create('Ext.data.Store', {
+                            fields: ['value', 'name'],
+                            data: data
+                        }),
+                        queryMode: 'local',
+                        displayField: 'name',
+                        valueField: 'value',
+                        value: item.value || '',
+                        allowBlank: false,
+                    });
+                    comboxs.push(combox);
+                });
+                paramFieldSet.add(comboxs);
+                if(comboxs.length == 0) {
+                    paramFieldSet.setVisible(false)
+                }
+                form.doLayout();
+            }
+        },{
+            xtype: 'grid',
+            id:'modelGrid',
+            selectedIndex: 1,
+            region: 'east',
+            width: 300,
+            store : Ext.create('Ext.data.Store', {
+                fields : ['code', 'content', 'enabled', 'description', 'name','title','panelCode'],
+                data: []
+            }),
+            selModel: Ext.create('Ext.selection.CheckboxModel'),
+            columnLines:true,
+            columns: [
+                { text: 'ID', dataIndex: 'code', flex: 1, hidden: true },
+                {
+                    text: '看板名称', dataIndex: 'name', flex: 1, editor: 'textfield', renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
+                    metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
+                    return v;
+                }
+                }
+            ],
+            listeners: {
+                afterLayout: function(grid) {
+                    grid.getSelectionModel().deselectAll();
+                    grid.selectModel();
+                },
+            },
+            loadGridData: function() {
+                var grid = this;
+                res = me.resData.relatedKanbans || [];
+                grid.getStore().loadData(res);
+                grid.getStore().sort('enabled', 'DESC');
+            },
+            selectModel: function() {
+                var grid = this;
+                if(!me.resData) {
+                    return;
+                }
+                var selectedModels = me.resData.relatedKanbans || [];
+                var modelStore = grid.getStore();
+                var records = [];
+                selectedModels.map(function(model) {
+                    var record = modelStore.findRecord('code',model['code']);
+                    if(record && model.enabled) {
+                        records.push(record);
+                    }
+                });
+                grid.getSelectionModel().select(records || []);
+            },
+            getSelectedModels: function() {
+                var grid = this;
+                var selectedModels = grid.getSelectionModel().getSelection();
+                return selectedModels || [];
+            },
+        }];
+        me.callParent(arguments);
+    },
+    buttonAlign: 'center',
+    buttons:[{
+        text:'确定',
+        formBind:true,
+        handler:function(){
+            var me = Ext.getCmp('template');
+            var formpanel = Ext.getCmp('paramForm');
+            if(formpanel.isValid()) {
+                me.savePanelInstance();
+                me.setFullScreen();
+            }else {
+                Ext.Msg.alert('警告', '有必填项未填!');
+            }
+        }
+    },{
+        text:'取消',
+        handler:function(btn){
+            btn.ownerCt.ownerCt.close()
+        }
+    }],
+    listeners: {
+        afterLayout: function(me) {
+            me.init();
+        }
+    },
+    load: function() {
+        var me = this;
+        // 添加参数下拉框
+        var paramForm = Ext.getCmp('paramForm');
+        paramForm.addParamCombo();
+        // 读取看板grid数据
+        var modelGrid = Ext.getCmp('modelGrid');
+        modelGrid.loadGridData();
+    },
+    init: function() {
+        var me = this;
+        var record = me.record;
+        var code = record.get('code');
+        var view = Ext.getCmp('desktopDataView');
 
-		view.getEl().mask('loading...');
-		if(me.record){
-			Ext.Ajax.request({
-				url:'panelInstance/get/byPanel/'+code,
-				method:'POST',
-				callback:function(options, success, response){
-					view.getEl().unmask();
-					if(response.responseText){
-						var res = Ext.decode(response.responseText);
-						if(success) {
-							var form = Ext.getCmp('paramForm');
-							var formData = {
-								data: {
-									refreshFrequency: res.refreshFrequency,
-									switchFrequency: res.switchFrequency,
-								},
-								getData: function() {
-									return this.data
-								}
-							}
-							form.loadRecord(formData);
-							res.parameters = Ext.decode(res.parameters) || [];
-							me.resData = res;
-							me.load();
-						}else {
-							parent.Ext.Msg.alert('失败', res.message);
-						}
-					}
-				}
-			});			
-		}
-	},
+        view.getEl().mask('loading...');
+        if(me.record){
+            Ext.Ajax.request({
+                url:'panelInstance/get/byPanel/'+code,
+                method:'POST',
+                callback:function(options, success, response){
+                    view.getEl().unmask();
+                    if(response.responseText){
+                        var res = Ext.decode(response.responseText);
+                        if(success) {
+                            var form = Ext.getCmp('paramForm');
+                            var formData = {
+                                data: {
+                                    refreshFrequency: res.refreshFrequency,
+                                    switchFrequency: res.switchFrequency,
+                                },
+                                getData: function() {
+                                    return this.data
+                                }
+                            }
+                            form.loadRecord(formData);
+                            res.parameters = Ext.decode(res.parameters) || [];
+                            me.resData = res;
+                            me.load();
+                        }else {
+                            parent.Ext.Msg.alert('失败', res.message);
+                        }
+                    }
+                }
+            });
+        }
+    },
 
-	/**
-	 * 生成面板实例后打开展示界面
-	 */
-	savePanelInstance: function() {
-		var me = this;
-		var modelGrid = Ext.getCmp('modelGrid');
-		if(modelGrid.getSelectedModels().length == 0) {
-			Ext.Msg.alert('警告','请至少选中一个看板!');
-			return;
-		}
-		if(!me.checkFrequency()) {
-			return;
-		}
-		var params = me.getBoardConfig();
-		Ext.Ajax.request({
-			url:'panelInstance/updatePart/',
-			method:'POST',
-			params:{
-				json:Ext.encode(params)
-			},
-			callback:function(options,success,response){
-				var res = JSON.parse(response.responseText);
-				if(success) {
-					me.viewBoard();
-				}else {
-					Ext.Msg.alert('失败', res.message);
-				}
-			}
-		});
-	},
-	getBoardConfig: function() {
-		var me = this;
-		var modelGrid = Ext.getCmp('modelGrid');
-		var selectedModelCodes = modelGrid.getSelectedModels().map(function(model) {
-			return model.get('code');
-		});
-		var relatedKanbans = me.resData.relatedKanbans.map(function(kanban) {
-			kanban.enabled = selectedModelCodes.indexOf(kanban.code) != -1;
-			return kanban;
-		});
-		var paramForm = Ext.getCmp('paramForm');
-		var config = paramForm.getForm().getValues();
+    /**
+     * 生成面板实例后打开展示界面
+     */
+    savePanelInstance: function() {
+        var me = this;
+        var modelGrid = Ext.getCmp('modelGrid');
+        if(modelGrid.getSelectedModels().length == 0) {
+            Ext.Msg.alert('警告','请至少选中一个看板!');
+            return;
+        }
+        if(!me.checkFrequency()) {
+            return;
+        }
+        var params = me.getBoardConfig();
+        Ext.Ajax.request({
+            url:'panelInstance/updatePart/',
+            method:'POST',
+            params:{
+                json:Ext.encode(params)
+            },
+            callback:function(options,success,response){
+                var res = JSON.parse(response.responseText);
+                if(success) {
+                    me.viewBoard();
+                }else {
+                    Ext.Msg.alert('失败', res.message);
+                }
+            }
+        });
+    },
+    getBoardConfig: function() {
+        var me = this;
+        var modelGrid = Ext.getCmp('modelGrid');
+        var selectedModelCodes = modelGrid.getSelectedModels().map(function(model) {
+            return model.get('code');
+        });
+        var relatedKanbans = me.resData.relatedKanbans.map(function(kanban) {
+            kanban.enabled = selectedModelCodes.indexOf(kanban.code) != -1;
+            return kanban;
+        });
+        var paramForm = Ext.getCmp('paramForm');
+        var config = paramForm.getForm().getValues();
 
-		var parameters = me.resData.parameters.map(function(p) {
-			p.value = config[p.code];
-			return p
-		})
-		return {
-			code: me.resData.code,
-			parameters: Ext.encode(parameters),
-			refreshFrequency: config.refreshFrequency,
-			switchFrequency: config.switchFrequency,
-			relatedKanbans: relatedKanbans
-		}
-	},
+        var parameters = me.resData.parameters.map(function(p) {
+            p.value = config[p.code];
+            return p
+        })
+        return {
+            code: me.resData.code,
+            parameters: Ext.encode(parameters),
+            refreshFrequency: config.refreshFrequency,
+            switchFrequency: config.switchFrequency,
+            relatedKanbans: relatedKanbans
+        }
+    },
     checkFrequency:function(){
-		var me = this;
-    	var refreshFreq = Ext.getCmp('refreshFrequency').value;
-    	var switchFreq = Ext.getCmp('switchFrequency').value;
-    	if(switchFreq){
-			if(refreshFreq>=switchFreq){
-				Ext.Msg.alert('警告','刷新频率必须小于切换频率!');
-    			return false;
-    		}
-		}else {
-			var modelGrid = Ext.getCmp('modelGrid');
-			// 看板数量为2个以上时切换频率不可为空
-			if(modelGrid.getSelectedModels().length >= 2) {
-				Ext.Msg.alert('警告','切换频率不可为空');
-    			return false;
-			}
-		}
-    	return true;
+        var me = this;
+        var refreshFreq = Ext.getCmp('refreshFrequency').value;
+        var switchFreq = Ext.getCmp('switchFrequency').value;
+        if(switchFreq){
+            if(refreshFreq>=switchFreq){
+                Ext.Msg.alert('警告','刷新频率必须小于切换频率!');
+                return false;
+            }
+        }else {
+            var modelGrid = Ext.getCmp('modelGrid');
+            // 看板数量为2个以上时切换频率不可为空
+            if(modelGrid.getSelectedModels().length >= 2) {
+                Ext.Msg.alert('警告','切换频率不可为空');
+                return false;
+            }
+        }
+        return true;
     },
     viewBoard:function(){
-		var me = this;
-    	Ext.getCmp('template').close();
-    	Ext.create('erp.view.desktop.BoardWindow',{
-    		instanceCode:me.resData.code,
-    		html:'<iframe src="boardshow?code=' + me.resData.code + '" width="100%" height="100%" style="border:none"></iframe>'
-		}).show();
-	},
-	setFullScreen: function () {
-		var element = document.documentElement;
-		if (element.requestFullscreen) {
-			element.requestFullscreen();
-		} else if (element.mozRequestFullScreen) {
-			element.mozRequestFullScreen();
-		} else if (element.webkitRequestFullscreen) {
-			element.webkitRequestFullscreen();
-		} else if (element.msRequestFullscreen) {
-			element.msRequestFullscreen();
-		}
-	}
+        var me = this;
+        Ext.getCmp('template').close();
+        Ext.create('erp.view.desktop.BoardWindow',{
+            instanceCode:me.resData.code,
+            html:'<iframe src="boardshow?code=' + me.resData.code + '" width="100%" height="100%" style="border:none"></iframe>'
+        }).show();
+    },
+    setFullScreen: function () {
+        var element = document.documentElement;
+        if (element.requestFullscreen) {
+            element.requestFullscreen();
+        } else if (element.mozRequestFullScreen) {
+            element.mozRequestFullScreen();
+        } else if (element.webkitRequestFullscreen) {
+            element.webkitRequestFullscreen();
+        } else if (element.msRequestFullscreen) {
+            element.msRequestFullscreen();
+        }
+    }
 }); 

+ 2 - 2
kanban-console/src/main/webapp/resources/app/view/desktop/StartMenu.js

@@ -1,6 +1,6 @@
 Ext.define('erp.view.desktop.StartMenu', {
     extend: 'Ext.panel.Panel',
-	alias : 'widget.startmenu',
+    alias : 'widget.startmenu',
     requires: [
         'Ext.menu.Menu',
         'Ext.toolbar.Toolbar'
@@ -50,7 +50,7 @@ Ext.define('erp.view.desktop.StartMenu', {
             floating: false,
             plain:true,
             defaults:{
-            	iconCls:'video'
+                iconCls:'video'
             },
             items: [{
                 text:'修改密码',

+ 38 - 38
kanban-console/src/main/webapp/resources/css/desktop.css

@@ -188,19 +188,19 @@ div.ux-taskbar div.x-toolbar {
     text-decoration: underline;
 }
 
- .desktop-li{
- 	float:inherit;
- 	width:65px;
- 	height:90px;
- 	overflow: hidden;
- 	position:relative;
- 	margin:0 10px 0 10px;
-} 
+.desktop-li{
+    float:inherit;
+    width:65px;
+    height:90px;
+    overflow: hidden;
+    position:relative;
+    margin:0 10px 0 10px;
+}
 
 .board-item{
-	float:left;
-	display:inline-block;
-	overflow: hidden;
+    float:left;
+    display:inline-block;
+    overflow: hidden;
 }
 
 /*----------------------------------------------------
@@ -361,32 +361,32 @@ div.ux-taskbar div.x-toolbar {
 }
 
 .board-item-icon {
-	width: 48px;
+    width: 48px;
     height: 48px;
     background-color: transparent;
     background-repeat: no-repeat;
 }
 
 .board-item-text {
-	font: normal 10px tahoma,arial,verdana,sans-serif;
+    font: normal 10px tahoma,arial,verdana,sans-serif;
     text-decoration: none;
     padding-top: 5px;
 }
 
 .icon-selecter {
-	background-repeat: no-repeat !important;
+    background-repeat: no-repeat !important;
     background-position-y: 2px !important;
-	background-image:url(../images/star-line.png) !important;
-	background-position-x: 0 !important; 
+    background-image:url(../images/star-line.png) !important;
+    background-position-x: 0 !important;
 }
 .icon-selecter-over {
-	background-position: 0 !important;
-	background-repeat: no-repeat !important;
+    background-position: 0 !important;
+    background-repeat: no-repeat !important;
     background-position-y: 2px !important;
-	background-image:url(../images/star-full.png) !important;
+    background-image:url(../images/star-full.png) !important;
 }
 .select-icon-item {
-	width: 48px;
+    width: 48px;
     height: 48px;
     background-color: transparent;
     background-repeat: no-repeat;
@@ -394,27 +394,27 @@ div.ux-taskbar div.x-toolbar {
     margin: 5px;
 }
 .icon-over {
-	background-color: #bce2f6;
-	box-shadow: 0 0 30px #78c4ed inset;
-	border-radius: 4px;
-	opacity: .8;
+    background-color: #bce2f6;
+    box-shadow: 0 0 30px #78c4ed inset;
+    border-radius: 4px;
+    opacity: .8;
 }
 .icon-selected {
-	background-color: #78c4ed;
-	box-shadow: 0 0 50px #78c4ed inset;
+    background-color: #78c4ed;
+    box-shadow: 0 0 50px #78c4ed inset;
     border-radius: 4px;
 }
 
 #tplGrid .x-header-text{
-	color:black
+    color:black
 }
 
 #tplGrid .x-panel-header-default{
-	background-color:white;
+    background-color:white;
 }
 
 #tplGrid .x-panel-header-default{
-	border-color:#c1bfc1
+    border-color:#c1bfc1
 }
 
 /*----------------------------------------------------
@@ -430,13 +430,13 @@ div.ux-taskbar div.x-toolbar {
 }
 
 /*----------------------------------------------------
-    UserSetting 
+    UserSetting
 */
 .selecter {
     background-repeat: no-repeat !important;
     background-position-y: 2px !important;
-	background-image:url(../images/selecter.png) !important;
-	background-position-x: 0 !important; 
+    background-image:url(../images/selecter.png) !important;
+    background-position-x: 0 !important;
 }
 
 /*----------------------------------------------------
@@ -449,24 +449,24 @@ div.ux-taskbar div.x-toolbar {
 .x-tool {
     height: 20px !important;
 }
-.x-box-target .x-tool:nth-last-of-type(3) { 
+.x-box-target .x-tool:nth-last-of-type(3) {
     margin-left: -50px !important;
 }
-.x-box-target .x-tool:nth-last-of-type(2) { 
+.x-box-target .x-tool:nth-last-of-type(2) {
     margin-left: -50px !important;
 }
-.x-box-target .x-tool:nth-last-of-type(1) { 
+.x-box-target .x-tool:nth-last-of-type(1) {
     margin-left: -16px !important;
 }
 .x-tool-img {
     height: 20px !important;
     width: 20px !important;
-    background-repeat: no-repeat !important; 
+    background-repeat: no-repeat !important;
     background-position-y: 0px !important;
-	background-position-x: 0 !important;
+    background-position-x: 0 !important;
 }
 .x-tool-maximize {
-	background-image:url(../images/icons/window-fullscreen.png) !important;
+    background-image:url(../images/icons/window-fullscreen.png) !important;
 }
 .x-tool-restore {
     background-image:url(../images/icons/window-restore.png) !important;