| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445 |
- 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;
- 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,
- 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,
- labelWidth: 80
- },
- 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,
- 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);
- // 参数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);
- }
- });
- },
- });
|