Sfoglia il codice sorgente

启动界面刷新模板实现

zhuth 8 anni fa
parent
commit
7a2ead0773

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

@@ -16,6 +16,5 @@ Ext.define('erp.store.resourcepoint',{
 				templateCodes: null
 			});
     	}
-	},
-	autoLoad:true
+	}
 });

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

@@ -53,7 +53,17 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
 				xtype: 'combobox',
 				fieldLabel: '资源点',
 				id: 'respoint',
-				store: Ext.data.StoreManager.lookup('resourcepoint'),
+				// store: Ext.data.StoreManager.lookup('resourcepoint'),
+				store: Ext.create('erp.store.resourcepoint',{
+					proxy:{
+						type:'ajax',
+						url:'resourcePoint/get/all',
+						reader: {
+							type: 'json'
+						}
+					},
+					autoLoad: true
+				}),
 				name: 'resourcePointCode',
 				value: '非资源点看板',
 				displayField: 'name',

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

@@ -8,14 +8,20 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 	id:'template',
 	resData:null,
 	record:null,
+	respoint: null, // 关联资源点
 	respointStore:null,
 	initComponent:function(){
+		var me = this;
+		me.refreshWindow(true);
+		me.callParent(arguments);
+	},
+	refreshWindow: function(firstBuild) {
 		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({
@@ -27,30 +33,44 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 					if(response.responseText){
 						var res = Ext.decode(response.responseText);
 						me.resData = res;
-						Ext.create('erp.store.resourcepoint',{
+						me.respoint = record.get('resourcePointCode') || 'all';
+						me.respointStore = Ext.create('erp.store.resourcepoint',{
 							proxy:{
 								type:'ajax',
-								url:'resourcePoint/get/' + '52AF232A414',
+								url:'resourcePoint/get/' + me.respoint,
 								reader: {
 									type: 'json'
 								}
 							},
-							autoLoad: true,
-							listeners: {
-								load: function(store, operation, eOpts) {
-								}
+							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.parseGlobalParam(res.globalParameters);
 						var items = me.getConfig(globalItems,templateCode,res);
-						Ext.apply(me,{
-							items:items
-						});						
+						
+						if(firstBuild) {
+							Ext.apply(me,{
+								items:items
+							});
+						}else {
+							me.removeAll();
+							me.add(items);
+						}
 					}
 				}
 			});			
 		}
-		me.callParent(arguments); 
 	},
 	parseGlobalParam:function(globalParameters){
 		var me = this;
@@ -146,6 +166,7 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 		return item;
 	},
 	getConfig:function(items,templateCode,res){
+		var me = this;
 		var config = [{
 			xtype:'form',
 			id:'paramsForm',
@@ -159,8 +180,8 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 			items:[{
 				xtype: 'displayfield',
 				fieldLabel: '关联资源点',
-				value: '',
-				hidden: res.respoint == 'all' ? true : false
+				name: 'respointName',
+				value: 'unknown'
 			},{
 				xtype:'fieldset',
 				title:'基础信息',
@@ -214,8 +235,8 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 			width: 300,
 		    title: '选择模板',
 		    hideHeaders:true,
-		    store: Ext.data.StoreManager.lookup('boardmodel'),
-		    selModel: Ext.create('Ext.selection.CheckboxModel'),
+			store: Ext.data.StoreManager.lookup('boardmodel'),
+			selModel: Ext.create('Ext.selection.CheckboxModel'),
 		    columnLines:true,
 		    columns: [
 		        {text: '选择模板', dataIndex:'name', width: 150,flex:1},
@@ -225,27 +246,99 @@ Ext.define('erp.view.desktop.BoardParamWindow',{
 			tbar:{
 				items: [{
 					xtype: 'button',
-					text: '确定',
+					text: '保存',
 					handler: function() {
-						// 生成实例
-						// 刷新面板
+						if(me.getSelectedModels().length == 0) {
+							Ext.Msg.alert('警告','请至少选中一个模板!');
+							return;
+						}
+						var params = me.getBoardConfig();
+						Ext.Ajax.request({
+							url:'kanban/update',
+							method:'POST',
+							params:{
+								json:Ext.encode(params)
+							},
+							callback:function(options,success,response){
+								me.refreshWindow(false);
+							}
+						});
 					}
 				}]
 			},
 			listeners: {
 				afterrender:function(grid){
 					grid.store.load(function() {
-						// 根据资源点过滤展示模板
-						grid.store.filterBy(function(record, id) {
-							return true
-						});
-						// 选中默认配置模板
+						me.modelStoreFilter();
+						me.selectModel();
 					});
 				}
 			}
 		}];
 		return config;
 	},
+	modelStoreFilter: function() {
+		var me = this;
+		var models = []; // 所有产线的模板code数组
+		var respointData = me.respointStore.data.items;
+		// 如果存在多个产线说明该看板是非资源点看板,不进行过滤
+		if(respointData.length > 1) {
+			me.selectModel();
+			return;
+		}else {
+			// 这里虽然用的是map,其实数组中应该只有一个对象
+			respointData.map(function(respoint) {
+				respoint.get('templateCodes').map(function(modelCode) {
+					models.push(modelCode);
+				});
+			});
+			var modelGrid = Ext.getCmp('paramsGrid');
+			var modelStore = modelGrid.getStore();
+			modelStore.filterBy(function(record) {
+				if(models.indexOf(record.get('code')) != -1) {
+					return true;
+				}else{
+					return false;
+				}
+			});
+		}
+	},
+	selectModel: function() {
+		var me = this;
+		var codes = me.record.get('templateCodes');
+		var modelGrid = Ext.getCmp('paramsGrid');
+		var modelStore = modelGrid.getStore();
+		var records = [];
+		codes.map(function(code) {
+			var record = modelStore.findRecord('code',code);
+			if(record) {
+				records.push(record);
+			}
+		});
+		modelGrid.getSelectionModel().select(records || []);
+	},
+	getBoardConfig: function() {
+		var me = this;
+		var templateCodes = me.getSelectedModels().map(function(model) {
+			return model.get('code');
+		});
+		var resData = me.record;
+		var config = resData.data;
+		resData.set('templateCodes', templateCodes);
+		return {
+			code: config.code,
+			name: config.name,
+			iconCls: config.iconCls,
+			display: config.display,
+			templateCodes: config.templateCodes,
+			resourcePointCode: config.resourcePointCode
+		}
+	},
+	getSelectedModels: function() {
+		var modelGrid = Ext.getCmp('paramsGrid');
+		var selectedModels = modelGrid.getSelectionModel().getSelection();
+		return selectedModels || [];
+	},
 	saveBoardSetting:function(){
     	var me = this;
     	var check = me.checkFrequency();

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

@@ -194,10 +194,18 @@ Ext.define('erp.view.desktop.Desktop', {
     		winType = 'BoardManage'
     	}else {
     		winType = 'BoardParam';
-    	}
+        }
+        // 传入复制对象以去除组件之间相互干扰
+        var copyRecord = Object.assign({}, record);
+        copyRecord.set = function(field, value) {
+            this.data[field] = value;
+        }
+        copyRecord.get = function(field, value) {
+            return this.data[field];
+        }
 		Ext.create('erp.view.desktop.' + winType + 'Window',{
 			title:record.get('name'),
-			record:record
+			record: copyRecord
 		}).show();    	
     },