Pārlūkot izejas kodu

配置中心界面逻辑调整/面板启动界面调整/看板设置界面逻辑调整等

zhuth 8 gadi atpakaļ
vecāks
revīzija
e74614ea85

+ 12 - 4
kanban-console/src/main/webapp/resources/app/controller/board.js

@@ -15,6 +15,17 @@ Ext.define('erp.controller.board', {
 		
     	this.control({
     		'templatebuilderpanel':{
+				afterrender: function(view) {
+					var flag1 = 'board?code=';
+					var flag2 = '&panelCode=';
+					var start = window.location.href.indexOf(flag1) + flag1.length;
+					var codes = decodeURI(window.location.href.substring(start)).split(flag2);
+					view.modelCode = codes[0];
+					view.panelCode = codes[1];
+
+					var grid = Ext.getCmp('templatetree');
+					grid.loadGridData();
+				},
 				afterlayout: function(view) {
 					// 如果不是第一次进入界面则直接退出
 					if(window.f == 1) {
@@ -22,12 +33,9 @@ Ext.define('erp.controller.board', {
 					}
 					window.f = 1;
 
-					var flag = 'board?code=';
-					var start = window.location.href.indexOf(flag) + flag.length;
-					var code = decodeURI(window.location.href.substring(start));
 					view.getEl().mask('loading...');
 					Ext.Ajax.request({
-						url:'template/get/' + code,
+						url:'kanban/get/' + view.modelCode,
 						method:'POST',
 						callback:function(options,success,response){
 							view.getEl().unmask();

+ 3 - 3
kanban-console/src/main/webapp/resources/app/store/boardmodel.js

@@ -1,13 +1,13 @@
 /** 
- * 已配置的
+ * 已配置的
  */
 Ext.define('erp.store.boardmodel', {
 	extend: 'Ext.data.Store',
-    fields:['name','code','dataSourceCode','parameters','description', 'globalParameterCodes'],
+    fields:['name','code','content','panelCode','description'],
     pageSize: 10,
     proxy:{
     	type:'ajax',
-    	url:'template/get',
+    	url:'kanban/get',
     	reader: {
 			type: 'json',
 			totalProperty: 'totalElement',

+ 2 - 2
kanban-console/src/main/webapp/resources/app/store/boardparam.js

@@ -1,9 +1,9 @@
 Ext.define('erp.store.boardparam', {
     extend: 'Ext.data.Store',
-    fields: ['code', 'inputMode', 'name', 'optionalValues', 'defaultOptionalValueIndex', 'type'],
+    fields: ['code', 'inputMode', 'name', 'optionalValues', 'defaultOptionalValueIndex', 'type', 'panelCode'],
     proxy: {
         type: 'ajax',
-        url: 'globalParameters/get',
+        url: 'parameter/get',
         reader: {
             type: 'json',
             root: 'content'

+ 2 - 2
kanban-console/src/main/webapp/resources/app/store/desktopboard.js

@@ -1,9 +1,9 @@
 Ext.define('erp.store.desktopboard', {
 	extend: 'Ext.data.Store',
-    fields:['name', 'code', 'display', 'switchFrequency', 'iconCls','type','templateCodes', 'resourcePointCode'],
+    fields:['name', 'code', 'display', 'switchFrequency', 'iconCls','type','templateCodes', 'dataSourceCode'],
     proxy:{
     	type:'ajax',
-    	url:'kanban/get/',
+    	url:'panel/get/all/',
     	reader: {
 			type: 'json',
 			root: 'content'

+ 66 - 30
kanban-console/src/main/webapp/resources/app/view/desktop/BoardManageLeftPanel.js

@@ -24,14 +24,7 @@ Ext.define('erp.view.desktop.BoardManageLeftPanel',{
 			xtype: 'button',
 			text: '新增面板',
 			handler: function(btn) {
-				var store = me.shortcutsView.getStore();
-				me.shortcutsView.getStore().loadData([{ 
-					name: '新面板', 
-					iconCls: 'grid-shortcut', 
-					code: ''
-				}],true);
-				var count = store.getCount();
-				me.shortcutsView.getSelectionModel().select(count-1);
+				me.addBoard();
 			}
 		},{
 			xtype: 'button',
@@ -68,7 +61,6 @@ Ext.define('erp.view.desktop.BoardManageLeftPanel',{
 						select: function (view, record, eOpts) {
 							var mainpanel = Ext.getCmp('managemain');
 							mainpanel.load(record, me);
-							me.setPanelDisabled(false);
 
 							var managepanel = Ext.getCmp('manage');
 							managepanel.setSelectPanelRecord(record);
@@ -76,7 +68,6 @@ Ext.define('erp.view.desktop.BoardManageLeftPanel',{
 						deselect: function() {
 							var mainpanel = Ext.getCmp('managemain');
 							mainpanel.reset();
-							me.setPanelDisabled(true);
 
 							var managepanel = Ext.getCmp('manage');
 							managepanel.setSelectPanelRecord(null);
@@ -87,11 +78,48 @@ Ext.define('erp.view.desktop.BoardManageLeftPanel',{
 			});
 		}
 	},
-	setPanelDisabled: function(isDisabled) {
-		var mainpanel = Ext.getCmp('managemain');
-		var rightpanel = Ext.getCmp('manageright');
-		mainpanel.setButtonDisabled(isDisabled);
-		rightpanel.setButtonDisabled(isDisabled);
+	addBoard: function() {
+		var me = this;
+		var store = me.shortcutsView.getStore();
+		me.shortcutsView.getStore().loadData([{ 
+			name: '新面板', 
+			iconCls: 'grid-shortcut', 
+			display: 'AutoSwitch',
+			dataSourceCode: '56743A5D711',
+			code: ''
+		}],true);
+		var count = store.getCount();
+		me.shortcutsView.getSelectionModel().select(count-1);
+		// var panelRecord = { 
+		// 	name: '新面板', 
+		// 	iconCls: 'grid-shortcut', 
+		// 	display: 'AutoSwitch',
+		// 	dataSourceCode: '56743A5D711',
+		// 	code: ''
+		// };
+		// Ext.Ajax.request({
+		// 	url:'panel/save',
+		// 	method:'POST',
+		// 	params:{
+		// 		json:Ext.encode(panelRecord)
+		// 	},
+		// 	callback:function(options,success,response){
+		// 		var res = Ext.decode(response.responseText);
+		// 		if(typeof(res.success)!=='undefined'&&res.success==false){
+		// 			Ext.Msg.alert('新增失败',res.message);
+		// 		}else{
+		// 			panelRecord.code = res.code;
+		// 			var store = me.shortcutsView.getStore();
+		// 			me.shortcutsView.getStore().loadData([panelRecord],true);
+		// 			var count = store.getCount();
+		// 			me.shortcutsView.getSelectionModel().select(count-1);
+
+		// 			Ext.getCmp('code').setValue(res.code);
+		// 			var desktop = Ext.getCmp('desktop');
+		// 			desktop.shortcutsView.store.reload();
+		// 		}
+		// 	}
+		// });
 	},
     deleteBoard:function(){
     	var me = this;
@@ -102,21 +130,28 @@ Ext.define('erp.view.desktop.BoardManageLeftPanel',{
     	if(record){
     		Ext.Msg.confirm('提示','是否确定删除该面板?',function(btn){
     			if(btn=='yes'){
-    				Ext.Ajax.request({
-    					url:'kanban/delete/' + record.get('code'),
-    					method:'POST',
-    					callback:function(options,success,response){
-    						var res = Ext.decode(response.responseText);
-    						if(typeof(res.success)!=='undefined'&&res.success==false){
-    							Ext.Msg.alert('删除失败',res.message);
-    						}else{
-								me.refreshData(me.shortcutsView,store,record);
-
-								me.setPanelDisabled(true);
-								Ext.getCmp('manage').setSelectPanelRecord(null);
-    						}
-    					}
-    				});
+					if(record.get('code')) {
+						Ext.Ajax.request({
+							url:'panel/delete/' + record.get('code'),
+							method:'POST',
+							callback:function(options,success,response){
+								var res = Ext.decode(response.responseText);
+								if(typeof(res.success)!=='undefined'&&res.success==false){
+									Ext.Msg.alert('删除失败',res.message);
+								}else{
+									me.refreshData(me.shortcutsView,store,record);
+	
+									Ext.getCmp('manage').setSelectPanelRecord(null);
+	
+									var desktop = Ext.getCmp('desktop');
+									desktop.shortcutsView.store.reload();
+								}
+							}
+						});
+					}else {
+						me.refreshData(me.shortcutsView,store,record);
+						Ext.getCmp('manage').setSelectPanelRecord(null);
+					}
     			}
     		});
     	}else{
@@ -144,5 +179,6 @@ Ext.define('erp.view.desktop.BoardManageLeftPanel',{
 		selRec.set("display",record.getData().display);
 		selRec.set("switchFrequency",record.getData().switchFrequency);
 		selRec.set("templateCodes",record.getData().templateCodes);
+		selRec.set("dataSourceCode",record.getData().dataSourceCode);
 	},
 });

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

@@ -8,10 +8,10 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
 	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: [
@@ -77,6 +77,29 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
 				name: 'templateCodes',
 				id:'templateCodes',
 				// hidden:true
+			}, {
+				xtype:'combo',
+				columnWidth:0.75,
+				fieldLabel:'数据源',
+				name:'dataSourceCode',
+				id:'dataSourceCode',
+				//value:'UAS',
+				editable: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'
 			}]
 		}, {
 			xtype: 'grid',
@@ -117,23 +140,10 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
 						}
 						grid.saveParam(data);
 					}
-				}, '-', {
-					iconCls: 'delete',
-					tooltip: '删除',
-					handler: function(th, rowIndex, colIndex) {
-						var grid =this.up('grid');
-						Ext.Msg.confirm('确认', '确定要删除该参数?', function(btn) {
-							if(btn == 'yes') {
-								var rec = grid.getStore().getAt(rowIndex);
-								grid.deleteParam(rec);
-							}
-						});
-					}
 				}] }
 			],
 			tbar: [{
 				xtype: 'button',
-				// iconCls: 'add',
 				text: '添加参数',
 				disabled: true,
 				handler: function() {
@@ -146,12 +156,54 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
 					};
 					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('确认', '确定要删除该参数?', function(btn) {
+							if(btn == 'yes') {
+								grid.deleteParam(record, grid.getStore().indexOf(record));
+							}
+						});
+					}
+				}
+			}, '->', {
+				xtype: 'button',
+				text: '刷新参数',
+				disabled: true,
+				handler: function() {
+					var grid =this.up('grid');
+					grid.loadGridData();
+				}
 			}],
 			plugins: [
 				Ext.create('Ext.grid.plugin.CellEditing', {
 					clicksToEdit: 2
 				})
 			],
+			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);
@@ -166,17 +218,21 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
 					type = 'save';
 				}
 				record.inputMode = 'DropDownBox';
+				record.panelCode = me.initRecord.get('code');
+				grid.getEl().mask('保存中...');
 				Ext.Ajax.request({
-					url:'globalParameters/' + type,
+					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.getStore().reload();
+								grid.loadGridData();
+								Ext.Msg.alert('成功', '已更新');
 							}
 						}else {
 							Ext.Msg.alert('失败', res.message);
@@ -187,15 +243,15 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
 			deleteParam: function(record) {
 				var grid = this;
 				if(record.get('code')) {
+					grid.getEl().mask('删除中...');
 					Ext.Ajax.request({
-						url:'globalParameters/delete/' + record.get('code'),
+						url:'parameter/delete/' + record.get('code'),
 						method:'POST',
 						callback:function(options,success,response){
+							grid.getEl().unmask();
 							var res = JSON.parse(response.responseText);
 							if(success) {
-								if(grid) {
-									grid.getStore().reload();
-								}
+								grid.loadGridData();
 							}else {
 								Ext.Msg.alert('失败', res.message);
 							}
@@ -210,19 +266,40 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
 	},
 	load: function(record, item) {
 		var me = this;
+		me.initRecord = record;
+		me.currentItem = item;
 		var formpanel = me.down('form');
 		var form = formpanel.getForm();
 		me.reset();
 		// from添加数据
 		form.loadRecord(record);
-		// 参数grid添加数据
-		var paramgrid = Ext.getCmp('boardParamsGrid');
 
+
+		var codes = record.data.templateCodes || [];
+		var data = codes.map(function(v, i) {
+			var r = modelstore.findRecord('code', v);
+			var name = r ? r.get('name') : '';
+			return {
+				name: name,
+				code: v
+			};
+		});
+		// 参数grid添加数据
+		var paramGrid = Ext.getCmp('boardParamsGrid');
+		paramGrid.loadGridData();
 		// 看板grid添加数据
-		var boardgrid = Ext.getCmp('tplGrid');
-		
-		this.initRecord = record;
-		this.currentItem = item;
+		var boardGrid = Ext.getCmp('tplGrid');
+		boardGrid.loadGridData();
+
+		// 设置各个按钮状态
+		me.setPanelDisabled();
+	},
+	setPanelDisabled: function() {
+		var me = this;
+		var isDisabled = me.initRecord.get('code') ? false : true;
+		var rightpanel = Ext.getCmp('manageright');
+		me.setButtonDisabled(isDisabled);
+		rightpanel.setButtonDisabled(isDisabled);
 	},
 	reset: function() {
 		var me = this;

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

@@ -7,44 +7,53 @@ Ext.define('erp.view.desktop.BoardManageRightPanel',{
 	layout:'fit',
 	autoScroll: true,
 	hideBorders: true, 
-	selectedIndex: 1,
 	initComponent:function(){
 		var me = this;
+		var sm = Ext.create('Ext.selection.CheckboxModel');
+		sm.handleMouseDown = Ext.emptyFn;
 		me.items = [{
 			xtype: 'grid',
 			id:'tplGrid',
-			// store: Ext.data.StoreManager.lookup('boardmodel'),
-			selModel: Ext.create('Ext.selection.CheckboxModel'),
-			
+			selectedIndex: 1,
+			selModel: sm,
 			store : Ext.create('Ext.data.Store', {
-				fields : ['code', 'content', 'dataSourceCode', 'globalParameterCodes','name','parameters','title','description'],
-				autoLoad:true,
-				proxy:{
-					type:'ajax',
-					url:'template/get',
-					reader:{
-						type: 'json',
-						root:'content'
-					}
-				}
+				fields : ['code', 'content', 'enabled', 'description', 'name','title','panelCode'],
+				data: []
 			}),
 		    columnLines:true,
 			columns: [
 				{ text: 'ID', dataIndex: 'code', hidden: true },
-				{ text: '看板名称', dataIndex: 'name', width: 150, flex: 1, editor: 'textfield' },
+				{ 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 + '"';
+						metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
 						return v;
 					}
 				},
-				{ xtype: 'actioncolumn', align: 'center', width: 50, items: [{
+				{ 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;
+						}
+						grid.saveModel(data);
+					}
+				}, '-', {
 					iconCls: 'edit',
                     tooltip: '看板配置',
                     handler: function(grid, rowIndex, colIndex, th, eOpts, record) {
-						var data = JSON.stringify(record.data);
-						data = data.replace('%', '$_^')
 						var code = record.get('code');
-						window.open(basePath+'board?code=' + code,'board');
+						window.open(basePath+'board?code=' + code + '&' + 'panelCode=' + record.get('panelCode'), code);
 					}
 				}] }
 			],
@@ -56,9 +65,12 @@ Ext.define('erp.view.desktop.BoardManageRightPanel',{
 					var grid = this.up('grid');
 					var record = {
 						name: '新看板',
-						description: ''
+						description: '',
+						content: '<content></content>',
+						panelCode: Ext.getCmp('managemain').initRecord.get('code'),
+						enabled: true
 					}
-					grid.addBoard(record);
+					grid.addModel(record);
                 }
 			}, {
 				xtype: 'button',
@@ -68,8 +80,20 @@ Ext.define('erp.view.desktop.BoardManageRightPanel',{
 					var grid = this.up('grid');
 					var record = grid.getSelectionModel().getSelection()[0];
 					if(record) {
-						grid.deleteBoard(record);
+						Ext.Msg.confirm('提示','是否确定删除该看板?',function(btn){
+							if(btn=='yes'){
+								grid.deleteModel(record, grid.getStore().indexOf(record));
+							}
+						});
 					}
+                }
+			}, '->', {
+				xtype: 'button',
+				text: '刷新看板',
+				disabled: true,
+				handler: function() {
+					var grid = this.up('grid');
+					grid.loadGridData();
                 }
 			}],
 			plugins: [
@@ -78,22 +102,31 @@ Ext.define('erp.view.desktop.BoardManageRightPanel',{
 				})
 			],
 			listeners: {
-				select:function( e, record, index, eOpts ){
+				// beforeselect: function(e, record, index, eOpts) {
+				// 	if(e.selectionMode == 'MULTI') {
+				// 		return false
+				// 	}
+				// },
+				select: function( e, record, index, eOpts ){
 					var grid = Ext.getCmp('tplGrid');
 					grid.updateTemplateCodes();
-
 					var ctr = this.body.dom.getElementsByTagName('tr')[index];
 					var s = ctr.getElementsByTagName('td')[0].children[0].children[0];
-					var order = me.selectedIndex++;
+					var order = grid.selectedIndex++;
 					grid.setSelectedIndex(s, order, 'add');
 				},
+				// beforedeselect: function (e, record, index, eOpts) {
+				// 	if (e.selectionMode == 'MULTI') {
+				// 		return false
+				// 	}
+				// },
 				deselect:function( e, record, index, eOpts ){
 					var grid = Ext.getCmp('tplGrid');
 					grid.updateTemplateCodes();
 
 					var ctr = this.body.dom.getElementsByTagName('tr')[index];
 					var s = ctr.getElementsByTagName('td')[0].children[0].children[0];
-					me.selectedIndex--;
+					grid.selectedIndex--;
 					var order = '';
 					var currentOrder = grid.setSelectedIndex(s, order, 'remove');
 
@@ -122,41 +155,98 @@ Ext.define('erp.view.desktop.BoardManageRightPanel',{
 			resetSelectedIndex: function(currentOrder) {
 				var selectedRecords = this.getSelectionModel().getSelection();
 				for(var i = 0; i < selectedRecords.length; i++) {
-					var tr = this.body.dom.getElementsByTagName('tr')[selectedRecords[i].index]; // 选中行tr
+					var tr = this.body.dom.getElementsByTagName('tr')[this.getStore().indexOf(selectedRecords[i])]; // 选中行tr
 					var sbox = tr.getElementsByTagName('td')[0].children[0].children[0]; // 选中行勾选框
 					if(Number(sbox.innerText) > Number(currentOrder)) {
 						sbox.innerText--;
 					}
 				}
 			},
-			addBoard: function(record) {
+			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);
+						}else {
+							Ext.Msg.alert('失败', res.message);
+						}
+					}
+				});
+			},
+			addModel: function(record) {
 				var grid = this;
 				grid.getStore().add(record);
+				grid.getPlugin().startEditByPosition({ row: grid.getStore().getCount() - 1, column: 1 });
+				return;
+				Ext.Ajax.request({
+					url:'kanban/save',
+					method:'POST',
+					params:{
+						json:Ext.encode(record)
+					},
+					callback:function(options,success,response){
+						var res = Ext.decode(response.responseText);
+						if(typeof(res.success)!=='undefined'&&res.success==false){
+							Ext.Msg.alert('添加失败',res.message);
+						}else{
+							grid.getStore().add(record);
+							grid.getPlugin().startEditByPosition({ row: grid.getStore().getCount() - 1, column: 1 });
+						}
+					}
+				});
 			},
-			deleteBoard: function(record) {
+			saveModel: function(record) {
 				var grid = this;
-				Ext.Msg.confirm('提示','是否确定删除该看板?',function(btn){
-					if(btn=='yes'){
-						if(record.get('code')) {
-							// Ext.Ajax.request({
-							// 	url:'globalParameters/delete/' + record.get('code'),
-							// 	method:'POST',
-							// 	callback:function(options,success,response){
-							// 		var res = JSON.parse(response.responseText);
-							// 		if(success) {
-							// 			if(grid) {
-							// 				grid.getStore().reload();
-							// 			}
-							// 		}else {
-							// 			Ext.Msg.alert('失败', res.message);
-							// 		}
-							// 	}
-							// });
+				var type = record.get('code') ? 'update' : 'save'
+				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 {
-							grid.getStore().remove(record);
+							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);
@@ -169,5 +259,20 @@ Ext.define('erp.view.desktop.BoardManageRightPanel',{
 				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);
 	}
 });

+ 15 - 13
kanban-console/src/main/webapp/resources/app/view/desktop/BoardManageWindow.js

@@ -25,7 +25,7 @@ Ext.define('erp.view.desktop.BoardManageWindow',{
 			},{
 				xtype: 'manageright',
 				region: 'east',
-				width:250
+				width:350
 			}]
 		}];
 		me.buttons = [{
@@ -55,26 +55,28 @@ Ext.define('erp.view.desktop.BoardManageWindow',{
 				return this.data;
 			}
 		};
-		// 保存数据到后台
-		var tplField = Ext.getCmp('templateCodes');
+		// // 保存数据到后台
+		// var tplField = Ext.getCmp('templateCodes');
+		// var values = formpanel.getForm().getValues();
+		// values.templateCodes = tplField.templateCodes;
+		// values.respoint = values.respoint == '非资源点看板' ? 'all' :values.respoint;
+		// if(!values.templateCodes||values.templateCodes.length<=0){
+		// 	Ext.Msg.alert('提示','请先选择模板!');
+		// 	return;
+		// }
+
 		var values = formpanel.getForm().getValues();
-		values.templateCodes = tplField.templateCodes;
-		values.respoint = values.respoint == '非资源点看板' ? 'all' :values.respoint;
-		if(!values.templateCodes||values.templateCodes.length<=0){
-			Ext.Msg.alert('提示','请先选择模板!');
-			return;
-		}
+		
 		var type;
 		if(values.code){
 			type = 'update';
 		}else{
 			type = 'save';
-			delete values.code;
+			// delete values.code;
 		}
-		values.resourcePointCode = values.resourcePointCode == 'all' ? null : values.resourcePointCode;
 		el.mask('保存中...');
 		Ext.Ajax.request({
-			url:'kanban/'+type,
+			url:'panel/'+type,
 			method:'POST',
 			params:{
 				json:Ext.encode(values)
@@ -86,7 +88,7 @@ Ext.define('erp.view.desktop.BoardManageWindow',{
 					Ext.Msg.alert('保存失败',res.message);
 				}else{
 					Ext.Msg.alert('提示','保存成功!');
-					Ext.getCmp('code').setValue(res.code);
+					// Ext.getCmp('code').setValue(res.code);
 					var desktop = Ext.getCmp('desktop');
 					desktop.shortcutsView.store.reload();
 					if(type=='save'){

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

@@ -7,208 +7,38 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 	layout:'border',
 	id:'template',
 	resData:null,
-	record:null,
-	respoint: null, // 关联资源点
-	respointStore:null,
+	initRecord:null,
 	paramStore:null, // 参数store
-	selectedIndex: 1,
 	initComponent:function(){
 		var me = this;
 		me.paramStore = Ext.create('erp.store.boardparam',{
 			proxy: {
 				type: 'ajax',
-				url: 'globalParameters/get/' + me.record.get('code'),
+				url: 'parameter/get/byPanel/' + me.record.get('code'),
 				reader: {
 					type: 'json',
 					root: 'content'
 				}
 			}
-		}).load();
-		me.init();
-		me.callParent(arguments);
-	},
-	buttonAlign: 'center',
-	buttons:[{
-		text:'确定',
-		formBind:true,
-		handler:function(){
-			var me = Ext.getCmp('template');
-			me.saveBoadModel();
-		}
-	},{
-		text:'取消',
-		handler:function(btn){
-			btn.ownerCt.ownerCt.close()
-		}
-	}],
-	init: function() {
-		var me = this;
-		var record = me.record;
-		var code = record.get('code');
-		var templateCode = record.get('templateCodes');
-		var view = Ext.getCmp('desktopDataView');
-
-		view.getEl().mask('loading...');
-		if(me.record){
-			Ext.Ajax.request({
-				url:'kanbanInstance/open/kanbanCode/'+code,
-				method:'POST',
-				async:false,
-				callback:function(options,sucess,response){
-					view.getEl().unmask();
-					if(response.responseText){
-						var res = Ext.decode(response.responseText);
-						me.resData = res;
-						// me.respoint = record.get('resourcePointCode') || 'all';
-						// me.respointStore = Ext.create('erp.store.resourcepoint',{
-						// 	proxy:{
-						// 		type:'ajax',
-						// 		url:'resourcePoint/get/' + me.respoint,
-						// 		reader: {
-						// 			type: 'json'
-						// 		}
-						// 	},
-						// 	autoLoad: true
-						// }).load(function(records, operation, success) {
-						// 	// 删除第一个非资源点看板
-						// 	me.respointStore.removeAt(0);
-						// 	// 显示资源点名称
-						// 	var boardForm = Ext.getCmp('paramsForm');
-						// 	var form = boardForm.getForm();
-						// 	var respointName = form.findField('respointName');
-						// 	if(records.length > 1) {
-						// 		respointName.setValue('非资源点看板');
-						// 	}else{
-						// 		respointName.setValue(records[0].get('name'));
-						// 	}
-						// });
-						// var globalItems = me.parseParam(res.globalParameters);
-						var globalItems = me.parseParam(me.paramStore.data.items.map(function(item) {
-							return item.data
-						}));
-						var items = me.getConfig(globalItems,templateCode,res);
-						Ext.apply(me,{
-							items:items
-						});
-					}
-				}
-			});			
-		}
-	},
-	parseParam:function(globalParameters){
-		var me = this;
-		var items = new Array();
-		var item;
-		Ext.Array.each(globalParameters,function(param){
-			var inputType = param.inputMode;
-			if(param.type!='SQL'){
-				if('Radio'==inputType){
-					item = me.getRadio(param);
-				}else if('DropDownBox'==inputType){
-					item = me.getComboBox(param);
-				}else if('Manual'==inputType){
-					item = me.getManualField(param);
-				}
-				item.name = param.code;
-				// 全部设为隐藏
-				item.hidden = true;
-				items.push(item);
-			}
 		});
-		return items;
-	},
-	getManualField:function(param){
-		var xtype = 'textfield';
-		if(param.type=='Number'){
-			xtype = 'numberfield';
-		}else if(param.type=='Text'){
-			xtype = 'textfield';
-		}else if(param.type=='Date'){
-			xtype = 'datefield';
-		}
-		var item = {
-			xtype:xtype,
-			fieldLabel:param.name
-		}
-		return item;		
-	},
-	getComboBox:function(param){
-		var storeData = new Array();
-		var value = null;
-		Ext.Array.each(param.optionalValues,function(option,index){
-			if((index+1)==param.defaultOptionalValueIndex){
-				check = true;
-				value = option;
-			}
-			storeData.push({
-				display:option,
-				value:option
-			});
-		});
-		
-		var item = {
-			xtype:'combobox',
-			value:value,
-			fieldLabel:param.name,
-			displayField: 'display',
-    		valueField: 'value',
-    		editable:false,
-    		store:Ext.create('Ext.data.Store', {
-			    fields: ['display', 'value'],
-			    data : storeData
-			})
-		}
-		return item;
-	},
-	getRadio:function(param){
-		var item = new Object();
-		var name = param.name;
-		var code = param.code;
-		var check = false;
-		item.xtype = 'radiogroup';
-		item.fieldLabel = param.name;
-		item.items = [];
-		Ext.Array.each(param.optionalValues,function(option,index){
-			check = false;
-			if(param.value){
-				if(param.value==option){
-					check = true;
-				}
-			}else{
-				if((index+1)==param.defaultOptionalValueIndex){
-					check = true;
-				}else{
-					check = false;
-				}				
-			}
-			item.items.push({
-				boxLabel:option,
-				name: code,
-				inputValue:option,
-				checked:check
-			});
-		});
-		return item;
-	},
-	getConfig:function(items,templateCode,res){
-		var me = this;
-		var config = [{
+		me.items = [{
 			xtype:'form',
 			id:'paramsForm',
 			region: 'center',
 			layout:'column',
+			autoScroll: true,
 			defaults:{
 				columnWidth:1,
 				margin:'5 5 5 5'
 			},
 			items:[{
 				xtype:'fieldset',
-				title:'参数信息',
-				items:items,
-				hidden:items.length>0?false:true
+				title:'参数设置',
+				// items:items,
+				// hidden:items.length>0?false:true
 			},{
 				xtype:'fieldset',
-				title:'运行置',
+				title:'运行设置',
 				layout:'column',
 				defaults:{
 					columnWidth:0.5,
@@ -219,7 +49,7 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 					id:'refreshFrequency',
 					name:'refreshFrequency',
 					fieldLabel:'刷新频率(秒/次)',
-					value:res.refreshFrequency?res.refreshFrequency:'',
+					value:'5',
 					minValue:1,
 					allowBlank:false
 				},{
@@ -228,55 +58,81 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 					name:'switchFrequency',
 					fieldLabel:'切换频率(秒/次)',
 					minValue:3,
-					value:res.switchFrequency?res.switchFrequency:'',
-					allowBlank:templateCode.length>0?false:true,//如果有多个模板,则切换频率是必填项
+					value:'30',
+					// allowBlank:templateCode.length>0?false:true,//如果有多个模板,则切换频率是必填项
 					minValue:1
 				}]
-			}]
+			}],
+			/**
+			 * 添加面板参数下拉组件
+			 */
+			addParamCombo: function(items) {
+				var form = this;
+				var paramFieldSet = form.items.items[0];
+				paramFieldSet.removeAll();
+				var comboxs = [];
+				items.map(function(item) {
+					var combox = new Ext.form.field.ComboBox({
+						fieldLabel: item.name, 
+						store: Ext.create('Ext.data.Store', {
+							fields: ['value', 'name'],
+							data : item.optionalValues.map(function(v) {
+								return {
+									value: v,
+									name: v
+								}
+							})
+						}),
+						queryMode: 'local',
+						displayField: 'name',
+						valueField: 'value',
+					});  
+					comboxs.push(combox);
+				});
+				paramFieldSet.add(comboxs);
+				form.doLayout();
+			}
 		},{
 			xtype: 'grid',
 			id:'modelGrid',
+			selectedIndex: 1,
 			region: 'east',
 			width: 300,
 		    hideHeaders:true,
-			store: Ext.create('erp.store.boardmodel',{
-				proxy:{
-					type:'ajax',
-					url:'template/get' + me.record.get('code'),
-					reader: {
-						type: 'json',
-						root: 'content'
-					}
-				}
-			}).load(),
+			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: '选择模板', dataIndex: 'name', width: 150, flex: 1 },
 				{ 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;
+					}
+				},
 				{
 					text: '备注', dataIndex: 'description', flex: 1, renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
-						metadata.tdAttr = 'data-qtip="' + v + '"';
+						metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
 						return v;
 					}
 				}
 			],
 			listeners: {
-				afterrender:function(grid){
-					grid.store.load(function() {
-						me.selectModel();
-					});
-				},
 				select:function( e, record, index, eOpts ){
+					var grid = Ext.getCmp('modelGrid');
 					var ctr = this.body.dom.getElementsByTagName('tr')[index];
 					var s = ctr.getElementsByTagName('td')[0].children[0].children[0];
-					var order = me.selectedIndex++;
+					var order = grid.selectedIndex++;
 					grid.setSelectedIndex(s, order, 'add');
 				},
 				deselect:function( e, record, index, eOpts ){
+					var grid = Ext.getCmp('modelGrid');
 					var ctr = this.body.dom.getElementsByTagName('tr')[index];
 					var s = ctr.getElementsByTagName('td')[0].children[0].children[0];
-					me.selectedIndex--;
+					grid.selectedIndex--;
 					var order = '';
 					var currentOrder = grid.setSelectedIndex(s, order, 'remove');
 					
@@ -294,19 +150,146 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 			resetSelectedIndex: function(currentOrder) {
 				var selectedRecords = this.getSelectionModel().getSelection();
 				for(var i = 0; i < selectedRecords.length; i++) {
-					var tr = this.body.dom.getElementsByTagName('tr')[selectedRecords[i].index]; // 选中行tr
+					var tr = this.body.dom.getElementsByTagName('tr')[this.getStore().indexOf(selectedRecords[i])]; // 选中行tr
 					var sbox = tr.getElementsByTagName('td')[0].children[0].children[0]; // 选中行勾选框
 					if(Number(sbox.innerText) > Number(currentOrder)) {
 						sbox.innerText--;
 					}
 				}
-			}
+			},
+			loadGridData: function() {
+				var grid = this;
+				Ext.Ajax.request({
+					url:'kanban/get/byPanel/' + me.record.get('code'),
+					method:'POST',
+					callback:function(options,success,response){
+						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);
+						}else {
+							Ext.Msg.alert('失败', res.message);
+						}
+					}
+				});
+			},
 		}];
-		return config;
+		me.callParent(arguments);
+	},
+	buttonAlign: 'center',
+	buttons:[{
+		text:'确定',
+		formBind:true,
+		handler:function(){
+			var me = Ext.getCmp('template');
+			me.saveBoadModel();
+		}
+	},{
+		text:'取消',
+		handler:function(btn){
+			btn.ownerCt.ownerCt.close()
+		}
+	}],
+	listeners: {
+		afterLayout: function(me) {
+			me.load();
+		}
+	},
+	init: function() {
+		var me = this;
+
+		// 添加参数下拉框
+		me.getEl().mask('loading...');
+		Ext.Ajax.request({
+			url:'parameter/get/byPanel/'+me.record.get('code'),
+			method:'POST',
+			async:false,
+			callback:function(options,success,response){
+				me.getEl().unmask();
+				var res = Ext.decode(response.responseText);
+				if(success) {
+					var paramForm = Ext.getCmp('paramsForm');
+					paramForm.addParamCombo(res);
+				}
+			}
+		});
+
+		// 读取看板grid数据
+		var modelGrid = Ext.getCmp('modelGrid');
+		modelGrid.loadGridData();
+	},
+	load: function() {
+		var me = this;
+		me.init();
+		
+		var record = me.record;
+		var code = record.get('code');
+		// var templateCode = record.get('templateCodes');
+		var view = Ext.getCmp('desktopDataView');
+
+		view.getEl().mask('loading...');
+		if(me.record){
+			Ext.Ajax.request({
+				url:'panelInstance/get/byPanel/'+code,
+				method:'POST',
+				async:false,
+				callback:function(options,sucess,response){
+					view.getEl().unmask();
+					if(response.responseText){
+						var res = Ext.decode(response.responseText);
+						me.resData = res;
+					}
+				}
+			});			
+		}
+	},
+	parseParam:function(params){
+		var me = this;
+		var items = new Array();
+		var item;
+		Ext.Array.each(params,function(param){
+			var inputType = param.inputMode;
+			// if(param.type!='SQL'){
+			item = me.getComboBox(param);
+			item.name = param.code;
+			items.push(item);
+			// }
+		});
+		return items;
+	},
+	getComboBox:function(param){
+		var storeData = new Array();
+		var value = null;
+		Ext.Array.each(param.optionalValues,function(option,index){
+			if((index+1)==param.defaultOptionalValueIndex){
+				check = true;
+				value = option;
+			}
+			storeData.push({
+				display:option,
+				value:option
+			});
+		});
+		
+		var item = {
+			xtype:'combobox',
+			value:value,
+			fieldLabel:param.name,
+			displayField: 'display',
+    		valueField: 'value',
+    		editable:false,
+    		store:Ext.create('Ext.data.Store', {
+			    fields: ['display', 'value'],
+			    data : storeData
+			})
+		}
+		return item;
 	},
 	selectModel: function() {
 		var me = this;
-		var codes = me.record.get('templateCodes');
+		var codes = me.record.get('templateCodes') || [];
 		var modelGrid = Ext.getCmp('modelGrid');
 		var modelStore = modelGrid.getStore();
 		var records = [];
@@ -335,11 +318,11 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 	saveBoadModel: function() {
 		var me = this;
 		if(me.getSelectedModels().length == 0) {
-			Ext.Msg.alert('警告','请至少选中一个板!');
+			Ext.Msg.alert('警告','请至少选中一个板!');
 			return;
 		}
 		var params = me.getBoardConfig();
-		// 先更新看板勾选模板项
+		// 先更新面板勾选看板项
 		Ext.Ajax.request({
 			url:'kanban/update',
 			method:'POST',

+ 1 - 1
kanban-console/src/main/webapp/resources/app/view/desktop/Desktop.js

@@ -200,7 +200,7 @@ Ext.define('erp.view.desktop.Desktop', {
             return this.data[field];
         }
 		Ext.create('erp.view.desktop.BoardParamWindow',{
-			title: subStrLength(record.get('name'), 10) + '<span class="separator">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>运行配置',
+			title: subStrLength(record.get('name'), 10) + '<span>-</span>启动配置',
 			record: copyRecord
 		}).show();    	
     },

+ 1 - 31
kanban-console/src/main/webapp/resources/app/view/template/templateeditpanel.js

@@ -189,37 +189,7 @@ Ext.define('erp.view.template.templateeditpanel',{
 					            });
 		        			}						
 						}
-					},{
-			        	xtype:'combo',
-			        	columnWidth:0.75,
-			        	fieldLabel:'数据源',
-			        	name:'dataSourceCode',
-			        	id:'dataSourceCode',
-			        	//value:'UAS',
-			        	editable:false,
-			        	store:Ext.create('Ext.data.Store',{
-			        		fields:['username','code','name'],
-			        		proxy:{
-			        			type:'ajax',
-			        			url:'datasource/get',
-			        			reader: {
-					            	type: 'json',
-					            	root: 'content'
-						        }
-			        		},
-			        		autoLoad: true,
-			        		listeners:{
-			        			load:function(){
-			        				var combo = Ext.getCmp('dataSourceCode');
-			        				combo.reset();
-			        				combo.setValue(record.get('dataSourceCode'));
-			        			}
-			        		}
-			        	}),
-					    queryMode: 'local',
-					    displayField: 'name',
-					    valueField: 'code'
-			        }],
+					}],
 					buttons:[{
 						text:'确定',
 						handler:function(btn){

+ 26 - 4
kanban-console/src/main/webapp/resources/app/view/template/templatetree.js

@@ -7,15 +7,37 @@ Ext.define('erp.view.template.templatetree',{
 	hideBorders: true, 
 	title: '面板参数',
 	collapsible:true,
+	columnLines: true,
 	plugins:[Ext.create('erp.view.plugin.tplgridcontextmenu')],
 	store: Ext.create('Ext.data.JsonStore',{
-		fields: ['code', 'name'],
-		data: [{code: 1243, name: 33}]
+		fields: ['code', 'name', 'optionalValues'],
+		data: []
 	}),
-	hideHeaders: true,
 	columns:[{
 		header:'名称',
 		dataIndex:'name',
 		flex:1
-	}]
+	}, {
+		header: '值',
+		dataIndex: 'optionalValues',
+		flex: 1
+	}],
+	loadGridData: function() {
+		var grid = this;
+		var panelCode = Ext.getCmp('templatebuilderpanel').panelCode;
+		Ext.Ajax.request({
+			url:'parameter/get/byPanel/' + panelCode,
+			method:'POST',
+			callback:function(options,success,response){
+				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);
+				}
+			}
+		});
+	}
 });