|
|
@@ -4,16 +4,44 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
|
|
|
id:'managemain',
|
|
|
border: 0,
|
|
|
hideBorders: true,
|
|
|
- layout: 'fit',
|
|
|
+ layout: 'border',
|
|
|
+ style: {
|
|
|
+ 'border-left': '1px solid silver'
|
|
|
+ },
|
|
|
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取数" }
|
|
|
+ ]
|
|
|
+ });
|
|
|
+ var dataTypeCombo = new Ext.form.ComboBox({
|
|
|
+ store: dataTypeStore,
|
|
|
+ valueField: 'type',
|
|
|
+ displayField: 'name',
|
|
|
+ mode: 'local',
|
|
|
+ forceSelection: true,
|
|
|
+ editable: false,
|
|
|
+ triggerAction: 'all',
|
|
|
+ selectOnFocus: true
|
|
|
+ });
|
|
|
me.items = [{
|
|
|
xtype: 'form',
|
|
|
id:'boardSetForm',
|
|
|
+ region: 'north',
|
|
|
+ bodyStyle: {
|
|
|
+ border: 'none'
|
|
|
+ },
|
|
|
+ style: {
|
|
|
+ border: '1px solid silver'
|
|
|
+ },
|
|
|
bodyPadding: 10,
|
|
|
defaults: {
|
|
|
- width: 240,
|
|
|
+ width: 300,
|
|
|
labelWidth: 80
|
|
|
},
|
|
|
items: [{
|
|
|
@@ -48,145 +76,163 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
|
|
|
fieldLabel: '模板字段',
|
|
|
name: 'templateCodes',
|
|
|
id:'templateCodes',
|
|
|
- hidden:true
|
|
|
- },{
|
|
|
- xtype: 'combobox',
|
|
|
- fieldLabel: '资源点',
|
|
|
- id: 'respoint',
|
|
|
- // store: Ext.data.StoreManager.lookup('resourcepoint'),
|
|
|
- store: Ext.create('erp.store.resourcepoint',{
|
|
|
- proxy:{
|
|
|
- type:'ajax',
|
|
|
- url:'resourcePoint/get/all',
|
|
|
- reader: {
|
|
|
- type: 'json'
|
|
|
+ // hidden:true
|
|
|
+ }]
|
|
|
+ }, {
|
|
|
+ xtype: 'grid',
|
|
|
+ region: 'center',
|
|
|
+ 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: 2, editor: 'textfield' },
|
|
|
+ { 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);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }, '-', {
|
|
|
+ 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() {
|
|
|
+ var grid =this.up('grid');
|
|
|
+ var record = {
|
|
|
+ name: '新参数',
|
|
|
+ type: 'String',
|
|
|
+ inputMode: 'Radio',
|
|
|
+ optionalValues: ['']
|
|
|
+ };
|
|
|
+ grid.addParam(record);
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ plugins: [
|
|
|
+ Ext.create('Ext.grid.plugin.CellEditing', {
|
|
|
+ clicksToEdit: 2
|
|
|
+ })
|
|
|
+ ],
|
|
|
+ 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 = 'update';
|
|
|
+ }else {
|
|
|
+ type = 'save';
|
|
|
+ }
|
|
|
+ record.inputMode = 'DropDownBox';
|
|
|
+ Ext.Ajax.request({
|
|
|
+ url:'globalParameters/' + type,
|
|
|
+ method:'POST',
|
|
|
+ params:{
|
|
|
+ json:Ext.encode(record)
|
|
|
},
|
|
|
- autoLoad: true
|
|
|
- }),
|
|
|
- name: 'resourcePointCode',
|
|
|
- value: '非资源点看板',
|
|
|
- displayField: 'name',
|
|
|
- valueField: 'code',
|
|
|
- editable: false,
|
|
|
- listeners: {
|
|
|
- change: function(th, newValue, oldValue, eOpts) {
|
|
|
- var formpanel = me.items.items[0];
|
|
|
- var form = formpanel.getForm();
|
|
|
- form.findField('templateCodes').setValue('');
|
|
|
- me.selectTemplateCodes([]);
|
|
|
- me.switchResourcePoint(th, newValue, oldValue, eOpts);
|
|
|
+ callback:function(options,success,response){
|
|
|
+ var res = JSON.parse(response.responseText);
|
|
|
+ if(success) {
|
|
|
+ if(grid) {
|
|
|
+ grid.getStore().reload();
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ Ext.Msg.alert('失败', res.message);
|
|
|
+ }
|
|
|
}
|
|
|
+ });
|
|
|
+ },
|
|
|
+ deleteParam: function(record) {
|
|
|
+ var grid = this;
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }else {
|
|
|
+ grid.getStore().remove(record);
|
|
|
}
|
|
|
- }]
|
|
|
- }];
|
|
|
- me.tbar = [{
|
|
|
- xtype: 'button',
|
|
|
- text: '保存',
|
|
|
- handler: function() {
|
|
|
- me.save(me.items.items[0], me)
|
|
|
}
|
|
|
- }],
|
|
|
+ }];
|
|
|
this.callParent(arguments);
|
|
|
},
|
|
|
load: function(record, item) {
|
|
|
var me = this;
|
|
|
- var formpanel = this.items.items[0];
|
|
|
+ var formpanel = me.down('form');
|
|
|
var form = formpanel.getForm();
|
|
|
+ me.reset();
|
|
|
// from添加数据
|
|
|
- form.reset();
|
|
|
- var oc = record.get('resourcePointCode');
|
|
|
- record.set('resourcePointCode', oc ? oc : 'all');
|
|
|
form.loadRecord(record);
|
|
|
- // grid添加数据
|
|
|
- var gridpanel = formpanel.down('grid');
|
|
|
- var modelstore = Ext.data.StoreManager.lookup('boardmodel');
|
|
|
- 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选中状态
|
|
|
- me.selectTemplateCodes(data);
|
|
|
+ // 参数grid添加数据
|
|
|
+ var paramgrid = Ext.getCmp('boardParamsGrid');
|
|
|
+
|
|
|
+ // 看板grid添加数据
|
|
|
+ var boardgrid = Ext.getCmp('tplGrid');
|
|
|
|
|
|
this.initRecord = record;
|
|
|
this.currentItem = item;
|
|
|
},
|
|
|
- selectTemplateCodes:function(data){
|
|
|
- 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);
|
|
|
- },
|
|
|
- save: function(formpanel, panel) {
|
|
|
+ reset: function() {
|
|
|
var me = this;
|
|
|
- var el = me.getEl();
|
|
|
- if(!panel.initRecord) {
|
|
|
- Ext.Msg.confirm('提示', '请先选择左侧看板')
|
|
|
- return;
|
|
|
- }
|
|
|
- var newRecord = {
|
|
|
- data: formpanel.getForm().getValues(),
|
|
|
- getData: function() {
|
|
|
- return this.data;
|
|
|
- }
|
|
|
- };
|
|
|
- // 保存数据到后台
|
|
|
- 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 type;
|
|
|
- if(values.code){
|
|
|
- type = 'update';
|
|
|
- }else{
|
|
|
- type = 'save';
|
|
|
- delete values.code;
|
|
|
- }
|
|
|
- values.resourcePointCode = values.resourcePointCode == 'all' ? null : values.resourcePointCode;
|
|
|
- el.mask('保存中...');
|
|
|
- Ext.Ajax.request({
|
|
|
- url:'kanban/'+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('提示','保存成功!');
|
|
|
- Ext.getCmp('code').setValue(res.code);
|
|
|
- var desktop = Ext.getCmp('desktop');
|
|
|
- desktop.shortcutsView.store.reload();
|
|
|
- if(type=='save'){
|
|
|
- newRecord.data.code = res.code;
|
|
|
- }
|
|
|
- panel.initRecord = newRecord;
|
|
|
- // 更新左侧item
|
|
|
- var leftpanel = Ext.getCmp('manageleft');
|
|
|
- leftpanel.updateItem(newRecord);
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
+ 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', {
|
|
|
@@ -235,31 +281,13 @@ Ext.define('erp.view.desktop.BoardManageMainPanel', {
|
|
|
form.findField('iconCls').setValue(icon);
|
|
|
iconbox.close();
|
|
|
},
|
|
|
- /**
|
|
|
- * 切换资源点
|
|
|
- */
|
|
|
- switchResourcePoint: function(th, newValue, oldValue, eOpts) {
|
|
|
- var store = th.getStore();
|
|
|
- var record = store.findRecord('code',newValue);
|
|
|
- var templateCodes = record ? record.get('templateCodes') : [];
|
|
|
- this.modelFilter(templateCodes);
|
|
|
- },
|
|
|
- /**
|
|
|
- * 过滤模板列表
|
|
|
- */
|
|
|
- modelFilter: function(data) {
|
|
|
- var modelGrid = Ext.getCmp('tplGrid');
|
|
|
- var store = modelGrid.getStore();
|
|
|
- store.clearFilter();
|
|
|
- if(data instanceof Array) {
|
|
|
- if(!data.length){
|
|
|
- return;
|
|
|
+ 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);
|
|
|
}
|
|
|
- store.filterBy(function(record, id) {
|
|
|
- if(data.indexOf(record.get('code')) != -1) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
+ });
|
|
|
+ },
|
|
|
});
|