|
|
@@ -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',
|